Browse Source

codemirror: add view/state deps and setup toggle

Add @codemirror/state and @codemirror/view dependencies, update build config, introduce a minimal/basic setup toggle, and improve focus styling.

- package.json: include @codemirror/state and @codemirror/view required by new imports.
- scripts/build.js: change esbuild legalComments from 'none' to 'eof' to keep trailing license comments.
- scripts/entry.js: import minimalSetup and factory getEditorSetup(options) to use minimalSetup by default and basicSetup only when lineNumbers === true; integrates this into editor state creation.
- src/codemirror.css: fix closing brace and add :focus-within styles to apply a Bootstrap-like focus ring.

These changes reduce default editor surface (no line numbers unless requested), add required runtime deps, and improve accessibility/focus visuals.
pull/25358/head
Zeynep Gizem Fırat 5 months ago
parent
commit
6e8b0a87fa
  1. 2
      npm/packs/codemirror/package.json
  2. 2
      npm/packs/codemirror/scripts/build.js
  3. 9
      npm/packs/codemirror/scripts/entry.js
  4. 5
      npm/packs/codemirror/src/codemirror.css

2
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": {

2
npm/packs/codemirror/scripts/build.js

@ -11,7 +11,7 @@ async function run() {
target: ['es2019'],
sourcemap: false,
minify: false,
legalComments: 'none'
legalComments: 'eof'
});
}

9
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);

5
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));
}
Loading…
Cancel
Save