feat(code): switch to CodeMirror 6

This commit is contained in:
Elian Doran 2025-05-10 19:10:30 +03:00
parent ddf43a5e24
commit cfa8987b25
No known key found for this signature in database
10 changed files with 172 additions and 171 deletions

View File

@ -23,6 +23,7 @@
"@popperjs/core": "2.11.8", "@popperjs/core": "2.11.8",
"@triliumnext/ckeditor5": "workspace:*", "@triliumnext/ckeditor5": "workspace:*",
"@triliumnext/commons": "workspace:*", "@triliumnext/commons": "workspace:*",
"@triliumnext/codemirror": "workspace:*",
"bootstrap": "5.3.6", "bootstrap": "5.3.6",
"dayjs": "1.11.13", "dayjs": "1.11.13",
"dayjs-plugin-utc": "0.1.2", "dayjs-plugin-utc": "0.1.2",

View File

@ -135,74 +135,6 @@ declare global {
trust: boolean; trust: boolean;
}) => void; }) => void;
interface CodeMirrorOpts {
value: string;
viewportMargin: number;
indentUnit: number;
matchBrackets: boolean;
matchTags: { bothTags: boolean };
highlightSelectionMatches: {
showToken: boolean;
annotateScrollbar: boolean;
};
lineNumbers: boolean;
lineWrapping: boolean;
keyMap?: "vim" | "default";
lint?: boolean;
gutters?: string[];
tabindex?: number;
dragDrop?: boolean;
placeholder?: string;
readOnly?: boolean;
}
var CodeMirror: {
(el: HTMLElement, opts: CodeMirrorOpts): CodeMirrorInstance;
keyMap: {
default: Record<string, string>;
};
modeURL: string;
modeInfo: ModeInfo[];
findModeByMIME(mime: string): ModeInfo;
autoLoadMode(instance: CodeMirrorInstance, mode: string)
registerHelper(type: string, filter: string | null, callback: (text: string, options: object) => unknown);
Pos(line: number, col: number);
}
interface ModeInfo {
name: string;
mode: string;
mime: string;
mimes: string[];
}
interface CodeMirrorInstance {
getValue(): string;
setValue(val: string);
clearHistory();
setOption(name: string, value: string);
refresh();
focus();
getCursor(): { line: number, col: number, ch: number };
setCursor(line: number, col: number);
getSelection(): string;
lineCount(): number;
on(event: string, callback: () => void);
operation(callback: () => void);
scrollIntoView(pos: number);
doc: {
getValue(): string;
markText(
from: { line: number, ch: number } | number,
to: { line: number, ch: number } | number,
opts: {
className: string
});
setSelection(from: number, to: number);
replaceRange(text: string, from: number, to: number);
}
}
var katex: { var katex: {
renderToString(text: string, opts: { renderToString(text: string, opts: {
throwOnError: boolean throwOnError: boolean

View File

@ -1,7 +1,5 @@
import TypeWidget from "./type_widget.js"; import TypeWidget from "./type_widget.js";
import libraryLoader from "../../services/library_loader.js"; import CodeMirror from "@triliumnext/codemirror";
import options from "../../services/options.js";
import type FNote from "../../entities/fnote.js";
/** /**
* An abstract {@link TypeWidget} which implements the CodeMirror editor, meant to be used as a parent for * An abstract {@link TypeWidget} which implements the CodeMirror editor, meant to be used as a parent for
@ -19,54 +17,27 @@ import type FNote from "../../entities/fnote.js";
export default class AbstractCodeTypeWidget extends TypeWidget { export default class AbstractCodeTypeWidget extends TypeWidget {
protected $editor!: JQuery<HTMLElement>; protected $editor!: JQuery<HTMLElement>;
protected codeEditor!: CodeMirrorInstance; protected codeEditor!: CodeMirror;
doRender() { doRender() {
this.initialized = this.#initEditor(); this.initialized = this.#initEditor();
} }
async #initEditor() { async #initEditor() {
await libraryLoader.requireLibrary(libraryLoader.CODE_MIRROR); this.codeEditor = new CodeMirror({
parent: this.$editor[0],
// these conflict with backward/forward navigation shortcuts
delete CodeMirror.keyMap.default["Alt-Left"];
delete CodeMirror.keyMap.default["Alt-Right"];
CodeMirror.modeURL = `${window.glob.assetPath}/node_modules/codemirror/mode/%N/%N.js`;
const jsMode = CodeMirror.modeInfo.find((mode) => mode.name === "JavaScript");
if (jsMode) {
jsMode.mimes.push(...["application/javascript;env=frontend", "application/javascript;env=backend"]);
}
const sqlMode = CodeMirror.modeInfo.find((mode) => mode.name === "SQLite");
if (sqlMode) {
sqlMode.mimes = ["text/x-sqlite", "text/x-sqlite;schema=trilium"];
}
this.codeEditor = CodeMirror(this.$editor[0], {
value: "",
viewportMargin: Infinity,
indentUnit: 4,
matchBrackets: true,
matchTags: { bothTags: true },
highlightSelectionMatches: { showToken: false, annotateScrollbar: false },
lineNumbers: true,
// we line wrap partly also because without it horizontal scrollbar displays only when you scroll
// all the way to the bottom of the note. With line wrap, there's no horizontal scrollbar so no problem
lineWrapping: options.is("codeLineWrapEnabled"),
...this.getExtraOpts()
}); });
this.onEditorInitialized();
} }
/** // /**
* Can be extended in derived classes to add extra options to the CodeMirror constructor. The options are appended // * Can be extended in derived classes to add extra options to the CodeMirror constructor. The options are appended
* at the end, so it is possible to override the default values introduced by the abstract editor as well. // * at the end, so it is possible to override the default values introduced by the abstract editor as well.
* // *
* @returns the extra options to be passed to the CodeMirror constructor. // * @returns the extra options to be passed to the CodeMirror constructor.
*/ // */
getExtraOpts(): Partial<CodeMirrorOpts> { // getExtraOpts(): Partial<CodeMirror> {
return {}; // return {};
} // }
/** /**
* Called as soon as the CodeMirror library has been loaded and the editor was constructed. Can be extended in * Called as soon as the CodeMirror library has been loaded and the editor was constructed. Can be extended in
@ -85,29 +56,29 @@ export default class AbstractCodeTypeWidget extends TypeWidget {
* @param {*} content the new content of the note. * @param {*} content the new content of the note.
*/ */
_update(note: { mime: string }, content: string) { _update(note: { mime: string }, content: string) {
// CodeMirror breaks pretty badly on null, so even though it shouldn't happen (guarded by a consistency check) // // CodeMirror breaks pretty badly on null, so even though it shouldn't happen (guarded by a consistency check)
// we provide fallback // // we provide fallback
this.codeEditor.setValue(content || ""); // this.codeEditor.setValue(content || "");
this.codeEditor.clearHistory(); // this.codeEditor.clearHistory();
let info = CodeMirror.findModeByMIME(note.mime); // let info = CodeMirror.findModeByMIME(note.mime);
if (!info) { // if (!info) {
// Switch back to plain text if CodeMirror does not have a mode for whatever MIME type we're editing. // // Switch back to plain text if CodeMirror does not have a mode for whatever MIME type we're editing.
// To avoid inheriting a mode from a previously open code note. // // To avoid inheriting a mode from a previously open code note.
info = CodeMirror.findModeByMIME("text/plain"); // info = CodeMirror.findModeByMIME("text/plain");
} // }
this.codeEditor.setOption("mode", info.mime); // this.codeEditor.setOption("mode", info.mime);
CodeMirror.autoLoadMode(this.codeEditor, info.mode); // CodeMirror.autoLoadMode(this.codeEditor, info.mode);
} }
show() { show() {
this.$widget.show(); this.$widget.show();
if (this.codeEditor) { // if (this.codeEditor) {
// show can be called before render // // show can be called before render
this.codeEditor.refresh(); // this.codeEditor.refresh();
} // }
} }
focus() { focus() {
@ -116,15 +87,15 @@ export default class AbstractCodeTypeWidget extends TypeWidget {
} }
scrollToEnd() { scrollToEnd() {
this.codeEditor.setCursor(this.codeEditor.lineCount(), 0); // this.codeEditor.setCursor(this.codeEditor.lineCount(), 0);
this.codeEditor.focus(); // this.codeEditor.focus();
} }
cleanup() { cleanup() {
if (this.codeEditor) { if (this.codeEditor) {
this.spacedUpdate.allowUpdateWithoutChange(() => { // this.spacedUpdate.allowUpdateWithoutChange(() => {
this.codeEditor.setValue(""); // this.codeEditor.setValue("");
}); // });
} }
} }
} }

View File

@ -41,19 +41,19 @@ export default class EditableCodeTypeWidget extends AbstractCodeTypeWidget {
super.doRender(); super.doRender();
} }
getExtraOpts(): Partial<CodeMirrorOpts> { // getExtraOpts(): Partial<CodeMirrorOpts> {
return { // return {
keyMap: options.is("vimKeymapEnabled") ? "vim" : "default", // keyMap: options.is("vimKeymapEnabled") ? "vim" : "default",
lint: true, // lint: true,
gutters: ["CodeMirror-lint-markers"], // gutters: ["CodeMirror-lint-markers"],
tabindex: 300, // tabindex: 300,
dragDrop: false, // with true the editor inlines dropped files which is not what we expect // dragDrop: false, // with true the editor inlines dropped files which is not what we expect
placeholder: t("editable_code.placeholder") // placeholder: t("editable_code.placeholder")
}; // };
} // }
onEditorInitialized() { onEditorInitialized() {
this.codeEditor.on("change", () => this.spacedUpdate.scheduleUpdate()); // this.codeEditor.on("change", () => this.spacedUpdate.scheduleUpdate());
} }
async doRefresh(note: FNote) { async doRefresh(note: FNote) {
@ -72,7 +72,8 @@ export default class EditableCodeTypeWidget extends AbstractCodeTypeWidget {
getData() { getData() {
return { return {
content: this.codeEditor.getValue() // content: this.codeEditor.getValue()
content: ""
}; };
} }

View File

@ -35,10 +35,13 @@
], ],
"references": [ "references": [
{ {
"path": "../../packages/ckeditor5/tsconfig.lib.json" "path": "../../packages/codemirror/tsconfig.lib.json"
}, },
{ {
"path": "../../packages/commons/tsconfig.lib.json" "path": "../../packages/commons/tsconfig.lib.json"
},
{
"path": "../../packages/ckeditor5/tsconfig.lib.json"
} }
] ]
} }

View File

@ -4,11 +4,14 @@
"include": [], "include": [],
"references": [ "references": [
{ {
"path": "../../packages/ckeditor5" "path": "../../packages/codemirror"
}, },
{ {
"path": "../../packages/commons" "path": "../../packages/commons"
}, },
{
"path": "../../packages/ckeditor5"
},
{ {
"path": "./tsconfig.app.json" "path": "./tsconfig.app.json"
}, },

View File

@ -18,5 +18,8 @@
"nx": { "nx": {
"name": "codemirror" "name": "codemirror"
}, },
"dependencies": {} "dependencies": {
"@codemirror/commands": "6.8.1",
"@codemirror/view": "6.36.7"
}
} }

View File

@ -1 +1,13 @@
export * from './lib/codemirror.js'; import { defaultKeymap } from "@codemirror/commands";
import { EditorView, keymap, type EditorViewConfig } from "@codemirror/view";
export default class CodeMirror extends EditorView {
constructor(config: EditorViewConfig) {
super({
...config,
extensions: [
keymap.of(defaultKeymap)
]
});
}
}

View File

@ -1,3 +0,0 @@
export function codemirror(): string {
return 'codemirror';
}

120
pnpm-lock.yaml generated
View File

@ -200,6 +200,9 @@ importers:
'@triliumnext/ckeditor5': '@triliumnext/ckeditor5':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/ckeditor5 version: link:../../packages/ckeditor5
'@triliumnext/codemirror':
specifier: workspace:*
version: link:../../packages/codemirror
'@triliumnext/commons': '@triliumnext/commons':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/commons version: link:../../packages/commons
@ -1149,7 +1152,14 @@ importers:
specifier: ^9.0.7 specifier: ^9.0.7
version: 9.12.7(bufferutil@4.0.9)(utf-8-validate@6.0.5) version: 9.12.7(bufferutil@4.0.9)(utf-8-validate@6.0.5)
packages/codemirror: {} packages/codemirror:
dependencies:
'@codemirror/commands':
specifier: 6.8.1
version: 6.8.1
'@codemirror/view':
specifier: 6.36.7
version: 6.36.7
packages/commons: packages/commons:
dependencies: dependencies:
@ -2135,6 +2145,18 @@ packages:
'@ckeditor/ckeditor5-word-count@45.0.0': '@ckeditor/ckeditor5-word-count@45.0.0':
resolution: {integrity: sha512-72Fd2mUKN8dXRMKGKLPhUiQHhoGnp0ZyPwP8Ezcpbwfn/mh5SBxP3LyQGg35sKy1xJgDYywHlWvjVhw95LgIjg==} resolution: {integrity: sha512-72Fd2mUKN8dXRMKGKLPhUiQHhoGnp0ZyPwP8Ezcpbwfn/mh5SBxP3LyQGg35sKy1xJgDYywHlWvjVhw95LgIjg==}
'@codemirror/commands@6.8.1':
resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==}
'@codemirror/language@6.11.0':
resolution: {integrity: sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==}
'@codemirror/state@6.5.2':
resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==}
'@codemirror/view@6.36.7':
resolution: {integrity: sha512-kCWGW/chWGPgZqfZ36Um9Iz0X2IVpmCjg1P/qY6B6a2ecXtWRRAigmpJ6YgUQ5lTWXMyyVdfmpzhLZmsZQMbtg==}
'@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'} engines: {node: '>=12'}
@ -3323,6 +3345,15 @@ packages:
'@leichtgewicht/ip-codec@2.0.5': '@leichtgewicht/ip-codec@2.0.5':
resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==}
'@lezer/common@1.2.3':
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
'@lezer/highlight@1.2.1':
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
'@lezer/lr@1.4.2':
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
'@ljharb/resumer@0.0.1': '@ljharb/resumer@0.0.1':
resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@ -3349,6 +3380,9 @@ packages:
resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
'@marijn/find-cluster-break@1.0.2':
resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
'@mermaid-js/layout-elk@0.1.7': '@mermaid-js/layout-elk@0.1.7':
resolution: {integrity: sha512-G3AJ2jMaCAqky2CT3z/sf3pK5UuS3tne98GsXDl3PkKByCmPmOYmJPf+6oX5PUlV3HNWWHuSgtZ9NU/CZDSuHQ==} resolution: {integrity: sha512-G3AJ2jMaCAqky2CT3z/sf3pK5UuS3tne98GsXDl3PkKByCmPmOYmJPf+6oX5PUlV3HNWWHuSgtZ9NU/CZDSuHQ==}
peerDependencies: peerDependencies:
@ -12627,6 +12661,9 @@ packages:
peerDependencies: peerDependencies:
webpack: ^5.27.0 webpack: ^5.27.0
style-mod@4.1.2:
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
stylehacks@5.1.1: stylehacks@5.1.1:
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0} engines: {node: ^10 || ^12 || >=14.0}
@ -13544,6 +13581,9 @@ packages:
resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
deprecated: Use your platform's native performance.now() and performance.timeOrigin. deprecated: Use your platform's native performance.now() and performance.timeOrigin.
w3c-keyname@2.2.8:
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
w3c-xmlserializer@2.0.0: w3c-xmlserializer@2.0.0:
resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -15096,23 +15136,27 @@ snapshots:
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@ckeditor/ckeditor5-collaboration-core@45.0.0': '@ckeditor/ckeditor5-collaboration-core@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies: dependencies:
'@ckeditor/ckeditor5-comments': 45.0.0 '@ckeditor/ckeditor5-comments': 45.0.0
'@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-icons': 45.0.0 '@ckeditor/ckeditor5-icons': 45.0.0
'@ckeditor/ckeditor5-theme-lark': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-theme-lark': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-track-changes': 45.0.0 '@ckeditor/ckeditor5-track-changes': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-ui': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-ui': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-utils': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-utils': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@types/luxon': 3.4.2 '@types/luxon': 3.4.2
ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
luxon: 3.5.0 luxon: 3.5.0
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
'@ckeditor/ckeditor5-comments@45.0.0': '@ckeditor/ckeditor5-comments@45.0.0':
dependencies: dependencies:
'@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-collaboration-core': 45.0.0 '@ckeditor/ckeditor5-collaboration-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@ -15133,7 +15177,7 @@ snapshots:
'@ckeditor/ckeditor5-comments@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': '@ckeditor/ckeditor5-comments@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies: dependencies:
'@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-collaboration-core': 45.0.0 '@ckeditor/ckeditor5-collaboration-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@ -15399,18 +15443,6 @@ snapshots:
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@ckeditor/ckeditor5-emoji@45.0.0':
dependencies:
'@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-icons': 45.0.0
'@ckeditor/ckeditor5-mention': 45.0.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)
'@ckeditor/ckeditor5-typing': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-ui': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-utils': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.32.0
fuzzysort: 3.1.0
'@ckeditor/ckeditor5-emoji@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': '@ckeditor/ckeditor5-emoji@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies: dependencies:
'@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@ -16014,7 +16046,7 @@ snapshots:
'@ckeditor/ckeditor5-operations-compressor': 45.0.0 '@ckeditor/ckeditor5-operations-compressor': 45.0.0
'@ckeditor/ckeditor5-revision-history': 45.0.0 '@ckeditor/ckeditor5-revision-history': 45.0.0
'@ckeditor/ckeditor5-theme-lark': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-theme-lark': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-track-changes': 45.0.0 '@ckeditor/ckeditor5-track-changes': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-ui': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-ui': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-utils': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-utils': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
@ -16227,7 +16259,7 @@ snapshots:
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@ckeditor/ckeditor5-track-changes@45.0.0': '@ckeditor/ckeditor5-track-changes@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies: dependencies:
'@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-clipboard': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-code-block': 45.0.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-code-block': 45.0.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@ -16256,6 +16288,10 @@ snapshots:
ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5: 45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
ckeditor5-collaboration: 45.0.0 ckeditor5-collaboration: 45.0.0
es-toolkit: 1.32.0 es-toolkit: 1.32.0
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
'@ckeditor/ckeditor5-typing@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': '@ckeditor/ckeditor5-typing@45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies: dependencies:
@ -16362,6 +16398,32 @@ snapshots:
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@codemirror/commands@6.8.1':
dependencies:
'@codemirror/language': 6.11.0
'@codemirror/state': 6.5.2
'@codemirror/view': 6.36.7
'@lezer/common': 1.2.3
'@codemirror/language@6.11.0':
dependencies:
'@codemirror/state': 6.5.2
'@codemirror/view': 6.36.7
'@lezer/common': 1.2.3
'@lezer/highlight': 1.2.1
'@lezer/lr': 1.4.2
style-mod: 4.1.2
'@codemirror/state@6.5.2':
dependencies:
'@marijn/find-cluster-break': 1.0.2
'@codemirror/view@6.36.7':
dependencies:
'@codemirror/state': 6.5.2
style-mod: 4.1.2
w3c-keyname: 2.2.8
'@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1':
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.9 '@jridgewell/trace-mapping': 0.3.9
@ -17748,6 +17810,16 @@ snapshots:
'@leichtgewicht/ip-codec@2.0.5': {} '@leichtgewicht/ip-codec@2.0.5': {}
'@lezer/common@1.2.3': {}
'@lezer/highlight@1.2.1':
dependencies:
'@lezer/common': 1.2.3
'@lezer/lr@1.4.2':
dependencies:
'@lezer/common': 1.2.3
'@ljharb/resumer@0.0.1': '@ljharb/resumer@0.0.1':
dependencies: dependencies:
'@ljharb/through': 2.3.14 '@ljharb/through': 2.3.14
@ -17787,6 +17859,8 @@ snapshots:
- supports-color - supports-color
optional: true optional: true
'@marijn/find-cluster-break@1.0.2': {}
'@mermaid-js/layout-elk@0.1.7(mermaid@11.6.0)': '@mermaid-js/layout-elk@0.1.7(mermaid@11.6.0)':
dependencies: dependencies:
d3: 7.9.0 d3: 7.9.0
@ -21507,7 +21581,7 @@ snapshots:
ckeditor5-collaboration@45.0.0: ckeditor5-collaboration@45.0.0:
dependencies: dependencies:
'@ckeditor/ckeditor5-collaboration-core': 45.0.0 '@ckeditor/ckeditor5-collaboration-core': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
ckeditor5@45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41): ckeditor5@45.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41):
dependencies: dependencies:
@ -21530,7 +21604,7 @@ snapshots:
'@ckeditor/ckeditor5-editor-decoupled': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-editor-decoupled': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-editor-inline': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-editor-inline': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-editor-multi-root': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-editor-multi-root': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-emoji': 45.0.0 '@ckeditor/ckeditor5-emoji': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-engine': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-enter': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@ckeditor/ckeditor5-essentials': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@ckeditor/ckeditor5-essentials': 45.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@ -29151,6 +29225,8 @@ snapshots:
dependencies: dependencies:
webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)
style-mod@4.1.2: {}
stylehacks@5.1.1(postcss@8.5.3): stylehacks@5.1.1(postcss@8.5.3):
dependencies: dependencies:
browserslist: 4.24.4 browserslist: 4.24.4
@ -30276,6 +30352,8 @@ snapshots:
dependencies: dependencies:
browser-process-hrtime: 1.0.0 browser-process-hrtime: 1.0.0
w3c-keyname@2.2.8: {}
w3c-xmlserializer@2.0.0: w3c-xmlserializer@2.0.0:
dependencies: dependencies:
xml-name-validator: 3.0.0 xml-name-validator: 3.0.0