@next-bricks/vs 1.14.14 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/2675.c83dda19.js +2 -0
- package/dist/chunks/2675.c83dda19.js.map +1 -0
- package/dist/chunks/{6035.8d5ea739.js → 2856.d8103722.js} +2 -2
- package/dist/chunks/2856.d8103722.js.map +1 -0
- package/dist/chunks/6090.fafa68bd.js +3 -0
- package/dist/chunks/6090.fafa68bd.js.LICENSE.txt +5 -0
- package/dist/chunks/6090.fafa68bd.js.map +1 -0
- package/dist/chunks/7242.43943ae7.js +2 -0
- package/dist/chunks/7242.43943ae7.js.map +1 -0
- package/dist/chunks/code-editor.3e401ebe.js +2 -0
- package/dist/chunks/code-editor.3e401ebe.js.map +1 -0
- package/dist/chunks/main.a0b7b063.js +2 -0
- package/dist/chunks/main.a0b7b063.js.map +1 -0
- package/dist/index.9082a563.js +2 -0
- package/dist/index.9082a563.js.map +1 -0
- package/dist/manifest.json +13 -1
- package/dist/types.json +17 -0
- package/dist-types/code-editor/index.d.ts +13 -2
- package/dist-types/code-editor/workers/spellCheck.worker.d.ts +1 -0
- package/dist-types/code-editor/workers/spellCheckRemoteWorker.d.ts +5 -0
- package/dist-types/code-editor/workers/yamlLinter.d.ts +0 -1
- package/package.json +2 -2
- package/dist/chunks/6035.8d5ea739.js.map +0 -1
- package/dist/chunks/7242.978767ea.js +0 -2
- package/dist/chunks/7242.978767ea.js.map +0 -1
- package/dist/chunks/code-editor.2665f247.js +0 -2
- package/dist/chunks/code-editor.2665f247.js.map +0 -1
- package/dist/chunks/main.98ec566d.js +0 -2
- package/dist/chunks/main.98ec566d.js.map +0 -1
- package/dist/index.9f3463d2.js +0 -2
- package/dist/index.9f3463d2.js.map +0 -1
|
@@ -31,6 +31,8 @@ export interface CodeEditorProps {
|
|
|
31
31
|
validateState?: string;
|
|
32
32
|
customValidationInBrickNextYaml?: boolean;
|
|
33
33
|
fixedOverflowWidgets?: boolean;
|
|
34
|
+
spellCheck?: boolean;
|
|
35
|
+
knownWords?: string[];
|
|
34
36
|
}
|
|
35
37
|
export interface Marker {
|
|
36
38
|
token: string;
|
|
@@ -120,17 +122,26 @@ export declare class CodeEditor extends FormItemElementBase implements CodeEdito
|
|
|
120
122
|
*/
|
|
121
123
|
accessor glyphMargin: boolean | undefined;
|
|
122
124
|
/**
|
|
123
|
-
*
|
|
125
|
+
* 额外声明的 lib 库
|
|
124
126
|
*/
|
|
125
127
|
accessor extraLibs: ExtraLib[] | undefined;
|
|
126
128
|
/**
|
|
127
129
|
* @default true
|
|
128
130
|
*/
|
|
129
131
|
accessor fixedOverflowWidgets: boolean | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* 是否启用英语拼写检查
|
|
134
|
+
* @default true
|
|
135
|
+
*/
|
|
136
|
+
accessor spellCheck: boolean | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* 启用英语拼写检查时,除系统设置的词汇表外,指定其他的已知单词(小写)。
|
|
139
|
+
*/
|
|
140
|
+
accessor knownWords: string[] | undefined;
|
|
130
141
|
connectedCallback(): void;
|
|
131
142
|
render(): React.JSX.Element;
|
|
132
143
|
}
|
|
133
|
-
export declare function CodeEditorComponent({ value: _value, language: _language, theme: _theme, minLines: _minLines, maxLines: _maxLines, height: _height, automaticLayout, completers, advancedCompleters, markers, readOnly, links, extraLibs, tokenConfig, showExpandButton, showCopyButton, lineNumbers, glyphMargin, placeholder, validateState, onChange, onTokenClick, customValidationInBrickNextYaml, fixedOverflowWidgets: _fixedOverflowWidgets, }: CodeEditorProps & {
|
|
144
|
+
export declare function CodeEditorComponent({ value: _value, language: _language, theme: _theme, minLines: _minLines, maxLines: _maxLines, height: _height, automaticLayout, completers, advancedCompleters, markers, readOnly, links, extraLibs, tokenConfig, showExpandButton, showCopyButton, lineNumbers, glyphMargin, placeholder, validateState, onChange, onTokenClick, customValidationInBrickNextYaml, fixedOverflowWidgets: _fixedOverflowWidgets, spellCheck: _spellCheck, knownWords, }: CodeEditorProps & {
|
|
134
145
|
onChange(value: string): void;
|
|
135
146
|
onUserInput: (value: any) => void;
|
|
136
147
|
onTokenClick(word: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SpellCheckRequest, SpellCheckResponse } from "@next-shared/spell-check";
|
|
2
|
+
export interface RemoteSpellCheckWorker {
|
|
3
|
+
spellCheck(req: SpellCheckRequest): Promise<SpellCheckResponse>;
|
|
4
|
+
}
|
|
5
|
+
export declare function getRemoteSpellCheckWorker(): Promise<RemoteSpellCheckWorker>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-bricks/vs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.1",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/bricks/vs",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@next-bricks/form": "*",
|
|
67
67
|
"@next-bricks/icons": "*"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "8240275d71c1f1c5fc9bf8056f60d5b3bcc8168b"
|
|
70
70
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/6035.8d5ea739.js","mappings":"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CACR,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAGRC,iBAAkB,CAChB,CAAEC,KAAM,IAAKC,MAAO,KACpB,CAAED,KAAM,IAAKC,MAAO,KACpB,CAAED,KAAM,IAAKC,MAAO,KACpB,CAAED,KAAM,IAAKC,MAAO,IAAKC,MAAO,CAAC,WACjC,CAAEF,KAAM,IAAKC,MAAO,IAAKC,MAAO,CAAC,SAAU,aAG7CC,aAAc,CACZ,CAEEC,WAAY,MACZC,UAAW,MACXC,OAAQ,CACNC,a,QAAcC,UAAiBC,aAAaC,cAC5CC,WAAY,SAMPC,EAAY,CAEvB,QACA,SACA,WACA,MACA,MACA,OACA,UACA,OACA,SACA,YACA,OACA,OACA,QAEA,SAEA,MAEA,SACA,UACA,cAEA,YACA,gBACA,eACA,aACA,UACA,OACA,SACA,gBACA,MAEA,UACA,OACA,WACA,SACA,KAGWC,EAAkB,CAE7B,WACA,WACA,UACA,aAEA,UACA,gBACA,eACA,eACA,cACA,WACA,kBACA,aACA,WACA,aAEA,SACA,UACA,cACA,aACA,UACA,QACA,OACA,YACA,OACA,aAEA,MACA,SACA,aACA,MACA,SAEA,YACA,WACA,YACA,YACA,WACA,UAEA,cACA,cACA,QACA,SACA,QACA,YACA,aACA,OACA,SACA,UACA,YACA,SAEA,QACA,UAGWC,EAA8C,CAEzDC,aAAc,UAEdC,aAAc,OAEdC,SAAU,CAER,KACA,KACA,QACA,QACA,WACA,OACA,MACA,WACA,KACA,SACA,MACA,OACA,UACA,YACA,SACA,MACA,OACA,QAEA,OAEA,OACA,SAGFL,YAEAM,gBAAiBL,EAEjBM,UAAW,CAET,KACA,KAEA,KACA,IACA,KACA,IACA,KACA,KAGA,IACA,IACA,IACA,IACA,IACA,KAIFC,QAAS,sBAETC,QACE,kFAGFC,UAAW,CACTC,KAAM,CAEJ,CACE,mBACA,CACEC,MAAO,CACL,YAAa,UACb,aAAc,UACd,WAAY,gBAMlB,CACE,yBACA,CACE,WACA,CACEA,MAAO,CACL,mBAAoB,UACpB,WAAY,iBAOpB,CAAEC,QAAS,eAGX,C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","sources":["webpack:///../../src/FormItemElement.tsx","webpack:///./src/code-editor/utils/constants.ts","webpack:///./src/code-editor/languages/cel.ts","webpack:///./src/code-editor/widget/Placeholder.tsx","webpack:///./src/code-editor/utils/embeddedModelState.ts","webpack:///./src/code-editor/languages/cel-yaml.ts","webpack:///./src/code-editor/index.css","webpack:///./src/code-editor/index.css?aefa","webpack:///./src/generated-actions.js","webpack:///./src/code-editor/utils/brickNextYaml.ts","webpack:///./src/code-editor/utils/jsSuggestInBrickYaml.ts","webpack:///./src/code-editor/utils/editorId.ts","webpack:///./src/code-editor/workers/yamlLinter.ts","webpack:///./src/code-editor/utils/isInEmbedded.ts","webpack:///./src/code-editor/utils/celCompletionProvider.ts","webpack:///./src/code-editor/constants.ts","webpack:///../../node_modules/monaco-editor/esm/vs/editor/common/services/findSectionHeaders.js","webpack:///./src/code-editor/i18n.ts","webpack:///./src/code-editor/languages/cel-str.ts","webpack:///./src/code-editor/utils/addExtraLibs.ts"],"sourcesContent":["import { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport type { AbstractForm, ColProps } from \"./Form.js\";\nimport { UseSingleBrickConf } from \"@next-core/types\";\n\nconst { method, property } = createDecorators();\n\nexport abstract class FormItemElementBase extends ReactNextElement {\n accessor #_notRender = false;\n accessor #validate = \"normal\";\n accessor #bindFormItem = false;\n\n get isFormItemElement(): true {\n return true;\n }\n\n set validateState(value: string) {\n this.#validate = value;\n this._render();\n }\n get validateState() {\n return this.#validate;\n }\n\n /**\n * 控制该表单项是否隐藏\n * @default false\n * @group ui\n */\n set notRender(value: boolean) {\n this.hidden = value;\n this.#_notRender = value;\n this._render();\n }\n get notRender(): boolean {\n return this.#_notRender;\n }\n\n get $bindFormItem() {\n return this.#bindFormItem;\n }\n set $bindFormItem(value: boolean) {\n this.#bindFormItem = value;\n this._render();\n }\n\n @property({\n attribute: false,\n })\n accessor helpBrick:\n | { useBrick: UseSingleBrickConf | UseSingleBrickConf[] }\n | undefined;\n\n @property({\n attribute: false,\n })\n accessor labelBrick:\n | { useBrick: UseSingleBrickConf | UseSingleBrickConf[] }\n | undefined;\n\n @property({\n attribute: false,\n })\n accessor labelCol: ColProps | undefined;\n\n @property({\n attribute: false,\n })\n accessor wrapperCol: ColProps | undefined;\n\n @method()\n setNotRender(value: boolean) {\n this.notRender = value;\n }\n\n @method()\n getFormElement(): AbstractForm | null {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let element: AbstractForm | null = this as unknown as AbstractForm;\n while ((element = element.parentNode as AbstractForm | null)) {\n if (!element || element.isFormElement) {\n break;\n }\n }\n return element as AbstractForm | null;\n }\n}\n","export const EVALUATE_KEYWORD = [\n \"CTX\",\n \"STATE\",\n \"DATA\",\n \"EVENT\",\n \"FLAGS\",\n \"APP\",\n \"ANCHOR\",\n \"HASH\",\n \"INSTALLED_APPS\",\n \"ITEM\",\n \"INDEX\",\n \"SIZE\",\n \"LOCAL_STORAGE\",\n \"MEDIA\",\n \"MISC\",\n \"PARAMS\",\n \"PATH\",\n \"PROCESSORS\",\n \"QUERY\",\n \"QUERY_ARRAY\",\n \"SESSION_STORAGE\",\n \"TPL\",\n \"SYS\",\n \"BASE_URL\",\n \"IMG\",\n \"FN\",\n \"I18N\",\n \"I18N_TEXT\",\n \"PERMISSIONS\",\n \"THEME\",\n];\n\nexport const brickNextKeywords = [\n \"target\",\n \"targetRef\",\n \"properties\",\n \"events\",\n \"method\",\n \"callback\",\n \"success\",\n \"error\",\n \"action\",\n \"useProvider\",\n \"useChildren\",\n \"useBrick\",\n \"args\",\n \"if\",\n \"then\",\n];\n\nexport const Level = {\n /**\n * @deprecated Typo, use `hint` instead\n */\n hit: 1,\n hint: 1,\n info: 2,\n warn: 4,\n error: 8,\n};\n\nexport const builtInKeywordDeclare = `\n declare const DATA: any;\n declare const EVENT: CustomEvent<any>;\n declare const FLAGS: Record<string, boolean>;\n declare const ANCHOR: string | null;\n declare const HASH: string;\n declare namespace INSTALLED_APPS {\n function has(appId: string):boolean\n }\n declare const ITEM: any;\n declare const INDEX: number;\n declare const SIZE: number;\n declare namespace LOCAL_STORAGE {\n function getItem(name: string): string;\n }\n declare namespace SESSION_STORAGE {\n function getItem(name: string): string\n }\n declare const MEDIA: {\n breakpoint?: \"xLarge\" | \"large\" | \"medium\" | \"small\" | \"xSmall\";\n };\n declare const MISC: Record<string, any>;\n declare const PARAMS: URLSearchParams;\n declare const PROCESSORS: Record<string, Record<string, Function>>;\n declare const QUERY_ARRAY: Record<string, string[]>;\n declare const TPL: Record<string, any>;\n declare const PIPES: Record<string, Function>;\n declare const _: Record<string, any>;\n declare namespace SYS {\n const username:string;\n const userInstanceId:string;\n const org:number;\n const isAdmin: boolean;\n const accessRule:string;\n const csrfToken:string;\n const accessToken:string;\n const userShowValue:string[];\n }\n declare const BASE_URL: string;\n declare namespace IMG {\n function get(src: string): string;\n }\n declare function I18N(key: string, options?: string | Record<string, unknown>): string;\n declare function I18N_TEXT(data: {[language: string]: string}):string;\n declare namespace PERMISSIONS {\n function check(...action: string[]):boolean;\n }\n declare namespace THEME {\n function getTheme(): \"light\" | \"dark\" | \"dark-v2\";\n }\n`;\n","// https://github.com/google/cel-spec/blob/master/doc/langdef.md#syntax\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\n\nexport const conf: monaco.languages.LanguageConfiguration = {\n comments: {\n lineComment: \"//\",\n blockComment: null,\n },\n\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"],\n [\"(\", \")\"],\n ],\n\n autoClosingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n { open: '\"', close: '\"', notIn: [\"string\"] },\n { open: \"'\", close: \"'\", notIn: [\"string\", \"comment\"] },\n ],\n\n onEnterRules: [\n {\n // e.g. <% | %>\n beforeText: /^ $/,\n afterText: /^ $/,\n action: {\n indentAction: monaco.languages.IndentAction.IndentOutdent,\n appendText: \" \",\n },\n },\n ],\n};\n\nexport const constants = [\n // Built-in functions\n \"bytes\",\n \"double\",\n \"duration\",\n \"dyn\",\n \"int\",\n \"bool\",\n \"matches\",\n \"size\",\n \"string\",\n \"timestamp\",\n \"type\",\n \"uint\",\n \"round\",\n // Built-in extensions\n \"base64\",\n // Built-in macros\n \"has\",\n // EasyOps primitive_type_ext\n \"printf\",\n \"isEmpty\",\n \"repeatArray\",\n // EasyOps dyn_type_ext\n \"mergeList\",\n \"fieldNotEmpty\",\n \"hasOrDefault\",\n \"trinocular\",\n \"traceId\",\n \"SHA1\",\n \"random\",\n \"random_string\",\n \"now\",\n // Flow builder variables\n \"request\",\n \"step\",\n \"variable\",\n \"config\",\n \"$\",\n] as readonly string[];\n\nexport const instanceMembers = [\n // Built-in methods\n \"contains\",\n \"endsWith\",\n \"matches\",\n \"startsWith\",\n // Built-in datetime methods\n \"getDate\",\n \"getDayOfMonth\",\n \"getDayOfWeek\",\n \"getDayOfYear\",\n \"getFullYear\",\n \"getHours\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getMonth\",\n \"getSeconds\",\n // Built-in extensions\n \"charAt\",\n \"indexOf\",\n \"lastIndexOf\",\n \"lowerAscii\",\n \"replace\",\n \"split\",\n \"join\",\n \"substring\",\n \"trim\",\n \"upperAscii\",\n // Built-in macros\n \"all\",\n \"exists\",\n \"exists_one\",\n \"map\",\n \"filter\",\n // EasyOps primitive_type_ext\n \"decodeb64\",\n \"truncate\",\n \"parseJSON\",\n \"parseYAML\",\n \"parseURL\",\n \"isBlank\",\n // EasyOps dyn_type_ext\n \"marshalJSON\",\n \"marshalYAML\",\n \"merge\",\n \"repeat\",\n \"match\",\n \"canonical\",\n \"convertMap\",\n \"fuse\",\n \"remove\",\n \"setAttr\",\n \"parseDate\",\n \"format\",\n // Flow builder step variables,\n \"input\",\n \"output\",\n] as readonly string[];\n\nexport const language: monaco.languages.IMonarchLanguage = {\n // Set defaultToken to invalid to see what you do not tokenize yet\n defaultToken: \"invalid\",\n\n tokenPostfix: \".cel\",\n\n keywords: [\n // Reserved keywords are not used in CEL actually.\n \"in\",\n \"as\",\n \"break\",\n \"const\",\n \"continue\",\n \"else\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"let\",\n \"loop\",\n \"package\",\n \"namespace\",\n \"return\",\n \"var\",\n \"void\",\n \"while\",\n // constants\n \"null\",\n // boolean\n \"true\",\n \"false\",\n ],\n\n constants,\n\n instanceMethods: instanceMembers,\n\n operators: [\n // Logical operators\n \"&&\",\n \"||\",\n // Comparison operators\n \"<=\",\n \"<\",\n \">=\",\n \">\",\n \"==\",\n \"!=\",\n // \"in\",\n // Arithmetic operators\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"!\",\n ],\n\n // we include these common regular expressions\n symbols: /[=><!~?:&|+\\-*/^%]+/,\n\n escapes:\n /\\\\(?:[bfnrt\\\\\"']|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|[0-3][0-7]{2})/,\n\n // The main tokenizer for our languages\n tokenizer: {\n root: [\n // identifiers and keywords\n [\n /[a-zA-Z_$][\\w$]*/,\n {\n cases: {\n \"@keywords\": \"keyword\",\n \"@constants\": \"keyword\",\n \"@default\": \"identifier\",\n },\n },\n ],\n\n // Method calling\n [\n /(\\.)([a-zA-Z_$][\\w$]*)/,\n [\n \"operator\",\n {\n cases: {\n \"@instanceMethods\": \"keyword\",\n \"@default\": \"identifier\",\n },\n },\n ],\n ],\n\n // whitespace\n { include: \"@whitespace\" },\n\n // delimiters and operators\n [/[{}()[\\]]/, \"@brackets\"],\n // [/[<>](?!@symbols)/, \"@brackets\"],\n [/@symbols/, { cases: { \"@operators\": \"operator\", \"@default\": \"\" } }],\n\n // numbers\n [/\\d*\\.\\d+([eE][-+]?\\d+)?/, \"number.float\"],\n [/0x[0-9a-fA-F]+[uU]?/, \"number.hex\"],\n [/\\d+[uU]?/, \"number\"],\n\n // delimiter: after number because of .\\d floats\n [/[;,.]/, \"delimiter\"],\n\n // strings\n [/\"([^\"\\\\]|\\\\.)*$/, \"string.invalid\"], // non-terminated string\n [/\"/, { token: \"string.quote\", bracket: \"@open\", next: \"@string\" }],\n\n // characters\n [/'[^\\\\']'/, \"string\"],\n [/(')(@escapes)(')/, [\"string\", \"string.escape\", \"string\"]],\n [/'/, \"string.invalid\"],\n ],\n\n string: [\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, { token: \"string.quote\", bracket: \"@close\", next: \"@pop\" }],\n ],\n\n whitespace: [\n [/[ \\t\\r\\n]+/, \"white\"],\n [/\\/\\/.*$/, \"comment\"],\n ],\n },\n};\n\n/**\n * Register the CEL language.\n *\n * See https://github.com/google/cel-spec/blob/master/doc/langdef.md#syntax\n */\nexport function register(Monaco: typeof monaco, languageId = \"cel\") {\n Monaco.languages.register({\n id: languageId,\n extensions: [\".cel\"],\n mimetypes: [\"text/cel\"],\n });\n Monaco.languages.setLanguageConfiguration(languageId, conf);\n Monaco.languages.setMonarchTokensProvider(languageId, language);\n}\n","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\n\nexport class PlaceholderContentWidget implements monaco.editor.IContentWidget {\n private static readonly ID = \"editor.widget.placeholderHint\";\n\n private domNode: HTMLElement | undefined;\n\n private readonly placeholder: string;\n private readonly editor: monaco.editor.ICodeEditor;\n private readonly color: string;\n\n constructor(\n placeholder: string,\n editor: monaco.editor.ICodeEditor,\n color: string\n ) {\n this.placeholder = placeholder;\n this.editor = editor;\n this.color = color;\n // register a listener for editor code changes\n this.editor.onDidChangeModelContent(() => this.onDidChangeModelContent());\n // ensure that on initial load the placeholder is shown\n this.onDidChangeModelContent();\n }\n\n private onDidChangeModelContent(): void {\n if (this.editor?.getValue?.() === \"\") {\n this.editor.addContentWidget(this);\n } else {\n this.editor?.removeContentWidget?.(this);\n }\n }\n\n getId(): string {\n return PlaceholderContentWidget.ID;\n }\n\n getDomNode(): HTMLElement {\n if (!this.domNode) {\n this.domNode = document.createElement(\"div\");\n this.domNode.style.width = \"max-content\";\n this.domNode.style.pointerEvents = \"none\";\n this.domNode.textContent = this.placeholder;\n this.domNode.style.whiteSpace = \"break-spaces\";\n this.domNode.style.fontStyle = \"italic\";\n this.domNode.style.color = this.color;\n this.editor.applyFontInfo(this.domNode);\n }\n\n return this.domNode;\n }\n\n getPosition(): monaco.editor.IContentWidgetPosition | null {\n return {\n position: { lineNumber: 1, column: 1 },\n preference: [monaco.editor.ContentWidgetPositionPreference.EXACT],\n };\n }\n\n dispose(): void {\n this.editor?.removeContentWidget?.(this);\n }\n}\n","interface Range {\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n}\n\nexport interface EmbeddedState {\n content?: string;\n offset?: number;\n range?: Range;\n}\n\nexport class EmbeddedModelContext {\n static #instance: Record<string, EmbeddedModelContext> = {};\n #id: string;\n #state: EmbeddedState = {};\n\n static getInstance(id: string) {\n if (!this.#instance[id]) {\n this.#instance[id] = new EmbeddedModelContext(id);\n }\n return this.#instance[id];\n }\n\n constructor(id: string) {\n this.#id = id;\n }\n\n updateState(state: EmbeddedState) {\n this.#state = state;\n }\n\n getState(): EmbeddedState {\n return this.#state;\n }\n}\n","/* eslint-disable no-useless-escape */\n// https://github.com/microsoft/monaco-editor/blob/8270c45a385a180a53fd8ef8e3a189b1471100ed/src/basic-languages/yaml/yaml.ts\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\n\nexport const conf: monaco.languages.LanguageConfiguration = {\n comments: {\n lineComment: \"#\",\n },\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"],\n [\"(\", \")\"],\n ],\n autoClosingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n folding: {\n offSide: true,\n },\n onEnterRules: [\n {\n beforeText: /:\\s*$/,\n action: {\n indentAction: monaco.languages.IndentAction.Indent,\n },\n },\n ],\n};\n\nexport const language: monaco.languages.IMonarchLanguage = {\n tokenPostfix: \".yaml.cel\",\n\n brackets: [\n { token: \"delimiter.bracket\", open: \"{\", close: \"}\" },\n { token: \"delimiter.square\", open: \"[\", close: \"]\" },\n ],\n\n keywords: [\n \"true\",\n \"True\",\n \"TRUE\",\n \"false\",\n \"False\",\n \"FALSE\",\n \"null\",\n \"Null\",\n \"NULL\",\n \"~\",\n ],\n\n numberInteger: /(?:0|[+-]?[0-9]+)/,\n numberFloat: /(?:0|[+-]?[0-9]+)(?:\\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,\n numberOctal: /0o[0-7]+/,\n numberHex: /0x[0-9a-fA-F]+/,\n numberInfinity: /[+-]?\\.(?:inf|Inf|INF)/,\n numberNaN: /\\.(?:nan|Nan|NAN)/,\n numberDate:\n /\\d{4}-\\d\\d-\\d\\d([Tt ]\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(( ?[+-]\\d\\d?(:\\d\\d)?)|Z)?)?/,\n\n escapes: /\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,\n\n tokenizer: {\n root: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n\n // Directive\n [/%[^ ]+.*$/, \"meta.directive\"],\n\n // Document Markers\n [/---/, \"operators.directivesEnd\"],\n [/\\.{3}/, \"operators.documentEnd\"],\n\n // Block Structure Indicators\n [/[-?:](?= )/, \"operators\"],\n\n { include: \"@anchor\" },\n { include: \"@tagHandle\" },\n { include: \"@flowCollections\" },\n { include: \"@blockStyle\" },\n\n // Numbers\n [/@numberInteger(?![ \\t]*\\S+)/, \"number\"],\n [/@numberFloat(?![ \\t]*\\S+)/, \"number.float\"],\n [/@numberOctal(?![ \\t]*\\S+)/, \"number.octal\"],\n [/@numberHex(?![ \\t]*\\S+)/, \"number.hex\"],\n [/@numberInfinity(?![ \\t]*\\S+)/, \"number.infinity\"],\n [/@numberNaN(?![ \\t]*\\S+)/, \"number.nan\"],\n [/@numberDate(?![ \\t]*\\S+)/, \"number.date\"],\n\n // Key:Value pair\n [\n /(\".*?\"|'.*?'|[^#'\"]*?)([ \\t]*)(:)( |$)/,\n [\"tag\", \"white\", \"operators\", \"white\"],\n ],\n\n { include: \"@flowScalars\" },\n { include: \"@flowExpression\" },\n\n // String nodes\n [\n /.+?(?=(\\s+#|$))/,\n {\n cases: {\n \"@keywords\": \"keyword\",\n \"@default\": \"string\",\n },\n },\n ],\n ],\n\n // Flow Collection: Flow Mapping\n object: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n\n // Flow Mapping termination\n [/\\}/, \"@brackets\", \"@pop\"],\n\n // Flow Mapping delimiter\n [/,/, \"delimiter.comma\"],\n\n // Flow Mapping Key:Value delimiter\n [/:(?= )/, \"operators\"],\n\n // Flow Mapping Key:Value key\n [/(?:\".*?\"|'.*?'|[^,\\{\\[]+?)(?=: )/, \"tag\"],\n\n // Start Flow Style\n { include: \"@flowCollections\" },\n { include: \"@flowScalars\" },\n\n // Scalar Data types\n { include: \"@tagHandle\" },\n { include: \"@anchor\" },\n { include: \"@flowNumber\" },\n\n // Other value (keyword or string)\n [\n /[^\\},]+/,\n {\n cases: {\n \"@keywords\": \"keyword\",\n \"@default\": \"string\",\n },\n },\n ],\n ],\n\n // Flow Collection: Flow Sequence\n array: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n\n // Flow Sequence termination\n [/\\]/, \"@brackets\", \"@pop\"],\n\n // Flow Sequence delimiter\n [/,/, \"delimiter.comma\"],\n\n // Start Flow Style\n { include: \"@flowCollections\" },\n { include: \"@flowScalars\" },\n\n // Scalar Data types\n { include: \"@tagHandle\" },\n { include: \"@anchor\" },\n { include: \"@flowNumber\" },\n\n // Other value (keyword or string)\n [\n /[^\\],]+/,\n {\n cases: {\n \"@keywords\": \"keyword\",\n \"@default\": \"string\",\n },\n },\n ],\n ],\n\n // First line of a Block Style\n multiString: [\n [\n /^( +)(<%(?:\\s|$))/,\n [\"string\", { token: \"@rematch\", next: \"@multiExpression.$1\" }],\n ],\n [/^( +).+$/, \"string\", \"@multiStringContinued.$1\"],\n ],\n\n // Further lines of a Block Style\n // Workaround for indentation detection\n multiStringContinued: [\n [\n /^( *)(.+)$/,\n {\n cases: {\n \"$1==$S2\": \"string\",\n \"@default\": { token: \"@rematch\", next: \"@popall\" },\n },\n },\n ],\n ],\n\n whitespace: [[/[ \\t\\r\\n]+/, \"white\"]],\n\n // Only line comments\n comment: [[/#.*$/, \"comment\"]],\n\n // Start Flow Collections\n flowCollections: [\n [/\\[/, \"@brackets\", \"@array\"],\n [/\\{/, \"@brackets\", \"@object\"],\n ],\n\n // Start Flow Scalars (quoted strings)\n flowScalars: [\n [/\"([^\"\\\\]|\\\\.)*$/, \"string.invalid\"],\n [/'([^'\\\\]|\\\\.)*$/, \"string.invalid\"],\n [/'/, \"string\", \"@singleQuotedString\"],\n [/\"/, \"string\", \"@doubleQuotedString\"],\n ],\n\n singleQuotedString: [\n { include: \"@expressionStart\" },\n [\n /(%>)(\\s*)(')/,\n [\n { token: \"delimiter\", bracket: \"@close\" },\n \"white\",\n { token: \"string\", next: \"@pop\" },\n ],\n ],\n [/[^']*'/, \"string\", \"@pop\"],\n ],\n\n doubleQuotedString: [\n { include: \"@expressionStart\" },\n [\n /(%>)(\\s*)(\")/,\n [\n { token: \"delimiter\", bracket: \"@close\" },\n \"white\",\n { token: \"string\", next: \"@pop\" },\n ],\n ],\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, \"string\", \"@pop\"],\n ],\n\n // Start Block Scalar\n blockStyle: [[/[>|][0-9]*[+-]?$/, \"operators\", \"@multiString\"]],\n\n // Numbers in Flow Collections (terminate with ,]})\n flowNumber: [\n [/@numberInteger(?=[ \\t]*[,\\]\\}])/, \"number\"],\n [/@numberFloat(?=[ \\t]*[,\\]\\}])/, \"number.float\"],\n [/@numberOctal(?=[ \\t]*[,\\]\\}])/, \"number.octal\"],\n [/@numberHex(?=[ \\t]*[,\\]\\}])/, \"number.hex\"],\n [/@numberInfinity(?=[ \\t]*[,\\]\\}])/, \"number.infinity\"],\n [/@numberNaN(?=[ \\t]*[,\\]\\}])/, \"number.nan\"],\n [/@numberDate(?=[ \\t]*[,\\]\\}])/, \"number.date\"],\n ],\n\n tagHandle: [[/\\![^ ]*/, \"tag\"]],\n\n anchor: [[/[&*][^ ]+/, \"namespace\"]],\n\n flowExpression: [\n { include: \"@expressionStart\" },\n [\n /(\\s+)(%>)(\\s*)/,\n [\n \"white\",\n { token: \"delimiter\", bracket: \"@close\" },\n { token: \"white\", next: \"@pop\" },\n ],\n ],\n ],\n\n expressionStart: [\n [\n /(\\s*)(<%)(\\s+)/,\n [\n \"white\",\n { token: \"delimiter\", bracket: \"@open\" },\n {\n token: \"white\",\n next: \"@expressionEmbedded\",\n nextEmbedded: \"text/cel\",\n },\n ],\n ],\n ],\n\n multiExpression: [\n [\n /(<%)/,\n {\n token: \"delimiter\",\n next: \"@expressionEmbedded\",\n nextEmbedded: \"text/cel\",\n bracket: \"@open\",\n },\n ],\n [\n /(%>)(\\s*)/,\n [\n { token: \"delimiter\", bracket: \"@close\" },\n { token: \"white\", next: \"@pop\" },\n ],\n ],\n [\n /^( *).+$/,\n {\n cases: {\n \"$1==$S2\": \"string\",\n \"@default\": { token: \"@rematch\", next: \"@popall\" },\n },\n },\n ],\n ],\n\n expressionEmbedded: [\n [/%>/, { token: \"@rematch\", next: \"@pop\", nextEmbedded: \"@pop\" }],\n ],\n },\n};\n\n/**\n * Register the extended yaml language, with CEL syntax highlighting supported.\n */\nexport function register(Monaco: typeof monaco, languageId = \"cel_yaml\") {\n Monaco.languages.register({\n id: languageId,\n extensions: [\".cel-yaml\"],\n mimetypes: [\"text/cel-yaml\"],\n });\n Monaco.languages.setLanguageConfiguration(languageId, conf);\n Monaco.languages.setMonarchTokensProvider(languageId, language);\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.highlight{box-shadow:rgb(74 170 189) 0px 1px 0px 0px}.pointer{cursor:pointer}.monaco-editor{outline-width:0}.monaco-editor .overflow-guard{border-radius:var(--antd-button-border-radius);border:1px solid var(--color-border-divider-line)}.code-editor-wrapper.error .overflow-guard{border-color:var(--antd-error-color)}.code-editor-wrapper{position:relative}.code-editor-wrapper.expanded{position:fixed;z-index:1000;top:0;left:0;right:0;bottom:0;padding:20px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.toolbar-wrapper{position:absolute;z-index:4;top:0;bottom:0;right:0;pointer-events:none;padding:15px 20px}.toolbar{pointer-events:auto;display:none;line-height:12px;font-size:12px;text-align:center;gap:10px;box-shadow:none;transition:none;border-radius:50%;border:none}.code-editor-wrapper:not(.expanded) .toolbar.sticky{position:sticky;top:15px}.code-editor-wrapper.expanded .toolbar-wrapper{right:40px;top:40px}.code-editor-wrapper:hover .toolbar{display:flex}.copy-icon,\n.expand-icon{opacity:0.5;cursor:pointer;font-size:16px}.copy-icon:hover,\n.expand-icon:hover{opacity:1}.monaco-editor.monaco-editor-v3 .find-widget > .find-part,\n.monaco-editor.monaco-editor-v3 .find-widget > .replace-part{margin-right:25px}.monaco-editor.monaco-editor-v3 .find-widget .button{box-sizing:content-box}.monaco-editor.monaco-editor-v3 .sticky-line-number{text-align:initial;float:initial}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./index.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./index.css\";\n export default content && content.locals ? content.locals : undefined;\n","export default [\"analytics.event\",\"console.error\",\"console.info\",\"console.log\",\"console.warn\",\"context.assign\",\"context.load\",\"context.refresh\",\"context.replace\",\"event.preventDefault\",\"event.stopPropagation\",\"formstate.update\",\"handleHttpError\",\"history.block\",\"history.goBack\",\"history.goForward\",\"history.push\",\"history.pushAnchor\",\"history.pushQuery\",\"history.reload\",\"history.replace\",\"history.replaceQuery\",\"history.unblock\",\"localStorage.removeItem\",\"localStorage.setItem\",\"location.assign\",\"location.reload\",\"menu.clearMenuCache\",\"menu.clearMenuTitleCache\",\"message.error\",\"message.info\",\"message.subscribe\",\"message.success\",\"message.unsubscribe\",\"message.warn\",\"mode.setDashboardMode\",\"mode.setDefaultMode\",\"parent.postMessage\",\"preview.debug\",\"sessionStorage.removeItem\",\"sessionStorage.setItem\",\"state.load\",\"state.refresh\",\"state.update\",\"theme.setDarkTheme\",\"theme.setLightTheme\",\"theme.setTheme\",\"tpl.dispatchEvent\",\"window.open\",\"window.postMessage\"];","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { brickNextKeywords } from \"./constants.js\";\nimport { getEditorId } from \"./editorId.js\";\nimport { TokenConfig } from \"../index.jsx\";\nimport { AdvancedCompleterMap } from \"../interfaces.js\";\nimport { provideJsSuggestItems } from \"../utils/jsSuggestInBrickYaml.js\";\nimport { EmbeddedModelContext } from \"../utils/embeddedModelState.js\";\nimport builtinActions from \"../../generated-actions.js\";\n\nconst findKeys = (\n model: monaco.editor.ITextModel,\n range: monaco.Range | monaco.editor.IWordAtPosition,\n line: number\n) => {\n const curLevelKeys: string[] = [];\n const keyList: string[] = [];\n let parentKey = \"\";\n let i = line;\n let startColumn = range.startColumn;\n while (i > 0) {\n const prefixLineWord = model.getValueInRange({\n startLineNumber: i,\n endLineNumber: i,\n startColumn: 0,\n endColumn: Infinity,\n });\n const matchWord = prefixLineWord.match(/^([\\s|-]*)(\\w+)(?=:)/);\n if (matchWord) {\n const [, wordSpace, key] = matchWord;\n if (wordSpace.length === range.startColumn - 1) {\n curLevelKeys.unshift(key);\n }\n if (wordSpace.length < startColumn - 1) {\n !parentKey && (parentKey = key);\n startColumn = wordSpace.length;\n keyList.unshift(key);\n }\n }\n i--;\n }\n return {\n curLevelKeys,\n keyList,\n parentKey,\n };\n};\n\nconst getPrefixWord = (\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n tokenConfig: TokenConfig | undefined\n): {\n word: string | undefined;\n token: string;\n} => {\n const word = model.getWordUntilPosition(position);\n const prefixToken = model.getValueInRange({\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: position.column - word.word.length - 1,\n endColumn: position.column - word.word.length,\n });\n const prefixWord = model.getWordAtPosition({\n ...position,\n column: position.column - word?.word?.length - 1,\n });\n let matchWord = prefixWord?.word;\n if (tokenConfig?.showDSKey && prefixWord?.word === \"DS\") {\n const prefix = model.getWordAtPosition({\n ...position,\n column: prefixWord.startColumn - 1,\n });\n\n matchWord = `${prefix?.word}.${prefixWord.word}`;\n }\n return {\n word: matchWord,\n token: prefixToken,\n };\n};\n\nconst isInEvaluateBody = (\n model: monaco.editor.ITextModel,\n position: monaco.Position\n): boolean => {\n const word = model.getWordUntilPosition(position);\n const prefixEvaluateOperator = model.findPreviousMatch(\n \"<%\",\n position,\n false,\n false,\n null,\n false\n );\n const suffixEvaluateOperator = model.findNextMatch(\n \"%>\",\n position,\n false,\n false,\n null,\n false\n );\n\n const prefixRange = prefixEvaluateOperator?.range;\n const suffixRange = suffixEvaluateOperator?.range;\n\n const isInEvaluateBody =\n prefixRange?.startLineNumber &&\n suffixRange?.startLineNumber &&\n prefixRange.startLineNumber <= position.lineNumber &&\n suffixRange.endLineNumber >= position.lineNumber &&\n // 正确匹配当前表达式,防止匹配到上一个表达式<%的开始,下一个表达式的结尾%>\n !model.findMatches(\n \"<%|%>\",\n new monaco.Range(\n prefixRange.endLineNumber,\n prefixRange.endColumn,\n suffixRange.startLineNumber,\n suffixRange.startColumn\n ),\n true,\n false,\n null,\n true\n )?.length;\n\n if (isInEvaluateBody) {\n const { parentKey: prefixParentKey } = findKeys(\n model,\n prefixRange,\n prefixRange.startLineNumber\n );\n const { parentKey: suffixParentKey } = findKeys(\n model,\n suffixRange,\n suffixRange.startLineNumber\n );\n const { keyList } = findKeys(model, word, position.lineNumber);\n if (\n // value is object\n (prefixParentKey === suffixParentKey &&\n keyList.includes(prefixParentKey)) ||\n // value is string\n (prefixParentKey === \"\" && suffixParentKey === \"\")\n ) {\n return true;\n }\n }\n return false;\n};\n\nexport const brickNextYAMLProviderCompletionItems = (\n completers: monaco.languages.CompletionItem[] = [],\n advancedCompleters: AdvancedCompleterMap = {},\n id: string,\n tokenConfig: TokenConfig | undefined\n) => {\n return async (\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): Promise<\n monaco.languages.ProviderResult<monaco.languages.CompletionList>\n > => {\n if (id && id !== getEditorId())\n return {\n suggestions: [],\n };\n const DSToken = tokenConfig?.showDSKey ? [\"CTX.DS\", \"DS\"] : [];\n const word = model.getWordUntilPosition(position);\n const { word: prefixWord, token: prefixToken } = getPrefixWord(\n model,\n position,\n tokenConfig\n );\n const curLineWord = model.getValueInRange({\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: 0,\n endColumn: Infinity,\n });\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const isFirstLevelProperty = word.startColumn === 1;\n const { curLevelKeys } = findKeys(model, word, model.getLineCount());\n\n if (context.triggerCharacter === \"<\") {\n const fullWord = model.getValueInRange({\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: position.column - 2,\n endColumn: position.column + 2,\n });\n if (!/^(['\"]?)<\\1$/.test(fullWord.trim())) {\n return {\n suggestions: [],\n };\n }\n return {\n suggestions: [\n {\n label: \"<% %>\",\n detail: \"Expression body\",\n kind: monaco.languages.CompletionItemKind.Value,\n insertText: \"% ${0} %>\",\n insertTextRules:\n monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n range: range,\n },\n {\n label: \"<%= %>\",\n detail: \"Track expression body\",\n kind: monaco.languages.CompletionItemKind.Value,\n insertText: \"%= ${0} %>\",\n insertTextRules:\n monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n range: range,\n },\n ],\n };\n }\n\n if (isFirstLevelProperty) {\n return {\n suggestions: (completers ?? [])\n .filter((item) => !curLevelKeys.includes(item.label as string))\n .map((item) => ({\n ...item,\n label: item.label,\n insertText: item.insertText || (item.label as string),\n kind: monaco.languages.CompletionItemKind.Keyword,\n range,\n })),\n };\n }\n\n if (\n context.triggerCharacter === \":\" ||\n (context.triggerCharacter === \".\" &&\n prefixWord &&\n ![\"CTX\", \"STATE\", \"FN\"].concat(DSToken).includes(prefixWord))\n ) {\n if (prefixWord === \"action\" && context.triggerCharacter === \":\") {\n return {\n suggestions: builtinActions.map((item) => ({\n label: ` ${item}`,\n detail: \"event action\",\n kind: monaco.languages.CompletionItemKind.Keyword,\n insertText: ` ${item}`,\n range,\n })),\n };\n }\n const matchCompletion = advancedCompleters?.[prefixWord as string];\n let matchTriggerCharacter = \"\";\n let list: monaco.languages.CompletionItem[] | undefined;\n if (matchCompletion && !Array.isArray(matchCompletion)) {\n list = matchCompletion.completers;\n matchTriggerCharacter = matchCompletion.triggerCharacter;\n } else {\n list = matchCompletion;\n }\n if (\n matchTriggerCharacter\n ? context.triggerCharacter === matchTriggerCharacter && list\n : list\n ) {\n return {\n suggestions: (list ?? []).map((item) => {\n const label =\n matchTriggerCharacter === \":\"\n ? ` ${item.label}`\n : (item.label as string);\n return {\n ...item,\n label: label,\n kind: monaco.languages.CompletionItemKind.Value,\n insertText: item.insertText || label,\n range,\n };\n }),\n };\n }\n }\n\n if (isInEvaluateBody(model, position) && prefixToken !== \":\") {\n const embeddedContext = EmbeddedModelContext.getInstance(id);\n\n const suggestions = await provideJsSuggestItems(\n model,\n position,\n embeddedContext.getState()\n );\n\n return {\n suggestions,\n };\n }\n\n if (/^[\\s|-]*\\w$/.test(curLineWord)) {\n return {\n suggestions: brickNextKeywords\n .map((item) => ({\n label: item,\n insertText: item,\n kind: monaco.languages.CompletionItemKind.Keyword,\n range,\n }))\n .filter((item) => !curLevelKeys.includes(item.label as string)),\n };\n }\n\n return {\n suggestions: [],\n };\n };\n};\n","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { builtInKeywordDeclare } from \"./constants.js\";\n\ninterface BlockContext {\n offset?: number;\n}\n\nexport function getEmbeddedJavascriptUri(\n value: monaco.editor.IModel | monaco.Uri\n) {\n if (\"uri\" in value) {\n value = value.uri;\n }\n return monaco.Uri.parse(value.toString() + \".ts\");\n}\n\n// istanbul ignore next\nexport async function provideJsSuggestItems(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n embeddedContext: BlockContext\n) {\n const workerGetter = await monaco.languages.typescript.getJavaScriptWorker();\n const worker = await workerGetter(model.uri);\n const javascriptModel = monaco.editor.getModel(\n getEmbeddedJavascriptUri(model)\n );\n\n const endOffset = model.getOffsetAt(position);\n const starOffset = embeddedContext?.offset ?? 0;\n\n const offset = endOffset - starOffset;\n\n const info = await worker.getCompletionsAtPosition(\n javascriptModel!.uri.toString(),\n offset!\n );\n\n const wordInfo = model.getWordUntilPosition(position);\n\n const wordRange = new monaco.Range(\n position.lineNumber,\n wordInfo.startColumn,\n position.lineNumber,\n wordInfo.endColumn\n );\n\n const suggestions = (info?.entries ?? []).map((entry: any) => {\n let range = wordRange;\n\n if (entry.replacementSpan) {\n const p1 = model.getPositionAt(entry.replacementSpan.start);\n const p2 = model.getPositionAt(\n entry.replacementSpan.start + entry.replacementSpan.length\n );\n range = new monaco.Range(\n p1.lineNumber,\n p1.column,\n p2.lineNumber,\n p2.column\n );\n }\n\n return {\n uri: javascriptModel!.uri,\n position: position,\n offset: offset,\n range: range,\n label: entry.name,\n insertText: entry.name,\n sortText: entry.sortText,\n kind: monaco.languages.CompletionItemKind.Property,\n };\n });\n\n return suggestions;\n}\n\nexport function getMicroAppDeclare() {\n // 不要主动提示不对用户公开的 APP 属性\n return `\ndeclare namespace APP {\n const name: string;\n const id: string;\n const homepage: string;\n const currentVersion: string;\n const config: object;\n const localeName: string;\n const localeTitle: string;\n}\n`;\n}\n\nexport function getBrickYamlBuiltInDeclare() {\n return [getMicroAppDeclare(), builtInKeywordDeclare].join(\"\\n\");\n}\n","let editorId: string;\n\nexport function setEditorId(id: string) {\n editorId = id;\n}\n\nexport function getEditorId() {\n return editorId;\n}\n","// istanbul ignore file\nimport { wrap } from \"comlink\";\nimport type { LintRequest, LintResponse } from \"./lintYaml\";\n\nexport interface RemoteYamlLinterWorker {\n lint(req: LintRequest): Promise<LintResponse>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteYamlLinterWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteYamlLinterWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteYamlLinterWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nexport function getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./yamlLinter.worker.ts\", import.meta.url));\n }\n return worker;\n}\n","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\n\nexport function isInEmbedded(\n model: monaco.editor.ITextModel,\n position: monaco.Position\n) {\n const previousStart = findPreviousMatch(model, \"<%\", position);\n if (!previousStart) {\n return false;\n }\n const nextEnd = findNextMatch(model, \"%>\", position);\n if (!nextEnd) {\n return false;\n }\n const previousEnd = findPreviousMatch(model, \"%>\", position);\n if (\n previousEnd &&\n previousStart.range\n .getEndPosition()\n .isBefore(previousEnd.range.getStartPosition())\n ) {\n return false;\n }\n const nextStart = findNextMatch(model, \"<%\", position);\n if (\n nextStart &&\n nextStart.range.getStartPosition().isBefore(nextEnd.range.getEndPosition())\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Find the previous match of the word in the model, but no loops to the end.\n */\nfunction findPreviousMatch(\n model: monaco.editor.ITextModel,\n word: string,\n position: monaco.Position\n) {\n const match = model.findPreviousMatch(\n word,\n position,\n false,\n false,\n null,\n false\n );\n if (match && position.isBefore(match.range.getStartPosition())) {\n return null;\n }\n return match;\n}\n\n/**\n * Find the next match of the word in the model, but no loops to the beginning.\n */\nfunction findNextMatch(\n model: monaco.editor.ITextModel,\n word: string,\n position: monaco.Position\n) {\n const match = model.findNextMatch(word, position, false, false, null, false);\n if (match && match.range.getEndPosition().isBefore(position)) {\n return null;\n }\n return match;\n}\n","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { constants, instanceMembers } from \"../languages/cel\";\nimport { getEditorId } from \"./editorId\";\nimport { isInEmbedded } from \"./isInEmbedded\";\nimport type { MixedCompleter } from \"../interfaces\";\n\nconst BUILTIN_MEMBERS: Record<string, string[]> = {\n request: [\"uri\", \"query\", \"header\", \"body\"],\n};\n\n/**\n * When user types \"<\", provide the completion item \"<% | %>\",\n * in which, `|` represents the position of the cursor.\n */\nexport function provideEmbeddedCelCompletionItems(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n): monaco.languages.CompletionList {\n if (context.triggerCharacter !== \"<\" || isInEmbedded(model, position)) {\n return getEmptySuggestions();\n }\n\n // Handle: <|\n // Or: \"<|\"\n // Or: '<|'\n const nearby = model.getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn: position.column - 2,\n endLineNumber: position.lineNumber,\n endColumn: position.column + 1,\n });\n if (!/^(['\"]?)<\\1$/.test(nearby.trim())) {\n return getEmptySuggestions();\n }\n\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endLineNumber: position.lineNumber,\n endColumn: word.endColumn,\n };\n\n return {\n suggestions: [\n {\n label: \"<% %>\",\n detail: \"CEL body\",\n kind: monaco.languages.CompletionItemKind.Value,\n insertText: \"% ${0} %>\",\n insertTextRules:\n monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n range,\n },\n ],\n };\n}\n\n/**\n * Provide common completion items for CEL language.\n * Such as `size` and `base64`.\n */\nexport function celCommonCompletionProviderFactory(\n lang: string\n): monaco.languages.CompletionItemProvider {\n return {\n triggerCharacters: [\".\"],\n provideCompletionItems(model, position, context) {\n if (lang !== \"cel\" && !isInEmbedded(model, position)) {\n return getEmptySuggestions();\n }\n\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endLineNumber: position.lineNumber,\n endColumn: word.endColumn,\n };\n\n const previousWord = model.getWordUntilPosition(\n new monaco.Position(position.lineNumber, word.startColumn - 1)\n );\n\n // Handle: foo.|\n // Or: foo.x|\n if (\n context.triggerCharacter === \".\" ||\n model\n .getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn: previousWord.endColumn,\n endLineNumber: position.lineNumber,\n endColumn: word.startColumn,\n })\n .trim() === \".\"\n ) {\n const completer =\n previousWord.word &&\n hasOwnProperty(BUILTIN_MEMBERS, previousWord.word)\n ? BUILTIN_MEMBERS[previousWord.word]\n : undefined;\n\n if (completer) {\n return {\n suggestions: completer.map((label) => ({\n label,\n insertText: label,\n kind: monaco.languages.CompletionItemKind.Method,\n range,\n })),\n };\n }\n\n // Do not provide member suggestions for constants.\n if ((constants as readonly string[]).includes(previousWord.word)) {\n return getEmptySuggestions();\n }\n\n return {\n suggestions: instanceMembers.map((label) => ({\n label,\n insertText: label,\n kind: monaco.languages.CompletionItemKind.Method,\n range,\n })),\n };\n }\n\n // Handle: x|\n return {\n suggestions: constants.map((label) => ({\n label,\n insertText: label,\n kind: monaco.languages.CompletionItemKind.Keyword,\n range,\n })),\n };\n },\n };\n}\n\n/**\n * Provide specific completion items for CEL language.\n * Such as `step.*`\n */\nexport function celSpecificCompletionProviderFactory(\n lang: string,\n id: string,\n completers: MixedCompleter[]\n): monaco.languages.CompletionItemProvider {\n return {\n triggerCharacters: [\".\"],\n provideCompletionItems(model, position, context) {\n if (\n id !== getEditorId() ||\n (lang !== \"cel\" && !isInEmbedded(model, position))\n ) {\n return getEmptySuggestions();\n }\n\n const word = model.getWordUntilPosition(position);\n const previousWord = model.getWordUntilPosition(\n new monaco.Position(position.lineNumber, word.startColumn - 1)\n );\n\n if (\n context.triggerCharacter !== \".\" &&\n model\n .getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn: previousWord.endColumn,\n endLineNumber: position.lineNumber,\n endColumn: word.startColumn,\n })\n .trim() !== \".\"\n ) {\n return getEmptySuggestions();\n }\n\n let members: string[] | undefined;\n if (previousWord.word) {\n for (const completer of completers) {\n if (\n completer.type === \"members\" &&\n hasOwnProperty(completer.members, previousWord.word)\n ) {\n members = completer.members[previousWord.word];\n }\n }\n }\n\n if (!members) {\n return getEmptySuggestions();\n }\n\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n return {\n suggestions: members.map((label) => ({\n label,\n insertText: label,\n kind: monaco.languages.CompletionItemKind.Method,\n range,\n })),\n };\n },\n };\n}\n\nfunction getEmptySuggestions(): monaco.languages.CompletionList {\n return { suggestions: [] };\n}\n","export const EDITOR_FONT_SIZE = 12;\nexport const EDITOR_LINE_HEIGHT = 18;\nexport const EDITOR_SCROLLBAR_SIZE = 12;\nexport const EDITOR_PADDING_VERTICAL = 12;\n","// istanbul ignore file\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nconst markRegex = new RegExp(\"\\\\b(MARK:\\\\s*)(.*)$\");\nconst trimDashesRegex = /^-+|-+$/g;\n/**\n * Find section headers in the model.\n *\n * @param model the text model to search in\n * @param options options to search with\n * @returns an array of section headers\n */\nexport function findSectionHeaders(model, options) {\n var _a;\n let headers = [];\n if (\n options.findRegionSectionHeaders &&\n ((_a = options.foldingRules) === null || _a === void 0\n ? void 0\n : _a.markers)\n ) {\n const regionHeaders = collectRegionHeaders(model, options);\n headers = headers.concat(regionHeaders);\n }\n if (options.findMarkSectionHeaders) {\n const markHeaders = collectMarkHeaders(model);\n headers = headers.concat(markHeaders);\n }\n return headers;\n}\nfunction collectRegionHeaders(model, options) {\n const regionHeaders = [];\n const endLineNumber = model.getLineCount();\n for (let lineNumber = 1; lineNumber <= endLineNumber; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const match = lineContent.match(options.foldingRules.markers.start);\n if (match) {\n const range = {\n startLineNumber: lineNumber,\n startColumn: match[0].length + 1,\n endLineNumber: lineNumber,\n endColumn: lineContent.length + 1,\n };\n if (range.endColumn > range.startColumn) {\n const sectionHeader = {\n range,\n ...getHeaderText(lineContent.substring(match[0].length)),\n shouldBeInComments: false,\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) {\n regionHeaders.push(sectionHeader);\n }\n }\n }\n }\n return regionHeaders;\n}\nfunction collectMarkHeaders(model) {\n const markHeaders = [];\n const endLineNumber = model.getLineCount();\n for (let lineNumber = 1; lineNumber <= endLineNumber; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n addMarkHeaderIfFound(lineContent, lineNumber, markHeaders);\n }\n return markHeaders;\n}\nfunction addMarkHeaderIfFound(lineContent, lineNumber, sectionHeaders) {\n markRegex.lastIndex = 0;\n const match = markRegex.exec(lineContent);\n if (match) {\n const column = match.index + match[1].length + 1;\n const endColumn = column + match[2].length;\n const range = {\n startLineNumber: lineNumber,\n startColumn: column,\n endLineNumber: lineNumber,\n endColumn: endColumn,\n };\n if (range.endColumn > range.startColumn) {\n const sectionHeader = {\n range,\n ...getHeaderText(match[1]),\n shouldBeInComments: true,\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) {\n sectionHeaders.push(sectionHeader);\n }\n }\n }\n}\nfunction getHeaderText(text) {\n text = text.trim();\n const hasSeparatorLine = text.startsWith(\"-\");\n text = text.replace(trimDashesRegex, \"\");\n return { text, hasSeparatorLine };\n}\n","export enum K {\n COPY = \"COPY\",\n COPY_SUCCESS = \"COPY_SUCCESS\",\n COPY_FAILED = \"COPY_FAILED\",\n EXPAND = \"EXPAND\",\n COLLAPSE = \"COLLAPSE\",\n}\n\nconst en: Locale = {\n COPY: \"Copy\",\n COPY_SUCCESS: \"Copied!\",\n COPY_FAILED: \"Copy failed!\",\n EXPAND: \"Expand\",\n COLLAPSE: \"Collapse\",\n};\n\nconst zh: Locale = {\n COPY: \"复制\",\n COPY_SUCCESS: \"已复制!\",\n COPY_FAILED: \"复制失败!\",\n EXPAND: \"展开\",\n COLLAPSE: \"收起\",\n};\n\nexport const NS = \"bricks/vs/code-editor\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","// https://github.com/microsoft/monaco-editor/blob/8270c45a385a180a53fd8ef8e3a189b1471100ed/src/basic-languages/yaml/yaml.ts\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { conf as confOfCel } from \"./cel\";\n\nexport const conf: monaco.languages.LanguageConfiguration = {\n brackets: confOfCel.brackets,\n autoClosingPairs: confOfCel.autoClosingPairs,\n};\n\nexport const language: monaco.languages.IMonarchLanguage = {\n tokenPostfix: \".yaml.str\",\n\n tokenizer: {\n root: [\n { include: \"@whitespace\" },\n { include: \"@expression\" },\n { include: \"@strings\" },\n ],\n\n expression: [\n [\n /<%/,\n {\n token: \"delimiter\",\n next: \"@expressionEmbedded\",\n nextEmbedded: \"text/cel\",\n bracket: \"@open\",\n },\n ],\n [/%>/, { token: \"delimiter\", bracket: \"@close\" }],\n ],\n\n expressionEmbedded: [\n [/%>/, { token: \"@rematch\", next: \"@pop\", nextEmbedded: \"@pop\" }],\n ],\n\n strings: [[/[^<]+|<(?!%)/, \"string\"]],\n\n whitespace: [[/[ \\t\\r\\n]+/, \"white\"]],\n },\n};\n\n/**\n * Register the cel_str language, that CEL is embedded in `<% %>` as a plain string.\n */\nexport function register(Monaco: typeof monaco, languageId = \"cel_str\") {\n Monaco.languages.register({\n id: languageId,\n extensions: [\".cel-str\"],\n mimetypes: [\"text/cel-str\"],\n });\n Monaco.languages.setLanguageConfiguration(languageId, conf);\n Monaco.languages.setMonarchTokensProvider(languageId, language);\n}\n","import * as monaco from \"monaco-editor/esm/vs/editor/editor.api.js\";\nimport { ExtraLib } from \"../interfaces.js\";\n\nconst extraLibsMap = new Map<string, monaco.IDisposable[]>();\n\nexport function addExtraLibs(\n libs: ExtraLib[],\n options: {\n languageDefaults?: string;\n }\n): monaco.IDisposable[] {\n return libs.flatMap((lib) => {\n const uri = monaco.Uri.file(`libs/${lib.filePath}`);\n const uriString = uri.toString();\n const previousLibs = extraLibsMap.get(uriString);\n if (previousLibs) {\n previousLibs.forEach((lib) => lib.dispose());\n }\n // Add libs for both js and ts.\n const disposables = (\n [options.languageDefaults] as Array<\n \"javascriptDefaults\" | \"typescriptDefaults\"\n >\n ).map((key) =>\n monaco.languages.typescript[key].addExtraLib(lib.content, uriString)\n );\n\n extraLibsMap.set(uriString, disposables);\n return disposables;\n });\n}\n"],"names":["method","property","createDecorators","_A","WeakMap","_FormItemElementBase_brand","WeakSet","_B","_C","_D","_E","_F","_G","FormItemElementBase","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_helpBrick","_init_extra_helpBrick","_init_labelBrick","_init_extra_labelBrick","_init_labelCol","_init_extra_labelCol","_init_wrapperCol","_init_extra_wrapperCol","isFormItemElement","validateState","value","_classPrivateSetter","_set_validate","this","_render","_classPrivateGetter","_get_validate","notRender","hidden","_set__notRender","_get__notRender","$bindFormItem","_get_bindFormItem","_set_bindFormItem","helpBrick","_classPrivateFieldGet","v","_classPrivateFieldSet","labelBrick","labelCol","wrapperCol","setNotRender","getFormElement","element","parentNode","isFormElement","_this","_this2","_this3","_this4","_this5","_this6","_FormItemElementBase","_applyDecs","attribute","e","brickNextKeywords","builtInKeywordDeclare","conf","comments","lineComment","blockComment","brackets","autoClosingPairs","open","close","notIn","onEnterRules","beforeText","afterText","action","indentAction","monaco","IndentAction","IndentOutdent","appendText","constants","instanceMembers","language","defaultToken","tokenPostfix","keywords","instanceMethods","operators","symbols","escapes","tokenizer","root","cases","include","token","bracket","next","string","whitespace","register","Monaco","languageId","length","undefined","languages","id","extensions","mimetypes","setLanguageConfiguration","setMonarchTokensProvider","PlaceholderContentWidget","placeholder","editor","color","_defineProperty","onDidChangeModelContent","_this$editor","_this$editor$getValue","_this$editor2","_this$editor2$removeC","getValue","call","addContentWidget","removeContentWidget","getId","ID","getDomNode","domNode","document","createElement","style","width","pointerEvents","textContent","whiteSpace","fontStyle","applyFontInfo","getPosition","position","lineNumber","column","preference","ContentWidgetPositionPreference","EXACT","dispose","_this$editor3","_this$editor3$removeC","EmbeddedModelContext","getInstance","_assertClassBrand","_instance","_","_id","_state","updateState","state","getState","folding","offSide","Indent","numberInteger","numberFloat","numberOctal","numberHex","numberInfinity","numberNaN","numberDate","object","array","multiString","multiStringContinued","comment","flowCollections","flowScalars","singleQuotedString","doubleQuotedString","blockStyle","flowNumber","tagHandle","anchor","flowExpression","expressionStart","nextEmbedded","multiExpression","expressionEmbedded","___CSS_LOADER_EXPORT___","push","module","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","findKeys","model","range","line","curLevelKeys","keyList","parentKey","i","startColumn","matchWord","getValueInRange","startLineNumber","endLineNumber","endColumn","Infinity","match","wordSpace","key","unshift","brickNextYAMLProviderCompletionItems","completers","advancedCompleters","tokenConfig","async","context","getEditorId","suggestions","DSToken","showDSKey","word","getWordUntilPosition","prefixWord","prefixToken","getPrefixWord","_word$word","getWordAtPosition","prefix","curLineWord","isFirstLevelProperty","getLineCount","triggerCharacter","fullWord","test","trim","label","detail","kind","CompletionItemKind","Value","insertText","insertTextRules","CompletionItemInsertTextRule","InsertAsSnippet","filter","item","includes","map","Keyword","concat","builtinActions","matchCompletion","list","matchTriggerCharacter","Array","isArray","isInEvaluateBody","_model$findMatches","prefixEvaluateOperator","findPreviousMatch","suffixEvaluateOperator","findNextMatch","prefixRange","suffixRange","findMatches","prefixParentKey","suffixParentKey","embeddedContext","provideJsSuggestItems","getEmbeddedJavascriptUri","uri","parse","toString","_embeddedContext$offs","_info$entries","workerGetter","typescript","getJavaScriptWorker","worker","javascriptModel","getModel","offset","getOffsetAt","info","getCompletionsAtPosition","wordInfo","wordRange","entries","entry","replacementSpan","p1","getPositionAt","start","p2","name","sortText","Property","getBrickYamlBuiltInDeclare","join","editorId","setEditorId","remoteWorkerPromise","getRemoteYamlLinterWorker","Remote","wrap","Worker","URL","isInEmbedded","previousStart","nextEnd","previousEnd","getEndPosition","isBefore","getStartPosition","nextStart","BUILTIN_MEMBERS","request","provideEmbeddedCelCompletionItems","nearby","celCommonCompletionProviderFactory","lang","triggerCharacters","provideCompletionItems","previousWord","completer","hasOwnProperty","Method","celSpecificCompletionProviderFactory","members","type","EDITOR_FONT_SIZE","EDITOR_LINE_HEIGHT","EDITOR_SCROLLBAR_SIZE","EDITOR_PADDING_VERTICAL","markRegex","RegExp","trimDashesRegex","findSectionHeaders","_a","headers","findRegionSectionHeaders","foldingRules","markers","regionHeaders","lineContent","getLineContent","sectionHeader","getHeaderText","substring","shouldBeInComments","text","hasSeparatorLine","collectRegionHeaders","findMarkSectionHeaders","markHeaders","addMarkHeaderIfFound","collectMarkHeaders","sectionHeaders","lastIndex","exec","index","startsWith","replace","K","NS","locales","en","COPY","COPY_SUCCESS","COPY_FAILED","EXPAND","COLLAPSE","zh","confOfCel","expression","strings","extraLibsMap","Map","addExtraLibs","libs","flatMap","lib","uriString","file","filePath","previousLibs","get","forEach","disposables","languageDefaults","addExtraLib","content","set"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_vs=globalThis.webpackChunk_next_bricks_vs||[]).push([[7242],{7242:(e,t,n)=>{var i,s=n(4635),r=n(918),a=n(6902),o=n(5536),l=n(6121),c=n(829),u=n(2740),h=n(8769),d=n.n(h),g=n(6192),m=n(2304),p=n(9859),f=n(8792),k=n(426),A=n(2329),v=n(6197),y=n(3909),w=n(2257),b=n(3135),M=n(5310),C=n.n(M),x=(n(6477),n(563)),E=n(7137),S=n(4046),L=n(4804),B=n(4102),N=n(9287),W=n(9704),_=n(8182),P=n(3373),z=n.n(P),R=(n(3569),n(1968)),O=n(1836),I=n(5087),V=n(896),D=n(2066),F=n(8546),Y=n(6984);let H,K,T,q,j,U,J,X,Z,$,G,Q,ee,te,ne,ie,se,re,ae,oe,le,ce,ue,he,de,ge,me,pe,fe,ke,Ae,ve,ye,we,be,Me,Ce,xe,Ee,Se,Le,Be,Ne,We,_e,Pe,ze,Re,Oe,Ie,Ve,De,Fe,Ye,He,Ke,Te,qe,je,Ue,Je,Xe,Ze;(0,W.initializeReactI18n)(_.NS,_.I),(0,v.kz)(A),(0,y.kz)(A),(0,w.kz)(A,"brick_next_yaml"),(0,b.kz)(A),(0,V.kz)(A),(0,D.kz)(A),(0,F.kz)(A);const $e=["cel_yaml","cel_str"],Ge=["cel",...$e];for(const e of $e)A.languages.registerCompletionItemProvider(e,{triggerCharacters:["<"],provideCompletionItems:Y.ix});for(const e of Ge)A.languages.registerCompletionItemProvider(e,(0,Y.ZY)(e));const{defineElement:Qe,property:et,event:tt}=(0,g.createDecorators)(),nt=(0,p.wrapBrick)("eo-form-item"),it=(0,p.wrapBrick)("eo-tooltip"),st=(0,p.wrapBrick)("eo-icon"),rt=(0,m.unwrapProvider)("basic.copy-to-clipboard"),at=(0,m.unwrapProvider)("basic.show-notification");let ot;var lt=new WeakMap,ct=new WeakMap,ut=new WeakMap,ht=new WeakMap,dt=new WeakMap,gt=new WeakMap,mt=new WeakMap,pt=new WeakMap,ft=new WeakMap,kt=new WeakMap,At=new WeakMap,vt=new WeakMap,yt=new WeakMap,wt=new WeakMap,bt=new WeakMap,Mt=new WeakMap,Ct=new WeakMap,xt=new WeakMap,Et=new WeakMap,St=new WeakMap,Lt=new WeakMap,Bt=new WeakMap,Nt=new WeakMap,Wt=new WeakMap,_t=new WeakMap,Pt=new WeakMap,zt=new WeakSet,Rt=new WeakMap,Ot=new WeakMap,It=new WeakMap,Vt=new WeakMap,Dt=new WeakMap,Ft=new WeakMap;class Yt extends k.N{constructor(){super(...arguments),(0,s.A)(this,zt),(0,r.A)(this,lt,K(this)),(0,r.A)(this,ct,(T(this),q(this))),(0,r.A)(this,ut,(j(this),U(this))),(0,r.A)(this,ht,(J(this),X(this))),(0,r.A)(this,dt,(Z(this),$(this))),(0,r.A)(this,gt,(G(this),Q(this))),(0,r.A)(this,mt,(ee(this),te(this))),(0,r.A)(this,pt,(ne(this),ie(this))),(0,r.A)(this,ft,(se(this),re(this))),(0,r.A)(this,kt,(ae(this),oe(this))),(0,r.A)(this,At,(le(this),ce(this))),(0,r.A)(this,vt,(ue(this),he(this))),(0,r.A)(this,yt,(de(this),ge(this))),(0,r.A)(this,wt,(me(this),pe(this))),(0,r.A)(this,bt,(fe(this),ke(this))),(0,r.A)(this,Mt,(Ae(this),ve(this))),(0,r.A)(this,Ct,(ye(this),we(this))),(0,r.A)(this,xt,(be(this),Me(this))),(0,r.A)(this,Et,(Ce(this),xe(this))),(0,r.A)(this,St,(Ee(this),Se(this))),(0,r.A)(this,Lt,(Le(this),Be(this))),(0,r.A)(this,Bt,(Ne(this),We(this))),(0,r.A)(this,Nt,(_e(this),Pe(this))),(0,r.A)(this,Wt,(ze(this),Re(this))),(0,r.A)(this,_t,(Oe(this),Ie(this))),(0,r.A)(this,Pt,(Ve(this),De(this))),(0,r.A)(this,Rt,(He(this),Ke(this))),(0,r.A)(this,Ot,(je(this),e=>{var t;this.value=e,null===(t=this.getFormElement())||void 0===t||t.formStore.onChange(this.name,e),(0,o.A)(zt,this,Fe).emit(e)})),(0,r.A)(this,It,(e=>{(0,o.A)(zt,this,Te).emit(e)})),(0,r.A)(this,Vt,Ue(this)),(0,r.A)(this,Dt,(Ze(this),e=>{(0,o.A)(zt,this,Je).emit(e)})),(0,r.A)(this,Ft,(e=>{if("brick_next_yaml"===this.language||"yaml"===this.language)try{C().load(e)}catch{return"请填写正确的格式"}return""}))}get name(){return(0,c.A)(lt,this)}set name(e){(0,l.A)(lt,this,e)}get label(){return(0,c.A)(ct,this)}set label(e){(0,l.A)(ct,this,e)}get value(){return(0,c.A)(ut,this)}set value(e){(0,l.A)(ut,this,e)}get language(){return(0,c.A)(ht,this)}set language(e){(0,l.A)(ht,this,e)}get theme(){return(0,c.A)(dt,this)}set theme(e){(0,l.A)(dt,this,e)}get required(){return(0,c.A)(gt,this)}set required(e){(0,l.A)(gt,this,e)}get readOnly(){return(0,c.A)(mt,this)}set readOnly(e){(0,l.A)(mt,this,e)}get automaticLayout(){return(0,c.A)(pt,this)}set automaticLayout(e){(0,l.A)(pt,this,e)}get minLines(){return(0,c.A)(ft,this)}set minLines(e){(0,l.A)(ft,this,e)}get completers(){return(0,c.A)(kt,this)}set completers(e){(0,l.A)(kt,this,e)}get advancedCompleters(){return(0,c.A)(At,this)}set advancedCompleters(e){(0,l.A)(At,this,e)}get markers(){return(0,c.A)(vt,this)}set markers(e){(0,l.A)(vt,this,e)}get links(){return(0,c.A)(yt,this)}set links(e){(0,l.A)(yt,this,e)}get maxLines(){return(0,c.A)(wt,this)}set maxLines(e){(0,l.A)(wt,this,e)}get height(){return(0,c.A)(bt,this)}set height(e){(0,l.A)(bt,this,e)}get message(){return(0,c.A)(Mt,this)}set message(e){(0,l.A)(Mt,this,e)}get placeholder(){return(0,c.A)(Ct,this)}set placeholder(e){(0,l.A)(Ct,this,e)}get showExpandButton(){return(0,c.A)(xt,this)}set showExpandButton(e){(0,l.A)(xt,this,e)}get lineNumbers(){return(0,c.A)(Et,this)}set lineNumbers(e){(0,l.A)(Et,this,e)}get tokenConfig(){return(0,c.A)(St,this)}set tokenConfig(e){(0,l.A)(St,this,e)}get customValidationInBrickNextYaml(){return(0,c.A)(Lt,this)}set customValidationInBrickNextYaml(e){(0,l.A)(Lt,this,e)}get showCopyButton(){return(0,c.A)(Bt,this)}set showCopyButton(e){(0,l.A)(Bt,this,e)}get glyphMargin(){return(0,c.A)(Nt,this)}set glyphMargin(e){(0,l.A)(Nt,this,e)}get extraLibs(){return(0,c.A)(Wt,this)}set extraLibs(e){(0,l.A)(Wt,this,e)}get fixedOverflowWidgets(){return(0,c.A)(_t,this)}set fixedOverflowWidgets(e){(0,l.A)(_t,this,e)}connectedCallback(){this.style.display||(this.style.display="block"),super.connectedCallback()}render(){return d().createElement(nt,{exportparts:"message",curElement:this,formElement:this.getFormElement(),name:this.name,label:this.label,required:this.required,helpBrick:this.helpBrick,labelBrick:this.labelBrick,notRender:this.notRender,validator:(0,c.A)(Ft,this)},d().createElement(Ht,{value:this.value,language:this.language,readOnly:this.readOnly,theme:this.theme,automaticLayout:this.automaticLayout,minLines:this.minLines,maxLines:this.maxLines,height:this.height,completers:this.completers,advancedCompleters:this.advancedCompleters,extraLibs:this.extraLibs,markers:this.markers,links:this.links,tokenConfig:this.tokenConfig,lineNumbers:this.lineNumbers,glyphMargin:this.glyphMargin,placeholder:this.placeholder,showCopyButton:this.showCopyButton,showExpandButton:this.showExpandButton,validateState:this.validateState,onChange:(0,c.A)(Ot,this),onUserInput:(0,c.A)(It,this),onTokenClick:(0,c.A)(Dt,this),customValidationInBrickNextYaml:this.customValidationInBrickNextYaml}))}}function Ht(e){let{value:t,language:n,theme:i,minLines:s,maxLines:r,height:a,automaticLayout:o,completers:l,advancedCompleters:c,markers:u,readOnly:g,links:m,extraLibs:p,tokenConfig:k,showExpandButton:v,showCopyButton:y=!0,lineNumbers:w="on",glyphMargin:b=!1,placeholder:M,validateState:C,onChange:P,onTokenClick:V,customValidationInBrickNextYaml:D,fixedOverflowWidgets:F}=e;const H=null!=t?t:"",K=null!=n?n:"plaintext",T=null!=i?i:"auto",q=null!=s?s:3,j=null!=r?r:1/0,U=null!=a?a:500,J=null==F||F,[X,Z]=(0,h.useState)(!1),$=(0,h.useMemo)((()=>(0,x.uniqueId)("worker")),[]),{t:G}=(0,W.useTranslation)(_.NS),Q=(0,h.useRef)(null),ee=(0,h.useRef)(),te=(0,h.useRef)(),ne=(0,h.useRef)({width:300,height:Kt(H,q,j)}),[ie,se]=(0,h.useState)(),re=(0,h.useRef)(o),ae=(0,f.useCurrentTheme)(),oe="auto"===T?"dark"===ae||"dark-v2"===ae?"vs-dark":"vs":T,le="vs-dark"===oe||"hc-black"===oe;(0,h.useEffect)((()=>{const e=le?"#FFFFFF0F":"#0000000A";A.editor.defineTheme("custom-theme",{base:oe,inherit:!0,rules:[],colors:{"editor.lineHighlightBackground":`${e}`}}),A.editor.setTheme("custom-theme")}),[oe,le]),(0,h.useEffect)((()=>{if(te.current){const e=te.current.getModel();A.editor.setModelLanguage(e,K)}}),[K]),(0,h.useEffect)((()=>{if("brick_next_yaml"===K){const e=(0,S.v)(l,Array.isArray(c)?void 0:c,$,k),t=A.languages.registerCompletionItemProvider("brick_next_yaml",{provideCompletionItems:e,triggerCharacters:[".",":","<"]});return()=>{t.dispose()}}}),[l,c,K,$,k]),(0,h.useEffect)((()=>{if(Array.isArray(c)&&c.length>0&&Ge.includes(K)){const e=A.languages.registerCompletionItemProvider(K,(0,Y.MY)(K,$,c));return()=>{e.dispose()}}}),[K,c,$]),(0,h.useEffect)((()=>{const e=te.current;if(e){const t=e.getModel();null!=t&&t.getValue&&H!==t.getValue()&&t.setValue(H)}}),[H]),(0,h.useLayoutEffect)((()=>{var e;if("fit-content"!==re.current||!Q.current)return;ne.current.width=Q.current.getBoundingClientRect().width,null===(e=te.current)||void 0===e||e.layout(ne.current);const t=new ResizeObserver((e=>{for(const n of e)if(n.target===Q.current){const e=n.contentBoxSize?n.contentBoxSize[0]?n.contentBoxSize[0].inlineSize:n.contentBoxSize.inlineSize:n.contentRect.width,i=n.contentBoxSize?n.contentBoxSize[0]?n.contentBoxSize[0].blockSize:n.contentBoxSize.blockSize:n.contentRect.height;var t;(e!==ne.current.width||X)&&(ne.current.width=e,null===(t=te.current)||void 0===t||t.layout({width:e,height:X?i:ne.current.height}));break}}));return t.observe(Q.current),()=>{t.disconnect()}}),[X]),(0,h.useLayoutEffect)((()=>{if("fit-container"!==re.current)return;const e=function(e){let t=e;for(;t;){const e="vs.code-editor"===t.tagName.toLowerCase();if(t=t.parentElement,e)return t}}(Q.current);if(!e)return;const t=new ResizeObserver((()=>{se(e.offsetHeight)}));return t.observe(e),()=>{t.disconnect()}}),[]),(0,h.useEffect)((()=>{"fit-container"!==re.current&&"fit-content"!==re.current&&se(U)}),[U]),(0,h.useEffect)((()=>{te.current&&te.current.updateOptions({readOnly:g,lineNumbersMinChars:X?5:3})}),[g,X]),(0,h.useEffect)((()=>{if(te.current||!Q.current)return;const e=A.editor.createModel(H,K);if("brick_next_yaml"===K){const t=(0,B.AR)(e.uri);A.editor.createModel(H,"javascript",t),A.languages.typescript.javascriptDefaults.addExtraLib((0,B.Eh)(),e.uri.toString()+"d.ts")}te.current=A.editor.create(Q.current,{extraEditorClassName:"monaco-editor-v3",model:e,minimap:{enabled:!1,showRegionSectionHeaders:!1,showMarkSectionHeaders:!1},scrollBeyondLastLine:!1,tabSize:2,insertSpaces:!0,automaticLayout:"fit-content"!==re.current,fontSize:E.yU,lineHeight:E.fE,scrollbar:{horizontalScrollbarSize:E.lP,verticalScrollbarSize:E.lP,horizontalSliderSize:8,verticalSliderSize:8,alwaysConsumeMouseWheel:!1},padding:{top:E.Vu,bottom:"fit-content"==re.current?void 0:E.Vu},overviewRulerBorder:!1,mouseWheelScrollSensitivity:.5,fixedOverflowWidgets:J,lineNumbers:w,lineNumbersMinChars:3,glyphMargin:b,folding:"off"!==w,suggest:{insertMode:"insert",preview:!0},readOnly:g,quickSuggestions:{strings:!0,other:!0,comments:!0},renderLineHighlightOnlyWhenFocus:!0,unicodeHighlight:{ambiguousCharacters:!1}}),ee.current=te.current.createDecorationsCollection()}),[]),(0,h.useEffect)((()=>{const e=null!=p?p:[],t="typescript"===K?"typescriptDefaults":"javascriptDefaults",n=(0,N.m)(e,{languageDefaults:t});return()=>{for(const e of n)e.dispose()}}),[p,K]),(0,h.useEffect)((()=>{const e=te.current;if("brick_next_yaml"===K&&e){const t=e.getModel(),n=e.onMouseDown((function(e){var n,i;const s=ee.current;(null!==(n=null==s||null===(i=s.getRanges)||void 0===i?void 0:i.call(s))&&void 0!==n?n:[]).forEach((n=>{const i=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey";n&&e.target.position&&e.event[i]&&n.containsPosition(e.target.position)&&V(t.getValueInRange(n))}))})),i=e.onMouseMove((function(e){const t=ee.current;t&&t.getRanges().forEach((n=>{const i=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey";if(n&&e.target.position&&e.event[i]&&n.containsPosition(e.target.position)){const e=t.getRanges().map((e=>({range:e,options:{inlineClassName:n.equalsRange(e)?"highlight pointer":"highlight"}})));t.set(e)}else if(!e.event[i]){const e=t.getRanges().map((e=>({range:e,options:{inlineClassName:"highlight"}})));t.set(e)}}))}));return()=>{null==i||i.dispose(),null==n||n.dispose()}}}),[K,V,ae,T]),(0,h.useEffect)((()=>{const e=te.current;if(!e||!Q.current||"fit-content"!==re.current)return;const t=e.onDidContentSizeChange((t=>{if(!X&&t.contentHeightChanged){const n=Tt(t.contentHeight,q,j);n!==ne.current.height&&(ne.current.height=n,e.layout(ne.current))}})),n=Tt(e.getContentHeight(),q,j);return n!==ne.current.height&&(ne.current.height=n,e.layout(ne.current)),()=>{t.dispose()}}),[j,q,X]);const ce=(0,h.useCallback)((async(e,t)=>{A.editor.setModelMarkers(e,"semantic_validate",[]);const n=e.findPreviousMatch("<%[~=]?",t,!0,!1,null,!1),i=e.findNextMatch("%>",t,!1,!1,null,!1),s=null==n?void 0:n.range,r=null==i?void 0:i.range;if(s&&r){const n=new A.Range(s.startLineNumber,s.endColumn,r.startLineNumber,r.startColumn),i=e.getValueInRange(n);if(n.containsPosition(t)&&!/<% | %>/.test(i)){const t=(0,B.AR)(e.uri);A.editor.getModel(t).setValue(i);const r=e.getOffsetAt(new A.Position(s.startLineNumber,s.endColumn));if(R.b.getInstance($).updateState({content:i,range:n,offset:r}),!D)return;const a=await A.languages.typescript.getJavaScriptWorker(),o=await a(t),l=(await o.getSemanticDiagnostics(t.toString())).map((t=>{var n;const i=r+(null!==(n=t.start)&&void 0!==n?n:0),s=e.getPositionAt(i);return{startLineNumber:s.lineNumber,startColumn:s.column,endLineNumber:s.lineNumber,endColumn:s.column+t.length,message:t.messageText,severity:A.MarkerSeverity.Warning}}));A.editor.setModelMarkers(e,"semantic_validate",l)}}}),[$]);(0,h.useEffect)((()=>{if(!te.current)return;const e=te.current.getModel(),t=e.onDidChangeContent((async t=>{(0,L.J)($),["brick_next_yaml"].includes(K)&&ce(e,te.current.getPosition()),t.isFlush||P(e.getValue())}));return()=>{t.dispose()}}),[P,$,K,ce]),(0,h.useEffect)((()=>{if(X){const e=t=>{"Escape"!==t.key&&"Esc"!==t.key||(window.removeEventListener("keydown",e),Z(!1))};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}}}),[X]),(0,h.useEffect)((()=>()=>{var e,t;null===(e=te.current)||void 0===e||null===(e=e.getModel())||void 0===e||e.dispose(),null===(t=te.current)||void 0===t||t.dispose()}),[]),(0,h.useEffect)((()=>{if(!te.current&&!M)return;const e=new O.j(M,te.current,le?"rgba(174,174,175,0.4)":"rgba(89,89,89,0.4)");return()=>{e.dispose()}}),[M,le]);const ue=(0,h.useCallback)((()=>{if(te.current){const e=te.current.getModel();rt(e.getValue()).then((()=>at({type:"success",message:G(_.K.COPY_SUCCESS)}))).catch((()=>at({type:"error",message:G(_.K.COPY_FAILED)})))}}),[G]),he=(0,h.useCallback)((()=>{Z(!X)}),[X]);return(0,h.useEffect)((()=>{const e=te.current;if(!e||"brick_next_yaml"!==K)return;let t=!1;const n=(0,x.debounce)((async()=>{var n;const i=await(0,I.K)();if(t)return;const{lintMarkers:s,lintDecorations:r}=await i.lint({source:e.getValue(),links:m,markers:u}),a=e.getModel();!t&&a&&(A.editor.setModelMarkers(a,"brick_next_yaml_lint",s.map((e=>{let{start:t,end:n,message:i,severity:s,code:r}=e;const o=a.getPositionAt(t),l=a.getPositionAt(n);return{startLineNumber:o.lineNumber,startColumn:o.column,endLineNumber:l.lineNumber,endColumn:l.column,severity:A.MarkerSeverity[s],message:i,code:r}}))),null===(n=ee.current)||void 0===n||n.set(r.map((e=>{let{start:t,end:n,options:i}=e;return{range:A.Range.fromPositions(a.getPositionAt(t),a.getPositionAt(n)),options:i}}))))}),200),i=e.onDidChangeModelContent(n);return n(),()=>{t=!0,i.dispose(),A.editor.setModelMarkers(e.getModel(),"brick_next_yaml_lint",[])}}),[K,m,u,T,$]),d().createElement("div",{className:z()("code-editor-wrapper",{expanded:X,error:"error"===C})},d().createElement("div",{ref:Q,style:{height:X?"100%":ie,overflow:X?"scroll":""}}),d().createElement("div",{className:"toolbar-wrapper"},d().createElement("div",{className:"toolbar sticky"},y&&d().createElement(it,{content:G(_.K.COPY)},d().createElement(st,{className:"copy-icon",icon:"copy",lib:"antd",theme:"outlined",onClick:ue})),v&&d().createElement(it,{content:G(X?_.K.COLLAPSE:_.K.EXPAND)},d().createElement(st,{className:"expand-icon",icon:X?"compress":"expand",lib:"antd",theme:"outlined",onClick:he})))))}function Kt(e,t,n){return qt(Math.min(n,Math.max(t,e.split("\n").length)))}function Tt(e,t,n){let i=e;return(e-E.Vu)%E.fE==0&&(i=e+E.lP),Math.min(qt(n),Math.max(i,qt(t)))}function qt(e){return e*E.fE+E.lP+E.Vu}i=Yt,({e:[K,T,q,j,U,J,X,Z,$,G,Q,ee,te,ne,ie,se,re,ae,oe,le,ce,ue,he,de,ge,me,pe,fe,ke,Ae,ve,ye,we,be,Me,Ce,xe,Ee,Se,Le,Be,Ne,We,_e,Pe,ze,Re,Oe,Ie,Ve,De,Fe,Ye,He,Ke,Te,qe,je,Ue,Je,Xe,Ze],c:[ot,H]}=(0,u.A)(i,[Qe("vs.code-editor",{shadowOptions:!1})],[[et(),1,"name"],[et(),1,"label"],[et(),1,"value"],[et(),1,"language"],[et(),1,"theme"],[et({type:Boolean}),1,"required"],[et({type:Boolean}),1,"readOnly"],[et(),1,"automaticLayout"],[et({type:Number}),1,"minLines"],[et({attribute:!1}),1,"completers"],[et({attribute:!1}),1,"advancedCompleters"],[et({attribute:!1}),1,"markers"],[et({attribute:!1}),1,"links"],[et({type:Number}),1,"maxLines"],[et({attribute:!1}),1,"height"],[et(),1,"message"],[et(),1,"placeholder"],[et({type:Boolean}),1,"showExpandButton"],[et(),1,"lineNumbers"],[et({attribute:!1}),1,"tokenConfig"],[et({type:Boolean}),1,"customValidationInBrickNextYaml"],[et({type:Boolean}),1,"showCopyButton"],[et({type:Boolean}),1,"glyphMargin"],[et({attribute:!1}),1,"extraLibs"],[et({type:Boolean}),1,"fixedOverflowWidgets"],[tt({type:"code.change"}),1,"codeChange",e=>(0,c.A)(Pt,e),(e,t)=>(0,l.A)(Pt,e,t)],[tt({type:"user.input"}),1,"userInput",e=>(0,c.A)(Rt,e),(e,t)=>(0,l.A)(Rt,e,t)],[tt({type:"token.click"}),1,"tokenClickEvent",e=>(0,c.A)(Vt,e),(e,t)=>(0,l.A)(Vt,e,t)]],0,(e=>Ft.has((0,a.A)(e))),k.N)),H()}}]);
|
|
2
|
-
//# sourceMappingURL=7242.978767ea.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/7242.978767ea.js","mappings":"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","sources":["webpack:///./src/code-editor/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\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 \"@next-core/theme\";\nimport { uniqueId, debounce } from \"lodash\";\nimport {\n EDITOR_SCROLLBAR_SIZE,\n EDITOR_PADDING_VERTICAL,\n EDITOR_LINE_HEIGHT,\n EDITOR_FONT_SIZE,\n} from \"./constants.js\";\nimport {\n AdvancedCompleterMap,\n ExtraLib,\n type MixedCompleter,\n} from \"./interfaces.js\";\nimport { brickNextYAMLProviderCompletionItems } from \"./utils/brickNextYaml.js\";\nimport { Level } from \"./utils/constants.js\";\nimport { setEditorId } from \"./utils/editorId.js\";\nimport {\n getEmbeddedJavascriptUri,\n getBrickYamlBuiltInDeclare,\n} from \"./utils/jsSuggestInBrickYaml.js\";\nimport { addExtraLibs } from \"./utils/addExtraLibs.js\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\nimport { EmbeddedModelContext } from \"./utils/embeddedModelState.js\";\nimport { PlaceholderContentWidget } from \"./widget/Placeholder.js\";\nimport { getRemoteYamlLinterWorker } from \"./workers/yamlLinter.js\";\nimport { register as registerCel } from \"./languages/cel.js\";\nimport { register as registerCelYaml } from \"./languages/cel-yaml.js\";\nimport { register as registerCelStr } from \"./languages/cel-str.js\";\nimport {\n provideEmbeddedCelCompletionItems,\n celCommonCompletionProviderFactory,\n celSpecificCompletionProviderFactory,\n} from \"./utils/celCompletionProvider.js\";\n\ninitializeReactI18n(NS, locales);\n\nregisterJavaScript(monaco);\nregisterTypeScript(monaco);\nregisterYaml(monaco, \"brick_next_yaml\");\nregisterHtml(monaco);\nregisterCel(monaco);\nregisterCelYaml(monaco);\nregisterCelStr(monaco);\n\nconst EMBEDDED_CEL = [\"cel_yaml\", \"cel_str\"];\nconst CEL_FAMILY = [\"cel\", ...EMBEDDED_CEL];\nfor (const lang of EMBEDDED_CEL) {\n monaco.languages.registerCompletionItemProvider(lang, {\n triggerCharacters: [\"<\"],\n provideCompletionItems: provideEmbeddedCelCompletionItems,\n });\n}\n\nfor (const lang of CEL_FAMILY) {\n monaco.languages.registerCompletionItemProvider(\n lang,\n celCommonCompletionProviderFactory(lang)\n );\n}\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nexport interface CodeEditorProps {\n name?: string;\n label?: string;\n value?: string;\n language?: string;\n theme?: string;\n placeholder?: 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 tokenConfig?: TokenConfig;\n advancedCompleters?: AdvancedCompleterMap | MixedCompleter[];\n extraLibs?: ExtraLib[];\n markers?: Marker[];\n links?: string[];\n showExpandButton?: boolean;\n showCopyButton?: boolean;\n lineNumbers?: monaco.editor.LineNumbersType;\n glyphMargin?: boolean;\n validateState?: string;\n customValidationInBrickNextYaml?: boolean;\n fixedOverflowWidgets?: boolean;\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\nexport type TokenConfig = {\n showDSKey?: boolean;\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()\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 /**\n * 仅对 language 为 brick_next_yaml 有效,设置第一层属性名的自动补全。\n */\n @property({\n attribute: false,\n })\n accessor completers: monaco.languages.CompletionItem[] | undefined;\n\n /**\n * 高级自动补全配置。\n * - 设置为键值对时,仅对 language 为 brick_next_yaml 有效,设置任意的自动补全;\n * - 设置为数组时,当前仅对 language 为 cel 有效。\n * 未来将统一改为数组格式,废弃键值对格式的配置。\n */\n @property({\n attribute: false,\n })\n accessor advancedCompleters:\n | AdvancedCompleterMap\n | MixedCompleter[]\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 @property()\n accessor placeholder: string | undefined;\n\n /**\n * 是否展示展开按钮\n */\n @property({ type: Boolean })\n accessor showExpandButton: boolean | undefined;\n\n /**\n * 行数配置\n */\n @property()\n accessor lineNumbers: monaco.editor.LineNumbersType | undefined;\n\n /**\n * 自定义高亮配置\n */\n @property({\n attribute: false,\n })\n accessor tokenConfig: TokenConfig | undefined;\n\n /**\n * 在 brick_next_yaml 中是否开启语义相关校验\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor customValidationInBrickNextYaml: boolean | undefined;\n\n /**\n * 是否展示复制按钮\n * @default true\n */\n @property({ type: Boolean })\n accessor showCopyButton: boolean | undefined;\n\n /**\n * 显示字形边距\n * @default false\n */\n @property({ type: Boolean })\n accessor glyphMargin: boolean | undefined;\n\n /**\n * @description 额外声明的 lib 库\n */\n @property({\n attribute: false,\n })\n accessor extraLibs: ExtraLib[] | undefined;\n\n /**\n * @default true\n */\n @property({ type: Boolean })\n accessor fixedOverflowWidgets: boolean | undefined;\n\n @event({ type: \"code.change\" })\n accessor #codeChange!: EventEmitter<string>;\n\n @event({ type: \"user.input\" })\n accessor #userInput!: EventEmitter<any>;\n\n #handleChange = (value: string) => {\n this.value = value;\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.#codeChange.emit(value);\n };\n\n #handleUserInput = (value: any) => {\n this.#userInput.emit(value);\n };\n\n @event({ type: \"token.click\" })\n accessor #tokenClickEvent!: EventEmitter<string>;\n\n #handleTokenClick = (word: string) => {\n this.#tokenClickEvent.emit(word);\n };\n\n #handleValidator = (value: string) => {\n if (this.language === \"brick_next_yaml\" || this.language === \"yaml\") {\n try {\n yaml.load(value);\n } catch {\n return \"请填写正确的格式\";\n }\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 exportparts=\"message\"\n curElement={this}\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n helpBrick={this.helpBrick}\n labelBrick={this.labelBrick}\n notRender={this.notRender}\n validator={this.#handleValidator}\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 extraLibs={this.extraLibs}\n markers={this.markers}\n links={this.links}\n tokenConfig={this.tokenConfig}\n lineNumbers={this.lineNumbers}\n glyphMargin={this.glyphMargin}\n placeholder={this.placeholder}\n showCopyButton={this.showCopyButton}\n showExpandButton={this.showExpandButton}\n validateState={this.validateState}\n onChange={this.#handleChange}\n onUserInput={this.#handleUserInput}\n onTokenClick={this.#handleTokenClick}\n customValidationInBrickNextYaml={this.customValidationInBrickNextYaml}\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 extraLibs,\n tokenConfig,\n showExpandButton,\n showCopyButton = true,\n lineNumbers = \"on\",\n glyphMargin = false,\n placeholder,\n validateState,\n onChange,\n // onUserInput,\n onTokenClick,\n customValidationInBrickNextYaml,\n fixedOverflowWidgets: _fixedOverflowWidgets,\n}: CodeEditorProps & {\n onChange(value: string): void;\n onUserInput: (value: any) => void;\n onTokenClick(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 const fixedOverflowWidgets = _fixedOverflowWidgets ?? true;\n const [expanded, setExpanded] = useState(false);\n const workerId = useMemo(() => uniqueId(\"worker\"), []);\n\n const { t } = useTranslation(NS);\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 const computedTheme =\n theme === \"auto\"\n ? systemTheme === \"dark\" || systemTheme === \"dark-v2\"\n ? \"vs-dark\"\n : \"vs\"\n : theme;\n const isDarkTheme =\n computedTheme === \"vs-dark\" || computedTheme === \"hc-black\";\n\n useEffect(() => {\n const lineHighlightBackground = isDarkTheme ? \"#FFFFFF0F\" : \"#0000000A\";\n monaco.editor.defineTheme(\"custom-theme\", {\n base: computedTheme as \"vs-dark\" | \"vs\",\n inherit: true,\n rules: [],\n colors: {\n \"editor.lineHighlightBackground\": `${lineHighlightBackground}`,\n },\n });\n // Currently theme is configured globally.\n // See https://github.com/microsoft/monaco-editor/issues/338\n monaco.editor.setTheme(\"custom-theme\");\n }, [computedTheme, isDarkTheme]);\n\n useEffect(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n monaco.editor.setModelLanguage(currentModel, language);\n }\n }, [language]);\n\n useEffect(() => {\n if (language === \"brick_next_yaml\") {\n const provideCompletionItems = brickNextYAMLProviderCompletionItems(\n completers,\n Array.isArray(advancedCompleters) ? undefined : advancedCompleters,\n workerId,\n tokenConfig\n );\n const monacoProviderRef = monaco.languages.registerCompletionItemProvider(\n \"brick_next_yaml\",\n {\n provideCompletionItems,\n triggerCharacters: [\".\", \":\", \"<\"],\n } as monaco.languages.CompletionItemProvider\n );\n return () => {\n monacoProviderRef.dispose();\n };\n }\n }, [completers, advancedCompleters, language, workerId, tokenConfig]);\n\n useEffect(() => {\n if (\n Array.isArray(advancedCompleters) &&\n advancedCompleters.length > 0 &&\n CEL_FAMILY.includes(language)\n ) {\n const disposable = monaco.languages.registerCompletionItemProvider(\n language,\n celSpecificCompletionProviderFactory(\n language,\n workerId,\n advancedCompleters\n )\n );\n return () => {\n disposable.dispose();\n };\n }\n }, [language, advancedCompleters, workerId]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (editor) {\n const currentModel = editor.getModel();\n if (currentModel?.getValue && value !== currentModel.getValue()) {\n currentModel.setValue(value as string);\n }\n }\n }, [value]);\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 // istanbul ignore next: compatibility\n const newWidth = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].inlineSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .inlineSize\n : entry.contentRect.width;\n // istanbul ignore next: compatibility\n const newHeight = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].blockSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .blockSize\n : entry.contentRect.height;\n if (newWidth !== size.current.width || expanded) {\n size.current.width = newWidth;\n editorRef.current?.layout({\n width: newWidth,\n height: expanded ? newHeight : size.current.height,\n });\n }\n break;\n }\n }\n });\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [expanded]);\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 lineNumbersMinChars: expanded ? 5 : 3,\n });\n }, [readOnly, expanded]);\n\n useEffect(() => {\n if (editorRef.current || !containerRef.current) {\n return;\n }\n const model = monaco.editor.createModel(value, language);\n if (language === \"brick_next_yaml\") {\n // 注册嵌套的 model, language 为 js\n const uri = getEmbeddedJavascriptUri(model.uri);\n monaco.editor.createModel(value, \"javascript\", uri);\n monaco.languages.typescript.javascriptDefaults.addExtraLib(\n getBrickYamlBuiltInDeclare(),\n model.uri.toString() + \"d.ts\"\n );\n }\n\n editorRef.current = monaco.editor.create(containerRef.current, {\n extraEditorClassName: \"monaco-editor-v3\",\n model,\n minimap: {\n enabled: false,\n showRegionSectionHeaders: false,\n showMarkSectionHeaders: 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 fixedOverflowWidgets,\n lineNumbers: lineNumbers,\n lineNumbersMinChars: 3,\n glyphMargin,\n folding: lineNumbers !== \"off\",\n suggest: {\n insertMode: \"insert\",\n preview: true,\n },\n readOnly: readOnly,\n quickSuggestions: { strings: true, other: true, comments: true },\n renderLineHighlightOnlyWhenFocus: true,\n unicodeHighlight: {\n ambiguousCharacters: false,\n },\n });\n\n decorationsCollection.current =\n editorRef.current.createDecorationsCollection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const libs: ExtraLib[] = extraLibs ?? [];\n\n const languageDefaults =\n language === \"typescript\" ? \"typescriptDefaults\" : \"javascriptDefaults\";\n const disposables = addExtraLibs(libs, {\n languageDefaults,\n });\n return () => {\n for (const item of disposables) {\n item.dispose();\n }\n };\n }, [extraLibs, language]);\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 onTokenClick(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 return () => {\n mouseOverEvent?.dispose();\n editorMouseDownEvent?.dispose();\n };\n }\n }, [language, onTokenClick, systemTheme, theme]);\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 (expanded) return;\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, expanded]);\n\n // istanbul ignore next\n const embeddedModelProcessor = useCallback(\n async (model: monaco.editor.IModel, position: monaco.Position) => {\n monaco.editor.setModelMarkers(model, \"semantic_validate\", []);\n\n const prefixEvaluateOperator = model.findPreviousMatch(\n \"<%[~=]?\",\n position,\n true,\n false,\n null,\n false\n );\n\n const suffixEvaluateOperator = model.findNextMatch(\n \"%>\",\n position,\n false,\n false,\n null,\n false\n );\n\n const prefixEvaluateRange = prefixEvaluateOperator?.range;\n const suffixEvaluateRange = suffixEvaluateOperator?.range;\n\n if (prefixEvaluateRange && suffixEvaluateRange) {\n const range = new monaco.Range(\n prefixEvaluateRange.startLineNumber,\n prefixEvaluateRange.endColumn,\n suffixEvaluateRange.startLineNumber,\n suffixEvaluateRange.startColumn\n );\n\n const content = model.getValueInRange(range);\n if (range.containsPosition(position!) && !/<% | %>/.test(content)) {\n const newUri = getEmbeddedJavascriptUri(model.uri);\n const embeddedModel = monaco.editor.getModel(newUri);\n\n embeddedModel!.setValue(content);\n const offset = model.getOffsetAt(\n new monaco.Position(\n prefixEvaluateRange.startLineNumber,\n prefixEvaluateRange.endColumn\n )\n );\n\n const embeddedContext = EmbeddedModelContext.getInstance(workerId);\n\n embeddedContext.updateState({ content, range, offset });\n\n if (!customValidationInBrickNextYaml) return;\n\n const getWorker =\n await monaco.languages.typescript.getJavaScriptWorker();\n\n const worker = await getWorker(newUri);\n\n const diagnostics = await worker.getSemanticDiagnostics(\n newUri.toString()\n );\n\n const semanticMarkers = diagnostics.map((item) => {\n const finalOffset = offset + (item.start ?? 0);\n const currentPosition = model.getPositionAt(finalOffset);\n\n return {\n startLineNumber: currentPosition.lineNumber,\n startColumn: currentPosition.column,\n endLineNumber: currentPosition.lineNumber,\n endColumn: currentPosition.column + item.length!,\n message: item.messageText as string,\n severity: monaco.MarkerSeverity.Warning,\n };\n });\n\n monaco.editor.setModelMarkers(\n model,\n \"semantic_validate\",\n semanticMarkers\n );\n }\n }\n },\n [workerId]\n );\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n const currentModel = editorRef.current.getModel()!;\n const listener = currentModel.onDidChangeContent(async (e) => {\n setEditorId(workerId);\n\n if ([\"brick_next_yaml\"].includes(language)) {\n embeddedModelProcessor(currentModel, editorRef.current!.getPosition()!);\n // debounceParse();\n }\n if (!e.isFlush) {\n onChange(currentModel.getValue());\n }\n });\n return () => {\n listener.dispose();\n };\n }, [\n /* debounceParse, */ onChange,\n workerId,\n language,\n embeddedModelProcessor,\n ]);\n\n useEffect(() => {\n if (expanded) {\n const fn = (e: KeyboardEvent): void => {\n if (e.key === \"Escape\" || e.key === \"Esc\") {\n window.removeEventListener(\"keydown\", fn);\n setExpanded(false);\n }\n };\n window.addEventListener(\"keydown\", fn);\n return () => {\n window.removeEventListener(\"keydown\", fn);\n };\n }\n }, [expanded]);\n\n useEffect(() => {\n return () => {\n editorRef.current?.getModel()?.dispose();\n editorRef.current?.dispose();\n };\n }, []);\n\n useEffect(() => {\n if (!editorRef.current && !placeholder) return;\n const placeholderWidget = new PlaceholderContentWidget(\n placeholder!,\n editorRef.current!,\n isDarkTheme ? \"rgba(174,174,175,0.4)\" : \"rgba(89,89,89,0.4)\"\n );\n\n return () => {\n placeholderWidget.dispose();\n };\n }, [placeholder, isDarkTheme]);\n\n const handleCopyIconClick = useCallback(() => {\n if (editorRef.current) {\n const currentModel = editorRef.current.getModel()!;\n copyToClipboard(currentModel.getValue())\n .then(() =>\n showNotification({ type: \"success\", message: t(K.COPY_SUCCESS) })\n )\n .catch(() =>\n showNotification({ type: \"error\", message: t(K.COPY_FAILED) })\n );\n }\n }, [t]);\n\n const handleExpandedClick = useCallback(() => {\n setExpanded(!expanded);\n }, [expanded]);\n\n // istanbul ignore next\n useEffect(() => {\n const editor = editorRef.current;\n if (!(editor && language === \"brick_next_yaml\")) {\n return;\n }\n\n let ignore = false;\n const handleChange = async () => {\n const worker = await getRemoteYamlLinterWorker();\n if (ignore) {\n return;\n }\n const { lintMarkers, lintDecorations } = await worker.lint({\n source: editor.getValue(),\n links,\n markers,\n });\n const model = editor.getModel();\n if (ignore || !model) {\n return;\n }\n monaco.editor.setModelMarkers(\n model,\n \"brick_next_yaml_lint\",\n lintMarkers.map(({ start, end, message, severity, code }) => {\n const startPos = model.getPositionAt(start);\n const endPos = model.getPositionAt(end);\n return {\n startLineNumber: startPos.lineNumber,\n startColumn: startPos.column,\n endLineNumber: endPos.lineNumber,\n endColumn: endPos.column,\n severity: monaco.MarkerSeverity[severity],\n message,\n code: code as monaco.editor.IMarkerData[\"code\"],\n };\n })\n );\n decorationsCollection.current?.set(\n lintDecorations.map(({ start, end, options }) => ({\n range: monaco.Range.fromPositions(\n model.getPositionAt(start),\n model.getPositionAt(end)\n ),\n options,\n }))\n );\n };\n const debounceChange = debounce(handleChange, 200);\n const change = editor.onDidChangeModelContent(debounceChange);\n debounceChange();\n\n return () => {\n ignore = true;\n change.dispose();\n monaco.editor.setModelMarkers(\n editor.getModel()!,\n \"brick_next_yaml_lint\",\n []\n );\n };\n }, [language, links, markers, theme, workerId]);\n\n return (\n <div\n className={classNames(\"code-editor-wrapper\", {\n expanded,\n error: validateState === \"error\",\n })}\n >\n <div\n ref={containerRef}\n style={{\n height: expanded ? \"100%\" : actualHeight,\n overflow: expanded ? \"scroll\" : \"\",\n }}\n />\n <div className=\"toolbar-wrapper\">\n <div className=\"toolbar sticky\">\n {showCopyButton && (\n <WrappedTooltip content={t(K.COPY) as string}>\n <WrappedIcon\n className=\"copy-icon\"\n icon=\"copy\"\n lib=\"antd\"\n theme=\"outlined\"\n onClick={handleCopyIconClick}\n />\n </WrappedTooltip>\n )}\n {showExpandButton && (\n <WrappedTooltip\n content={(expanded ? t(K.COLLAPSE) : t(K.EXPAND)) as string}\n >\n <WrappedIcon\n className=\"expand-icon\"\n icon={expanded ? \"compress\" : \"expand\"}\n lib=\"antd\"\n theme=\"outlined\"\n onClick={handleExpandedClick}\n />\n </WrappedTooltip>\n )}\n </div>\n </div>\n </div>\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":["initializeReactI18n","NS","locales","registerJavaScript","monaco","registerTypeScript","registerYaml","registerHtml","registerCel","registerCelYaml","registerCelStr","EMBEDDED_CEL","CEL_FAMILY","lang","registerCompletionItemProvider","triggerCharacters","provideCompletionItems","provideEmbeddedCelCompletionItems","celCommonCompletionProviderFactory","defineElement","property","event","createDecorators","WrappedFormItem","wrapBrick","WrappedTooltip","WrappedIcon","copyToClipboard","unwrapProvider","showNotification","_CodeEditor","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","_CodeEditor_brand","WeakSet","_a","_handleChange","_handleUserInput","_b","_handleTokenClick","_handleValidator","CodeEditor","FormItemElementBase","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_name","_init_extra_name","_init_label","_init_extra_label","_init_value","_init_extra_value","_init_language","_init_extra_language","_init_theme","_init_extra_theme","_init_required","_init_extra_required","_init_readOnly","_init_extra_readOnly","_init_automaticLayout","_init_extra_automaticLayout","_init_minLines","_init_extra_minLines","_init_completers","_init_extra_completers","_init_advancedCompleters","_init_extra_advancedCompleters","_init_markers","_init_extra_markers","_init_links","_init_extra_links","_init_maxLines","_init_extra_maxLines","_init_height","_init_extra_height","_init_message","_init_extra_message","_init_placeholder","_init_extra_placeholder","_init_showExpandButton","_init_extra_showExpandButton","_init_lineNumbers","_init_extra_lineNumbers","_init_tokenConfig","_init_extra_tokenConfig","_init_customValidationInBrickNextYaml","_init_extra_customValidationInBrickNextYaml","_init_showCopyButton","_init_extra_showCopyButton","_init_glyphMargin","_init_extra_glyphMargin","_init_extraLibs","_init_extra_extraLibs","_init_fixedOverflowWidgets","_init_extra_fixedOverflowWidgets","_init_codeChange","_init_extra_codeChange","_init_userInput","_init_extra_userInput","value","_this$getFormElement","this","getFormElement","formStore","onChange","name","_classPrivateGetter","_get_codeChange","emit","_get_userInput","_init_tokenClickEvent","_init_extra_tokenClickEvent","word","_get_tokenClickEvent","language","yaml","_classPrivateFieldGet","v","_classPrivateFieldSet","label","theme","required","readOnly","automaticLayout","minLines","completers","advancedCompleters","markers","links","maxLines","height","message","placeholder","showExpandButton","lineNumbers","tokenConfig","customValidationInBrickNextYaml","showCopyButton","glyphMargin","extraLibs","fixedOverflowWidgets","connectedCallback","style","display","super","render","React","exportparts","curElement","formElement","helpBrick","labelBrick","notRender","validator","CodeEditorComponent","validateState","onUserInput","onTokenClick","_ref","_value","_language","_theme","_minLines","_maxLines","_height","_fixedOverflowWidgets","Infinity","expanded","setExpanded","useState","workerId","useMemo","uniqueId","t","useTranslation","containerRef","useRef","decorationsCollection","editorRef","size","width","getContentHeightByCode","actualHeight","setActualHeight","automaticLayoutRef","systemTheme","useCurrentTheme","computedTheme","isDarkTheme","useEffect","lineHighlightBackground","defineTheme","base","inherit","rules","colors","setTheme","current","currentModel","getModel","setModelLanguage","brickNextYAMLProviderCompletionItems","Array","isArray","undefined","monacoProviderRef","dispose","length","includes","disposable","celSpecificCompletionProviderFactory","editor","getValue","setValue","useLayoutEffect","_editorRef$current","getBoundingClientRect","layout","observer","ResizeObserver","entries","entry","target","newWidth","contentBoxSize","inlineSize","contentRect","newHeight","blockSize","_editorRef$current2","observe","disconnect","container","element","brick","found","tagName","toLowerCase","parentElement","getDOMContainer","offsetHeight","updateOptions","lineNumbersMinChars","model","createModel","uri","getEmbeddedJavascriptUri","typescript","javascriptDefaults","addExtraLib","getBrickYamlBuiltInDeclare","toString","create","extraEditorClassName","minimap","enabled","showRegionSectionHeaders","showMarkSectionHeaders","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","folding","suggest","insertMode","preview","quickSuggestions","strings","other","comments","renderLineHighlightOnlyWhenFocus","unicodeHighlight","ambiguousCharacters","createDecorationsCollection","libs","languageDefaults","disposables","addExtraLibs","item","editorMouseDownEvent","onMouseDown","e","_decorations$getRange","_decorations$getRange2","decorations","getRanges","call","forEach","range","modKey","test","navigator","platform","position","containsPosition","getValueInRange","mouseOverEvent","onMouseMove","newDecorations","map","options","inlineClassName","equalsRange","set","listener","onDidContentSizeChange","contentHeightChanged","fixEditorHeightWithScrollBar","contentHeight","getContentHeight","embeddedModelProcessor","useCallback","async","setModelMarkers","prefixEvaluateOperator","findPreviousMatch","suffixEvaluateOperator","findNextMatch","prefixEvaluateRange","suffixEvaluateRange","startLineNumber","endColumn","startColumn","content","newUri","offset","getOffsetAt","EmbeddedModelContext","getInstance","updateState","getWorker","getJavaScriptWorker","worker","semanticMarkers","getSemanticDiagnostics","_item$start","finalOffset","start","currentPosition","getPositionAt","lineNumber","column","endLineNumber","messageText","severity","Warning","onDidChangeContent","setEditorId","getPosition","isFlush","fn","key","window","removeEventListener","addEventListener","_editorRef$current3","_editorRef$current4","placeholderWidget","PlaceholderContentWidget","handleCopyIconClick","then","type","K","COPY_SUCCESS","catch","COPY_FAILED","handleExpandedClick","ignore","debounceChange","debounce","_decorationsCollectio","getRemoteYamlLinterWorker","lintMarkers","lintDecorations","lint","source","_ref2","end","code","startPos","endPos","_ref3","fromPositions","change","onDidChangeModelContent","className","classNames","error","ref","overflow","COPY","icon","lib","onClick","COLLAPSE","EXPAND","getContentHeightByLines","Math","min","max","split","fixedHeight","lines","_CodeEditor2","_set_codeChange","_set_userInput","_set_tokenClickEvent","c","_initClass","_applyDecs","shadowOptions","Boolean","Number","attribute","o","_","has","_checkInRHS"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_vs=globalThis.webpackChunk_next_bricks_vs||[]).push([[3722],{2580:(e,t,n)=>{n.r(t),n.d(t,{CodeEditor:()=>ot,CodeEditorComponent:()=>Ht});var i,s=n(4635),r=n(918),a=n(6902),o=n(5536),l=n(6121),c=n(829),u=n(2740),h=n(8769),d=n.n(h),g=n(6192),m=n(2304),p=n(9859),f=n(8792),k=n(426),A=n(2329),v=n(6197),y=n(3909),w=n(2257),b=n(3135),M=n(5310),C=n.n(M),x=(n(6477),n(563)),E=n(7137),S=n(4046),L=n(4804),B=n(4102),N=n(9287),W=n(9704),_=n(8182),P=n(3373),z=n.n(P),R=(n(3569),n(1968)),O=n(1836),I=n(5087),V=n(896),D=n(2066),F=n(8546),Y=n(6984);let H,K,T,q,j,U,J,X,Z,$,G,Q,ee,te,ne,ie,se,re,ae,oe,le,ce,ue,he,de,ge,me,pe,fe,ke,Ae,ve,ye,we,be,Me,Ce,xe,Ee,Se,Le,Be,Ne,We,_e,Pe,ze,Re,Oe,Ie,Ve,De,Fe,Ye,He,Ke,Te,qe,je,Ue,Je,Xe,Ze;(0,W.initializeReactI18n)(_.NS,_.I),(0,v.kz)(A),(0,y.kz)(A),(0,w.kz)(A,"brick_next_yaml"),(0,b.kz)(A),(0,V.kz)(A),(0,D.kz)(A),(0,F.kz)(A);const $e=["cel_yaml","cel_str"],Ge=["cel",...$e];for(const e of $e)A.languages.registerCompletionItemProvider(e,{triggerCharacters:["<"],provideCompletionItems:Y.ix});for(const e of Ge)A.languages.registerCompletionItemProvider(e,(0,Y.ZY)(e));const{defineElement:Qe,property:et,event:tt}=(0,g.createDecorators)(),nt=(0,p.wrapBrick)("eo-form-item"),it=(0,p.wrapBrick)("eo-tooltip"),st=(0,p.wrapBrick)("eo-icon"),rt=(0,m.unwrapProvider)("basic.copy-to-clipboard"),at=(0,m.unwrapProvider)("basic.show-notification");let ot;var lt=new WeakMap,ct=new WeakMap,ut=new WeakMap,ht=new WeakMap,dt=new WeakMap,gt=new WeakMap,mt=new WeakMap,pt=new WeakMap,ft=new WeakMap,kt=new WeakMap,At=new WeakMap,vt=new WeakMap,yt=new WeakMap,wt=new WeakMap,bt=new WeakMap,Mt=new WeakMap,Ct=new WeakMap,xt=new WeakMap,Et=new WeakMap,St=new WeakMap,Lt=new WeakMap,Bt=new WeakMap,Nt=new WeakMap,Wt=new WeakMap,_t=new WeakMap,Pt=new WeakMap,zt=new WeakSet,Rt=new WeakMap,Ot=new WeakMap,It=new WeakMap,Vt=new WeakMap,Dt=new WeakMap,Ft=new WeakMap;class Yt extends k.N{constructor(){super(...arguments),(0,s.A)(this,zt),(0,r.A)(this,lt,K(this)),(0,r.A)(this,ct,(T(this),q(this))),(0,r.A)(this,ut,(j(this),U(this))),(0,r.A)(this,ht,(J(this),X(this))),(0,r.A)(this,dt,(Z(this),$(this))),(0,r.A)(this,gt,(G(this),Q(this))),(0,r.A)(this,mt,(ee(this),te(this))),(0,r.A)(this,pt,(ne(this),ie(this))),(0,r.A)(this,ft,(se(this),re(this))),(0,r.A)(this,kt,(ae(this),oe(this))),(0,r.A)(this,At,(le(this),ce(this))),(0,r.A)(this,vt,(ue(this),he(this))),(0,r.A)(this,yt,(de(this),ge(this))),(0,r.A)(this,wt,(me(this),pe(this))),(0,r.A)(this,bt,(fe(this),ke(this))),(0,r.A)(this,Mt,(Ae(this),ve(this))),(0,r.A)(this,Ct,(ye(this),we(this))),(0,r.A)(this,xt,(be(this),Me(this))),(0,r.A)(this,Et,(Ce(this),xe(this))),(0,r.A)(this,St,(Ee(this),Se(this))),(0,r.A)(this,Lt,(Le(this),Be(this))),(0,r.A)(this,Bt,(Ne(this),We(this))),(0,r.A)(this,Nt,(_e(this),Pe(this))),(0,r.A)(this,Wt,(ze(this),Re(this))),(0,r.A)(this,_t,(Oe(this),Ie(this))),(0,r.A)(this,Pt,(Ve(this),De(this))),(0,r.A)(this,Rt,(He(this),Ke(this))),(0,r.A)(this,Ot,(je(this),e=>{var t;this.value=e,null===(t=this.getFormElement())||void 0===t||t.formStore.onChange(this.name,e),(0,o.A)(zt,this,Fe).emit(e)})),(0,r.A)(this,It,(e=>{(0,o.A)(zt,this,Te).emit(e)})),(0,r.A)(this,Vt,Ue(this)),(0,r.A)(this,Dt,(Ze(this),e=>{(0,o.A)(zt,this,Je).emit(e)})),(0,r.A)(this,Ft,(e=>{if("brick_next_yaml"===this.language||"yaml"===this.language)try{C().load(e)}catch{return"请填写正确的格式"}return""}))}get name(){return(0,c.A)(lt,this)}set name(e){(0,l.A)(lt,this,e)}get label(){return(0,c.A)(ct,this)}set label(e){(0,l.A)(ct,this,e)}get value(){return(0,c.A)(ut,this)}set value(e){(0,l.A)(ut,this,e)}get language(){return(0,c.A)(ht,this)}set language(e){(0,l.A)(ht,this,e)}get theme(){return(0,c.A)(dt,this)}set theme(e){(0,l.A)(dt,this,e)}get required(){return(0,c.A)(gt,this)}set required(e){(0,l.A)(gt,this,e)}get readOnly(){return(0,c.A)(mt,this)}set readOnly(e){(0,l.A)(mt,this,e)}get automaticLayout(){return(0,c.A)(pt,this)}set automaticLayout(e){(0,l.A)(pt,this,e)}get minLines(){return(0,c.A)(ft,this)}set minLines(e){(0,l.A)(ft,this,e)}get completers(){return(0,c.A)(kt,this)}set completers(e){(0,l.A)(kt,this,e)}get advancedCompleters(){return(0,c.A)(At,this)}set advancedCompleters(e){(0,l.A)(At,this,e)}get markers(){return(0,c.A)(vt,this)}set markers(e){(0,l.A)(vt,this,e)}get links(){return(0,c.A)(yt,this)}set links(e){(0,l.A)(yt,this,e)}get maxLines(){return(0,c.A)(wt,this)}set maxLines(e){(0,l.A)(wt,this,e)}get height(){return(0,c.A)(bt,this)}set height(e){(0,l.A)(bt,this,e)}get message(){return(0,c.A)(Mt,this)}set message(e){(0,l.A)(Mt,this,e)}get placeholder(){return(0,c.A)(Ct,this)}set placeholder(e){(0,l.A)(Ct,this,e)}get showExpandButton(){return(0,c.A)(xt,this)}set showExpandButton(e){(0,l.A)(xt,this,e)}get lineNumbers(){return(0,c.A)(Et,this)}set lineNumbers(e){(0,l.A)(Et,this,e)}get tokenConfig(){return(0,c.A)(St,this)}set tokenConfig(e){(0,l.A)(St,this,e)}get customValidationInBrickNextYaml(){return(0,c.A)(Lt,this)}set customValidationInBrickNextYaml(e){(0,l.A)(Lt,this,e)}get showCopyButton(){return(0,c.A)(Bt,this)}set showCopyButton(e){(0,l.A)(Bt,this,e)}get glyphMargin(){return(0,c.A)(Nt,this)}set glyphMargin(e){(0,l.A)(Nt,this,e)}get extraLibs(){return(0,c.A)(Wt,this)}set extraLibs(e){(0,l.A)(Wt,this,e)}get fixedOverflowWidgets(){return(0,c.A)(_t,this)}set fixedOverflowWidgets(e){(0,l.A)(_t,this,e)}connectedCallback(){this.style.display||(this.style.display="block"),super.connectedCallback()}render(){return d().createElement(nt,{exportparts:"message",curElement:this,formElement:this.getFormElement(),name:this.name,label:this.label,required:this.required,helpBrick:this.helpBrick,labelBrick:this.labelBrick,notRender:this.notRender,validator:(0,c.A)(Ft,this)},d().createElement(Ht,{value:this.value,language:this.language,readOnly:this.readOnly,theme:this.theme,automaticLayout:this.automaticLayout,minLines:this.minLines,maxLines:this.maxLines,height:this.height,completers:this.completers,advancedCompleters:this.advancedCompleters,extraLibs:this.extraLibs,markers:this.markers,links:this.links,tokenConfig:this.tokenConfig,lineNumbers:this.lineNumbers,glyphMargin:this.glyphMargin,placeholder:this.placeholder,showCopyButton:this.showCopyButton,showExpandButton:this.showExpandButton,validateState:this.validateState,onChange:(0,c.A)(Ot,this),onUserInput:(0,c.A)(It,this),onTokenClick:(0,c.A)(Dt,this),customValidationInBrickNextYaml:this.customValidationInBrickNextYaml}))}}function Ht(e){let{value:t,language:n,theme:i,minLines:s,maxLines:r,height:a,automaticLayout:o,completers:l,advancedCompleters:c,markers:u,readOnly:g,links:m,extraLibs:p,tokenConfig:k,showExpandButton:v,showCopyButton:y=!0,lineNumbers:w="on",glyphMargin:b=!1,placeholder:M,validateState:C,onChange:P,onTokenClick:V,customValidationInBrickNextYaml:D,fixedOverflowWidgets:F}=e;const H=null!=t?t:"",K=null!=n?n:"plaintext",T=null!=i?i:"auto",q=null!=s?s:3,j=null!=r?r:1/0,U=null!=a?a:500,J=null==F||F,[X,Z]=(0,h.useState)(!1),$=(0,h.useMemo)((()=>(0,x.uniqueId)("worker")),[]),{t:G}=(0,W.useTranslation)(_.NS),Q=(0,h.useRef)(null),ee=(0,h.useRef)(),te=(0,h.useRef)(),ne=(0,h.useRef)({width:300,height:Kt(H,q,j)}),[ie,se]=(0,h.useState)(),re=(0,h.useRef)(o),ae=(0,f.useCurrentTheme)(),oe="auto"===T?"dark"===ae||"dark-v2"===ae?"vs-dark":"vs":T,le="vs-dark"===oe||"hc-black"===oe;(0,h.useEffect)((()=>{const e=le?"#FFFFFF0F":"#0000000A";A.editor.defineTheme("custom-theme",{base:oe,inherit:!0,rules:[],colors:{"editor.lineHighlightBackground":`${e}`}}),A.editor.setTheme("custom-theme")}),[oe,le]),(0,h.useEffect)((()=>{if(te.current){const e=te.current.getModel();A.editor.setModelLanguage(e,K)}}),[K]),(0,h.useEffect)((()=>{if("brick_next_yaml"===K){const e=(0,S.v)(l,Array.isArray(c)?void 0:c,$,k),t=A.languages.registerCompletionItemProvider("brick_next_yaml",{provideCompletionItems:e,triggerCharacters:[".",":","<"]});return()=>{t.dispose()}}}),[l,c,K,$,k]),(0,h.useEffect)((()=>{if(Array.isArray(c)&&c.length>0&&Ge.includes(K)){const e=A.languages.registerCompletionItemProvider(K,(0,Y.MY)(K,$,c));return()=>{e.dispose()}}}),[K,c,$]),(0,h.useEffect)((()=>{const e=te.current;if(e){const t=e.getModel();null!=t&&t.getValue&&H!==t.getValue()&&t.setValue(H)}}),[H]),(0,h.useLayoutEffect)((()=>{var e;if("fit-content"!==re.current||!Q.current)return;ne.current.width=Q.current.getBoundingClientRect().width,null===(e=te.current)||void 0===e||e.layout(ne.current);const t=new ResizeObserver((e=>{for(const n of e)if(n.target===Q.current){const e=n.contentBoxSize?n.contentBoxSize[0]?n.contentBoxSize[0].inlineSize:n.contentBoxSize.inlineSize:n.contentRect.width,i=n.contentBoxSize?n.contentBoxSize[0]?n.contentBoxSize[0].blockSize:n.contentBoxSize.blockSize:n.contentRect.height;var t;(e!==ne.current.width||X)&&(ne.current.width=e,null===(t=te.current)||void 0===t||t.layout({width:e,height:X?i:ne.current.height}));break}}));return t.observe(Q.current),()=>{t.disconnect()}}),[X]),(0,h.useLayoutEffect)((()=>{if("fit-container"!==re.current)return;const e=function(e){let t=e;for(;t;){const e="vs.code-editor"===t.tagName.toLowerCase();if(t=t.parentElement,e)return t}}(Q.current);if(!e)return;const t=new ResizeObserver((()=>{se(e.offsetHeight)}));return t.observe(e),()=>{t.disconnect()}}),[]),(0,h.useEffect)((()=>{"fit-container"!==re.current&&"fit-content"!==re.current&&se(U)}),[U]),(0,h.useEffect)((()=>{te.current&&te.current.updateOptions({readOnly:g,lineNumbersMinChars:X?5:3})}),[g,X]),(0,h.useEffect)((()=>{if(te.current||!Q.current)return;const e=A.editor.createModel(H,K);if("brick_next_yaml"===K){const t=(0,B.AR)(e.uri);A.editor.createModel(H,"javascript",t),A.languages.typescript.javascriptDefaults.addExtraLib((0,B.Eh)(),e.uri.toString()+"d.ts")}te.current=A.editor.create(Q.current,{extraEditorClassName:"monaco-editor-v3",model:e,minimap:{enabled:!1,showRegionSectionHeaders:!1,showMarkSectionHeaders:!1},scrollBeyondLastLine:!1,tabSize:2,insertSpaces:!0,automaticLayout:"fit-content"!==re.current,fontSize:E.yU,lineHeight:E.fE,scrollbar:{horizontalScrollbarSize:E.lP,verticalScrollbarSize:E.lP,horizontalSliderSize:8,verticalSliderSize:8,alwaysConsumeMouseWheel:!1},padding:{top:E.Vu,bottom:"fit-content"==re.current?void 0:E.Vu},overviewRulerBorder:!1,mouseWheelScrollSensitivity:.5,fixedOverflowWidgets:J,lineNumbers:w,lineNumbersMinChars:3,glyphMargin:b,folding:"off"!==w,suggest:{insertMode:"insert",preview:!0},readOnly:g,quickSuggestions:{strings:!0,other:!0,comments:!0},renderLineHighlightOnlyWhenFocus:!0,unicodeHighlight:{ambiguousCharacters:!1}}),ee.current=te.current.createDecorationsCollection()}),[]),(0,h.useEffect)((()=>{const e=null!=p?p:[],t="typescript"===K?"typescriptDefaults":"javascriptDefaults",n=(0,N.m)(e,{languageDefaults:t});return()=>{for(const e of n)e.dispose()}}),[p,K]),(0,h.useEffect)((()=>{const e=te.current;if("brick_next_yaml"===K&&e){const t=e.getModel(),n=e.onMouseDown((function(e){var n,i;const s=ee.current;(null!==(n=null==s||null===(i=s.getRanges)||void 0===i?void 0:i.call(s))&&void 0!==n?n:[]).forEach((n=>{const i=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey";n&&e.target.position&&e.event[i]&&n.containsPosition(e.target.position)&&V(t.getValueInRange(n))}))})),i=e.onMouseMove((function(e){const t=ee.current;t&&t.getRanges().forEach((n=>{const i=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey";if(n&&e.target.position&&e.event[i]&&n.containsPosition(e.target.position)){const e=t.getRanges().map((e=>({range:e,options:{inlineClassName:n.equalsRange(e)?"highlight pointer":"highlight"}})));t.set(e)}else if(!e.event[i]){const e=t.getRanges().map((e=>({range:e,options:{inlineClassName:"highlight"}})));t.set(e)}}))}));return()=>{null==i||i.dispose(),null==n||n.dispose()}}}),[K,V,ae,T]),(0,h.useEffect)((()=>{const e=te.current;if(!e||!Q.current||"fit-content"!==re.current)return;const t=e.onDidContentSizeChange((t=>{if(!X&&t.contentHeightChanged){const n=Tt(t.contentHeight,q,j);n!==ne.current.height&&(ne.current.height=n,e.layout(ne.current))}})),n=Tt(e.getContentHeight(),q,j);return n!==ne.current.height&&(ne.current.height=n,e.layout(ne.current)),()=>{t.dispose()}}),[j,q,X]);const ce=(0,h.useCallback)((async(e,t)=>{A.editor.setModelMarkers(e,"semantic_validate",[]);const n=e.findPreviousMatch("<%[~=]?",t,!0,!1,null,!1),i=e.findNextMatch("%>",t,!1,!1,null,!1),s=null==n?void 0:n.range,r=null==i?void 0:i.range;if(s&&r){const n=new A.Range(s.startLineNumber,s.endColumn,r.startLineNumber,r.startColumn),i=e.getValueInRange(n);if(n.containsPosition(t)&&!/<% | %>/.test(i)){const t=(0,B.AR)(e.uri);A.editor.getModel(t).setValue(i);const r=e.getOffsetAt(new A.Position(s.startLineNumber,s.endColumn));if(R.b.getInstance($).updateState({content:i,range:n,offset:r}),!D)return;const a=await A.languages.typescript.getJavaScriptWorker(),o=await a(t),l=(await o.getSemanticDiagnostics(t.toString())).map((t=>{var n;const i=r+(null!==(n=t.start)&&void 0!==n?n:0),s=e.getPositionAt(i);return{startLineNumber:s.lineNumber,startColumn:s.column,endLineNumber:s.lineNumber,endColumn:s.column+t.length,message:t.messageText,severity:A.MarkerSeverity.Warning}}));A.editor.setModelMarkers(e,"semantic_validate",l)}}}),[$]);(0,h.useEffect)((()=>{if(!te.current)return;const e=te.current.getModel(),t=e.onDidChangeContent((async t=>{(0,L.J)($),["brick_next_yaml"].includes(K)&&ce(e,te.current.getPosition()),t.isFlush||P(e.getValue())}));return()=>{t.dispose()}}),[P,$,K,ce]),(0,h.useEffect)((()=>{if(X){const e=t=>{"Escape"!==t.key&&"Esc"!==t.key||(window.removeEventListener("keydown",e),Z(!1))};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}}}),[X]),(0,h.useEffect)((()=>()=>{var e,t;null===(e=te.current)||void 0===e||null===(e=e.getModel())||void 0===e||e.dispose(),null===(t=te.current)||void 0===t||t.dispose()}),[]),(0,h.useEffect)((()=>{if(!te.current&&!M)return;const e=new O.j(M,te.current,le?"rgba(174,174,175,0.4)":"rgba(89,89,89,0.4)");return()=>{e.dispose()}}),[M,le]);const ue=(0,h.useCallback)((()=>{if(te.current){const e=te.current.getModel();rt(e.getValue()).then((()=>at({type:"success",message:G(_.K.COPY_SUCCESS)}))).catch((()=>at({type:"error",message:G(_.K.COPY_FAILED)})))}}),[G]),he=(0,h.useCallback)((()=>{Z(!X)}),[X]);return(0,h.useEffect)((()=>{const e=te.current;if(!e||"brick_next_yaml"!==K)return;let t=!1;const n=(0,x.debounce)((async()=>{var n;const i=await(0,I.K)();if(t)return;const{lintMarkers:s,lintDecorations:r}=await i.lint({source:e.getValue(),links:m,markers:u}),a=e.getModel();!t&&a&&(A.editor.setModelMarkers(a,"brick_next_yaml_lint",s.map((e=>{let{start:t,end:n,message:i,severity:s,code:r}=e;const o=a.getPositionAt(t),l=a.getPositionAt(n);return{startLineNumber:o.lineNumber,startColumn:o.column,endLineNumber:l.lineNumber,endColumn:l.column,severity:A.MarkerSeverity[s],message:i,code:r}}))),null===(n=ee.current)||void 0===n||n.set(r.map((e=>{let{start:t,end:n,options:i}=e;return{range:A.Range.fromPositions(a.getPositionAt(t),a.getPositionAt(n)),options:i}}))))}),200),i=e.onDidChangeModelContent(n);return n(),()=>{t=!0,i.dispose(),A.editor.setModelMarkers(e.getModel(),"brick_next_yaml_lint",[])}}),[K,m,u,T,$]),d().createElement("div",{className:z()("code-editor-wrapper",{expanded:X,error:"error"===C})},d().createElement("div",{ref:Q,style:{height:X?"100%":ie,overflow:X?"scroll":""}}),d().createElement("div",{className:"toolbar-wrapper"},d().createElement("div",{className:"toolbar sticky"},y&&d().createElement(it,{content:G(_.K.COPY)},d().createElement(st,{className:"copy-icon",icon:"copy",lib:"antd",theme:"outlined",onClick:ue})),v&&d().createElement(it,{content:G(X?_.K.COLLAPSE:_.K.EXPAND)},d().createElement(st,{className:"expand-icon",icon:X?"compress":"expand",lib:"antd",theme:"outlined",onClick:he})))))}function Kt(e,t,n){return qt(Math.min(n,Math.max(t,e.split("\n").length)))}function Tt(e,t,n){let i=e;return(e-E.Vu)%E.fE==0&&(i=e+E.lP),Math.min(qt(n),Math.max(i,qt(t)))}function qt(e){return e*E.fE+E.lP+E.Vu}i=Yt,({e:[K,T,q,j,U,J,X,Z,$,G,Q,ee,te,ne,ie,se,re,ae,oe,le,ce,ue,he,de,ge,me,pe,fe,ke,Ae,ve,ye,we,be,Me,Ce,xe,Ee,Se,Le,Be,Ne,We,_e,Pe,ze,Re,Oe,Ie,Ve,De,Fe,Ye,He,Ke,Te,qe,je,Ue,Je,Xe,Ze],c:[ot,H]}=(0,u.A)(i,[Qe("vs.code-editor",{shadowOptions:!1})],[[et(),1,"name"],[et(),1,"label"],[et(),1,"value"],[et(),1,"language"],[et(),1,"theme"],[et({type:Boolean}),1,"required"],[et({type:Boolean}),1,"readOnly"],[et(),1,"automaticLayout"],[et({type:Number}),1,"minLines"],[et({attribute:!1}),1,"completers"],[et({attribute:!1}),1,"advancedCompleters"],[et({attribute:!1}),1,"markers"],[et({attribute:!1}),1,"links"],[et({type:Number}),1,"maxLines"],[et({attribute:!1}),1,"height"],[et(),1,"message"],[et(),1,"placeholder"],[et({type:Boolean}),1,"showExpandButton"],[et(),1,"lineNumbers"],[et({attribute:!1}),1,"tokenConfig"],[et({type:Boolean}),1,"customValidationInBrickNextYaml"],[et({type:Boolean}),1,"showCopyButton"],[et({type:Boolean}),1,"glyphMargin"],[et({attribute:!1}),1,"extraLibs"],[et({type:Boolean}),1,"fixedOverflowWidgets"],[tt({type:"code.change"}),1,"codeChange",e=>(0,c.A)(Pt,e),(e,t)=>(0,l.A)(Pt,e,t)],[tt({type:"user.input"}),1,"userInput",e=>(0,c.A)(Rt,e),(e,t)=>(0,l.A)(Rt,e,t)],[tt({type:"token.click"}),1,"tokenClickEvent",e=>(0,c.A)(Vt,e),(e,t)=>(0,l.A)(Vt,e,t)]],0,(e=>Ft.has((0,a.A)(e))),k.N)),H()}}]);
|
|
2
|
-
//# sourceMappingURL=code-editor.2665f247.js.map
|