diff --git a/package.json b/package.json
index 2056e526cf6..745a66ab3ca 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
"@bugsplat/angular-tree-component": "~18.0.0",
"@codemirror/autocomplete": "~6.18.1",
+ "@codemirror/commands": "~6.7.1",
"@codemirror/lang-json": "~6.0.1",
"@codemirror/lang-yaml": "~6.1.1",
"@codemirror/language": "~6.10.1",
@@ -114,6 +115,7 @@
"@types/randomcolor": "~0.5.9",
"@types/svg-sprite": "~0.0.39",
"@types/vinyl": "~2.0.12",
+ "@uiw/codemirror-theme-material": "~4.23.6",
"@vendure/ngx-translate-extract": "~9.2.1",
"@xterm/addon-fit": "~0.10.0",
"@xterm/xterm": "~5.5.0",
diff --git a/src/app/modules/forms/ix-forms/components/ix-code-editor/ix-code-editor.component.ts b/src/app/modules/forms/ix-forms/components/ix-code-editor/ix-code-editor.component.ts
index ad43bdb2bc9..d3dd48996ec 100644
--- a/src/app/modules/forms/ix-forms/components/ix-code-editor/ix-code-editor.component.ts
+++ b/src/app/modules/forms/ix-forms/components/ix-code-editor/ix-code-editor.component.ts
@@ -12,10 +12,13 @@ import {
} from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { MatHint } from '@angular/material/form-field';
+import { defaultKeymap, history, historyKeymap } from '@codemirror/commands';
import { Compartment } from '@codemirror/state';
-import { oneDark } from '@codemirror/theme-one-dark';
-import { EditorView, EditorViewConfig, placeholder } from '@codemirror/view';
+import {
+ EditorView, EditorViewConfig, keymap, lineNumbers, placeholder,
+} from '@codemirror/view';
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
+import { material } from '@uiw/codemirror-theme-material';
import { basicSetup } from 'codemirror';
import {
BehaviorSubject, Observable, combineLatest, filter, take, tap,
@@ -142,7 +145,10 @@ export class IxCodeEditorComponent implements OnChanges, OnInit, AfterViewInit,
basicSetup,
updateListener,
languageFunctionsMap[this.language()](),
- oneDark,
+ lineNumbers(),
+ history(),
+ keymap.of([...defaultKeymap as unknown[], ...historyKeymap]),
+ material,
this.editableCompartment.of(EditorView.editable.of(true)),
placeholder(this.placeholder()),
],
diff --git a/src/assets/i18n/pl.json b/src/assets/i18n/pl.json
index cd4a1a3a4ac..96f9680246c 100644
--- a/src/assets/i18n/pl.json
+++ b/src/assets/i18n/pl.json
@@ -416,7 +416,6 @@
"Apply the same quota warning alert settings as the parent dataset.": "",
"Apply updates and restart system after downloading.": "",
"Applying important system or security updates.": "",
- "Apps": "Aplikacje",
"Apps Read": "",
"Apps Service Not Configured": "",
"Apps Service Pending": "",
@@ -5220,6 +5219,7 @@
"All Disks": "Wszystkie Dyski",
"Allocate at least 256 MiB.": "Przydziel co najmniej 256 MB.",
"Allow": "Zezwól",
+ "Apps": "Aplikacje",
"Auth Token from alternate authentication - optional (rclone documentation).": "Auth Token from alternate authentication - optional (rclone documentation).",
"AuthVersion - optional - set to (1,2,3) if your auth URL has no version (rclone documentation).": "AuthVersion - optional - set to (1,2,3) if your auth URL has no version (rclone documentation).",
"Authentication URL for the server. This is the OS_AUTH_URL from an OpenStack credentials file.": "Authentication URL for the server. This is the OS_AUTH_URL from an OpenStack credentials file.",
@@ -5281,4 +5281,4 @@
"Wipe": "Wyczyść",
"Wipe this disk?": "Czy wyczyścić ten dysk?",
"[Use fewer transactions in exchange for more RAM.](https://rclone.org/docs/#fast-list) This can also speed up or slow down the transfer.": "[Use fewer transactions in exchange for more RAM.](https://rclone.org/docs/\\#fast-list) This can also speed up or slow down the transfer."
-}
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 7c1fdac63dc..89965eb6ca1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1702,6 +1702,16 @@
"@codemirror/view" "^6.27.0"
"@lezer/common" "^1.1.0"
+"@codemirror/commands@~6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.7.1.tgz#04561e95bc0779eaa49efd63e916c4efb3bbf6d6"
+ integrity sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.4.0"
+ "@codemirror/view" "^6.27.0"
+ "@lezer/common" "^1.1.0"
+
"@codemirror/lang-json@~6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz#0a0be701a5619c4b0f8991f9b5e95fe33f462330"
@@ -5069,6 +5079,22 @@
"@typescript-eslint/types" "8.9.0"
eslint-visitor-keys "^3.4.3"
+"@uiw/codemirror-theme-material@~4.23.6":
+ version "4.23.6"
+ resolved "https://registry.yarnpkg.com/@uiw/codemirror-theme-material/-/codemirror-theme-material-4.23.6.tgz#959de0b8fe574cdbbe04ce08b6623637ad9db74d"
+ integrity sha512-QmFXWseYRPXPJZXG7bNxCIfGhIUQr7OmaBC41uBKttFMNWo09R+xjo7vtkdNeJwGBXySC7ZC4k0FS13jjrPTZw==
+ dependencies:
+ "@uiw/codemirror-themes" "4.23.6"
+
+"@uiw/codemirror-themes@4.23.6":
+ version "4.23.6"
+ resolved "https://registry.yarnpkg.com/@uiw/codemirror-themes/-/codemirror-themes-4.23.6.tgz#47a101733a9c4aa382696178bc4b7bc0ecf0e5fa"
+ integrity sha512-0dpuLQW+V6zrKvfvor/eo71V3tpr2L2Hsu8QZAdtSzksjWABxTOzH3ShaBRxCEsrz6sU9sa9o7ShwBMMDz59bQ==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.0.0"
+
"@vendure/ngx-translate-extract@~9.2.1":
version "9.2.1"
resolved "https://registry.yarnpkg.com/@vendure/ngx-translate-extract/-/ngx-translate-extract-9.2.1.tgz#fa0cc186fc30c5bfcbdd2a023a71014bf8ed79e7"
@@ -13195,16 +13221,7 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-"string-width-cjs@npm:string-width@^4.2.0":
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -13334,14 +13351,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-ansi@6, strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6, strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -14437,7 +14447,7 @@ winston@^3.0.0, winston@^3.11.0:
triple-beam "^1.3.0"
winston-transport "^4.7.0"
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -14455,15 +14465,6 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"