@coze-editor/preset-code 0.1.0-alpha.d92d50 → 0.1.0-alpha.fb1762

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 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 {
@@ -399,6 +400,7 @@ function formatContents(contents) {
399
400
  }
400
401
  return "";
401
402
  }
403
+ var identRe = /^[\w$]+$/;
402
404
  var LanguagesRegistry = class {
403
405
  languages = {};
404
406
  register(id, options) {
@@ -611,9 +613,19 @@ var LanguagesRegistry = class {
611
613
  }
612
614
  if (languageService == null ? void 0 : languageService.doComplete) {
613
615
  langaugeExtensions.push(
616
+ EditorView2.theme({
617
+ ".cm-completionInfo p": {
618
+ margin: 0
619
+ },
620
+ ".cm-completionMatchedText": {
621
+ textDecoration: "none",
622
+ color: "#4daafc"
623
+ }
624
+ }),
614
625
  autocompletion({
615
626
  override: [
616
627
  async function({ state, pos, view: view2 }) {
628
+ var _a2;
617
629
  const { textDocument, originalRangeFor, generatedRangeFor } = state.field(textDocumentField);
618
630
  const range = generatedRangeFor({ from: pos, to: pos });
619
631
  const offset = range == null ? void 0 : range.from;
@@ -627,14 +639,68 @@ var LanguagesRegistry = class {
627
639
  if (!completionResult || !Array.isArray(completionResult.items) || completionResult.items.length === 0) {
628
640
  return null;
629
641
  }
642
+ let { items } = completionResult;
643
+ const content = state.doc.toString();
644
+ const charBefore = content.slice(pos - 1, pos);
645
+ const triggerCharacters = languageService.triggerCharacters ?? [];
646
+ if (!triggerCharacters.includes(charBefore)) {
647
+ let i = pos - 1;
648
+ let query = "";
649
+ while (i >= 0) {
650
+ const char = content.slice(i, i + 1);
651
+ if (char === "\n") {
652
+ break;
653
+ }
654
+ if (!identRe.test(char) && i + 1 <= pos) {
655
+ break;
656
+ }
657
+ i--;
658
+ }
659
+ query = content.slice(i + 1, pos);
660
+ if (query) {
661
+ const fuzzySearch = createFuzzySearch(items, {
662
+ key: "label"
663
+ });
664
+ items = fuzzySearch(query).map((v) => ({
665
+ ...v.item,
666
+ textEdit: {
667
+ range: {
668
+ start: textDocument.positionAt(i + 1),
669
+ end: textDocument.positionAt(pos)
670
+ },
671
+ newText: v.item.label
672
+ },
673
+ data: {
674
+ matches: v.matches.reduce((memo, current) => {
675
+ if (!current) {
676
+ return memo;
677
+ }
678
+ return [
679
+ ...memo,
680
+ ...current.reduce(
681
+ (m, c) => [...m, c[0], c[1] + 1],
682
+ []
683
+ )
684
+ ];
685
+ }, [])
686
+ }
687
+ }));
688
+ } else if (Array.isArray(languageService.triggerCharacters)) {
689
+ items = [];
690
+ }
691
+ }
630
692
  const completionOptions = [];
631
693
  const mapping = /* @__PURE__ */ new WeakMap();
632
- const resolveCompletion = createResolveCompletion(
633
- view2,
634
- languageService,
635
- mapping
636
- );
637
- for (const item of completionResult.items) {
694
+ let resolveCompletion = void 0;
695
+ if (typeof languageService.resolveCompletionItem === "function") {
696
+ resolveCompletion = createResolveCompletion(
697
+ view2,
698
+ languageService,
699
+ mapping
700
+ );
701
+ }
702
+ const matchesMapping = /* @__PURE__ */ new WeakMap();
703
+ for (const item of items) {
638
704
  const { kind, label, textEdit, textEditText } = item;
639
705
  const completion = {
640
706
  label,
@@ -642,6 +708,7 @@ var LanguagesRegistry = class {
642
708
  detail: item.detail ?? ""
643
709
  };
644
710
  mapping.set(completion, item);
711
+ matchesMapping.set(completion, (_a2 = item.data) == null ? void 0 : _a2.matches);
645
712
  if (textEdit) {
646
713
  const range2 = "range" in textEdit ? textEdit.range : textEdit.replace;
647
714
  const from = textDocument.offsetAt(range2.start);
@@ -682,7 +749,10 @@ var LanguagesRegistry = class {
682
749
  return {
683
750
  from: pos,
684
751
  options: completionOptions,
685
- filter: false
752
+ filter: false,
753
+ getMatch(completion) {
754
+ return matchesMapping.get(completion) ?? [];
755
+ }
686
756
  };
687
757
  }
688
758
  ]
@@ -1075,6 +1145,9 @@ var preset = [
1075
1145
  minWidth: "200px",
1076
1146
  margin: "0 2px"
1077
1147
  },
1148
+ ".cm-tooltip.cm-completionInfo": {
1149
+ padding: "6px 9px"
1150
+ },
1078
1151
  ".cm-completionInfo p:last-child": {
1079
1152
  display: "inline-block"
1080
1153
  },
@@ -1116,6 +1189,9 @@ var preset = [
1116
1189
  maxHeight: "360px",
1117
1190
  wordBreak: "break-word"
1118
1191
  },
1192
+ ".cm-tooltip-hover p": {
1193
+ margin: 0
1194
+ },
1119
1195
  ".cm-tooltip-section:not(:first-child)": {
1120
1196
  "border-top": "solid 0.5px #666666ab"
1121
1197
  }
@@ -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 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 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 { 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"]}
package/dist/index.js CHANGED
@@ -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");
@@ -392,6 +393,7 @@ function formatContents(contents) {
392
393
  }
393
394
  return "";
394
395
  }
396
+ var identRe = /^[\w$]+$/;
395
397
  var LanguagesRegistry = class {
396
398
  languages = {};
397
399
  register(id, options) {
@@ -604,9 +606,19 @@ var LanguagesRegistry = class {
604
606
  }
605
607
  if (languageService == null ? void 0 : languageService.doComplete) {
606
608
  langaugeExtensions.push(
609
+ import_view3.EditorView.theme({
610
+ ".cm-completionInfo p": {
611
+ margin: 0
612
+ },
613
+ ".cm-completionMatchedText": {
614
+ textDecoration: "none",
615
+ color: "#4daafc"
616
+ }
617
+ }),
607
618
  (0, import_autocomplete.autocompletion)({
608
619
  override: [
609
620
  async function({ state, pos, view: view2 }) {
621
+ var _a2;
610
622
  const { textDocument, originalRangeFor, generatedRangeFor } = state.field(import_code_language_shared.textDocumentField);
611
623
  const range = generatedRangeFor({ from: pos, to: pos });
612
624
  const offset = range == null ? void 0 : range.from;
@@ -620,14 +632,68 @@ var LanguagesRegistry = class {
620
632
  if (!completionResult || !Array.isArray(completionResult.items) || completionResult.items.length === 0) {
621
633
  return null;
622
634
  }
635
+ let { items } = completionResult;
636
+ const content = state.doc.toString();
637
+ const charBefore = content.slice(pos - 1, pos);
638
+ const triggerCharacters = languageService.triggerCharacters ?? [];
639
+ if (!triggerCharacters.includes(charBefore)) {
640
+ let i = pos - 1;
641
+ let query = "";
642
+ while (i >= 0) {
643
+ const char = content.slice(i, i + 1);
644
+ if (char === "\n") {
645
+ break;
646
+ }
647
+ if (!identRe.test(char) && i + 1 <= pos) {
648
+ break;
649
+ }
650
+ i--;
651
+ }
652
+ query = content.slice(i + 1, pos);
653
+ if (query) {
654
+ const fuzzySearch = (0, import_microfuzz.default)(items, {
655
+ key: "label"
656
+ });
657
+ items = fuzzySearch(query).map((v) => ({
658
+ ...v.item,
659
+ textEdit: {
660
+ range: {
661
+ start: textDocument.positionAt(i + 1),
662
+ end: textDocument.positionAt(pos)
663
+ },
664
+ newText: v.item.label
665
+ },
666
+ data: {
667
+ matches: v.matches.reduce((memo, current) => {
668
+ if (!current) {
669
+ return memo;
670
+ }
671
+ return [
672
+ ...memo,
673
+ ...current.reduce(
674
+ (m, c) => [...m, c[0], c[1] + 1],
675
+ []
676
+ )
677
+ ];
678
+ }, [])
679
+ }
680
+ }));
681
+ } else if (Array.isArray(languageService.triggerCharacters)) {
682
+ items = [];
683
+ }
684
+ }
623
685
  const completionOptions = [];
624
686
  const mapping = /* @__PURE__ */ new WeakMap();
625
- const resolveCompletion = createResolveCompletion(
626
- view2,
627
- languageService,
628
- mapping
629
- );
630
- for (const item of completionResult.items) {
687
+ let resolveCompletion = void 0;
688
+ if (typeof languageService.resolveCompletionItem === "function") {
689
+ resolveCompletion = createResolveCompletion(
690
+ view2,
691
+ languageService,
692
+ mapping
693
+ );
694
+ }
695
+ const matchesMapping = /* @__PURE__ */ new WeakMap();
696
+ for (const item of items) {
631
697
  const { kind, label, textEdit, textEditText } = item;
632
698
  const completion = {
633
699
  label,
@@ -635,6 +701,7 @@ var LanguagesRegistry = class {
635
701
  detail: item.detail ?? ""
636
702
  };
637
703
  mapping.set(completion, item);
704
+ matchesMapping.set(completion, (_a2 = item.data) == null ? void 0 : _a2.matches);
638
705
  if (textEdit) {
639
706
  const range2 = "range" in textEdit ? textEdit.range : textEdit.replace;
640
707
  const from = textDocument.offsetAt(range2.start);
@@ -675,7 +742,10 @@ var LanguagesRegistry = class {
675
742
  return {
676
743
  from: pos,
677
744
  options: completionOptions,
678
- filter: false
745
+ filter: false,
746
+ getMatch(completion) {
747
+ return matchesMapping.get(completion) ?? [];
748
+ }
679
749
  };
680
750
  }
681
751
  ]
@@ -1040,6 +1110,9 @@ var preset = [
1040
1110
  minWidth: "200px",
1041
1111
  margin: "0 2px"
1042
1112
  },
1113
+ ".cm-tooltip.cm-completionInfo": {
1114
+ padding: "6px 9px"
1115
+ },
1043
1116
  ".cm-completionInfo p:last-child": {
1044
1117
  display: "inline-block"
1045
1118
  },
@@ -1081,6 +1154,9 @@ var preset = [
1081
1154
  maxHeight: "360px",
1082
1155
  wordBreak: "break-word"
1083
1156
  },
1157
+ ".cm-tooltip-hover p": {
1158
+ margin: 0
1159
+ },
1084
1160
  ".cm-tooltip-section:not(:first-child)": {
1085
1161
  "border-top": "solid 0.5px #666666ab"
1086
1162
  }
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,8BAAsB;AACtB,wBAIO;AACP,iCAA0B;AAC1B,wCAAsB;AACtB,0BAA6C;AAC7C,kBAKO;AACP,IAAAA,+BAMO;AACP,IAAAC,eAAwC;AACxC,IAAAC,gBAAqB;AACrB,IAAAC,mBAA2B;;;ACtB3B,IAAM,SAAN,MAAa;AAAA,EACX,SAAoC,uBAAO,OAAO,IAAI;AAAA,EAEtD,SAAS,MAAc,OAAkB;AACvC,SAAK,OAAO,IAAI,IAAI;AAAA,EACtB;AAAA,EAEA,IAAI,MAAc;AAChB,WAAO,KAAK,OAAO,IAAI;AAAA,EACzB;AACF;AAEA,IAAM,SAAS,OAAO,IAAI,mBAAmB;AAE7C,IAAI,CAAE,WAAmB,MAAM,GAAG;AAChC,EAAC,WAAmB,MAAM,IAAI,IAAI,OAAO;AAC3C;AAEA,IAAM,SAAU,WAAmB,MAAM;;;ACpBzC,oBAKO;AACP,sBAAmD;AAE5C,IAAM,cAAc;AAAA,MACzB,oCAAmB,+BAAe,OAAO,8BAAgB,CAAC;AAAA,MAC1D,0BAAW;AACb;AAEO,IAAM,aAAa;AAAA,MACxB,oCAAmB,+BAAe,OAAO,6BAAe,CAAC;AAAA,MACzD,yBAAU;AACZ;;;AChBA,IAAAC,sCAKO;AACP,8BAAkB;AAClB,4BAAwC;AACxC,6BAAiC;AACjC,kCAKO;AACP,IAAAC,eAKO;AACP,IAAAC,gBAKO;AACP,IAAAC,mBAAgC;AAChC,0BAKO;;;ACjCP,yCAIO;AACP,kBASO;AACP,mBAKO;;;ACpBP,0BAAwB;AACxB,oBAAuB;;;ACDvB,mBAAkC;AAElC,IAAM,yBAAqB,gCAAkB;AAAA,EAC3C,OAAO,CAAC,MAAM,MAAM,MAAM,QAAQ;AAAA,EAClC,QAAQ,CAAC,eAAe,cAAc;AACxC,CAAC;;;ACLM,IAAM,0BAA0B;AAChC,IAAM,uBAAuB;;;AFKpC,IAAM,SAAS,IAAI,qBAAO,EACvB;AAAA,MACC,oBAAAC,SAAY;AAAA,IACV,MAAM,UAAU,MAAM,MAAM,OAAO;AACjC,YAAM,cAAc,MAAM;AAC1B,cAAQ,MAAM,aAAa,WAAW,MAAM;AAAA,QAC1C;AAAA,QACA,OAAO;AAAA,QACP,cAAc;AAAA,UACZ;AAAA,YACE,IAAI,MAAM;AACR,qBAAO,KAAK,WAAW;AACvB,mBAAK,WAAW,QAAQ;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH,EACC,IAAI;AAAA,EACH,UAAU;AAAA,IACR,KAAK,MAAM;AACT,aAAO,aAAa,KAAK,SAAS,EAAE,2BAA2B,KAAK,IAAI,KAAK,KAAK,IAAI;AAAA,IACxF;AAAA,EACF;AACF,CAAC;AAEH,eAAe,eAAe,SAAiB;AAC7C,SAAO,MAAM,OAAO,MAAM,OAAO;AACnC;;;ADZO,IAAM,kCAAkC,yBAAY,OAAe,CAAC,CAAC;AAErE,IAAM,yBAAyB,yBAAY,OAAsB,CAAC,CAAC;AAE1E,IAAM,qBAAN,MAAyB;AAAA,EACvB;AAAA;AAAA,EAEA;AAAA,EAEA,YAAY,KAAa,QAAuB;AAC9C,QAAI,UAAU,QAAQ,IAAI;AACxB,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC;AACA,SAAK,MAAM;AACX,SAAK,SAAS;AAAA,EAChB;AACF;AAEA,IAAM,4BACJ,wBAAW,OAA2B;AAAA,EACpC,QAAQ,MAAM,IAAI,mBAAmB,IAAI,IAAI;AAAA,EAC7C,OAAO,OAAO,IAAI;AAChB,QAAI,EAAE,KAAK,OAAO,IAAI;AACtB,eAAW,UAAU,GAAG,SAAS;AAC/B,UAAI,OAAO,GAAG,+BAA+B,GAAG;AAC9C,cAAM,OAAO;AAAA,MACf,WAAW,OAAO,GAAG,sBAAsB,GAAG;AAC5C,iBAAS,OAAO;AAChB,YAAI,CAAC,QAAQ;AACX,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ,IAAI;AACd,eAAS;AAAA,IACX;AAEA,UAAM,QAAQ,KAAK,KAAK,GAAG,QAAQ,OAAO,GAAG;AAC7C,QAAI,MAAM,QAAQ,OAAO,MAAM,WAAW,QAAQ;AAChD,aAAO;AAAA,IACT;AACA,WAAO,IAAI,mBAAmB,KAAK,MAAM;AAAA,EAC3C;AAAA,EACA,SAAS,OACP,wBAAY,QAAQ,CAAC,CAAC,GAAG,WAAS;AAChC,UAAM,MAAM,MAAM,MAAM,yBAAyB;AACjD,UAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAI,QAAQ;AACV,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,MAAM;AACZ,gBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,cAAI,YAAY;AAChB,cAAI,MAAM,UAAU;AACpB,gBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,cAAI,YAAY;AAChB,cAAI,YAAY,GAAG;AACnB,iBAAO,EAAE,IAAI;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC;AACL,CAAC;AAEH,eAAe,oBACb,OACA,MAC6B;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EACnB,IAAI;AAEJ,MACE,OAAO,yBAAyB,YAChC,OAAO,yBAAyB,UAChC;AACA;AAAA,EACF;AAEA,QAAM,kBAAkB,WAAW,oBAAoB;AAEvD,MAAI,CAAC,mBAAmB,CAAC,MAAM,QAAQ,gBAAgB,UAAU,GAAG;AAClE;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,UAAU;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB,WAAW,oBAAoB;AAAA,EACjD;AACA,QAAM,gBAAwB,iDAAc,GAAG,gBAAgB,aAAa,IACxE,gBAAgB,cAAc,QAC7B,gBAAgB,iBAAiB;AACtC,QAAM,WACH,MAAM,eAAe,mBAAmB,OAAO,OAAO,CAAC,IACvD,MAAM,eAAe,cAAc,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAE3D,SAAO;AACT;AAEA,SAAS,kBAAkB,UAAkB,WAAkC;AAC7E,MAAI,WAAU,uCAAW,UAAS;AAElC,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAM,CAAC,MAAM,EAAE,IAAI;AACnB,cAAU,SAAS,MAAM,MAAM,EAAE;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,SAAiB,SAAyB;AACpE,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,SAAO,QACJ,MAAM,OAAO,EACb,KAAK,+CAA+C,OAAO,SAAS;AACzE;AAEA,IAAM,qBAA8B,CAACC,UAAqB;AACxD,MAAIA,MAAK,MAAM,MAAM,yBAAyB,EAAE,QAAQ,IAAI;AAC1D,IAAAA,MAAK,SAAS;AAAA,MACZ,SAAS,gCAAgC,GAAG,EAAE;AAAA,IAChD,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAM,sBAA6C;AAAA,EACjD,EAAE,KAAK,UAAU,KAAK,mBAAmB;AAC3C;AAEA,IAAM,oBAAN,MAA+C;AAAA,EAC7C,YAAoBA,OAAkB;AAAlB,gBAAAA;AAAA,EAAmB;AAAA,EACvC,OAAO,QAAoB;AACzB,SACG,OAAO,cAAc,OAAO,iBAC7B,KAAK,KAAK,MAAM,MAAM,yBAAyB,EAAE,QAAQ,IACzD;AACA,kCAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,IACrD,WAAW,OAAO,YAAY;AAC5B,YAAM,OAAO,OAAO,aAAa,OAAO,aAAa,SAAS,CAAC;AAC/D,UAAI,KAAK,YAAY,OAAO,GAAG;AAC7B,eAAO,QAAQ,YAAY,CAAC,QAAQ,MAAM,QAAQ,MAAM,aAAa;AACnE,cACE,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,IAAI,KAC5C,SAAS,SAAS,MAAM,KACxB;AACA,wCAA4B,KAAK,MAAM,OAAO,KAAK;AAAA,UACrD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB,mBAAM,OAAiB;AAAA,EAClD,QAAQ,QAAQ;AACd,WAAO,OAAO,OAAO,SAAS,CAAC;AAAA,EACjC;AACF,CAAC;AAED,IAAM,8BAA8B,OAClCA,OACA,UACkB;AAClB,QAAM,kBAAkB,MAAM,MAAM,oBAAoB;AACxD,QAAM,MAAM,MAAM,UAAU,KAAK;AAEjC,MAAI;AACF,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,gCAAgC,GAAG,GAAG,CAAC;AAAA,MACnD,CAAC;AAAA,IACH,CAAC;AACD,UAAM,OAAO,MAAM,gBAAgB,OAAO,GAAG;AAE7C,QAAI,CAAC,QAAQ,CAAC,KAAK,cAAc,KAAK,WAAW,WAAW,GAAG;AAC7D,qBAAe,MAAM;AACnB,QAAAA,MAAK,SAAS;AAAA,UACZ,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAAA,QAC3C,CAAC;AAAA,MACH,CAAC;AAED;AAAA,IACF;AAEA,UAAM,SAAU,MAAM,oBAAoB,OAAO,IAAI,KAAM;AAE3D,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,uBAAuB,GAAG,MAAM,CAAC;AAAA,MAC7C,CAAC;AAAA,IACH,CAAC;AAAA,EACH,SAAS,GAAG;AACV,mBAAe,MAAM;AACnB,MAAAA,MAAK,SAAS;AAAA,QACZ,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAAA,MAC3C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAM,gCAAgC,uBAAW,UAAU;AAAA,EACzD,oCAAoC;AAAA,IAClC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA,8CAA8C;AAAA,IAC5C,YAAY;AAAA,EACd;AACF,CAAC;AAED,SAAS,cAAc,iBAAsB;AAC3C,SAAO;AAAA,IACL,qBAAqB,GAAG,eAAe;AAAA,IACvC,uBAAW,UAAU,iBAAiB;AAAA,IACtC;AAAA,IACA;AAAA,IACA,mBAAO,GAAG,mBAAmB;AAAA,IAC7B,uBAAW,iBAAiB;AAAA,MAC1B,KAAK,OAAOA,OAAM;AAChB,YACE,EAAE,MAAM,yBAAyB,YACjC,CAAC,MAAM,cAAc,QAAQ,uBAAuB,GACpD;AAEA,yBAAe,MAAM;AACnB,YAAAA,MAAK,SAAS;AAAA,cACZ,SAAS,gCAAgC,GAAG,EAAE;AAAA,YAChD,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AI3QA,mBAAqC;AACrC,IAAAC,eAA4C;AAC5C,IAAAC,gBAAsC;AAItC,IAAM,eAAe,oBAAM,OAAO;AAAA,EAChC,SAAS,kCAAqB;AAChC,CAAC;AAED,IAAM,OAAO,wBAAW;AAAA,EACtB,MAAM;AAAA,IACI;AAAA,IAER,YAAYC,OAAkB;AAC5B,eAAS,QAAQ,GAAe;AAC9B,cAAM,SAAS,EAAE;AACjB,YAAI,CAAC,EAAE,WAAW,CAAC,OAAO,QAAQ,aAAa,GAAG;AAChD;AAAA,QACF;AAEA,cAAM,MAAMA,MAAK,YAAY;AAAA,UAC3B,GAAG,EAAE;AAAA,UACL,GAAG,EAAE;AAAA,QACP,CAAC;AAED,YAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,QACF;AAEA,cAAM,UAAUA,MAAK,MAAM,MAAM,YAAY;AAC7C,gBAAQ;AAAA,UACN,MAAAA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAEA,eAAS,iBAAiB,SAAS,SAAS,KAAK;AAEjD,WAAK,UAAU,MAAM;AACnB,iBAAS,oBAAoB,SAAS,SAAS,KAAK;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,UAAU;AACR,UAAI,OAAO,KAAK,YAAY,YAAY;AACtC,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;AAEe,SAAR,eACL,SACa;AACb,SAAO,CAAC,aAAa,GAAG,OAAO,GAAG,IAAI;AACxC;;;ALfA,SAAS,eAAe,UAAqD;AAC3E,MAAI,kDAAc,GAAG,QAAQ,GAAG;AAC9B,UAAM,EAAE,MAAM,IAAI;AAClB,QAAI,SAAS,SAAS,YAAY;AAAA,IAElC;AACA,WAAO;AAAA,EACT,WAAW,MAAM,QAAQ,QAAQ,GAAG;AAClC,WAAO,SAAS,IAAI,OAAK,GAAG,eAAe,CAAC,CAAC;AAAA;AAAA,CAAM,EAAE,KAAK,EAAE;AAAA,EAC9D,WAAW,OAAO,aAAa,UAAU;AACvC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,oBAAN,MAAwB;AAAA,EACd,YAA4C,CAAC;AAAA,EAE9C,SAAS,IAAY,SAAyB;AACnD,QAAI,CAAC,KAAK,UAAU,EAAE,GAAG;AACvB,WAAK,UAAU,EAAE,IAAI;AAAA,IACvB;AAEA,WAAO,MAAM;AACX,aAAO,KAAK,UAAU,EAAE;AAAA,IAC1B;AAAA,EACF;AAAA,EAEO,IAAI,YAAoC;AAC7C,WAAO,KAAK,UAAU,UAAU;AAAA,EAClC;AAAA,EAEO,aAAa,IAAY;AA7ElC;AA8EI,QAAI,CAAC,KAAK,UAAU,EAAE,GAAG;AACvB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,EAAE,iBAAiB,UAAU,WAAW,IAAI,KAAK,UAAU,EAAE;AAEnE,UAAM,qBAAkC,CAAC;AAEzC,uBAAmB,KAAK,IAAI,iCAAgB,QAAQ,CAAC;AAIrD,QAAI,OAAO,gBAAgB,OAAO,UAAU;AAC1C,yBAAmB;AAAA,YACjB,wBAAAC,SAAM;AAAA,UACJ,aAAa;AAAA,UACb,UAAU;AAAA,UACV,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAEA,uBAAmB;AAAA,MACjB,yBAAW,OAAO;AAAA,QAChB,OAAO,OAAO;AACZ,cAAI,mDAAiB,yBAAyB;AAC5C,kBAAM,EAAE,aAAa,IAAI,MAAM,MAAM,6CAAiB;AACtD,4BAAgB,wBAAwB;AAAA,cACtC;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,OAAO,QAAQ,IAAI;AACjB,cAAI,GAAG,YAAY;AACjB,gBAAI,mDAAiB,yBAAyB;AAC5C,oBAAM,EAAE,aAAa,IAAI,GAAG,MAAM,MAAM,6CAAiB;AACzD,8BAAgB,wBAAwB;AAAA,gBACtC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,mBAAmB,gBAAgB,cAAc;AACnD,yBAAmB;AAAA,QACjB,wBAAW;AAAA,UACT,MAAM;AAAA,YACJ;AAAA,YACA,YAAYC,OAAkB;AAhI1C,kBAAAC;AAiIc,uBAAS,uBAAuB;AAC9B,gBAAAD,MAAK,SAAS;AAAA,kBACZ,WAAW;AAAA,gBACb,CAAC;AAAA,cACH;AAEA,eAAAC,MAAA,gBAAiB,WAAjB,gBAAAA,IAAyB;AAAA,gBACvB;AAAA,gBACA;AAAA;AAGF,mBAAK,YAAY,MAAM;AA5IrC,oBAAAA;AA6IgB,iBAAAA,MAAA,gBAAiB,WAAjB,gBAAAA,IAAyB;AAAA,kBACvB;AAAA,kBACA;AAAA;AAAA,cAEJ;AAAA,YACF;AAAA,YAEA,UAAU;AACR,kBAAI,OAAO,KAAK,cAAc,YAAY;AACxC,qBAAK,UAAU;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,wBAAW,MAAM;AAAA,UACf,oBAAoB;AAAA,YAClB,UAAU;AAAA,UACZ;AAAA,UACA,4BAA4B;AAAA,YAC1B,SAAS;AAAA,UACX;AAAA,UACA,2BAA2B;AAAA,YACzB,gBAAgB;AAAA,UAClB;AAAA,UACA,6CAA6C;AAAA,YAC3C,iBAAiB;AAAA,UACnB;AAAA,UACA,8CAA8C;AAAA,YAC5C,iBAAiB;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AACA,yBAAmB;AAAA,YACjB;AAAA,UACE,OAAOD,UAAqB;AA/KtC,gBAAAC;AAgLY,kBAAM,EAAE,cAAc,iBAAiB,IACrCD,MAAK,MAAM,MAAM,6CAAiB;AACpC,kBAAM,cAAc,MAAM,gBAAgB,aAAc;AAAA,cACtD;AAAA,YACF,CAAC;AAED,kBAAM,mBAAiC,YACpC,IAAI,gBAAc;AAvLjC,kBAAAC,KAAA;AAwLgB,oBAAM,QAAQ,iBAAiB;AAAA,gBAC7B,MAAM,WAAW;AAAA,gBACjB,IAAI,WAAW;AAAA,cACjB,CAAC;AACD,kBAAI,OAAO;AACT,oBAAI,YAAY;AAChB,qBAAIA,MAAA,WAAW,SAAX,gBAAAA,IAAiB,SAAS,sCAAU,cAAc;AACpD,+BAAa;AAAA,gBACf;AACA,qBAAI,gBAAW,SAAX,mBAAiB,SAAS,sCAAU,aAAa;AACnD,+BAAa;AAAA,gBACf;AACA,uBAAO;AAAA,kBACL,GAAG;AAAA,kBACH;AAAA,kBACA,GAAG;AAAA,gBACL;AAAA,cACF;AAAA,YACF,CAAC,EACA,OAAO,OAAK,aAAa,CAAC,CAAC;AAE9B,aAAAA,MAAA,gBAAgB,WAAhB,gBAAAA,IAAwB,KAAK,eAAe;AAAA,cAC1C,KAAK,aAAa;AAAA,cAClB,aAAa,iBAAiB,IAAI,QAAM;AAAA,gBACtC,MAAM,EAAE;AAAA,gBACR,IAAI,EAAE;AAAA,gBACN,SAAS,EAAE;AAAA,gBACX,UAAU,EAAE;AAAA,cACd,EAAE;AAAA,YACJ;AAEA,mBAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,SAAO,qBAAgB,YAAhB,mBAAyB,cAAa;AAAA,YAC7C,aAAa,QAAoB;AAC/B,qBAAO,OAAO,aAAa;AAAA,gBAAK,QAC9B,GAAG,YAAY,uBAAuB;AAAA,cACxC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,mDAAiB,SAAS;AAC5B,yBAAmB;AAAA,YACjB,2BAAa,OAAOD,OAAM,QAAQ;AAChC,gBAAM,EAAE,cAAc,mBAAmB,IACvCA,MAAK,MAAM,MAAM,6CAAiB;AACpC,gBAAM,SAAS,mBAAmB,GAAG;AAErC,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,SAAS,MAAM,gBAAgB,QAAS;AAAA,YAC5C;AAAA,YACA;AAAA,UACF,CAAC;AAED,cAAI,CAAC,QAAQ;AACX,mBAAO;AAAA,UACT;AAEA,gBAAM,OAAO,MAAM,eAAe,eAAe,MAAM,CAAC;AAExD,gBAAM,OAAOA,MAAK,MAAM,OAAO,MAAM;AAErC,iBAAO;AAAA,YACL,MAAK,6BAAM,SAAQ;AAAA,YACnB,MAAK,6BAAM,OAAM;AAAA,YACjB,SAAS;AACP,oBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,kBAAI,UAAU,IAAI,eAAe;AACjC,kBAAI,YAAY;AAEhB,kBAAI,MAAM,UAAU;AACpB,qBAAO;AAAA,gBACL;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACD,wBAAW,MAAM;AAAA,UACf,oBAAoB;AAAA,YAClB,OAAO;AAAA,UACT;AAAA,UACA,sBAAsB;AAAA,YACpB,QAAQ;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,iBAAiB;AACpC,yBAAmB;AAAA,QACjB,cAAc,OAAO,OAAoB,QAAgB;AACvD,gBAAM,EAAE,cAAc,kBAAkB,IACtC,MAAM,MAAM,6CAAiB;AAC/B,gBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,gBAAM,SAAS,+BAAO;AAEtB,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,SAAS,MAAM,gBAAgB,gBAAiB;AAAA,YACpD;AAAA,YACA;AAAA,UACF,CAAC;AAED,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,YAAY;AAC/B,yBAAmB;AAAA,YACjB,oCAAe;AAAA,UACb,UAAU;AAAA,YACR,eAAgB,EAAE,OAAO,KAAK,MAAAA,MAAK,GAAG;AACpC,oBAAM,EAAE,cAAc,kBAAkB,kBAAkB,IACxD,MAAM,MAAM,6CAAiB;AAC/B,oBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,oBAAM,SAAS,+BAAO;AAEtB,kBAAI,OAAO,WAAW,UAAU;AAC9B,uBAAO;AAAA,cACT;AAEA,oBAAM,mBAAmB,MAAM,gBAAgB,WAAY;AAAA,gBACzD;AAAA,gBACA;AAAA,cACF,CAAC;AAED,kBACE,CAAC,oBACD,CAAC,MAAM,QAAQ,iBAAiB,KAAK,KACrC,iBAAiB,MAAM,WAAW,GAClC;AACA,uBAAO;AAAA,cACT;AAEA,oBAAM,oBAAkC,CAAC;AAEzC,oBAAM,UAAU,oBAAI,QAAQ;AAC5B,oBAAM,oBAAoB;AAAA,gBACxBA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAEA,yBAAW,QAAQ,iBAAiB,OAAO;AACzC,sBAAM,EAAE,MAAM,OAAO,UAAU,aAAa,IAAI;AAEhD,sBAAM,aAAyB;AAAA,kBAC7B;AAAA,kBACA,MAAM,8BAA8B,IAAI;AAAA,kBACxC,QAAQ,KAAK,UAAU;AAAA,gBACzB;AAEA,wBAAQ,IAAI,YAAY,IAAI;AAE5B,oBAAI,UAAU;AACZ,wBAAME,SACJ,WAAW,WAAW,SAAS,QAAQ,SAAS;AAClD,wBAAM,OAAO,aAAa,SAASA,OAAM,KAAK;AAC9C,wBAAM,KAAK,aAAa,SAASA,OAAM,GAAG;AAE1C,wBAAM,SAAS,iBAAiB;AAAA,oBAC9B;AAAA,oBACA;AAAA,kBACF,CAAC;AAED,sBAAI,CAAC,QAAQ;AACX;AAAA,kBACF;AAEA,wBAAM,SAAS,SAAS;AACxB,wBAAM,EAAE,iBAAiB,IAAI;AAE7B,6BAAW,QAAQ,CAAAF,UAAQ;AAEzB,wBACE,qBACC,GACD;AACA;AAAA,wBACE;AAAA,0BACE,OACG,QAAQ,YAAY,QAAQ,EAC5B,QAAQ,SAAS,GAAG;AAAA,wBACzB;AAAA,sBACF,EAAEA,OAAM,YAAY,OAAO,MAAM,OAAO,EAAE;AAAA,oBAC5C,OAAO;AACL,sBAAAA,MAAK;AAAA,4BACH;AAAA,0BACEA,MAAK;AAAA,0BACL;AAAA,0BACA,OAAO;AAAA,0BACP,OAAO;AAAA,wBACT;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,WAAW,cAAc;AACvB,6BAAW,QAAQ;AAAA,gBACrB;AAEA,2BAAW,OAAO;AAElB,kCAAkB,KAAK,UAAU;AAAA,cACnC;AAEA,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,QAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,gBAAgB;AACnC,yBAAmB;AAAA,QACjB,eAAe,OAAO,EAAE,KAAK,MAAAA,MAAK,MAAM;AACtC,gBAAM,EAAE,cAAc,kBAAkB,kBAAkB,IACxDA,MAAK,MAAM,MAAM,6CAAiB;AACpC,gBAAM,QAAQ,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC;AACtD,gBAAM,SAAS,+BAAO;AAEtB,cAAI,OAAO,WAAW,UAAU;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,cAAc,MAAM,gBAAgB,eAAgB;AAAA,YACxD;AAAA,YACA;AAAA,UACF,CAAC;AAED,cAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,YAAY,WAAW,GAAG;AAC3D;AAAA,UACF;AAEA,gBAAM,aAAa,YAAY,CAAC;AAEhC,gBAAM,SAAS,iBAAiB;AAAA,YAC9B,MAAM,WAAW;AAAA,YACjB,IAAI,WAAW;AAAA,UACjB,CAAC;AAED,cAAI,CAAC,QAAQ;AACX;AAAA,UACF;AAEA,UAAAA,MAAK,SAAS;AAAA,YACZ,SAAS,wBAAW,eAAe,OAAO,MAAM;AAAA,cAC9C,GAAG;AAAA,YACL,CAAC;AAAA,YACD,WAAW,8BAAgB,MAAM,OAAO,MAAM,OAAO,EAAE;AAAA,UACzD,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,mDAAiB,WAAW;AAC9B,yBAAmB;AAAA,YACjB,8BAAM,OAAMA,UAAQ;AAClB,gBAAM,EAAE,cAAc,iBAAiB,IACrCA,MAAK,MAAM,MAAM,6CAAiB;AACpC,gBAAMG,SAAQ,MAAM,gBAAgB,UAAW;AAAA,YAC7C;AAAA,UACF,CAAC;AAED,iBAAOA,OACJ,IAAI,UAAQ;AACX,kBAAM,QAAQ,iBAAiB,KAAK,KAAK;AACzC,gBAAI,CAAC,OAAO;AACV;AAAA,YACF;AACA,mBAAO;AAAA,cACL;AAAA,cACA,QAAQ,KAAK;AAAA,YACf;AAAA,UACF,CAAC,EACA,OAAO,OAAK,OAAO,CAAC,CAAC;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,YAAY;AACd,yBAAmB,KAAK,UAAU;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,wBACPH,OACA,iBACA,SACA;AACA,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,aAAa,IAAI,gBAAgB;AAErC,WAAS,QAAQI,aAA6B;AAC5C,QAAI,CAACA,YAAW,OAAO,SAAS;AAC9B,UAAI,MAAM,UAAU;AAAA,IACtB;AAAA,EACF;AAEA,WAAS,QAAQ,MAAcA,aAA6B;AAC1D,QAAI,CAACA,YAAW,OAAO,SAAS;AAC9B,UAAI,YAAY;AAChB,UAAI,MAAM,UAAU;AAAA,IACtB;AAAA,EACF;AAEA,SAAO,CAAC,eAA2B;AACjC,eAAW,MAAM;AACjB,iBAAa,IAAI,gBAAgB;AAEjC,UAAM,oBAAoB;AAE1B,KAAC,YAAY;AACX,YAAM,iBAAiB,QAAQ,IAAI,UAAU;AAC7C,UACE,CAACJ,SACD,CAAC,kBACD,OAAO,gBAAgB,0BAA0B,YACjD;AACA,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,EAAE,cAAc,iBAAiB,IACrCA,MAAK,MAAM,MAAM,6CAAiB;AAEpC,YAAM,SAAS,iBAAiB;AAAA,QAC9B,MAAMA,MAAK,MAAM,UAAU,KAAK;AAAA,QAChC,IAAIA,MAAK,MAAM,UAAU,KAAK;AAAA,MAChC,CAAC;AAED,UAAI,CAAC,QAAQ;AACX,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,UAAU,MAAM,gBAAgB;AAAA,QACpC;AAAA,UACE;AAAA,UACA,QAAQ,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAEA,UAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,eAAe;AAC7C,gBAAQ,iBAAiB;AACzB;AAAA,MACF;AAEA,YAAM,sBAAsB,kDAAc,GAAG,QAAQ,aAAa,IAC9D,MAAM,eAAe,QAAQ,cAAc,KAAK,IAC/C,QAAQ,iBAAiB;AAE9B,YAAM,OAAO;AAAA,QACX,oDACE,QAAQ,UAAU,EACpB;AAAA,QACA,QAAQ,gBAAgB,WAAW;AAAA,QACnC,QAAQ,mBAAmB;AAAA,MAC7B,EAAE,KAAK,EAAE;AAET,UAAI,CAAC,kBAAkB,OAAO,SAAS;AACrC,gBAAQ,MAAM,iBAAiB;AAAA,MACjC;AAAA,IACF,GAAG;AAEH,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,GAA6B;AACjD,SAAO,QAAQ,CAAC;AAClB;AAEA,SAAS,OAAO,GAAuB;AACrC,SAAO,QAAQ,CAAC;AAClB;AAEA,SAAS,UAAU,KAAa;AAC9B,MAAI,CAAC,IAAI,SAAS,IAAI,GAAG;AACvB,WAAO,GAAG,GAAG;AAAA,EACf;AAEA,SAAO;AACT;AAEA,SAAS,8BACP,MACQ;AACR,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,YAAY,IAAI,kBAAkB;;;AMnpB/C,IAAAK,gBAA4B;AAC5B,IAAAC,mBAA2B;AACpB,IAAM,UAAU,CAAC,OAAO,MAAM;AAAA,EACnC,0BAAY,QAAQ,GAAG,IAAI;AAAA,EAC3B,4BAAW,GAAG,IAAI,OAAO,IAAI,CAAC;AAChC;;;ACLA,IAAAC,eASO;AACP,IAAAC,gBAA4B;AAC5B,IAAAC,mBAKO;AACP,sBAKO;AACP,IAAAC,uBAMO;AAEA,IAAM,cAAc,MAAM;AAAA,MAC/B,wCAA0B;AAAA,MAC1B,oCAAsB;AAAA,MACtB,yBAAQ;AAAA,MACR,4BAAc;AAAA,MACd,yBAAW;AAAA,EACX,0BAAY,wBAAwB,GAAG,IAAI;AAAA,MAC3C,gCAAc;AAAA,MACd,qCAAmB,wCAAuB,EAAE,UAAU,KAAK,CAAC;AAAA,MAC5D,oCAAc;AAAA,MACd,qCAAe;AAAA,MACf,mCAAqB;AAAA,MACrB,8BAAgB;AAAA,MAChB,kCAAoB;AAAA,EACpB,oBAAO,GAAG;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA,EAAE,KAAK,OAAO,KAAK,sCAAiB;AAAA,EACtC,CAAC;AACH,GAAG;;;ACnDH,IAAAC,eAA2B;AAE3B,IAAAC,mBAIO;AA6FP,IAAM,cAAc,CAAC,EAAE,SAAS,UAAU,OAAO,MAAwB;AACvE,QAAM,gBAAgB,SAAS,iBAAiB,CAAC,GAAG;AAAA,IAClD,CAAC,MAAM,OAAO,WAAW;AAAA,MACvB,GAAG;AAAA,MACH,CAAC,yBAAyB,KAAK,EAAE,GAAG,EAAE,MAAM;AAAA,MAC5C,CAAC,yBAAyB,KAAK,SAAS,GAAG,EAAE,MAAM;AAAA,IACrD;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,eAAe;AAAA,IACnB,eAAe,SAAS,WAAW,CAAC;AAAA,IACpC,4BAA4B,SAAS,qBAAqB,CAAC;AAAA,IAC3D,iBAAiB,SAAS,QAAQ;AAAA,MAChC,OAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,kBAAkB;AAAA,IACtB,iDACE,SAAS,0BAA0B,CAAC;AAAA,IACtC,6DACE,SAAS,uBAAuB,CAAC;AAAA,IACnC,sBAAsB,SAAS,sBAAsB,CAAC;AAAA,IACtD,uBAAuB,SAAS,uBAAuB,CAAC;AAAA,IACxD,wBAAwB,SAAS,wBAAwB,CAAC;AAAA,IAC1D,sBAAsB,SAAS,sBAAsB,CAAC;AAAA,EACxD;AAEA,QAAM,QAAQ,wBAAW;AAAA,IACvB;AAAA,MACE,KAAK;AAAA,QACH,iBAAiB,SAAS;AAAA,QAC1B,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,eAAe;AAAA,QACb,YAAY,SAAS;AAAA,MACvB;AAAA,MACA,8BAA8B;AAAA,QAC5B,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,8HACE;AAAA,QACE,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACF,kBAAkB;AAAA,QAChB,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,eAAe;AAAA,QACb,iBAAiB,SAAS;AAAA,QAC1B,OAAO,SAAS;AAAA,QAChB,kBAAkB,SAAS;AAAA,QAC3B,kBAAkB,GAAG,SAAS,iBAAiB;AAAA,MACjD;AAAA,MACA,wBAAwB;AAAA,QACtB,iBAAiB,SAAS;AAAA,MAC5B;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA;AAAA,MACE,MAAM,YAAY;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,iBAAiB,gCAAe,OAAO,MAAM;AACnD,QAAMC,aAAY,CAAC,WAAO,qCAAmB,cAAc,CAAC;AAE5D,SAAOA;AACT;AAEA,IAAO,uBAAQ;;;AX5If,kBAAO;AACP,IAAAC,eAAO;;;AYnCP,0BAAqB;AAGrB,IAAM,qBACJ,CAAC,cACD,CAAC,WAAmB;AAClB,QAAM,OAAO,UAAU,IAAI,yBAAK,MAAM,CAAC;AACvC,SAAO;AAAA,IACL,MAAM,KAAK,SAAS;AAAA,IACpB,SAAS;AAAA,MACP,kBAAkB,KAAK,iBAAiB,KAAK,IAAI;AAAA,MACjD,mBAAmB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACnD,mBAAmB,KAAK,kBAAkB,KAAK,IAAI;AAAA,MACnD,oBAAoB,KAAK,mBAAmB,KAAK,IAAI;AAAA,IACvD;AAAA,EACF;AACF;;;AZmMF,uBAAqB;AA9KrB,IAAM,iBACJ;AACF,IAAM,gBACJ;AAEF,IAAM,SAAS;AAAA,EACb,GAAG,wBAAAC;AAAA,MAEH,uBAAU;AAAA,IACR;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA,mBAAK;AAAA,MACH,wBAAW,MAAM;AAAA,QACf,oCAAoC;AAAA,UAClC,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,mBAAK;AAAA,MACH,wBAAW,MAAM;AAAA,QACf,YAAY;AAAA,UACV,gBAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,mBAAK;AAAA,MACH,wBAAW,MAAM;AAAA,QACf,eAAe;AAAA,UACb,cAAc;AAAA,UACd,UAAU;AAAA,QACZ;AAAA,QACA,wBAAwB;AAAA,UACtB,YAAY;AAAA,QACd;AAAA,QACA,kBAAkB;AAAA,UAChB,SAAS;AAAA,QACX;AAAA,QACA,mBAAmB;AAAA,UACjB,YAAY;AAAA,QACd;AAAA,QACA,4CAA4C;AAAA,UAC1C,OAAO;AAAA,UACP,SAAS;AAAA,QACX;AAAA,QACA,sBAAsB;AAAA,UACpB,UAAU;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,QACA,mCAAmC;AAAA,UACjC,SAAS;AAAA,QACX;AAAA,QACA,gEAAgE;AAAA,UAC9D,OAAO;AAAA,QACT;AAAA,QACA,iDAAiD;AAAA,UAC/C,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,mEAAmE;AAAA,UACjE,WAAW;AAAA,QACb;AAAA,QACA,sBAAsB;AAAA,UACpB,UAAU;AAAA,UACV,SAAS;AAAA,UACT,SAAS;AAAA,QACX;AAAA,QACA,uBAAuB;AAAA,UACrB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,cAAc;AAAA,QAChB;AAAA,QACA,wBAAwB;AAAA,UACtB,UAAU;AAAA,UACV,UAAU;AAAA,UACV,cAAc;AAAA,UACd,WAAW;AAAA,UACX,WAAW;AAAA,QACb;AAAA,QACA,4BAA4B;AAAA,UAC1B,cAAc;AAAA,QAChB;AAAA,QACA,qBAAqB;AAAA,UACnB,WAAW;AAAA,UACX,WAAW;AAAA,UACX,WAAW;AAAA,QACb;AAAA,QACA,yCAAyC;AAAA,UACvC,cAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,MAED,oBAAO,WAAW,OAAO;AAAA,MACzB,oBAAO,UAAU,0BAAM;AAAA,MACvB,oBAAO,aAAa,6BAAS;AAAA,MAC7B,oBAAO,aAAa,6BAAS;AAAA,MAC7B;AAAA,IAAO;AAAA,IAAwB,CAAC,QAC9B,UAAM,wCAAqB,IAAI,CAAC;AAAA,EAClC;AAAA,MACA,oBAAO,OAAO,CAAC,OAAe,sCAAS,GAAG,EAAE,CAAC;AAAA,MAC7C,oBAAO,SAAS,CAAC,cAAsB,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC;AAAA,MAClE,oBAAO,cAAc,CAAC,OAAe;AAAA,IACnC,6CAAgB,GAAG,EAAE;AAAA,IACrB,UAAU,aAAa,EAAE;AAAA,EAC3B,CAAC;AAAA,MACD;AAAA,IAAO;AAAA,IAAe,CAAC,gBACrB,8CAAiB,GAAG,WAAW;AAAA,EACjC;AAAA,MACA,oBAAO,oBAAoB,CAAC,SAAS,SAAU,SAAS,KAAC,sCAAU,CAAC,IAAI,CAAC,CAAE;AAAA,MAC3E;AAAA,IAAO;AAAA,IAAqB,CAAC,SAAS,SACpC,aACI,0BAAY;AAAA,MACV,kBAAkB;AAAA;AAAA,QAEhB,WAAW,CAACC,OAAM,MAAM,UAAiB;AACvC,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,IACD,CAAC;AAAA,EACP;AAAA,MACA;AAAA,IAAO;AAAA,IAAc,CAAC,SAAS,SAC7B,aACI,6BAAW;AAAA,MACT,UAAU,MAAe;AACvB,cAAM,MAAM,SAAS,cAAc,KAAK;AACxC,YAAI,YAAY,OAAO,gBAAgB;AACvC,eAAO;AAAA,MACT;AAAA,MACA,kBAAkB;AAAA;AAAA,QAEhB,WAAW,CAACA,OAAM,MAAM,UAAiB;AACvC,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,IACD,CAAC;AAAA,EACP;AAAA,MACA;AAAA,IAAO;AAAA,IAAoB,CAAC,SAAS,SACnC,SAAS,yCAAuB,CAAC;AAAA,EACnC;AAAA,MAEA,iBAAI,YAAY,CAAC,EAAE,MAAAA,MAAK,MAAM,MAAM;AAClC,IAAAA,MAAK,SAAS;AAAA,MACZ,WAAW;AAAA,IACb,CAAC;AAAA,EACH,CAAC;AACH;AAIA,OAAO,SAAS,UAAU,WAAW;AACrC,OAAO,SAAS,SAAS,UAAU;AAQnC,IAAO,gBAAQ;","names":["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 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 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 { 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","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.d92d50",
3
+ "version": "0.1.0-alpha.fb1762",
4
4
  "description": "preset-code",
5
5
  "license": "MIT",
6
6
  "author": "fengzilong",
@@ -24,17 +24,18 @@
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.d92d50",
28
- "@coze-editor/core-plugins": "0.1.0-alpha.d92d50",
29
- "@coze-editor/extension-completion-icons": "0.1.0-alpha.d92d50",
30
- "@coze-editor/extension-links": "0.1.0-alpha.d92d50",
31
- "@coze-editor/extension-lint": "0.1.0-alpha.d92d50",
32
- "@coze-editor/extension-scrollbar": "0.1.0-alpha.d92d50",
33
- "@coze-editor/extensions": "0.1.0-alpha.d92d50",
34
- "@coze-editor/preset-universal": "0.1.0-alpha.d92d50",
35
- "@coze-editor/utils": "0.1.0-alpha.d92d50",
36
- "@coze-editor/vscode": "0.1.0-alpha.d92d50",
27
+ "@coze-editor/core": "0.1.0-alpha.fb1762",
28
+ "@coze-editor/core-plugins": "0.1.0-alpha.fb1762",
29
+ "@coze-editor/extension-completion-icons": "0.1.0-alpha.fb1762",
30
+ "@coze-editor/extension-links": "0.1.0-alpha.fb1762",
31
+ "@coze-editor/extension-lint": "0.1.0-alpha.fb1762",
32
+ "@coze-editor/extension-scrollbar": "0.1.0-alpha.fb1762",
33
+ "@coze-editor/extensions": "0.1.0-alpha.fb1762",
34
+ "@coze-editor/preset-universal": "0.1.0-alpha.fb1762",
35
+ "@coze-editor/utils": "0.1.0-alpha.fb1762",
36
+ "@coze-editor/vscode": "0.1.0-alpha.fb1762",
37
37
  "@lezer/highlight": "~1.2.0",
38
+ "@nozbe/microfuzz": "^1.0.0",
38
39
  "codemirror-shiki": "^0.2.2",
39
40
  "marked": "^15.0.7",
40
41
  "marked-shiki": "^1.2.0",
@@ -59,7 +60,7 @@
59
60
  "@codemirror/commands": "^6.3.3",
60
61
  "@codemirror/state": "^6.4.1",
61
62
  "@codemirror/view": "^6.26.1",
62
- "@coze-editor/code-language-shared": "0.1.0-alpha.d92d50"
63
+ "@coze-editor/code-language-shared": "0.1.0-alpha.fb1762"
63
64
  },
64
65
  "packageManager": "pnpm@9.15.0",
65
66
  "publishConfig": {