@coze-editor/preset-code 0.1.0-alpha.09ffeb

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.
@@ -0,0 +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"]}
@@ -0,0 +1,117 @@
1
+ import * as _codemirror_view from '@codemirror/view';
2
+ import * as _codemirror_state from '@codemirror/state';
3
+ import { Extension } from '@codemirror/state';
4
+ import * as _coze_editor_core from '@coze-editor/core';
5
+ import { InferEditorAPIFromPlugins } from '@coze-editor/core';
6
+ import { LanguageConfig, Transformer } from '@coze-editor/code-language-shared';
7
+ export { Transformer } from '@coze-editor/code-language-shared';
8
+ import { TagStyle } from '@codemirror/language';
9
+ import { Text } from 'text-mapping';
10
+ export { tags } from '@lezer/highlight';
11
+
12
+ declare const themes: any;
13
+
14
+ declare class LanguagesRegistry {
15
+ private languages;
16
+ register(id: string, options: LanguageConfig): () => void;
17
+ get(languageId: string): LanguageConfig;
18
+ getExtension(id: string): Extension[];
19
+ }
20
+ declare const languages: LanguagesRegistry;
21
+
22
+ interface Theme {
23
+ /**
24
+ * Theme variant. Determines which styles CodeMirror will apply by default.
25
+ */
26
+ variant: Variant;
27
+ /**
28
+ * Settings to customize the look of the editor, like background, gutter, selection and others.
29
+ */
30
+ settings: Settings;
31
+ /**
32
+ * Syntax highlighting styles.
33
+ */
34
+ styles: TagStyle[];
35
+ }
36
+ type Variant = 'light' | 'dark';
37
+ interface StyleSpec {
38
+ [propOrSelector: string]: string | number | StyleSpec | null;
39
+ }
40
+ interface Settings {
41
+ /**
42
+ * Editor background.
43
+ */
44
+ background: string;
45
+ /**
46
+ * Default text color.
47
+ */
48
+ foreground: string;
49
+ /**
50
+ * Caret color.
51
+ */
52
+ caret: string;
53
+ /**
54
+ * Selection background.
55
+ */
56
+ selection: string;
57
+ /**
58
+ * Background of highlighted lines.
59
+ */
60
+ lineHighlight: string;
61
+ /**
62
+ * Gutter background.
63
+ */
64
+ gutterBackground: string;
65
+ /**
66
+ * Text color inside gutter.
67
+ */
68
+ gutterForeground: string;
69
+ /**
70
+ * Gutter border color
71
+ */
72
+ gutterBorderColor: string;
73
+ /**
74
+ * Gutter border width
75
+ */
76
+ gutterBorderWidth?: number;
77
+ bracketColors?: string[];
78
+ tooltip: StyleSpec;
79
+ tooltipCompletion?: StyleSpec;
80
+ link?: StyleSpec;
81
+ completionItemHover?: StyleSpec;
82
+ completionItemSelected?: StyleSpec;
83
+ completionItemIcon?: StyleSpec;
84
+ completionItemLabel?: StyleSpec;
85
+ completionItemInfo?: StyleSpec;
86
+ completionItemDetail?: StyleSpec;
87
+ }
88
+ declare const createTheme: ({ variant, settings, styles }: Theme) => Extension;
89
+
90
+ declare const transformerCreator: (processor: (text: Text) => Text) => Transformer;
91
+
92
+ declare const preset: (_coze_editor_core.ExtensionPluginSpec | _coze_editor_core.OptionPluginSpec<"fontSize", number> | _coze_editor_core.OptionPluginSpec<"placeholder", string | HTMLElement> | _coze_editor_core.OptionPluginSpec<"readOnly", boolean> | _coze_editor_core.OptionPluginSpec<"editable", boolean> | _coze_editor_core.OptionPluginSpec<"lineWrapping", boolean> | _coze_editor_core.OptionPluginSpec<"height", string | number> | _coze_editor_core.OptionPluginSpec<"minHeight", string | number> | _coze_editor_core.OptionPluginSpec<"maxHeight", string | number> | _coze_editor_core.APIPluginSpec<"getValue", [], string> | _coze_editor_core.APIPluginSpec<"setValue", [value: string], void> | _coze_editor_core.APIPluginSpec<"replaceText", [options: {
93
+ from: number;
94
+ to: number;
95
+ text: string;
96
+ cursorOffset?: number;
97
+ scrollIntoView?: boolean;
98
+ userEvent?: string;
99
+ }], void> | _coze_editor_core.APIPluginSpec<"getCursorPosition", [], number> | _coze_editor_core.APIPluginSpec<"setCursorPosition", [pos: number], void> | _coze_editor_core.APIPluginSpec<"focus", [], void> | _coze_editor_core.APIPluginSpec<"blur", [], void> | _coze_editor_core.APIPluginSpec<"disableKeybindings", [keys: string[]], void> | _coze_editor_core.APIPluginSpec<"updateASTDecorations", [], void> | _coze_editor_core.APIPluginSpec<"undo", [], void> | _coze_editor_core.APIPluginSpec<"redo", [], void> | _coze_editor_core.APIPluginSpec<"transformTextInSelection", [transformer: (text: string) => string | undefined], void> | _coze_editor_core.APIPluginSpec<"getSelection", [], {
100
+ from: number;
101
+ to: number;
102
+ anchor: number;
103
+ head: number;
104
+ }> | _coze_editor_core.APIPluginSpec<"getLineInfoAtPosition", [pos: number], _codemirror_state.Line> | _coze_editor_core.EventPluginSpec<"selectionChange", {
105
+ selection: {
106
+ from: number;
107
+ to: number;
108
+ head: number;
109
+ anchor: number;
110
+ };
111
+ update: _codemirror_view.ViewUpdate;
112
+ }> | _coze_editor_core.EventPluginSpec<"change", {
113
+ value: string;
114
+ }> | _coze_editor_core.EventPluginSpec<"focus", symbol> | _coze_editor_core.EventPluginSpec<"blur", symbol> | _coze_editor_core.DOMEventHandlerPluginSpec<"mousedown"> | _coze_editor_core.DOMEventHandlerPluginSpec<"mouseup"> | _coze_editor_core.OptionPluginSpec<"tabSize", number> | _coze_editor_core.OptionPluginSpec<"scrollBeyondLastLine", boolean> | _coze_editor_core.OptionPluginSpec<"uri", string> | _coze_editor_core.OptionPluginSpec<"theme", string> | _coze_editor_core.OptionPluginSpec<"languageId", string> | _coze_editor_core.OptionPluginSpec<"transformer", Transformer> | _coze_editor_core.OptionPluginSpec<"overlayScrollbar", unknown> | _coze_editor_core.OptionPluginSpec<"lineNumbersGutter", unknown> | _coze_editor_core.OptionPluginSpec<"foldGutter", unknown> | _coze_editor_core.OptionPluginSpec<"colorizeBrackets", unknown> | _coze_editor_core.APIPluginSpec<"validate", [], void>)[];
115
+ type EditorAPI = InferEditorAPIFromPlugins<typeof preset>;
116
+
117
+ export { type EditorAPI, type Theme, createTheme, preset as default, languages, themes, transformerCreator };
@@ -0,0 +1,117 @@
1
+ import * as _codemirror_view from '@codemirror/view';
2
+ import * as _codemirror_state from '@codemirror/state';
3
+ import { Extension } from '@codemirror/state';
4
+ import * as _coze_editor_core from '@coze-editor/core';
5
+ import { InferEditorAPIFromPlugins } from '@coze-editor/core';
6
+ import { LanguageConfig, Transformer } from '@coze-editor/code-language-shared';
7
+ export { Transformer } from '@coze-editor/code-language-shared';
8
+ import { TagStyle } from '@codemirror/language';
9
+ import { Text } from 'text-mapping';
10
+ export { tags } from '@lezer/highlight';
11
+
12
+ declare const themes: any;
13
+
14
+ declare class LanguagesRegistry {
15
+ private languages;
16
+ register(id: string, options: LanguageConfig): () => void;
17
+ get(languageId: string): LanguageConfig;
18
+ getExtension(id: string): Extension[];
19
+ }
20
+ declare const languages: LanguagesRegistry;
21
+
22
+ interface Theme {
23
+ /**
24
+ * Theme variant. Determines which styles CodeMirror will apply by default.
25
+ */
26
+ variant: Variant;
27
+ /**
28
+ * Settings to customize the look of the editor, like background, gutter, selection and others.
29
+ */
30
+ settings: Settings;
31
+ /**
32
+ * Syntax highlighting styles.
33
+ */
34
+ styles: TagStyle[];
35
+ }
36
+ type Variant = 'light' | 'dark';
37
+ interface StyleSpec {
38
+ [propOrSelector: string]: string | number | StyleSpec | null;
39
+ }
40
+ interface Settings {
41
+ /**
42
+ * Editor background.
43
+ */
44
+ background: string;
45
+ /**
46
+ * Default text color.
47
+ */
48
+ foreground: string;
49
+ /**
50
+ * Caret color.
51
+ */
52
+ caret: string;
53
+ /**
54
+ * Selection background.
55
+ */
56
+ selection: string;
57
+ /**
58
+ * Background of highlighted lines.
59
+ */
60
+ lineHighlight: string;
61
+ /**
62
+ * Gutter background.
63
+ */
64
+ gutterBackground: string;
65
+ /**
66
+ * Text color inside gutter.
67
+ */
68
+ gutterForeground: string;
69
+ /**
70
+ * Gutter border color
71
+ */
72
+ gutterBorderColor: string;
73
+ /**
74
+ * Gutter border width
75
+ */
76
+ gutterBorderWidth?: number;
77
+ bracketColors?: string[];
78
+ tooltip: StyleSpec;
79
+ tooltipCompletion?: StyleSpec;
80
+ link?: StyleSpec;
81
+ completionItemHover?: StyleSpec;
82
+ completionItemSelected?: StyleSpec;
83
+ completionItemIcon?: StyleSpec;
84
+ completionItemLabel?: StyleSpec;
85
+ completionItemInfo?: StyleSpec;
86
+ completionItemDetail?: StyleSpec;
87
+ }
88
+ declare const createTheme: ({ variant, settings, styles }: Theme) => Extension;
89
+
90
+ declare const transformerCreator: (processor: (text: Text) => Text) => Transformer;
91
+
92
+ declare const preset: (_coze_editor_core.ExtensionPluginSpec | _coze_editor_core.OptionPluginSpec<"fontSize", number> | _coze_editor_core.OptionPluginSpec<"placeholder", string | HTMLElement> | _coze_editor_core.OptionPluginSpec<"readOnly", boolean> | _coze_editor_core.OptionPluginSpec<"editable", boolean> | _coze_editor_core.OptionPluginSpec<"lineWrapping", boolean> | _coze_editor_core.OptionPluginSpec<"height", string | number> | _coze_editor_core.OptionPluginSpec<"minHeight", string | number> | _coze_editor_core.OptionPluginSpec<"maxHeight", string | number> | _coze_editor_core.APIPluginSpec<"getValue", [], string> | _coze_editor_core.APIPluginSpec<"setValue", [value: string], void> | _coze_editor_core.APIPluginSpec<"replaceText", [options: {
93
+ from: number;
94
+ to: number;
95
+ text: string;
96
+ cursorOffset?: number;
97
+ scrollIntoView?: boolean;
98
+ userEvent?: string;
99
+ }], void> | _coze_editor_core.APIPluginSpec<"getCursorPosition", [], number> | _coze_editor_core.APIPluginSpec<"setCursorPosition", [pos: number], void> | _coze_editor_core.APIPluginSpec<"focus", [], void> | _coze_editor_core.APIPluginSpec<"blur", [], void> | _coze_editor_core.APIPluginSpec<"disableKeybindings", [keys: string[]], void> | _coze_editor_core.APIPluginSpec<"updateASTDecorations", [], void> | _coze_editor_core.APIPluginSpec<"undo", [], void> | _coze_editor_core.APIPluginSpec<"redo", [], void> | _coze_editor_core.APIPluginSpec<"transformTextInSelection", [transformer: (text: string) => string | undefined], void> | _coze_editor_core.APIPluginSpec<"getSelection", [], {
100
+ from: number;
101
+ to: number;
102
+ anchor: number;
103
+ head: number;
104
+ }> | _coze_editor_core.APIPluginSpec<"getLineInfoAtPosition", [pos: number], _codemirror_state.Line> | _coze_editor_core.EventPluginSpec<"selectionChange", {
105
+ selection: {
106
+ from: number;
107
+ to: number;
108
+ head: number;
109
+ anchor: number;
110
+ };
111
+ update: _codemirror_view.ViewUpdate;
112
+ }> | _coze_editor_core.EventPluginSpec<"change", {
113
+ value: string;
114
+ }> | _coze_editor_core.EventPluginSpec<"focus", symbol> | _coze_editor_core.EventPluginSpec<"blur", symbol> | _coze_editor_core.DOMEventHandlerPluginSpec<"mousedown"> | _coze_editor_core.DOMEventHandlerPluginSpec<"mouseup"> | _coze_editor_core.OptionPluginSpec<"tabSize", number> | _coze_editor_core.OptionPluginSpec<"scrollBeyondLastLine", boolean> | _coze_editor_core.OptionPluginSpec<"uri", string> | _coze_editor_core.OptionPluginSpec<"theme", string> | _coze_editor_core.OptionPluginSpec<"languageId", string> | _coze_editor_core.OptionPluginSpec<"transformer", Transformer> | _coze_editor_core.OptionPluginSpec<"overlayScrollbar", unknown> | _coze_editor_core.OptionPluginSpec<"lineNumbersGutter", unknown> | _coze_editor_core.OptionPluginSpec<"foldGutter", unknown> | _coze_editor_core.OptionPluginSpec<"colorizeBrackets", unknown> | _coze_editor_core.APIPluginSpec<"validate", [], void>)[];
115
+ type EditorAPI = InferEditorAPIFromPlugins<typeof preset>;
116
+
117
+ export { type EditorAPI, type Theme, createTheme, preset as default, languages, themes, transformerCreator };