diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 7ee5c182db..95da3761ff 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -11,6 +11,8 @@ "@abp/core": "~10.4.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", "codemirror": "^6.0.2" }, "devDependencies": { diff --git a/npm/packs/codemirror/scripts/build.js b/npm/packs/codemirror/scripts/build.js index 00eba08f1d..25208ebae1 100644 --- a/npm/packs/codemirror/scripts/build.js +++ b/npm/packs/codemirror/scripts/build.js @@ -11,7 +11,7 @@ async function run() { target: ['es2019'], sourcemap: false, minify: false, - legalComments: 'none' + legalComments: 'eof' }); } diff --git a/npm/packs/codemirror/scripts/entry.js b/npm/packs/codemirror/scripts/entry.js index ae157f048a..1107315124 100644 --- a/npm/packs/codemirror/scripts/entry.js +++ b/npm/packs/codemirror/scripts/entry.js @@ -1,6 +1,6 @@ import { EditorState } from '@codemirror/state'; import { EditorView } from '@codemirror/view'; -import { basicSetup } from 'codemirror'; +import { basicSetup, minimalSetup } from 'codemirror'; import { css } from '@codemirror/lang-css'; import { javascript } from '@codemirror/lang-javascript'; @@ -58,9 +58,14 @@ function createWrapper(textarea) { return wrapper; } +function getEditorSetup(options) { + // CodeMirror 5 default: line numbers off unless lineNumbers === true + return options.lineNumbers === true ? basicSetup : minimalSetup; +} + function createState(textarea, options) { const extensions = [ - basicSetup, + getEditorSetup(options), EditorView.updateListener.of(update => { if (update.docChanged) { syncTextarea(textarea, update.view); diff --git a/npm/packs/codemirror/src/codemirror.css b/npm/packs/codemirror/src/codemirror.css index 8e21dce055..986201e573 100644 --- a/npm/packs/codemirror/src/codemirror.css +++ b/npm/packs/codemirror/src/codemirror.css @@ -23,4 +23,9 @@ .abp-codemirror .cm-focused { outline: none; +} + +.abp-codemirror:focus-within { + border-color: var(--bs-focus-ring-color, #86b7fe); + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width, 0.25rem) var(--bs-focus-ring-color, rgba(13, 110, 253, 0.25)); } \ No newline at end of file