@coze-editor/preset-code 0.1.0-alpha.c2621d → 0.1.0-alpha.c9f325

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
@@ -60,7 +60,6 @@ var vscodeDark = [
60
60
  import {
61
61
  MarkupContent as MarkupContent2
62
62
  } from "vscode-languageserver-types";
63
- import shiki from "codemirror-shiki";
64
63
  import createFuzzySearch from "@nozbe/microfuzz";
65
64
  import { linter } from "@coze-editor/extension-lint";
66
65
  import { links } from "@coze-editor/extension-links";
@@ -73,11 +72,12 @@ import {
73
72
  hoverTooltip,
74
73
  ViewPlugin as ViewPlugin3
75
74
  } from "@codemirror/view";
75
+ import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
76
76
  import {
77
77
  EditorSelection,
78
78
  StateField as StateField2
79
79
  } from "@codemirror/state";
80
- import { LanguageSupport } from "@codemirror/language";
80
+ import { LanguageSupport, syntaxHighlighting as syntaxHighlighting2 } from "@codemirror/language";
81
81
  import {
82
82
  autocompletion,
83
83
  insertCompletionText,
@@ -433,15 +433,7 @@ var LanguagesRegistry = class {
433
433
  const { languageService, language, extensions } = this.languages[id];
434
434
  const langaugeExtensions = [];
435
435
  langaugeExtensions.push(new LanguageSupport(language));
436
- if (id === "typescript" || id === "python" || id === "sql") {
437
- langaugeExtensions.push(
438
- shiki({
439
- highlighter: highlighterPromise,
440
- language: id,
441
- theme: DEFAULT_SYNTAX_THEME
442
- })
443
- );
444
- }
436
+ langaugeExtensions.push(syntaxHighlighting2(oneDarkHighlightStyle));
445
437
  langaugeExtensions.push(
446
438
  StateField2.define({
447
439
  create(state) {
@@ -651,51 +643,56 @@ var LanguagesRegistry = class {
651
643
  return null;
652
644
  }
653
645
  let { items } = completionResult;
654
- const content = state.doc.toString();
655
- const charBefore = content.slice(pos - 1, pos);
646
+ const content = textDocument.getText();
647
+ const charBefore = content.slice(offset - 1, offset);
656
648
  const triggerCharacters = languageService.triggerCharacters ?? [];
657
649
  if (!triggerCharacters.includes(charBefore)) {
658
- let i = pos - 1;
650
+ let i = offset - 1;
659
651
  let query = "";
660
652
  while (i >= 0) {
661
653
  const char = content.slice(i, i + 1);
662
654
  if (char === "\n") {
663
655
  break;
664
656
  }
665
- if (!identRe.test(char) && i + 1 <= pos) {
657
+ if (!identRe.test(char) && i + 1 <= offset) {
666
658
  break;
667
659
  }
668
660
  i--;
669
661
  }
670
- query = content.slice(i + 1, pos);
662
+ query = content.slice(i + 1, offset);
671
663
  if (query) {
672
664
  const fuzzySearch = createFuzzySearch(items, {
673
665
  key: "label"
674
666
  });
675
- items = fuzzySearch(query).map((v) => ({
676
- ...v.item,
677
- textEdit: {
678
- range: {
679
- start: textDocument.positionAt(i + 1),
680
- end: textDocument.positionAt(pos)
681
- },
682
- newText: v.item.label
683
- },
684
- data: {
685
- matches: v.matches.reduce((memo, current) => {
686
- if (!current) {
687
- return memo;
688
- }
689
- return [
690
- ...memo,
691
- ...current.reduce(
692
- (m, c) => [...m, c[0], c[1] + 1],
693
- []
694
- )
695
- ];
696
- }, [])
667
+ items = fuzzySearch(query).map((v) => {
668
+ const finalItem = {
669
+ ...v.item,
670
+ data: {
671
+ matches: v.matches.reduce((memo, current) => {
672
+ if (!current) {
673
+ return memo;
674
+ }
675
+ return [
676
+ ...memo,
677
+ ...current.reduce(
678
+ (m, c) => [...m, c[0], c[1] + 1],
679
+ []
680
+ )
681
+ ];
682
+ }, [])
683
+ }
684
+ };
685
+ if (!finalItem.textEdit) {
686
+ finalItem.textEdit = {
687
+ range: {
688
+ start: textDocument.positionAt(i + 1),
689
+ end: textDocument.positionAt(offset)
690
+ },
691
+ newText: v.item.label
692
+ };
697
693
  }
698
- }));
694
+ return finalItem;
695
+ });
699
696
  } else if (Array.isArray(languageService.triggerCharacters)) {
700
697
  items = [];
701
698
  }
@@ -975,7 +972,7 @@ import {
975
972
  defaultHighlightStyle,
976
973
  foldKeymap,
977
974
  indentOnInput,
978
- syntaxHighlighting as syntaxHighlighting2
975
+ syntaxHighlighting as syntaxHighlighting3
979
976
  } from "@codemirror/language";
980
977
  import {
981
978
  defaultKeymap,
@@ -998,7 +995,7 @@ var basicSetup = (() => [
998
995
  dropCursor(),
999
996
  EditorState2.allowMultipleSelections.of(true),
1000
997
  indentOnInput(),
1001
- syntaxHighlighting2(defaultHighlightStyle, { fallback: true }),
998
+ syntaxHighlighting3(defaultHighlightStyle, { fallback: true }),
1002
999
  closeBrackets(),
1003
1000
  autocompletion2(),
1004
1001
  rectangularSelection(),
@@ -1019,7 +1016,7 @@ var basicSetup = (() => [
1019
1016
  import { EditorView as EditorView3 } from "@codemirror/view";
1020
1017
  import {
1021
1018
  HighlightStyle as HighlightStyle2,
1022
- syntaxHighlighting as syntaxHighlighting3
1019
+ syntaxHighlighting as syntaxHighlighting4
1023
1020
  } from "@codemirror/language";
1024
1021
  var createTheme = ({ variant, settings, styles }) => {
1025
1022
  const bracketTheme = (settings.bracketColors ?? []).reduce(
@@ -1081,7 +1078,7 @@ var createTheme = ({ variant, settings, styles }) => {
1081
1078
  }
1082
1079
  );
1083
1080
  const highlightStyle = HighlightStyle2.define(styles);
1084
- const extension2 = [theme, syntaxHighlighting3(highlightStyle)];
1081
+ const extension2 = [theme, syntaxHighlighting4(highlightStyle)];
1085
1082
  return extension2;
1086
1083
  };
1087
1084
  var create_theme_default = createTheme;
@@ -1091,7 +1088,7 @@ import "@coze-editor/extension-scrollbar/dist/index.css";
1091
1088
  import "@coze-editor/extension-completion-icons/dist/index.css";
1092
1089
 
1093
1090
  // src/transformer.ts
1094
- import { Text } from "text-mapping";
1091
+ import { Text } from "@coze-editor/utils";
1095
1092
  var transformerCreator = (processor) => (source) => {
1096
1093
  const text = processor(new Text(source));
1097
1094
  return {
@@ -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-tooltip.cm-completionInfo': {\n padding: '6px 9px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-hover p': {\n margin: 0,\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport shiki from 'codemirror-shiki';\nimport createFuzzySearch from '@nozbe/microfuzz';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport { highlighterPromise } from './highlighter';\nimport gotoDefinition from './goto-definition';\nimport { DEFAULT_SYNTAX_THEME, LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nconst identRe = /^[\\w$]+$/;\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n // TODO: use shiki for all languages\n // Only use shiki for TypeScript, Python, SQL temporarily\n if (id === 'typescript' || id === 'python' || id === 'sql') {\n langaugeExtensions.push(\n shiki({\n highlighter: highlighterPromise,\n language: id,\n theme: DEFAULT_SYNTAX_THEME,\n }),\n );\n }\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n EditorView.theme({\n '.cm-completionInfo p': {\n margin: 0,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n color: '#4daafc',\n },\n }),\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n let { items } = completionResult;\n const content = state.doc.toString();\n const charBefore = content.slice(pos - 1, pos);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = pos - 1;\n let query = '';\n\n while (i >= 0) {\n const char = content.slice(i, i + 1);\n\n if (char === '\\n') {\n break;\n }\n\n if (!identRe.test(char) && i + 1 <= pos) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, pos);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => ({\n ...v.item,\n textEdit: {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(pos),\n },\n newText: v.item.label,\n },\n data: {\n matches: v.matches.reduce<number[]>((memo, current) => {\n if (!current) {\n return memo;\n }\n\n return [\n ...memo,\n ...current.reduce<number[]>(\n (m, c) => [...m, c[0], c[1] + 1],\n [],\n ),\n ];\n }, []),\n },\n }));\n } else if (Array.isArray(languageService.triggerCharacters)) {\n // empty items if query is empty\n // e.g. type whitespace in JSON editor\n items = [];\n }\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n let resolveCompletion: Completion['info'] = undefined;\n if (typeof languageService.resolveCompletionItem === 'function') {\n resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n }\n\n const matchesMapping = new WeakMap();\n\n for (const item of items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n matchesMapping.set(completion, item.data?.matches);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n getMatch(completion) {\n return matchesMapping.get(completion) ?? [];\n },\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createOnigurumaEngine } from 'shiki/engine/oniguruma';\nimport { createHighlighterCore } from 'shiki/core';\n\n// const highlighterPromise = createHighlighter({\n// langs: ['md', 'js', 'ts', 'python'],\n// themes: ['github-dark', 'one-dark-pro'],\n// });\n\nconst highlighterPromise = createHighlighterCore({\n langs: [\n () => import('@shikijs/langs/markdown'),\n () => import('@shikijs/langs/javascript'),\n () => import('@shikijs/langs/typescript'),\n () => import('@shikijs/langs/python'),\n () => import('@shikijs/langs/sql'),\n ],\n themes: [\n () => import('@shikijs/themes/github-dark'),\n () => import('@shikijs/themes/one-dark-pro'),\n ],\n engine: createOnigurumaEngine(import('shiki/wasm')),\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from 'text-mapping';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":"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","names":["textDocumentField","EditorView","MarkupContent","EditorView","ViewPlugin","StateField","view","ViewPlugin","Facet","view","MarkupContent","StateField","ViewPlugin","view","_a","EditorView","range","links","controller","keymap","EditorState","syntaxHighlighting","autocompletion","EditorView","HighlightStyle","syntaxHighlighting","extension","textDocumentField","EditorView","view"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/themes.ts","../../src/theme-vscode.ts","../../src/language-registry.ts","../../src/signature-help.ts","../../src/markdown.ts","../../src/highlighter.ts","../../src/const.ts","../../src/goto-definition.ts","../../src/extension/tab-size/index.ts","../../src/extension/basic-setup.ts","../../src/create-theme.ts","../../src/transformer.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport universal from '@coze-editor/preset-universal';\nimport {\n scrollBeyondLastLine,\n colorizationBrackets,\n matchingBrackets,\n} from '@coze-editor/extensions';\nimport { scrollbar } from '@coze-editor/extension-scrollbar';\nimport { icons } from '@coze-editor/extension-completion-icons';\nimport { maxHeight, minHeight, height } from '@coze-editor/core-plugins';\nimport {\n api,\n extension,\n type InferEditorAPIFromPlugins,\n option,\n} from '@coze-editor/core';\nimport {\n uriFacet,\n languageIdFacet,\n transformerFacet,\n textDocumentField,\n type Transformer,\n} from '@coze-editor/code-language-shared';\nimport { EditorView, lineNumbers } from '@codemirror/view';\nimport { Prec } from '@codemirror/state';\nimport { foldGutter } from '@codemirror/language';\n\nimport { themes } from './themes';\nimport { vscodeDark, vscodeLight } from './theme-vscode';\nimport { languages } from './language-registry';\nimport { tabSize } from './extension/tab-size';\nimport { basicSetup } from './extension/basic-setup';\nimport createTheme, { type Theme } from './create-theme';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nimport '@coze-editor/extension-scrollbar/dist/index.css';\nimport '@coze-editor/extension-completion-icons/dist/index.css';\n\nconst SVG_FOLD_CLOSE =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619z\" clip-rule=\"evenodd\"/></svg>';\nconst SVG_FOLD_OPEN =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m7.976 10.072l4.357-4.357l.62.618L8.284 11h-.618L3 6.333l.619-.618z\" clip-rule=\"evenodd\"/></svg>';\n\nconst preset = [\n ...universal,\n\n extension([\n basicSetup,\n matchingBrackets,\n // indentGuides(),\n icons,\n textDocumentField,\n\n Prec.low(\n EditorView.theme({\n '.cm-foldGutter .cm-gutterElement': {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-link': {\n textDecoration: 'underline',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-tooltip': {\n borderRadius: '5px',\n fontSize: '12px',\n },\n '.cm-diagnostic-error': {\n borderLeft: 'none',\n },\n '.cm-diagnostic': {\n padding: '5px 10px',\n },\n '.cm-lineNumbers': {\n userSelect: 'none',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul': {\n width: '264px',\n padding: '4px',\n },\n '.cm-completionInfo': {\n minWidth: '200px',\n margin: '0 2px',\n },\n '.cm-tooltip.cm-completionInfo': {\n padding: '6px 9px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-hover p': {\n margin: 0,\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","/* eslint-disable complexity */\n/* eslint-disable max-lines-per-function */\n// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport createFuzzySearch from '@nozbe/microfuzz';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport, syntaxHighlighting } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport gotoDefinition from './goto-definition';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nconst identRe = /^[\\w$]+$/;\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n langaugeExtensions.push(syntaxHighlighting(oneDarkHighlightStyle));\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n EditorView.theme({\n '.cm-completionInfo p': {\n margin: 0,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n color: '#4daafc',\n },\n }),\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n let { items } = completionResult;\n const content = textDocument.getText();\n const charBefore = content.slice(offset - 1, offset);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = offset - 1;\n let query = '';\n\n while (i >= 0) {\n const char = content.slice(i, i + 1);\n\n if (char === '\\n') {\n break;\n }\n\n if (!identRe.test(char) && i + 1 <= offset) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, offset);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => {\n const finalItem = {\n ...v.item,\n data: {\n matches: v.matches.reduce<number[]>((memo, current) => {\n if (!current) {\n return memo;\n }\n\n return [\n ...memo,\n ...current.reduce<number[]>(\n (m, c) => [...m, c[0], c[1] + 1],\n [],\n ),\n ];\n }, []),\n },\n };\n if (!finalItem.textEdit) {\n finalItem.textEdit = {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(offset),\n },\n newText: v.item.label,\n };\n }\n return finalItem;\n });\n } else if (Array.isArray(languageService.triggerCharacters)) {\n // empty items if query is empty\n // e.g. type whitespace in JSON editor\n items = [];\n }\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n let resolveCompletion: Completion['info'] = undefined;\n if (typeof languageService.resolveCompletionItem === 'function') {\n resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n }\n\n const matchesMapping = new WeakMap();\n\n for (const item of items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n matchesMapping.set(completion, item.data?.matches);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n getMatch(completion) {\n return matchesMapping.get(completion) ?? [];\n },\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createOnigurumaEngine } from 'shiki/engine/oniguruma';\nimport { createHighlighterCore } from 'shiki/core';\n\n// const highlighterPromise = createHighlighter({\n// langs: ['md', 'js', 'ts', 'python'],\n// themes: ['github-dark', 'one-dark-pro'],\n// });\n\nconst highlighterPromise = createHighlighterCore({\n langs: [\n () => import('@shikijs/langs/markdown'),\n () => import('@shikijs/langs/javascript'),\n () => import('@shikijs/langs/typescript'),\n () => import('@shikijs/langs/python'),\n () => import('@shikijs/langs/sql'),\n ],\n themes: [\n () => import('@shikijs/themes/github-dark'),\n () => import('@shikijs/themes/one-dark-pro'),\n ],\n engine: createOnigurumaEngine(import('shiki/wasm')),\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from '@coze-editor/utils';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":"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","names":["textDocumentField","EditorView","MarkupContent","EditorView","ViewPlugin","StateField","syntaxHighlighting","view","ViewPlugin","Facet","view","MarkupContent","syntaxHighlighting","StateField","ViewPlugin","view","_a","EditorView","range","links","controller","keymap","EditorState","syntaxHighlighting","autocompletion","EditorView","HighlightStyle","syntaxHighlighting","extension","textDocumentField","EditorView","view"]}
package/dist/index.d.mts CHANGED
@@ -6,7 +6,7 @@ import { InferEditorAPIFromPlugins } from '@coze-editor/core';
6
6
  import { LanguageConfig, Transformer } from '@coze-editor/code-language-shared';
7
7
  export { Transformer } from '@coze-editor/code-language-shared';
8
8
  import { TagStyle } from '@codemirror/language';
9
- import { Text } from 'text-mapping';
9
+ import { Text } from '@coze-editor/utils';
10
10
  export { tags } from '@lezer/highlight';
11
11
 
12
12
  declare const themes: any;
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { InferEditorAPIFromPlugins } from '@coze-editor/core';
6
6
  import { LanguageConfig, Transformer } from '@coze-editor/code-language-shared';
7
7
  export { Transformer } from '@coze-editor/code-language-shared';
8
8
  import { TagStyle } from '@codemirror/language';
9
- import { Text } from 'text-mapping';
9
+ import { Text } from '@coze-editor/utils';
10
10
  export { tags } from '@lezer/highlight';
11
11
 
12
12
  declare const themes: any;
package/dist/index.js CHANGED
@@ -78,12 +78,12 @@ var vscodeDark = [
78
78
 
79
79
  // src/language-registry.ts
80
80
  var import_vscode_languageserver_types2 = require("vscode-languageserver-types");
81
- var import_codemirror_shiki = __toESM(require("codemirror-shiki"));
82
81
  var import_microfuzz = __toESM(require("@nozbe/microfuzz"));
83
82
  var import_extension_lint = require("@coze-editor/extension-lint");
84
83
  var import_extension_links = require("@coze-editor/extension-links");
85
84
  var import_code_language_shared = require("@coze-editor/code-language-shared");
86
85
  var import_view3 = require("@codemirror/view");
86
+ var import_theme_one_dark = require("@codemirror/theme-one-dark");
87
87
  var import_state3 = require("@codemirror/state");
88
88
  var import_language2 = require("@codemirror/language");
89
89
  var import_autocomplete = require("@codemirror/autocomplete");
@@ -426,15 +426,7 @@ var LanguagesRegistry = class {
426
426
  const { languageService, language, extensions } = this.languages[id];
427
427
  const langaugeExtensions = [];
428
428
  langaugeExtensions.push(new import_language2.LanguageSupport(language));
429
- if (id === "typescript" || id === "python" || id === "sql") {
430
- langaugeExtensions.push(
431
- (0, import_codemirror_shiki.default)({
432
- highlighter: highlighterPromise,
433
- language: id,
434
- theme: DEFAULT_SYNTAX_THEME
435
- })
436
- );
437
- }
429
+ langaugeExtensions.push((0, import_language2.syntaxHighlighting)(import_theme_one_dark.oneDarkHighlightStyle));
438
430
  langaugeExtensions.push(
439
431
  import_state3.StateField.define({
440
432
  create(state) {
@@ -644,51 +636,56 @@ var LanguagesRegistry = class {
644
636
  return null;
645
637
  }
646
638
  let { items } = completionResult;
647
- const content = state.doc.toString();
648
- const charBefore = content.slice(pos - 1, pos);
639
+ const content = textDocument.getText();
640
+ const charBefore = content.slice(offset - 1, offset);
649
641
  const triggerCharacters = languageService.triggerCharacters ?? [];
650
642
  if (!triggerCharacters.includes(charBefore)) {
651
- let i = pos - 1;
643
+ let i = offset - 1;
652
644
  let query = "";
653
645
  while (i >= 0) {
654
646
  const char = content.slice(i, i + 1);
655
647
  if (char === "\n") {
656
648
  break;
657
649
  }
658
- if (!identRe.test(char) && i + 1 <= pos) {
650
+ if (!identRe.test(char) && i + 1 <= offset) {
659
651
  break;
660
652
  }
661
653
  i--;
662
654
  }
663
- query = content.slice(i + 1, pos);
655
+ query = content.slice(i + 1, offset);
664
656
  if (query) {
665
657
  const fuzzySearch = (0, import_microfuzz.default)(items, {
666
658
  key: "label"
667
659
  });
668
- items = fuzzySearch(query).map((v) => ({
669
- ...v.item,
670
- textEdit: {
671
- range: {
672
- start: textDocument.positionAt(i + 1),
673
- end: textDocument.positionAt(pos)
674
- },
675
- newText: v.item.label
676
- },
677
- data: {
678
- matches: v.matches.reduce((memo, current) => {
679
- if (!current) {
680
- return memo;
681
- }
682
- return [
683
- ...memo,
684
- ...current.reduce(
685
- (m, c) => [...m, c[0], c[1] + 1],
686
- []
687
- )
688
- ];
689
- }, [])
660
+ items = fuzzySearch(query).map((v) => {
661
+ const finalItem = {
662
+ ...v.item,
663
+ data: {
664
+ matches: v.matches.reduce((memo, current) => {
665
+ if (!current) {
666
+ return memo;
667
+ }
668
+ return [
669
+ ...memo,
670
+ ...current.reduce(
671
+ (m, c) => [...m, c[0], c[1] + 1],
672
+ []
673
+ )
674
+ ];
675
+ }, [])
676
+ }
677
+ };
678
+ if (!finalItem.textEdit) {
679
+ finalItem.textEdit = {
680
+ range: {
681
+ start: textDocument.positionAt(i + 1),
682
+ end: textDocument.positionAt(offset)
683
+ },
684
+ newText: v.item.label
685
+ };
690
686
  }
691
- }));
687
+ return finalItem;
688
+ });
692
689
  } else if (Array.isArray(languageService.triggerCharacters)) {
693
690
  items = [];
694
691
  }
@@ -1056,9 +1053,9 @@ var import_dist = require("@coze-editor/extension-scrollbar/dist/index.css");
1056
1053
  var import_dist2 = require("@coze-editor/extension-completion-icons/dist/index.css");
1057
1054
 
1058
1055
  // src/transformer.ts
1059
- var import_text_mapping = require("text-mapping");
1056
+ var import_utils2 = require("@coze-editor/utils");
1060
1057
  var transformerCreator = (processor) => (source) => {
1061
- const text = processor(new import_text_mapping.Text(source));
1058
+ const text = processor(new import_utils2.Text(source));
1062
1059
  return {
1063
1060
  code: text.toString(),
1064
1061
  mapping: {
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-tooltip.cm-completionInfo': {\n padding: '6px 9px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-hover p': {\n margin: 0,\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport shiki from 'codemirror-shiki';\nimport createFuzzySearch from '@nozbe/microfuzz';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport { highlighterPromise } from './highlighter';\nimport gotoDefinition from './goto-definition';\nimport { DEFAULT_SYNTAX_THEME, LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nconst identRe = /^[\\w$]+$/;\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n // TODO: use shiki for all languages\n // Only use shiki for TypeScript, Python, SQL temporarily\n if (id === 'typescript' || id === 'python' || id === 'sql') {\n langaugeExtensions.push(\n shiki({\n highlighter: highlighterPromise,\n language: id,\n theme: DEFAULT_SYNTAX_THEME,\n }),\n );\n }\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n EditorView.theme({\n '.cm-completionInfo p': {\n margin: 0,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n color: '#4daafc',\n },\n }),\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n let { items } = completionResult;\n const content = state.doc.toString();\n const charBefore = content.slice(pos - 1, pos);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = pos - 1;\n let query = '';\n\n while (i >= 0) {\n const char = content.slice(i, i + 1);\n\n if (char === '\\n') {\n break;\n }\n\n if (!identRe.test(char) && i + 1 <= pos) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, pos);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => ({\n ...v.item,\n textEdit: {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(pos),\n },\n newText: v.item.label,\n },\n data: {\n matches: v.matches.reduce<number[]>((memo, current) => {\n if (!current) {\n return memo;\n }\n\n return [\n ...memo,\n ...current.reduce<number[]>(\n (m, c) => [...m, c[0], c[1] + 1],\n [],\n ),\n ];\n }, []),\n },\n }));\n } else if (Array.isArray(languageService.triggerCharacters)) {\n // empty items if query is empty\n // e.g. type whitespace in JSON editor\n items = [];\n }\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n let resolveCompletion: Completion['info'] = undefined;\n if (typeof languageService.resolveCompletionItem === 'function') {\n resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n }\n\n const matchesMapping = new WeakMap();\n\n for (const item of items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n matchesMapping.set(completion, item.data?.matches);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n getMatch(completion) {\n return matchesMapping.get(completion) ?? [];\n },\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createOnigurumaEngine } from 'shiki/engine/oniguruma';\nimport { createHighlighterCore } from 'shiki/core';\n\n// const highlighterPromise = createHighlighter({\n// langs: ['md', 'js', 'ts', 'python'],\n// themes: ['github-dark', 'one-dark-pro'],\n// });\n\nconst highlighterPromise = createHighlighterCore({\n langs: [\n () => import('@shikijs/langs/markdown'),\n () => import('@shikijs/langs/javascript'),\n () => import('@shikijs/langs/typescript'),\n () => import('@shikijs/langs/python'),\n () => import('@shikijs/langs/sql'),\n ],\n themes: [\n () => import('@shikijs/themes/github-dark'),\n () => import('@shikijs/themes/one-dark-pro'),\n ],\n engine: createOnigurumaEngine(import('shiki/wasm')),\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from 'text-mapping';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":"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","names":["import_core","import_code_language_shared","import_view","import_state","import_language","import_vscode_languageserver_types","import_view","import_state","import_language","markedShiki","view","import_view","import_state","view","shiki","view","_a","createFuzzySearch","range","links","controller","import_state","import_language","import_view","import_state","import_language","import_autocomplete","import_view","import_language","extension","import_dist","universal","view"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/themes.ts","../src/theme-vscode.ts","../src/language-registry.ts","../src/signature-help.ts","../src/markdown.ts","../src/highlighter.ts","../src/const.ts","../src/goto-definition.ts","../src/extension/tab-size/index.ts","../src/extension/basic-setup.ts","../src/create-theme.ts","../src/transformer.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport universal from '@coze-editor/preset-universal';\nimport {\n scrollBeyondLastLine,\n colorizationBrackets,\n matchingBrackets,\n} from '@coze-editor/extensions';\nimport { scrollbar } from '@coze-editor/extension-scrollbar';\nimport { icons } from '@coze-editor/extension-completion-icons';\nimport { maxHeight, minHeight, height } from '@coze-editor/core-plugins';\nimport {\n api,\n extension,\n type InferEditorAPIFromPlugins,\n option,\n} from '@coze-editor/core';\nimport {\n uriFacet,\n languageIdFacet,\n transformerFacet,\n textDocumentField,\n type Transformer,\n} from '@coze-editor/code-language-shared';\nimport { EditorView, lineNumbers } from '@codemirror/view';\nimport { Prec } from '@codemirror/state';\nimport { foldGutter } from '@codemirror/language';\n\nimport { themes } from './themes';\nimport { vscodeDark, vscodeLight } from './theme-vscode';\nimport { languages } from './language-registry';\nimport { tabSize } from './extension/tab-size';\nimport { basicSetup } from './extension/basic-setup';\nimport createTheme, { type Theme } from './create-theme';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nimport '@coze-editor/extension-scrollbar/dist/index.css';\nimport '@coze-editor/extension-completion-icons/dist/index.css';\n\nconst SVG_FOLD_CLOSE =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619z\" clip-rule=\"evenodd\"/></svg>';\nconst SVG_FOLD_OPEN =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m7.976 10.072l4.357-4.357l.62.618L8.284 11h-.618L3 6.333l.619-.618z\" clip-rule=\"evenodd\"/></svg>';\n\nconst preset = [\n ...universal,\n\n extension([\n basicSetup,\n matchingBrackets,\n // indentGuides(),\n icons,\n textDocumentField,\n\n Prec.low(\n EditorView.theme({\n '.cm-foldGutter .cm-gutterElement': {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-link': {\n textDecoration: 'underline',\n },\n }),\n ),\n Prec.low(\n EditorView.theme({\n '.cm-tooltip': {\n borderRadius: '5px',\n fontSize: '12px',\n },\n '.cm-diagnostic-error': {\n borderLeft: 'none',\n },\n '.cm-diagnostic': {\n padding: '5px 10px',\n },\n '.cm-lineNumbers': {\n userSelect: 'none',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul': {\n width: '264px',\n padding: '4px',\n },\n '.cm-completionInfo': {\n minWidth: '200px',\n margin: '0 2px',\n },\n '.cm-tooltip.cm-completionInfo': {\n padding: '6px 9px',\n },\n '.cm-completionInfo p:last-child': {\n display: 'inline-block',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n color: 'inherit',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '1px 9px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '5px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li:not(:first-child)': {\n marginTop: '2px',\n },\n '.cm-completionIcon': {\n fontSize: '11px',\n opacity: '1',\n display: 'flex',\n },\n '.cm-completionLabel': {\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n '.cm-completionDetail': {\n maxWidth: '86px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'right',\n fontStyle: 'initial',\n },\n '.cm-tooltip-autocomplete': {\n borderRadius: '8px',\n },\n '.cm-tooltip-hover': {\n overflowY: 'auto',\n maxHeight: '360px',\n wordBreak: 'break-word',\n },\n '.cm-tooltip-hover p': {\n margin: 0,\n },\n '.cm-tooltip-section:not(:first-child)': {\n 'border-top': 'solid 0.5px #666666ab',\n },\n }),\n ),\n ]),\n\n option('tabSize', tabSize),\n option('height', height),\n option('minHeight', minHeight),\n option('maxHeight', maxHeight),\n option('scrollBeyondLastLine', (use?: boolean) =>\n use ? scrollBeyondLastLine() : [],\n ),\n option('uri', (id: string) => uriFacet.of(id)),\n option('theme', (themeName: string) => themes.get(themeName) ?? []),\n option('languageId', (id: string) => [\n languageIdFacet.of(id),\n languages.getExtension(id),\n ]),\n option('transformer', (transformer: Transformer) =>\n transformerFacet.of(transformer),\n ),\n option('overlayScrollbar', (enable = true) => (enable ? [scrollbar()] : [])),\n option('lineNumbersGutter', (enable = true) =>\n enable\n ? lineNumbers({\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('foldGutter', (enable = true) =>\n enable\n ? foldGutter({\n markerDOM(open: boolean) {\n const dom = document.createElement('div');\n dom.innerHTML = open ? SVG_FOLD_OPEN : SVG_FOLD_CLOSE;\n return dom;\n },\n domEventHandlers: {\n // avoid blur\n mousedown: (view, line, event: Event) => {\n event.preventDefault();\n return false;\n },\n },\n })\n : [],\n ),\n option('colorizeBrackets', (enable = true) =>\n enable ? colorizationBrackets : [],\n ),\n\n api('validate', ({ view }) => () => {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }),\n];\n\ntype EditorAPI = InferEditorAPIFromPlugins<typeof preset>;\n\nthemes.register('_light', vscodeLight);\nthemes.register('_dark', vscodeDark);\n\nexport { languages, themes, createTheme };\n\nexport { transformerCreator } from './transformer';\n\nexport type { Theme, EditorAPI, Transformer };\n\nexport default preset;\n\nexport { tags } from '@lezer/highlight';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { type Extension } from '@codemirror/state';\n\nclass Themes {\n _store: Record<string, Extension> = Object.create(null);\n\n register(name: string, theme: Extension) {\n this._store[name] = theme;\n }\n\n get(name: string) {\n return this._store[name];\n }\n}\n\nconst symbol = Symbol.for('codemirror.themes');\n\nif (!(globalThis as any)[symbol]) {\n (globalThis as any)[symbol] = new Themes();\n}\n\nconst themes = (globalThis as any)[symbol];\n\nexport { themes };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n darkSyntaxTheme,\n darkTheme,\n lightSyntaxTheme,\n lightTheme,\n} from '@coze-editor/vscode';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\n\nexport const vscodeLight = [\n syntaxHighlighting(HighlightStyle.define(lightSyntaxTheme)),\n lightTheme(),\n];\n\nexport const vscodeDark = [\n syntaxHighlighting(HighlightStyle.define(darkSyntaxTheme)),\n darkTheme(),\n];\n","/* eslint-disable complexity */\n/* eslint-disable max-lines-per-function */\n// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n type CompletionItemKind,\n type InsertTextFormat,\n MarkupContent,\n type CompletionItem,\n} from 'vscode-languageserver-types';\nimport createFuzzySearch from '@nozbe/microfuzz';\nimport { type Diagnostic, linter } from '@coze-editor/extension-lint';\nimport { type Link, links } from '@coze-editor/extension-links';\nimport {\n type LanguageConfig,\n MarkerTag,\n textDocumentField,\n type LanguageService,\n} from '@coze-editor/code-language-shared';\nimport {\n EditorView,\n hoverTooltip,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport {\n EditorSelection,\n type EditorState,\n type Extension,\n StateField,\n} from '@codemirror/state';\nimport { LanguageSupport, syntaxHighlighting } from '@codemirror/language';\nimport {\n autocompletion,\n type Completion,\n insertCompletionText,\n snippet,\n} from '@codemirror/autocomplete';\n\nimport { signatureHelp } from './signature-help';\nimport { renderMarkdown } from './markdown';\nimport gotoDefinition from './goto-definition';\nimport { LINT_REFRESH_USER_EVENT } from './const';\n\nfunction formatContents(contents: MarkupContent | string | string[]): string {\n if (MarkupContent.is(contents)) {\n const { value } = contents;\n if (contents.kind === 'markdown') {\n // value = marked.parse(value);\n }\n return value;\n } else if (Array.isArray(contents)) {\n return contents.map(c => `${formatContents(c)}\\n\\n`).join('');\n } else if (typeof contents === 'string') {\n return contents;\n }\n\n return '';\n}\n\nconst identRe = /^[\\w$]+$/;\n\nclass LanguagesRegistry {\n private languages: Record<string, LanguageConfig> = {};\n\n public register(id: string, options: LanguageConfig) {\n if (!this.languages[id]) {\n this.languages[id] = options;\n }\n\n return () => {\n delete this.languages[id];\n };\n }\n\n public get(languageId: string): LanguageConfig {\n return this.languages[languageId];\n }\n\n public getExtension(id: string) {\n if (!this.languages[id]) {\n return [];\n }\n\n const { languageService, language, extensions } = this.languages[id];\n\n const langaugeExtensions: Extension[] = [];\n\n langaugeExtensions.push(new LanguageSupport(language));\n\n langaugeExtensions.push(syntaxHighlighting(oneDarkHighlightStyle));\n\n langaugeExtensions.push(\n StateField.define({\n create(state) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n },\n update(_value, tr) {\n if (tr.docChanged) {\n if (languageService?.onTextDocumentDidChange) {\n const { textDocument } = tr.state.field(textDocumentField);\n languageService.onTextDocumentDidChange({\n textDocument,\n });\n }\n }\n },\n }),\n );\n\n if (languageService && languageService.doValidation) {\n langaugeExtensions.push(\n ViewPlugin.fromClass(\n class {\n toDispose: (() => void) | undefined;\n constructor(view: EditorView) {\n function onRefreshDiagnostics() {\n view.dispatch({\n userEvent: LINT_REFRESH_USER_EVENT,\n });\n }\n\n languageService!.events?.on(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n\n this.toDispose = () => {\n languageService!.events?.off(\n 'refresh-diagnostics',\n onRefreshDiagnostics,\n );\n };\n }\n\n destroy() {\n if (typeof this.toDispose === 'function') {\n this.toDispose();\n }\n }\n },\n ),\n EditorView.theme({\n '.cm-tooltip-lint': {\n maxWidth: '360px',\n },\n '.cm-lint-tag-unnecessary': {\n opacity: '0.5',\n },\n '.cm-lint-tag-deprecated': {\n textDecoration: 'line-through',\n },\n '.cm-lintRange-hint.cm-lint-tag-deprecated': {\n backgroundImage: 'unset',\n },\n '.cm-lintRange-hint.cm-lint-tag-unnecessary': {\n backgroundImage: 'unset',\n },\n }),\n );\n langaugeExtensions.push(\n linter(\n async (view: EditorView) => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const diagnostics = await languageService.doValidation!({\n textDocument,\n });\n\n const finalDiagnostics: Diagnostic[] = diagnostics\n .map(diagnostic => {\n const range = originalRangeFor({\n from: diagnostic.from,\n to: diagnostic.to,\n });\n if (range) {\n let markClass = '';\n if (diagnostic.tags?.includes(MarkerTag.Unnecessary)) {\n markClass += 'cm-lint-tag-unnecessary';\n }\n if (diagnostic.tags?.includes(MarkerTag.Deprecated)) {\n markClass += 'cm-lint-tag-deprecated';\n }\n return {\n ...diagnostic,\n markClass,\n ...range,\n };\n }\n })\n .filter(v => isDiagnostic(v));\n\n languageService.events?.emit('diagnostics', {\n uri: textDocument.uri,\n diagnostics: finalDiagnostics.map(d => ({\n from: d.from,\n to: d.to,\n message: d.message,\n severity: d.severity,\n })),\n });\n\n return finalDiagnostics;\n },\n {\n delay: languageService.options?.lintDelay ?? 100,\n needsRefresh(update: ViewUpdate) {\n return update.transactions.some(tr =>\n tr.isUserEvent(LINT_REFRESH_USER_EVENT),\n );\n },\n },\n ),\n );\n }\n\n if (languageService?.doHover) {\n langaugeExtensions.push(\n hoverTooltip(async (view, pos) => {\n const { textDocument, generatedOffsetFor } =\n view.state.field(textDocumentField);\n const offset = generatedOffsetFor(pos);\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doHover!({\n textDocument,\n offset,\n });\n\n if (!result) {\n return null;\n }\n\n const html = await renderMarkdown(formatContents(result));\n\n const word = view.state.wordAt(offset);\n\n return {\n pos: word?.from ?? offset,\n end: word?.to ?? offset,\n create() {\n const dom = document.createElement('div');\n dom.classList.add('cm-code-hover');\n dom.innerHTML = html;\n\n dom.style.cssText = 'padding: 5px 10px;max-width: 360px;';\n return {\n dom,\n };\n },\n };\n }),\n EditorView.theme({\n '.cm-code-hover a': {\n color: '#3b98ff',\n },\n '.cm-code-hover pre': {\n margin: '0',\n },\n }),\n );\n }\n\n if (languageService?.doSignatureHelp) {\n langaugeExtensions.push(\n signatureHelp(async (state: EditorState, pos: number) => {\n const { textDocument, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const result = await languageService.doSignatureHelp!({\n textDocument,\n offset,\n });\n\n return result;\n }),\n );\n }\n\n if (languageService?.doComplete) {\n langaugeExtensions.push(\n EditorView.theme({\n '.cm-completionInfo p': {\n margin: 0,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n color: '#4daafc',\n },\n }),\n autocompletion({\n override: [\n async function ({ state, pos, view }) {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const completionResult = await languageService.doComplete!({\n textDocument,\n offset,\n });\n\n if (\n !completionResult ||\n !Array.isArray(completionResult.items) ||\n completionResult.items.length === 0\n ) {\n return null;\n }\n\n let { items } = completionResult;\n const content = textDocument.getText();\n const charBefore = content.slice(offset - 1, offset);\n const triggerCharacters = languageService.triggerCharacters ?? [];\n if (!triggerCharacters.includes(charBefore)) {\n let i = offset - 1;\n let query = '';\n\n while (i >= 0) {\n const char = content.slice(i, i + 1);\n\n if (char === '\\n') {\n break;\n }\n\n if (!identRe.test(char) && i + 1 <= offset) {\n break;\n }\n i--;\n }\n\n query = content.slice(i + 1, offset);\n\n if (query) {\n const fuzzySearch = createFuzzySearch(items, {\n key: 'label',\n });\n items = fuzzySearch(query).map(v => {\n const finalItem = {\n ...v.item,\n data: {\n matches: v.matches.reduce<number[]>((memo, current) => {\n if (!current) {\n return memo;\n }\n\n return [\n ...memo,\n ...current.reduce<number[]>(\n (m, c) => [...m, c[0], c[1] + 1],\n [],\n ),\n ];\n }, []),\n },\n };\n if (!finalItem.textEdit) {\n finalItem.textEdit = {\n range: {\n start: textDocument.positionAt(i + 1),\n end: textDocument.positionAt(offset),\n },\n newText: v.item.label,\n };\n }\n return finalItem;\n });\n } else if (Array.isArray(languageService.triggerCharacters)) {\n // empty items if query is empty\n // e.g. type whitespace in JSON editor\n items = [];\n }\n }\n\n const completionOptions: Completion[] = [];\n\n const mapping = new WeakMap();\n let resolveCompletion: Completion['info'] = undefined;\n if (typeof languageService.resolveCompletionItem === 'function') {\n resolveCompletion = createResolveCompletion(\n view,\n languageService,\n mapping,\n );\n }\n\n const matchesMapping = new WeakMap();\n\n for (const item of items) {\n const { kind, label, textEdit, textEditText } = item;\n\n const completion: Completion = {\n label,\n type: defaultFromCompletionItemKind(kind),\n detail: item.detail ?? '',\n };\n\n mapping.set(completion, item);\n matchesMapping.set(completion, item.data?.matches);\n\n if (textEdit) {\n const range =\n 'range' in textEdit ? textEdit.range : textEdit.replace;\n const from = textDocument.offsetAt(range.start);\n const to = textDocument.offsetAt(range.end);\n\n const oRange = originalRangeFor({\n from,\n to,\n });\n\n if (!oRange) {\n continue;\n }\n\n const insert = textEdit.newText;\n const { insertTextFormat } = item;\n\n completion.apply = view => {\n if (\n insertTextFormat ===\n (2 satisfies typeof InsertTextFormat.Snippet)\n ) {\n snippet(\n addAnchor(\n insert\n .replace(/\\$(\\d+)/g, '$${$1}')\n .replace(/\\\\\\$/g, '$'),\n ),\n )(view, completion, oRange.from, oRange.to);\n } else {\n view.dispatch(\n insertCompletionText(\n view.state,\n insert,\n oRange.from,\n oRange.to,\n ),\n );\n }\n };\n } else if (textEditText) {\n completion.apply = textEditText;\n }\n\n completion.info = resolveCompletion;\n\n completionOptions.push(completion);\n }\n\n return {\n from: pos,\n options: completionOptions,\n filter: false,\n getMatch(completion) {\n return matchesMapping.get(completion) ?? [];\n },\n };\n },\n ],\n }),\n );\n }\n\n if (languageService?.findDefinition) {\n langaugeExtensions.push(\n gotoDefinition(async ({ pos, view }) => {\n const { textDocument, originalRangeFor, generatedRangeFor } =\n view.state.field(textDocumentField);\n const range = generatedRangeFor({ from: pos, to: pos });\n const offset = range?.from;\n\n if (typeof offset !== 'number') {\n return null;\n }\n\n const definitions = await languageService.findDefinition!({\n textDocument,\n offset,\n });\n\n if (!Array.isArray(definitions) || definitions.length === 0) {\n return;\n }\n\n const definition = definitions[0];\n\n const oRange = originalRangeFor({\n from: definition.from,\n to: definition.to,\n });\n\n if (!oRange) {\n return;\n }\n\n view.dispatch({\n effects: EditorView.scrollIntoView(oRange.from, {\n y: 'center',\n }),\n selection: EditorSelection.range(oRange.from, oRange.to),\n });\n }),\n );\n }\n\n if (languageService?.findLinks) {\n langaugeExtensions.push(\n links(async view => {\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n const links = await languageService.findLinks!({\n textDocument,\n });\n\n return links\n .map(link => {\n const range = originalRangeFor(link.range);\n if (!range) {\n return;\n }\n return {\n range,\n target: link.target,\n };\n })\n .filter(v => isLink(v));\n }),\n );\n }\n\n if (extensions) {\n langaugeExtensions.push(extensions);\n }\n\n return langaugeExtensions;\n }\n}\n\nfunction createResolveCompletion(\n view: EditorView | undefined,\n languageService: LanguageService,\n mapping: WeakMap<Completion, CompletionItem>,\n) {\n const dom = document.createElement('div');\n let controller = new AbortController();\n\n function hideDOM(controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.style.display = 'none';\n }\n }\n\n function showDOM(html: string, controller: AbortController) {\n if (!controller.signal.aborted) {\n dom.innerHTML = html;\n dom.style.display = 'block';\n }\n }\n\n return (completion: Completion) => {\n controller.abort();\n controller = new AbortController();\n\n const closureController = controller;\n\n (async () => {\n const completionItem = mapping.get(completion);\n if (\n !view ||\n !completionItem ||\n typeof languageService.resolveCompletionItem !== 'function'\n ) {\n hideDOM(closureController);\n return;\n }\n\n const { textDocument, originalRangeFor } =\n view.state.field(textDocumentField);\n\n const oRange = originalRangeFor({\n from: view.state.selection.main.from,\n to: view.state.selection.main.from,\n });\n\n if (!oRange) {\n hideDOM(closureController);\n return;\n }\n\n const details = await languageService.resolveCompletionItem(\n {\n textDocument,\n offset: oRange.from,\n },\n completionItem,\n );\n\n if (!details.detail && !details.documentation) {\n hideDOM(closureController);\n return;\n }\n\n const documentationString = MarkupContent.is(details.documentation)\n ? await renderMarkdown(details.documentation.value)\n : (details.documentation ?? '');\n\n const html = [\n `<div style=\"opacity: 0.8;white-space: pre-wrap;\">${\n details.detail ?? ''\n }</div>`,\n details.documentation ? '<br />' : '',\n `<div>${documentationString}</div>`,\n ].join('');\n\n if (!closureController.signal.aborted) {\n showDOM(html, closureController);\n }\n })();\n\n return dom;\n };\n}\n\nfunction isDiagnostic(v: unknown): v is Diagnostic {\n return Boolean(v);\n}\n\nfunction isLink(v: unknown): v is Link {\n return Boolean(v);\n}\n\nfunction addAnchor(str: string) {\n if (!str.includes('${')) {\n return `${str}\\${0}`;\n }\n\n return str;\n}\n\nfunction defaultFromCompletionItemKind(\n kind: CompletionItemKind | undefined,\n): string {\n switch (kind) {\n case 1 satisfies typeof CompletionItemKind.Text:\n return 'text';\n\n case 15 satisfies typeof CompletionItemKind.Snippet:\n return 'snippet';\n\n case 2 satisfies typeof CompletionItemKind.Method:\n return 'method';\n\n case 3 satisfies typeof CompletionItemKind.Function:\n return 'function';\n\n case 4 satisfies typeof CompletionItemKind.Constructor:\n return 'constructor';\n\n case 7 satisfies typeof CompletionItemKind.Class:\n return 'class';\n\n case 5 satisfies typeof CompletionItemKind.Field:\n return 'field';\n\n case 10 satisfies typeof CompletionItemKind.Property:\n return 'property';\n\n case 6 satisfies typeof CompletionItemKind.Variable:\n return 'variable';\n\n case 18 satisfies typeof CompletionItemKind.Reference:\n return 'reference';\n\n case 23 satisfies typeof CompletionItemKind.Event:\n return 'event';\n\n case 8 satisfies typeof CompletionItemKind.Interface:\n return 'interface';\n\n case 22 satisfies typeof CompletionItemKind.Struct:\n return 'struct';\n\n case 25 satisfies typeof CompletionItemKind.TypeParameter:\n return 'typeParameter';\n\n case 9 satisfies typeof CompletionItemKind.Module:\n return 'module';\n\n case 12 satisfies typeof CompletionItemKind.Value:\n return 'value';\n\n case 13 satisfies typeof CompletionItemKind.Enum:\n case 20 satisfies typeof CompletionItemKind.EnumMember:\n return 'enum';\n\n case 11 satisfies typeof CompletionItemKind.Unit:\n return 'unit';\n\n case 14 satisfies typeof CompletionItemKind.Keyword:\n return 'keyword';\n\n case 24 satisfies typeof CompletionItemKind.Operator:\n return 'operator';\n\n case 16 satisfies typeof CompletionItemKind.Color:\n return 'color';\n\n case 21 satisfies typeof CompletionItemKind.Constant:\n return 'constant';\n\n default:\n return 'value';\n }\n}\n\nexport const languages = new LanguagesRegistry();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n MarkupContent,\n type ParameterInformation,\n type SignatureHelp,\n} from 'vscode-languageserver-types';\nimport {\n type Command,\n EditorView,\n type KeyBinding,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n showTooltip,\n} from '@codemirror/view';\nimport {\n type EditorState,\n Facet,\n StateEffect,\n StateField,\n} from '@codemirror/state';\n\nimport { renderMarkdown } from './markdown';\n\nexport const setSignatureHelpRequestPosition = StateEffect.define<number>({});\n\nexport const setSignatureHelpResult = StateEffect.define<string | null>({});\n\nclass SignatureHelpState {\n pos: number;\n // maybe stale\n result: string | null;\n\n constructor(pos: number, result: string | null) {\n if (result && pos === -1) {\n throw new Error('Invalid state');\n }\n this.pos = pos;\n this.result = result;\n }\n}\n\nconst signatureHelpTooltipField: StateField<SignatureHelpState> =\n StateField.define<SignatureHelpState>({\n create: () => new SignatureHelpState(-1, null),\n update(state, tr) {\n let { pos, result } = state;\n for (const effect of tr.effects) {\n if (effect.is(setSignatureHelpRequestPosition)) {\n pos = effect.value;\n } else if (effect.is(setSignatureHelpResult)) {\n result = effect.value;\n if (!result) {\n pos = -1;\n }\n }\n }\n if (pos === -1) {\n result = null;\n }\n\n pos = pos === -1 ? -1 : tr.changes.mapPos(pos);\n if (state.pos === pos && state.result === result) {\n return state;\n }\n return new SignatureHelpState(pos, result);\n },\n provide: f =>\n showTooltip.compute([f], state => {\n const val = state.field(signatureHelpTooltipField);\n const { result, pos } = val;\n if (result) {\n return {\n pos,\n above: true,\n create: () => {\n const dom = document.createElement('div');\n dom.className = 'cm-signature-tooltip';\n dom.style.cssText = 'font-size: 12px;max-width: 320px;';\n const div = document.createElement('div');\n div.innerHTML = result;\n dom.appendChild(div);\n return { dom };\n },\n };\n }\n return null;\n }),\n });\n\nasync function renderSignatureHelp(\n state: EditorState,\n help: SignatureHelp,\n): Promise<string | undefined> {\n const {\n signatures,\n activeSignature: activeSignatureIndex,\n activeParameter: activeParameterIndex,\n } = help;\n\n if (\n typeof activeSignatureIndex !== 'number' ||\n typeof activeParameterIndex !== 'number'\n ) {\n return;\n }\n\n const activeSignature = signatures[activeSignatureIndex];\n\n if (!activeSignature || !Array.isArray(activeSignature.parameters)) {\n return;\n }\n\n const { label } = activeSignature;\n const keyword = getParameterLabel(\n activeSignature.label,\n activeSignature.parameters[activeParameterIndex],\n );\n const documentation: string = MarkupContent.is(activeSignature.documentation)\n ? activeSignature.documentation.value\n : (activeSignature.documentation ?? '');\n const rendered =\n (await renderMarkdown(highlightByKeyword(label, keyword))) +\n (await renderMarkdown(documentation.trim().split('\\n')[0]));\n\n return rendered;\n}\n\nfunction getParameterLabel(fullText: string, parameter?: ParameterInformation) {\n let keyword = parameter?.label ?? '';\n\n if (Array.isArray(keyword)) {\n const [from, to] = keyword;\n keyword = fullText.slice(from, to);\n }\n\n return keyword;\n}\n\nfunction highlightByKeyword(content: string, keyword: string): string {\n if (!keyword) {\n return content;\n }\n return content\n .split(keyword)\n .join(`<span class=\"cm-signature-parameter-active\">${keyword}</span>`);\n}\n\nconst closeSignatureHelp: Command = (view: EditorView) => {\n if (view.state.field(signatureHelpTooltipField).pos !== -1) {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n return true;\n }\n return false;\n};\n\nconst signatureHelpKeymap: readonly KeyBinding[] = [\n { key: 'Escape', run: closeSignatureHelp },\n];\n\nclass SignatureHelpView implements PluginValue {\n constructor(private view: EditorView) {}\n update(update: ViewUpdate) {\n if (\n (update.docChanged || update.selectionSet) &&\n this.view.state.field(signatureHelpTooltipField).pos !== -1\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n } else if (update.docChanged) {\n const last = update.transactions[update.transactions.length - 1];\n if (last.isUserEvent('input')) {\n update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => {\n if (\n inserted.sliceString(0).trim().endsWith('()') ||\n inserted.toString() === ','\n ) {\n triggerSignatureHelpRequest(this.view, update.state);\n }\n });\n }\n }\n }\n}\n\nconst doSignatureHelpFacet = Facet.define<any, any>({\n combine(values) {\n return values[values.length - 1];\n },\n});\n\nconst triggerSignatureHelpRequest = async (\n view: EditorView,\n state: EditorState,\n): Promise<void> => {\n const doSignatureHelp = state.facet(doSignatureHelpFacet);\n const pos = state.selection.main.from;\n\n try {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpRequestPosition.of(pos)],\n });\n });\n const info = await doSignatureHelp(state, pos);\n\n if (!info || !info.signatures || info.signatures.length === 0) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n\n return;\n }\n\n const result = (await renderSignatureHelp(state, info)) ?? '';\n\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(result)],\n });\n });\n } catch (e) {\n queueMicrotask(() => {\n view.dispatch({\n effects: [setSignatureHelpResult.of(null)],\n });\n });\n }\n};\n\nconst signatureHelpToolTipBaseTheme = EditorView.baseTheme({\n '.cm-tooltip.cm-signature-tooltip': {\n padding: '3px 9px',\n width: 'max-content',\n maxWidth: '500px',\n },\n '.cm-tooltip .cm-signature-parameter-active': {\n fontWeight: 'bold',\n },\n});\n\nfunction signatureHelp(doSignatureHelp: any) {\n return [\n doSignatureHelpFacet.of(doSignatureHelp),\n ViewPlugin.fromClass(SignatureHelpView),\n signatureHelpTooltipField,\n signatureHelpToolTipBaseTheme,\n keymap.of(signatureHelpKeymap),\n EditorView.domEventHandlers({\n blur(event, view) {\n if (\n !(event.relatedTarget instanceof Element) ||\n !event.relatedTarget.closest('.cm-signature-tooltip')\n ) {\n // may be called inside an update\n queueMicrotask(() => {\n view.dispatch({\n effects: setSignatureHelpRequestPosition.of(-1),\n });\n });\n }\n },\n }),\n ];\n}\n\nexport { signatureHelp };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport markedShiki from 'marked-shiki';\nimport { Marked } from 'marked';\n\nimport { highlighterPromise } from './highlighter';\nimport { DEFAULT_SYNTAX_THEME } from './const';\n\nconst marked = new Marked()\n .use(\n markedShiki({\n async highlight(code, lang, props) {\n const highlighter = await highlighterPromise;\n return (await highlighter).codeToHtml(code, {\n lang,\n theme: DEFAULT_SYNTAX_THEME,\n transformers: [\n {\n pre(node) {\n delete node.properties.style;\n node.properties.style = 'white-space: pre-wrap;';\n },\n },\n ],\n });\n },\n }),\n )\n .use({\n renderer: {\n link(link) {\n return `<a title=\"${link.title ?? ''}\" target=\"_blank\" href=\"${link.href}\">${link.text}</a>`;\n },\n },\n });\n\nasync function renderMarkdown(content: string) {\n return await marked.parse(content);\n}\n\nexport { renderMarkdown };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { createOnigurumaEngine } from 'shiki/engine/oniguruma';\nimport { createHighlighterCore } from 'shiki/core';\n\n// const highlighterPromise = createHighlighter({\n// langs: ['md', 'js', 'ts', 'python'],\n// themes: ['github-dark', 'one-dark-pro'],\n// });\n\nconst highlighterPromise = createHighlighterCore({\n langs: [\n () => import('@shikijs/langs/markdown'),\n () => import('@shikijs/langs/javascript'),\n () => import('@shikijs/langs/typescript'),\n () => import('@shikijs/langs/python'),\n () => import('@shikijs/langs/sql'),\n ],\n themes: [\n () => import('@shikijs/themes/github-dark'),\n () => import('@shikijs/themes/one-dark-pro'),\n ],\n engine: createOnigurumaEngine(import('shiki/wasm')),\n});\n\nexport { highlighterPromise };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport const LINT_REFRESH_USER_EVENT = 'sdk.lint.refresh';\nexport const DEFAULT_SYNTAX_THEME = 'one-dark-pro';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { FacetCombineStrategy } from '@coze-editor/utils';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\nimport { type Extension, Facet } from '@codemirror/state';\n\ntype GotoDefinitionHandler = (e: { view: EditorView; pos: number }) => void;\n\nconst handlerFacet = Facet.define({\n combine: FacetCombineStrategy.Last<GotoDefinitionHandler>,\n});\n\nconst view = ViewPlugin.fromClass(\n class {\n private dispose: (() => void) | undefined;\n\n constructor(view: EditorView) {\n function trigger(e: MouseEvent) {\n const target = e.target as HTMLElement;\n if (!e.metaKey || !target.closest('.cm-content')) {\n return;\n }\n\n const pos = view.posAtCoords({\n x: e.clientX,\n y: e.clientY,\n });\n\n if (typeof pos !== 'number') {\n return;\n }\n\n const handler = view.state.facet(handlerFacet);\n handler({\n view,\n pos,\n });\n }\n\n document.addEventListener('click', trigger, false);\n\n this.dispose = () => {\n document.removeEventListener('click', trigger, false);\n };\n }\n\n destroy() {\n if (typeof this.dispose === 'function') {\n this.dispose();\n }\n }\n },\n);\n\nexport default function gotoDefinition(\n handler: GotoDefinitionHandler,\n): Extension[] {\n return [handlerFacet.of(handler), view];\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { EditorState } from '@codemirror/state';\nimport { indentUnit } from '@codemirror/language';\nexport const tabSize = (size = 2) => [\n EditorState.tabSize.of(size),\n indentUnit.of(' '.repeat(size)),\n];\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport {\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n rectangularSelection,\n} from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport {\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n} from '@codemirror/commands';\nimport {\n acceptCompletion,\n autocompletion,\n closeBrackets,\n closeBracketsKeymap,\n completionKeymap,\n} from '@codemirror/autocomplete';\n\nexport const basicSetup = (() => [\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n keymap.of([\n ...defaultKeymap,\n ...closeBracketsKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n indentWithTab,\n { key: 'Tab', run: acceptCompletion },\n ]),\n])();\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// from: https://github.com/vadimdemedes/thememirror/blob/main/source/create-theme.ts\n// license: MIT\n\nimport { EditorView } from '@codemirror/view';\nimport { type Extension } from '@codemirror/state';\nimport {\n HighlightStyle,\n type TagStyle,\n syntaxHighlighting,\n} from '@codemirror/language';\n\ninterface Theme {\n /**\n * Theme variant. Determines which styles CodeMirror will apply by default.\n */\n variant: Variant;\n\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n\n /**\n * Syntax highlighting styles.\n */\n styles: TagStyle[];\n}\n\ntype Variant = 'light' | 'dark';\n\ninterface StyleSpec {\n [propOrSelector: string]: string | number | StyleSpec | null;\n}\n\ninterface Settings {\n /**\n * Editor background.\n */\n background: string;\n\n /**\n * Default text color.\n */\n foreground: string;\n\n /**\n * Caret color.\n */\n caret: string;\n\n /**\n * Selection background.\n */\n selection: string;\n\n /**\n * Background of highlighted lines.\n */\n lineHighlight: string;\n\n /**\n * Gutter background.\n */\n gutterBackground: string;\n\n /**\n * Text color inside gutter.\n */\n gutterForeground: string;\n\n /**\n * Gutter border color\n */\n gutterBorderColor: string;\n\n /**\n * Gutter border width\n */\n gutterBorderWidth?: number;\n\n // bracket colors\n bracketColors?: string[];\n\n // tooltip style\n tooltip: StyleSpec;\n\n // tooltip completion style\n tooltipCompletion?: StyleSpec;\n\n link?: StyleSpec;\n\n // hovered completion item style\n completionItemHover?: StyleSpec;\n // selected completion item style\n completionItemSelected?: StyleSpec;\n\n completionItemIcon?: StyleSpec;\n completionItemLabel?: StyleSpec;\n completionItemInfo?: StyleSpec;\n completionItemDetail?: StyleSpec;\n}\n\nconst createTheme = ({ variant, settings, styles }: Theme): Extension => {\n const bracketTheme = (settings.bracketColors ?? []).reduce(\n (memo, color, index) => ({\n ...memo,\n [`.colorization-bracket-${index}`]: { color },\n [`.colorization-bracket-${index} > span`]: { color },\n }),\n {},\n );\n\n const tooltipTheme = {\n '.cm-tooltip': settings.tooltip ?? {},\n '.cm-tooltip-autocomplete': settings.tooltipCompletion ?? {},\n '.cm-tooltip a': settings.link ?? {\n color: '#4daafc',\n },\n };\n\n const completionTheme = {\n '.cm-tooltip-autocomplete ul li[aria-selected]':\n settings.completionItemSelected ?? {},\n '.cm-tooltip-autocomplete ul li:not([aria-selected]):hover':\n settings.completionItemHover ?? {},\n '.cm-completionIcon': settings.completionItemIcon ?? {},\n '.cm-completionLabel': settings.completionItemLabel ?? {},\n '.cm-completionDetail': settings.completionItemDetail ?? {},\n '.cm-completionInfo': settings.completionItemInfo ?? {},\n };\n\n const theme = EditorView.theme(\n {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':\n {\n backgroundColor: settings.selection,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n borderRightColor: settings.gutterBorderColor,\n borderRightWidth: `${settings.gutterBorderWidth}px`,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n ...bracketTheme,\n ...tooltipTheme,\n ...completionTheme,\n },\n {\n dark: variant === 'dark',\n },\n );\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [theme, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n\nexport { type Theme };\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nimport { Text } from '@coze-editor/utils';\nimport { type Transformer } from '@coze-editor/code-language-shared';\n\nconst transformerCreator =\n (processor: (text: Text) => Text): Transformer =>\n (source: string) => {\n const text = processor(new Text(source));\n return {\n code: text.toString(),\n mapping: {\n originalRangeFor: text.originalRangeFor.bind(text),\n generatedRangeFor: text.generatedRangeFor.bind(text),\n originalOffsetFor: text.originalOffsetFor.bind(text),\n generatedOffsetFor: text.generatedOffsetFor.bind(text),\n },\n };\n };\n\nexport { transformerCreator };\n"],"mappings":"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","names":["import_core","import_code_language_shared","import_view","import_state","import_language","import_vscode_languageserver_types","import_view","import_state","import_language","markedShiki","view","import_view","import_state","view","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","import_utils","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.c2621d",
3
+ "version": "0.1.0-alpha.c9f325",
4
4
  "description": "preset-code",
5
5
  "license": "MIT",
6
6
  "author": "fengzilong",
@@ -24,21 +24,21 @@
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.c2621d",
28
- "@coze-editor/core-plugins": "0.1.0-alpha.c2621d",
29
- "@coze-editor/extension-completion-icons": "0.1.0-alpha.c2621d",
30
- "@coze-editor/extension-links": "0.1.0-alpha.c2621d",
31
- "@coze-editor/extension-lint": "0.1.0-alpha.c2621d",
32
- "@coze-editor/extension-scrollbar": "0.1.0-alpha.c2621d",
33
- "@coze-editor/extensions": "0.1.0-alpha.c2621d",
34
- "@coze-editor/preset-universal": "0.1.0-alpha.c2621d",
35
- "@coze-editor/utils": "0.1.0-alpha.c2621d",
36
- "@coze-editor/vscode": "0.1.0-alpha.c2621d",
27
+ "@codemirror/theme-one-dark": "^6.1.3",
28
+ "@coze-editor/core": "0.1.0-alpha.c9f325",
29
+ "@coze-editor/core-plugins": "0.1.0-alpha.c9f325",
30
+ "@coze-editor/extension-completion-icons": "0.1.0-alpha.c9f325",
31
+ "@coze-editor/extension-links": "0.1.0-alpha.c9f325",
32
+ "@coze-editor/extension-lint": "0.1.0-alpha.c9f325",
33
+ "@coze-editor/extension-scrollbar": "0.1.0-alpha.c9f325",
34
+ "@coze-editor/extensions": "0.1.0-alpha.c9f325",
35
+ "@coze-editor/preset-universal": "0.1.0-alpha.c9f325",
36
+ "@coze-editor/utils": "0.1.0-alpha.c9f325",
37
+ "@coze-editor/vscode": "0.1.0-alpha.c9f325",
37
38
  "@lezer/highlight": "~1.2.0",
38
39
  "@nozbe/microfuzz": "^1.0.0",
39
40
  "@shikijs/langs": "~3.12.0",
40
41
  "@shikijs/themes": "~3.12.0",
41
- "codemirror-shiki": "^0.2.2",
42
42
  "marked": "^15.0.7",
43
43
  "marked-shiki": "^1.2.0",
44
44
  "shiki": "^3.2.2",
@@ -62,7 +62,7 @@
62
62
  "@codemirror/commands": "^6.3.3",
63
63
  "@codemirror/state": "^6.4.1",
64
64
  "@codemirror/view": "^6.26.1",
65
- "@coze-editor/code-language-shared": "0.1.0-alpha.c2621d"
65
+ "@coze-editor/code-language-shared": "0.1.0-alpha.c9f325"
66
66
  },
67
67
  "packageManager": "pnpm@9.15.0",
68
68
  "publishConfig": {