@next-bricks/vs 0.5.30 → 0.5.32

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.
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/7423.2bb020f8.js","mappings":"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","sources":["webpack:///./src/code-editor/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport type { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { register as registerJavaScript } from \"@next-core/monaco-contributions/javascript\";\nimport { register as registerTypeScript } from \"@next-core/monaco-contributions/typescript\";\nimport { register as registerYaml } from \"@next-core/monaco-contributions/yaml\";\nimport { register as registerHtml } from \"@next-core/monaco-contributions/html\";\nimport yaml from \"js-yaml\";\nimport BrickNextYamlSourceMap, { Token } from \"./utils/brickNextSourceMap.js\";\nimport \"@next-core/theme\";\nimport { isEqual } from \"lodash\";\nimport {\n EDITOR_SCROLLBAR_SIZE,\n EDITOR_PADDING_VERTICAL,\n EDITOR_LINE_HEIGHT,\n EDITOR_FONT_SIZE,\n} from \"./constants.js\";\nimport { brickNextYAMLProvideCompletionItems } from \"./utils/brickNextYaml.js\";\nimport \"./index.css\";\nimport { EVALUATE_KEYWORD, Level } from \"./utils/constants.js\";\nimport type { MemberExpression, Identifier } from \"@babel/types\";\nimport { preevaluate } from \"@next-core/cook\";\n\nregisterJavaScript(monaco);\nregisterTypeScript(monaco);\nregisterYaml(monaco, \"brick_next_yaml\");\nregisterHtml(monaco);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nexport interface CodeEditorProps {\n name?: string;\n label?: string;\n value?: string;\n language?: string;\n theme?: string;\n required?: boolean;\n readOnly?: boolean;\n automaticLayout?: \"fit-container\" | \"fit-content\" | \"none\";\n minLines?: number;\n maxLines?: number;\n height?: string | number;\n completers?: monaco.languages.CompletionItem[];\n advancedCompleters?: Record<\n string,\n { triggerCharacter: string; completers: monaco.languages.CompletionItem[] }\n >;\n markers?: Marker[];\n links?: string[];\n validateState?: string;\n}\n\nexport interface Marker {\n token: string;\n level: keyof typeof Level;\n message: string;\n code?: {\n value: string;\n target: string;\n };\n params?: string[];\n}\n\n/**\n * 构件 code-editor\n */\nexport\n@defineElement(\"vs.code-editor\", {\n // There are a few issues for monaco-editor with shadow DOM.\n // So we use light DOM for now.\n // See https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+shadow+dom\n shadowOptions: false,\n})\nclass CodeEditor extends FormItemElementBase implements CodeEditorProps {\n @property()\n accessor name: string | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({ attribute: false })\n accessor value: string | undefined;\n\n /**\n * @default \"plaintext\"\n */\n @property()\n accessor language: string | undefined;\n\n /**\n * 主题,支持 `\"auto\" | \"vs\" | \"vs-dark\"`\n *\n * @default \"auto\"\n * @group ui\n */\n @property() accessor theme: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property({\n type: Boolean,\n })\n accessor readOnly: boolean | undefined;\n\n @property()\n accessor automaticLayout:\n | \"fit-container\"\n | \"fit-content\"\n | \"none\"\n | undefined;\n\n /**\n * @default 3\n */\n @property({ type: Number })\n accessor minLines: number | undefined;\n\n @property({\n attribute: false,\n })\n accessor completers: monaco.languages.CompletionItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor advancedCompleters:\n | Record<\n string,\n {\n triggerCharacter: string;\n completers: monaco.languages.CompletionItem[];\n }\n >\n | undefined;\n\n @property({ attribute: false })\n accessor markers: Marker[] | undefined;\n\n @property({ attribute: false })\n accessor links: string[] | undefined;\n\n /**\n * @default Infinity\n */\n @property({ type: Number })\n accessor maxLines: number | undefined;\n\n @property({ attribute: false })\n accessor height: string | number | undefined;\n\n @property()\n accessor message: string | undefined;\n\n @event({ type: \"code.change\" })\n accessor #codeChange!: EventEmitter<string>;\n\n @event({ type: \"user.input\" })\n accessor #userInput!: EventEmitter<string>;\n\n #handleChange = (value: string, parseValue: any, isFlush: boolean) => {\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.#codeChange.emit(parseValue);\n if (!isFlush) {\n this.#userInput.emit(parseValue);\n }\n };\n\n @event({ type: \"token.click\" })\n accessor #highlighClickEvent!: EventEmitter<string>;\n\n #handleHighlightClick = (word: string) => {\n this.#highlighClickEvent.emit(word);\n };\n\n #handleValidtor = (value: string) => {\n try {\n yaml.load(value);\n } catch {\n return \"请填写正确的格式\";\n }\n return \"\";\n };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n super.connectedCallback();\n }\n\n render() {\n return (\n <WrappedFormItem\n curElement={this}\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n validator={this.#handleValidtor}\n >\n <CodeEditorComponent\n value={this.value}\n language={this.language}\n readOnly={this.readOnly}\n theme={this.theme}\n automaticLayout={this.automaticLayout}\n minLines={this.minLines}\n maxLines={this.maxLines}\n height={this.height}\n completers={this.completers}\n advancedCompleters={this.advancedCompleters}\n markers={this.markers}\n links={this.links}\n validateState={this.validateState}\n onChange={this.#handleChange}\n onHighlightClick={this.#handleHighlightClick}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport function CodeEditorComponent({\n value: _value,\n language: _language,\n theme: _theme,\n minLines: _minLines,\n maxLines: _maxLines,\n height: _height,\n automaticLayout,\n completers,\n advancedCompleters,\n markers,\n readOnly,\n links,\n validateState,\n onChange,\n onHighlightClick,\n}: CodeEditorProps & {\n onChange(value: string, parseValue: any, isFlush: boolean): void;\n onHighlightClick(word: string): void;\n}) {\n const value = _value ?? \"\";\n const language = _language ?? \"plaintext\";\n const theme = _theme ?? \"auto\";\n const minLines = _minLines ?? 3;\n const maxLines = _maxLines ?? Infinity;\n const height = _height ?? 500;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const decorationsCollection =\n useRef<monaco.editor.IEditorDecorationsCollection>();\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n const size = useRef<monaco.editor.IDimension>({\n width: 300,\n height: getContentHeightByCode(value, minLines, maxLines),\n });\n const [actualHeight, setActualHeight] = useState<string | number>();\n // `automaticLayout` should never change\n const automaticLayoutRef = useRef(automaticLayout);\n const systemTheme = useCurrentTheme();\n\n useEffect(() => {\n // Currently theme is configured globally.\n // See https://github.com/microsoft/monaco-editor/issues/338\n monaco.editor.setTheme(\n theme === \"auto\"\n ? systemTheme === \"dark\" || systemTheme === \"dark-v2\"\n ? \"vs-dark\"\n : \"vs\"\n : theme\n );\n }, [systemTheme, theme]);\n\n useEffect(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n monaco.editor.setModelLanguage(currentModel, language);\n if (!isEqual(currentModel.getValue(), value)) {\n currentModel.setValue(value);\n }\n }\n }, [value, language]);\n\n useEffect(() => {\n if (language === \"brick_next_yaml\") {\n const provideCompletionItems = brickNextYAMLProvideCompletionItems(\n completers,\n advancedCompleters\n );\n const monacoProviderRef = monaco.languages.registerCompletionItemProvider(\n \"brick_next_yaml\",\n {\n provideCompletionItems,\n triggerCharacters: [\".\", \":\", \"<\"],\n }\n );\n return () => {\n monacoProviderRef.dispose();\n };\n }\n }, [completers, advancedCompleters, language]);\n\n const parseYaml = useCallback(() => {\n const map = new BrickNextYamlSourceMap();\n let parseValue = undefined;\n if (editorRef.current) {\n const model = editorRef.current.getModel()!;\n\n try {\n parseValue = yaml.load(value, {\n listener: map.listen(),\n });\n\n if ((links || markers) && editorRef.current) {\n const tokens: Omit<\n Token & { token: string; property: string },\n \"source\"\n >[] = [];\n map.getTokens().forEach((item) => {\n const { startLineNumber, endLineNumber, startColumn } = item;\n const globalNodes: MemberExpression[] = [];\n const result = preevaluate(item.source, {\n hooks: {\n beforeVisit(node) {\n if (\n node.type === \"MemberExpression\" &&\n node.object.type === \"Identifier\" &&\n EVALUATE_KEYWORD.includes(node.object.name) &&\n node.property.type === \"Identifier\"\n ) {\n globalNodes.push(node);\n }\n },\n },\n });\n\n globalNodes.forEach((node) => {\n const { start, end, loc } = node;\n if (item.startLineNumber !== item.endLineNumber) {\n const hadWrap = /<%[ ]+/.test(result.prefix);\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber:\n item.startLineNumber +\n (loc?.start?.line as number) -\n Number(hadWrap),\n endLineNumber:\n item.startLineNumber +\n (loc?.end?.line as number) -\n Number(hadWrap),\n startColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.start?.column as number) +\n 1,\n endColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.end?.column as number) +\n 1,\n });\n } else {\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber,\n endLineNumber,\n startColumn:\n startColumn +\n (start as number) +\n result.prefix?.length +\n Number(!item.isString),\n endColumn:\n startColumn +\n (end as number) +\n result.prefix?.length +\n Number(!item.isString),\n });\n }\n });\n });\n\n decorationsCollection.current?.set(\n tokens\n .filter((token) => links?.includes(token.token))\n .map((token) => ({\n range: new monaco.Range(\n token.startLineNumber,\n token.startColumn,\n token.endLineNumber,\n token.endColumn\n ),\n options: {\n inlineClassName: \"highlight\",\n },\n }))\n );\n\n if (markers) {\n const modelMarkers = tokens\n .map((token) => {\n const matchTokenConf = markers.find(\n (item) => item.token === token.token\n );\n const hadProperty = matchTokenConf?.params\n ? matchTokenConf.params?.includes(token.property)\n : true;\n if (!hadProperty) {\n return {\n severity: Level.warn,\n message: \"Miss Property\",\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n if (matchTokenConf && matchTokenConf.message) {\n return {\n severity: Level[matchTokenConf?.level ?? \"warn\"],\n message: matchTokenConf.message,\n ...(matchTokenConf.code\n ? {\n code: {\n value: matchTokenConf.code.value,\n target: monaco.Uri.parse(\n matchTokenConf.code.target\n ),\n },\n }\n : {}),\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n })\n .filter(Boolean) as monaco.editor.IMarkerData[];\n\n monaco.editor.setModelMarkers(\n model,\n \"brick_next_yaml\",\n modelMarkers\n );\n }\n }\n } catch (e) {\n monaco.editor.setModelMarkers(model, \"brick_next_yaml\", []);\n decorationsCollection?.current?.set([]);\n }\n }\n return parseValue;\n }, [value, links, markers]);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-content\" || !containerRef.current) {\n return;\n }\n\n size.current.width = containerRef.current.getBoundingClientRect().width;\n editorRef.current?.layout(size.current);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === containerRef.current) {\n const newWidth = entry.contentBoxSize\n ? entry.contentBoxSize[0].inlineSize\n : entry.contentRect.width;\n if (newWidth !== size.current.width) {\n size.current.width = newWidth;\n editorRef.current?.layout(size.current);\n }\n break;\n }\n }\n });\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-container\") {\n return;\n }\n\n const container = getDOMContainer(containerRef.current);\n if (!container) {\n return;\n }\n // Manually layout the editor once the container resized.\n const observer = new ResizeObserver((): void => {\n setActualHeight(container.offsetHeight);\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (\n automaticLayoutRef.current !== \"fit-container\" &&\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n setActualHeight(height);\n }\n }, [height]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.updateOptions({\n readOnly,\n });\n }, [readOnly]);\n\n useEffect(() => {\n if (editorRef.current || !containerRef.current) {\n return;\n }\n const model = monaco.editor.createModel(value, language);\n editorRef.current = monaco.editor.create(containerRef.current, {\n model,\n minimap: {\n enabled: false,\n },\n scrollBeyondLastLine: false,\n tabSize: 2,\n insertSpaces: true,\n automaticLayout: automaticLayoutRef.current !== \"fit-content\",\n fontSize: EDITOR_FONT_SIZE,\n lineHeight: EDITOR_LINE_HEIGHT,\n scrollbar: {\n horizontalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n verticalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n horizontalSliderSize: 8,\n verticalSliderSize: 8,\n alwaysConsumeMouseWheel: false,\n },\n padding: {\n top: EDITOR_PADDING_VERTICAL,\n // When use `fit-content`, we always plus the height with the vertical padding.\n // Thus the possible x-scrollbar will not take extra space at the bottom.\n bottom:\n automaticLayoutRef.current == \"fit-content\"\n ? undefined\n : EDITOR_PADDING_VERTICAL,\n },\n overviewRulerBorder: false,\n mouseWheelScrollSensitivity: 0.5,\n suggest: {\n insertMode: \"insert\",\n preview: true,\n },\n readOnly: readOnly,\n quickSuggestions: { strings: true, other: true, comments: true },\n });\n\n decorationsCollection.current =\n editorRef.current.createDecorationsCollection();\n }, [value, language, readOnly]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (language === \"brick_next_yaml\" && editor) {\n const model = editor.getModel()!;\n const editorMouseDownEvent = editor.onMouseDown(function (e) {\n const decorations = decorationsCollection.current;\n (decorations?.getRanges?.() ?? []).forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n onHighlightClick(model.getValueInRange(range));\n }\n });\n });\n\n const mouseOverEvent = editor.onMouseMove(function (e) {\n const decorations = decorationsCollection.current;\n if (!decorations) return;\n decorations.getRanges().forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: range.equalsRange(item)\n ? \"highlight pointer\"\n : \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n } else if (!e.event[modKey]) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n }\n });\n });\n\n parseYaml();\n\n return () => {\n mouseOverEvent?.dispose();\n editorMouseDownEvent?.dispose();\n };\n }\n }, [language, onHighlightClick, systemTheme, theme, parseYaml]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (\n !editor ||\n !containerRef.current ||\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n return;\n }\n\n const listener = editor.onDidContentSizeChange((e) => {\n if (e.contentHeightChanged) {\n const newHeight = fixEditorHeightWithScrollBar(\n e.contentHeight,\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n }\n });\n\n const newHeight = fixEditorHeightWithScrollBar(\n editor.getContentHeight(),\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n\n return () => {\n listener.dispose();\n };\n }, [maxLines, minLines]);\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n const currentModel = editorRef.current.getModel()!;\n const listener = currentModel.onDidChangeContent((e) => {\n const parseValue = parseYaml();\n onChange(currentModel.getValue(), parseValue, e.isFlush);\n });\n return () => {\n listener.dispose();\n };\n }, [onChange, parseYaml]);\n\n useEffect(() => {\n return () => {\n editorRef.current?.getModel()?.dispose();\n editorRef.current?.dispose();\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n style={{\n height: actualHeight,\n ...(validateState === \"error\"\n ? {\n outline: \"1px solid var(--antd-error-color)\",\n }\n : {}),\n }}\n />\n );\n}\n\nfunction getContentHeightByCode(\n code: string,\n minLines: number,\n maxLines: number\n): number {\n return getContentHeightByLines(\n Math.min(maxLines, Math.max(minLines, code.split(\"\\n\").length))\n );\n}\n\nfunction fixEditorHeightWithScrollBar(\n contentHeight: number,\n minLines: number,\n maxLines: number\n): number {\n let fixedHeight = contentHeight;\n if ((contentHeight - EDITOR_PADDING_VERTICAL) % EDITOR_LINE_HEIGHT === 0) {\n fixedHeight = contentHeight + EDITOR_SCROLLBAR_SIZE;\n }\n return Math.min(\n getContentHeightByLines(maxLines),\n Math.max(fixedHeight, getContentHeightByLines(minLines))\n );\n}\n\nfunction getContentHeightByLines(lines: number): number {\n return (\n lines * EDITOR_LINE_HEIGHT + EDITOR_SCROLLBAR_SIZE + EDITOR_PADDING_VERTICAL\n );\n}\n\n/** Get the direct DOM container of `vs.code-editor` */\nfunction getDOMContainer(element: HTMLElement | null) {\n let brick = element;\n while (brick) {\n const found = brick.tagName.toLowerCase() === \"vs.code-editor\";\n brick = brick.parentElement;\n if (found) {\n return brick;\n }\n }\n}\n"],"names":["registerJavaScript","monaco","registerTypeScript","registerYaml","registerHtml","_CodeEditor","defineElement","property","event","createDecorators","WrappedFormItem","wrapBrick","_dec","shadowOptions","_dec2","_dec3","_dec4","attribute","_dec5","_dec6","_dec7","type","Boolean","_dec8","_dec9","_dec10","Number","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_codeChange","_R","_userInput","_handleChange","_S","_highlighClickEvent","_handleHighlightClick","_handleValidtor","CodeEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_highlighClickEvent2","set","_set_highlighClickEvent2","_get_userInput2","_set_userInput2","_get_codeChange2","_set_codeChange2","writable","value","_initProto","_init_name","_init_label","_init_value","_init_language","_init_theme","_init_required","_init_readOnly","_init_automaticLayout","_init_minLines","_init_completers","_init_advancedCompleters","_init_markers","_init_links","_init_maxLines","_init_height","_init_message","_init_codeChange","_init_userInput","parseValue","isFlush","_this$getFormElement","this","getFormElement","formStore","onChange","name","_classPrivateFieldGet","emit","_init_highlighClickEvent","word","yaml","_unused","v","_classPrivateFieldSet","label","language","theme","required","readOnly","automaticLayout","minLines","completers","advancedCompleters","markers","links","maxLines","height","message","connectedCallback","style","display","super","render","React","curElement","formElement","validator","CodeEditorComponent","validateState","onHighlightClick","_set_codeChange","_get_codeChange","_set_userInput","_get_userInput","_set_highlighClickEvent","_get_highlighClickEvent","_ref","_value","_language","_theme","_minLines","_maxLines","_height","Infinity","containerRef","useRef","decorationsCollection","editorRef","size","width","getContentHeightByCode","actualHeight","setActualHeight","useState","automaticLayoutRef","systemTheme","useCurrentTheme","useEffect","setTheme","current","currentModel","getModel","setModelLanguage","isEqual","getValue","setValue","provideCompletionItems","brickNextYAMLProvideCompletionItems","monacoProviderRef","registerCompletionItemProvider","triggerCharacters","dispose","parseYaml","useCallback","map","BrickNextYamlSourceMap","undefined","model","listener","listen","_decorationsCollectio","tokens","getTokens","forEach","item","startLineNumber","endLineNumber","startColumn","globalNodes","result","preevaluate","source","hooks","beforeVisit","node","object","EVALUATE_KEYWORD","includes","push","start","end","loc","_node$object","_loc$start","_loc$end","_loc$start2","_loc$end2","hadWrap","test","prefix","token","line","length","column","endColumn","_node$object2","_result$prefix","_result$prefix2","isString","filter","range","options","inlineClassName","modelMarkers","_matchTokenConf$param","_matchTokenConf$level","matchTokenConf","find","params","_objectSpread","severity","Level","level","code","target","parse","warn","setModelMarkers","e","_decorationsCollectio2","useLayoutEffect","_editorRef$current","getBoundingClientRect","layout","observer","ResizeObserver","entries","entry","_editorRef$current2","newWidth","contentBoxSize","inlineSize","contentRect","observe","disconnect","container","element","brick","found","tagName","toLowerCase","parentElement","getDOMContainer","offsetHeight","updateOptions","createModel","create","minimap","enabled","scrollBeyondLastLine","tabSize","insertSpaces","fontSize","EDITOR_FONT_SIZE","lineHeight","EDITOR_LINE_HEIGHT","scrollbar","horizontalScrollbarSize","EDITOR_SCROLLBAR_SIZE","verticalScrollbarSize","horizontalSliderSize","verticalSliderSize","alwaysConsumeMouseWheel","padding","top","EDITOR_PADDING_VERTICAL","bottom","overviewRulerBorder","mouseWheelScrollSensitivity","suggest","insertMode","preview","quickSuggestions","strings","other","comments","createDecorationsCollection","editor","editorMouseDownEvent","onMouseDown","_decorations$getRange","_decorations$getRange2","decorations","getRanges","call","modKey","navigator","platform","position","containsPosition","getValueInRange","mouseOverEvent","onMouseMove","newDecorations","equalsRange","onDidContentSizeChange","contentHeightChanged","newHeight","fixEditorHeightWithScrollBar","contentHeight","getContentHeight","onDidChangeContent","_editorRef$current3","_editorRef$current4","ref","outline","getContentHeightByLines","Math","min","max","split","fixedHeight","lines","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/7423.2bb020f8.js","mappings":"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","sources":["webpack:///./src/code-editor/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport type { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { register as registerJavaScript } from \"@next-core/monaco-contributions/javascript\";\nimport { register as registerTypeScript } from \"@next-core/monaco-contributions/typescript\";\nimport { register as registerYaml } from \"@next-core/monaco-contributions/yaml\";\nimport { register as registerHtml } from \"@next-core/monaco-contributions/html\";\nimport yaml from \"js-yaml\";\nimport BrickNextYamlSourceMap, { Token } from \"./utils/brickNextSourceMap.js\";\nimport \"@next-core/theme\";\nimport { isEqual } from \"lodash\";\nimport {\n EDITOR_SCROLLBAR_SIZE,\n EDITOR_PADDING_VERTICAL,\n EDITOR_LINE_HEIGHT,\n EDITOR_FONT_SIZE,\n} from \"./constants.js\";\nimport { brickNextYAMLProvideCompletionItems } from \"./utils/brickNextYaml.js\";\nimport \"./index.css\";\nimport { EVALUATE_KEYWORD, Level } from \"./utils/constants.js\";\nimport type { MemberExpression, Identifier } from \"@babel/types\";\nimport { preevaluate } from \"@next-core/cook\";\n\nregisterJavaScript(monaco);\nregisterTypeScript(monaco);\nregisterYaml(monaco, \"brick_next_yaml\");\nregisterHtml(monaco);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nexport interface CodeEditorProps {\n name?: string;\n label?: string;\n value?: string;\n language?: string;\n theme?: string;\n required?: boolean;\n readOnly?: boolean;\n automaticLayout?: \"fit-container\" | \"fit-content\" | \"none\";\n minLines?: number;\n maxLines?: number;\n height?: string | number;\n completers?: monaco.languages.CompletionItem[];\n advancedCompleters?: Record<\n string,\n { triggerCharacter: string; completers: monaco.languages.CompletionItem[] }\n >;\n markers?: Marker[];\n links?: string[];\n validateState?: string;\n}\n\nexport interface Marker {\n token: string;\n level: keyof typeof Level;\n message: string;\n code?: {\n value: string;\n target: string;\n };\n params?: string[];\n}\n\n/**\n * 构件代码编辑器\n * @category form-input-advanced\n */\nexport\n@defineElement(\"vs.code-editor\", {\n // There are a few issues for monaco-editor with shadow DOM.\n // So we use light DOM for now.\n // See https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+shadow+dom\n shadowOptions: false,\n})\nclass CodeEditor extends FormItemElementBase implements CodeEditorProps {\n @property()\n accessor name: string | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({ attribute: false })\n accessor value: string | undefined;\n\n /**\n * @default \"plaintext\"\n */\n @property()\n accessor language: string | undefined;\n\n /**\n * 主题,支持 `\"auto\" | \"vs\" | \"vs-dark\"`\n *\n * @default \"auto\"\n * @group ui\n */\n @property() accessor theme: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property({\n type: Boolean,\n })\n accessor readOnly: boolean | undefined;\n\n @property()\n accessor automaticLayout:\n | \"fit-container\"\n | \"fit-content\"\n | \"none\"\n | undefined;\n\n /**\n * @default 3\n */\n @property({ type: Number })\n accessor minLines: number | undefined;\n\n @property({\n attribute: false,\n })\n accessor completers: monaco.languages.CompletionItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor advancedCompleters:\n | Record<\n string,\n {\n triggerCharacter: string;\n completers: monaco.languages.CompletionItem[];\n }\n >\n | undefined;\n\n @property({ attribute: false })\n accessor markers: Marker[] | undefined;\n\n @property({ attribute: false })\n accessor links: string[] | undefined;\n\n /**\n * @default Infinity\n */\n @property({ type: Number })\n accessor maxLines: number | undefined;\n\n @property({ attribute: false })\n accessor height: string | number | undefined;\n\n @property()\n accessor message: string | undefined;\n\n @event({ type: \"code.change\" })\n accessor #codeChange!: EventEmitter<string>;\n\n @event({ type: \"user.input\" })\n accessor #userInput!: EventEmitter<string>;\n\n #handleChange = (value: string, parseValue: any, isFlush: boolean) => {\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.#codeChange.emit(parseValue);\n if (!isFlush) {\n this.#userInput.emit(parseValue);\n }\n };\n\n @event({ type: \"token.click\" })\n accessor #highlighClickEvent!: EventEmitter<string>;\n\n #handleHighlightClick = (word: string) => {\n this.#highlighClickEvent.emit(word);\n };\n\n #handleValidtor = (value: string) => {\n try {\n yaml.load(value);\n } catch {\n return \"请填写正确的格式\";\n }\n return \"\";\n };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n super.connectedCallback();\n }\n\n render() {\n return (\n <WrappedFormItem\n curElement={this}\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n validator={this.#handleValidtor}\n >\n <CodeEditorComponent\n value={this.value}\n language={this.language}\n readOnly={this.readOnly}\n theme={this.theme}\n automaticLayout={this.automaticLayout}\n minLines={this.minLines}\n maxLines={this.maxLines}\n height={this.height}\n completers={this.completers}\n advancedCompleters={this.advancedCompleters}\n markers={this.markers}\n links={this.links}\n validateState={this.validateState}\n onChange={this.#handleChange}\n onHighlightClick={this.#handleHighlightClick}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport function CodeEditorComponent({\n value: _value,\n language: _language,\n theme: _theme,\n minLines: _minLines,\n maxLines: _maxLines,\n height: _height,\n automaticLayout,\n completers,\n advancedCompleters,\n markers,\n readOnly,\n links,\n validateState,\n onChange,\n onHighlightClick,\n}: CodeEditorProps & {\n onChange(value: string, parseValue: any, isFlush: boolean): void;\n onHighlightClick(word: string): void;\n}) {\n const value = _value ?? \"\";\n const language = _language ?? \"plaintext\";\n const theme = _theme ?? \"auto\";\n const minLines = _minLines ?? 3;\n const maxLines = _maxLines ?? Infinity;\n const height = _height ?? 500;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const decorationsCollection =\n useRef<monaco.editor.IEditorDecorationsCollection>();\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n const size = useRef<monaco.editor.IDimension>({\n width: 300,\n height: getContentHeightByCode(value, minLines, maxLines),\n });\n const [actualHeight, setActualHeight] = useState<string | number>();\n // `automaticLayout` should never change\n const automaticLayoutRef = useRef(automaticLayout);\n const systemTheme = useCurrentTheme();\n\n useEffect(() => {\n // Currently theme is configured globally.\n // See https://github.com/microsoft/monaco-editor/issues/338\n monaco.editor.setTheme(\n theme === \"auto\"\n ? systemTheme === \"dark\" || systemTheme === \"dark-v2\"\n ? \"vs-dark\"\n : \"vs\"\n : theme\n );\n }, [systemTheme, theme]);\n\n useEffect(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n monaco.editor.setModelLanguage(currentModel, language);\n if (!isEqual(currentModel.getValue(), value)) {\n currentModel.setValue(value);\n }\n }\n }, [value, language]);\n\n useEffect(() => {\n if (language === \"brick_next_yaml\") {\n const provideCompletionItems = brickNextYAMLProvideCompletionItems(\n completers,\n advancedCompleters\n );\n const monacoProviderRef = monaco.languages.registerCompletionItemProvider(\n \"brick_next_yaml\",\n {\n provideCompletionItems,\n triggerCharacters: [\".\", \":\", \"<\"],\n }\n );\n return () => {\n monacoProviderRef.dispose();\n };\n }\n }, [completers, advancedCompleters, language]);\n\n const parseYaml = useCallback(() => {\n const map = new BrickNextYamlSourceMap();\n let parseValue = undefined;\n if (editorRef.current) {\n const model = editorRef.current.getModel()!;\n\n try {\n parseValue = yaml.load(value, {\n listener: map.listen(),\n });\n\n if ((links || markers) && editorRef.current) {\n const tokens: Omit<\n Token & { token: string; property: string },\n \"source\"\n >[] = [];\n map.getTokens().forEach((item) => {\n const { startLineNumber, endLineNumber, startColumn } = item;\n const globalNodes: MemberExpression[] = [];\n const result = preevaluate(item.source, {\n hooks: {\n beforeVisit(node) {\n if (\n node.type === \"MemberExpression\" &&\n node.object.type === \"Identifier\" &&\n EVALUATE_KEYWORD.includes(node.object.name) &&\n node.property.type === \"Identifier\"\n ) {\n globalNodes.push(node);\n }\n },\n },\n });\n\n globalNodes.forEach((node) => {\n const { start, end, loc } = node;\n if (item.startLineNumber !== item.endLineNumber) {\n const hadWrap = /<%[ ]+/.test(result.prefix);\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber:\n item.startLineNumber +\n (loc?.start?.line as number) -\n Number(hadWrap),\n endLineNumber:\n item.startLineNumber +\n (loc?.end?.line as number) -\n Number(hadWrap),\n startColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.start?.column as number) +\n 1,\n endColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.end?.column as number) +\n 1,\n });\n } else {\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber,\n endLineNumber,\n startColumn:\n startColumn +\n (start as number) +\n result.prefix?.length +\n Number(!item.isString),\n endColumn:\n startColumn +\n (end as number) +\n result.prefix?.length +\n Number(!item.isString),\n });\n }\n });\n });\n\n decorationsCollection.current?.set(\n tokens\n .filter((token) => links?.includes(token.token))\n .map((token) => ({\n range: new monaco.Range(\n token.startLineNumber,\n token.startColumn,\n token.endLineNumber,\n token.endColumn\n ),\n options: {\n inlineClassName: \"highlight\",\n },\n }))\n );\n\n if (markers) {\n const modelMarkers = tokens\n .map((token) => {\n const matchTokenConf = markers.find(\n (item) => item.token === token.token\n );\n const hadProperty = matchTokenConf?.params\n ? matchTokenConf.params?.includes(token.property)\n : true;\n if (!hadProperty) {\n return {\n severity: Level.warn,\n message: \"Miss Property\",\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n if (matchTokenConf && matchTokenConf.message) {\n return {\n severity: Level[matchTokenConf?.level ?? \"warn\"],\n message: matchTokenConf.message,\n ...(matchTokenConf.code\n ? {\n code: {\n value: matchTokenConf.code.value,\n target: monaco.Uri.parse(\n matchTokenConf.code.target\n ),\n },\n }\n : {}),\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n })\n .filter(Boolean) as monaco.editor.IMarkerData[];\n\n monaco.editor.setModelMarkers(\n model,\n \"brick_next_yaml\",\n modelMarkers\n );\n }\n }\n } catch (e) {\n monaco.editor.setModelMarkers(model, \"brick_next_yaml\", []);\n decorationsCollection?.current?.set([]);\n }\n }\n return parseValue;\n }, [value, links, markers]);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-content\" || !containerRef.current) {\n return;\n }\n\n size.current.width = containerRef.current.getBoundingClientRect().width;\n editorRef.current?.layout(size.current);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === containerRef.current) {\n const newWidth = entry.contentBoxSize\n ? entry.contentBoxSize[0].inlineSize\n : entry.contentRect.width;\n if (newWidth !== size.current.width) {\n size.current.width = newWidth;\n editorRef.current?.layout(size.current);\n }\n break;\n }\n }\n });\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-container\") {\n return;\n }\n\n const container = getDOMContainer(containerRef.current);\n if (!container) {\n return;\n }\n // Manually layout the editor once the container resized.\n const observer = new ResizeObserver((): void => {\n setActualHeight(container.offsetHeight);\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (\n automaticLayoutRef.current !== \"fit-container\" &&\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n setActualHeight(height);\n }\n }, [height]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.updateOptions({\n readOnly,\n });\n }, [readOnly]);\n\n useEffect(() => {\n if (editorRef.current || !containerRef.current) {\n return;\n }\n const model = monaco.editor.createModel(value, language);\n editorRef.current = monaco.editor.create(containerRef.current, {\n model,\n minimap: {\n enabled: false,\n },\n scrollBeyondLastLine: false,\n tabSize: 2,\n insertSpaces: true,\n automaticLayout: automaticLayoutRef.current !== \"fit-content\",\n fontSize: EDITOR_FONT_SIZE,\n lineHeight: EDITOR_LINE_HEIGHT,\n scrollbar: {\n horizontalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n verticalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n horizontalSliderSize: 8,\n verticalSliderSize: 8,\n alwaysConsumeMouseWheel: false,\n },\n padding: {\n top: EDITOR_PADDING_VERTICAL,\n // When use `fit-content`, we always plus the height with the vertical padding.\n // Thus the possible x-scrollbar will not take extra space at the bottom.\n bottom:\n automaticLayoutRef.current == \"fit-content\"\n ? undefined\n : EDITOR_PADDING_VERTICAL,\n },\n overviewRulerBorder: false,\n mouseWheelScrollSensitivity: 0.5,\n suggest: {\n insertMode: \"insert\",\n preview: true,\n },\n readOnly: readOnly,\n quickSuggestions: { strings: true, other: true, comments: true },\n });\n\n decorationsCollection.current =\n editorRef.current.createDecorationsCollection();\n }, [value, language, readOnly]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (language === \"brick_next_yaml\" && editor) {\n const model = editor.getModel()!;\n const editorMouseDownEvent = editor.onMouseDown(function (e) {\n const decorations = decorationsCollection.current;\n (decorations?.getRanges?.() ?? []).forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n onHighlightClick(model.getValueInRange(range));\n }\n });\n });\n\n const mouseOverEvent = editor.onMouseMove(function (e) {\n const decorations = decorationsCollection.current;\n if (!decorations) return;\n decorations.getRanges().forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: range.equalsRange(item)\n ? \"highlight pointer\"\n : \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n } else if (!e.event[modKey]) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n }\n });\n });\n\n parseYaml();\n\n return () => {\n mouseOverEvent?.dispose();\n editorMouseDownEvent?.dispose();\n };\n }\n }, [language, onHighlightClick, systemTheme, theme, parseYaml]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (\n !editor ||\n !containerRef.current ||\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n return;\n }\n\n const listener = editor.onDidContentSizeChange((e) => {\n if (e.contentHeightChanged) {\n const newHeight = fixEditorHeightWithScrollBar(\n e.contentHeight,\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n }\n });\n\n const newHeight = fixEditorHeightWithScrollBar(\n editor.getContentHeight(),\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n\n return () => {\n listener.dispose();\n };\n }, [maxLines, minLines]);\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n const currentModel = editorRef.current.getModel()!;\n const listener = currentModel.onDidChangeContent((e) => {\n const parseValue = parseYaml();\n onChange(currentModel.getValue(), parseValue, e.isFlush);\n });\n return () => {\n listener.dispose();\n };\n }, [onChange, parseYaml]);\n\n useEffect(() => {\n return () => {\n editorRef.current?.getModel()?.dispose();\n editorRef.current?.dispose();\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n style={{\n height: actualHeight,\n ...(validateState === \"error\"\n ? {\n outline: \"1px solid var(--antd-error-color)\",\n }\n : {}),\n }}\n />\n );\n}\n\nfunction getContentHeightByCode(\n code: string,\n minLines: number,\n maxLines: number\n): number {\n return getContentHeightByLines(\n Math.min(maxLines, Math.max(minLines, code.split(\"\\n\").length))\n );\n}\n\nfunction fixEditorHeightWithScrollBar(\n contentHeight: number,\n minLines: number,\n maxLines: number\n): number {\n let fixedHeight = contentHeight;\n if ((contentHeight - EDITOR_PADDING_VERTICAL) % EDITOR_LINE_HEIGHT === 0) {\n fixedHeight = contentHeight + EDITOR_SCROLLBAR_SIZE;\n }\n return Math.min(\n getContentHeightByLines(maxLines),\n Math.max(fixedHeight, getContentHeightByLines(minLines))\n );\n}\n\nfunction getContentHeightByLines(lines: number): number {\n return (\n lines * EDITOR_LINE_HEIGHT + EDITOR_SCROLLBAR_SIZE + EDITOR_PADDING_VERTICAL\n );\n}\n\n/** Get the direct DOM container of `vs.code-editor` */\nfunction getDOMContainer(element: HTMLElement | null) {\n let brick = element;\n while (brick) {\n const found = brick.tagName.toLowerCase() === \"vs.code-editor\";\n brick = brick.parentElement;\n if (found) {\n return brick;\n }\n }\n}\n"],"names":["registerJavaScript","monaco","registerTypeScript","registerYaml","registerHtml","_CodeEditor","defineElement","property","event","createDecorators","WrappedFormItem","wrapBrick","_dec","shadowOptions","_dec2","_dec3","_dec4","attribute","_dec5","_dec6","_dec7","type","Boolean","_dec8","_dec9","_dec10","Number","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_codeChange","_R","_userInput","_handleChange","_S","_highlighClickEvent","_handleHighlightClick","_handleValidtor","CodeEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_highlighClickEvent2","set","_set_highlighClickEvent2","_get_userInput2","_set_userInput2","_get_codeChange2","_set_codeChange2","writable","value","_initProto","_init_name","_init_label","_init_value","_init_language","_init_theme","_init_required","_init_readOnly","_init_automaticLayout","_init_minLines","_init_completers","_init_advancedCompleters","_init_markers","_init_links","_init_maxLines","_init_height","_init_message","_init_codeChange","_init_userInput","parseValue","isFlush","_this$getFormElement","this","getFormElement","formStore","onChange","name","_classPrivateFieldGet","emit","_init_highlighClickEvent","word","yaml","_unused","v","_classPrivateFieldSet","label","language","theme","required","readOnly","automaticLayout","minLines","completers","advancedCompleters","markers","links","maxLines","height","message","connectedCallback","style","display","super","render","React","curElement","formElement","validator","CodeEditorComponent","validateState","onHighlightClick","_set_codeChange","_get_codeChange","_set_userInput","_get_userInput","_set_highlighClickEvent","_get_highlighClickEvent","_ref","_value","_language","_theme","_minLines","_maxLines","_height","Infinity","containerRef","useRef","decorationsCollection","editorRef","size","width","getContentHeightByCode","actualHeight","setActualHeight","useState","automaticLayoutRef","systemTheme","useCurrentTheme","useEffect","setTheme","current","currentModel","getModel","setModelLanguage","isEqual","getValue","setValue","provideCompletionItems","brickNextYAMLProvideCompletionItems","monacoProviderRef","registerCompletionItemProvider","triggerCharacters","dispose","parseYaml","useCallback","map","BrickNextYamlSourceMap","undefined","model","listener","listen","_decorationsCollectio","tokens","getTokens","forEach","item","startLineNumber","endLineNumber","startColumn","globalNodes","result","preevaluate","source","hooks","beforeVisit","node","object","EVALUATE_KEYWORD","includes","push","start","end","loc","_node$object","_loc$start","_loc$end","_loc$start2","_loc$end2","hadWrap","test","prefix","token","line","length","column","endColumn","_node$object2","_result$prefix","_result$prefix2","isString","filter","range","options","inlineClassName","modelMarkers","_matchTokenConf$param","_matchTokenConf$level","matchTokenConf","find","params","_objectSpread","severity","Level","level","code","target","parse","warn","setModelMarkers","e","_decorationsCollectio2","useLayoutEffect","_editorRef$current","getBoundingClientRect","layout","observer","ResizeObserver","entries","entry","_editorRef$current2","newWidth","contentBoxSize","inlineSize","contentRect","observe","disconnect","container","element","brick","found","tagName","toLowerCase","parentElement","getDOMContainer","offsetHeight","updateOptions","createModel","create","minimap","enabled","scrollBeyondLastLine","tabSize","insertSpaces","fontSize","EDITOR_FONT_SIZE","lineHeight","EDITOR_LINE_HEIGHT","scrollbar","horizontalScrollbarSize","EDITOR_SCROLLBAR_SIZE","verticalScrollbarSize","horizontalSliderSize","verticalSliderSize","alwaysConsumeMouseWheel","padding","top","EDITOR_PADDING_VERTICAL","bottom","overviewRulerBorder","mouseWheelScrollSensitivity","suggest","insertMode","preview","quickSuggestions","strings","other","comments","createDecorationsCollection","editor","editorMouseDownEvent","onMouseDown","_decorations$getRange","_decorations$getRange2","decorations","getRanges","call","modKey","navigator","platform","position","containsPosition","getValueInRange","mouseOverEvent","onMouseMove","newDecorations","equalsRange","onDidContentSizeChange","contentHeightChanged","newHeight","fixEditorHeightWithScrollBar","contentHeight","getContentHeight","onDidChangeContent","_editorRef$current3","_editorRef$current4","ref","outline","getContentHeightByLines","Math","min","max","split","fixedHeight","lines","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/code-editor.92f93ab3.js","mappings":"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","sources":["webpack:///./src/code-editor/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport type { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { register as registerJavaScript } from \"@next-core/monaco-contributions/javascript\";\nimport { register as registerTypeScript } from \"@next-core/monaco-contributions/typescript\";\nimport { register as registerYaml } from \"@next-core/monaco-contributions/yaml\";\nimport { register as registerHtml } from \"@next-core/monaco-contributions/html\";\nimport yaml from \"js-yaml\";\nimport BrickNextYamlSourceMap, { Token } from \"./utils/brickNextSourceMap.js\";\nimport \"@next-core/theme\";\nimport { isEqual } from \"lodash\";\nimport {\n EDITOR_SCROLLBAR_SIZE,\n EDITOR_PADDING_VERTICAL,\n EDITOR_LINE_HEIGHT,\n EDITOR_FONT_SIZE,\n} from \"./constants.js\";\nimport { brickNextYAMLProvideCompletionItems } from \"./utils/brickNextYaml.js\";\nimport \"./index.css\";\nimport { EVALUATE_KEYWORD, Level } from \"./utils/constants.js\";\nimport type { MemberExpression, Identifier } from \"@babel/types\";\nimport { preevaluate } from \"@next-core/cook\";\n\nregisterJavaScript(monaco);\nregisterTypeScript(monaco);\nregisterYaml(monaco, \"brick_next_yaml\");\nregisterHtml(monaco);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nexport interface CodeEditorProps {\n name?: string;\n label?: string;\n value?: string;\n language?: string;\n theme?: string;\n required?: boolean;\n readOnly?: boolean;\n automaticLayout?: \"fit-container\" | \"fit-content\" | \"none\";\n minLines?: number;\n maxLines?: number;\n height?: string | number;\n completers?: monaco.languages.CompletionItem[];\n advancedCompleters?: Record<\n string,\n { triggerCharacter: string; completers: monaco.languages.CompletionItem[] }\n >;\n markers?: Marker[];\n links?: string[];\n validateState?: string;\n}\n\nexport interface Marker {\n token: string;\n level: keyof typeof Level;\n message: string;\n code?: {\n value: string;\n target: string;\n };\n params?: string[];\n}\n\n/**\n * 构件 code-editor\n */\nexport\n@defineElement(\"vs.code-editor\", {\n // There are a few issues for monaco-editor with shadow DOM.\n // So we use light DOM for now.\n // See https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+shadow+dom\n shadowOptions: false,\n})\nclass CodeEditor extends FormItemElementBase implements CodeEditorProps {\n @property()\n accessor name: string | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({ attribute: false })\n accessor value: string | undefined;\n\n /**\n * @default \"plaintext\"\n */\n @property()\n accessor language: string | undefined;\n\n /**\n * 主题,支持 `\"auto\" | \"vs\" | \"vs-dark\"`\n *\n * @default \"auto\"\n * @group ui\n */\n @property() accessor theme: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property({\n type: Boolean,\n })\n accessor readOnly: boolean | undefined;\n\n @property()\n accessor automaticLayout:\n | \"fit-container\"\n | \"fit-content\"\n | \"none\"\n | undefined;\n\n /**\n * @default 3\n */\n @property({ type: Number })\n accessor minLines: number | undefined;\n\n @property({\n attribute: false,\n })\n accessor completers: monaco.languages.CompletionItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor advancedCompleters:\n | Record<\n string,\n {\n triggerCharacter: string;\n completers: monaco.languages.CompletionItem[];\n }\n >\n | undefined;\n\n @property({ attribute: false })\n accessor markers: Marker[] | undefined;\n\n @property({ attribute: false })\n accessor links: string[] | undefined;\n\n /**\n * @default Infinity\n */\n @property({ type: Number })\n accessor maxLines: number | undefined;\n\n @property({ attribute: false })\n accessor height: string | number | undefined;\n\n @property()\n accessor message: string | undefined;\n\n @event({ type: \"code.change\" })\n accessor #codeChange!: EventEmitter<string>;\n\n @event({ type: \"user.input\" })\n accessor #userInput!: EventEmitter<string>;\n\n #handleChange = (value: string, parseValue: any, isFlush: boolean) => {\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.#codeChange.emit(parseValue);\n if (!isFlush) {\n this.#userInput.emit(parseValue);\n }\n };\n\n @event({ type: \"token.click\" })\n accessor #highlighClickEvent!: EventEmitter<string>;\n\n #handleHighlightClick = (word: string) => {\n this.#highlighClickEvent.emit(word);\n };\n\n #handleValidtor = (value: string) => {\n try {\n yaml.load(value);\n } catch {\n return \"请填写正确的格式\";\n }\n return \"\";\n };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n super.connectedCallback();\n }\n\n render() {\n return (\n <WrappedFormItem\n curElement={this}\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n validator={this.#handleValidtor}\n >\n <CodeEditorComponent\n value={this.value}\n language={this.language}\n readOnly={this.readOnly}\n theme={this.theme}\n automaticLayout={this.automaticLayout}\n minLines={this.minLines}\n maxLines={this.maxLines}\n height={this.height}\n completers={this.completers}\n advancedCompleters={this.advancedCompleters}\n markers={this.markers}\n links={this.links}\n validateState={this.validateState}\n onChange={this.#handleChange}\n onHighlightClick={this.#handleHighlightClick}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport function CodeEditorComponent({\n value: _value,\n language: _language,\n theme: _theme,\n minLines: _minLines,\n maxLines: _maxLines,\n height: _height,\n automaticLayout,\n completers,\n advancedCompleters,\n markers,\n readOnly,\n links,\n validateState,\n onChange,\n onHighlightClick,\n}: CodeEditorProps & {\n onChange(value: string, parseValue: any, isFlush: boolean): void;\n onHighlightClick(word: string): void;\n}) {\n const value = _value ?? \"\";\n const language = _language ?? \"plaintext\";\n const theme = _theme ?? \"auto\";\n const minLines = _minLines ?? 3;\n const maxLines = _maxLines ?? Infinity;\n const height = _height ?? 500;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const decorationsCollection =\n useRef<monaco.editor.IEditorDecorationsCollection>();\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n const size = useRef<monaco.editor.IDimension>({\n width: 300,\n height: getContentHeightByCode(value, minLines, maxLines),\n });\n const [actualHeight, setActualHeight] = useState<string | number>();\n // `automaticLayout` should never change\n const automaticLayoutRef = useRef(automaticLayout);\n const systemTheme = useCurrentTheme();\n\n useEffect(() => {\n // Currently theme is configured globally.\n // See https://github.com/microsoft/monaco-editor/issues/338\n monaco.editor.setTheme(\n theme === \"auto\"\n ? systemTheme === \"dark\" || systemTheme === \"dark-v2\"\n ? \"vs-dark\"\n : \"vs\"\n : theme\n );\n }, [systemTheme, theme]);\n\n useEffect(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n monaco.editor.setModelLanguage(currentModel, language);\n if (!isEqual(currentModel.getValue(), value)) {\n currentModel.setValue(value);\n }\n }\n }, [value, language]);\n\n useEffect(() => {\n if (language === \"brick_next_yaml\") {\n const provideCompletionItems = brickNextYAMLProvideCompletionItems(\n completers,\n advancedCompleters\n );\n const monacoProviderRef = monaco.languages.registerCompletionItemProvider(\n \"brick_next_yaml\",\n {\n provideCompletionItems,\n triggerCharacters: [\".\", \":\", \"<\"],\n }\n );\n return () => {\n monacoProviderRef.dispose();\n };\n }\n }, [completers, advancedCompleters, language]);\n\n const parseYaml = useCallback(() => {\n const map = new BrickNextYamlSourceMap();\n let parseValue = undefined;\n if (editorRef.current) {\n const model = editorRef.current.getModel()!;\n\n try {\n parseValue = yaml.load(value, {\n listener: map.listen(),\n });\n\n if ((links || markers) && editorRef.current) {\n const tokens: Omit<\n Token & { token: string; property: string },\n \"source\"\n >[] = [];\n map.getTokens().forEach((item) => {\n const { startLineNumber, endLineNumber, startColumn } = item;\n const globalNodes: MemberExpression[] = [];\n const result = preevaluate(item.source, {\n hooks: {\n beforeVisit(node) {\n if (\n node.type === \"MemberExpression\" &&\n node.object.type === \"Identifier\" &&\n EVALUATE_KEYWORD.includes(node.object.name) &&\n node.property.type === \"Identifier\"\n ) {\n globalNodes.push(node);\n }\n },\n },\n });\n\n globalNodes.forEach((node) => {\n const { start, end, loc } = node;\n if (item.startLineNumber !== item.endLineNumber) {\n const hadWrap = /<%[ ]+/.test(result.prefix);\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber:\n item.startLineNumber +\n (loc?.start?.line as number) -\n Number(hadWrap),\n endLineNumber:\n item.startLineNumber +\n (loc?.end?.line as number) -\n Number(hadWrap),\n startColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.start?.column as number) +\n 1,\n endColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.end?.column as number) +\n 1,\n });\n } else {\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber,\n endLineNumber,\n startColumn:\n startColumn +\n (start as number) +\n result.prefix?.length +\n Number(!item.isString),\n endColumn:\n startColumn +\n (end as number) +\n result.prefix?.length +\n Number(!item.isString),\n });\n }\n });\n });\n\n decorationsCollection.current?.set(\n tokens\n .filter((token) => links?.includes(token.token))\n .map((token) => ({\n range: new monaco.Range(\n token.startLineNumber,\n token.startColumn,\n token.endLineNumber,\n token.endColumn\n ),\n options: {\n inlineClassName: \"highlight\",\n },\n }))\n );\n\n if (markers) {\n const modelMarkers = tokens\n .map((token) => {\n const matchTokenConf = markers.find(\n (item) => item.token === token.token\n );\n const hadProperty = matchTokenConf?.params\n ? matchTokenConf.params?.includes(token.property)\n : true;\n if (!hadProperty) {\n return {\n severity: Level.warn,\n message: \"Miss Property\",\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n if (matchTokenConf && matchTokenConf.message) {\n return {\n severity: Level[matchTokenConf?.level ?? \"warn\"],\n message: matchTokenConf.message,\n ...(matchTokenConf.code\n ? {\n code: {\n value: matchTokenConf.code.value,\n target: monaco.Uri.parse(\n matchTokenConf.code.target\n ),\n },\n }\n : {}),\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n })\n .filter(Boolean) as monaco.editor.IMarkerData[];\n\n monaco.editor.setModelMarkers(\n model,\n \"brick_next_yaml\",\n modelMarkers\n );\n }\n }\n } catch (e) {\n monaco.editor.setModelMarkers(model, \"brick_next_yaml\", []);\n decorationsCollection?.current?.set([]);\n }\n }\n return parseValue;\n }, [value, links, markers]);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-content\" || !containerRef.current) {\n return;\n }\n\n size.current.width = containerRef.current.getBoundingClientRect().width;\n editorRef.current?.layout(size.current);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === containerRef.current) {\n const newWidth = entry.contentBoxSize\n ? entry.contentBoxSize[0].inlineSize\n : entry.contentRect.width;\n if (newWidth !== size.current.width) {\n size.current.width = newWidth;\n editorRef.current?.layout(size.current);\n }\n break;\n }\n }\n });\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-container\") {\n return;\n }\n\n const container = getDOMContainer(containerRef.current);\n if (!container) {\n return;\n }\n // Manually layout the editor once the container resized.\n const observer = new ResizeObserver((): void => {\n setActualHeight(container.offsetHeight);\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (\n automaticLayoutRef.current !== \"fit-container\" &&\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n setActualHeight(height);\n }\n }, [height]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.updateOptions({\n readOnly,\n });\n }, [readOnly]);\n\n useEffect(() => {\n if (editorRef.current || !containerRef.current) {\n return;\n }\n const model = monaco.editor.createModel(value, language);\n editorRef.current = monaco.editor.create(containerRef.current, {\n model,\n minimap: {\n enabled: false,\n },\n scrollBeyondLastLine: false,\n tabSize: 2,\n insertSpaces: true,\n automaticLayout: automaticLayoutRef.current !== \"fit-content\",\n fontSize: EDITOR_FONT_SIZE,\n lineHeight: EDITOR_LINE_HEIGHT,\n scrollbar: {\n horizontalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n verticalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n horizontalSliderSize: 8,\n verticalSliderSize: 8,\n alwaysConsumeMouseWheel: false,\n },\n padding: {\n top: EDITOR_PADDING_VERTICAL,\n // When use `fit-content`, we always plus the height with the vertical padding.\n // Thus the possible x-scrollbar will not take extra space at the bottom.\n bottom:\n automaticLayoutRef.current == \"fit-content\"\n ? undefined\n : EDITOR_PADDING_VERTICAL,\n },\n overviewRulerBorder: false,\n mouseWheelScrollSensitivity: 0.5,\n suggest: {\n insertMode: \"insert\",\n preview: true,\n },\n readOnly: readOnly,\n quickSuggestions: { strings: true, other: true, comments: true },\n });\n\n decorationsCollection.current =\n editorRef.current.createDecorationsCollection();\n }, [value, language, readOnly]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (language === \"brick_next_yaml\" && editor) {\n const model = editor.getModel()!;\n const editorMouseDownEvent = editor.onMouseDown(function (e) {\n const decorations = decorationsCollection.current;\n (decorations?.getRanges?.() ?? []).forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n onHighlightClick(model.getValueInRange(range));\n }\n });\n });\n\n const mouseOverEvent = editor.onMouseMove(function (e) {\n const decorations = decorationsCollection.current;\n if (!decorations) return;\n decorations.getRanges().forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: range.equalsRange(item)\n ? \"highlight pointer\"\n : \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n } else if (!e.event[modKey]) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n }\n });\n });\n\n parseYaml();\n\n return () => {\n mouseOverEvent?.dispose();\n editorMouseDownEvent?.dispose();\n };\n }\n }, [language, onHighlightClick, systemTheme, theme, parseYaml]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (\n !editor ||\n !containerRef.current ||\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n return;\n }\n\n const listener = editor.onDidContentSizeChange((e) => {\n if (e.contentHeightChanged) {\n const newHeight = fixEditorHeightWithScrollBar(\n e.contentHeight,\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n }\n });\n\n const newHeight = fixEditorHeightWithScrollBar(\n editor.getContentHeight(),\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n\n return () => {\n listener.dispose();\n };\n }, [maxLines, minLines]);\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n const currentModel = editorRef.current.getModel()!;\n const listener = currentModel.onDidChangeContent((e) => {\n const parseValue = parseYaml();\n onChange(currentModel.getValue(), parseValue, e.isFlush);\n });\n return () => {\n listener.dispose();\n };\n }, [onChange, parseYaml]);\n\n useEffect(() => {\n return () => {\n editorRef.current?.getModel()?.dispose();\n editorRef.current?.dispose();\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n style={{\n height: actualHeight,\n ...(validateState === \"error\"\n ? {\n outline: \"1px solid var(--antd-error-color)\",\n }\n : {}),\n }}\n />\n );\n}\n\nfunction getContentHeightByCode(\n code: string,\n minLines: number,\n maxLines: number\n): number {\n return getContentHeightByLines(\n Math.min(maxLines, Math.max(minLines, code.split(\"\\n\").length))\n );\n}\n\nfunction fixEditorHeightWithScrollBar(\n contentHeight: number,\n minLines: number,\n maxLines: number\n): number {\n let fixedHeight = contentHeight;\n if ((contentHeight - EDITOR_PADDING_VERTICAL) % EDITOR_LINE_HEIGHT === 0) {\n fixedHeight = contentHeight + EDITOR_SCROLLBAR_SIZE;\n }\n return Math.min(\n getContentHeightByLines(maxLines),\n Math.max(fixedHeight, getContentHeightByLines(minLines))\n );\n}\n\nfunction getContentHeightByLines(lines: number): number {\n return (\n lines * EDITOR_LINE_HEIGHT + EDITOR_SCROLLBAR_SIZE + EDITOR_PADDING_VERTICAL\n );\n}\n\n/** Get the direct DOM container of `vs.code-editor` */\nfunction getDOMContainer(element: HTMLElement | null) {\n let brick = element;\n while (brick) {\n const found = brick.tagName.toLowerCase() === \"vs.code-editor\";\n brick = brick.parentElement;\n if (found) {\n return brick;\n }\n }\n}\n"],"names":["registerJavaScript","monaco","registerTypeScript","registerYaml","registerHtml","_CodeEditor","defineElement","property","event","createDecorators","WrappedFormItem","wrapBrick","_dec","shadowOptions","_dec2","_dec3","_dec4","attribute","_dec5","_dec6","_dec7","type","Boolean","_dec8","_dec9","_dec10","Number","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_codeChange","_R","_userInput","_handleChange","_S","_highlighClickEvent","_handleHighlightClick","_handleValidtor","CodeEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_highlighClickEvent2","set","_set_highlighClickEvent2","_get_userInput2","_set_userInput2","_get_codeChange2","_set_codeChange2","writable","value","_initProto","_init_name","_init_label","_init_value","_init_language","_init_theme","_init_required","_init_readOnly","_init_automaticLayout","_init_minLines","_init_completers","_init_advancedCompleters","_init_markers","_init_links","_init_maxLines","_init_height","_init_message","_init_codeChange","_init_userInput","parseValue","isFlush","_this$getFormElement","this","getFormElement","formStore","onChange","name","_classPrivateFieldGet","emit","_init_highlighClickEvent","word","yaml","_unused","v","_classPrivateFieldSet","label","language","theme","required","readOnly","automaticLayout","minLines","completers","advancedCompleters","markers","links","maxLines","height","message","connectedCallback","style","display","super","render","React","curElement","formElement","validator","CodeEditorComponent","validateState","onHighlightClick","_set_codeChange","_get_codeChange","_set_userInput","_get_userInput","_set_highlighClickEvent","_get_highlighClickEvent","_ref","_value","_language","_theme","_minLines","_maxLines","_height","Infinity","containerRef","useRef","decorationsCollection","editorRef","size","width","getContentHeightByCode","actualHeight","setActualHeight","useState","automaticLayoutRef","systemTheme","useCurrentTheme","useEffect","setTheme","current","currentModel","getModel","setModelLanguage","isEqual","getValue","setValue","provideCompletionItems","brickNextYAMLProvideCompletionItems","monacoProviderRef","registerCompletionItemProvider","triggerCharacters","dispose","parseYaml","useCallback","map","BrickNextYamlSourceMap","undefined","model","listener","listen","_decorationsCollectio","tokens","getTokens","forEach","item","startLineNumber","endLineNumber","startColumn","globalNodes","result","preevaluate","source","hooks","beforeVisit","node","object","EVALUATE_KEYWORD","includes","push","start","end","loc","_node$object","_loc$start","_loc$end","_loc$start2","_loc$end2","hadWrap","test","prefix","token","line","length","column","endColumn","_node$object2","_result$prefix","_result$prefix2","isString","filter","range","options","inlineClassName","modelMarkers","_matchTokenConf$param","_matchTokenConf$level","matchTokenConf","find","params","_objectSpread","severity","Level","level","code","target","parse","warn","setModelMarkers","e","_decorationsCollectio2","useLayoutEffect","_editorRef$current","getBoundingClientRect","layout","observer","ResizeObserver","entries","entry","_editorRef$current2","newWidth","contentBoxSize","inlineSize","contentRect","observe","disconnect","container","element","brick","found","tagName","toLowerCase","parentElement","getDOMContainer","offsetHeight","updateOptions","createModel","create","minimap","enabled","scrollBeyondLastLine","tabSize","insertSpaces","fontSize","EDITOR_FONT_SIZE","lineHeight","EDITOR_LINE_HEIGHT","scrollbar","horizontalScrollbarSize","EDITOR_SCROLLBAR_SIZE","verticalScrollbarSize","horizontalSliderSize","verticalSliderSize","alwaysConsumeMouseWheel","padding","top","EDITOR_PADDING_VERTICAL","bottom","overviewRulerBorder","mouseWheelScrollSensitivity","suggest","insertMode","preview","quickSuggestions","strings","other","comments","createDecorationsCollection","editor","editorMouseDownEvent","onMouseDown","_decorations$getRange","_decorations$getRange2","decorations","getRanges","call","modKey","navigator","platform","position","containsPosition","getValueInRange","mouseOverEvent","onMouseMove","newDecorations","equalsRange","onDidContentSizeChange","contentHeightChanged","newHeight","fixEditorHeightWithScrollBar","contentHeight","getContentHeight","onDidChangeContent","_editorRef$current3","_editorRef$current4","ref","outline","getContentHeightByLines","Math","min","max","split","fixedHeight","lines","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/code-editor.92f93ab3.js","mappings":"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","sources":["webpack:///./src/code-editor/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport type { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { register as registerJavaScript } from \"@next-core/monaco-contributions/javascript\";\nimport { register as registerTypeScript } from \"@next-core/monaco-contributions/typescript\";\nimport { register as registerYaml } from \"@next-core/monaco-contributions/yaml\";\nimport { register as registerHtml } from \"@next-core/monaco-contributions/html\";\nimport yaml from \"js-yaml\";\nimport BrickNextYamlSourceMap, { Token } from \"./utils/brickNextSourceMap.js\";\nimport \"@next-core/theme\";\nimport { isEqual } from \"lodash\";\nimport {\n EDITOR_SCROLLBAR_SIZE,\n EDITOR_PADDING_VERTICAL,\n EDITOR_LINE_HEIGHT,\n EDITOR_FONT_SIZE,\n} from \"./constants.js\";\nimport { brickNextYAMLProvideCompletionItems } from \"./utils/brickNextYaml.js\";\nimport \"./index.css\";\nimport { EVALUATE_KEYWORD, Level } from \"./utils/constants.js\";\nimport type { MemberExpression, Identifier } from \"@babel/types\";\nimport { preevaluate } from \"@next-core/cook\";\n\nregisterJavaScript(monaco);\nregisterTypeScript(monaco);\nregisterYaml(monaco, \"brick_next_yaml\");\nregisterHtml(monaco);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nexport interface CodeEditorProps {\n name?: string;\n label?: string;\n value?: string;\n language?: string;\n theme?: string;\n required?: boolean;\n readOnly?: boolean;\n automaticLayout?: \"fit-container\" | \"fit-content\" | \"none\";\n minLines?: number;\n maxLines?: number;\n height?: string | number;\n completers?: monaco.languages.CompletionItem[];\n advancedCompleters?: Record<\n string,\n { triggerCharacter: string; completers: monaco.languages.CompletionItem[] }\n >;\n markers?: Marker[];\n links?: string[];\n validateState?: string;\n}\n\nexport interface Marker {\n token: string;\n level: keyof typeof Level;\n message: string;\n code?: {\n value: string;\n target: string;\n };\n params?: string[];\n}\n\n/**\n * 构件代码编辑器\n * @category form-input-advanced\n */\nexport\n@defineElement(\"vs.code-editor\", {\n // There are a few issues for monaco-editor with shadow DOM.\n // So we use light DOM for now.\n // See https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+shadow+dom\n shadowOptions: false,\n})\nclass CodeEditor extends FormItemElementBase implements CodeEditorProps {\n @property()\n accessor name: string | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({ attribute: false })\n accessor value: string | undefined;\n\n /**\n * @default \"plaintext\"\n */\n @property()\n accessor language: string | undefined;\n\n /**\n * 主题,支持 `\"auto\" | \"vs\" | \"vs-dark\"`\n *\n * @default \"auto\"\n * @group ui\n */\n @property() accessor theme: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property({\n type: Boolean,\n })\n accessor readOnly: boolean | undefined;\n\n @property()\n accessor automaticLayout:\n | \"fit-container\"\n | \"fit-content\"\n | \"none\"\n | undefined;\n\n /**\n * @default 3\n */\n @property({ type: Number })\n accessor minLines: number | undefined;\n\n @property({\n attribute: false,\n })\n accessor completers: monaco.languages.CompletionItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor advancedCompleters:\n | Record<\n string,\n {\n triggerCharacter: string;\n completers: monaco.languages.CompletionItem[];\n }\n >\n | undefined;\n\n @property({ attribute: false })\n accessor markers: Marker[] | undefined;\n\n @property({ attribute: false })\n accessor links: string[] | undefined;\n\n /**\n * @default Infinity\n */\n @property({ type: Number })\n accessor maxLines: number | undefined;\n\n @property({ attribute: false })\n accessor height: string | number | undefined;\n\n @property()\n accessor message: string | undefined;\n\n @event({ type: \"code.change\" })\n accessor #codeChange!: EventEmitter<string>;\n\n @event({ type: \"user.input\" })\n accessor #userInput!: EventEmitter<string>;\n\n #handleChange = (value: string, parseValue: any, isFlush: boolean) => {\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.#codeChange.emit(parseValue);\n if (!isFlush) {\n this.#userInput.emit(parseValue);\n }\n };\n\n @event({ type: \"token.click\" })\n accessor #highlighClickEvent!: EventEmitter<string>;\n\n #handleHighlightClick = (word: string) => {\n this.#highlighClickEvent.emit(word);\n };\n\n #handleValidtor = (value: string) => {\n try {\n yaml.load(value);\n } catch {\n return \"请填写正确的格式\";\n }\n return \"\";\n };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n super.connectedCallback();\n }\n\n render() {\n return (\n <WrappedFormItem\n curElement={this}\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n validator={this.#handleValidtor}\n >\n <CodeEditorComponent\n value={this.value}\n language={this.language}\n readOnly={this.readOnly}\n theme={this.theme}\n automaticLayout={this.automaticLayout}\n minLines={this.minLines}\n maxLines={this.maxLines}\n height={this.height}\n completers={this.completers}\n advancedCompleters={this.advancedCompleters}\n markers={this.markers}\n links={this.links}\n validateState={this.validateState}\n onChange={this.#handleChange}\n onHighlightClick={this.#handleHighlightClick}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport function CodeEditorComponent({\n value: _value,\n language: _language,\n theme: _theme,\n minLines: _minLines,\n maxLines: _maxLines,\n height: _height,\n automaticLayout,\n completers,\n advancedCompleters,\n markers,\n readOnly,\n links,\n validateState,\n onChange,\n onHighlightClick,\n}: CodeEditorProps & {\n onChange(value: string, parseValue: any, isFlush: boolean): void;\n onHighlightClick(word: string): void;\n}) {\n const value = _value ?? \"\";\n const language = _language ?? \"plaintext\";\n const theme = _theme ?? \"auto\";\n const minLines = _minLines ?? 3;\n const maxLines = _maxLines ?? Infinity;\n const height = _height ?? 500;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const decorationsCollection =\n useRef<monaco.editor.IEditorDecorationsCollection>();\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n const size = useRef<monaco.editor.IDimension>({\n width: 300,\n height: getContentHeightByCode(value, minLines, maxLines),\n });\n const [actualHeight, setActualHeight] = useState<string | number>();\n // `automaticLayout` should never change\n const automaticLayoutRef = useRef(automaticLayout);\n const systemTheme = useCurrentTheme();\n\n useEffect(() => {\n // Currently theme is configured globally.\n // See https://github.com/microsoft/monaco-editor/issues/338\n monaco.editor.setTheme(\n theme === \"auto\"\n ? systemTheme === \"dark\" || systemTheme === \"dark-v2\"\n ? \"vs-dark\"\n : \"vs\"\n : theme\n );\n }, [systemTheme, theme]);\n\n useEffect(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n monaco.editor.setModelLanguage(currentModel, language);\n if (!isEqual(currentModel.getValue(), value)) {\n currentModel.setValue(value);\n }\n }\n }, [value, language]);\n\n useEffect(() => {\n if (language === \"brick_next_yaml\") {\n const provideCompletionItems = brickNextYAMLProvideCompletionItems(\n completers,\n advancedCompleters\n );\n const monacoProviderRef = monaco.languages.registerCompletionItemProvider(\n \"brick_next_yaml\",\n {\n provideCompletionItems,\n triggerCharacters: [\".\", \":\", \"<\"],\n }\n );\n return () => {\n monacoProviderRef.dispose();\n };\n }\n }, [completers, advancedCompleters, language]);\n\n const parseYaml = useCallback(() => {\n const map = new BrickNextYamlSourceMap();\n let parseValue = undefined;\n if (editorRef.current) {\n const model = editorRef.current.getModel()!;\n\n try {\n parseValue = yaml.load(value, {\n listener: map.listen(),\n });\n\n if ((links || markers) && editorRef.current) {\n const tokens: Omit<\n Token & { token: string; property: string },\n \"source\"\n >[] = [];\n map.getTokens().forEach((item) => {\n const { startLineNumber, endLineNumber, startColumn } = item;\n const globalNodes: MemberExpression[] = [];\n const result = preevaluate(item.source, {\n hooks: {\n beforeVisit(node) {\n if (\n node.type === \"MemberExpression\" &&\n node.object.type === \"Identifier\" &&\n EVALUATE_KEYWORD.includes(node.object.name) &&\n node.property.type === \"Identifier\"\n ) {\n globalNodes.push(node);\n }\n },\n },\n });\n\n globalNodes.forEach((node) => {\n const { start, end, loc } = node;\n if (item.startLineNumber !== item.endLineNumber) {\n const hadWrap = /<%[ ]+/.test(result.prefix);\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber:\n item.startLineNumber +\n (loc?.start?.line as number) -\n Number(hadWrap),\n endLineNumber:\n item.startLineNumber +\n (loc?.end?.line as number) -\n Number(hadWrap),\n startColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.start?.column as number) +\n 1,\n endColumn:\n (hadWrap && loc?.start.line === 1\n ? result.prefix.length\n : 0) +\n (loc?.end?.column as number) +\n 1,\n });\n } else {\n tokens.push({\n token: (node.object as Identifier)?.name,\n property: (node.property as Identifier).name,\n startLineNumber,\n endLineNumber,\n startColumn:\n startColumn +\n (start as number) +\n result.prefix?.length +\n Number(!item.isString),\n endColumn:\n startColumn +\n (end as number) +\n result.prefix?.length +\n Number(!item.isString),\n });\n }\n });\n });\n\n decorationsCollection.current?.set(\n tokens\n .filter((token) => links?.includes(token.token))\n .map((token) => ({\n range: new monaco.Range(\n token.startLineNumber,\n token.startColumn,\n token.endLineNumber,\n token.endColumn\n ),\n options: {\n inlineClassName: \"highlight\",\n },\n }))\n );\n\n if (markers) {\n const modelMarkers = tokens\n .map((token) => {\n const matchTokenConf = markers.find(\n (item) => item.token === token.token\n );\n const hadProperty = matchTokenConf?.params\n ? matchTokenConf.params?.includes(token.property)\n : true;\n if (!hadProperty) {\n return {\n severity: Level.warn,\n message: \"Miss Property\",\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n if (matchTokenConf && matchTokenConf.message) {\n return {\n severity: Level[matchTokenConf?.level ?? \"warn\"],\n message: matchTokenConf.message,\n ...(matchTokenConf.code\n ? {\n code: {\n value: matchTokenConf.code.value,\n target: monaco.Uri.parse(\n matchTokenConf.code.target\n ),\n },\n }\n : {}),\n startLineNumber: token.startLineNumber,\n endLineNumber: token.endLineNumber,\n startColumn: token.startColumn,\n endColumn: token.endColumn,\n };\n }\n })\n .filter(Boolean) as monaco.editor.IMarkerData[];\n\n monaco.editor.setModelMarkers(\n model,\n \"brick_next_yaml\",\n modelMarkers\n );\n }\n }\n } catch (e) {\n monaco.editor.setModelMarkers(model, \"brick_next_yaml\", []);\n decorationsCollection?.current?.set([]);\n }\n }\n return parseValue;\n }, [value, links, markers]);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-content\" || !containerRef.current) {\n return;\n }\n\n size.current.width = containerRef.current.getBoundingClientRect().width;\n editorRef.current?.layout(size.current);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === containerRef.current) {\n const newWidth = entry.contentBoxSize\n ? entry.contentBoxSize[0].inlineSize\n : entry.contentRect.width;\n if (newWidth !== size.current.width) {\n size.current.width = newWidth;\n editorRef.current?.layout(size.current);\n }\n break;\n }\n }\n });\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (automaticLayoutRef.current !== \"fit-container\") {\n return;\n }\n\n const container = getDOMContainer(containerRef.current);\n if (!container) {\n return;\n }\n // Manually layout the editor once the container resized.\n const observer = new ResizeObserver((): void => {\n setActualHeight(container.offsetHeight);\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (\n automaticLayoutRef.current !== \"fit-container\" &&\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n setActualHeight(height);\n }\n }, [height]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.updateOptions({\n readOnly,\n });\n }, [readOnly]);\n\n useEffect(() => {\n if (editorRef.current || !containerRef.current) {\n return;\n }\n const model = monaco.editor.createModel(value, language);\n editorRef.current = monaco.editor.create(containerRef.current, {\n model,\n minimap: {\n enabled: false,\n },\n scrollBeyondLastLine: false,\n tabSize: 2,\n insertSpaces: true,\n automaticLayout: automaticLayoutRef.current !== \"fit-content\",\n fontSize: EDITOR_FONT_SIZE,\n lineHeight: EDITOR_LINE_HEIGHT,\n scrollbar: {\n horizontalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n verticalScrollbarSize: EDITOR_SCROLLBAR_SIZE,\n horizontalSliderSize: 8,\n verticalSliderSize: 8,\n alwaysConsumeMouseWheel: false,\n },\n padding: {\n top: EDITOR_PADDING_VERTICAL,\n // When use `fit-content`, we always plus the height with the vertical padding.\n // Thus the possible x-scrollbar will not take extra space at the bottom.\n bottom:\n automaticLayoutRef.current == \"fit-content\"\n ? undefined\n : EDITOR_PADDING_VERTICAL,\n },\n overviewRulerBorder: false,\n mouseWheelScrollSensitivity: 0.5,\n suggest: {\n insertMode: \"insert\",\n preview: true,\n },\n readOnly: readOnly,\n quickSuggestions: { strings: true, other: true, comments: true },\n });\n\n decorationsCollection.current =\n editorRef.current.createDecorationsCollection();\n }, [value, language, readOnly]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (language === \"brick_next_yaml\" && editor) {\n const model = editor.getModel()!;\n const editorMouseDownEvent = editor.onMouseDown(function (e) {\n const decorations = decorationsCollection.current;\n (decorations?.getRanges?.() ?? []).forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n onHighlightClick(model.getValueInRange(range));\n }\n });\n });\n\n const mouseOverEvent = editor.onMouseMove(function (e) {\n const decorations = decorationsCollection.current;\n if (!decorations) return;\n decorations.getRanges().forEach((range) => {\n const modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n if (\n range &&\n e.target.position &&\n e.event[modKey] &&\n range.containsPosition(e.target.position)\n ) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: range.equalsRange(item)\n ? \"highlight pointer\"\n : \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n } else if (!e.event[modKey]) {\n const newDecorations = decorations.getRanges().map((item) => ({\n range: item,\n options: {\n inlineClassName: \"highlight\",\n },\n }));\n decorations.set(newDecorations);\n }\n });\n });\n\n parseYaml();\n\n return () => {\n mouseOverEvent?.dispose();\n editorMouseDownEvent?.dispose();\n };\n }\n }, [language, onHighlightClick, systemTheme, theme, parseYaml]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (\n !editor ||\n !containerRef.current ||\n automaticLayoutRef.current !== \"fit-content\"\n ) {\n return;\n }\n\n const listener = editor.onDidContentSizeChange((e) => {\n if (e.contentHeightChanged) {\n const newHeight = fixEditorHeightWithScrollBar(\n e.contentHeight,\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n }\n });\n\n const newHeight = fixEditorHeightWithScrollBar(\n editor.getContentHeight(),\n minLines,\n maxLines\n );\n if (newHeight !== size.current.height) {\n size.current.height = newHeight;\n editor.layout(size.current);\n }\n\n return () => {\n listener.dispose();\n };\n }, [maxLines, minLines]);\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n const currentModel = editorRef.current.getModel()!;\n const listener = currentModel.onDidChangeContent((e) => {\n const parseValue = parseYaml();\n onChange(currentModel.getValue(), parseValue, e.isFlush);\n });\n return () => {\n listener.dispose();\n };\n }, [onChange, parseYaml]);\n\n useEffect(() => {\n return () => {\n editorRef.current?.getModel()?.dispose();\n editorRef.current?.dispose();\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n style={{\n height: actualHeight,\n ...(validateState === \"error\"\n ? {\n outline: \"1px solid var(--antd-error-color)\",\n }\n : {}),\n }}\n />\n );\n}\n\nfunction getContentHeightByCode(\n code: string,\n minLines: number,\n maxLines: number\n): number {\n return getContentHeightByLines(\n Math.min(maxLines, Math.max(minLines, code.split(\"\\n\").length))\n );\n}\n\nfunction fixEditorHeightWithScrollBar(\n contentHeight: number,\n minLines: number,\n maxLines: number\n): number {\n let fixedHeight = contentHeight;\n if ((contentHeight - EDITOR_PADDING_VERTICAL) % EDITOR_LINE_HEIGHT === 0) {\n fixedHeight = contentHeight + EDITOR_SCROLLBAR_SIZE;\n }\n return Math.min(\n getContentHeightByLines(maxLines),\n Math.max(fixedHeight, getContentHeightByLines(minLines))\n );\n}\n\nfunction getContentHeightByLines(lines: number): number {\n return (\n lines * EDITOR_LINE_HEIGHT + EDITOR_SCROLLBAR_SIZE + EDITOR_PADDING_VERTICAL\n );\n}\n\n/** Get the direct DOM container of `vs.code-editor` */\nfunction getDOMContainer(element: HTMLElement | null) {\n let brick = element;\n while (brick) {\n const found = brick.tagName.toLowerCase() === \"vs.code-editor\";\n brick = brick.parentElement;\n if (found) {\n return brick;\n }\n }\n}\n"],"names":["registerJavaScript","monaco","registerTypeScript","registerYaml","registerHtml","_CodeEditor","defineElement","property","event","createDecorators","WrappedFormItem","wrapBrick","_dec","shadowOptions","_dec2","_dec3","_dec4","attribute","_dec5","_dec6","_dec7","type","Boolean","_dec8","_dec9","_dec10","Number","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_codeChange","_R","_userInput","_handleChange","_S","_highlighClickEvent","_handleHighlightClick","_handleValidtor","CodeEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_highlighClickEvent2","set","_set_highlighClickEvent2","_get_userInput2","_set_userInput2","_get_codeChange2","_set_codeChange2","writable","value","_initProto","_init_name","_init_label","_init_value","_init_language","_init_theme","_init_required","_init_readOnly","_init_automaticLayout","_init_minLines","_init_completers","_init_advancedCompleters","_init_markers","_init_links","_init_maxLines","_init_height","_init_message","_init_codeChange","_init_userInput","parseValue","isFlush","_this$getFormElement","this","getFormElement","formStore","onChange","name","_classPrivateFieldGet","emit","_init_highlighClickEvent","word","yaml","_unused","v","_classPrivateFieldSet","label","language","theme","required","readOnly","automaticLayout","minLines","completers","advancedCompleters","markers","links","maxLines","height","message","connectedCallback","style","display","super","render","React","curElement","formElement","validator","CodeEditorComponent","validateState","onHighlightClick","_set_codeChange","_get_codeChange","_set_userInput","_get_userInput","_set_highlighClickEvent","_get_highlighClickEvent","_ref","_value","_language","_theme","_minLines","_maxLines","_height","Infinity","containerRef","useRef","decorationsCollection","editorRef","size","width","getContentHeightByCode","actualHeight","setActualHeight","useState","automaticLayoutRef","systemTheme","useCurrentTheme","useEffect","setTheme","current","currentModel","getModel","setModelLanguage","isEqual","getValue","setValue","provideCompletionItems","brickNextYAMLProvideCompletionItems","monacoProviderRef","registerCompletionItemProvider","triggerCharacters","dispose","parseYaml","useCallback","map","BrickNextYamlSourceMap","undefined","model","listener","listen","_decorationsCollectio","tokens","getTokens","forEach","item","startLineNumber","endLineNumber","startColumn","globalNodes","result","preevaluate","source","hooks","beforeVisit","node","object","EVALUATE_KEYWORD","includes","push","start","end","loc","_node$object","_loc$start","_loc$end","_loc$start2","_loc$end2","hadWrap","test","prefix","token","line","length","column","endColumn","_node$object2","_result$prefix","_result$prefix2","isString","filter","range","options","inlineClassName","modelMarkers","_matchTokenConf$param","_matchTokenConf$level","matchTokenConf","find","params","_objectSpread","severity","Level","level","code","target","parse","warn","setModelMarkers","e","_decorationsCollectio2","useLayoutEffect","_editorRef$current","getBoundingClientRect","layout","observer","ResizeObserver","entries","entry","_editorRef$current2","newWidth","contentBoxSize","inlineSize","contentRect","observe","disconnect","container","element","brick","found","tagName","toLowerCase","parentElement","getDOMContainer","offsetHeight","updateOptions","createModel","create","minimap","enabled","scrollBeyondLastLine","tabSize","insertSpaces","fontSize","EDITOR_FONT_SIZE","lineHeight","EDITOR_LINE_HEIGHT","scrollbar","horizontalScrollbarSize","EDITOR_SCROLLBAR_SIZE","verticalScrollbarSize","horizontalSliderSize","verticalSliderSize","alwaysConsumeMouseWheel","padding","top","EDITOR_PADDING_VERTICAL","bottom","overviewRulerBorder","mouseWheelScrollSensitivity","suggest","insertMode","preview","quickSuggestions","strings","other","comments","createDecorationsCollection","editor","editorMouseDownEvent","onMouseDown","_decorations$getRange","_decorations$getRange2","decorations","getRanges","call","modKey","navigator","platform","position","containsPosition","getValueInRange","mouseOverEvent","onMouseMove","newDecorations","equalsRange","onDidContentSizeChange","contentHeightChanged","newHeight","fixEditorHeightWithScrollBar","contentHeight","getContentHeight","onDidChangeContent","_editorRef$current3","_editorRef$current4","ref","outline","getContentHeightByLines","Math","min","max","split","fixedHeight","lines","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
@@ -108,7 +108,8 @@
108
108
  "slots": [],
109
109
  "methods": [],
110
110
  "parts": [],
111
- "description": "构件 code-editor"
111
+ "description": "构件代码编辑器",
112
+ "category": "form-input-advanced"
112
113
  }
113
114
  ],
114
115
  "providers": []
@@ -36,7 +36,8 @@ export interface Marker {
36
36
  params?: string[];
37
37
  }
38
38
  /**
39
- * 构件 code-editor
39
+ * 构件代码编辑器
40
+ * @category form-input-advanced
40
41
  */
41
42
  export declare class CodeEditor extends FormItemElementBase implements CodeEditorProps {
42
43
  #private;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-bricks/vs",
3
- "version": "0.5.30",
3
+ "version": "0.5.32",
4
4
  "homepage": "https://github.com/easyops-cn/next-bricks/tree/master/bricks/vs",
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,5 +38,5 @@
38
38
  "@next-core/test-next": "^1.0.11",
39
39
  "resize-observer-polyfill": "^1.5.1"
40
40
  },
41
- "gitHead": "e5f7b9c399ddebee6c5ccbdf8e374adb15b53fdd"
41
+ "gitHead": "d97f8124fe0a61184aa75c351b7db43fd0aaf790"
42
42
  }