@coze-editor/preset-code 0.1.0-alpha.270604 → 0.1.0-alpha.2b6c24
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 +99 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +115 -28
- package/dist/index.js.map +1 -1
- package/package.json +15 -12
package/dist/esm/index.js
CHANGED
|
@@ -61,6 +61,7 @@ import {
|
|
|
61
61
|
MarkupContent as MarkupContent2
|
|
62
62
|
} from "vscode-languageserver-types";
|
|
63
63
|
import shiki from "codemirror-shiki";
|
|
64
|
+
import createFuzzySearch from "@nozbe/microfuzz";
|
|
64
65
|
import { linter } from "@coze-editor/extension-lint";
|
|
65
66
|
import { links } from "@coze-editor/extension-links";
|
|
66
67
|
import {
|
|
@@ -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,7 +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
|
-
if (id === "typescript" || id === "python") {
|
|
436
|
+
if (id === "typescript" || id === "python" || id === "sql") {
|
|
424
437
|
langaugeExtensions.push(
|
|
425
438
|
shiki({
|
|
426
439
|
highlighter: highlighterPromise,
|
|
@@ -611,9 +624,19 @@ var LanguagesRegistry = class {
|
|
|
611
624
|
}
|
|
612
625
|
if (languageService == null ? void 0 : languageService.doComplete) {
|
|
613
626
|
langaugeExtensions.push(
|
|
627
|
+
EditorView2.theme({
|
|
628
|
+
".cm-completionInfo p": {
|
|
629
|
+
margin: 0
|
|
630
|
+
},
|
|
631
|
+
".cm-completionMatchedText": {
|
|
632
|
+
textDecoration: "none",
|
|
633
|
+
color: "#4daafc"
|
|
634
|
+
}
|
|
635
|
+
}),
|
|
614
636
|
autocompletion({
|
|
615
637
|
override: [
|
|
616
638
|
async function({ state, pos, view: view2 }) {
|
|
639
|
+
var _a2;
|
|
617
640
|
const { textDocument, originalRangeFor, generatedRangeFor } = state.field(textDocumentField);
|
|
618
641
|
const range = generatedRangeFor({ from: pos, to: pos });
|
|
619
642
|
const offset = range == null ? void 0 : range.from;
|
|
@@ -627,14 +650,68 @@ var LanguagesRegistry = class {
|
|
|
627
650
|
if (!completionResult || !Array.isArray(completionResult.items) || completionResult.items.length === 0) {
|
|
628
651
|
return null;
|
|
629
652
|
}
|
|
653
|
+
let { items } = completionResult;
|
|
654
|
+
const content = state.doc.toString();
|
|
655
|
+
const charBefore = content.slice(pos - 1, pos);
|
|
656
|
+
const triggerCharacters = languageService.triggerCharacters ?? [];
|
|
657
|
+
if (!triggerCharacters.includes(charBefore)) {
|
|
658
|
+
let i = pos - 1;
|
|
659
|
+
let query = "";
|
|
660
|
+
while (i >= 0) {
|
|
661
|
+
const char = content.slice(i, i + 1);
|
|
662
|
+
if (char === "\n") {
|
|
663
|
+
break;
|
|
664
|
+
}
|
|
665
|
+
if (!identRe.test(char) && i + 1 <= pos) {
|
|
666
|
+
break;
|
|
667
|
+
}
|
|
668
|
+
i--;
|
|
669
|
+
}
|
|
670
|
+
query = content.slice(i + 1, pos);
|
|
671
|
+
if (query) {
|
|
672
|
+
const fuzzySearch = createFuzzySearch(items, {
|
|
673
|
+
key: "label"
|
|
674
|
+
});
|
|
675
|
+
items = fuzzySearch(query).map((v) => ({
|
|
676
|
+
...v.item,
|
|
677
|
+
textEdit: {
|
|
678
|
+
range: {
|
|
679
|
+
start: textDocument.positionAt(i + 1),
|
|
680
|
+
end: textDocument.positionAt(pos)
|
|
681
|
+
},
|
|
682
|
+
newText: v.item.label
|
|
683
|
+
},
|
|
684
|
+
data: {
|
|
685
|
+
matches: v.matches.reduce((memo, current) => {
|
|
686
|
+
if (!current) {
|
|
687
|
+
return memo;
|
|
688
|
+
}
|
|
689
|
+
return [
|
|
690
|
+
...memo,
|
|
691
|
+
...current.reduce(
|
|
692
|
+
(m, c) => [...m, c[0], c[1] + 1],
|
|
693
|
+
[]
|
|
694
|
+
)
|
|
695
|
+
];
|
|
696
|
+
}, [])
|
|
697
|
+
}
|
|
698
|
+
}));
|
|
699
|
+
} else if (Array.isArray(languageService.triggerCharacters)) {
|
|
700
|
+
items = [];
|
|
701
|
+
}
|
|
702
|
+
}
|
|
630
703
|
const completionOptions = [];
|
|
631
704
|
const mapping = /* @__PURE__ */ new WeakMap();
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
705
|
+
let resolveCompletion = void 0;
|
|
706
|
+
if (typeof languageService.resolveCompletionItem === "function") {
|
|
707
|
+
resolveCompletion = createResolveCompletion(
|
|
708
|
+
view2,
|
|
709
|
+
languageService,
|
|
710
|
+
mapping
|
|
711
|
+
);
|
|
712
|
+
}
|
|
713
|
+
const matchesMapping = /* @__PURE__ */ new WeakMap();
|
|
714
|
+
for (const item of items) {
|
|
638
715
|
const { kind, label, textEdit, textEditText } = item;
|
|
639
716
|
const completion = {
|
|
640
717
|
label,
|
|
@@ -642,6 +719,7 @@ var LanguagesRegistry = class {
|
|
|
642
719
|
detail: item.detail ?? ""
|
|
643
720
|
};
|
|
644
721
|
mapping.set(completion, item);
|
|
722
|
+
matchesMapping.set(completion, (_a2 = item.data) == null ? void 0 : _a2.matches);
|
|
645
723
|
if (textEdit) {
|
|
646
724
|
const range2 = "range" in textEdit ? textEdit.range : textEdit.replace;
|
|
647
725
|
const from = textDocument.offsetAt(range2.start);
|
|
@@ -682,7 +760,10 @@ var LanguagesRegistry = class {
|
|
|
682
760
|
return {
|
|
683
761
|
from: pos,
|
|
684
762
|
options: completionOptions,
|
|
685
|
-
filter: false
|
|
763
|
+
filter: false,
|
|
764
|
+
getMatch(completion) {
|
|
765
|
+
return matchesMapping.get(completion) ?? [];
|
|
766
|
+
}
|
|
686
767
|
};
|
|
687
768
|
}
|
|
688
769
|
]
|
|
@@ -1075,6 +1156,9 @@ var preset = [
|
|
|
1075
1156
|
minWidth: "200px",
|
|
1076
1157
|
margin: "0 2px"
|
|
1077
1158
|
},
|
|
1159
|
+
".cm-tooltip.cm-completionInfo": {
|
|
1160
|
+
padding: "6px 9px"
|
|
1161
|
+
},
|
|
1078
1162
|
".cm-completionInfo p:last-child": {
|
|
1079
1163
|
display: "inline-block"
|
|
1080
1164
|
},
|
|
@@ -1116,6 +1200,9 @@ var preset = [
|
|
|
1116
1200
|
maxHeight: "360px",
|
|
1117
1201
|
wordBreak: "break-word"
|
|
1118
1202
|
},
|
|
1203
|
+
".cm-tooltip-hover p": {
|
|
1204
|
+
margin: 0
|
|
1205
|
+
},
|
|
1119
1206
|
".cm-tooltip-section:not(:first-child)": {
|
|
1120
1207
|
"border-top": "solid 0.5px #666666ab"
|
|
1121
1208
|
}
|
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","// 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 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 {\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\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 // TODO: use shiki for all languages\n // Only use shiki for TypeScript, Python, SQL temporarily\n if (id === 'typescript' || id === 'python' || id === 'sql') {\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 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 = state.doc.toString();\n const charBefore = content.slice(pos - 1, pos);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = pos - 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 <= pos) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, pos);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => ({\n ...v.item,\n textEdit: {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(pos),\n },\n newText: v.item.label,\n },\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 } 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 '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"]}
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ var import_extensions = require("@coze-editor/extensions");
|
|
|
42
42
|
var import_extension_scrollbar = require("@coze-editor/extension-scrollbar");
|
|
43
43
|
var import_extension_completion_icons = require("@coze-editor/extension-completion-icons");
|
|
44
44
|
var import_core_plugins = require("@coze-editor/core-plugins");
|
|
45
|
-
var
|
|
45
|
+
var import_core2 = require("@coze-editor/core");
|
|
46
46
|
var import_code_language_shared2 = require("@coze-editor/code-language-shared");
|
|
47
47
|
var import_view6 = require("@codemirror/view");
|
|
48
48
|
var import_state6 = require("@codemirror/state");
|
|
@@ -79,6 +79,7 @@ var vscodeDark = [
|
|
|
79
79
|
// src/language-registry.ts
|
|
80
80
|
var import_vscode_languageserver_types2 = require("vscode-languageserver-types");
|
|
81
81
|
var import_codemirror_shiki = __toESM(require("codemirror-shiki"));
|
|
82
|
+
var import_microfuzz = __toESM(require("@nozbe/microfuzz"));
|
|
82
83
|
var import_extension_lint = require("@coze-editor/extension-lint");
|
|
83
84
|
var import_extension_links = require("@coze-editor/extension-links");
|
|
84
85
|
var import_code_language_shared = require("@coze-editor/code-language-shared");
|
|
@@ -97,10 +98,21 @@ var import_marked_shiki = __toESM(require("marked-shiki"));
|
|
|
97
98
|
var import_marked = require("marked");
|
|
98
99
|
|
|
99
100
|
// src/highlighter.ts
|
|
100
|
-
var
|
|
101
|
-
var
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
var import_oniguruma = require("shiki/engine/oniguruma");
|
|
102
|
+
var import_core = require("shiki/core");
|
|
103
|
+
var highlighterPromise = (0, import_core.createHighlighterCore)({
|
|
104
|
+
langs: [
|
|
105
|
+
() => import("@shikijs/langs/markdown"),
|
|
106
|
+
() => import("@shikijs/langs/javascript"),
|
|
107
|
+
() => import("@shikijs/langs/typescript"),
|
|
108
|
+
() => import("@shikijs/langs/python"),
|
|
109
|
+
() => import("@shikijs/langs/sql")
|
|
110
|
+
],
|
|
111
|
+
themes: [
|
|
112
|
+
() => import("@shikijs/themes/github-dark"),
|
|
113
|
+
() => import("@shikijs/themes/one-dark-pro")
|
|
114
|
+
],
|
|
115
|
+
engine: (0, import_oniguruma.createOnigurumaEngine)(import("shiki/wasm"))
|
|
104
116
|
});
|
|
105
117
|
|
|
106
118
|
// src/const.ts
|
|
@@ -392,6 +404,7 @@ function formatContents(contents) {
|
|
|
392
404
|
}
|
|
393
405
|
return "";
|
|
394
406
|
}
|
|
407
|
+
var identRe = /^[\w$]+$/;
|
|
395
408
|
var LanguagesRegistry = class {
|
|
396
409
|
languages = {};
|
|
397
410
|
register(id, options) {
|
|
@@ -413,7 +426,7 @@ var LanguagesRegistry = class {
|
|
|
413
426
|
const { languageService, language, extensions } = this.languages[id];
|
|
414
427
|
const langaugeExtensions = [];
|
|
415
428
|
langaugeExtensions.push(new import_language2.LanguageSupport(language));
|
|
416
|
-
if (id === "typescript" || id === "python") {
|
|
429
|
+
if (id === "typescript" || id === "python" || id === "sql") {
|
|
417
430
|
langaugeExtensions.push(
|
|
418
431
|
(0, import_codemirror_shiki.default)({
|
|
419
432
|
highlighter: highlighterPromise,
|
|
@@ -604,9 +617,19 @@ var LanguagesRegistry = class {
|
|
|
604
617
|
}
|
|
605
618
|
if (languageService == null ? void 0 : languageService.doComplete) {
|
|
606
619
|
langaugeExtensions.push(
|
|
620
|
+
import_view3.EditorView.theme({
|
|
621
|
+
".cm-completionInfo p": {
|
|
622
|
+
margin: 0
|
|
623
|
+
},
|
|
624
|
+
".cm-completionMatchedText": {
|
|
625
|
+
textDecoration: "none",
|
|
626
|
+
color: "#4daafc"
|
|
627
|
+
}
|
|
628
|
+
}),
|
|
607
629
|
(0, import_autocomplete.autocompletion)({
|
|
608
630
|
override: [
|
|
609
631
|
async function({ state, pos, view: view2 }) {
|
|
632
|
+
var _a2;
|
|
610
633
|
const { textDocument, originalRangeFor, generatedRangeFor } = state.field(import_code_language_shared.textDocumentField);
|
|
611
634
|
const range = generatedRangeFor({ from: pos, to: pos });
|
|
612
635
|
const offset = range == null ? void 0 : range.from;
|
|
@@ -620,14 +643,68 @@ var LanguagesRegistry = class {
|
|
|
620
643
|
if (!completionResult || !Array.isArray(completionResult.items) || completionResult.items.length === 0) {
|
|
621
644
|
return null;
|
|
622
645
|
}
|
|
646
|
+
let { items } = completionResult;
|
|
647
|
+
const content = state.doc.toString();
|
|
648
|
+
const charBefore = content.slice(pos - 1, pos);
|
|
649
|
+
const triggerCharacters = languageService.triggerCharacters ?? [];
|
|
650
|
+
if (!triggerCharacters.includes(charBefore)) {
|
|
651
|
+
let i = pos - 1;
|
|
652
|
+
let query = "";
|
|
653
|
+
while (i >= 0) {
|
|
654
|
+
const char = content.slice(i, i + 1);
|
|
655
|
+
if (char === "\n") {
|
|
656
|
+
break;
|
|
657
|
+
}
|
|
658
|
+
if (!identRe.test(char) && i + 1 <= pos) {
|
|
659
|
+
break;
|
|
660
|
+
}
|
|
661
|
+
i--;
|
|
662
|
+
}
|
|
663
|
+
query = content.slice(i + 1, pos);
|
|
664
|
+
if (query) {
|
|
665
|
+
const fuzzySearch = (0, import_microfuzz.default)(items, {
|
|
666
|
+
key: "label"
|
|
667
|
+
});
|
|
668
|
+
items = fuzzySearch(query).map((v) => ({
|
|
669
|
+
...v.item,
|
|
670
|
+
textEdit: {
|
|
671
|
+
range: {
|
|
672
|
+
start: textDocument.positionAt(i + 1),
|
|
673
|
+
end: textDocument.positionAt(pos)
|
|
674
|
+
},
|
|
675
|
+
newText: v.item.label
|
|
676
|
+
},
|
|
677
|
+
data: {
|
|
678
|
+
matches: v.matches.reduce((memo, current) => {
|
|
679
|
+
if (!current) {
|
|
680
|
+
return memo;
|
|
681
|
+
}
|
|
682
|
+
return [
|
|
683
|
+
...memo,
|
|
684
|
+
...current.reduce(
|
|
685
|
+
(m, c) => [...m, c[0], c[1] + 1],
|
|
686
|
+
[]
|
|
687
|
+
)
|
|
688
|
+
];
|
|
689
|
+
}, [])
|
|
690
|
+
}
|
|
691
|
+
}));
|
|
692
|
+
} else if (Array.isArray(languageService.triggerCharacters)) {
|
|
693
|
+
items = [];
|
|
694
|
+
}
|
|
695
|
+
}
|
|
623
696
|
const completionOptions = [];
|
|
624
697
|
const mapping = /* @__PURE__ */ new WeakMap();
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
698
|
+
let resolveCompletion = void 0;
|
|
699
|
+
if (typeof languageService.resolveCompletionItem === "function") {
|
|
700
|
+
resolveCompletion = createResolveCompletion(
|
|
701
|
+
view2,
|
|
702
|
+
languageService,
|
|
703
|
+
mapping
|
|
704
|
+
);
|
|
705
|
+
}
|
|
706
|
+
const matchesMapping = /* @__PURE__ */ new WeakMap();
|
|
707
|
+
for (const item of items) {
|
|
631
708
|
const { kind, label, textEdit, textEditText } = item;
|
|
632
709
|
const completion = {
|
|
633
710
|
label,
|
|
@@ -635,6 +712,7 @@ var LanguagesRegistry = class {
|
|
|
635
712
|
detail: item.detail ?? ""
|
|
636
713
|
};
|
|
637
714
|
mapping.set(completion, item);
|
|
715
|
+
matchesMapping.set(completion, (_a2 = item.data) == null ? void 0 : _a2.matches);
|
|
638
716
|
if (textEdit) {
|
|
639
717
|
const range2 = "range" in textEdit ? textEdit.range : textEdit.replace;
|
|
640
718
|
const from = textDocument.offsetAt(range2.start);
|
|
@@ -675,7 +753,10 @@ var LanguagesRegistry = class {
|
|
|
675
753
|
return {
|
|
676
754
|
from: pos,
|
|
677
755
|
options: completionOptions,
|
|
678
|
-
filter: false
|
|
756
|
+
filter: false,
|
|
757
|
+
getMatch(completion) {
|
|
758
|
+
return matchesMapping.get(completion) ?? [];
|
|
759
|
+
}
|
|
679
760
|
};
|
|
680
761
|
}
|
|
681
762
|
]
|
|
@@ -995,7 +1076,7 @@ var SVG_FOLD_CLOSE = '<svg xmlns="http://www.w3.org/2000/svg" width="1em" height
|
|
|
995
1076
|
var SVG_FOLD_OPEN = '<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>';
|
|
996
1077
|
var preset = [
|
|
997
1078
|
...import_preset_universal.default,
|
|
998
|
-
(0,
|
|
1079
|
+
(0, import_core2.extension)([
|
|
999
1080
|
basicSetup,
|
|
1000
1081
|
import_extensions.matchingBrackets,
|
|
1001
1082
|
// indentGuides(),
|
|
@@ -1040,6 +1121,9 @@ var preset = [
|
|
|
1040
1121
|
minWidth: "200px",
|
|
1041
1122
|
margin: "0 2px"
|
|
1042
1123
|
},
|
|
1124
|
+
".cm-tooltip.cm-completionInfo": {
|
|
1125
|
+
padding: "6px 9px"
|
|
1126
|
+
},
|
|
1043
1127
|
".cm-completionInfo p:last-child": {
|
|
1044
1128
|
display: "inline-block"
|
|
1045
1129
|
},
|
|
@@ -1081,32 +1165,35 @@ var preset = [
|
|
|
1081
1165
|
maxHeight: "360px",
|
|
1082
1166
|
wordBreak: "break-word"
|
|
1083
1167
|
},
|
|
1168
|
+
".cm-tooltip-hover p": {
|
|
1169
|
+
margin: 0
|
|
1170
|
+
},
|
|
1084
1171
|
".cm-tooltip-section:not(:first-child)": {
|
|
1085
1172
|
"border-top": "solid 0.5px #666666ab"
|
|
1086
1173
|
}
|
|
1087
1174
|
})
|
|
1088
1175
|
)
|
|
1089
1176
|
]),
|
|
1090
|
-
(0,
|
|
1091
|
-
(0,
|
|
1092
|
-
(0,
|
|
1093
|
-
(0,
|
|
1094
|
-
(0,
|
|
1177
|
+
(0, import_core2.option)("tabSize", tabSize),
|
|
1178
|
+
(0, import_core2.option)("height", import_core_plugins.height),
|
|
1179
|
+
(0, import_core2.option)("minHeight", import_core_plugins.minHeight),
|
|
1180
|
+
(0, import_core2.option)("maxHeight", import_core_plugins.maxHeight),
|
|
1181
|
+
(0, import_core2.option)(
|
|
1095
1182
|
"scrollBeyondLastLine",
|
|
1096
1183
|
(use) => use ? (0, import_extensions.scrollBeyondLastLine)() : []
|
|
1097
1184
|
),
|
|
1098
|
-
(0,
|
|
1099
|
-
(0,
|
|
1100
|
-
(0,
|
|
1185
|
+
(0, import_core2.option)("uri", (id) => import_code_language_shared2.uriFacet.of(id)),
|
|
1186
|
+
(0, import_core2.option)("theme", (themeName) => themes.get(themeName) ?? []),
|
|
1187
|
+
(0, import_core2.option)("languageId", (id) => [
|
|
1101
1188
|
import_code_language_shared2.languageIdFacet.of(id),
|
|
1102
1189
|
languages.getExtension(id)
|
|
1103
1190
|
]),
|
|
1104
|
-
(0,
|
|
1191
|
+
(0, import_core2.option)(
|
|
1105
1192
|
"transformer",
|
|
1106
1193
|
(transformer) => import_code_language_shared2.transformerFacet.of(transformer)
|
|
1107
1194
|
),
|
|
1108
|
-
(0,
|
|
1109
|
-
(0,
|
|
1195
|
+
(0, import_core2.option)("overlayScrollbar", (enable = true) => enable ? [(0, import_extension_scrollbar.scrollbar)()] : []),
|
|
1196
|
+
(0, import_core2.option)(
|
|
1110
1197
|
"lineNumbersGutter",
|
|
1111
1198
|
(enable = true) => enable ? (0, import_view6.lineNumbers)({
|
|
1112
1199
|
domEventHandlers: {
|
|
@@ -1118,7 +1205,7 @@ var preset = [
|
|
|
1118
1205
|
}
|
|
1119
1206
|
}) : []
|
|
1120
1207
|
),
|
|
1121
|
-
(0,
|
|
1208
|
+
(0, import_core2.option)(
|
|
1122
1209
|
"foldGutter",
|
|
1123
1210
|
(enable = true) => enable ? (0, import_language6.foldGutter)({
|
|
1124
1211
|
markerDOM(open) {
|
|
@@ -1135,11 +1222,11 @@ var preset = [
|
|
|
1135
1222
|
}
|
|
1136
1223
|
}) : []
|
|
1137
1224
|
),
|
|
1138
|
-
(0,
|
|
1225
|
+
(0, import_core2.option)(
|
|
1139
1226
|
"colorizeBrackets",
|
|
1140
1227
|
(enable = true) => enable ? import_extensions.colorizationBrackets : []
|
|
1141
1228
|
),
|
|
1142
|
-
(0,
|
|
1229
|
+
(0, import_core2.api)("validate", ({ view: view2 }) => () => {
|
|
1143
1230
|
view2.dispatch({
|
|
1144
1231
|
userEvent: LINT_REFRESH_USER_EVENT
|
|
1145
1232
|
});
|
package/dist/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":["import_code_language_shared","import_view","import_state","import_language","import_vscode_languageserver_types","import_view","import_state","import_language","markedShiki","view","import_view","import_state","view","shiki","view","_a","range","links","controller","import_state","import_language","import_view","import_state","import_language","import_autocomplete","import_view","import_language","extension","import_dist","universal","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","// 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 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 {\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\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 // TODO: use shiki for all languages\n // Only use shiki for TypeScript, Python, SQL temporarily\n if (id === 'typescript' || id === 'python' || id === 'sql') {\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 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 = state.doc.toString();\n const charBefore = content.slice(pos - 1, pos);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = pos - 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 <= pos) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, pos);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => ({\n ...v.item,\n textEdit: {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(pos),\n },\n newText: v.item.label,\n },\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 } 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 '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":["import_core","import_code_language_shared","import_view","import_state","import_language","import_vscode_languageserver_types","import_view","import_state","import_language","markedShiki","view","import_view","import_state","view","shiki","view","_a","createFuzzySearch","range","links","controller","import_state","import_language","import_view","import_state","import_language","import_autocomplete","import_view","import_language","extension","import_dist","universal","view"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coze-editor/preset-code",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.2b6c24",
|
|
4
4
|
"description": "preset-code",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "fengzilong",
|
|
@@ -24,17 +24,20 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@codemirror/autocomplete": "^6.18.0",
|
|
26
26
|
"@codemirror/language": "^6.10.1",
|
|
27
|
-
"@coze-editor/core": "0.1.0-alpha.
|
|
28
|
-
"@coze-editor/core-plugins": "0.1.0-alpha.
|
|
29
|
-
"@coze-editor/extension-completion-icons": "0.1.0-alpha.
|
|
30
|
-
"@coze-editor/extension-links": "0.1.0-alpha.
|
|
31
|
-
"@coze-editor/extension-lint": "0.1.0-alpha.
|
|
32
|
-
"@coze-editor/extension-scrollbar": "0.1.0-alpha.
|
|
33
|
-
"@coze-editor/extensions": "0.1.0-alpha.
|
|
34
|
-
"@coze-editor/preset-universal": "0.1.0-alpha.
|
|
35
|
-
"@coze-editor/utils": "0.1.0-alpha.
|
|
36
|
-
"@coze-editor/vscode": "0.1.0-alpha.
|
|
27
|
+
"@coze-editor/core": "0.1.0-alpha.2b6c24",
|
|
28
|
+
"@coze-editor/core-plugins": "0.1.0-alpha.2b6c24",
|
|
29
|
+
"@coze-editor/extension-completion-icons": "0.1.0-alpha.2b6c24",
|
|
30
|
+
"@coze-editor/extension-links": "0.1.0-alpha.2b6c24",
|
|
31
|
+
"@coze-editor/extension-lint": "0.1.0-alpha.2b6c24",
|
|
32
|
+
"@coze-editor/extension-scrollbar": "0.1.0-alpha.2b6c24",
|
|
33
|
+
"@coze-editor/extensions": "0.1.0-alpha.2b6c24",
|
|
34
|
+
"@coze-editor/preset-universal": "0.1.0-alpha.2b6c24",
|
|
35
|
+
"@coze-editor/utils": "0.1.0-alpha.2b6c24",
|
|
36
|
+
"@coze-editor/vscode": "0.1.0-alpha.2b6c24",
|
|
37
37
|
"@lezer/highlight": "~1.2.0",
|
|
38
|
+
"@nozbe/microfuzz": "^1.0.0",
|
|
39
|
+
"@shikijs/langs": "~3.12.0",
|
|
40
|
+
"@shikijs/themes": "~3.12.0",
|
|
38
41
|
"codemirror-shiki": "^0.2.2",
|
|
39
42
|
"marked": "^15.0.7",
|
|
40
43
|
"marked-shiki": "^1.2.0",
|
|
@@ -59,7 +62,7 @@
|
|
|
59
62
|
"@codemirror/commands": "^6.3.3",
|
|
60
63
|
"@codemirror/state": "^6.4.1",
|
|
61
64
|
"@codemirror/view": "^6.26.1",
|
|
62
|
-
"@coze-editor/code-language-shared": "0.1.0-alpha.
|
|
65
|
+
"@coze-editor/code-language-shared": "0.1.0-alpha.2b6c24"
|
|
63
66
|
},
|
|
64
67
|
"packageManager": "pnpm@9.15.0",
|
|
65
68
|
"publishConfig": {
|