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"