@coze-editor/preset-code 0.1.0-alpha.37c297 → 0.1.0-alpha.445000
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +111 -27
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +123 -39
- package/dist/index.js.map +1 -1
- package/package.json +16 -13
package/dist/esm/index.js
CHANGED
|
@@ -60,7 +60,7 @@ var vscodeDark = [
|
|
|
60
60
|
import {
|
|
61
61
|
MarkupContent as MarkupContent2
|
|
62
62
|
} from "vscode-languageserver-types";
|
|
63
|
-
import
|
|
63
|
+
import createFuzzySearch from "@nozbe/microfuzz";
|
|
64
64
|
import { linter } from "@coze-editor/extension-lint";
|
|
65
65
|
import { links } from "@coze-editor/extension-links";
|
|
66
66
|
import {
|
|
@@ -72,11 +72,12 @@ import {
|
|
|
72
72
|
hoverTooltip,
|
|
73
73
|
ViewPlugin as ViewPlugin3
|
|
74
74
|
} from "@codemirror/view";
|
|
75
|
+
import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
|
|
75
76
|
import {
|
|
76
77
|
EditorSelection,
|
|
77
78
|
StateField as StateField2
|
|
78
79
|
} from "@codemirror/state";
|
|
79
|
-
import { LanguageSupport } from "@codemirror/language";
|
|
80
|
+
import { LanguageSupport, syntaxHighlighting as syntaxHighlighting2 } from "@codemirror/language";
|
|
80
81
|
import {
|
|
81
82
|
autocompletion,
|
|
82
83
|
insertCompletionText,
|
|
@@ -104,10 +105,21 @@ import markedShiki from "marked-shiki";
|
|
|
104
105
|
import { Marked } from "marked";
|
|
105
106
|
|
|
106
107
|
// src/highlighter.ts
|
|
107
|
-
import {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
import { createOnigurumaEngine } from "shiki/engine/oniguruma";
|
|
109
|
+
import { createHighlighterCore } from "shiki/core";
|
|
110
|
+
var highlighterPromise = createHighlighterCore({
|
|
111
|
+
langs: [
|
|
112
|
+
() => import("@shikijs/langs/markdown"),
|
|
113
|
+
() => import("@shikijs/langs/javascript"),
|
|
114
|
+
() => import("@shikijs/langs/typescript"),
|
|
115
|
+
() => import("@shikijs/langs/python"),
|
|
116
|
+
() => import("@shikijs/langs/sql")
|
|
117
|
+
],
|
|
118
|
+
themes: [
|
|
119
|
+
() => import("@shikijs/themes/github-dark"),
|
|
120
|
+
() => import("@shikijs/themes/one-dark-pro")
|
|
121
|
+
],
|
|
122
|
+
engine: createOnigurumaEngine(import("shiki/wasm"))
|
|
111
123
|
});
|
|
112
124
|
|
|
113
125
|
// src/const.ts
|
|
@@ -399,6 +411,7 @@ function formatContents(contents) {
|
|
|
399
411
|
}
|
|
400
412
|
return "";
|
|
401
413
|
}
|
|
414
|
+
var identRe = /^[\w$]+$/;
|
|
402
415
|
var LanguagesRegistry = class {
|
|
403
416
|
languages = {};
|
|
404
417
|
register(id, options) {
|
|
@@ -420,15 +433,7 @@ var LanguagesRegistry = class {
|
|
|
420
433
|
const { languageService, language, extensions } = this.languages[id];
|
|
421
434
|
const langaugeExtensions = [];
|
|
422
435
|
langaugeExtensions.push(new LanguageSupport(language));
|
|
423
|
-
|
|
424
|
-
langaugeExtensions.push(
|
|
425
|
-
shiki({
|
|
426
|
-
highlighter: highlighterPromise,
|
|
427
|
-
language: id,
|
|
428
|
-
theme: DEFAULT_SYNTAX_THEME
|
|
429
|
-
})
|
|
430
|
-
);
|
|
431
|
-
}
|
|
436
|
+
langaugeExtensions.push(syntaxHighlighting2(oneDarkHighlightStyle));
|
|
432
437
|
langaugeExtensions.push(
|
|
433
438
|
StateField2.define({
|
|
434
439
|
create(state) {
|
|
@@ -611,9 +616,19 @@ var LanguagesRegistry = class {
|
|
|
611
616
|
}
|
|
612
617
|
if (languageService == null ? void 0 : languageService.doComplete) {
|
|
613
618
|
langaugeExtensions.push(
|
|
619
|
+
EditorView2.theme({
|
|
620
|
+
".cm-completionInfo p": {
|
|
621
|
+
margin: 0
|
|
622
|
+
},
|
|
623
|
+
".cm-completionMatchedText": {
|
|
624
|
+
textDecoration: "none",
|
|
625
|
+
color: "#4daafc"
|
|
626
|
+
}
|
|
627
|
+
}),
|
|
614
628
|
autocompletion({
|
|
615
629
|
override: [
|
|
616
630
|
async function({ state, pos, view: view2 }) {
|
|
631
|
+
var _a2;
|
|
617
632
|
const { textDocument, originalRangeFor, generatedRangeFor } = state.field(textDocumentField);
|
|
618
633
|
const range = generatedRangeFor({ from: pos, to: pos });
|
|
619
634
|
const offset = range == null ? void 0 : range.from;
|
|
@@ -627,14 +642,73 @@ var LanguagesRegistry = class {
|
|
|
627
642
|
if (!completionResult || !Array.isArray(completionResult.items) || completionResult.items.length === 0) {
|
|
628
643
|
return null;
|
|
629
644
|
}
|
|
645
|
+
let { items } = completionResult;
|
|
646
|
+
const content = textDocument.getText();
|
|
647
|
+
const charBefore = content.slice(offset - 1, offset);
|
|
648
|
+
const triggerCharacters = languageService.triggerCharacters ?? [];
|
|
649
|
+
if (!triggerCharacters.includes(charBefore)) {
|
|
650
|
+
let i = offset - 1;
|
|
651
|
+
let query = "";
|
|
652
|
+
while (i >= 0) {
|
|
653
|
+
const char = content.slice(i, i + 1);
|
|
654
|
+
if (char === "\n") {
|
|
655
|
+
break;
|
|
656
|
+
}
|
|
657
|
+
if (!identRe.test(char) && i + 1 <= offset) {
|
|
658
|
+
break;
|
|
659
|
+
}
|
|
660
|
+
i--;
|
|
661
|
+
}
|
|
662
|
+
query = content.slice(i + 1, offset);
|
|
663
|
+
if (query) {
|
|
664
|
+
const fuzzySearch = createFuzzySearch(items, {
|
|
665
|
+
key: "label"
|
|
666
|
+
});
|
|
667
|
+
items = fuzzySearch(query).map((v) => {
|
|
668
|
+
const finalItem = {
|
|
669
|
+
...v.item,
|
|
670
|
+
data: {
|
|
671
|
+
matches: v.matches.reduce((memo, current) => {
|
|
672
|
+
if (!current) {
|
|
673
|
+
return memo;
|
|
674
|
+
}
|
|
675
|
+
return [
|
|
676
|
+
...memo,
|
|
677
|
+
...current.reduce(
|
|
678
|
+
(m, c) => [...m, c[0], c[1] + 1],
|
|
679
|
+
[]
|
|
680
|
+
)
|
|
681
|
+
];
|
|
682
|
+
}, [])
|
|
683
|
+
}
|
|
684
|
+
};
|
|
685
|
+
if (!finalItem.textEdit) {
|
|
686
|
+
finalItem.textEdit = {
|
|
687
|
+
range: {
|
|
688
|
+
start: textDocument.positionAt(i + 1),
|
|
689
|
+
end: textDocument.positionAt(offset)
|
|
690
|
+
},
|
|
691
|
+
newText: v.item.label
|
|
692
|
+
};
|
|
693
|
+
}
|
|
694
|
+
return finalItem;
|
|
695
|
+
});
|
|
696
|
+
} else if (Array.isArray(languageService.triggerCharacters)) {
|
|
697
|
+
items = [];
|
|
698
|
+
}
|
|
699
|
+
}
|
|
630
700
|
const completionOptions = [];
|
|
631
701
|
const mapping = /* @__PURE__ */ new WeakMap();
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
702
|
+
let resolveCompletion = void 0;
|
|
703
|
+
if (typeof languageService.resolveCompletionItem === "function") {
|
|
704
|
+
resolveCompletion = createResolveCompletion(
|
|
705
|
+
view2,
|
|
706
|
+
languageService,
|
|
707
|
+
mapping
|
|
708
|
+
);
|
|
709
|
+
}
|
|
710
|
+
const matchesMapping = /* @__PURE__ */ new WeakMap();
|
|
711
|
+
for (const item of items) {
|
|
638
712
|
const { kind, label, textEdit, textEditText } = item;
|
|
639
713
|
const completion = {
|
|
640
714
|
label,
|
|
@@ -642,6 +716,7 @@ var LanguagesRegistry = class {
|
|
|
642
716
|
detail: item.detail ?? ""
|
|
643
717
|
};
|
|
644
718
|
mapping.set(completion, item);
|
|
719
|
+
matchesMapping.set(completion, (_a2 = item.data) == null ? void 0 : _a2.matches);
|
|
645
720
|
if (textEdit) {
|
|
646
721
|
const range2 = "range" in textEdit ? textEdit.range : textEdit.replace;
|
|
647
722
|
const from = textDocument.offsetAt(range2.start);
|
|
@@ -682,7 +757,10 @@ var LanguagesRegistry = class {
|
|
|
682
757
|
return {
|
|
683
758
|
from: pos,
|
|
684
759
|
options: completionOptions,
|
|
685
|
-
filter: false
|
|
760
|
+
filter: false,
|
|
761
|
+
getMatch(completion) {
|
|
762
|
+
return matchesMapping.get(completion) ?? [];
|
|
763
|
+
}
|
|
686
764
|
};
|
|
687
765
|
}
|
|
688
766
|
]
|
|
@@ -894,7 +972,7 @@ import {
|
|
|
894
972
|
defaultHighlightStyle,
|
|
895
973
|
foldKeymap,
|
|
896
974
|
indentOnInput,
|
|
897
|
-
syntaxHighlighting as
|
|
975
|
+
syntaxHighlighting as syntaxHighlighting3
|
|
898
976
|
} from "@codemirror/language";
|
|
899
977
|
import {
|
|
900
978
|
defaultKeymap,
|
|
@@ -917,7 +995,7 @@ var basicSetup = (() => [
|
|
|
917
995
|
dropCursor(),
|
|
918
996
|
EditorState2.allowMultipleSelections.of(true),
|
|
919
997
|
indentOnInput(),
|
|
920
|
-
|
|
998
|
+
syntaxHighlighting3(defaultHighlightStyle, { fallback: true }),
|
|
921
999
|
closeBrackets(),
|
|
922
1000
|
autocompletion2(),
|
|
923
1001
|
rectangularSelection(),
|
|
@@ -938,7 +1016,7 @@ var basicSetup = (() => [
|
|
|
938
1016
|
import { EditorView as EditorView3 } from "@codemirror/view";
|
|
939
1017
|
import {
|
|
940
1018
|
HighlightStyle as HighlightStyle2,
|
|
941
|
-
syntaxHighlighting as
|
|
1019
|
+
syntaxHighlighting as syntaxHighlighting4
|
|
942
1020
|
} from "@codemirror/language";
|
|
943
1021
|
var createTheme = ({ variant, settings, styles }) => {
|
|
944
1022
|
const bracketTheme = (settings.bracketColors ?? []).reduce(
|
|
@@ -1000,7 +1078,7 @@ var createTheme = ({ variant, settings, styles }) => {
|
|
|
1000
1078
|
}
|
|
1001
1079
|
);
|
|
1002
1080
|
const highlightStyle = HighlightStyle2.define(styles);
|
|
1003
|
-
const extension2 = [theme,
|
|
1081
|
+
const extension2 = [theme, syntaxHighlighting4(highlightStyle)];
|
|
1004
1082
|
return extension2;
|
|
1005
1083
|
};
|
|
1006
1084
|
var create_theme_default = createTheme;
|
|
@@ -1010,7 +1088,7 @@ import "@coze-editor/extension-scrollbar/dist/index.css";
|
|
|
1010
1088
|
import "@coze-editor/extension-completion-icons/dist/index.css";
|
|
1011
1089
|
|
|
1012
1090
|
// src/transformer.ts
|
|
1013
|
-
import { Text } from "
|
|
1091
|
+
import { Text } from "@coze-editor/utils";
|
|
1014
1092
|
var transformerCreator = (processor) => (source) => {
|
|
1015
1093
|
const text = processor(new Text(source));
|
|
1016
1094
|
return {
|
|
@@ -1075,6 +1153,9 @@ var preset = [
|
|
|
1075
1153
|
minWidth: "200px",
|
|
1076
1154
|
margin: "0 2px"
|
|
1077
1155
|
},
|
|
1156
|
+
".cm-tooltip.cm-completionInfo": {
|
|
1157
|
+
padding: "6px 9px"
|
|
1158
|
+
},
|
|
1078
1159
|
".cm-completionInfo p:last-child": {
|
|
1079
1160
|
display: "inline-block"
|
|
1080
1161
|
},
|
|
@@ -1116,6 +1197,9 @@ var preset = [
|
|
|
1116
1197
|
maxHeight: "360px",
|
|
1117
1198
|
wordBreak: "break-word"
|
|
1118
1199
|
},
|
|
1200
|
+
".cm-tooltip-hover p": {
|
|
1201
|
+
margin: 0
|
|
1202
|
+
},
|
|
1119
1203
|
".cm-tooltip-section:not(:first-child)": {
|
|
1120
1204
|
"border-top": "solid 0.5px #666666ab"
|
|
1121
1205
|
}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/themes.ts","../../src/theme-vscode.ts","../../src/language-registry.ts","../../src/signature-help.ts","../../src/markdown.ts","../../src/highlighter.ts","../../src/const.ts","../../src/goto-definition.ts","../../src/extension/tab-size/index.ts","../../src/extension/basic-setup.ts","../../src/create-theme.ts","../../src/transformer.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport universal from '@coze-editor/preset-universal';\nimport {\n scrollBeyondLastLine,\n colorizationBrackets,\n matchingBrackets,\n} from '@coze-editor/extensions';\nimport { scrollbar } from '@coze-editor/extension-scrollbar';\nimport { icons } from '@coze-editor/extension-completion-icons';\nimport { maxHeight, minHeight, height } from '@coze-editor/core-plugins';\nimport {\n api,\n extension,\n type InferEditorAPIFromPlugins,\n option,\n} from '@coze-editor/core';\nimport {\n uriFacet,\n languageIdFacet,\n transformerFacet,\n textDocumentField,\n type Transformer,\n} from '@coze-editor/code-language-shared';\nimport { EditorView, lineNumbers } from '@codemirror/view';\nimport { Prec } from '@codemirror/state';\nimport { foldGutter } from '@codemirror/language';\n\nimport { themes } from './themes';\nimport { vscodeDark, vscodeLight } from './theme-vscode';\nimport { languages } from './language-registry';\nimport { tabSize } from './extension/tab-size';\nimport { basicSetup } from './extension/basic-setup';\nimport createTheme, { type Theme } from './create-theme';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nimport '@coze-editor/extension-scrollbar/dist/index.css';\nimport '@coze-editor/extension-completion-icons/dist/index.css';\n\nconst SVG_FOLD_CLOSE =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619z\" clip-rule=\"evenodd\"/></svg>';\nconst SVG_FOLD_OPEN =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m7.976 10.072l4.357-4.357l.62.618L8.284 11h-.618L3 6.333l.619-.618z\" clip-rule=\"evenodd\"/></svg>';\n\nconst preset = [\n ...universal,\n\n extension([\n basicSetup,\n matchingBrackets,\n // indentGuides(),\n icons,\n textDocumentField,\n\n Prec.low(\n EditorView.theme({\n '.cm-foldGutter .cm-gutterElement': {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-link': {\n textDecoration: 'underline',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-tooltip': {\n borderRadius: '5px',\n fontSize: '12px',\n },\n '.cm-diagnostic-error': {\n borderLeft: 'none',\n },\n '.cm-diagnostic': {\n padding: '5px 10px',\n },\n '.cm-lineNumbers': {\n userSelect: 'none',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul': {\n width: '264px',\n padding: '4px',\n },\n '.cm-completionInfo': {\n minWidth: '200px',\n margin: '0 2px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport shiki from 'codemirror-shiki';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport { highlighterPromise } from './highlighter';\nimport gotoDefinition from './goto-definition';\nimport { DEFAULT_SYNTAX_THEME, LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n // TODO: use shiki for all languages\n // Only use shiki for TypeScript and Python temporarily\n if (id === 'typescript' || id === 'python') {\n langaugeExtensions.push(\n shiki({\n highlighter: highlighterPromise,\n language: id,\n theme: DEFAULT_SYNTAX_THEME,\n }),\n );\n }\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n const resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n\n for (const item of completionResult.items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n // TODO: move to preset code\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createHighlighter } from 'shiki';\n\nconst highlighterPromise = createHighlighter({\n langs: ['md', 'js', 'ts', 'python'],\n themes: ['github-dark', 'one-dark-pro'],\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from 'text-mapping';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":"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","names":["textDocumentField","EditorView","MarkupContent","EditorView","ViewPlugin","StateField","view","ViewPlugin","Facet","view","MarkupContent","StateField","ViewPlugin","view","_a","EditorView","range","links","controller","keymap","EditorState","syntaxHighlighting","autocompletion","EditorView","HighlightStyle","syntaxHighlighting","extension","textDocumentField","EditorView","view"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/themes.ts","../../src/theme-vscode.ts","../../src/language-registry.ts","../../src/signature-help.ts","../../src/markdown.ts","../../src/highlighter.ts","../../src/const.ts","../../src/goto-definition.ts","../../src/extension/tab-size/index.ts","../../src/extension/basic-setup.ts","../../src/create-theme.ts","../../src/transformer.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport universal from '@coze-editor/preset-universal';\nimport {\n scrollBeyondLastLine,\n colorizationBrackets,\n matchingBrackets,\n} from '@coze-editor/extensions';\nimport { scrollbar } from '@coze-editor/extension-scrollbar';\nimport { icons } from '@coze-editor/extension-completion-icons';\nimport { maxHeight, minHeight, height } from '@coze-editor/core-plugins';\nimport {\n api,\n extension,\n type InferEditorAPIFromPlugins,\n option,\n} from '@coze-editor/core';\nimport {\n uriFacet,\n languageIdFacet,\n transformerFacet,\n textDocumentField,\n type Transformer,\n} from '@coze-editor/code-language-shared';\nimport { EditorView, lineNumbers } from '@codemirror/view';\nimport { Prec } from '@codemirror/state';\nimport { foldGutter } from '@codemirror/language';\n\nimport { themes } from './themes';\nimport { vscodeDark, vscodeLight } from './theme-vscode';\nimport { languages } from './language-registry';\nimport { tabSize } from './extension/tab-size';\nimport { basicSetup } from './extension/basic-setup';\nimport createTheme, { type Theme } from './create-theme';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nimport '@coze-editor/extension-scrollbar/dist/index.css';\nimport '@coze-editor/extension-completion-icons/dist/index.css';\n\nconst SVG_FOLD_CLOSE =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619z\" clip-rule=\"evenodd\"/></svg>';\nconst SVG_FOLD_OPEN =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m7.976 10.072l4.357-4.357l.62.618L8.284 11h-.618L3 6.333l.619-.618z\" clip-rule=\"evenodd\"/></svg>';\n\nconst preset = [\n ...universal,\n\n extension([\n basicSetup,\n matchingBrackets,\n // indentGuides(),\n icons,\n textDocumentField,\n\n Prec.low(\n EditorView.theme({\n '.cm-foldGutter .cm-gutterElement': {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-link': {\n textDecoration: 'underline',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-tooltip': {\n borderRadius: '5px',\n fontSize: '12px',\n },\n '.cm-diagnostic-error': {\n borderLeft: 'none',\n },\n '.cm-diagnostic': {\n padding: '5px 10px',\n },\n '.cm-lineNumbers': {\n userSelect: 'none',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul': {\n width: '264px',\n padding: '4px',\n },\n '.cm-completionInfo': {\n minWidth: '200px',\n margin: '0 2px',\n },\n '.cm-tooltip.cm-completionInfo': {\n padding: '6px 9px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-hover p': {\n margin: 0,\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","/* eslint-disable complexity */\n/* eslint-disable max-lines-per-function */\n// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport createFuzzySearch from '@nozbe/microfuzz';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport, syntaxHighlighting } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport gotoDefinition from './goto-definition';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nconst identRe = /^[\\w$]+$/;\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n langaugeExtensions.push(syntaxHighlighting(oneDarkHighlightStyle));\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n EditorView.theme({\n '.cm-completionInfo p': {\n margin: 0,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n color: '#4daafc',\n },\n }),\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n let { items } = completionResult;\n const content = textDocument.getText();\n const charBefore = content.slice(offset - 1, offset);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = offset - 1;\n let query = '';\n\n while (i >= 0) {\n const char = content.slice(i, i + 1);\n\n if (char === '\\n') {\n break;\n }\n\n if (!identRe.test(char) && i + 1 <= offset) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, offset);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => {\n const finalItem = {\n ...v.item,\n data: {\n matches: v.matches.reduce<number[]>((memo, current) => {\n if (!current) {\n return memo;\n }\n\n return [\n ...memo,\n ...current.reduce<number[]>(\n (m, c) => [...m, c[0], c[1] + 1],\n [],\n ),\n ];\n }, []),\n },\n };\n if (!finalItem.textEdit) {\n finalItem.textEdit = {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(offset),\n },\n newText: v.item.label,\n };\n }\n return finalItem;\n });\n } else if (Array.isArray(languageService.triggerCharacters)) {\n // empty items if query is empty\n // e.g. type whitespace in JSON editor\n items = [];\n }\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n let resolveCompletion: Completion['info'] = undefined;\n if (typeof languageService.resolveCompletionItem === 'function') {\n resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n }\n\n const matchesMapping = new WeakMap();\n\n for (const item of items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n matchesMapping.set(completion, item.data?.matches);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n getMatch(completion) {\n return matchesMapping.get(completion) ?? [];\n },\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createOnigurumaEngine } from 'shiki/engine/oniguruma';\nimport { createHighlighterCore } from 'shiki/core';\n\n// const highlighterPromise = createHighlighter({\n// langs: ['md', 'js', 'ts', 'python'],\n// themes: ['github-dark', 'one-dark-pro'],\n// });\n\nconst highlighterPromise = createHighlighterCore({\n langs: [\n () => import('@shikijs/langs/markdown'),\n () => import('@shikijs/langs/javascript'),\n () => import('@shikijs/langs/typescript'),\n () => import('@shikijs/langs/python'),\n () => import('@shikijs/langs/sql'),\n ],\n themes: [\n () => import('@shikijs/themes/github-dark'),\n () => import('@shikijs/themes/one-dark-pro'),\n ],\n engine: createOnigurumaEngine(import('shiki/wasm')),\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from '@coze-editor/utils';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":";AAGA,OAAO,eAAe;AACtB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AACtB,SAAS,WAAW,WAAW,cAAc;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAAA;AAAA,OAEK;AACP,SAAS,cAAAC,aAAY,mBAAmB;AACxC,SAAS,YAAY;AACrB,SAAS,kBAAkB;;;ACtB3B,IAAM,SAAN,MAAa;AAAA,EACX,SAAoC,uBAAO,OAAO,IAAI;AAAA,EAEtD,SAAS,MAAc,OAAkB;AACvC,SAAK,OAAO,IAAI,IAAI;AAAA,EACtB;AAAA,EAEA,IAAI,MAAc;AAChB,WAAO,KAAK,OAAO,IAAI;AAAA,EACzB;AACF;AAEA,IAAM,SAAS,OAAO,IAAI,mBAAmB;AAE7C,IAAI,CAAE,WAAmB,MAAM,GAAG;AAChC,EAAC,WAAmB,MAAM,IAAI,IAAI,OAAO;AAC3C;AAEA,IAAM,SAAU,WAAmB,MAAM;;;ACpBzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB,0BAA0B;AAE5C,IAAM,cAAc;AAAA,EACzB,mBAAmB,eAAe,OAAO,gBAAgB,CAAC;AAAA,EAC1D,WAAW;AACb;AAEO,IAAM,aAAa;AAAA,EACxB,mBAAmB,eAAe,OAAO,eAAe,CAAC;AAAA,EACzD,UAAU;AACZ;;;ACdA;AAAA,EAGE,iBAAAC;AAAA,OAEK;AACP,OAAO,uBAAuB;AAC9B,SAA0B,cAAc;AACxC,SAAoB,aAAa;AACjC;AAAA,EAEE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE,cAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,OAEK;AACP,SAAS,6BAA6B;AACtC;AAAA,EACE;AAAA,EAGA,cAAAC;AAAA,OACK;AACP,SAAS,iBAAiB,sBAAAC,2BAA0B;AACpD;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;;;ACpCP;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EAEE;AAAA,EAGA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACpBP,OAAO,iBAAiB;AACxB,SAAS,cAAc;;;ACDvB,SAAS,6BAA6B;AACtC,SAAS,6BAA6B;AAOtC,IAAM,qBAAqB,sBAAsB;AAAA,EAC/C,OAAO;AAAA,IACL,MAAM,OAAO,yBAAyB;AAAA,IACtC,MAAM,OAAO,2BAA2B;AAAA,IACxC,MAAM,OAAO,2BAA2B;AAAA,IACxC,MAAM,OAAO,uBAAuB;AAAA,IACpC,MAAM,OAAO,oBAAoB;AAAA,EACnC;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,OAAO,6BAA6B;AAAA,IAC1C,MAAM,OAAO,8BAA8B;AAAA,EAC7C;AAAA,EACA,QAAQ,sBAAsB,OAAO,YAAY,CAAC;AACpD,CAAC;;;ACrBM,IAAM,0BAA0B;AAChC,IAAM,uBAAuB;;;AFKpC,IAAM,SAAS,IAAI,OAAO,EACvB;AAAA,EACC,YAAY;AAAA,IACV,MAAM,UAAU,MAAM,MAAM,OAAO;AACjC,YAAM,cAAc,MAAM;AAC1B,cAAQ,MAAM,aAAa,WAAW,MAAM;AAAA,QAC1C;AAAA,QACA,OAAO;AAAA,QACP,cAAc;AAAA,UACZ;AAAA,YACE,IAAI,MAAM;AACR,qBAAO,KAAK,WAAW;AACvB,mBAAK,WAAW,QAAQ;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,EACC,IAAI;AAAA,EACH,UAAU;AAAA,IACR,KAAK,MAAM;AACT,aAAO,aAAa,KAAK,SAAS,EAAE,2BAA2B,KAAK,IAAI,KAAK,KAAK,IAAI;AAAA,IACxF;AAAA,EACF;AACF,CAAC;AAEH,eAAe,eAAe,SAAiB;AAC7C,SAAO,MAAM,OAAO,MAAM,OAAO;AACnC;;;ADZO,IAAM,kCAAkC,YAAY,OAAe,CAAC,CAAC;AAErE,IAAM,yBAAyB,YAAY,OAAsB,CAAC,CAAC;AAE1E,IAAM,qBAAN,MAAyB;AAAA,EACvB;AAAA;AAAA,EAEA;AAAA,EAEA,YAAY,KAAa,QAAuB;AAC9C,QAAI,UAAU,QAAQ,IAAI;AACxB,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC;AACA,SAAK,MAAM;AACX,SAAK,SAAS;AAAA,EAChB;AACF;AAEA,IAAM,4BACJ,WAAW,OAA2B;AAAA,EACpC,QAAQ,MAAM,IAAI,mBAAmB,IAAI,IAAI;AAAA,EAC7C,OAAO,OAAO,IAAI;AAChB,QAAI,EAAE,KAAK,OAAO,IAAI;AACtB,eAAW,UAAU,GAAG,SAAS;AAC/B,UAAI,OAAO,GAAG,+BAA+B,GAAG;AAC9C,cAAM,OAAO;AAAA,MACf,WAAW,OAAO,GAAG,sBAAsB,GAAG;AAC5C,iBAAS,OAAO;AAChB,YAAI,CAAC,QAAQ;AACX,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ,IAAI;AACd,eAAS;AAAA,IACX;AAEA,UAAM,QAAQ,KAAK,KAAK,GAAG,QAAQ,OAAO,GAAG;AAC7C,QAAI,MAAM,QAAQ,OAAO,MAAM,WAAW,QAAQ;AAChD,aAAO;AAAA,IACT;AACA,WAAO,IAAI,mBAAmB,KAAK,MAAM;AAAA,EAC3C;AAAA,EACA,SAAS,OACP,YAAY,QAAQ,CAAC,CAAC,GAAG,WAAS;AAChC,UAAM,MAAM,MAAM,MAAM,yBAAyB;AACjD,UAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAI,QAAQ;AACV,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,MAAM;AACZ,gBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,cAAI,YAAY;AAChB,cAAI,MAAM,UAAU;AACpB,gBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,cAAI,YAAY;AAChB,cAAI,YAAY,GAAG;AACnB,iBAAO,EAAE,IAAI;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC;AACL,CAAC;AAEH,eAAe,oBACb,OACA,MAC6B;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EACnB,IAAI;AAEJ,MACE,OAAO,yBAAyB,YAChC,OAAO,yBAAyB,UAChC;AACA;AAAA,EACF;AAEA,QAAM,kBAAkB,WAAW,oBAAoB;AAEvD,MAAI,CAAC,mBAAmB,CAAC,MAAM,QAAQ,gBAAgB,UAAU,GAAG;AAClE;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,UAAU;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB,WAAW,oBAAoB;AAAA,EACjD;AACA,QAAM,gBAAwB,cAAc,GAAG,gBAAgB,aAAa,IACxE,gBAAgB,cAAc,QAC7B,gBAAgB,iBAAiB;AACtC,QAAM,WACH,MAAM,eAAe,mBAAmB,OAAO,OAAO,CAAC,IACvD,MAAM,eAAe,cAAc,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAE3D,SAAO;AACT;AAEA,SAAS,kBAAkB,UAAkB,WAAkC;AAC7E,MAAI,WAAU,uCAAW,UAAS;AAElC,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAM,CAAC,MAAM,EAAE,IAAI;AACnB,cAAU,SAAS,MAAM,MAAM,EAAE;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,SAAiB,SAAyB;AACpE,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,SAAO,QACJ,MAAM,OAAO,EACb,KAAK,+CAA+C,OAAO,SAAS;AACzE;AAEA,IAAM,qBAA8B,CAACC,UAAqB;AACxD,MAAIA,MAAK,MAAM,MAAM,yBAAyB,EAAE,QAAQ,IAAI;AAC1D,IAAAA,MAAK,SAAS;AAAA,MACZ,SAAS,gCAAgC,GAAG,EAAE;AAAA,IAChD,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAM,sBAA6C;AAAA,EACjD,EAAE,KAAK,UAAU,KAAK,mBAAmB;AAC3C;AAEA,IAAM,oBAAN,MAA+C;AAAA,EAC7C,YAAoBA,OAAkB;AAAlB,gBAAAA;AAAA,EAAmB;AAAA,EACvC,OAAO,QAAoB;AACzB,SACG,OAAO,cAAc,OAAO,iBAC7B,KAAK,KAAK,MAAM,MAAM,yBAAyB,EAAE,QAAQ,IACzD;AACA,kCAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,IACrD,WAAW,OAAO,YAAY;AAC5B,YAAM,OAAO,OAAO,aAAa,OAAO,aAAa,SAAS,CAAC;AAC/D,UAAI,KAAK,YAAY,OAAO,GAAG;AAC7B,eAAO,QAAQ,YAAY,CAAC,QAAQ,MAAM,QAAQ,MAAM,aAAa;AACnE,cACE,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,IAAI,KAC5C,SAAS,SAAS,MAAM,KACxB;AACA,wCAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,UACrD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB,MAAM,OAAiB;AAAA,EAClD,QAAQ,QAAQ;AACd,WAAO,OAAO,OAAO,SAAS,CAAC;AAAA,EACjC;AACF,CAAC;AAED,IAAM,8BAA8B,OAClCA,OACA,UACkB;AAClB,QAAM,kBAAkB,MAAM,MAAM,oBAAoB;AACxD,QAAM,MAAM,MAAM,UAAU,KAAK;AAEjC,MAAI;AACF,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,gCAAgC,GAAG,GAAG,CAAC;AAAA,MACnD,CAAC;AAAA,IACH,CAAC;AACD,UAAM,OAAO,MAAM,gBAAgB,OAAO,GAAG;AAE7C,QAAI,CAAC,QAAQ,CAAC,KAAK,cAAc,KAAK,WAAW,WAAW,GAAG;AAC7D,qBAAe,MAAM;AACnB,QAAAA,MAAK,SAAS;AAAA,UACZ,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAAA,QAC3C,CAAC;AAAA,MACH,CAAC;AAED;AAAA,IACF;AAEA,UAAM,SAAU,MAAM,oBAAoB,OAAO,IAAI,KAAM;AAE3D,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,uBAAuB,GAAG,MAAM,CAAC;AAAA,MAC7C,CAAC;AAAA,IACH,CAAC;AAAA,EACH,SAAS,GAAG;AACV,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAAA,MAC3C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAM,gCAAgC,WAAW,UAAU;AAAA,EACzD,oCAAoC;AAAA,IAClC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA,8CAA8C;AAAA,IAC5C,YAAY;AAAA,EACd;AACF,CAAC;AAED,SAAS,cAAc,iBAAsB;AAC3C,SAAO;AAAA,IACL,qBAAqB,GAAG,eAAe;AAAA,IACvC,WAAW,UAAU,iBAAiB;AAAA,IACtC;AAAA,IACA;AAAA,IACA,OAAO,GAAG,mBAAmB;AAAA,IAC7B,WAAW,iBAAiB;AAAA,MAC1B,KAAK,OAAOA,OAAM;AAChB,YACE,EAAE,MAAM,yBAAyB,YACjC,CAAC,MAAM,cAAc,QAAQ,uBAAuB,GACpD;AAEA,yBAAe,MAAM;AACnB,YAAAA,MAAK,SAAS;AAAA,cACZ,SAAS,gCAAgC,GAAG,EAAE;AAAA,YAChD,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AI3QA,SAAS,4BAA4B;AACrC,SAA0B,cAAAC,mBAAkB;AAC5C,SAAyB,SAAAC,cAAa;AAItC,IAAM,eAAeA,OAAM,OAAO;AAAA,EAChC,SAAS,qBAAqB;AAChC,CAAC;AAED,IAAM,OAAOD,YAAW;AAAA,EACtB,MAAM;AAAA,IACI;AAAA,IAER,YAAYE,OAAkB;AAC5B,eAAS,QAAQ,GAAe;AAC9B,cAAM,SAAS,EAAE;AACjB,YAAI,CAAC,EAAE,WAAW,CAAC,OAAO,QAAQ,aAAa,GAAG;AAChD;AAAA,QACF;AAEA,cAAM,MAAMA,MAAK,YAAY;AAAA,UAC3B,GAAG,EAAE;AAAA,UACL,GAAG,EAAE;AAAA,QACP,CAAC;AAED,YAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,QACF;AAEA,cAAM,UAAUA,MAAK,MAAM,MAAM,YAAY;AAC7C,gBAAQ;AAAA,UACN,MAAAA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAEA,eAAS,iBAAiB,SAAS,SAAS,KAAK;AAEjD,WAAK,UAAU,MAAM;AACnB,iBAAS,oBAAoB,SAAS,SAAS,KAAK;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,UAAU;AACR,UAAI,OAAO,KAAK,YAAY,YAAY;AACtC,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;AAEe,SAAR,eACL,SACa;AACb,SAAO,CAAC,aAAa,GAAG,OAAO,GAAG,IAAI;AACxC;;;ALbA,SAAS,eAAe,UAAqD;AAC3E,MAAIC,eAAc,GAAG,QAAQ,GAAG;AAC9B,UAAM,EAAE,MAAM,IAAI;AAClB,QAAI,SAAS,SAAS,YAAY;AAAA,IAElC;AACA,WAAO;AAAA,EACT,WAAW,MAAM,QAAQ,QAAQ,GAAG;AAClC,WAAO,SAAS,IAAI,OAAK,GAAG,eAAe,CAAC,CAAC;AAAA;AAAA,CAAM,EAAE,KAAK,EAAE;AAAA,EAC9D,WAAW,OAAO,aAAa,UAAU;AACvC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,UAAU;AAEhB,IAAM,oBAAN,MAAwB;AAAA,EACd,YAA4C,CAAC;AAAA,EAE9C,SAAS,IAAY,SAAyB;AACnD,QAAI,CAAC,KAAK,UAAU,EAAE,GAAG;AACvB,WAAK,UAAU,EAAE,IAAI;AAAA,IACvB;AAEA,WAAO,MAAM;AACX,aAAO,KAAK,UAAU,EAAE;AAAA,IAC1B;AAAA,EACF;AAAA,EAEO,IAAI,YAAoC;AAC7C,WAAO,KAAK,UAAU,UAAU;AAAA,EAClC;AAAA,EAEO,aAAa,IAAY;AAjFlC;AAkFI,QAAI,CAAC,KAAK,UAAU,EAAE,GAAG;AACvB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,EAAE,iBAAiB,UAAU,WAAW,IAAI,KAAK,UAAU,EAAE;AAEnE,UAAM,qBAAkC,CAAC;AAEzC,uBAAmB,KAAK,IAAI,gBAAgB,QAAQ,CAAC;AAErD,uBAAmB,KAAKC,oBAAmB,qBAAqB,CAAC;AAEjE,uBAAmB;AAAA,MACjBC,YAAW,OAAO;AAAA,QAChB,OAAO,OAAO;AACZ,cAAI,mDAAiB,yBAAyB;AAC5C,kBAAM,EAAE,aAAa,IAAI,MAAM,MAAM,iBAAiB;AACtD,4BAAgB,wBAAwB;AAAA,cACtC;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,OAAO,QAAQ,IAAI;AACjB,cAAI,GAAG,YAAY;AACjB,gBAAI,mDAAiB,yBAAyB;AAC5C,oBAAM,EAAE,aAAa,IAAI,GAAG,MAAM,MAAM,iBAAiB;AACzD,8BAAgB,wBAAwB;AAAA,gBACtC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,mBAAmB,gBAAgB,cAAc;AACnD,yBAAmB;AAAA,QACjBC,YAAW;AAAA,UACT,MAAM;AAAA,YACJ;AAAA,YACA,YAAYC,OAAkB;AA1H1C,kBAAAC;AA2Hc,uBAAS,uBAAuB;AAC9B,gBAAAD,MAAK,SAAS;AAAA,kBACZ,WAAW;AAAA,gBACb,CAAC;AAAA,cACH;AAEA,eAAAC,MAAA,gBAAiB,WAAjB,gBAAAA,IAAyB;AAAA,gBACvB;AAAA,gBACA;AAAA;AAGF,mBAAK,YAAY,MAAM;AAtIrC,oBAAAA;AAuIgB,iBAAAA,MAAA,gBAAiB,WAAjB,gBAAAA,IAAyB;AAAA,kBACvB;AAAA,kBACA;AAAA;AAAA,cAEJ;AAAA,YACF;AAAA,YAEA,UAAU;AACR,kBAAI,OAAO,KAAK,cAAc,YAAY;AACxC,qBAAK,UAAU;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACAC,YAAW,MAAM;AAAA,UACf,oBAAoB;AAAA,YAClB,UAAU;AAAA,UACZ;AAAA,UACA,4BAA4B;AAAA,YAC1B,SAAS;AAAA,UACX;AAAA,UACA,2BAA2B;AAAA,YACzB,gBAAgB;AAAA,UAClB;AAAA,UACA,6CAA6C;AAAA,YAC3C,iBAAiB;AAAA,UACnB;AAAA,UACA,8CAA8C;AAAA,YAC5C,iBAAiB;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AACA,yBAAmB;AAAA,QACjB;AAAA,UACE,OAAOF,UAAqB;AAzKtC,gBAAAC;AA0KY,kBAAM,EAAE,cAAc,iBAAiB,IACrCD,MAAK,MAAM,MAAM,iBAAiB;AACpC,kBAAM,cAAc,MAAM,gBAAgB,aAAc;AAAA,cACtD;AAAA,YACF,CAAC;AAED,kBAAM,mBAAiC,YACpC,IAAI,gBAAc;AAjLjC,kBAAAC,KAAA;AAkLgB,oBAAM,QAAQ,iBAAiB;AAAA,gBAC7B,MAAM,WAAW;AAAA,gBACjB,IAAI,WAAW;AAAA,cACjB,CAAC;AACD,kBAAI,OAAO;AACT,oBAAI,YAAY;AAChB,qBAAIA,MAAA,WAAW,SAAX,gBAAAA,IAAiB,SAAS,UAAU,cAAc;AACpD,+BAAa;AAAA,gBACf;AACA,qBAAI,gBAAW,SAAX,mBAAiB,SAAS,UAAU,aAAa;AACnD,+BAAa;AAAA,gBACf;AACA,uBAAO;AAAA,kBACL,GAAG;AAAA,kBACH;AAAA,kBACA,GAAG;AAAA,gBACL;AAAA,cACF;AAAA,YACF,CAAC,EACA,OAAO,OAAK,aAAa,CAAC,CAAC;AAE9B,aAAAA,MAAA,gBAAgB,WAAhB,gBAAAA,IAAwB,KAAK,eAAe;AAAA,cAC1C,KAAK,aAAa;AAAA,cAClB,aAAa,iBAAiB,IAAI,QAAM;AAAA,gBACtC,MAAM,EAAE;AAAA,gBACR,IAAI,EAAE;AAAA,gBACN,SAAS,EAAE;AAAA,gBACX,UAAU,EAAE;AAAA,cACd,EAAE;AAAA,YACJ;AAEA,mBAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,SAAO,qBAAgB,YAAhB,mBAAyB,cAAa;AAAA,YAC7C,aAAa,QAAoB;AAC/B,qBAAO,OAAO,aAAa;AAAA,gBAAK,QAC9B,GAAG,YAAY,uBAAuB;AAAA,cACxC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,mDAAiB,SAAS;AAC5B,yBAAmB;AAAA,QACjB,aAAa,OAAOD,OAAM,QAAQ;AAChC,gBAAM,EAAE,cAAc,mBAAmB,IACvCA,MAAK,MAAM,MAAM,iBAAiB;AACpC,gBAAM,SAAS,mBAAmB,GAAG;AAErC,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,SAAS,MAAM,gBAAgB,QAAS;AAAA,YAC5C;AAAA,YACA;AAAA,UACF,CAAC;AAED,cAAI,CAAC,QAAQ;AACX,mBAAO;AAAA,UACT;AAEA,gBAAM,OAAO,MAAM,eAAe,eAAe,MAAM,CAAC;AAExD,gBAAM,OAAOA,MAAK,MAAM,OAAO,MAAM;AAErC,iBAAO;AAAA,YACL,MAAK,6BAAM,SAAQ;AAAA,YACnB,MAAK,6BAAM,OAAM;AAAA,YACjB,SAAS;AACP,oBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,kBAAI,UAAU,IAAI,eAAe;AACjC,kBAAI,YAAY;AAEhB,kBAAI,MAAM,UAAU;AACpB,qBAAO;AAAA,gBACL;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACDE,YAAW,MAAM;AAAA,UACf,oBAAoB;AAAA,YAClB,OAAO;AAAA,UACT;AAAA,UACA,sBAAsB;AAAA,YACpB,QAAQ;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,iBAAiB;AACpC,yBAAmB;AAAA,QACjB,cAAc,OAAO,OAAoB,QAAgB;AACvD,gBAAM,EAAE,cAAc,kBAAkB,IACtC,MAAM,MAAM,iBAAiB;AAC/B,gBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,gBAAM,SAAS,+BAAO;AAEtB,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,SAAS,MAAM,gBAAgB,gBAAiB;AAAA,YACpD;AAAA,YACA;AAAA,UACF,CAAC;AAED,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,YAAY;AAC/B,yBAAmB;AAAA,QACjBA,YAAW,MAAM;AAAA,UACf,wBAAwB;AAAA,YACtB,QAAQ;AAAA,UACV;AAAA,UACA,6BAA6B;AAAA,YAC3B,gBAAgB;AAAA,YAChB,OAAO;AAAA,UACT;AAAA,QACF,CAAC;AAAA,QACD,eAAe;AAAA,UACb,UAAU;AAAA,YACR,eAAgB,EAAE,OAAO,KAAK,MAAAF,MAAK,GAAG;AApTlD,kBAAAC;AAqTc,oBAAM,EAAE,cAAc,kBAAkB,kBAAkB,IACxD,MAAM,MAAM,iBAAiB;AAC/B,oBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,oBAAM,SAAS,+BAAO;AAEtB,kBAAI,OAAO,WAAW,UAAU;AAC9B,uBAAO;AAAA,cACT;AAEA,oBAAM,mBAAmB,MAAM,gBAAgB,WAAY;AAAA,gBACzD;AAAA,gBACA;AAAA,cACF,CAAC;AAED,kBACE,CAAC,oBACD,CAAC,MAAM,QAAQ,iBAAiB,KAAK,KACrC,iBAAiB,MAAM,WAAW,GAClC;AACA,uBAAO;AAAA,cACT;AAEA,kBAAI,EAAE,MAAM,IAAI;AAChB,oBAAM,UAAU,aAAa,QAAQ;AACrC,oBAAM,aAAa,QAAQ,MAAM,SAAS,GAAG,MAAM;AACnD,oBAAM,oBAAoB,gBAAgB,qBAAqB,CAAC;AAChE,kBAAI,CAAC,kBAAkB,SAAS,UAAU,GAAG;AAC3C,oBAAI,IAAI,SAAS;AACjB,oBAAI,QAAQ;AAEZ,uBAAO,KAAK,GAAG;AACb,wBAAM,OAAO,QAAQ,MAAM,GAAG,IAAI,CAAC;AAEnC,sBAAI,SAAS,MAAM;AACjB;AAAA,kBACF;AAEA,sBAAI,CAAC,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ;AAC1C;AAAA,kBACF;AACA;AAAA,gBACF;AAEA,wBAAQ,QAAQ,MAAM,IAAI,GAAG,MAAM;AAEnC,oBAAI,OAAO;AACT,wBAAM,cAAc,kBAAkB,OAAO;AAAA,oBAC3C,KAAK;AAAA,kBACP,CAAC;AACD,0BAAQ,YAAY,KAAK,EAAE,IAAI,OAAK;AAClC,0BAAM,YAAY;AAAA,sBAChB,GAAG,EAAE;AAAA,sBACL,MAAM;AAAA,wBACJ,SAAS,EAAE,QAAQ,OAAiB,CAAC,MAAM,YAAY;AACrD,8BAAI,CAAC,SAAS;AACZ,mCAAO;AAAA,0BACT;AAEA,iCAAO;AAAA,4BACL,GAAG;AAAA,4BACH,GAAG,QAAQ;AAAA,8BACT,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AAAA,8BAC/B,CAAC;AAAA,4BACH;AAAA,0BACF;AAAA,wBACF,GAAG,CAAC,CAAC;AAAA,sBACP;AAAA,oBACF;AACA,wBAAI,CAAC,UAAU,UAAU;AACvB,gCAAU,WAAW;AAAA,wBACnB,OAAO;AAAA,0BACL,OAAO,aAAa,WAAW,IAAI,CAAC;AAAA,0BACpC,KAAK,aAAa,WAAW,MAAM;AAAA,wBACrC;AAAA,wBACA,SAAS,EAAE,KAAK;AAAA,sBAClB;AAAA,oBACF;AACA,2BAAO;AAAA,kBACT,CAAC;AAAA,gBACH,WAAW,MAAM,QAAQ,gBAAgB,iBAAiB,GAAG;AAG3D,0BAAQ,CAAC;AAAA,gBACX;AAAA,cACF;AAEA,oBAAM,oBAAkC,CAAC;AAEzC,oBAAM,UAAU,oBAAI,QAAQ;AAC5B,kBAAI,oBAAwC;AAC5C,kBAAI,OAAO,gBAAgB,0BAA0B,YAAY;AAC/D,oCAAoB;AAAA,kBAClBD;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAEA,oBAAM,iBAAiB,oBAAI,QAAQ;AAEnC,yBAAW,QAAQ,OAAO;AACxB,sBAAM,EAAE,MAAM,OAAO,UAAU,aAAa,IAAI;AAEhD,sBAAM,aAAyB;AAAA,kBAC7B;AAAA,kBACA,MAAM,8BAA8B,IAAI;AAAA,kBACxC,QAAQ,KAAK,UAAU;AAAA,gBACzB;AAEA,wBAAQ,IAAI,YAAY,IAAI;AAC5B,+BAAe,IAAI,aAAYC,MAAA,KAAK,SAAL,gBAAAA,IAAW,OAAO;AAEjD,oBAAI,UAAU;AACZ,wBAAME,SACJ,WAAW,WAAW,SAAS,QAAQ,SAAS;AAClD,wBAAM,OAAO,aAAa,SAASA,OAAM,KAAK;AAC9C,wBAAM,KAAK,aAAa,SAASA,OAAM,GAAG;AAE1C,wBAAM,SAAS,iBAAiB;AAAA,oBAC9B;AAAA,oBACA;AAAA,kBACF,CAAC;AAED,sBAAI,CAAC,QAAQ;AACX;AAAA,kBACF;AAEA,wBAAM,SAAS,SAAS;AACxB,wBAAM,EAAE,iBAAiB,IAAI;AAE7B,6BAAW,QAAQ,CAAAH,UAAQ;AACzB,wBACE,qBACC,GACD;AACA;AAAA,wBACE;AAAA,0BACE,OACG,QAAQ,YAAY,QAAQ,EAC5B,QAAQ,SAAS,GAAG;AAAA,wBACzB;AAAA,sBACF,EAAEA,OAAM,YAAY,OAAO,MAAM,OAAO,EAAE;AAAA,oBAC5C,OAAO;AACL,sBAAAA,MAAK;AAAA,wBACH;AAAA,0BACEA,MAAK;AAAA,0BACL;AAAA,0BACA,OAAO;AAAA,0BACP,OAAO;AAAA,wBACT;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,WAAW,cAAc;AACvB,6BAAW,QAAQ;AAAA,gBACrB;AAEA,2BAAW,OAAO;AAElB,kCAAkB,KAAK,UAAU;AAAA,cACnC;AAEA,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,QAAQ;AAAA,gBACR,SAAS,YAAY;AACnB,yBAAO,eAAe,IAAI,UAAU,KAAK,CAAC;AAAA,gBAC5C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,gBAAgB;AACnC,yBAAmB;AAAA,QACjB,eAAe,OAAO,EAAE,KAAK,MAAAA,MAAK,MAAM;AACtC,gBAAM,EAAE,cAAc,kBAAkB,kBAAkB,IACxDA,MAAK,MAAM,MAAM,iBAAiB;AACpC,gBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,gBAAM,SAAS,+BAAO;AAEtB,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,cAAc,MAAM,gBAAgB,eAAgB;AAAA,YACxD;AAAA,YACA;AAAA,UACF,CAAC;AAED,cAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,YAAY,WAAW,GAAG;AAC3D;AAAA,UACF;AAEA,gBAAM,aAAa,YAAY,CAAC;AAEhC,gBAAM,SAAS,iBAAiB;AAAA,YAC9B,MAAM,WAAW;AAAA,YACjB,IAAI,WAAW;AAAA,UACjB,CAAC;AAED,cAAI,CAAC,QAAQ;AACX;AAAA,UACF;AAEA,UAAAA,MAAK,SAAS;AAAA,YACZ,SAASE,YAAW,eAAe,OAAO,MAAM;AAAA,cAC9C,GAAG;AAAA,YACL,CAAC;AAAA,YACD,WAAW,gBAAgB,MAAM,OAAO,MAAM,OAAO,EAAE;AAAA,UACzD,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,WAAW;AAC9B,yBAAmB;AAAA,QACjB,MAAM,OAAMF,UAAQ;AAClB,gBAAM,EAAE,cAAc,iBAAiB,IACrCA,MAAK,MAAM,MAAM,iBAAiB;AACpC,gBAAMI,SAAQ,MAAM,gBAAgB,UAAW;AAAA,YAC7C;AAAA,UACF,CAAC;AAED,iBAAOA,OACJ,IAAI,UAAQ;AACX,kBAAM,QAAQ,iBAAiB,KAAK,KAAK;AACzC,gBAAI,CAAC,OAAO;AACV;AAAA,YACF;AACA,mBAAO;AAAA,cACL;AAAA,cACA,QAAQ,KAAK;AAAA,YACf;AAAA,UACF,CAAC,EACA,OAAO,OAAK,OAAO,CAAC,CAAC;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,YAAY;AACd,yBAAmB,KAAK,UAAU;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,wBACPJ,OACA,iBACA,SACA;AACA,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,aAAa,IAAI,gBAAgB;AAErC,WAAS,QAAQK,aAA6B;AAC5C,QAAI,CAACA,YAAW,OAAO,SAAS;AAC9B,UAAI,MAAM,UAAU;AAAA,IACtB;AAAA,EACF;AAEA,WAAS,QAAQ,MAAcA,aAA6B;AAC1D,QAAI,CAACA,YAAW,OAAO,SAAS;AAC9B,UAAI,YAAY;AAChB,UAAI,MAAM,UAAU;AAAA,IACtB;AAAA,EACF;AAEA,SAAO,CAAC,eAA2B;AACjC,eAAW,MAAM;AACjB,iBAAa,IAAI,gBAAgB;AAEjC,UAAM,oBAAoB;AAE1B,KAAC,YAAY;AACX,YAAM,iBAAiB,QAAQ,IAAI,UAAU;AAC7C,UACE,CAACL,SACD,CAAC,kBACD,OAAO,gBAAgB,0BAA0B,YACjD;AACA,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,EAAE,cAAc,iBAAiB,IACrCA,MAAK,MAAM,MAAM,iBAAiB;AAEpC,YAAM,SAAS,iBAAiB;AAAA,QAC9B,MAAMA,MAAK,MAAM,UAAU,KAAK;AAAA,QAChC,IAAIA,MAAK,MAAM,UAAU,KAAK;AAAA,MAChC,CAAC;AAED,UAAI,CAAC,QAAQ;AACX,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,UAAU,MAAM,gBAAgB;AAAA,QACpC;AAAA,UACE;AAAA,UACA,QAAQ,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAEA,UAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,eAAe;AAC7C,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,sBAAsBJ,eAAc,GAAG,QAAQ,aAAa,IAC9D,MAAM,eAAe,QAAQ,cAAc,KAAK,IAC/C,QAAQ,iBAAiB;AAE9B,YAAM,OAAO;AAAA,QACX,oDACE,QAAQ,UAAU,EACpB;AAAA,QACA,QAAQ,gBAAgB,WAAW;AAAA,QACnC,QAAQ,mBAAmB;AAAA,MAC7B,EAAE,KAAK,EAAE;AAET,UAAI,CAAC,kBAAkB,OAAO,SAAS;AACrC,gBAAQ,MAAM,iBAAiB;AAAA,MACjC;AAAA,IACF,GAAG;AAEH,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,GAA6B;AACjD,SAAO,QAAQ,CAAC;AAClB;AAEA,SAAS,OAAO,GAAuB;AACrC,SAAO,QAAQ,CAAC;AAClB;AAEA,SAAS,UAAU,KAAa;AAC9B,MAAI,CAAC,IAAI,SAAS,IAAI,GAAG;AACvB,WAAO,GAAG,GAAG;AAAA,EACf;AAEA,SAAO;AACT;AAEA,SAAS,8BACP,MACQ;AACR,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,YAAY,IAAI,kBAAkB;;;AM9tB/C,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AACpB,IAAM,UAAU,CAAC,OAAO,MAAM;AAAA,EACnC,YAAY,QAAQ,GAAG,IAAI;AAAA,EAC3B,WAAW,GAAG,IAAI,OAAO,IAAI,CAAC;AAChC;;;ACLA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAU;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAAC,oBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA,kBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,IAAM,cAAc,MAAM;AAAA,EAC/B,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AAAA,EACXF,aAAY,wBAAwB,GAAG,IAAI;AAAA,EAC3C,cAAc;AAAA,EACdC,oBAAmB,uBAAuB,EAAE,UAAU,KAAK,CAAC;AAAA,EAC5D,cAAc;AAAA,EACdC,gBAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpBH,QAAO,GAAG;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA,EAAE,KAAK,OAAO,KAAK,iBAAiB;AAAA,EACtC,CAAC;AACH,GAAG;;;ACnDH,SAAS,cAAAI,mBAAkB;AAE3B;AAAA,EACE,kBAAAC;AAAA,EAEA,sBAAAC;AAAA,OACK;AA6FP,IAAM,cAAc,CAAC,EAAE,SAAS,UAAU,OAAO,MAAwB;AACvE,QAAM,gBAAgB,SAAS,iBAAiB,CAAC,GAAG;AAAA,IAClD,CAAC,MAAM,OAAO,WAAW;AAAA,MACvB,GAAG;AAAA,MACH,CAAC,yBAAyB,KAAK,EAAE,GAAG,EAAE,MAAM;AAAA,MAC5C,CAAC,yBAAyB,KAAK,SAAS,GAAG,EAAE,MAAM;AAAA,IACrD;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,eAAe;AAAA,IACnB,eAAe,SAAS,WAAW,CAAC;AAAA,IACpC,4BAA4B,SAAS,qBAAqB,CAAC;AAAA,IAC3D,iBAAiB,SAAS,QAAQ;AAAA,MAChC,OAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,kBAAkB;AAAA,IACtB,iDACE,SAAS,0BAA0B,CAAC;AAAA,IACtC,6DACE,SAAS,uBAAuB,CAAC;AAAA,IACnC,sBAAsB,SAAS,sBAAsB,CAAC;AAAA,IACtD,uBAAuB,SAAS,uBAAuB,CAAC;AAAA,IACxD,wBAAwB,SAAS,wBAAwB,CAAC;AAAA,IAC1D,sBAAsB,SAAS,sBAAsB,CAAC;AAAA,EACxD;AAEA,QAAM,QAAQF,YAAW;AAAA,IACvB;AAAA,MACE,KAAK;AAAA,QACH,iBAAiB,SAAS;AAAA,QAC1B,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,eAAe;AAAA,QACb,YAAY,SAAS;AAAA,MACvB;AAAA,MACA,8BAA8B;AAAA,QAC5B,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,8HACE;AAAA,QACE,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACF,kBAAkB;AAAA,QAChB,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,eAAe;AAAA,QACb,iBAAiB,SAAS;AAAA,QAC1B,OAAO,SAAS;AAAA,QAChB,kBAAkB,SAAS;AAAA,QAC3B,kBAAkB,GAAG,SAAS,iBAAiB;AAAA,MACjD;AAAA,MACA,wBAAwB;AAAA,QACtB,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA;AAAA,MACE,MAAM,YAAY;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,iBAAiBC,gBAAe,OAAO,MAAM;AACnD,QAAME,aAAY,CAAC,OAAOD,oBAAmB,cAAc,CAAC;AAE5D,SAAOC;AACT;AAEA,IAAO,uBAAQ;;;AX5If,OAAO;AACP,OAAO;;;AYnCP,SAAS,YAAY;AAGrB,IAAM,qBACJ,CAAC,cACD,CAAC,WAAmB;AAClB,QAAM,OAAO,UAAU,IAAI,KAAK,MAAM,CAAC;AACvC,SAAO;AAAA,IACL,MAAM,KAAK,SAAS;AAAA,IACpB,SAAS;AAAA,MACP,kBAAkB,KAAK,iBAAiB,KAAK,IAAI;AAAA,MACjD,mBAAmB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACnD,mBAAmB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACnD,oBAAoB,KAAK,mBAAmB,KAAK,IAAI;AAAA,IACvD;AAAA,EACF;AACF;;;AZyMF,SAAS,YAAY;AApLrB,IAAM,iBACJ;AACF,IAAM,gBACJ;AAEF,IAAM,SAAS;AAAA,EACb,GAAG;AAAA,EAEH,UAAU;AAAA,IACR;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACAC;AAAA,IAEA,KAAK;AAAA,MACHC,YAAW,MAAM;AAAA,QACf,oCAAoC;AAAA,UAClC,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,KAAK;AAAA,MACHA,YAAW,MAAM;AAAA,QACf,YAAY;AAAA,UACV,gBAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,KAAK;AAAA,MACHA,YAAW,MAAM;AAAA,QACf,eAAe;AAAA,UACb,cAAc;AAAA,UACd,UAAU;AAAA,QACZ;AAAA,QACA,wBAAwB;AAAA,UACtB,YAAY;AAAA,QACd;AAAA,QACA,kBAAkB;AAAA,UAChB,SAAS;AAAA,QACX;AAAA,QACA,mBAAmB;AAAA,UACjB,YAAY;AAAA,QACd;AAAA,QACA,4CAA4C;AAAA,UAC1C,OAAO;AAAA,UACP,SAAS;AAAA,QACX;AAAA,QACA,sBAAsB;AAAA,UACpB,UAAU;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,QACA,iCAAiC;AAAA,UAC/B,SAAS;AAAA,QACX;AAAA,QACA,mCAAmC;AAAA,UACjC,SAAS;AAAA,QACX;AAAA,QACA,gEAAgE;AAAA,UAC9D,OAAO;AAAA,QACT;AAAA,QACA,iDAAiD;AAAA,UAC/C,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,mEAAmE;AAAA,UACjE,WAAW;AAAA,QACb;AAAA,QACA,sBAAsB;AAAA,UACpB,UAAU;AAAA,UACV,SAAS;AAAA,UACT,SAAS;AAAA,QACX;AAAA,QACA,uBAAuB;AAAA,UACrB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,cAAc;AAAA,QAChB;AAAA,QACA,wBAAwB;AAAA,UACtB,UAAU;AAAA,UACV,UAAU;AAAA,UACV,cAAc;AAAA,UACd,WAAW;AAAA,UACX,WAAW;AAAA,QACb;AAAA,QACA,4BAA4B;AAAA,UAC1B,cAAc;AAAA,QAChB;AAAA,QACA,qBAAqB;AAAA,UACnB,WAAW;AAAA,UACX,WAAW;AAAA,UACX,WAAW;AAAA,QACb;AAAA,QACA,uBAAuB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,yCAAyC;AAAA,UACvC,cAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EAED,OAAO,WAAW,OAAO;AAAA,EACzB,OAAO,UAAU,MAAM;AAAA,EACvB,OAAO,aAAa,SAAS;AAAA,EAC7B,OAAO,aAAa,SAAS;AAAA,EAC7B;AAAA,IAAO;AAAA,IAAwB,CAAC,QAC9B,MAAM,qBAAqB,IAAI,CAAC;AAAA,EAClC;AAAA,EACA,OAAO,OAAO,CAAC,OAAe,SAAS,GAAG,EAAE,CAAC;AAAA,EAC7C,OAAO,SAAS,CAAC,cAAsB,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC;AAAA,EAClE,OAAO,cAAc,CAAC,OAAe;AAAA,IACnC,gBAAgB,GAAG,EAAE;AAAA,IACrB,UAAU,aAAa,EAAE;AAAA,EAC3B,CAAC;AAAA,EACD;AAAA,IAAO;AAAA,IAAe,CAAC,gBACrB,iBAAiB,GAAG,WAAW;AAAA,EACjC;AAAA,EACA,OAAO,oBAAoB,CAAC,SAAS,SAAU,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAE;AAAA,EAC3E;AAAA,IAAO;AAAA,IAAqB,CAAC,SAAS,SACpC,SACI,YAAY;AAAA,MACV,kBAAkB;AAAA;AAAA,QAEhB,WAAW,CAACC,OAAM,MAAM,UAAiB;AACvC,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,IACD,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IAAO;AAAA,IAAc,CAAC,SAAS,SAC7B,SACI,WAAW;AAAA,MACT,UAAU,MAAe;AACvB,cAAM,MAAM,SAAS,cAAc,KAAK;AACxC,YAAI,YAAY,OAAO,gBAAgB;AACvC,eAAO;AAAA,MACT;AAAA,MACA,kBAAkB;AAAA;AAAA,QAEhB,WAAW,CAACA,OAAM,MAAM,UAAiB;AACvC,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,IACD,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IAAO;AAAA,IAAoB,CAAC,SAAS,SACnC,SAAS,uBAAuB,CAAC;AAAA,EACnC;AAAA,EAEA,IAAI,YAAY,CAAC,EAAE,MAAAA,MAAK,MAAM,MAAM;AAClC,IAAAA,MAAK,SAAS;AAAA,MACZ,WAAW;AAAA,IACb,CAAC;AAAA,EACH,CAAC;AACH;AAIA,OAAO,SAAS,UAAU,WAAW;AACrC,OAAO,SAAS,SAAS,UAAU;AAQnC,IAAO,gBAAQ;","names":["textDocumentField","EditorView","MarkupContent","EditorView","ViewPlugin","StateField","syntaxHighlighting","view","ViewPlugin","Facet","view","MarkupContent","syntaxHighlighting","StateField","ViewPlugin","view","_a","EditorView","range","links","controller","keymap","EditorState","syntaxHighlighting","autocompletion","EditorView","HighlightStyle","syntaxHighlighting","extension","textDocumentField","EditorView","view"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import * as _codemirror_view from '@codemirror/view';
|
|
2
2
|
import * as _codemirror_state from '@codemirror/state';
|
|
3
3
|
import { Extension } from '@codemirror/state';
|
|
4
|
-
import * as _coze_editor_core_plugins from '@coze-editor/core-plugins';
|
|
5
4
|
import * as _coze_editor_core from '@coze-editor/core';
|
|
6
5
|
import { InferEditorAPIFromPlugins } from '@coze-editor/core';
|
|
7
6
|
import { LanguageConfig, Transformer } from '@coze-editor/code-language-shared';
|
|
8
7
|
export { Transformer } from '@coze-editor/code-language-shared';
|
|
9
8
|
import { TagStyle } from '@codemirror/language';
|
|
10
|
-
import { Text } from '
|
|
9
|
+
import { Text } from '@coze-editor/utils';
|
|
11
10
|
export { tags } from '@lezer/highlight';
|
|
12
11
|
|
|
13
12
|
declare const themes: any;
|
|
@@ -90,7 +89,14 @@ declare const createTheme: ({ variant, settings, styles }: Theme) => Extension;
|
|
|
90
89
|
|
|
91
90
|
declare const transformerCreator: (processor: (text: Text) => Text) => Transformer;
|
|
92
91
|
|
|
93
|
-
declare const preset: (_coze_editor_core.ExtensionPluginSpec | _coze_editor_core.OptionPluginSpec<"fontSize", number> | _coze_editor_core.OptionPluginSpec<"placeholder", string | HTMLElement> | _coze_editor_core.OptionPluginSpec<"readOnly", boolean> | _coze_editor_core.OptionPluginSpec<"editable", boolean> | _coze_editor_core.OptionPluginSpec<"lineWrapping", boolean> | _coze_editor_core.OptionPluginSpec<"height", string | number> | _coze_editor_core.OptionPluginSpec<"minHeight", string | number> | _coze_editor_core.OptionPluginSpec<"maxHeight", string | number> | _coze_editor_core.APIPluginSpec<"getValue", [], string> | _coze_editor_core.APIPluginSpec<"setValue", [value: string], void> | _coze_editor_core.APIPluginSpec<"replaceText", [options:
|
|
92
|
+
declare const preset: (_coze_editor_core.ExtensionPluginSpec | _coze_editor_core.OptionPluginSpec<"fontSize", number> | _coze_editor_core.OptionPluginSpec<"placeholder", string | HTMLElement> | _coze_editor_core.OptionPluginSpec<"readOnly", boolean> | _coze_editor_core.OptionPluginSpec<"editable", boolean> | _coze_editor_core.OptionPluginSpec<"lineWrapping", boolean> | _coze_editor_core.OptionPluginSpec<"height", string | number> | _coze_editor_core.OptionPluginSpec<"minHeight", string | number> | _coze_editor_core.OptionPluginSpec<"maxHeight", string | number> | _coze_editor_core.APIPluginSpec<"getValue", [], string> | _coze_editor_core.APIPluginSpec<"setValue", [value: string], void> | _coze_editor_core.APIPluginSpec<"replaceText", [options: {
|
|
93
|
+
from: number;
|
|
94
|
+
to: number;
|
|
95
|
+
text: string;
|
|
96
|
+
cursorOffset?: number;
|
|
97
|
+
scrollIntoView?: boolean;
|
|
98
|
+
userEvent?: string;
|
|
99
|
+
}], void> | _coze_editor_core.APIPluginSpec<"getCursorPosition", [], number> | _coze_editor_core.APIPluginSpec<"setCursorPosition", [pos: number], void> | _coze_editor_core.APIPluginSpec<"focus", [], void> | _coze_editor_core.APIPluginSpec<"blur", [], void> | _coze_editor_core.APIPluginSpec<"disableKeybindings", [keys: string[]], void> | _coze_editor_core.APIPluginSpec<"updateASTDecorations", [], void> | _coze_editor_core.APIPluginSpec<"undo", [], void> | _coze_editor_core.APIPluginSpec<"redo", [], void> | _coze_editor_core.APIPluginSpec<"transformTextInSelection", [transformer: (text: string) => string | undefined], void> | _coze_editor_core.APIPluginSpec<"getSelection", [], {
|
|
94
100
|
from: number;
|
|
95
101
|
to: number;
|
|
96
102
|
anchor: number;
|