@next-bricks/visual-builder 1.39.12 → 1.39.13
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 +5 -5
- package/dist/chunks/9653.b9c29b0d.js.map +1 -1
- package/dist/chunks/chat-conversation.c9d27c2f.js.map +1 -1
- package/dist/index.82f56a3d.js +2 -0
- package/dist/{index.51404b90.js.map → index.82f56a3d.js.map} +1 -1
- package/dist/manifest.json +100 -100
- package/dist/types.json +688 -688
- package/package.json +2 -2
- package/dist/index.51404b90.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/9653.b9c29b0d.js","mappings":"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","sources":["webpack:///./src/workbench-action/workbench-action.shadow.css","webpack:///./src/workbench-pane/workbench-pane.shadow.css","webpack:///./src/pre-generated-config/styles.shadow.css","webpack:///./src/workbench-action/host-context.css","webpack:///./src/raw-metric-preview/styles.shadow.css","webpack:///./src/generate-snippets-context-menu/styles.shadow.css","webpack:///./src/pre-generated-preview/preview.shadow.css","webpack:///./src/raw-metric-preview/preview.shadow.css","webpack:///./src/raw-data-preview/styles.shadow.css","webpack:///./src/page-arch-node/styles.shadow.css","webpack:///./src/contract-select/styles.shadow.css","webpack:///./src/shared/scrollbar.shadow.css","webpack:///./src/workbench-action-list/host-context.css","webpack:///./src/workbench-action-list/workbench-action-list.shadow.css","webpack:///./src/workbench-pane/index.tsx","webpack:///./src/workbench-sidebar/index.tsx","webpack:///./src/workbench-action/host-context.css?4509","webpack:///./src/workbench-action/index.tsx","webpack:///./src/workbench-action-list/host-context.css?28ab","webpack:///./src/workbench-action-list/index.tsx","webpack:///./src/workbench-tree/index.tsx","webpack:///./src/workbench-history-action/i18n.ts","webpack:///./src/workbench-history-action/utils.ts","webpack:///./src/workbench-history-action/index.tsx","webpack:///./src/page-arch-node/index.tsx","webpack:///../../src/FormItemElement.tsx","webpack:///./src/contract-select/i18n.ts","webpack:///./src/contract-select/more-option/MoreOption.tsx","webpack:///./src/contract-select/index.tsx","webpack:///./src/contract-select/useContractList.ts","webpack:///./src/generate-snippets-context-menu/index.tsx","webpack:///./src/generate-snippets-context-menu/i18n.ts","webpack:///../../src/index.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/utils.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/chat-conversation/MessageComponent.tsx","webpack:///./src/chat-conversation/index.tsx","webpack:///./src/chat-preview/InspectOutlineComponent.tsx","webpack:///./src/chat-preview/index.tsx","webpack:///./src/data-providers/chat-preview/inspector.ts","webpack:///./src/data-providers/inject-chat-preview-agent.ts","webpack:///./src/pre-generated-preview/index.tsx","webpack:///./src/pre-generated-table-view/index.tsx","webpack:///./src/pre-generated-container/index.tsx","webpack:///./src/data-providers/check-editor-by-name.ts","webpack:///./src/data-providers/get-data-dependency.ts","webpack:///./src/data-providers/get-dependency-tree.ts","webpack:///./src/shared/compat_internals.ts","webpack:///./src/raw-data-preview/index.tsx","webpack:///./src/data-providers/parse-path.ts","webpack:///./src/data-providers/batch-update-raw-data-generated-view.ts","webpack:///./src/data-providers/get-raw-data-system-prompts.ts","webpack:///./src/pre-generated-config/i18n.ts","webpack:///./src/raw-metric-preview/convert.ts","webpack:///./src/pre-generated-config/convertToBrickConf.ts","webpack:///./src/pre-generated-config/index.tsx","webpack:///./src/pre-generated-config-preview/index.tsx","webpack:///./src/raw-metric-preview/generateMetricCandidates.ts","webpack:///./src/data-providers/get-config-by-data-for-ai.ts","webpack:///./src/raw-metric-preview/index.tsx","webpack:///./src/data-providers/get-usage-member-statistics.ts","webpack:///./src/chat-preview/styles.shadow.css","webpack:///./src/property-editor/index.tsx","webpack:///./src/chat-conversation/styles.shadow.css","webpack:///./src/workbench-history-action/styles.shadow.css","webpack:///./src/pre-generated-config/preview.shadow.css","webpack:///./src/workbench-sidebar/workbench-sidebar.shadow.css","webpack:///./src/pre-generated-preview/styles.shadow.css","webpack:///./src/raw-data-preview/preview.shadow.css","webpack:///./src/pre-generated-table-view/styles.shadow.css"],"sourcesContent":["// 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, `.action::part(link){display:flex;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;color:var(--vb-workbench-action-color);position:relative;transition:none}.action.active::part(link)::before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:2px;background-color:var(--vb-workbench-action-active-border-color)}.action.active::part(link),\n.action::part(link):hover{color:var(--vb-workbench-active-color)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block;--pane-color:#595959}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--pane-color:#ccc}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.pane{display:flex;flex-direction:column;color:var(--pane-color);height:100%}.pane-header{display:flex;align-items:center;cursor:pointer;border-top:1px solid transparent;position:relative}.pane-header:focus{outline-width:1px;outline-style:solid;outline-offset:-1px;outline-color:#007fd4}:host(:not(:first-child)) .pane-header{border-top-color:rgba(204,204,204,0.2)}.pane-scroll-shadow{display:none;position:absolute;bottom:-3px;left:0;right:0;height:3px;box-shadow:#000000 0 6px 6px -6px inset;z-index:1}.scrolled .pane-scroll-shadow{display:block}.pane-title{display:flex;align-items:center;font-size:13px;line-height:24px;height:25px;min-width:0;flex:1}.title-icon{display:flex;justify-content:center;align-items:center;width:24px;padding-right:2px;line-height:1;flex-shrink:0}.title-label{text-transform:uppercase;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pane-body{flex-grow:1;min-height:0;display:none;overflow:hidden;overflow-y:auto;overflow-y:overlay}:host([active]) .pane-body{display:initial}:host(:not(:hover)) ::slotted([slot=\"actions\"]){display:none}.badge{background-color:rgb(77,77,77);color:rgb(255,255,255);border-radius:11px;height:18px;padding:3px 6px;line-height:13px;margin:0 3px;font-size:12px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--vb-workbench-action-color:#616161;--vb-workbench-action-active-color:#1f1f1f;--vb-workbench-action-active-border-color:#005fb8}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--vb-workbench-action-color:rgba(255,255,255,0.4);--vb-workbench-action-active-color:#fff;--vb-workbench-action-active-border-color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}.mask,\n.container{display:none;position:fixed;z-index:1}.mask{top:0;bottom:0;left:0;right:0;z-index:1}:host([active]) .mask,\n:host([active]) .container{display:block}.container{background:var(--antd-dropdown-menu-bg);border-radius:var(--medius-border-radius);padding:5px}.container .title{padding:5px 12px;cursor:default;color:var(--color-secondary-text);border-bottom:1px solid var(--color-text-divider-line)}.container eo-menu{border:none;padding:5px 0}.container eo-menu eo-menu-item:not([disabled]):hover::part(menu-item){background-color:var(--left-sidebar-item-hover-bg)}.container eo-menu eo-menu-item[disabled]::part(menu-item){cursor:not-allowed}.container eo-menu eo-menu-item::part(menu-item){cursor:grab;padding:5px 12px;border-radius:var(--medius-border-radius);min-width:max-content}.container eo-menu eo-menu-item.dragging{opacity:0.5}.container eo-menu eo-tooltip{display:block}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `body{background-color:transparent}#preview-root{padding:0;height:auto;max-height:100vh;overflow-y:auto;border:1px solid var(--theme-gray-border-color);border-radius:4px;background:var(--body-background)}.head-cell{position:sticky;top:0;z-index:1;font-weight:bold}.head-cell,\n.body-cell{background:var(--body-background)}.last-col-cell{border-right-color:transparent}.last-row-cell{border-bottom-color:transparent}.form-container > ::part(message){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `#preview-root{overflow-y:initial;max-height:initial}.body-cell.large-chart-cell{padding:16px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{--local-node-outline-style:solid;display:block}:host([hidden]){display:none}:host([not-synced]){--local-node-outline-style:dashed}*{box-sizing:border-box}.node{width:168px;max-width:none;height:130px;position:relative;display:flex;flex-direction:column;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.node.board{height:70px;max-width:168px;width:-moz-fit-content;width:fit-content;padding-bottom:4px}.label,\n.label-input{width:100%;height:24px;padding:3px;border:none;line-height:18px;font-size:var(--sub-title-font-size-small);color:var(--color-header-text);font-weight:var(--font-weight-500);text-align:center;font-family:inherit;cursor:text;-webkit-user-select:text;user-select:text}.label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.node.editing-label .label{height:0}.node:not(.editing-label) .label-input{display:none}.add-button,\n.icon-container,\n.thumbnail-container,\n.thumbnail-placeholder{display:flex;align-items:center;justify-content:center}.thumbnail-container{height:98px;outline:1px var(--local-node-outline-style) var(--palette-gray-4);opacity:1;border:4px solid transparent;border-radius:4px;width:100%;position:relative;flex-direction:column}.thumbnail-placeholder{color:var(--palette-gray-5);font-size:36px;flex:1}.icon-container{font-size:20px;background-color:var(--palette-teal-6);color:var(--palette-gray-4);width:36px;height:36px;border-radius:50%;outline-offset:4px}:host([active]) .thumbnail-container,\n:host([active]) .icon-container{outline:2px var(--local-node-outline-style) var(--palette-blue-3)}:host(:not([active])) .node:hover .thumbnail-container,\n:host(:not([active])) .node:hover .icon-container{outline:1px var(--local-node-outline-style) var(--palette-blue-3)}.add-button{position:absolute;bottom:-26px;left:calc(50% - 12px);width:24px;height:24px;background:var(--palette-gray-3);color:var(--palette-gray-6);border-radius:50%;cursor:pointer}:host([not-synced]) .add-button,\n:host([disable-child-append]) .add-button,\n:host(:not([active])) .add-button{display:none}.add-button:hover{background:var(--palette-blue-5);color:var(--palette-gray-2)}.external{position:absolute;top:4px;left:4px;padding:0 10px;display:flex;align-items:center;gap:6px;background:var(--palette-purple-4);font-size:12px;line-height:20px;height:22px;cursor:pointer;color:var(--palette-gray-1);border-radius:9999px;right:4px;max-width:-moz-fit-content;max-width:fit-content}.external-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.external:hover{background:var(--palette-purple-5)}.sub-nodes{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;width:100%}.sub-node{background-color:var(--palette-gray-2);border-radius:4px;padding:6px;display:flex;flex-direction:column;justify-content:space-between;height:32px}.sub-node-skeleton-title{width:18px;height:4px;border-radius:2px;align-self:flex-start;background-color:var(--palette-gray-4)}.sub-node-skeleton-content{width:100%;height:4px;border-radius:2px;background-color:var(--palette-gray-4)}.sub-node-skeleton-button{width:18px;height:4px;border-radius:2px;align-self:flex-end;background-color:var(--palette-blue-3)}.sub-node:hover{background-color:var(--palette-gray-3)}.sub-node:hover .sub-node-skeleton-title,\n.sub-node:hover .sub-node-skeleton-content{background-color:var(--palette-gray-5)}.sub-node:hover .sub-node-skeleton-button{background-color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}.contract-wrapper{display:flex;gap:4px}.contract-selector{flex:1}.version-selector{width:100px}.options-tips{padding:0px 10px;font-weight:400;color:#999;white-space:nowrap;font-style:italic}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `.custom-scrollbar-container{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.15) rgba(255,255,255,0.03)}.custom-scrollbar-container::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;position:absolute}.custom-scrollbar-container::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,0);border-radius:4px}.custom-scrollbar-container:hover::-webkit-scrollbar-track{background-color:rgba(255,255,255,0.03)}.custom-scrollbar-container:hover::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,0.15)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--vb-workbench-action-list-background:#f8f8f8}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--vb-workbench-action-list-background:#323237}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `:host{display:flex;flex-direction:column;height:100%;overflow-y:auto;scrollbar-width:none;background-color:var(--vb-workbench-action-list-background)}:host([hidden]){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n useEffect,\n useRef,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./workbench-pane.shadow.css\";\nimport sharedStyle from \"../shared/scrollbar.shadow.css\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport classNames from \"classnames\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface WorkbenchPaneProps {\n titleLabel?: string;\n active?: boolean;\n badge?: number;\n onActiveChange?(active: boolean): void;\n onFirstActivated?(): void;\n}\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-pane\", {\n styleTexts: [styleText, sharedStyle],\n})\nclass WorkbenchPane extends ReactNextElement {\n @property() accessor titleLabel: string | undefined;\n\n @property({ type: Boolean }) accessor active: boolean | undefined;\n\n @property({ type: Number }) accessor badge: number | undefined;\n\n @event({ type: \"active.change\" })\n accessor #activeChangeEvent: EventEmitter<boolean>;\n #handleActiveChange = (active: boolean): void => {\n if (active !== this.active) {\n this.active = active;\n this.#activeChangeEvent.emit(active);\n }\n };\n\n @event({ type: \"active.firstActivated\" })\n accessor #activeFirstActivatedEvent: EventEmitter<void>;\n\n #handleActiveFirstActivated = (): void => {\n this.#activeFirstActivatedEvent.emit();\n };\n\n render() {\n return (\n <WorkbenchPaneComponent\n titleLabel={this.titleLabel}\n active={this.active}\n badge={this.badge}\n onActiveChange={this.#handleActiveChange}\n onFirstActivated={this.#handleActiveFirstActivated}\n />\n );\n }\n}\n\nfunction WorkbenchPaneComponent({\n titleLabel,\n active,\n badge,\n onActiveChange,\n onFirstActivated,\n}: WorkbenchPaneProps) {\n const [internalActive, setInternalActive] = useState<boolean>(active);\n const [activatedOnce, setActivatedOnce] = useState(false);\n\n useEffect(() => {\n setInternalActive(active);\n }, [active]);\n\n useEffect(() => {\n onActiveChange?.(internalActive);\n }, [internalActive, onActiveChange]);\n\n const handleClick = useCallback(() => {\n setInternalActive((previousActive) => !previousActive);\n if (!activatedOnce && !internalActive) {\n setActivatedOnce(true);\n onFirstActivated?.();\n }\n }, [activatedOnce, internalActive, onFirstActivated]);\n\n const scrollBodyRef = useRef<HTMLDivElement>();\n\n const [scrolled, setScrolled] = useState(false);\n\n const handleScroll = useMemo(\n () =>\n debounceByAnimationFrame((): void => {\n setScrolled(scrollBodyRef.current.scrollTop > 0);\n }),\n []\n );\n\n return (\n <div\n className={classNames(\"pane\", {\n scrolled,\n })}\n >\n <div className=\"pane-header\" tabIndex={0} onClick={handleClick}>\n <div className=\"pane-title\">\n <span className=\"title-icon\">\n {internalActive ? (\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"down\" />\n ) : (\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"right\" />\n )}\n </span>\n <div className=\"title-label\">{titleLabel}</div>\n <slot name=\"title\" />\n </div>\n <slot name=\"actions\" />\n {badge && <div className=\"badge\">{badge}</div>}\n <div className=\"pane-scroll-shadow\"></div>\n </div>\n <div\n className=\"pane-body custom-scrollbar-container\"\n onScroll={handleScroll}\n ref={scrollBodyRef}\n >\n <slot>\n <div\n style={{\n padding: \"10px 20px\",\n color: \"var(--text-color-secondary)\",\n }}\n >\n No content\n </div>\n </slot>\n </div>\n </div>\n );\n}\n\nexport { WorkbenchPane };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport styleText from \"./workbench-sidebar.shadow.css\";\n\ninterface WorkbenchSidebarProps {\n titleLabel: string;\n refCallback: (element: HTMLDivElement) => void;\n}\ninterface WorkbenchSidebarChildElement extends HTMLElement {\n active?: boolean;\n activeFlex?: string;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-sidebar\", {\n styleTexts: [styleText],\n})\nclass WorkbenchSidebar extends ReactNextElement {\n @property() accessor titleLabel: string | undefined;\n\n #getPaneSlot = (): HTMLSlotElement => {\n return this.shadowRoot?.querySelector(\"slot:not([name])\");\n };\n\n #reflowPanes = (): void => {\n const slot = this.#getPaneSlot();\n const panes = slot.assignedNodes() as WorkbenchSidebarChildElement[];\n\n for (const pane of panes) {\n if (pane.active) {\n pane.style.flex = String(pane.activeFlex ?? \"1\");\n } else {\n pane.style.flex = \"initial\";\n }\n }\n };\n\n #onPanesSlotChange = (event: Event): void => {\n const slot = event.target as HTMLSlotElement;\n const panes = slot.assignedNodes();\n for (const pane of panes) {\n pane.addEventListener(\"active.change\", this.#reflowPanes);\n }\n };\n\n refCallback = () => {\n this.#reflowPanes();\n const panesSlots = this.#getPaneSlot();\n\n panesSlots?.addEventListener(\"slotchange\", (e) => {\n this.#onPanesSlotChange(e);\n });\n };\n\n render() {\n return (\n <WorkbenchSidebarComponent\n titleLabel={this.titleLabel}\n refCallback={this.refCallback}\n />\n );\n }\n}\n\nfunction WorkbenchSidebarComponent({\n titleLabel,\n refCallback,\n}: WorkbenchSidebarProps) {\n return (\n <div className=\"sidebar\" ref={refCallback}>\n <div className=\"title-container\">\n <div className=\"title-label\">{titleLabel}</div>\n <slot name=\"titleToolbar\" />\n </div>\n <div className=\"pane-container\">\n <slot />\n </div>\n </div>\n );\n}\n\nexport { WorkbenchSidebar };\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]!./host-context.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]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport classNames from \"classnames\";\nimport \"./host-context.css\";\nimport styleText from \"./workbench-action.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrapLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport interface WorkbenchActionProps {\n icon?: GeneralIconProps;\n to?: string;\n target?: string;\n active?: boolean;\n href?: string;\n tooltip?: string;\n}\n\n/**\n * @insider\n */\nexport\n@defineElement(\"visual-builder.workbench-action\", {\n styleTexts: [styleText],\n})\nclass WorkbenchAction extends ReactNextElement {\n @property({\n attribute: false,\n })\n accessor icon: GeneralIconProps | undefined;\n\n @property() accessor to: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor active: boolean | undefined;\n\n @property() accessor href: string | undefined;\n\n @property() accessor target: string | undefined;\n\n @property() accessor tooltip: string | undefined;\n\n render(): React.ReactNode {\n return (\n <WorkbenchActionComponent\n to={this.to}\n icon={this.icon}\n active={this.active}\n href={this.href}\n target={this.target}\n tooltip={this.tooltip}\n />\n );\n }\n}\n\nfunction WorkbenchActionComponent({\n icon,\n to,\n active,\n href,\n target,\n tooltip,\n}: WorkbenchActionProps) {\n return (\n <WrappedTooltip content={tooltip} placement=\"right\">\n <WrapLink\n className={classNames(\"action\", { active })}\n url={to}\n href={href}\n target={target as LinkProps[\"target\"]}\n >\n <WrappedIcon {...icon} />\n </WrapLink>\n </WrappedTooltip>\n );\n}\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]!./host-context.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]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport {\n WorkbenchAction,\n WorkbenchActionProps,\n} from \"../workbench-action/index.js\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\nimport styleText from \"./workbench-action-list.shadow.css\";\n\nexport interface SidebarMenu {\n title?: string;\n icon?: GeneralIconProps;\n menuItems?: SidebarMenuItem[];\n}\n\nconst WrapperWorkbenchAction = wrapBrick<WorkbenchAction, WorkbenchActionProps>(\n \"visual-builder.workbench-action\"\n);\n\nconst { defineElement, property } = createDecorators();\n\ninterface WorkbenchActionListProps {\n appId?: string;\n menu: SidebarMenu;\n}\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-action-list\", {\n styleTexts: [styleText],\n})\nclass WorkbenchActionList extends ReactNextElement {\n @property() accessor appId: string | undefined;\n\n @property({\n attribute: false,\n })\n accessor menu!: SidebarMenu;\n\n render(): React.ReactNode {\n return <WorkbenchActionListComponent appId={this.appId} menu={this.menu} />;\n }\n}\n\nlet currentAppId: string;\nconst historyMap = new Map<number, string>();\n\nexport function WorkbenchActionListComponent({\n appId,\n menu,\n}: WorkbenchActionListProps) {\n const history = getHistory();\n const [activeIndex, setActiveIndex] = useState<number>();\n const [location, setLocation] = useState(history.location);\n\n useEffect(() => {\n const unlisten = history.listen((location) => {\n setLocation(location);\n });\n return unlisten;\n }, [history]);\n\n useEffect(() => {\n if (!currentAppId) currentAppId = appId;\n if (currentAppId !== appId) {\n historyMap.clear();\n currentAppId = appId;\n }\n }, [appId]);\n\n useEffect(() => {\n const { pathname, search } = location;\n\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setActiveIndex(Number(selectedKeys[0]));\n }, [menu, location]);\n\n const handleLinkClick = (item: SidebarMenuItem): void => {\n if ((item as SidebarMenuSimpleItem).href) return;\n historyMap.set(activeIndex, `${location.pathname}${location.search}`);\n };\n\n const isSimpleMenuItem = (\n item: SidebarMenuItem\n ): item is SidebarMenuSimpleItem => {\n return item.type === \"default\" || !item.type;\n };\n\n return (\n <>\n {menu?.menuItems\n ?.map((item, index) => {\n if (isSimpleMenuItem(item)) {\n let url = item.to;\n if (activeIndex !== index && historyMap.has(index)) {\n url = historyMap.get(index);\n }\n return (\n <WrapperWorkbenchAction\n key={index}\n icon={item.icon}\n to={url as string}\n href={item.href}\n target={item.target}\n tooltip={item.text}\n active={activeIndex === index}\n onClick={() => handleLinkClick(item)}\n />\n );\n }\n })\n .filter(Boolean)}\n </>\n );\n}\n\nexport { WorkbenchActionList };\n","import React from \"react\";\nimport { pick } from \"lodash\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport type {\n ActionClickDetail,\n WorkbenchNodeData,\n WorkbenchTreeAction,\n} from \"../interfaces.js\";\nimport { WorkbenchActionsContext } from \"../shared/workbench/WorkbenchActionsContext.js\";\nimport {\n WorkbenchTree,\n dropEmitProps,\n} from \"../shared/workbench/WorkbenchTree.js\";\nimport { WorkbenchTreeContext } from \"../shared/workbench/WorkbenchTreeContext.js\";\nimport { deepMatch } from \"../utils/deepMatch.js\";\nimport treeStyleText from \"./WorkbenchTree.shadow.css\";\nimport actionStyleText from \"../shared/workbench-mini-action-bar/WorkbenchMiniActionBar.shadow.css\";\nimport \"@next-core/theme\";\n\nfunction defaultGetCollapsedId(node: WorkbenchNodeData): string | number {\n return node.key;\n}\n\nconst { defineElement, property, event } = createDecorators();\n\n/**\n * @id next-builder.workbench-tree\n * @author steve\n * @history\n * 1.x.0: 新增构件 `next-builder.workbench-tree`\n * @docKind brick\n * @noInheritDoc\n * @insider\n */\n@defineElement(\"visual-builder.workbench-tree\", {\n styleTexts: [treeStyleText, actionStyleText],\n})\nclass WorkbenchTreeElement extends ReactNextElement {\n @property({ attribute: false })\n accessor nodes: WorkbenchNodeData[];\n\n @property({ attribute: false })\n accessor actions: WorkbenchTreeAction[];\n\n @property({ type: Boolean })\n accessor actionsHidden: boolean;\n\n @property()\n accessor placeholder: string;\n\n @property({ type: Boolean })\n accessor isTransformName: boolean;\n\n @property()\n accessor searchPlaceholder: string;\n\n @property({ type: Boolean })\n accessor noSearch: boolean;\n\n @property({ attribute: false })\n accessor activeKey: string | number;\n\n @property({ type: Boolean })\n accessor showMatchedNodeOnly: boolean;\n\n @property({ attribute: false })\n accessor matchNodeDataFields: string | string[];\n\n @property({ attribute: false })\n accessor fixedActionsFor: Record<string, unknown> | Record<string, unknown>[];\n\n @property({ type: Boolean })\n accessor collapsible: boolean;\n\n @property({ attribute: false })\n accessor collapsedNodes: string[];\n\n @property({ type: Boolean })\n accessor allowDrag: boolean;\n\n @property({ type: Boolean })\n accessor allowDragToRoot: boolean;\n\n @property({ type: Boolean })\n accessor allowDragToInside: boolean;\n\n @property({ type: String })\n accessor nodeKey: string;\n\n @property({ type: Boolean })\n accessor skipNotify: boolean;\n\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail): void => {\n this.#actionClickEvent.emit(detail);\n };\n\n @event({ type: \"node.click\" })\n accessor #nodeClickEvent: EventEmitter<unknown>;\n\n #nodeClickFactory = (node: WorkbenchNodeData) => () => {\n this.#nodeClickEvent.emit(node.data);\n };\n\n @event({ type: \"node.drop\" })\n accessor #nodeDropEvent: EventEmitter<any>;\n\n #handleNodeDrop = (detail: dropEmitProps): void => {\n this.#nodeDropEvent.emit(detail);\n };\n\n @event({ type: \"context.menu\" })\n accessor #nodeContextMenuEvent: EventEmitter<unknown>;\n\n #contextMenuFactory = (node: WorkbenchNodeData) => (e: React.MouseEvent) => {\n e.preventDefault();\n this.#nodeContextMenuEvent.emit({\n active: true,\n node: node?.data,\n x: e.clientX,\n y: e.clientY,\n });\n };\n\n @event({ type: \"node.toggle\" })\n accessor #nodeToggleEvent: EventEmitter<{\n nodeId: string;\n collapsed: boolean;\n }>;\n\n #handleNodeToggle = (nodeId: string, collapsed: boolean): void => {\n this.#nodeToggleEvent.emit({ nodeId, collapsed });\n };\n\n render() {\n return (\n <WorkbenchActionsContext.Provider\n value={{\n actions: this.actions,\n actionsHidden: this.actionsHidden,\n onActionClick: this.#handleActionClick,\n }}\n >\n <WorkbenchTreeContext.Provider\n value={{\n activeKey: this.activeKey,\n basePaddingLeft: 5,\n showMatchedNodeOnly: this.showMatchedNodeOnly,\n isTransformName: this.isTransformName,\n fixedActionsFor: this.fixedActionsFor,\n nodeKey: this.nodeKey,\n collapsible: this.collapsible,\n collapsedNodes: this.collapsedNodes,\n getCollapsedId: defaultGetCollapsedId,\n onNodeToggle: this.#handleNodeToggle,\n skipNotify: this.skipNotify,\n clickFactory: this.#nodeClickFactory,\n contextMenuFactory: this.#contextMenuFactory,\n matchNode: (node, lowerTrimmedQuery) =>\n deepMatch(node.name, lowerTrimmedQuery) ||\n (!!this.matchNodeDataFields?.length &&\n deepMatch(\n this.matchNodeDataFields === \"*\"\n ? node.data\n : pick(node.data, this.matchNodeDataFields),\n lowerTrimmedQuery\n )),\n }}\n >\n <WorkbenchTree\n nodes={this.nodes}\n placeholder={this.placeholder}\n searchPlaceholder={this.searchPlaceholder}\n noSearch={this.noSearch}\n dropEmit={this.#handleNodeDrop}\n allowDrag={this.allowDrag}\n allowDragToInside={this.allowDragToInside}\n allowDragToRoot={this.allowDragToRoot}\n />\n </WorkbenchTreeContext.Provider>\n </WorkbenchActionsContext.Provider>\n );\n }\n}\n\nexport { WorkbenchTreeElement };\n","export enum K {\n LOAD_MORE = \"LOAD_MORE\",\n LOADING = \"LOADING\",\n NO_DATA = \"NO_DATA\",\n NODE = \"NODE\",\n // action\n ADD = \"ADD\",\n EDIT = \"EDIT\",\n DELETE = \"DELETE\",\n IMPORT = \"IMPORT\",\n CLONE = \"CLONE\",\n APPEND_RELATION = \"APPEND_RELATION\",\n UPDATE_RELATION = \"UPDATE_RELATION\",\n REMOVE_RELATION = \"REMOVE_RELATION\",\n ROLLBACK = \"ROLLBACK\",\n ROLLBACK_ALL = \"ROLLBACK_ALL\",\n ADD_FULL = \"ADD_FULL\",\n EDIT_FULL = \"EDIT_FULL\",\n DELETE_FULL = \"DELETE_FULL\",\n IMPORT_FULL = \"IMPORT_FULL\",\n CLONE_FULL = \"CLONE_FULL\",\n APPEND_RELATION_FULL = \"APPEND_RELATION_FULL\",\n UPDATE_RELATION_FULL = \"UPDATE_RELATION_FULL\",\n REMOVE_RELATION_FULL = \"REMOVE_RELATION_FULL\",\n ROLLBACK_FULL = \"ROLLBACK_FULL\",\n ROLLBACK_ALL_FULL = \"ROLLBACK_ALL_FULL\",\n // category\n PROJECT = \"PROJECT\",\n USER = \"USER\",\n PERMISSION = \"PERMISSION\",\n BRICK = \"BRICK\",\n ROUTE = \"ROUTE\",\n TEMPLATE = \"TEMPLATE\",\n SNIPPET = \"SNIPPET\",\n I18N = \"I18N\",\n IMAGE = \"IMAGE\",\n FUNCTION = \"FUNCTION\",\n MENU = \"MENU\",\n MENU_ITEM = \"MENU_ITEM\",\n WORKFLOW = \"WORKFLOW\",\n}\n\nconst en: Locale = {\n LOAD_MORE: \"Load more\",\n LOADING: \"Loading\",\n NO_DATA: \"No data\",\n NODE: \"{{ nodes }}\",\n NODE_ellipsis: \"{{ nodes }} etc., a total of {{ count }} items\",\n // action\n ADD: \"Add node\",\n EDIT: \"Edit node\",\n DELETE: \"Delete node\",\n IMPORT: \"Batch import node\",\n CLONE: \"Clone node\",\n APPEND_RELATION: \"Append Relation\",\n UPDATE_RELATION: \"Update Relation\",\n REMOVE_RELATION: \"Remove Relation\",\n ROLLBACK: \"Rollback\",\n ROLLBACK_ALL: \"Rollback all operations\",\n ADD_FULL: \"Add {{ category }} ({{ nodes }})\",\n EDIT_FULL: \"Edit {{ nodeChanges }} of {{ category }} ({{ nodes }})\",\n DELETE_FULL: \"Delete {{ category }} ({{ nodes }})\",\n IMPORT_FULL: \"Batch Import {{ category }} ({{ nodes }})\",\n CLONE_FULL: \"Clone {{ category }} ({{ nodes }})\",\n APPEND_RELATION_FULL:\n \"Append the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n UPDATE_RELATION_FULL:\n \"Update the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n REMOVE_RELATION_FULL:\n \"Remove the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n ROLLBACK_FULL: \"Rollback to [{{ rollbackAbstract }}]\",\n ROLLBACK_ALL_FULL: \"Rollback all operations\",\n // category\n PROJECT: \"Project\",\n USER: \"User Group\",\n PERMISSION: \"Permission\",\n BRICK: \"Brick\",\n ROUTE: \"Route\",\n TEMPLATE: \"Template\",\n SNIPPET: \"Snippet\",\n I18N: \"I18N\",\n IMAGE: \"Image\",\n FUNCTION: \"Function\",\n MENU: \"Menu\",\n MENU_ITEM: \"Menu item\",\n WORKFLOW: \"Workflow\",\n};\n\nconst zh: Locale = {\n LOAD_MORE: \"加载更多\",\n LOADING: \"加载中\",\n NO_DATA: \"没有数据\",\n NODE: \"{{ nodes }}\",\n NODE_ellipsis: \"{{ nodes }}等共{{ count }}项\",\n // action\n ADD: \"新增节点\",\n EDIT: \"编辑节点\",\n DELETE: \"删除节点\",\n IMPORT: \"批量导入节点\",\n CLONE: \"克隆节点\",\n APPEND_RELATION: \"添加关系\",\n UPDATE_RELATION: \"更新关系\",\n REMOVE_RELATION: \"移除关系\",\n ROLLBACK: \"回滚\",\n ROLLBACK_ALL: \"回滚全部操作\",\n ADD_FULL: \"新增{{ category }}({{ nodes }})\",\n EDIT_FULL: \"编辑{{ category }}({{ nodes }})的 {{ nodeChanges }}\",\n DELETE_FULL: \"删除{{ category }}({{ nodes }})\",\n IMPORT_FULL: \"批量导入{{ category }}({{ nodes }})\",\n CLONE_FULL: \"克隆{{ category }}({{ nodes }})\",\n APPEND_RELATION_FULL:\n \"添加{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n UPDATE_RELATION_FULL:\n \"更新{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n REMOVE_RELATION_FULL:\n \"移除{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n ROLLBACK_FULL: \"回滚到【{{ rollbackAbstract }}】\",\n ROLLBACK_ALL_FULL: \"回滚全部操作\",\n // category\n PROJECT: \"项目\",\n USER: \"用户组\",\n PERMISSION: \"权限点\",\n BRICK: \"构件\",\n ROUTE: \"路由\",\n TEMPLATE: \"模版\",\n SNIPPET: \"片段\",\n I18N: \"国际化\",\n IMAGE: \"图片\",\n FUNCTION: \"函数\",\n MENU: \"菜单\",\n MENU_ITEM: \"菜单项\",\n WORKFLOW: \"工作流\",\n};\n\nexport const NS = \"bricks/visual-builder/workbench-history-action\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n} & { NODE_ellipsis: string };\n","import { NS, K } from \"./i18n.js\";\nimport { i18n } from \"@next-core/i18n\";\nimport { NextBuilderModels } from \"@next-api-sdk/next-builder-sdk\";\n\nconst actionI18nKeyMap: Record<string, string> = {\n add: `${NS}:${K.ADD}`,\n edit: `${NS}:${K.EDIT}`,\n delete: `${NS}:${K.DELETE}`,\n batch_delete: `${NS}:${K.DELETE}`,\n import: `${NS}:${K.IMPORT}`,\n clone: `${NS}:${K.CLONE}`,\n append_relation: `${NS}:${K.APPEND_RELATION}`,\n update_relation: `${NS}:${K.UPDATE_RELATION}`,\n remove_relation: `${NS}:${K.REMOVE_RELATION}`,\n rollback: `${NS}:${K.ROLLBACK}`,\n rollback_all: `${NS}:${K.ROLLBACK_ALL}`,\n};\n\nconst fullActionI18nKeyMap: Record<string, string> = {\n add: `${NS}:${K.ADD_FULL}`,\n edit: `${NS}:${K.EDIT_FULL}`,\n delete: `${NS}:${K.DELETE_FULL}`,\n batch_delete: `${NS}:${K.DELETE_FULL}`,\n import: `${NS}:${K.IMPORT_FULL}`,\n clone: `${NS}:${K.CLONE_FULL}`,\n append_relation: `${NS}:${K.APPEND_RELATION_FULL}`,\n update_relation: `${NS}:${K.UPDATE_RELATION_FULL}`,\n remove_relation: `${NS}:${K.REMOVE_RELATION_FULL}`,\n rollback: `${NS}:${K.ROLLBACK_FULL}`,\n rollback_all: `${NS}:${K.ROLLBACK_ALL_FULL}`,\n};\n\nconst categoryI18nKeyMap: Record<string, string> = {\n project: `${NS}:${K.PROJECT}`,\n userGroup: `${NS}:${K.USER}`,\n permission: `${NS}:${K.PERMISSION}`,\n brick: `${NS}:${K.BRICK}`,\n route: `${NS}:${K.ROUTE}`,\n template: `${NS}:${K.TEMPLATE}`,\n snippet: `${NS}:${K.SNIPPET}`,\n i18n: `${NS}:${K.I18N}`,\n image: `${NS}:${K.IMAGE}`,\n function: `${NS}:${K.FUNCTION}`,\n menu: `${NS}:${K.MENU}`,\n menuItem: `${NS}:${K.MENU_ITEM}`,\n workflow: `${NS}:${K.WORKFLOW}`,\n};\n\nconst modelI18nKeyMap: Record<string, string> = {\n PROJECT_MICRO_APP: `${NS}:${K.PROJECT}`,\n \"MICRO_APP_USER_GROUP@EASYOPS\": `${NS}:${K.USER}`,\n MICRO_APP_RESOURCE_PERMISSION: `${NS}:${K.PERMISSION}`,\n STORYBOARD_BRICK: `${NS}:${K.BRICK}`,\n STORYBOARD_ROUTE: `${NS}:${K.ROUTE}`,\n STORYBOARD_TEMPLATE: `${NS}:${K.TEMPLATE}`,\n STORYBOARD_SNIPPET: `${NS}:${K.SNIPPET}`,\n STORYBOARD_I18N: `${NS}:${K.I18N}`,\n MICRO_APP_RESOURCE_IMAGE: `${NS}:${K.IMAGE}`,\n STORYBOARD_FUNCTION: `${NS}:${K.FUNCTION}`,\n MICRO_APP_RESOURCE_MENU: `${NS}:${K.MENU}`,\n MICRO_APP_RESOURCE_MENU_ITEM: `${NS}:${K.MENU_ITEM}`,\n \"WORKFLOW_DEF@EASYOPS\": `${NS}:${K.WORKFLOW}`,\n};\n\nexport function translateHistory(\n history: Partial<NextBuilderModels.ModelWorkspaceChangeHistory>\n): Record<string, string> {\n const historyAction =\n history.action === \"rollback\" && !history.rollBackIdInfo\n ? \"rollback_all\"\n : history.action;\n\n const category = i18n.t(\n categoryI18nKeyMap[history.category] ?? history.category\n );\n const action = i18n.t(actionI18nKeyMap[historyAction] ?? historyAction);\n const leftObjectId = i18n.t(\n modelI18nKeyMap[history.abstract?.leftObjectId] ??\n history.abstract?.leftObjectId\n );\n const rightObjectId = i18n.t(\n modelI18nKeyMap[history.abstract?.rightObjectId] ??\n history.abstract?.rightObjectId\n );\n const nodes = translateNodes(\n history.abstract?.nodes,\n history.abstract?.nodesCount\n );\n const leftNodes = translateNodes(\n history.abstract?.leftNodes,\n history.abstract?.leftNodesCount\n );\n const rightNodes = translateNodes(\n history.abstract?.rightNodes,\n history.abstract?.rightNodesCount\n );\n const rollbackAbstract =\n historyAction === \"rollback\"\n ? translateHistory(history.rollBackIdInfo).abstract\n : null;\n\n const abstract = i18n.t(\n fullActionI18nKeyMap[historyAction] ?? historyAction,\n {\n category,\n nodes,\n leftNodes,\n rightNodes,\n nodeChanges: history.abstract?.nodeChanges?.join(\", \"),\n relationChanges: history.abstract?.relationChanges?.join(\", \"),\n leftObjectId,\n rightObjectId,\n rollbackAbstract,\n }\n );\n\n return {\n category,\n action,\n leftObjectId,\n rightObjectId,\n nodes,\n leftNodes,\n rightNodes,\n abstract,\n rollbackAbstract,\n };\n}\n\nfunction translateNodes(nodes: string[] = [], total: number, separator = \", \") {\n return i18n.t(`${NS}:${K.NODE}`, {\n nodes: nodes.join(separator),\n context: total > nodes.length ? \"ellipsis\" : undefined,\n count: total,\n });\n}\n","import React, { useRef, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n} from \"@next-bricks/basic/popover\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport moment from \"moment\";\nimport styleText from \"./styles.shadow.css\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport {\n WorkspaceApi_getChangeHistory,\n NextBuilderModels,\n} from \"@next-api-sdk/next-builder-sdk\";\nimport { translateHistory } from \"./utils.js\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedEasyopsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\ninterface HistoryData\n extends Partial<NextBuilderModels.ModelWorkspaceChangeHistory> {\n translation: Record<string, string>;\n}\n\nexport interface WorkbenchHistoryActionProps {\n appId: string;\n projectId: string;\n}\n\n/**\n * 项目变更历史\n * @insider\n */\nexport\n@defineElement(\"visual-builder.workbench-history-action\", {\n styleTexts: [styleText],\n})\nclass WorkbenchHistoryAction\n extends ReactNextElement\n implements WorkbenchHistoryActionProps\n{\n @property()\n accessor appId: string;\n\n @property()\n accessor projectId: string;\n\n /**\n * 点击历史项标题触发\n */\n @event({ type: \"history.item.click\" })\n accessor #historyItemClickEvent!: EventEmitter<\n HistoryData & { enableRollback: boolean }\n >;\n #handleHistoryItemClick = (\n data: HistoryData & { enableRollback: boolean }\n ): void => {\n this.#historyItemClickEvent.emit(data);\n };\n\n /**\n * 点击回滚触发\n */\n @event({ type: \"rollback\" })\n accessor #rollbackEvent!: EventEmitter<HistoryData>;\n #handleRollback = (data: HistoryData): void => {\n this.#rollbackEvent.emit(data);\n };\n\n /**\n * 回滚全部\n */\n @event({ type: \"rollback.all\" })\n accessor #rollbackAllEvent!: EventEmitter<void>;\n #handleRollbackAll = (): void => {\n this.#rollbackAllEvent.emit();\n };\n\n render() {\n return (\n <WorkbenchHistoryActionComponent\n appId={this.appId}\n projectId={this.projectId}\n onHistoryItemClick={this.#handleHistoryItemClick}\n onRollback={this.#handleRollback}\n onRollbackAll={this.#handleRollbackAll}\n />\n );\n }\n}\n\ninterface WorkbenchHistoryActionComponentProps\n extends WorkbenchHistoryActionProps {\n onHistoryItemClick?: (\n data: HistoryData & { enableRollback: boolean }\n ) => void;\n onRollback?: (data: HistoryData) => void;\n onRollbackAll?: () => void;\n}\n\nexport function WorkbenchHistoryActionComponent(\n props: WorkbenchHistoryActionComponentProps\n) {\n const { appId, onHistoryItemClick, onRollback, onRollbackAll } = props;\n const { t } = useTranslation(NS);\n\n const [loading, setLoading] = useState(false);\n const [hideLoadMore, setHideLoadMore] = useState(true);\n const [allLoaded, setAllLoaded] = useState(false);\n const [historyList, setHistoryList] = useState<HistoryData[]>([]);\n const lastTs = useRef<string>(\"\");\n\n const handleLoadList = (isFirst?: boolean) => {\n setLoading(true);\n WorkspaceApi_getChangeHistory(appId, { ts: lastTs.current, limit: 20 })\n .then((result) => {\n setHistoryList((pre) => {\n const list = result.list.map((v) => ({\n ...v,\n translation: translateHistory(v),\n }));\n return isFirst ? list : pre.concat(list);\n });\n lastTs.current = result.ts;\n setAllLoaded(result.list.length < 20);\n setHideLoadMore(result.list.length < 20);\n })\n .catch((error) => {\n handleHttpError(error);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const handleBeforeVisibleChange = (e: CustomEvent<boolean>) => {\n if (e.detail) {\n setHideLoadMore(true);\n setAllLoaded(false);\n setHistoryList([]);\n lastTs.current = \"\";\n handleLoadList(true);\n }\n };\n\n return (\n <WrappedPopover\n placement=\"bottom\"\n trigger=\"click\"\n arrow={true}\n arrowColor=\"var(--color-fill-bg-container-4)\"\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <WrappedButton\n slot=\"anchor\"\n shape=\"circle\"\n className=\"history-action\"\n icon={{\n lib: \"antd\",\n icon: \"history\",\n theme: \"outlined\",\n }}\n />\n <div>\n <div className=\"history-title\">History</div>\n <div className=\"history-list\">\n {historyList.length ? (\n <>\n {historyList.map((v, i) => {\n return (\n <HistoryItem\n key={`${v.uniqueKey}-${v.ts}`}\n data={v}\n enableRollback={i !== 0 && v.action !== \"rollback\"}\n current={i === 0}\n onHistoryItemClick={onHistoryItemClick}\n onRollback={onRollback}\n />\n );\n })}\n {!hideLoadMore && (\n <span className=\"load-more-container\">\n <WrappedLink\n className=\"load-more\"\n disabled={loading}\n onClick={() => handleLoadList()}\n >\n {t(K.LOAD_MORE)}\n </WrappedLink>\n </span>\n )}\n {allLoaded && (\n <span className=\"end-container\">\n The End\n <WrappedIcon\n className=\"rollback-all\"\n lib=\"antd\"\n icon=\"rollback\"\n theme=\"outlined\"\n onClick={() => onRollbackAll()}\n />\n </span>\n )}\n </>\n ) : (\n <div className=\"empty\">{loading ? t(K.LOADING) : t(K.NO_DATA)}</div>\n )}\n </div>\n {/* 点击历史详情会打开 modal 来展示,这里提供一个 slot,编排将 modal 放置在这里,使其成为 popover 的 children,才能防止用户在操作 modal 过程中意外关闭 popover */}\n <slot />\n </div>\n </WrappedPopover>\n );\n}\n\ninterface HistoryItemProps {\n data: HistoryData;\n enableRollback?: boolean;\n current?: boolean;\n onHistoryItemClick?: (\n data: HistoryData & { enableRollback: boolean }\n ) => void;\n onRollback?: (data: HistoryData) => void;\n}\n\nfunction HistoryItem(props: HistoryItemProps) {\n const { data, enableRollback, current, onHistoryItemClick, onRollback } =\n props;\n\n const ts = moment(Number(data.ts) / 1000000);\n const duration = moment.duration(ts.diff(moment()));\n const humanizedTime =\n duration.days() <= -1\n ? ts.format(\"YYYY-MM-DD HH:mm:ss\")\n : duration.humanize(true, { ss: 0, s: 60, m: 60, h: 24 });\n\n return (\n <div className=\"item-container\">\n <div className=\"item-title\">\n <div\n className=\"title-left\"\n onClick={() => onHistoryItemClick({ ...data, enableRollback })}\n >\n <div className=\"topic\" title={data.translation.abstract}>\n {data.translation.abstract}\n </div>\n {current && <div className=\"branch\">(current)</div>}\n </div>\n <div className=\"title-right\">\n {enableRollback && (\n <WrappedIcon\n className=\"rollback\"\n lib=\"antd\"\n icon=\"rollback\"\n theme=\"outlined\"\n onClick={() => onRollback(data)}\n />\n )}\n </div>\n </div>\n <div className=\"item-info\">\n <WrappedEasyopsAvatar\n className=\"avatar\"\n nameOrInstanceId={data.user}\n size=\"xs\"\n />\n <div className=\"time\">{humanizedTime}</div>\n <div className=\"operator\">{data.user}</div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nconst autoFocusedSets = new Set<string>();\n\nexport interface PageArchNodeProps {\n label?: string;\n type?: PageArchNodeType;\n active?: boolean;\n external?: ExtraNodeData;\n subNodes?: ExtraNodeData[];\n autoFocusOnce?: string;\n notSynced?: boolean;\n disableChildAppend?: boolean;\n}\n\nexport interface ExtraNodeData {\n label: string;\n id: string;\n}\n\nexport interface SubNodeContextMenuData extends ContextMenuDetail {\n node: ExtraNodeData;\n}\n\nexport interface ContextMenuDetail {\n clientX: number;\n clientY: number;\n}\n\nexport type PageArchNodeType = \"page\" | \"board\";\n\n/**\n * 构件 `visual-builder.page-arch-node`\n */\nexport\n@defineElement(\"visual-builder.page-arch-node\", {\n styleTexts: [styleText],\n})\nclass PageArchNode extends ReactNextElement implements PageArchNodeProps {\n @property()\n accessor label: string | undefined;\n\n @property()\n accessor type: PageArchNodeType | undefined;\n\n @property({ attribute: false })\n accessor external: ExtraNodeData | undefined;\n\n @property({ attribute: false })\n accessor subNodes: ExtraNodeData[] | undefined;\n\n // @property()\n // accessor thumbnail: string | undefined;\n\n @property({ type: Boolean, render: false })\n accessor active: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor notSynced: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor disableChildAppend: boolean | undefined;\n\n @property()\n accessor autoFocusOnce: string | undefined;\n\n @event({ type: \"label.editing.change\" })\n accessor #labelEditingChange: EventEmitter<boolean>;\n\n #handleLabelEditingChange = (value: boolean) => {\n this.#labelEditingChange.emit(value);\n };\n\n @event({ type: \"label.change\" })\n accessor #labelChange: EventEmitter<string>;\n\n #handleLabelChange = (value: string) => {\n this.#labelChange.emit(value);\n };\n\n @event({ type: \"node.click\" })\n accessor #nodeClick: EventEmitter<void>;\n\n #handleNodeClick = () => {\n this.#nodeClick.emit();\n };\n\n @event({ type: \"node.dblclick\" })\n accessor #nodeDoubleClick: EventEmitter<void>;\n\n #handleNodeDoubleClick = () => {\n this.#nodeDoubleClick.emit();\n };\n\n @event({ type: \"node.contextmenu\" })\n accessor #nodeContextMenu: EventEmitter<ContextMenuDetail>;\n\n #handleNodeContextMenu = (data: ContextMenuDetail) => {\n this.#nodeContextMenu.emit(data);\n };\n\n @event({ type: \"child.append\" })\n accessor #childAppend: EventEmitter<void>;\n\n #handleChildAppend = () => {\n this.#childAppend.emit();\n };\n\n @event({ type: \"external.click\" })\n accessor #externalClick: EventEmitter<ExtraNodeData>;\n\n #handleExternalClick = (data: ExtraNodeData) => {\n this.#externalClick.emit(data);\n };\n\n @event({ type: \"subNode.dblclick\" })\n accessor #subNodeDoubleClick: EventEmitter<ExtraNodeData>;\n\n #handleSubNodeDoubleClick = (data: ExtraNodeData) => {\n this.#subNodeDoubleClick.emit(data);\n };\n\n @event({ type: \"subNode.contextmenu\" })\n accessor #subNodeContextMenu: EventEmitter<SubNodeContextMenuData>;\n\n #handleSubNodeContextMenu = (data: SubNodeContextMenuData) => {\n this.#subNodeContextMenu.emit(data);\n };\n\n render() {\n return (\n <PageArchNodeComponent\n label={this.label}\n type={this.type}\n external={this.external}\n subNodes={this.subNodes}\n autoFocusOnce={this.autoFocusOnce}\n onLabelEditingChange={this.#handleLabelEditingChange}\n onLabelChange={this.#handleLabelChange}\n onNodeClick={this.#handleNodeClick}\n onNodeDoubleClick={this.#handleNodeDoubleClick}\n onNodeContextMenu={this.#handleNodeContextMenu}\n onChildAppend={this.#handleChildAppend}\n onExternalClick={this.#handleExternalClick}\n onSubNodeDoubleClick={this.#handleSubNodeDoubleClick}\n onSubNodeContextMenu={this.#handleSubNodeContextMenu}\n />\n );\n }\n}\n\nexport interface PageArchNodeComponentProps extends PageArchNodeProps {\n onLabelEditingChange?(value: boolean): void;\n onLabelChange?(value: string): void;\n onNodeClick?(): void;\n onNodeDoubleClick?(): void;\n onNodeContextMenu?(data: ContextMenuDetail): void;\n onChildAppend?(): void;\n onExternalClick?(data: ExtraNodeData): void;\n onSubNodeDoubleClick?(data: ExtraNodeData): void;\n onSubNodeContextMenu?(data: SubNodeContextMenuData): void;\n}\n\nexport function PageArchNodeComponent({\n label,\n type: _type,\n external,\n subNodes,\n autoFocusOnce,\n onLabelEditingChange,\n onLabelChange,\n onNodeClick,\n onNodeDoubleClick,\n onNodeContextMenu,\n onChildAppend,\n onExternalClick,\n onSubNodeDoubleClick,\n onSubNodeContextMenu,\n}: PageArchNodeComponentProps) {\n const type = _type === \"board\" ? \"board\" : \"page\";\n const [currentLabel, setCurrentLabel] = useState(label);\n const [editingLabel, setEditingLabel] = useState(false);\n const editingLabelInitialized = useRef(false);\n const [shouldEmitLabelChange, setShouldEmitLabelChange] = useState(false);\n const labelInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setCurrentLabel(label);\n }, [label]);\n\n const handleEditLabel = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setEditingLabel(true);\n }, []);\n\n useEffect(() => {\n if (autoFocusOnce && !autoFocusedSets.has(autoFocusOnce)) {\n autoFocusedSets.add(autoFocusOnce);\n setTimeout(() => {\n setEditingLabel(true);\n }, 1);\n }\n }, [autoFocusOnce]);\n\n useEffect(() => {\n if (editingLabel) {\n // Prevent scroll when focusing.\n // Otherwise the diagram svg may be clipped in Chrome.\n labelInputRef.current?.focus({ preventScroll: true });\n labelInputRef.current?.select();\n }\n }, [editingLabel]);\n\n useEffect(() => {\n if (editingLabelInitialized.current) {\n onLabelEditingChange?.(editingLabel);\n } else {\n editingLabelInitialized.current = true;\n }\n }, [editingLabel, onLabelEditingChange]);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentLabel(event.target.value);\n },\n []\n );\n\n const handleInputKeydown = useCallback((event: React.KeyboardEvent) => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Enter\" || key === 13) {\n labelInputRef.current?.blur();\n }\n }, []);\n\n const handleInputBlur = useCallback(() => {\n setEditingLabel(false);\n setShouldEmitLabelChange(true);\n }, []);\n\n useEffect(() => {\n if (shouldEmitLabelChange) {\n onLabelChange?.(currentLabel);\n setShouldEmitLabelChange(false);\n }\n }, [currentLabel, onLabelChange, shouldEmitLabelChange]);\n\n const handleChildAppend = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onChildAppend?.();\n },\n [onChildAppend]\n );\n\n const handleExternalClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onExternalClick?.(external);\n },\n [external, onExternalClick]\n );\n\n const stopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n // 32 + 8\n const extraHeight = Math.max(0, Math.floor((subNodes?.length ?? 0) - 3)) * 38;\n\n return (\n <>\n <div\n className={classNames(\"node\", type, { \"editing-label\": editingLabel })}\n style={{ height: type === \"board\" ? 70 : 130 + extraHeight }}\n onClick={onNodeClick}\n onDoubleClick={onNodeDoubleClick}\n onContextMenu={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onNodeContextMenu?.({\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }}\n >\n <input\n className=\"label-input\"\n value={currentLabel}\n ref={labelInputRef}\n onChange={handleInputChange}\n onKeyDown={handleInputKeydown}\n onBlur={handleInputBlur}\n onDoubleClick={stopPropagation}\n onContextMenu={stopPropagation}\n onMouseDown={stopPropagation}\n />\n <div\n className=\"label\"\n onDoubleClick={handleEditLabel}\n onMouseDown={stopPropagation}\n >\n {currentLabel}\n </div>\n {type === \"board\" ? (\n <div className=\"icon-container\">\n <WrappedIcon lib=\"antd\" icon=\"unordered-list\" />\n </div>\n ) : (\n <div\n className=\"thumbnail-container\"\n style={{\n height: 98 + extraHeight,\n }}\n >\n <div className=\"thumbnail-placeholder\">\n <WrappedIcon lib=\"antd\" icon=\"ellipsis\" />\n </div>\n {external && (\n <div\n className=\"external\"\n onClick={handleExternalClick}\n onDoubleClick={stopPropagation}\n onMouseDown={stopPropagation}\n >\n <WrappedIcon lib=\"antd\" icon=\"desktop\" />\n <span className=\"external-label\">{external.label}</span>\n </div>\n )}\n {subNodes?.length ? (\n <div className=\"sub-nodes\">\n {subNodes.map((subNode) => (\n <SubNode\n key={subNode.id}\n subNode={subNode}\n onSubNodeDoubleClick={onSubNodeDoubleClick}\n onSubNodeContextMenu={onSubNodeContextMenu}\n />\n ))}\n </div>\n ) : null}\n </div>\n )}\n </div>\n <div\n className=\"add-button\"\n role=\"button\"\n onClick={handleChildAppend}\n onMouseDown={stopPropagation}\n >\n <WrappedIcon lib=\"fa\" icon=\"plus\" />\n </div>\n </>\n );\n}\n\nexport interface SubNodeProps {\n subNode: ExtraNodeData;\n onSubNodeDoubleClick?(data: ExtraNodeData): void;\n onSubNodeContextMenu?(data: SubNodeContextMenuData): void;\n}\n\nfunction SubNode({\n subNode,\n onSubNodeDoubleClick,\n onSubNodeContextMenu,\n}: SubNodeProps) {\n return (\n <WrappedTooltip key={subNode.id} content={subNode.label}>\n <div\n className=\"sub-node\"\n onDoubleClick={(e) => {\n e.stopPropagation();\n onSubNodeDoubleClick?.(subNode);\n }}\n onContextMenu={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onSubNodeContextMenu?.({\n node: subNode,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }}\n >\n <div className=\"sub-node-skeleton-title\"></div>\n <div className=\"sub-node-skeleton-content\"></div>\n <div className=\"sub-node-skeleton-button\"></div>\n </div>\n </WrappedTooltip>\n );\n}\n","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 enum K {\n CONTRACT_OPTIONS_TIPS_PREFIX = \"CONTRACT_OPTIONS_TIPS_PREFIX\",\n CONTRACT_OPTIONS_TIPS_SUFFIX = \"CONTRACT_OPTIONS_TIPS_SUFFIX\",\n CONTRACT_VALIDATE_MESSAGE = \"CONTRACT_VALIDATE_MESSAGE\",\n}\n\nconst en: Locale = {\n CONTRACT_OPTIONS_TIPS_PREFIX: \"Only the first\",\n CONTRACT_OPTIONS_TIPS_SUFFIX:\n \"items are displayed, please search for more results\",\n CONTRACT_VALIDATE_MESSAGE: \"Please fill in the correct contract name \",\n};\n\nconst zh: Locale = {\n CONTRACT_OPTIONS_TIPS_PREFIX: \"仅展示前\",\n CONTRACT_OPTIONS_TIPS_SUFFIX: \"项,更多结果请搜索\",\n CONTRACT_VALIDATE_MESSAGE: \"请填写正确的契约名称\",\n};\n\nexport const NS = \"bricks/visual-builder/contract-select\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState } from \"react\";\nimport { K, NS, locales } from \"../i18n.js\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport {\n Input,\n InputEvents,\n InputEventsMap,\n InputProps,\n} from \"@next-bricks/form/input\";\n\ninitializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onChange: \"change\",\n }\n);\n\nexport interface MoreOptionProps {\n slot?: string;\n itemsCount?: number;\n onBlur?(itemsCount: number): void;\n}\n\nexport function MoreOption(props: MoreOptionProps): React.ReactElement {\n const { itemsCount = 20, onBlur } = props;\n const [count, setCount] = useState(itemsCount);\n const { t } = useTranslation(NS);\n const [edit, setEdit] = useState(false);\n\n const handleChange = (e: CustomEvent<string>): void => {\n setCount(Number(e.detail));\n };\n\n const handleClick = (): void => {\n setEdit(true);\n };\n\n const handleBlur = (): void => {\n setEdit(false);\n onBlur?.(count);\n };\n\n return (\n <div className=\"options-tips\" slot={props.slot}>\n {t(K.CONTRACT_OPTIONS_TIPS_PREFIX)}{\" \"}\n {edit ? (\n <WrappedInput\n autoFocus={true}\n inputStyle={{ width: 65 }}\n value={String(count)}\n onBlur={handleBlur}\n onChange={handleChange as any}\n />\n ) : (\n <span>\n {count} <WrappedIcon icon=\"edit\" lib=\"antd\" onClick={handleClick} />\n </span>\n )}{\" \"}\n {t(K.CONTRACT_OPTIONS_TIPS_SUFFIX)}\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n AutoComplete,\n AutoCompleteProps,\n AutoCompleteEvents,\n AutoCompleteEventsMap,\n} from \"@next-bricks/form/auto-complete\";\nimport { debounce, isNil } from \"lodash\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport { useContractList } from \"./useContractList.js\";\nimport { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport { i18n } from \"@next-core/i18n\";\nimport { MoreOption } from \"./more-option/MoreOption\";\nimport { UseSingleBrickConf } from \"@next-core/types\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nconst WrappedAutoComplete = wrapBrick<\n AutoComplete,\n AutoCompleteProps,\n AutoCompleteEvents,\n AutoCompleteEventsMap\n>(\"eo-auto-complete\", {\n onChange: \"change\",\n});\n\n/**\n * 契约选择构件\n */\nexport\n@defineElement(\"visual-builder.contract-select\", {\n styleTexts: [styleText],\n})\nclass EoContractSelect extends FormItemElementBase {\n @property()\n accessor name: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({\n attribute: false,\n })\n accessor value: any | undefined;\n\n @property({\n attribute: false,\n })\n accessor suffix:\n | { useBrick: UseSingleBrickConf | UseSingleBrickConf[] }\n | undefined;\n\n @event({ type: \"change\" })\n accessor #changeEvent: EventEmitter<string>;\n\n handleChange = (v: string) => {\n this.#changeEvent.emit(v);\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 labelBrick={this.labelBrick}\n helpBrick={this.helpBrick}\n notRender={this.notRender}\n trigger=\"handleChange\"\n validator={checkContractRule}\n >\n <EoContractSelectComponent\n value={this.value}\n suffix={this.suffix}\n validateState={this.validateState}\n onChange={this.handleChange}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport interface EoContractSelectProps {\n value?: string;\n validateState?: string;\n placeholder?: string;\n inputStyle?: React.CSSProperties;\n suffix?: { useBrick: UseSingleBrickConf | UseSingleBrickConf[] };\n onChange?(value: string): void;\n}\n\ninterface ProcessedContractField {\n name: string;\n version: string;\n}\n\nfunction splitContract(value: string): ProcessedContractField {\n if (typeof value !== \"string\")\n return {\n name: \"\",\n version: \"\",\n };\n const [name, version] = value.split(\":\");\n return {\n name,\n version,\n };\n}\n\nfunction isContractApi(name: string): boolean {\n return /.*@.*:\\d+\\.\\d+\\.\\d+/.test(name);\n}\n\nexport function checkContractRule(value: any): string {\n if (!isNil(value) && !isContractApi(value)) {\n return i18n.t(`${NS}:${K.CONTRACT_VALIDATE_MESSAGE}`);\n }\n return \"\";\n}\n\nexport function EoContractSelectComponent({\n value,\n inputStyle,\n validateState,\n suffix,\n onChange,\n}: EoContractSelectProps) {\n const [q, setQ] = useState<string>();\n const [pageSize, setPageSize] = useState(20);\n const contractList = useContractList({ q, pageSize });\n const [mixedValue, setMixedValue] = useState(splitContract(value));\n const [versionOptions, setVersionOptions] = useState([]);\n\n useEffect(() => {\n setMixedValue(splitContract(value));\n }, [value]);\n\n const handlerSearch = useMemo(\n () =>\n debounce((value) => {\n setQ(value);\n }, 200),\n []\n );\n\n const handlerNameChange = (event: CustomEvent<string>): void => {\n const name = event.detail;\n // 直接 copy 契约全名\n if (isContractApi(name)) {\n setMixedValue(splitContract(name));\n onChange?.(name);\n } else {\n const versionList = contractList.find(\n (item) => item.fullContractName === name\n )?.version;\n\n const autofillVersion = versionList?.[0] ?? \"\";\n setVersionOptions(versionList);\n setMixedValue({\n name,\n version: autofillVersion,\n });\n onChange?.(`${name}:${autofillVersion}`);\n }\n handlerSearch(name);\n };\n\n const handleVersionChange = (event: CustomEvent<string>): void => {\n const version = event.detail;\n setMixedValue({\n name: mixedValue.name,\n version,\n });\n\n onChange?.(`${mixedValue.name}:${version}`);\n };\n\n return (\n <div className=\"contract-wrapper\">\n <WrappedAutoComplete\n className=\"contract-selector\"\n options={contractList?.map((item) => ({\n value: item.fullContractName,\n label: item.fullContractName,\n }))}\n value={mixedValue.name}\n inputStyle={inputStyle}\n validateState={validateState}\n onChange={handlerNameChange as any}\n >\n <MoreOption\n onBlur={(pageSize) => setPageSize(pageSize)}\n slot=\"options-toolbar\"\n />\n </WrappedAutoComplete>\n <WrappedAutoComplete\n className=\"version-selector\"\n value={mixedValue.version}\n validateState={validateState}\n options={versionOptions?.map((v) => ({ value: v, label: v }))}\n onChange={handleVersionChange as any}\n ></WrappedAutoComplete>\n {suffix?.useBrick ? (\n <ReactUseMultipleBricks {...suffix}></ReactUseMultipleBricks>\n ) : null}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { ContractCenterApi_searchContract } from \"@next-api-sdk/next-builder-sdk\";\n\ninterface ContractParams {\n pageSize?: number;\n q?: string;\n}\n\ninterface ContractField {\n fullContractName?: string;\n version: string[];\n}\n\nexport function useContractList({\n pageSize = 20,\n q = \"\",\n}: ContractParams): ContractField[] {\n const [contractList, setContractList] = useState<ContractField[]>([]);\n const [query, setQ] = useState<string>(q);\n const [count, setCount] = useState(pageSize);\n\n useEffect(() => {\n setQ(q);\n }, [q]);\n\n useEffect(() => {\n setCount(pageSize);\n }, [pageSize]);\n\n useEffect(() => {\n (async () => {\n try {\n const { list } = await ContractCenterApi_searchContract(\n {\n page: 1,\n pageSize: count,\n fullContractName: query,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n\n setContractList(list as ContractField[]);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n setContractList([]);\n }\n })();\n }, [query, count]);\n\n return contractList;\n}\n","import React, { useState, useCallback, useRef, useEffect } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Menu } from \"@next-bricks/basic/menu\";\nimport { MenuItem, MenuComponentProps } from \"@next-bricks/basic/menu-item\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n\nconst WrappedMenu = wrapBrick<Menu, unknown>(\"eo-menu\");\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nconst MINIMAL_PADDING = 8;\n\nexport type Position = [x: number, y: number];\n\nexport interface OpenInfo {\n /**\n * 通常设为 `[EVENT.clientX, EVENT.clientY]`\n */\n position: Position;\n}\n\nexport interface SnippetItem {\n text: string;\n icon?: GeneralIconProps;\n disabled?: boolean;\n hidden?: boolean;\n tooltip?: string;\n dragConf?: {\n format: string;\n data: unknown;\n };\n}\n\nexport interface SnippetOption {\n title?: string;\n children?: SnippetItem[];\n}\n\n/**\n * 构件 `visual-builder.generate-snippets-context-menu`\n */\nexport\n@defineElement(\"visual-builder.generate-snippets-context-menu\", {\n styleTexts: [styleText],\n})\nclass GenerateSnippetsContextMenu extends ReactNextElement {\n @property({\n attribute: false,\n })\n accessor options: SnippetOption[] | undefined;\n\n @property({\n type: Boolean,\n })\n accessor active: boolean | undefined;\n\n @property({ attribute: false })\n accessor position: Position | undefined;\n\n @event({ type: \"item.drag.start\" })\n accessor #itemDragStartEvent!: EventEmitter<SnippetItem>;\n\n @event({ type: \"item.drag.end\" })\n accessor #itemDragEndEvent!: EventEmitter<SnippetItem>;\n\n @method()\n open({ position }: OpenInfo) {\n this.active = true;\n this.position = position;\n }\n\n @method()\n close() {\n this.active = false;\n this.position = undefined;\n }\n\n #handleItemDragStart = (action: SnippetItem): void => {\n this.#itemDragStartEvent.emit(action);\n };\n\n #handleItemDragEnd = (action: SnippetItem): void => {\n this.#itemDragEndEvent.emit(action);\n };\n\n disconnectedCallback() {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return (\n <GenerateSnippetsContextMenuComponent\n active={this.active}\n element={this}\n position={this.position}\n onItemDragStart={this.#handleItemDragStart}\n onItemDragEnd={this.#handleItemDragEnd}\n options={this.options}\n />\n );\n }\n}\n\nexport interface GenerateSnippetsContextMenuProps {\n options?: SnippetOption[];\n active?: boolean;\n position?: Position;\n element?: GenerateSnippetsContextMenu;\n onItemDragStart?: (data: SnippetItem) => void;\n onItemDragEnd?: (data: SnippetItem) => void;\n}\n\nexport function GenerateSnippetsContextMenuComponent({\n element,\n active,\n onItemDragEnd,\n onItemDragStart,\n options,\n position,\n}: GenerateSnippetsContextMenuProps) {\n const [dragging, setDragging] = useState(false);\n const containerRef = useRef<any>(null);\n const [fixedPosition, setFixedPosition] = useState<Position | null>(null);\n\n const handleMaskClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n element?.close();\n },\n [element]\n );\n\n const handleItemStart = useCallback(\n (e: React.DragEvent, data: SnippetItem) => {\n setDragging(true);\n\n if (data.dragConf) {\n e.dataTransfer?.setData(\n data.dragConf.format,\n JSON.stringify(data.dragConf.data)\n );\n }\n (e.target as HTMLElement).classList.add(\"dragging\");\n onItemDragStart?.(data);\n },\n [onItemDragStart]\n );\n\n const handleItemDragEnd = useCallback(\n (e: React.DragEvent, data: SnippetItem) => {\n setDragging(false);\n (e.target as HTMLElement).classList.remove(\"dragging\");\n element?.close();\n onItemDragEnd?.(data);\n },\n [element, onItemDragEnd]\n );\n\n useEffect(() => {\n lockBodyScroll(element!, active);\n }, [active, element]);\n\n useEffect(() => {\n if (active && containerRef.current && position) {\n const rect = containerRef.current.getBoundingClientRect();\n const width = rect.width + MINIMAL_PADDING;\n const height = rect.height + MINIMAL_PADDING;\n const { clientWidth, clientHeight } = document.documentElement;\n const fixed = [...position] as Position;\n if (clientWidth > width && position[0] + width > clientWidth) {\n fixed[0] = position[0] - width;\n }\n if (clientHeight > height && position[1] + height > clientHeight) {\n fixed[1] = clientHeight - height;\n }\n setFixedPosition(fixed);\n } else {\n setFixedPosition(null);\n }\n }, [active, position]);\n\n return (\n <>\n {!dragging && (\n <div\n className=\"mask\"\n onClick={handleMaskClick}\n onContextMenu={handleMaskClick}\n />\n )}\n <div\n className=\"container\"\n ref={containerRef}\n style={{\n left: (fixedPosition ?? position)?.[0],\n top: (fixedPosition ?? position)?.[1],\n visibility: fixedPosition ? \"visible\" : \"hidden\",\n }}\n >\n {options?.map((op, index) => (\n <div key={index}>\n <div className=\"title\">{op.title}</div>\n {op.children?.length && (\n <WrappedMenu>\n {op.children?.map((item, itemIndex) => {\n return (\n <WrappedTooltip\n content={item.tooltip}\n hoist\n placement=\"left\"\n key={itemIndex}\n >\n <WrappedMenuItem\n disabled={item.disabled}\n icon={item.icon}\n draggable={!item.disabled}\n onDragStart={(e: React.DragEvent) =>\n handleItemStart(e, item)\n }\n onDragEnd={(e: React.DragEvent) =>\n handleItemDragEnd(e, item)\n }\n >\n {item.text}\n </WrappedMenuItem>\n </WrappedTooltip>\n );\n })}\n </WrappedMenu>\n )}\n </div>\n ))}\n </div>\n </>\n );\n}\n","export enum K {}\n\nconst en: Locale = {};\n\nconst zh: Locale = {};\n\nexport const NS = \"bricks/visual-builder/generate-snippets-context-menu\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\";\ntype BundledTheme = \"light-plus\" | \"dark-plus\";\ntype Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;\n\nconst bundledLanguages = {\n json: () => import(\"@shikijs/langs/json\"),\n javascript: () => import(\"@shikijs/langs/javascript\"),\n js: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n ts: () => import(\"@shikijs/langs/typescript\"),\n html: () => import(\"@shikijs/langs/html\"),\n \"html-derivative\": () => import(\"@shikijs/langs/html-derivative\"),\n xml: () => import(\"@shikijs/langs/xml\"),\n css: () => import(\"@shikijs/langs/css\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n md: () => import(\"@shikijs/langs/markdown\"),\n mermaid: () => import(\"@shikijs/langs/mermaid\"),\n mmd: () => import(\"@shikijs/langs/mermaid\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n shellscript: () => import(\"@shikijs/langs/shellscript\"),\n bash: () => import(\"@shikijs/langs/shellscript\"),\n sh: () => import(\"@shikijs/langs/shellscript\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n zsh: () => import(\"@shikijs/langs/shellscript\"),\n python: () => import(\"@shikijs/langs/python\"),\n py: () => import(\"@shikijs/langs/python\"),\n go: () => import(\"@shikijs/langs/go\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n} as Record<BundledLanguage, DynamicImportLanguageRegistration>;\n\nconst bundledThemes = {\n \"light-plus\": lightPlus,\n \"dark-plus\": darkPlus,\n} as Record<BundledTheme, ThemeInput>;\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter<\n BundledLanguage,\n BundledTheme\n>({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import(\"shiki/wasm\")),\n});\n\nconst {\n codeToHtml,\n codeToHast,\n codeToTokensBase,\n codeToTokens,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState,\n} = /* @__PURE__ */ createSingletonShorthands<BundledLanguage, BundledTheme>(\n createHighlighter,\n {\n guessEmbeddedLanguages(code, lang) {\n if (lang === \"markdown\" || lang === \"md\") {\n return [\"mermaid\"];\n }\n },\n }\n);\n\nexport {\n bundledLanguages,\n bundledThemes,\n codeToHast,\n codeToHtml,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getLastGrammarState,\n getSingletonHighlighter,\n};\nexport type { BundledLanguage, BundledTheme, Highlighter };\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport { getSingletonHighlighter } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { MarkdownComponent } from \"@next-shared/markdown\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { AvatarProps, EoAvatar } from \"@next-bricks/basic/avatar\";\nimport type { Message } from \"./index\";\n\nconst WrappedAvatar = wrapBrick<EoAvatar, AvatarProps>(\"eo-avatar\");\n\nexport interface MessageComponentProps {\n message: Message;\n}\n\ntype MessageChunk =\n | MessageChunkPlain\n | MessageChunkMarkdown\n | MessageChunkCommand;\n\ninterface MessageChunkPlain {\n type: \"plain\";\n content: string;\n}\n\ninterface MessageChunkMarkdown {\n type: \"markdown\";\n content: string;\n}\n\ninterface MessageChunkCommand {\n type: \"command\";\n command: string;\n content: string;\n raw: string;\n}\n\nexport function MessageComponent({ message }: MessageComponentProps) {\n const messageChunks = useMemo(() => {\n const chunks: MessageChunk[] = [];\n\n if (message.role === \"assistant\") {\n const chunkRegExp =\n /(?:^|\\n)```(easy_cmd_\\S+)\\n([\\s\\S]*?)\\n```(?:$|\\n)/gm;\n\n let match: RegExpExecArray | null;\n let lastIndex = 0;\n while ((match = chunkRegExp.exec(message.content))) {\n const [fullMatch, command, content] = match;\n const start = match.index;\n const previousText = message.content.slice(lastIndex, start).trim();\n if (previousText.length > 0) {\n chunks.push({\n type: \"markdown\",\n content: previousText,\n });\n }\n chunks.push({\n type: \"command\",\n command,\n content: content.trim(),\n raw: fullMatch,\n });\n lastIndex = chunkRegExp.lastIndex;\n }\n const lastText = message.content.slice(lastIndex).trim();\n if (lastText.length > 0) {\n chunks.push({\n type: \"markdown\",\n content: lastText,\n });\n }\n } else {\n chunks.push({\n type: \"plain\",\n content: message.content,\n });\n }\n\n return chunks;\n }, [message.content, message.role]);\n\n const contentRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const contentElement = contentRef.current;\n if (!contentElement) {\n return;\n }\n setTimeout(() => {\n const textingElements =\n contentElement.parentElement.querySelectorAll(\".texting\");\n for (const element of textingElements) {\n element.classList.remove(\"texting\");\n }\n if (!message.partial) {\n return;\n }\n // Find the last text element descendant of the message element,\n // and apply a texting effect to it.\n let current = contentElement as HTMLElement;\n while (current) {\n const lastChild = current.lastChild;\n if (\n lastChild?.nodeType === Node.ELEMENT_NODE &&\n ((lastChild as HTMLElement)?.tagName !== \"DETAILS\" ||\n (lastChild as HTMLDetailsElement).open)\n ) {\n current = lastChild as HTMLElement;\n } else {\n // Handle a special case: the last child is a text node without any\n // non-whitespace content. In such case, we should apply the texting\n // effect to the previous sibling element.\n if (\n lastChild?.nodeType === Node.TEXT_NODE &&\n lastChild.textContent.trim().length === 0 &&\n lastChild.previousSibling?.nodeType === Node.ELEMENT_NODE\n ) {\n current = lastChild.previousSibling as HTMLElement;\n } else {\n break;\n }\n }\n }\n current.classList.add(\"texting\");\n }, 1);\n }, [message.partial, message.content]);\n\n return (\n <div className={classNames(\"message\", { failed: message.failed })}>\n <div className=\"avatar\">\n <WrappedAvatar\n icon={{\n lib: \"easyops\",\n icon: message.role === \"assistant\" ? \"robot\" : \"account\",\n }}\n size=\"small\"\n className={`role-${message.role}`}\n />\n </div>\n <div className=\"main\">\n <div className=\"label\">\n {message.role === \"assistant\" ? \"Assistant\" : \"You\"}\n </div>\n <div className=\"content\" ref={contentRef}>\n {messageChunks.map((chunk, index) => (\n <MessageChunkComponent key={index} chunk={chunk} />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction MessageChunkComponent({ chunk }: { chunk: MessageChunk }) {\n return (\n <>\n {chunk.type === \"markdown\" ? (\n <div className=\"markdown\">\n <MarkdownComponent content={chunk.content} />\n </div>\n ) : chunk.type === \"command\" ? (\n <>\n <details className=\"command\">\n <summary>```{chunk.command}</summary>\n <pre>\n <code>{chunk.content}</code>\n </pre>\n </details>\n </>\n ) : (\n <div className=\"plain\">{chunk.content}</div>\n )}\n </>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { MessageComponent } from \"./MessageComponent\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface Message {\n role: \"user\" | \"assistant\";\n content: string;\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface ChatConversationProps {\n messages?: Message[];\n errorBoundary?: boolean;\n}\n\ntype StoryboardChunk = StoryboardChunkBlock | StoryboardChunkBlockItem;\n\ninterface StoryboardChunkBlock {\n type: \"block\";\n uuid: string;\n children: string[];\n name: string;\n seq: number;\n hasContainer?: boolean;\n}\n\ninterface StoryboardChunkBlockItem {\n type: \"item\";\n uuid: string;\n storyboard?: BrickConf;\n}\n\n/**\n * 用于 Visual Builder 的智能聊天对话列表\n */\nexport\n@defineElement(\"visual-builder.chat-conversation\", {\n styleTexts: [styleText],\n})\nclass ChatConversation\n extends ReactNextElement\n implements ChatConversationProps\n{\n @property({ attribute: false })\n accessor messages: Message[] | undefined;\n\n @property({ type: Boolean })\n accessor errorBoundary: boolean | undefined;\n\n @event({ type: \"storyboard.update\" })\n accessor #storyboardUpdate!: EventEmitter<BrickConf[]>;\n\n #handleStoryboardUpdate = (storyboard: BrickConf[]) => {\n this.#storyboardUpdate.emit(storyboard);\n };\n\n render() {\n return (\n <ChatConversationComponent\n host={this}\n messages={this.messages}\n errorBoundary={this.errorBoundary}\n onStoryboardUpdate={this.#handleStoryboardUpdate}\n />\n );\n }\n}\n\nexport interface ChatConversationComponentProps extends ChatConversationProps {\n host: Element;\n onStoryboardUpdate?: (storyboard: BrickConf[]) => void;\n}\n\nexport function ChatConversationComponent({\n messages,\n host,\n errorBoundary,\n onStoryboardUpdate,\n}: ChatConversationComponentProps) {\n const chunkRegExp = useMemo(\n () =>\n /(?:^|\\n)```easy_cmd_vb_block_(page|storyboard)\\n([\\s\\S]*?)\\n```(?:$|\\n)/gm,\n []\n );\n const lastIndexMapRef = useRef(new Map<number, number>());\n const [chunks, setChunks] = useState<StoryboardChunk[]>([]);\n const manualScrolledRef = useRef(false);\n\n useEffect(() => {\n for (const message of messages ?? []) {\n if (message.role !== \"assistant\") {\n continue;\n }\n chunkRegExp.lastIndex = lastIndexMapRef.current.get(message.key) ?? 0;\n let match: RegExpExecArray | null;\n const newChunks: StoryboardChunk[] = [];\n let newPage = false;\n while ((match = chunkRegExp.exec(message.content))) {\n lastIndexMapRef.current.set(message.key, chunkRegExp.lastIndex);\n const [, type, content] = match;\n try {\n const parsed = JSON.parse(content) as unknown;\n if (type === \"page\") {\n newPage = true;\n newChunks.push(\n ...(parsed as (StoryboardChunkBlock | StoryboardChunkBlockItem)[])\n );\n } else {\n newChunks.push({\n ...(parsed as StoryboardChunkBlockItem),\n type: \"item\",\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"parse storyboard failed:\", e);\n }\n }\n if (newPage) {\n setChunks(newChunks);\n } else if (newChunks.length > 0) {\n setChunks((prev) => [...prev, ...newChunks]);\n }\n }\n }, [chunkRegExp, messages]);\n\n const [storyboard, setStoryboard] = useState<BrickConf[]>([]);\n\n useEffect(() => {\n const blocks = [];\n const storyboardMap = new Map<string, BrickConf>();\n for (const chunk of chunks) {\n if (chunk.type === \"block\") {\n blocks.push(chunk);\n } else if (chunk.storyboard) {\n storyboardMap.set(chunk.uuid, chunk.storyboard);\n }\n }\n\n // Sort by seq ascent\n blocks.sort((a, b) => a.seq - b.seq);\n\n const contentLayout: BrickConf = {\n brick: \"eo-content-layout\",\n children: [],\n };\n const main: BrickConf = {\n brick: \"eo-main-view\",\n children: [\n {\n brick: \"eo-page-title\",\n slot: \"pageTitle\",\n properties: {\n pageTitle: \"测试页面\",\n },\n },\n ],\n };\n\n let hasContent = false;\n for (const block of blocks) {\n // No container\n if (block.name === \"全局操作区\") {\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n main.children.push({\n ...childBrick,\n properties: {\n ...childBrick.properties,\n slot: undefined,\n },\n errorBoundary,\n slot: \"toolbar\",\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n block: {\n uuid: block.uuid,\n name: block.name,\n },\n },\n } as BrickConf);\n hasContent = true;\n }\n }\n } else {\n const rawBrick = storyboardMap.get(block.uuid);\n if (rawBrick) {\n const brick: BrickConf = {\n ...rawBrick,\n children: [],\n errorBoundary,\n iid: `block:${block.uuid}`,\n meta: {\n type: \"block\",\n uuid: block.uuid,\n name: block.name,\n },\n } as BrickConf;\n hasContent = true;\n contentLayout.children.push(brick);\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n brick.children.push({\n ...childBrick,\n errorBoundary,\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n },\n } as BrickConf);\n }\n }\n } else if (!block.hasContainer) {\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n contentLayout.children.push({\n ...childBrick,\n errorBoundary,\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n },\n } as BrickConf);\n hasContent = true;\n }\n }\n }\n }\n }\n\n main.children.push(contentLayout);\n\n setStoryboard((prev) =>\n hasContent ? [main] : prev.length === 0 ? prev : []\n );\n }, [chunks, errorBoundary]);\n\n useEffect(() => {\n onStoryboardUpdate?.(storyboard);\n }, [onStoryboardUpdate, storyboard]);\n\n const verticalScrollParent = useMemo(() => {\n // Lookup the nearest scrollable parent (on axis y)\n let current = host;\n while (current) {\n const overflowY = getComputedStyle(current, null).getPropertyValue(\n \"overflow-y\"\n );\n if (overflowY === \"auto\" || overflowY === \"scroll\") {\n return current;\n }\n if (current.parentNode instanceof ShadowRoot) {\n current = current.parentNode.host;\n } else if (current.parentNode instanceof Element) {\n current = current.parentNode;\n } else {\n break;\n }\n }\n return document.scrollingElement || document.documentElement;\n }, [host]);\n\n useEffect(() => {\n if (manualScrolledRef.current) {\n return;\n }\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n verticalScrollParent.scrollTo(0, verticalScrollParent.scrollHeight!);\n }, 1);\n }, [messages, verticalScrollParent]);\n\n useEffect(() => {\n const handleScroll = () => {\n manualScrolledRef.current =\n verticalScrollParent.scrollTop +\n verticalScrollParent.clientHeight! +\n 6 <\n verticalScrollParent.scrollHeight;\n };\n verticalScrollParent.addEventListener(\"scroll\", handleScroll);\n return () => {\n verticalScrollParent.removeEventListener(\"scroll\", handleScroll);\n };\n }, [verticalScrollParent]);\n\n return (\n <>\n {messages?.map((message, index) => (\n <MessageComponent\n key={message.key ?? `index-${index}`}\n message={message}\n />\n ))}\n </>\n );\n}\n","import React from \"react\";\nimport { InspectOutline } from \"../data-providers/chat-preview/interfaces.js\";\n\nexport interface InspectOutlineComponentProps extends InspectOutline {\n variant: \"hover\" | \"active\";\n}\n\nexport function InspectOutlineComponent({\n variant,\n width,\n height,\n left,\n top,\n label,\n}: InspectOutlineComponentProps): React.ReactElement {\n const borderWidth = 4;\n return (\n <div\n className={\"outline \" + variant}\n style={{\n width: width + borderWidth * 2,\n height: height + borderWidth * 2,\n left: left - borderWidth,\n top: top - borderWidth,\n }}\n >\n <div className=\"label\">{label}</div>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { BrickConf, MicroApp } from \"@next-core/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport classNames from \"classnames\";\nimport type {\n InspectOutline,\n InspectSelector,\n} from \"../data-providers/chat-preview/interfaces\";\nimport { InspectOutlineComponent } from \"./InspectOutlineComponent\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatPreviewProps {\n storyboard?: BrickConf | BrickConf[];\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n inspecting?: boolean;\n}\n\n/**\n * 构件 `visual-builder.chat-preview`\n */\nexport\n@defineElement(\"visual-builder.chat-preview\", {\n styleTexts: [styleText],\n})\nclass ChatPreview extends ReactNextElement {\n @property({ attribute: false })\n accessor storyboard: BrickConf | BrickConf[] | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n @property({ type: Boolean })\n accessor inspecting: boolean | undefined;\n\n @event({ type: \"activeTarget.change\" })\n accessor #activeTargetChangeEvent!: EventEmitter<InspectSelector | undefined>;\n #handleActiveTargetChange = (target: InspectSelector | undefined) => {\n this.#activeTargetChangeEvent.emit(target);\n };\n\n @method()\n select(payload: InspectSelector) {\n const iframeWin = this.shadowRoot?.querySelector(\"iframe\")?.contentWindow;\n iframeWin?.postMessage(\n {\n channel: \"chat-preview\",\n type: \"select\",\n payload,\n },\n location.origin\n );\n }\n\n render() {\n return (\n <ChatPreviewComponent\n storyboard={this.storyboard}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n inspecting={this.inspecting}\n onActiveTargetChange={this.#handleActiveTargetChange}\n />\n );\n }\n}\n\nexport interface ChatPreviewComponentProps extends ChatPreviewProps {\n onActiveTargetChange?(target: InspectSelector | undefined): void;\n}\n\nexport function ChatPreviewComponent({\n storyboard,\n theme,\n uiVersion,\n app,\n inspecting,\n onActiveTargetChange,\n}: ChatPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [scroll, setScroll] = useState({ x: 0, y: 0 });\n const [hoverOutlines, setHoverOutlines] = useState<InspectOutline[]>([]);\n const [activeOutlines, setActiveOutlines] = useState<InspectOutline[]>([]);\n const [adjustedHoverOutlines, setAdjustedHoverOutlines] = useState<\n InspectOutline[]\n >([]);\n const [adjustedActiveOutlines, setAdjustedActiveOutlines] = useState<\n InspectOutline[]\n >([]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_inject;\n inject(\"visual-builder.inject-chat-preview-agent\", {\n ...pkg,\n filePath: `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n });\n }, [ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n render(\n \"yaml\",\n {\n yaml: safeDump(storyboard, {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }),\n },\n {\n app,\n theme,\n uiVersion,\n }\n );\n }, [app, ready, storyboard, theme, uiVersion]);\n\n const handleMouseOut = useMemo(() => {\n if (!initialized) {\n return;\n }\n return () => {\n // Delay posting message to allow iframe inner hovering message be sent before\n // mouse out from iframe itself.\n setTimeout(() => {\n window.postMessage({\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: { outlines: [] },\n });\n }, 100);\n };\n }, [initialized]);\n\n useEffect(() => {\n const listener = (event: MessageEvent) => {\n if (event.data?.channel === \"chat-preview\") {\n switch (event.data.type) {\n case \"initialized\":\n setInitialized(true);\n break;\n case \"inspect-hover\":\n setHoverOutlines(event.data.payload.outlines);\n break;\n case \"scroll\":\n setScroll(event.data.payload);\n break;\n case \"inspect-active\":\n setActiveOutlines(event.data.payload.outlines);\n break;\n }\n }\n };\n window.addEventListener(\"message\", listener);\n return () => {\n window.removeEventListener(\"message\", listener);\n };\n }, []);\n\n useEffect(() => {\n if (!initialized) {\n return;\n }\n iframeRef.current?.contentWindow?.postMessage(\n {\n channel: \"chat-preview\",\n type: \"toggle-inspecting\",\n payload: {\n inspecting,\n },\n },\n location.origin\n );\n }, [initialized, inspecting]);\n\n const adjustOutlines = useCallback(\n (outlines: InspectOutline[]): InspectOutline[] => {\n return outlines.map((outline) => {\n const minScale = 1;\n const offsetLeft = iframeRef?.current?.offsetLeft ?? 0;\n const offsetTop = iframeRef?.current?.offsetTop ?? 0;\n const { width, height, left, top, ...rest } = outline;\n return {\n width: width * minScale,\n height: height * minScale,\n left: (left - scroll.x) * minScale + offsetLeft,\n top: (top - scroll.y) * minScale + offsetTop,\n ...rest,\n };\n });\n },\n [scroll.x, scroll.y]\n );\n\n useEffect(() => {\n onActiveTargetChange(activeOutlines[0]);\n }, [activeOutlines, onActiveTargetChange]);\n\n useEffect(() => {\n setAdjustedActiveOutlines(adjustOutlines(activeOutlines));\n }, [activeOutlines, adjustOutlines]);\n\n useEffect(() => {\n setAdjustedHoverOutlines(adjustOutlines(hoverOutlines));\n }, [hoverOutlines, adjustOutlines]);\n\n return (\n <div className={classNames(\"container\", { inspecting })}>\n <iframe\n ref={iframeRef}\n src={`${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n onMouseOut={handleMouseOut}\n />\n {adjustedHoverOutlines.map((outline, index) => (\n <InspectOutlineComponent key={index} variant=\"hover\" {...outline} />\n ))}\n {adjustedActiveOutlines.map((outline, index) => (\n <InspectOutlineComponent key={index} variant=\"active\" {...outline} />\n ))}\n </div>\n );\n}\n","// istanbul ignore file: working in progress\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-devtools-shared/src/backend/views/Highlighter/index.js\nimport { debounce } from \"lodash\";\nimport type {\n InspectOutline,\n InspectSelector,\n InspectTarget,\n} from \"./interfaces.js\";\n\nlet isInspecting = false;\nconst IID_ITEM_PREFIX = \"item:\";\nlet currentHoverElement: Element | null = null;\n\nexport function toggleInspecting(inspecting: boolean): void {\n if (isInspecting === inspecting) {\n return;\n }\n isInspecting = inspecting;\n\n const method = inspecting ? \"addEventListener\" : \"removeEventListener\";\n\n window[method](\"click\", onClick as EventListener, true);\n window[method](\"mousedown\", onMouseEvent as EventListener, true);\n window[method](\"mouseover\", onMouseEvent as EventListener, true);\n window[method](\"mouseup\", onMouseEvent as EventListener, true);\n window[method](\"pointerdown\", onMouseEvent as EventListener, true);\n window[method](\"pointerover\", onMouseEvent as EventListener, true);\n window[method](\"pointerup\", onMouseEvent as EventListener, true);\n window[method](\"pointerleave\", onPointerLeave as EventListener, true);\n window[method](\"pointermove\", onPointerMove as EventListener, true);\n}\n\nfunction getElementsIncludingInShadowDOM(\n iid: string,\n isRoot?: boolean\n): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n function walk(root: Document | ShadowRoot) {\n const candidates = root.querySelectorAll<HTMLElement>(\n isRoot ? iid : `[data-iid=\"${iid}\"]`\n );\n elements.push(...candidates);\n\n // If elements are found in the document, we should stop searching in shadow DOM.\n if (root === document && candidates.length > 0) {\n return;\n }\n\n // These useBrick in v3 bricks will be inside shadow DOM.\n for (const item of root.querySelectorAll(\"*\")) {\n if (item.shadowRoot) {\n walk(item.shadowRoot);\n }\n }\n }\n\n walk(document);\n\n return elements;\n}\n\nexport function select(selector: InspectSelector) {\n const iid = `${selector.type}:${selector.uuid}`;\n const elements = getElementsIncludingInShadowDOM(iid);\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-active\",\n payload: {\n outlines: elements.map((element) =>\n getTargetOutline({ ...selector, element, label: getLabel(element) })\n ),\n },\n },\n location.origin\n );\n}\n\nfunction onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n selectByClick(event);\n}\n\nfunction onMouseEvent(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst hoverOnTarget = debounce(\n (eventTargets: EventTarget[], clientX: number, clientY: number) => {\n let targets = getPossibleBrickTargets(eventTargets);\n if (targets.length === 0) {\n for (const element of eventTargets) {\n if (element instanceof HTMLElement && element.shadowRoot) {\n targets = getPossibleBrickTargets(\n element.shadowRoot.elementsFromPoint(clientX, clientY)\n );\n break;\n }\n }\n }\n const hoverElement = targets.length > 0 ? targets[0].element : null;\n if (hoverElement !== currentHoverElement) {\n currentHoverElement = hoverElement;\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: {\n outlines: targets.map(getTargetOutline),\n },\n },\n location.origin\n );\n }\n },\n 20,\n { leading: true }\n);\n\nfunction onPointerMove(event: MouseEvent): void {\n // `event.composedPath()` will be unavailable in debounced callback\n hoverOnTarget(event.composedPath(), event.clientX, event.clientY);\n}\n\nfunction onPointerLeave(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n currentHoverElement = null;\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: { outlines: [] },\n },\n location.origin\n );\n}\n\nfunction selectByClick(event: MouseEvent): void {\n const targets = getPossibleBrickTargets(event.composedPath());\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-active\",\n payload: {\n outlines: targets.map(getTargetOutline),\n },\n },\n location.origin\n );\n}\n\nfunction getPossibleBrickTargets(eventTargets: EventTarget[]) {\n const inspectTargets: InspectTarget[] = [];\n eventTargets.forEach((item) => {\n let iid: string | undefined;\n if (\n (item as Node).nodeType === Node.ELEMENT_NODE &&\n item instanceof HTMLElement &&\n (iid = item.dataset.iid) &&\n iid.startsWith(IID_ITEM_PREFIX)\n ) {\n const uuid = iid.substring(IID_ITEM_PREFIX.length);\n inspectTargets.push({\n type: \"item\",\n uuid,\n label: getLabel(item),\n element: item,\n });\n }\n });\n return inspectTargets;\n}\n\nfunction getTargetOutline(target: InspectTarget): InspectOutline {\n const { element, type, uuid, label } = target;\n const { width, height, left, top } = element.getBoundingClientRect();\n return {\n width,\n height,\n left: left + window.scrollX,\n top: top + window.scrollY,\n type,\n uuid,\n label,\n };\n}\n\nfunction getLabel(element: Element) {\n return element.tagName.toLowerCase().split(\".\").pop();\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { select, toggleInspecting } from \"./chat-preview/inspector\";\n\nlet injected = false;\n\nexport async function injectChatPreviewAgent(): Promise<unknown> {\n if (injected) {\n return;\n }\n injected = true;\n import(\"./chat-preview/styles.css\");\n\n sendMessage({ type: \"initialized\" });\n\n window.addEventListener(\"message\", (e) => {\n if (e.data?.channel === \"chat-preview\") {\n switch (e.data.type) {\n case \"toggle-inspecting\":\n toggleInspecting(e.data.payload.inspecting);\n break;\n case \"select\":\n select(e.data.payload);\n break;\n }\n }\n });\n\n window.addEventListener(\"scroll\", () => {\n sendMessage({\n type: \"scroll\",\n payload: {\n x: window.scrollX,\n y: window.scrollY,\n },\n });\n });\n}\n\nfunction sendMessage(message: object) {\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n ...message,\n },\n location.origin\n );\n}\n\ncustomElements.define(\n \"visual-builder.inject-chat-preview-agent\",\n createProviderClass(injectChatPreviewAgent)\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { isObject } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PreGeneratedPreviewProps {\n generations?: AttributeGeneration[];\n category?: PreviewCategory;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface AttributeGeneration {\n instanceId: string;\n objectId: string;\n propertyId: string;\n propertyName: string;\n displayLevel: number;\n rwType: string;\n category: PreviewCategory;\n storyboard: BrickConf | BrickConf[];\n mockData: unknown[];\n}\n\nexport type PreviewCategory =\n | \"detail-item\"\n | \"form-item\"\n | \"table-column\"\n | \"card-item\"\n | \"metric-item\"\n | \"value\";\n\n/**\n * 构件 `visual-builder.pre-generated-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-preview\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedPreview extends ReactNextElement {\n @property({ attribute: false })\n accessor generations: AttributeGeneration[] | undefined;\n\n /**\n * @default \"value\"\n */\n @property()\n accessor category: PreviewCategory | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n render() {\n return (\n <PreGeneratedPreviewComponent\n generations={this.generations}\n category={this.category}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n />\n );\n }\n}\n\nexport interface PreGeneratedPreviewComponentProps\n extends PreGeneratedPreviewProps {\n //\n}\n\nexport function PreGeneratedPreviewComponent({\n generations,\n category,\n theme,\n uiVersion,\n app,\n}: PreGeneratedPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const candidatesMap = new Map<\n string,\n Map<string, Map<number, AttributeGeneration>>\n >();\n const mocksMap = new Map<string, unknown[]>();\n\n for (const generation of generations) {\n let candidatesByReadWriteType = candidatesMap.get(generation.propertyId);\n if (!candidatesByReadWriteType) {\n candidatesMap.set(\n generation.propertyId,\n (candidatesByReadWriteType = new Map())\n );\n }\n let candidatesByDisplayLevel = candidatesByReadWriteType.get(\n generation.rwType\n );\n if (!candidatesByDisplayLevel) {\n candidatesByReadWriteType.set(\n generation.rwType,\n (candidatesByDisplayLevel = new Map())\n );\n }\n candidatesByDisplayLevel.set(generation.displayLevel ?? 0, generation);\n\n mocksMap.set(generation.propertyId, generation.mockData);\n }\n\n const tableChildren: BrickConf[] = [\n {\n brick: \"div\",\n properties: {\n textContent: \"属性\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"类别\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"展示等级\",\n className: \"head-cell last-col-cell\",\n style: {\n gridColumn: \"span 5\",\n textAlign: \"center\",\n },\n },\n },\n ];\n const table: BrickConf = {\n brick: \"visual-builder.pre-generated-table-view\",\n properties: {\n style: {\n gridTemplateColumns: \"120px 80px repeat(5, 1fr)\",\n },\n },\n children: tableChildren,\n };\n\n let propertyIndex = 0;\n for (const [propertyId, candidatesByReadWriteType] of candidatesMap) {\n let readWriteTypeIndex = 0;\n const isLastProperty = propertyIndex === candidatesMap.size - 1;\n for (const [rwType, candidates] of candidatesByReadWriteType) {\n if (readWriteTypeIndex === 0) {\n let propertyName: string | undefined;\n\n for (const candidate of candidates.values()) {\n propertyName = candidate.propertyName ?? propertyId;\n break;\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: propertyName,\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastProperty,\n }),\n style: {\n gridRow: `span ${candidatesByReadWriteType.size}`,\n },\n },\n });\n }\n\n const isLastRow =\n isLastProperty &&\n readWriteTypeIndex === candidatesByReadWriteType.size - 1;\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: rwType,\n className: classNames(\"body-cell\", { \"last-row-cell\": isLastRow }),\n },\n });\n\n for (let i = -2; i < 3; i++) {\n const candidate = candidates.get(i);\n const candidateCategory = candidate?.category ?? category;\n\n let dataSource: unknown;\n if (candidate?.mockData?.length) {\n const mockValue =\n candidate.mockData[\n Math.floor(Math.random() * candidate.mockData.length)\n ];\n switch (candidateCategory) {\n case \"detail-item\":\n case \"form-item\":\n case \"card-item\":\n dataSource = {\n [propertyId]: mockValue,\n };\n break;\n case \"table-column\":\n dataSource = {\n cellData: mockValue,\n };\n }\n }\n\n const candidateChildren = []\n .concat(candidate?.storyboard ?? [])\n .filter((brick) => {\n if (!isObject(brick)) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected type of storyboard:\", typeof brick);\n return false;\n }\n return true;\n });\n candidateChildren.forEach(fixBrickConf);\n\n let container: BrickConf;\n switch (candidateCategory) {\n case \"form-item\":\n container = {\n brick: \"eo-form\",\n properties: {\n layout: \"inline\",\n values: dataSource,\n className: \"form-container\",\n },\n children: candidateChildren.map((child) => ({\n ...child,\n errorBoundary: true,\n })),\n };\n break;\n case \"card-item\":\n container = {\n brick: \":forEach\",\n dataSource: [dataSource],\n children: candidateChildren.map((child) => ({\n ...child,\n errorBoundary: true,\n })),\n };\n break;\n default:\n container = {\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: candidateChildren,\n dataSource,\n },\n errorBoundary: true,\n };\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-col-cell\": i === 2,\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n ...container,\n errorBoundary: true,\n },\n ],\n });\n }\n\n readWriteTypeIndex++;\n }\n\n propertyIndex++;\n }\n\n // const tbodyChildren: BrickConf[] = [];\n // const table: BrickConf = {\n // brick: \"table\",\n // properties: {\n // className: \"preview-table\",\n // },\n // children: [\n // {\n // brick: \"thead\",\n // children: [\n // {\n // brick: \"tr\",\n // slot: \"head\",\n // children: [\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"属性\",\n // },\n // },\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"类别\",\n // },\n // },\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"展示等级\",\n // colSpan: 5,\n // style: {\n // textAlign: \"center\",\n // }\n // },\n // },\n // ],\n // }\n // ]\n // },\n // {\n // brick: \"tbody\",\n // children: tbodyChildren,\n // },\n // ],\n // };\n\n // for (const [propertyId, candidatesByReadWriteType] of candidatesMap) {\n // let readWriteTypeIndex = 0;\n // for (const [rwType, candidates] of candidatesByReadWriteType) {\n\n // const row: BrickConf[] = []\n\n // if (readWriteTypeIndex === 0) {\n // let propertyName: string | undefined;\n\n // for (const candidate of candidates.values()) {\n // propertyName = candidate.propertyName ?? propertyId;\n // break;\n // }\n\n // row.push({\n // brick: \"td\",\n // properties: {\n // textContent: propertyName,\n // rowSpan: candidatesByReadWriteType.size,\n // },\n // })\n // }\n\n // row.push({\n // brick: \"td\",\n // properties: {\n // textContent: rwType,\n // },\n // });\n\n // for (let i = -2; i < 3; i++) {\n // const candidate = candidates.get(i);\n\n // let dataSource: unknown;\n // if (candidate?.mockData?.length) {\n // const mockValue = candidate.mockData[\n // Math.floor(Math.random() * candidate.mockData.length)\n // ];\n // switch (candidate.category ?? category) {\n // case \"detail-item\":\n // dataSource = {\n // [propertyId]: mockValue\n // };\n // break;\n // case \"table-column\":\n // dataSource = {\n // cellData: mockValue\n // };\n // }\n // }\n\n // row.push({\n // brick: \"td\",\n // children: [\n // {\n // brick: \"visual-builder.pre-generated-container\",\n // properties: {\n // useBrick: candidate?.storyboard ?? [],\n // dataSource,\n // }\n // }\n // ],\n // });\n // }\n // tbodyChildren.push({\n // brick: \"tr\",\n // children: row,\n // });\n\n // readWriteTypeIndex++;\n // }\n // }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(table, {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: previewStyleText,\n }\n );\n }, [app, injected, generations, theme, uiVersion, category]);\n\n // useEffect(() => {\n // if (!injected) {\n // return;\n // }\n // const render = (iframeRef.current?.contentWindow as PreviewWindow)\n // ?._preview_only_render;\n // if (!render) {\n // return;\n // }\n\n // const candidatesMap = new Map<string, AttributeCandidate[]>();\n // const mocksMap = new Map<string, unknown[]>();\n // let maxCandidatesCount = 0;\n\n // for (const generation of generations) {\n // candidatesMap.set(generation.id, generation.candidates);\n // mocksMap.set(generation.id, generation.mocks);\n // maxCandidatesCount = Math.max(\n // maxCandidatesCount,\n // generation.candidates.length\n // );\n // }\n\n // const storyboards: BrickConf[] = [];\n\n // for (let i = 0; i < maxCandidatesCount; i++) {\n // const brick: BrickConf = {\n // brick: \"eo-descriptions\",\n // properties: {\n // column: 1,\n // dataSource: Object.fromEntries(\n // Array.from(mocksMap.entries()).map(([id, mocks]) => [\n // id,\n // mocks[\n // i < mocks.length ? i : Math.floor(Math.random() * mocks.length)\n // ],\n // ])\n // ),\n // list: generations.map((generation) => ({\n // label: generation.name,\n // useChildren: `[${generation.id}]`,\n // })),\n // },\n // children: Array.from(candidatesMap.entries()).flatMap(\n // ([id, candidates]) => {\n // const children = ([] as BrickConf[]).concat(\n // candidates[\n // i < candidates.length\n // ? i\n // : Math.floor(Math.random() * candidates.length)\n // ].storyboard\n // );\n // return children.map((child) => ({\n // ...child,\n // slot: `[${id}]`,\n // }));\n // }\n // ),\n // };\n // storyboards.push(brick);\n // }\n\n // render(\n // \"yaml\",\n // {\n // yaml: safeDump(storyboards, {\n // schema: JSON_SCHEMA,\n // skipInvalid: true,\n // noRefs: true,\n // noCompatMode: true,\n // }),\n // },\n // {\n // app,\n // theme,\n // uiVersion,\n // styleText: `#preview-root { display: flex; flex-wrap: wrap; gap: 2em; }`,\n // }\n // );\n // }, [app, injected, generations, theme, uiVersion]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={`${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n\nfunction fixBrickConf(brick: BrickConf) {\n if (brick.properties?.prefix) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected readonly property of 'prefix' in:\", brick);\n delete brick.properties.prefix;\n }\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement } = createDecorators();\n\n/**\n * 构件 `visual-builder.pre-generated-table-view`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-table-view\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedTableView extends ReactNextElement {\n render() {\n return <PreGeneratedTableViewComponent />;\n }\n}\n\nexport function PreGeneratedTableViewComponent() {\n return <slot />;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport type { UseBrickConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `visual-builder.pre-generated-container`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-container\", {\n shadowOptions: false,\n})\nclass PreGeneratedContainer extends ReactNextElement {\n @property({ attribute: false })\n accessor useBrick: UseBrickConf | undefined;\n\n @property({ attribute: false })\n accessor dataSource: unknown | undefined;\n\n render() {\n return (\n <PreGeneratedContainerComponent\n useBrick={this.useBrick}\n dataSource={this.dataSource}\n />\n );\n }\n}\n\nexport interface PreGeneratedContainerProps {\n useBrick?: UseBrickConf;\n dataSource?: unknown;\n}\n\nexport function PreGeneratedContainerComponent({\n useBrick,\n dataSource,\n}: PreGeneratedContainerProps) {\n if (!useBrick) {\n return null;\n }\n return (\n <ReactUseMultipleBricks\n useBrick={useBrick}\n data={dataSource}\n errorBoundary\n />\n );\n}\n","import { __secret_internals, customEditors } from \"@next-core/runtime\";\nimport { createProviderClass } from \"@next-core/utils/general\";\n\nexport async function checkEditorByName(name: string): Promise<boolean> {\n try {\n await __secret_internals.loadEditors([name]);\n } catch {\n return false;\n }\n const editor = customEditors.get(name);\n\n return !!editor;\n}\n\ncustomElements.define(\n \"visual-builder.check-editor-by-name\",\n createProviderClass(checkEditorByName)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\nimport { ContextConf } from \"@next-core/types\";\n\nexport function getDataDependency(\n contextConfs: ContextConf[],\n keyword: string\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n\n for (const contextConf of contextConfs) {\n const stats = collectMemberUsage(\n [contextConf.if, contextConf.value, contextConf.resolve],\n keyword\n );\n depsMap.set(contextConf, stats);\n }\n\n return depsMap;\n}\n\ncustomElements.define(\n \"visual-builder.get-data-deps\",\n createProviderClass(getDataDependency)\n);\n","import { ContextConf } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport { MenuIcon } from \"@next-shared/general/types\";\nimport { getDataDependency } from \"./get-data-dependency\";\nimport { cloneDeep } from \"lodash\";\n\ninterface DataItem extends ContextConf {\n $key?: string;\n path?: string;\n}\n\ninterface NodeItem {\n name: string;\n key: string;\n path?: string;\n icon?: MenuIcon;\n data?: DataItem;\n unreachable?: boolean;\n children?: NodeItem[];\n}\n\ninterface DepsItem {\n deps: string[];\n node: NodeItem;\n}\n\ninterface DepsOptions {\n nodeList?: NodeItem[];\n dependencyList: DepsItem[];\n parents?: NodeItem[];\n result?: NodeItem[];\n}\n\nfunction processNodeList(nodeList: NodeItem[], options: DepsOptions) {\n nodeList.forEach((node) => {\n processNodeItem(node, { ...options, nodeList });\n });\n}\n\nfunction processNodeItem(nodeItem: NodeItem, options: DepsOptions) {\n const { dependencyList, nodeList, parents, result } = options;\n\n const data = cloneDeep(nodeItem);\n result.push(data);\n\n const find = dependencyList.find((dep) => dep.node.key === data.key);\n\n if (find.deps?.length && !parents.some((item) => item.key === data.key)) {\n const children = (data.children = []) as NodeItem[];\n processDataDeps(find, {\n dependencyList,\n nodeList,\n parents: [...parents, data],\n result: children,\n });\n }\n}\n\nfunction processDataDeps(depsData: DepsItem, options: DepsOptions) {\n const collects = [] as NodeItem[];\n\n depsData.deps.forEach((name) => {\n // 有可能存在同名的两个数据,一起展示\n const matches = options.nodeList.filter((item) => item.name === name);\n collects.push(...matches);\n });\n\n processNodeList(collects, options);\n}\n\nexport function getDependencyTree(\n nodeDataList: NodeItem[],\n options: {\n dataType: string;\n }\n): NodeItem[] {\n const nodeList = nodeDataList;\n const dependencyMap = getDataDependency(\n nodeList.map((item) => item.data),\n options.dataType\n );\n\n const dependencyList = [] as DepsItem[];\n for (const [curData, value] of dependencyMap) {\n dependencyList.push({\n deps: Array.from(value.usedProperties),\n node: nodeList.find((node) => node.data === curData),\n });\n }\n\n const result = [] as NodeItem[];\n\n processNodeList(nodeList, {\n result,\n dependencyList,\n parents: [],\n });\n\n return result;\n}\n\ncustomElements.define(\n \"visual-builder.get-dependency-tree\",\n createProviderClass(getDependencyTree)\n);\n","// istanbul ignore file\nimport { __secret_internals as _internals } from \"@next-core/runtime\";\nimport type { BrickPackage } from \"@next-core/types\";\n\ninterface DLL {\n (moduleId: \"tYg3\"): {\n developHelper: {\n getBrickPackages?: () => BrickPackage[];\n };\n };\n}\n\nlet __secret_internals = _internals;\n\n// Make v3 bricks compatible with Brick Next v2.\ntry {\n const dll = (window as unknown as { dll?: DLL }).dll;\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n const { developHelper: developHelperV2 } = dll(\"tYg3\");\n __secret_internals = {\n getBrickPackagesById(id: string) {\n return developHelperV2\n .getBrickPackages?.()\n .find((pkg) => pkg.id === id);\n },\n } as any;\n }\n} catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Try to use v2 runtime APIs failed:\", e);\n}\n\n/**\n * The `__secret_internals` that is compatible in both v3 and v2.\n */\nexport const __compat_internals = __secret_internals;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, ContextConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { __compat_internals } from \"../shared/compat_internals\";\nimport type { VisualConfig } from \"./raw-data-interfaces\";\nimport { convertToStoryboard } from \"./convert\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface RawDataPreviewProps {\n previewUrl?: string;\n generations?: AttributeGeneration[];\n mocks?: Record<string, unknown>[];\n busy?: boolean;\n category?: PreviewCategory;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface AttributeGeneration {\n generationId?: string;\n objectId: string;\n objectName: string;\n propertyId: string;\n propertyName: string;\n propertyType?: string;\n propertyValues?: unknown[];\n propertyInstanceId?: string;\n comment?: string;\n approved?: boolean;\n candidates: VisualConfig[] | null;\n mockData: Record<string, unknown>[];\n}\n\nexport interface CommentDetail {\n comment: string;\n propertyInstanceId?: string;\n}\n\nexport interface ApproveDetail {\n approved: boolean;\n propertyInstanceId?: string;\n}\n\ninterface BasePreviewMessage {\n channel: \"raw-data-preview\";\n}\n\ninterface CommentMessage extends BasePreviewMessage {\n type: \"comment\";\n payload: CommentDetail;\n}\n\ninterface ApproveMessage extends BasePreviewMessage {\n type: \"approve\";\n payload: ApproveDetail;\n}\n\ninterface ViewAttrPromptMessage extends BasePreviewMessage {\n type: \"viewAttrPrompt\";\n payload: AttributeGeneration;\n}\n\ninterface UpdatePropertyToggleStateMessage extends BasePreviewMessage {\n type: \"updatePropertyToggleState\";\n payload: string[];\n}\n\ninterface UpdatePropertyExpandStateMessage extends BasePreviewMessage {\n type: \"updatePropertyExpandState\";\n payload: string[];\n}\n\ninterface UpdatePropertyApproveStateMessage extends BasePreviewMessage {\n type: \"updatePropertyApproveState\";\n payload: string[];\n}\n\ntype PreviewMessage =\n | CommentMessage\n | ApproveMessage\n | ViewAttrPromptMessage\n | UpdatePropertyToggleStateMessage\n | UpdatePropertyExpandStateMessage\n | UpdatePropertyApproveStateMessage;\n\nexport type PreviewCategory =\n | \"detail-item\"\n | \"form-item\"\n | \"table-column\"\n | \"card-item\"\n | \"metric-item\"\n | \"value\";\n\n/**\n * 构件 `visual-builder.raw-data-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.raw-data-preview\", {\n styleTexts: [styleText],\n})\nclass RawDataPreview extends ReactNextElement {\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor generations: AttributeGeneration[] | undefined;\n\n @property({ attribute: false })\n accessor mocks: Record<string, unknown>[] | undefined;\n\n @property({ type: Boolean })\n accessor busy: boolean | undefined;\n\n /**\n * @default \"value\"\n */\n @property()\n accessor category: PreviewCategory | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n @event({ type: \"comment\" })\n accessor #commentEvent: EventEmitter<CommentDetail>;\n\n #handleComment = (detail: CommentDetail) => {\n this.#commentEvent.emit(detail);\n };\n\n @event({ type: \"approve\" })\n accessor #approveEvent: EventEmitter<ApproveDetail>;\n\n #handleApprove = (detail: ApproveDetail) => {\n this.#approveEvent.emit(detail);\n };\n\n @event({ type: \"view.attr.prompt\" })\n accessor #viewAttrPromptEvent: EventEmitter<AttributeGeneration>;\n\n #handleViewAttrPrompt = (detail: AttributeGeneration) => {\n this.#viewAttrPromptEvent.emit(detail);\n };\n\n render() {\n return (\n <RawDataPreviewComponent\n previewUrl={this.previewUrl}\n generations={this.generations}\n mocks={this.mocks}\n busy={this.busy}\n category={this.category}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n onComment={this.#handleComment}\n onApprove={this.#handleApprove}\n onViewAttrPrompt={this.#handleViewAttrPrompt}\n />\n );\n }\n}\n\nexport interface RawDataPreviewComponentProps extends RawDataPreviewProps {\n onComment: (detail: CommentDetail) => void;\n onApprove: (detail: ApproveDetail) => void;\n onViewAttrPrompt: (detail: AttributeGeneration) => void;\n}\n\nexport function RawDataPreviewComponent({\n previewUrl,\n generations,\n mocks,\n busy,\n category,\n theme,\n uiVersion,\n app,\n onComment,\n onApprove,\n onViewAttrPrompt,\n}: RawDataPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n const propertyToggleStateRef = useRef<string[]>([]);\n const propertyExpandStateRef = useRef<string[]>([]);\n const propertyApproveStateRef = useRef<string[]>([]);\n\n useEffect(() => {\n propertyApproveStateRef.current =\n generations\n ?.filter((generation) => generation.approved)\n .map((generation) => generation.propertyId) ?? [];\n }, [generations]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n iframeWin.postMessage(\n {\n channel: \"raw-data-preview\",\n type: \"busy\",\n payload: busy,\n },\n location.origin\n );\n }\n }, [busy, ready]);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<PreviewMessage>) => {\n if (data?.channel === \"raw-data-preview\") {\n switch (data.type) {\n case \"comment\":\n onComment(data.payload);\n break;\n case \"approve\":\n onApprove(data.payload);\n break;\n case \"viewAttrPrompt\":\n onViewAttrPrompt(data.payload);\n break;\n case \"updatePropertyToggleState\":\n propertyToggleStateRef.current = data.payload;\n break;\n case \"updatePropertyExpandState\":\n propertyExpandStateRef.current = data.payload;\n break;\n case \"updatePropertyApproveState\":\n propertyApproveStateRef.current = data.payload;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }\n }, [onApprove, onComment, onViewAttrPrompt, ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __compat_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: previewUrl\n ? new URL(pkg.filePath, new URL(previewUrl, location.origin)).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const tableChildren: BrickConf[] = [\n {\n brick: \"div\",\n properties: {\n textContent: \"属性\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"类型\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"原始数据\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"视觉重量 (由低至高)\",\n className: \"head-cell\",\n style: {\n gridColumn: \"span 4\",\n textAlign: \"center\",\n },\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"确认\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n className: \"head-cell last-col-cell\",\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: \"批注\",\n },\n },\n {\n brick: \"span\",\n properties: {\n className: \"tips\",\n textContent: \"(补充提示词,按住 ⌘ 或 ctrl + 回车提交)\",\n },\n },\n ],\n },\n ];\n const table: BrickConf & { context?: ContextConf[] } = {\n brick: \"visual-builder.pre-generated-table-view\",\n context: [\n {\n name: \"propertyToggleState\",\n value: propertyToggleStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyToggleState\",\n payload: \"<% CTX.propertyToggleState %>\",\n },\n ],\n },\n },\n {\n name: \"propertyExpandState\",\n value: propertyExpandStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyExpandState\",\n payload: \"<% CTX.propertyExpandState %>\",\n },\n ],\n },\n },\n {\n name: \"propertyApproveState\",\n value: propertyApproveStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyApproveState\",\n payload: \"<% CTX.propertyApproveState %>\",\n },\n ],\n },\n },\n {\n name: \"busy\",\n },\n ],\n properties: {\n style: {\n gridTemplateColumns:\n \"minmax(120px, 0.5fr) 32px auto repeat(5, 1fr) auto 1fr\",\n },\n },\n children: tableChildren,\n };\n\n for (let i = 0, size = generations.length; i < size; i++) {\n const generation = generations[i];\n const isLastRow = i === size - 1;\n\n const candidatesByVisualWeight = new Map<number, VisualConfig>();\n for (const candidate of generation.candidates ?? []) {\n candidatesByVisualWeight.set(candidate.visualWeight ?? 0, candidate);\n }\n\n tableChildren.push(\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyName ?? generation.propertyId}`,\n },\n },\n {\n // 多个示例的展开/收起按钮\n brick: \"eo-button\",\n properties: {\n className: \"btn-toggle\",\n type: \"text\",\n icon: `<%=\n {\n lib: \"fa\",\n prefix: \"fas\",\n icon: CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) ? \"chevron-up\" : \"chevron-down\",\n }\n %>`,\n },\n events: {\n click: {\n action: \"context.replace\",\n args: [\n \"propertyToggleState\",\n `<%\n CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)})\n ? CTX.propertyToggleState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n : CTX.propertyToggleState.concat(${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n },\n },\n ],\n },\n {\n // 绿色圆点表示已生成\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates?.length\n ? [\n {\n brick: \"eo-icon\",\n properties: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"circle\",\n style: {\n color: generation.generationId\n ? \"var(--palette-green-6)\"\n : \"var(--palette-gray-6)\",\n transformOrigin: \"center center\",\n transform: \"scale(0.5)\",\n },\n },\n },\n ]\n : undefined,\n },\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"eo-link\",\n properties: {\n type: \"text\",\n textContent: generation.propertyType,\n },\n events: {\n click: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"viewAttrPrompt\",\n payload: generation,\n },\n ],\n },\n },\n },\n ],\n }\n );\n\n let values = generation.propertyValues;\n if (!values) {\n const mockList = (generation.mockData ?? mocks ?? []).slice();\n mockList.sort((ma, mb) => {\n const a = ma?.[generation.propertyId];\n const b = mb?.[generation.propertyId];\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n if (aIsArray || bIsArray) {\n return (bIsArray ? b.length : -1) - (aIsArray ? a.length : -1);\n }\n const aIsNil = a == null;\n const bIsNil = b == null;\n if (aIsNil || bIsNil) {\n return (bIsNil ? 0 : 1) - (aIsNil ? 0 : 1);\n }\n\n const aIsEmpty = typeof a === \"string\" && a.length === 0;\n const bIsEmpty = typeof b === \"string\" && b.length === 0;\n if (aIsEmpty || bIsEmpty) {\n return (bIsEmpty ? 0 : 1) - (aIsEmpty ? 0 : 1);\n }\n return 0;\n });\n values = mockList.map((mock) => mock[generation.propertyId]);\n }\n\n // 原始数据\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: values.map((mock, index) => ({\n brick: \"div\",\n if:\n index === 0\n ? true\n : `<%= CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n properties: {\n className: `<%= \\`raw-content\\${ CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)}) ? \" expand\" : \"\" }\\` %>`,\n textContent:\n mock === undefined\n ? \"\"\n : typeof mock === \"string\"\n ? mock\n : JSON.stringify(mock, null, 2),\n },\n })),\n },\n {\n // 原始数据的展开/收起按钮\n brick: \"eo-button\",\n properties: {\n className: \"btn-toggle\",\n type: \"text\",\n icon: `<%=\n {\n lib: \"fa\",\n prefix: \"fas\",\n icon: CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)}) ? \"chevron-up\" : \"chevron-down\",\n }\n %>`,\n },\n events: {\n click: {\n action: \"context.replace\",\n args: [\n \"propertyExpandState\",\n `<%\n CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)})\n ? CTX.propertyExpandState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n : CTX.propertyExpandState.concat(${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n },\n },\n ],\n });\n\n // 生成的编排\n for (let i = -1; i < 3; i++) {\n const candidate = candidatesByVisualWeight.get(i);\n\n let brick: BrickConf;\n if (candidate) {\n brick = convertToStoryboard(candidate, generation.propertyId);\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: brick\n ? values.map((mock, index) => ({\n brick: \"visual-builder.pre-generated-container\",\n if:\n index === 0\n ? true\n : `<%= CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n properties: {\n useBrick: [brick],\n dataSource: {\n [generation.propertyId]: mock,\n },\n },\n errorBoundary: true,\n }))\n : undefined,\n },\n ],\n });\n }\n\n tableChildren.push(\n {\n // 确认 checkbox\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates\n ? [\n {\n brick: \"eo-checkbox\",\n properties: {\n value: `<%= CTX.propertyApproveState.includes(${JSON.stringify(generation.propertyId)}) ? [\"approved\"] : [] %>`,\n options: [{ label: \"\", value: \"approved\" }],\n disabled: `<%= CTX.busy || ${JSON.stringify(!generation.generationId)} %>`,\n },\n events: {\n change: [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"approve\",\n payload: {\n approved: \"<% EVENT.detail.length > 0 %>\",\n propertyInstanceId: generation.propertyInstanceId,\n },\n },\n ],\n },\n {\n action: \"context.replace\",\n args: [\n \"propertyApproveState\",\n `<%\n EVENT.detail.length > 0\n ? CTX.propertyApproveState.concat(${JSON.stringify(generation.propertyId)})\n : CTX.propertyApproveState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n ],\n },\n },\n ]\n : undefined,\n },\n {\n // 批注 textarea\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-col-cell\": true,\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates\n ? [\n {\n brick: \"eo-textarea\",\n properties: {\n value: generation.comment\n ? `<% ${JSON.stringify(generation.comment)} %>`\n : undefined,\n autoSize: true,\n style: {\n width: \"100%\",\n },\n disabled: `<%= CTX.busy || ${JSON.stringify(!generation.generationId)} || CTX.propertyApproveState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n },\n events: {\n keydown: {\n if: \"<% EVENT.code === 'Enter' && (EVENT.metaKey || EVENT.ctrlKey) %>\",\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"comment\",\n payload: {\n comment: \"<% EVENT.target.value %>\",\n propertyInstanceId: generation.propertyInstanceId,\n },\n },\n ],\n },\n },\n },\n ]\n : undefined,\n }\n );\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n table,\n {\n brick: \"eo-message-listener\",\n properties: {\n sameOrigin: true,\n },\n events: {\n message: {\n if: \"<% EVENT.detail.data?.channel === 'raw-data-preview' && EVENT.detail.data.type === 'busy' %>\",\n action: \"context.replace\",\n args: [\"busy\", \"<% EVENT.detail.data.payload %>\"],\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }\n ),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: previewStyleText,\n }\n );\n }, [app, injected, generations, theme, uiVersion, category, mocks]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { defaults } from \"lodash\";\nimport { pathToRegexp, Key } from \"path-to-regexp\";\n\ninterface Option {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\nexport async function parsePath(path: string, options?: Option) {\n const defaultParams = { end: false, strict: false, sensitive: true };\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, defaults(options, defaultParams));\n\n return {\n regexp,\n keys,\n };\n}\n\ncustomElements.define(\n \"visual-builder.parse-path\",\n createProviderClass(parsePath)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { InstanceApi_createInstance } from \"@next-api-sdk/cmdb-sdk\";\n\nexport interface GeneratedView {\n attrInstanceId: string;\n input: string;\n output: string;\n list: unknown[];\n defaultVisualWeight?: number;\n systemPromptVersion?: string;\n}\n\nexport async function batchUpdateRawDataGeneratedView(\n generations: GeneratedView[]\n): Promise<unknown> {\n return Promise.allSettled(\n generations.map(({ attrInstanceId, ...props }) =>\n InstanceApi_createInstance(\"RAW_DATA_GENERATED_VIEW@EASYOPS\", {\n ...props,\n attr: [attrInstanceId],\n })\n )\n );\n}\n\ncustomElements.define(\n \"visual-builder.batch-update-raw-data-generated-view\",\n createProviderClass(batchUpdateRawDataGeneratedView)\n);\n","// istanbul ignore file\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport promptOfBoolean from \"./prompts/raw-data-boolean.md\";\nimport promptOfDateTime from \"./prompts/raw-data-date-time.md\";\nimport promptOfEnum from \"./prompts/raw-data-enum.md\";\nimport promptOfNumber from \"./prompts/raw-data-number.md\";\nimport promptOfOthers from \"./prompts/raw-data-others.md\";\nimport promptOfStructList from \"./prompts/raw-data-struct-list.md\";\nimport promptOfStruct from \"./prompts/raw-data-struct.md\";\nimport promptOfJson from \"./prompts/raw-data-json.md\";\n\nexport function getRawDataSystemPrompts(): Record<string, string> {\n return {\n boolean: promptOfBoolean,\n \"date-time\": promptOfDateTime,\n enum: promptOfEnum,\n number: promptOfNumber,\n others: promptOfOthers,\n \"struct-list\": promptOfStructList,\n struct: promptOfStruct,\n json: promptOfJson,\n };\n}\n\ncustomElements.define(\n \"visual-builder.get-raw-data-system-prompts\",\n createProviderClass(getRawDataSystemPrompts)\n);\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/visual-builder/pre-generated-config\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import type { BrickConf } from \"@next-core/types\";\nimport type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n// import { ALLOWED_COLORS } from \"./constants\";\n\nexport interface RawMetric {\n unit?: string;\n}\n\nexport function convertToChart(\n config: MetricVisualConfig,\n dataSource: unknown,\n metricKey: string,\n metric: RawMetric,\n groupedMetricKeys?: string[],\n counterMetricKey?: string\n): BrickConf | null {\n let brickItem: BrickConf | null = null;\n\n // const color =\n // config.color && ALLOWED_COLORS.includes(config.color)\n // ? `<% THEME.getCssPropertyValue(${JSON.stringify(`--palette-${config.color}-5`)}) %>`\n // : undefined;\n\n // 目前图表构件不支持 bibytes 的 ticks\n const unit = metric.unit === \"bibytes\" ? \"bytes\" : metric.unit;\n\n if (config.size === \"small\") {\n switch (config.chartType) {\n case \"line\":\n brickItem = {\n brick: \"eo-mini-line-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yField: metricKey,\n // lineColor: color,\n width: \"auto\",\n showArea: true,\n },\n };\n break;\n case \"gauge\": {\n const isPercentBase1 = metric.unit === \"percent(1)\";\n const isPercentBase100 =\n metric.unit === \"percent(100)\" || metric.unit === \"%\";\n brickItem = {\n brick: \"chart-v2.gauge-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yField: metricKey,\n height: 100,\n axis: {\n yAxis: {\n unit,\n precision: config.precision,\n min: config.min,\n max:\n config.max ??\n (isPercentBase1 ? 1 : isPercentBase100 ? 100 : undefined),\n },\n },\n thresholdColors:\n isPercentBase1 || isPercentBase100\n ? [\n {\n value: 20,\n color: \"cyan\",\n },\n {\n value: 90,\n color: \"yellow\",\n },\n {\n value: 100,\n color: \"red\",\n },\n ].map(({ value, color }) => ({\n value: isPercentBase100 ? value : value / 100,\n color: `<% THEME.getCssPropertyValue(${JSON.stringify(`--palette-${color}-5`)}) %>`,\n }))\n : undefined,\n },\n };\n break;\n }\n }\n } else {\n switch (config.chartType) {\n case \"line\":\n case \"area\":\n brickItem = {\n brick: \"chart-v2.time-series-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yFields: groupedMetricKeys ?? [metricKey],\n // colors: groupedMetricKeys ? undefined : [color].filter(Boolean),\n height: config.size === \"large\" ? 230 : 200,\n timeFormat: \"HH:mm\",\n areaOpacity: config.chartType === \"line\" ? 0 : undefined,\n axis: {\n yAxis: {\n unit,\n precision: config.precision,\n min: config.min,\n max: config.max,\n shape: \"smooth\",\n },\n },\n ...(counterMetricKey\n ? {\n forceAbsoluteNumbers: true,\n series: {\n [counterMetricKey]: {\n isNegative: true,\n },\n },\n }\n : null),\n areaShape: \"smooth\",\n legends: config.size === \"large\",\n },\n };\n break;\n }\n }\n\n return brickItem;\n}\n","import type { BrickConf, SlotConfOfBricks, SlotsConf } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type {\n ChartConfig,\n Config,\n ContainerConfig,\n DefaultConfig,\n GroupedChartConfig,\n} from \"./index.js\";\nimport { getMemberAccessor } from \"../shared/getMemberAccessor.js\";\nimport {\n convertToStoryboard,\n lowLevelConvertToStoryboard,\n} from \"../raw-data-preview/convert.js\";\nimport { has } from \"lodash\";\nimport { convertToChart } from \"../raw-metric-preview/convert.js\";\n\nexport function convertToBrickConf(\n configList: Config[],\n { type, dataName, dataType, settings }: ContainerConfig\n): BrickConf | null {\n if (!type || !dataName || configList.length === 0) {\n return null;\n }\n\n const dataAccessor = dataType === \"state\" ? \"STATE\" : \"CTX\";\n const valueAccessor = `${dataAccessor}${getMemberAccessor(dataName)}`;\n\n if (type === \"chart\" || type === \"grouped-chart\") {\n const metricConfigList = configList as (ChartConfig | GroupedChartConfig)[];\n const dataSource = `<%= ${valueAccessor}${settings?.pagination || settings?.wrapper ? \".list\" : \"\"} %>`;\n\n const charts = metricConfigList.map(({ candidate, meta }) =>\n convertToChart(\n {\n ...candidate,\n min: meta.counterMetricKey ? undefined : candidate.min,\n },\n dataSource,\n meta.metric.metricKey,\n {\n unit: meta.metric.unit,\n },\n meta.groupedMetricKeys,\n meta.counterMetricKey\n )\n );\n\n if (charts.length === 1) {\n return charts[0];\n }\n\n return {\n brick: \"eo-grid-layout\",\n properties: {\n templateColumns: \"repeat(auto-fill, minmax(500px, 1fr))\",\n gap: \"var(--card-content-gap)\",\n },\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: charts,\n },\n },\n };\n }\n\n const attrConfigList = configList as DefaultConfig[];\n\n if (type === \"cards\") {\n const dataSource = `<%= ${valueAccessor}${settings?.pagination || settings?.wrapper ? \".list\" : \"\"} %>`;\n\n return {\n brick: \"eo-grid-layout\",\n properties: {\n templateColumns: \"repeat(auto-fill, minmax(260px, 1fr))\",\n gap: \"var(--card-content-gap)\",\n },\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [\n {\n brick: \":forEach\",\n dataSource,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [\n {\n brick: \"eo-card-item\",\n properties: {\n cardTitle:\n has(settings?.fields, \"title\") &&\n typeof settings.fields.title === \"string\"\n ? `<% ITEM${getMemberAccessor(settings.fields.title)} %>`\n : undefined,\n description:\n has(settings?.fields, \"description\") &&\n typeof settings.fields.description === \"string\"\n ? `<% ITEM${getMemberAccessor(settings.fields.description)} %>`\n : undefined,\n },\n },\n ],\n },\n },\n },\n ],\n },\n },\n };\n }\n\n const dataSource = `<%= ${\n settings?.pagination\n ? settings?.fields?.pageSize\n ? `{...${valueAccessor},pageSize: ${valueAccessor}${getMemberAccessor(settings.fields.pageSize)}}`\n : valueAccessor\n : settings?.wrapper\n ? valueAccessor\n : `{ list: ${valueAccessor} }`\n } %>`;\n\n const brickMap = new Map<string, BrickConf>();\n for (const config of attrConfigList) {\n if (config.candidate) {\n const brick =\n type === \"table\"\n ? lowLevelConvertToStoryboard(config.candidate, \".cellData\")\n : convertToStoryboard(config.candidate, config.meta.attr.id);\n if (brick) {\n brickMap.set(config.meta.attr.id, getCompatibleBrickConf(brick));\n }\n }\n }\n const slots = Object.fromEntries(\n attrConfigList\n .map((config) => {\n const brick = brickMap.get(config.meta.attr.id);\n return brick\n ? [\n `[${config.meta.attr.id}]`,\n {\n type: \"bricks\",\n bricks: [brick],\n },\n ]\n : null;\n })\n .filter(Boolean)\n );\n\n switch (type) {\n case \"table\":\n return {\n brick: \"eo-next-table\",\n properties: {\n rowKey: \"instanceId\",\n columns: attrConfigList.map(({ meta: { attr } }) => {\n const col: Record<string, unknown> = {\n title: attr.name,\n dataIndex: attr.id,\n key: attr.id,\n };\n if (brickMap.has(attr.id)) {\n col.useChildren = `[${attr.id}]`;\n }\n return col;\n }),\n dataSource,\n ...(settings?.pagination ? null : { pagination: false }),\n },\n slots,\n };\n case \"descriptions\":\n return {\n brick: \"eo-descriptions\",\n properties: {\n column: 2,\n list: attrConfigList.map(({ candidate, meta: { attr } }) => {\n const item: Record<string, unknown> = {\n label: attr.name,\n };\n if (candidate) {\n item.useChildren = `[${attr.id}]`;\n }\n return item;\n }),\n dataSource,\n },\n slots,\n };\n }\n\n return null;\n}\n\nfunction getCompatibleBrickConf(brick: BrickConf) {\n const { children, slots, ...rest } = brick;\n return {\n ...rest,\n slots: childrenToSlots(children, slots),\n };\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(\n getCompatibleBrickConf(child)\n );\n }\n }\n return newSlots;\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { safeDump } from \"js-yaml\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { pick, uniqueId } from \"lodash\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { /* K, */ NS, locales /* , t */ } from \"./i18n.js\";\nimport type { VisualConfig } from \"../raw-data-preview/raw-data-interfaces.js\";\nimport { convertToStoryboard } from \"../raw-data-preview/convert.js\";\nimport type { MetricVisualConfig } from \"../raw-metric-preview/raw-metric-interfaces.js\";\nimport { convertToChart } from \"../raw-metric-preview/convert.js\";\nimport { convertToBrickConf } from \"./convertToBrickConf.js\";\nimport updateWeightMap from \"./updateWeightMap.js?raw\";\nimport type { MetricGroup } from \"../data-providers/get-config-by-data-for-ai.js\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface PreGeneratedConfigProps {\n previewUrl?: string;\n attrList?: Attr[];\n mockList?: Record<string, unknown>[];\n metricGroups?: MetricGroup[];\n containerConfig?: ContainerConfig;\n}\n\nexport type Attr = ObjectAttr | MetricAttr;\n\nexport interface ObjectAttr {\n id: string;\n name: string;\n enum?: unknown[];\n metricKey?: undefined;\n candidates?: VisualConfig[];\n}\n\nexport interface MetricAttr {\n metricKey: string;\n id: string;\n name?: string;\n candidates?: MetricVisualConfig[];\n unit?: string;\n}\n\ninterface GroupedMetric {\n id: number;\n group: string;\n metrics: MetricAttr[];\n counter?: string;\n}\n\ninterface BaseConfigMessage {\n channel: \"pre-generated-config\";\n id?: string; // The unique id for message callbacks\n}\n\ninterface ConfigChangeMessage extends BaseConfigMessage {\n type: \"config-change\";\n payload: PreConfig;\n}\n\ninterface GroupChangeMessage extends BaseConfigMessage {\n type: \"group-change\";\n payload: {\n id: number;\n metrics: string[];\n };\n}\n\ninterface OrderChangeMessage extends BaseConfigMessage {\n type: \"order-change\";\n payload: {\n orderedIds: (string | number)[];\n };\n}\n\ninterface SelectionChangeMessage extends BaseConfigMessage {\n type: \"selection-change\";\n payload: {\n selectedIds: (string | number)[];\n };\n}\n\ninterface GetConfigResponseMessage extends BaseConfigMessage {\n type: \"get-config-response\";\n payload: PreConfig;\n}\n\ntype ConfigMessage =\n | ConfigChangeMessage\n | GroupChangeMessage\n | OrderChangeMessage\n | SelectionChangeMessage\n | GetConfigResponseMessage;\n\nexport interface PreConfig {\n selectedIds: (string | number)[];\n orderedIds: (string | number)[];\n weightMapLiteral: [string | number, number][];\n groupMapLiteral: [number, string[]][];\n}\n\nexport type Config = DefaultConfig | ChartConfig | GroupedChartConfig;\n\nexport interface DefaultConfig {\n meta: DefaultConfigMeta;\n candidate: VisualConfig;\n}\n\nexport interface ChartConfig {\n meta: ChartConfigMeta;\n candidate: MetricVisualConfig;\n}\n\nexport interface GroupedChartConfig {\n meta: GroupedChartConfigMeta;\n candidate: MetricVisualConfig;\n}\n\nexport interface ContainerConfig {\n type:\n | \"table\"\n | \"descriptions\"\n | \"cards\"\n | \"chart\"\n | \"grouped-chart\"\n | null\n | undefined;\n dataName: string;\n dataType?: \"context\" | \"state\";\n settings?: {\n pagination?: boolean;\n wrapper?: boolean;\n fields?: Record<string, string>;\n };\n}\n\n/**\n * 构件 `visual-builder.pre-generated-config`\n */\nexport\n@defineElement(\"visual-builder.pre-generated-config\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedConfig\n extends ReactNextElement\n implements PreGeneratedConfigProps\n{\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor attrList: ObjectAttr[] | undefined;\n\n @property({ attribute: false })\n accessor mockList: Record<string, unknown>[] | undefined;\n\n @property({ attribute: false })\n accessor metricGroups: MetricGroup[] | undefined;\n\n @property({ attribute: false })\n accessor containerConfig: ContainerConfig | undefined;\n\n @event({ type: \"brick.change\" })\n accessor #brickChangeEvent: EventEmitter<BrickConf | null>;\n\n #handleBrickChange = (payload: BrickConf | null) => {\n this.#brickChangeEvent.emit(payload);\n };\n\n render() {\n return (\n <PreGeneratedConfigComponent\n previewUrl={this.previewUrl}\n attrList={this.attrList}\n mockList={this.mockList}\n metricGroups={this.metricGroups}\n containerConfig={this.containerConfig}\n onBrickChange={this.#handleBrickChange}\n root={this}\n />\n );\n }\n}\n\nexport interface PreGeneratedConfigComponentProps\n extends PreGeneratedConfigProps {\n root: HTMLElement;\n onBrickChange: (payload: BrickConf | null) => void;\n}\n\nexport function PreGeneratedConfigComponent({\n previewUrl,\n attrList,\n mockList,\n metricGroups,\n containerConfig,\n root,\n onBrickChange,\n}: PreGeneratedConfigComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n const [config, setConfig] = useState<PreConfig | null>(null);\n const [groupMap, setGroupMap] = useState<Map<number, string[] | null>>(null);\n // Use ref instead of state to avoid re-rendering\n const selectedIdsRef = useRef<(string | number)[] | null>(null);\n const orderedIdsRef = useRef<(string | number)[] | null>(null);\n const eventAgentId = useMemo(() => uniqueId(\"event-agent-\"), []);\n\n const viewType =\n containerConfig?.type === \"chart\"\n ? \"chart\"\n : containerConfig?.type === \"grouped-chart\"\n ? \"grouped-chart\"\n : \"default\";\n\n const viewAttrList = useMemo(() => {\n return viewType === \"default\"\n ? attrList\n : attrList?.filter((attr) => attr.metricKey);\n }, [attrList, viewType]);\n\n const dataSourceList = useMemo(() => {\n return viewType === \"grouped-chart\"\n ? buildGroupedMetrics(viewAttrList as MetricAttr[], metricGroups)\n : viewAttrList;\n }, [metricGroups, viewAttrList, viewType]);\n\n useEffect(() => {\n setGroupMap(null);\n selectedIdsRef.current = null;\n orderedIdsRef.current = null;\n }, [dataSourceList]);\n\n useEffect(() => {\n if (config) {\n const orderedList = config.selectedIds\n .sort(\n (a, b) => config.orderedIds.indexOf(a) - config.orderedIds.indexOf(b)\n )\n .map((id) => dataSourceList.find((item) => item.id === id))\n .filter(Boolean);\n const weightMap = new Map(config.weightMapLiteral);\n const groupMap = new Map(config.groupMapLiteral);\n\n const configList = orderedList.map((item) => {\n const meta = getConfigMeta(\n viewType,\n viewAttrList,\n metricGroups,\n item,\n groupMap\n );\n const candidates =\n meta.viewType === \"grouped-chart\"\n ? meta.metric.candidates?.filter((can) => can.size !== \"small\")\n : (item as ObjectAttr | MetricAttr).candidates;\n const candidate = candidates?.find(\n (can) => can.visualWeight === weightMap.get(item.id)\n );\n return { candidate, meta } as Config;\n });\n\n const brickConf = convertToBrickConf(configList, containerConfig);\n onBrickChange(brickConf);\n }\n }, [\n config,\n containerConfig,\n dataSourceList,\n metricGroups,\n onBrickChange,\n viewAttrList,\n viewType,\n ]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n const iframeWin = iframeRef.current?.contentWindow;\n if (!ready || !iframeWin) {\n return;\n }\n const observer = new ResizeObserver(() => {\n root.style.height = `${iframeWin.document.body.scrollHeight}px`;\n });\n observer.observe(iframeWin.document.body);\n return () => observer.disconnect();\n }, [ready, root]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<ConfigMessage>) => {\n if (data?.channel === \"pre-generated-config\") {\n switch (data.type) {\n case \"config-change\":\n setConfig(data.payload);\n break;\n case \"group-change\":\n setGroupMap(\n (prev) =>\n new Map([\n ...(prev ?? []),\n [data.payload.id, data.payload.metrics],\n ])\n );\n break;\n case \"order-change\":\n orderedIdsRef.current = data.payload.orderedIds;\n break;\n case \"selection-change\":\n selectedIdsRef.current = data.payload.selectedIds;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }, [ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n // const deps = [\"advanced\", \"visual-builder\"];\n const pkgVisualBuilder = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkgVisualBuilder) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkgVisualBuilder = {\n ...pkgVisualBuilder,\n filePath: previewUrl\n ? new URL(\n pkgVisualBuilder.filePath,\n new URL(previewUrl, location.origin)\n ).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkgVisualBuilder.filePath}`,\n };\n\n Promise.allSettled([\n inject(\n \"visual-builder.pre-generated-container\",\n fixedPkgVisualBuilder,\n undefined,\n true\n ),\n ]).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const orderedIds = orderedIdsRef.current;\n const selectedIds = selectedIdsRef.current;\n const orderedList = orderedIds\n ? orderedIds\n .map((id) => dataSourceList.find((item) => item.id === id))\n .filter(Boolean)\n : dataSourceList;\n const selectedItems = selectedIds\n ? orderedList.filter((item) => selectedIds.includes(item.id))\n : (orderedList?.slice(0, 5) ?? []);\n const selectedRowKeys = selectedIds ?? selectedItems.map((attr) => attr.id);\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n {\n brick: \"eo-next-table\",\n errorBoundary: true,\n properties: {\n injectChartV2Styles: true,\n pagination: false,\n rowSelection: true,\n rowKey: \"id\",\n rowDraggable: true,\n bordered: true,\n dataSource: {\n list: orderedList,\n },\n selectedRowKeys,\n columns: [\n ...(viewType === \"chart\"\n ? [\n {\n title: \"指标名\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"20%\",\n },\n {\n title: \"指标别名\",\n dataIndex: \"name\",\n key: \"name\",\n width: \"20%\",\n },\n ]\n : viewType === \"grouped-chart\"\n ? [\n {\n title: \"指标组\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"40%\",\n useBrick: {\n brick: \"eo-select\",\n properties: {\n options: \"<% CTX.metricOptions %>\",\n mode: \"multiple\",\n value:\n \"<% CTX.groupMap.get(DATA.cellData) ?? DATA.rowData.metrics.map((metric) => metric.id) %>\",\n dropdownHoist: true,\n },\n events: {\n change: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"group-change\",\n payload:\n \"<% { id: DATA.cellData, metrics: EVENT.detail.value } %>\",\n },\n ],\n },\n },\n },\n },\n ]\n : [\n {\n title: \"ID\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"20%\",\n },\n {\n title: \"名称\",\n dataIndex: \"name\",\n key: \"name\",\n width: \"20%\",\n },\n ]),\n {\n title: \"预览\",\n dataIndex: \"preview\",\n key: \"preview\",\n useBrick: {\n brick: \"div\",\n children: dataSourceList?.flatMap<BrickConf>((item) => {\n const meta = getConfigMeta(\n viewType,\n viewAttrList,\n metricGroups,\n item,\n groupMap\n );\n\n let filteredCandidates:\n | VisualConfig[]\n | MetricVisualConfig[]\n | undefined;\n let dataSource: unknown;\n if (meta.viewType === \"grouped-chart\") {\n dataSource = mockList?.map((mock) =>\n pick(mock, [\"time\", ...meta.groupedMetricKeys])\n );\n filteredCandidates = meta.metric.candidates?.filter(\n (can) => can.size !== \"small\"\n );\n } else {\n filteredCandidates = (item as Attr).candidates;\n if (meta.viewType === \"chart\") {\n dataSource = mockList?.map((item) =>\n pick(item, [\"time\", meta.metric.metricKey])\n );\n } else {\n dataSource = mockList?.[0] ?? {};\n }\n }\n\n const bricks = filteredCandidates\n ?.map((candidate) => {\n const condition = `<%=\n DATA.rowData.id === ${JSON.stringify(item.id)} &&\n ${JSON.stringify(candidate.visualWeight)} === CTX.weightMap.get(${JSON.stringify(item.id)})\n %>`;\n const brick =\n meta.viewType === \"default\"\n ? convertToStoryboard(\n candidate as VisualConfig,\n (item as ObjectAttr).id\n )\n : convertToChart(\n {\n ...(candidate as MetricVisualConfig),\n min: meta.counterMetricKey\n ? undefined\n : (candidate as MetricVisualConfig).min,\n },\n \"<% DATA %>\",\n meta.metric.metricKey,\n {\n unit: meta.metric.unit,\n },\n meta.groupedMetricKeys,\n meta.counterMetricKey\n );\n if (brick) {\n return {\n if: condition,\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: brick,\n dataSource,\n },\n };\n }\n })\n .filter(Boolean);\n\n return bricks?.length\n ? bricks\n : {\n if: `<% DATA.rowData.id === ${JSON.stringify(item.id)} %>`,\n brick: \"span\",\n properties: {\n textContent: mockList?.[0]?.[item.id] ?? \"\",\n },\n };\n }),\n },\n },\n {\n dataIndex: \"operations\",\n key: \"operations\",\n width: 81,\n headerBrick: {\n useBrick: {\n brick: \"eo-mini-actions\",\n properties: {\n actions: `<%=\n [\n {\n icon: {\n lib: \"antd\",\n icon: \"minus\",\n },\n event: \"minus\",\n disabled: [...CTX.weightMap].every(([id, v]) => v <= CTX.availableWeights.get(id)[0]),\n },\n {\n icon: {\n lib: \"antd\",\n icon: \"plus\",\n },\n event: \"plus\",\n disabled: [...CTX.weightMap].every(([id, v]) => v >= CTX.availableWeights.get(id).slice(-1)[0]),\n },\n ]\n %>`,\n },\n events: {\n minus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, null, -1) %>`,\n ],\n },\n plus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, null, 1) %>`,\n ],\n },\n },\n },\n },\n useBrick: {\n if: \"<% CTX.availableWeights.get(DATA.rowData.id)?.length %>\",\n brick: \"eo-mini-actions\",\n properties: {\n actions: `<%=\n [\n {\n icon: {\n lib: \"antd\",\n icon: \"minus\",\n },\n event: \"minus\",\n disabled: CTX.weightMap.get(DATA.rowData.id) <= CTX.availableWeights.get(DATA.rowData.id)[0],\n },\n {\n icon: {\n lib: \"antd\",\n icon: \"plus\",\n },\n event: \"plus\",\n disabled: CTX.weightMap.get(DATA.rowData.id) >= CTX.availableWeights.get(DATA.rowData.id).slice(-1)[0],\n },\n ]\n %>`,\n },\n events: {\n minus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, DATA.rowData.id, -1) %>`,\n ],\n },\n plus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, DATA.rowData.id, 1) %>`,\n ],\n },\n },\n },\n },\n ],\n },\n events: {\n \"row.select\": {\n action: \"context.replace\",\n args: [\"selectedItems\", \"<%= EVENT.detail.rows %>\"],\n },\n \"row.drag\": {\n action: \"context.replace\",\n args: [\n \"orderedIds\",\n \"<%= EVENT.detail.list.map((attr) => attr.id) %>\",\n ],\n },\n },\n },\n {\n brick: \"eo-event-agent\",\n properties: {\n id: eventAgentId,\n },\n events: {\n trigger: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"config-change\",\n payload:\n \"<% FN.getPreConfig(CTX.selectedItems, CTX.orderedIds, CTX.weightMap, CTX.groupMap) %>\",\n },\n ],\n },\n },\n lifeCycle: {\n onPageLoad: {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n skipInvalid: true,\n }\n ),\n },\n {\n theme: \"light\",\n uiVersion: \"8.2\",\n styleText: previewStyleText,\n context: [\n {\n name: \"orderedIds\",\n value: viewAttrList?.map((attr) => attr.id) ?? [],\n onChange: [\n {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"order-change\",\n payload: {\n orderedIds: \"<% EVENT.detail %>\",\n },\n },\n ],\n },\n ]\n : []),\n ],\n },\n {\n name: \"selectedItems\",\n value: selectedItems,\n onChange: [\n {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"selection-change\",\n payload: {\n selectedIds:\n \"<% EVENT.detail.map((item) => item.id) %>\",\n },\n },\n ],\n },\n ]\n : []),\n ],\n },\n {\n name: \"availableWeights\",\n value: `<% new Map(${JSON.stringify(\n dataSourceList?.map((item) => [\n item.id,\n (viewType === \"grouped-chart\"\n ? (item as GroupedMetric).metrics[0]\n : (item as ObjectAttr)\n ).candidates\n ?.filter(\n (can) =>\n viewType !== \"grouped-chart\" ||\n (can as MetricVisualConfig).size !== \"small\"\n )\n .map((can) => can.visualWeight)\n .sort((a, b) => a - b) ?? [],\n ]) ?? []\n )}) %>`,\n },\n {\n name: \"weightMap\",\n value: `<% new Map(${JSON.stringify(\n dataSourceList?.map((item) => [\n item.id,\n findNearestCandidate(\n (viewType === \"grouped-chart\"\n ? (item as GroupedMetric).metrics[0]\n : (item as ObjectAttr)\n ).candidates?.filter(\n (can) =>\n viewType !== \"grouped-chart\" ||\n (can as MetricVisualConfig).size !== \"small\"\n ) as BaseVisualConfig[],\n viewType === \"grouped-chart\" ? 2 : 0\n )?.visualWeight,\n ]) ?? []\n )}) %>`,\n onChange: {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n },\n {\n name: \"groupMap\",\n value: `<% new Map(${JSON.stringify([...(groupMap ?? [])])}) %>`,\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n name: \"metricOptions\",\n value: viewAttrList?.map((attr) => ({\n label: attr.metricKey,\n value: attr.id,\n })),\n },\n ]\n : []),\n ],\n functions: [\n {\n name: \"updateWeightMap\",\n source: updateWeightMap,\n },\n {\n name: \"getPreConfig\",\n source: `\n function getPreConfig(selectedItems, orderedIds, weightMap, groupMap) {\n return {\n selectedIds: selectedItems.map((item) => item.id),\n orderedIds,\n weightMapLiteral: [...weightMap],\n groupMapLiteral: [...groupMap],\n };\n }\n `,\n },\n ],\n }\n );\n }, [\n attrList,\n containerConfig,\n injected,\n metricGroups,\n mockList,\n eventAgentId,\n dataSourceList,\n viewType,\n viewAttrList,\n groupMap,\n ]);\n\n return (\n <div className=\"container\">\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n\ninterface BaseVisualConfig {\n visualWeight: number;\n}\n\nfunction findNearestCandidate<T extends BaseVisualConfig>(\n candidates: T[] | undefined,\n weight: number\n): T | undefined {\n return candidates?.reduce((nearest, candidate) => {\n if (\n !nearest ||\n Math.abs(candidate.visualWeight - weight) <\n Math.abs(nearest.visualWeight - weight)\n ) {\n return candidate;\n }\n return nearest;\n });\n}\n\nfunction buildGroupedMetrics(\n metrics: MetricAttr[],\n groups: MetricGroup[]\n): GroupedMetric[] {\n const metricsMap = new Map(metrics.map((metric) => [metric.id, metric]));\n\n const results: GroupedMetric[] = [];\n\n groups.forEach((group, groupIndex) => {\n const result: MetricAttr[] = [];\n for (const metricName of group.metrics) {\n const metric = metricsMap.get(metricName);\n if (metric) {\n metricsMap.delete(metricName);\n result.push(metric);\n }\n }\n if (result.length) {\n results.push({\n id: groupIndex,\n group: group.group,\n metrics: result,\n counter: group.counter,\n });\n }\n });\n\n const nextGroupIndex = (results[results.length - 1]?.id ?? -1) + 1;\n\n results.push(\n ...[...metricsMap.values()].map((metric, index) => ({\n id: nextGroupIndex + index,\n group: \"\",\n metrics: [metric],\n }))\n );\n\n return results;\n}\n\ntype ConfigMeta = DefaultConfigMeta | ChartConfigMeta | GroupedChartConfigMeta;\n\ninterface DefaultConfigMeta {\n viewType: \"default\";\n attr: ObjectAttr;\n}\n\ninterface ChartConfigMeta {\n viewType: \"chart\";\n metric: MetricAttr;\n groupedMetricKeys?: undefined;\n counterMetricKey?: undefined;\n}\n\ninterface GroupedChartConfigMeta {\n viewType: \"grouped-chart\";\n metric: MetricAttr;\n groupedMetricKeys: string[];\n counterMetricKey?: string;\n}\n\nfunction getConfigMeta(\n viewType: \"default\" | \"chart\" | \"grouped-chart\",\n viewAttrList: Attr[],\n metricGroups: MetricGroup[],\n item: Attr | GroupedMetric,\n groupMap: Map<number, string[]> | null\n): ConfigMeta {\n if (viewType === \"grouped-chart\") {\n const group = item as GroupedMetric;\n\n const editedMetrics = groupMap?.get(group.id);\n let finalMetrics: MetricAttr[];\n if (editedMetrics) {\n finalMetrics = viewAttrList.filter((attr) =>\n editedMetrics.includes(attr.id)\n ) as MetricAttr[];\n } else {\n finalMetrics = group.metrics;\n }\n\n const attr = finalMetrics[0];\n const groupedMetricKeys = finalMetrics.map((metric) => metric.metricKey);\n\n // Set counter metric only if it matches the original metric groups\n let counterMetric: MetricAttr | undefined;\n if (group.counter && finalMetrics.length === 2) {\n for (const g of metricGroups) {\n if (\n g.metrics.length === 2 &&\n g.counter === group.counter &&\n finalMetrics.every((m) => g.metrics.includes(m.id))\n ) {\n counterMetric = finalMetrics.find(\n (metric) => metric.id === group.counter\n );\n break;\n }\n }\n }\n\n return {\n viewType,\n metric: attr,\n groupedMetricKeys,\n counterMetricKey: counterMetric?.metricKey,\n };\n }\n if (viewType === \"chart\") {\n const attr = item as MetricAttr;\n return {\n viewType,\n metric: attr,\n };\n }\n return { viewType, attr: item as ObjectAttr };\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { safeDump } from \"js-yaml\";\nimport \"@next-core/theme\";\nimport type { VisualConfig } from \"../raw-data-preview/raw-data-interfaces\";\nimport styleText from \"../pre-generated-config/styles.shadow.css\";\nimport previewStyleText from \"../pre-generated-config/preview.shadow.css\";\nimport {\n convertToStoryboard,\n lowLevelConvertToStoryboard,\n} from \"../raw-data-preview/convert\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ObjectAttr {\n id: string;\n name: string;\n enum?: unknown[];\n config?: VisualConfig;\n}\n\nexport interface PreGeneratedConfigPreviewProps {\n previewUrl?: string;\n container?: ContainerType;\n attrList?: ObjectAttr[];\n mockList?: Record<string, unknown>[];\n}\n\nexport type ContainerType = \"table\" | \"descriptions\";\n\n/**\n * 构件 `visual-builder.pre-generated-config-preview`\n */\nexport\n@defineElement(\"visual-builder.pre-generated-config-preview\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedConfigPreview\n extends ReactNextElement\n implements PreGeneratedConfigPreviewProps\n{\n @property()\n accessor previewUrl: string | undefined;\n\n @property()\n accessor container: ContainerType | undefined;\n\n @property({ attribute: false })\n accessor attrList: ObjectAttr[] | undefined;\n\n @property({ attribute: false })\n accessor mockList: Record<string, unknown>[] | undefined;\n\n render() {\n return (\n <PreGeneratedConfigPreviewComponent\n root={this}\n previewUrl={this.previewUrl}\n container={this.container}\n attrList={this.attrList}\n mockList={this.mockList}\n />\n );\n }\n}\n\nexport interface PreGeneratedConfigPreviewComponentProps\n extends PreGeneratedConfigPreviewProps {\n root: HTMLElement;\n}\n\nexport function PreGeneratedConfigPreviewComponent({\n root,\n previewUrl,\n container,\n attrList,\n mockList,\n}: PreGeneratedConfigPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n const iframeWin = iframeRef.current?.contentWindow;\n if (!ready || !iframeWin) {\n return;\n }\n const observer = new ResizeObserver(() => {\n root.style.height = `${iframeWin.document.body.scrollHeight}px`;\n });\n observer.observe(iframeWin.document.body);\n return () => observer.disconnect();\n }, [ready, root]);\n\n useEffect(() => {\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!ready || !render || !attrList) {\n return;\n }\n\n let brickConf: BrickConf;\n\n switch (container) {\n case \"descriptions\":\n brickConf = {\n brick: \"eo-descriptions\",\n errorBoundary: true,\n properties: {\n column: 2,\n list: attrList.map((attr) => {\n const item: Record<string, unknown> = {\n label: attr.name,\n };\n if (attr.config) {\n item.useBrick = convertToStoryboard(attr.config, attr.id);\n }\n return item;\n }),\n dataSource: mockList?.[0],\n },\n };\n break;\n default:\n brickConf = {\n brick: \"eo-next-table\",\n errorBoundary: true,\n properties: {\n rowKey: attrList[0]?.id,\n columns: attrList.map((attr) => {\n const col: Record<string, unknown> = {\n title: attr.name,\n dataIndex: attr.id,\n key: attr.id,\n };\n if (attr.config) {\n col.useBrick = lowLevelConvertToStoryboard(\n attr.config,\n \".cellData\"\n );\n }\n return col;\n }),\n dataSource: {\n list: mockList,\n page: 1,\n pageSize: 20,\n },\n },\n };\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump([brickConf], {\n skipInvalid: true,\n }),\n },\n {\n theme: \"light\",\n uiVersion: \"8.2\",\n styleText: previewStyleText,\n }\n );\n }, [ready, attrList, mockList, container]);\n\n return (\n <div className=\"container\">\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n\nexport interface Metric {\n name: string;\n displayName?: string;\n unit?: string;\n dataType?: \"long\" | \"double\";\n}\n\nexport function generateMetricCandidates(metric: Metric): MetricVisualConfig[] {\n const configList: MetricVisualConfig[] = [];\n for (let i = -1; i < 3; i++) {\n const isPercentBase1 = metric.unit === \"percent(1)\";\n const isPercentBase100 =\n metric.unit === \"percent(100)\" || metric.unit === \"%\";\n\n const size = i <= 0 ? \"small\" : i === 1 ? \"medium\" : \"large\";\n\n if (isPercentBase1 || isPercentBase100 || i >= 0) {\n const chartType = i === -1 ? \"gauge\" : i === 2 ? \"area\" : \"line\";\n\n configList.push({\n visualWeight: i,\n // color: \"orange\",\n chartType,\n size,\n min: 0,\n precision:\n isPercentBase1 || isPercentBase100\n ? 1\n : metric.dataType === \"double\"\n ? 2\n : 0,\n });\n }\n }\n return configList;\n}\n","import { createProviderClass, hasOwnProperty } from \"@next-core/utils/general\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport { isObject } from \"lodash\";\nimport {\n generateMetricCandidates,\n type Metric,\n} from \"../raw-metric-preview/generateMetricCandidates\";\n\nexport interface Data {\n name: string;\n value: unknown;\n}\n\nexport type Config = NormalConfig | UnknownConfig;\n\nexport interface NormalConfig {\n type: ConfigType;\n attrList: Attr[];\n metricGroups: MetricGroup[];\n dataList: unknown[];\n containerOptions?: ContainerOption[];\n}\n\nexport interface UnknownConfig {\n type: \"unknown\";\n error: string;\n}\n\nexport interface Options {\n dataType?: \"context\" | \"state\";\n}\n\nexport type ConfigType =\n | \"list\"\n | \"list-with-pagination\"\n | \"list-with-wrapper\"\n | \"object\"\n | \"unknown\";\n\nexport interface Attr {\n id: string;\n name: string;\n candidates?: unknown[];\n metricKey?: string;\n unit?: string;\n}\n\nexport interface MetricGroup {\n group: string;\n metrics: string[];\n counter?: string;\n}\n\nexport interface ObjectInfo {\n attrList: Attr[];\n metricGroups: MetricGroup[];\n}\n\nexport interface ContainerOption {\n label: string;\n value: string;\n settings?: unknown;\n prefer?: boolean;\n}\n\ninterface ListWithPagination {\n list: DatumWithObjectId[];\n page: number;\n total: number;\n pageSize?: number;\n page_size?: number;\n}\n\ninterface DatumWithObjectId {\n _object_id: string;\n time?: number;\n}\n\ninterface ModelObject {\n attrList: ModelAttr[];\n parentObjectIds?: string[];\n metricGroups?: MetricGroup[];\n}\n\ninterface ModelAttr {\n id: string;\n name: string;\n generatedView?: ModelAttrGeneratedView[];\n}\n\ninterface ModelAttrGeneratedView {\n list?: unknown[];\n}\n\nexport async function getConfigByDataForAi(\n data: Data | undefined | null\n): Promise<Config> {\n if (data?.value == null) {\n return null;\n }\n\n const { value } = data;\n\n let datum: DatumWithObjectId | undefined;\n let type: ConfigType = \"unknown\";\n let dataList: unknown[] = [];\n let fields: Record<string, string> | undefined;\n\n // Detect value type\n if (Array.isArray(value)) {\n // It's a list without pagination\n if (value.length > 0) {\n type = \"list\";\n datum = value[0] as DatumWithObjectId;\n dataList = value;\n }\n } else if (isObject(value)) {\n const listValue = value as ListWithPagination;\n if (hasOwnProperty(listValue, \"list\") && Array.isArray(listValue.list)) {\n // It's a list with pagination\n if (listValue.list.length > 0) {\n type =\n hasOwnProperty(listValue, \"page\") &&\n typeof listValue.page === \"number\" &&\n hasOwnProperty(listValue, \"total\") &&\n typeof listValue.total === \"number\"\n ? \"list-with-pagination\"\n : \"list-with-wrapper\";\n datum = listValue.list[0];\n dataList = listValue.list;\n }\n if (\n type === \"list-with-pagination\" &&\n typeof listValue.page_size === \"number\" &&\n typeof listValue.pageSize !== \"number\"\n ) {\n fields = { pageSize: \"page_size\" };\n }\n } else {\n // It's a single object\n type = \"object\";\n datum = value as DatumWithObjectId;\n dataList = [datum];\n }\n }\n\n const keys = new Set<string>();\n for (const item of dataList) {\n if (isObject(item)) {\n for (const key of Object.keys(item)) {\n keys.add(key);\n }\n } else {\n type = \"unknown\";\n break;\n }\n }\n\n let attrList: Attr[] = [];\n let metricGroups: MetricGroup[] = [];\n\n if (\n type !== \"unknown\" &&\n isObject(datum) &&\n hasOwnProperty(datum, \"_object_id\") &&\n typeof datum._object_id === \"string\"\n ) {\n const objectId = datum._object_id;\n\n const isTimeSeries =\n type !== \"object\" &&\n hasOwnProperty(datum, \"time\") &&\n typeof datum.time === \"number\";\n ({ attrList, metricGroups } = await getMergedObjectInfo(\n objectId,\n keys,\n isTimeSeries\n ));\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"Can not detect objectId with data:\", data);\n\n // Fallback to attributes retrieval by data keys\n attrList = [...keys].map((id) => ({ id, name: id }));\n }\n\n if (attrList.length === 0) {\n type = \"unknown\";\n }\n\n return {\n type,\n attrList,\n metricGroups,\n dataList,\n containerOptions: getAvailableContainersByType(type, fields, attrList),\n };\n}\n\nfunction getAvailableContainersByType(\n type: ConfigType,\n fields: Record<string, string> | undefined,\n attrList: Attr[]\n): ContainerOption[] {\n let result: ContainerOption[] = [];\n\n switch (type) {\n case \"list\":\n result = [\n {\n label: \"表格\",\n value: \"table\",\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n },\n ];\n break;\n case \"list-with-pagination\":\n result = [\n {\n label: \"表格\",\n value: \"table\",\n settings: {\n pagination: true,\n fields,\n },\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n settings: {\n pagination: true,\n fields,\n },\n },\n ];\n break;\n case \"list-with-wrapper\":\n result = [\n {\n label: \"属性详情\",\n value: \"descriptions\",\n },\n {\n label: \"表格\",\n value: \"table\",\n settings: {\n wrapper: true,\n fields,\n },\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n settings: {\n wrapper: true,\n },\n },\n ];\n break;\n case \"object\":\n return [\n {\n label: \"属性详情\",\n value: \"descriptions\",\n },\n ];\n default:\n return [];\n }\n\n // Count metrics and non-metrics, prefer to show chart first\n // if there are more metrics than non-metrics\n let metricCount = 0;\n let nonMetricCount = 0;\n for (const attr of attrList) {\n if (attr.metricKey) {\n metricCount++;\n } else {\n nonMetricCount++;\n }\n }\n const settings =\n type === \"list-with-pagination\"\n ? { pagination: true }\n : type === \"list-with-wrapper\"\n ? { wrapper: true }\n : undefined;\n if (metricCount > 0) {\n result.push({\n label: \"图表\",\n value: \"chart\",\n settings,\n prefer: metricCount > nonMetricCount && metricCount < 6,\n });\n }\n if (metricCount > 1) {\n result.push({\n label: \"组合图表\",\n value: \"grouped-chart\",\n settings,\n prefer: metricCount > nonMetricCount && metricCount >= 6,\n });\n }\n return result;\n}\n\nasync function getMergedObjectInfo(\n objectIdWithNamespace: string,\n keys: Set<string>,\n isTimeSeries: boolean\n): Promise<ObjectInfo> {\n const attrList: Attr[] = [];\n const metricGroups: MetricGroup[] = [];\n\n const [objectId, namespace] = objectIdWithNamespace.split(\"@\");\n\n const { list } = (await InstanceApi_postSearchV3(\"MODEL_OBJECT\", {\n fields: [\n \"name\",\n \"objectId\",\n \"attrList.id\",\n \"attrList.name\",\n \"attrList.generatedView.list\",\n \"parentObjectIds\",\n \"metricGroups\",\n ],\n query: {\n objectId,\n ignore: { $ne: true },\n ...(namespace\n ? { \"space.name\": namespace }\n : { space: { $exists: false } }),\n },\n page: 1,\n })) as { list: ModelObject[] };\n\n if (list.length === 0) {\n // eslint-disable-next-line no-console\n console.warn(\"Can not find object by objectId:\", objectIdWithNamespace);\n } else {\n const { attrList: attrs, parentObjectIds, metricGroups: groups } = list[0];\n\n if (parentObjectIds?.length) {\n const parents = await Promise.all(\n parentObjectIds.map((parentId) =>\n getMergedObjectInfo(parentId, keys, isTimeSeries)\n )\n );\n\n for (const parent of parents) {\n attrList.push(...parent.attrList);\n metricGroups.push(...parent.metricGroups);\n }\n }\n\n attrList.push(\n ...attrs\n .map<Attr>((attr) =>\n keys.has(attr.id)\n ? {\n id: attr.id,\n name: attr.name,\n candidates: attr.generatedView?.[0]?.list,\n }\n : null\n )\n .filter(Boolean)\n );\n if (groups?.length) {\n metricGroups.push(...groups);\n }\n\n if (isTimeSeries) {\n const { list: metrics } = (await InstanceApi_postSearchV3(\n \"_COLLECTOR_ALIAS_METRIC\",\n {\n fields: [\"name\", \"displayName\", \"unit\", \"dataType\"],\n page_size: 3000,\n query: {\n dataType: {\n $ne: \"string\",\n },\n objectId: objectIdWithNamespace,\n },\n sort: [\n {\n key: \"name\",\n order: 1,\n },\n ],\n }\n )) as { list: Metric[] };\n\n attrList.push(\n ...metrics\n .map<Attr>((metric) => {\n const hasMetricName =\n metric.displayName && keys.has(metric.displayName);\n return hasMetricName || keys.has(metric.name)\n ? {\n id: metric.name,\n name: metric.displayName,\n metricKey: hasMetricName ? metric.displayName : metric.name,\n unit: metric.unit,\n candidates: generateMetricCandidates(metric),\n }\n : null;\n })\n .filter(Boolean)\n );\n }\n }\n\n return { attrList, metricGroups };\n}\n\ncustomElements.define(\n \"visual-builder.get-config-by-data-for-ai\",\n createProviderClass(getConfigByDataForAi)\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, ContextConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { __compat_internals } from \"../shared/compat_internals\";\nimport type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n// import { convertToStoryboard } from \"./convert\";\nimport styleText from \"./styles.shadow.css\";\nimport sharedPreviewStyleText from \"../raw-data-preview/preview.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\nimport { convertToChart } from \"./convert\";\nimport {\n generateMetricCandidates,\n type Metric,\n} from \"./generateMetricCandidates\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface RawMetricPreviewProps {\n previewUrl?: string;\n generations?: MetricGeneration[];\n grouped?: boolean;\n // mocks?: Record<string, unknown>;\n busy?: boolean;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface MetricGeneration {\n generationId?: string;\n objectId: string;\n objectName: string;\n propertyId: string;\n propertyName?: string;\n propertyUnit: string;\n propertyDataType: \"long\" | \"double\";\n propertyInstanceId?: string;\n comment?: string;\n approved?: boolean;\n candidates: MetricVisualConfig[] | null;\n mockData: unknown[];\n groupIndex?: number;\n group?: string;\n counter?: string;\n}\n\nexport interface CommentDetail {\n comment: string;\n propertyInstanceId?: string;\n}\n\nexport interface ApproveDetail {\n approved: boolean;\n propertyInstanceId?: string;\n}\n\ninterface BasePreviewMessage {\n channel: \"raw-metric-preview\";\n}\n\ninterface CommentMessage extends BasePreviewMessage {\n type: \"comment\";\n payload: CommentDetail;\n}\n\ninterface ApproveMessage extends BasePreviewMessage {\n type: \"approve\";\n payload: ApproveDetail;\n}\n\ninterface ResizeMessage extends BasePreviewMessage {\n type: \"resize\";\n payload: {\n width: number;\n height: number;\n };\n}\n\ntype PreviewMessage = CommentMessage | ApproveMessage | ResizeMessage;\n\n/**\n * 构件 `visual-builder.raw-metric-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.raw-metric-preview\", {\n styleTexts: [styleText],\n})\nclass RawMetricPreview extends ReactNextElement {\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor generations: MetricGeneration[] | undefined;\n\n @property({ type: Boolean })\n accessor grouped: boolean | undefined;\n\n // @property({ attribute: false })\n // accessor mocks: Record<string, unknown> | undefined;\n\n @property({ type: Boolean })\n accessor busy: boolean | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n render() {\n return (\n <RawMetricPreviewComponent\n root={this}\n previewUrl={this.previewUrl}\n generations={this.generations}\n grouped={this.grouped}\n // mocks={this.mocks}\n busy={this.busy}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n />\n );\n }\n}\n\nexport interface RawMetricPreviewComponentProps extends RawMetricPreviewProps {\n root: HTMLElement;\n}\n\nexport function RawMetricPreviewComponent({\n root,\n previewUrl,\n generations,\n grouped,\n // mocks,\n busy,\n theme,\n uiVersion,\n app,\n}: RawMetricPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n iframeWin.postMessage(\n {\n channel: \"raw-metric-preview\",\n type: \"busy\",\n payload: busy,\n },\n location.origin\n );\n }\n }, [busy, ready]);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<PreviewMessage>) => {\n if (data?.channel === \"raw-metric-preview\") {\n switch (data.type) {\n case \"resize\":\n root.style.height = `${data.payload.height + 2}px`;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }\n }, [ready, root]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __compat_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: previewUrl\n ? new URL(pkg.filePath, new URL(previewUrl, location.origin)).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const tableChildren: BrickConf[] = [\n ...(grouped\n ? [\n {\n brick: \"div\",\n properties: {\n textContent: \"分组\",\n className: \"head-cell\",\n },\n },\n ]\n : []),\n {\n brick: \"div\",\n properties: {\n textContent: \"指标\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"别名\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"视觉重量 (由低至高)\",\n className: \"head-cell\",\n style: {\n gridColumn: \"span 4\",\n textAlign: \"center\",\n },\n },\n },\n ];\n const table: BrickConf & { context?: ContextConf[] } = {\n brick: \"visual-builder.pre-generated-table-view\",\n context: [\n {\n name: \"busy\",\n },\n ],\n properties: {\n style: {\n gridTemplateColumns: `${grouped ? \"minmax(129px, 0.5fr) \" : \"\"}minmax(120px, 0.8fr) minmax(120px, 0.5fr) 32px repeat(2, 0.6fr) repeat(2, 1fr)`,\n },\n },\n children: tableChildren,\n };\n\n const handledGroupIndexes = new Set<number>();\n\n const groupMap = new Map<number, MetricGeneration[]>();\n for (const generation of generations) {\n const index = generation.groupIndex;\n if (index != null) {\n const metrics = groupMap.get(index) ?? [];\n groupMap.set(index, metrics.concat(generation));\n }\n }\n\n for (let i = 0, size = generations.length; i < size; i++) {\n const generation = generations[i];\n const isLastRow = i === size - 1;\n let isLastGroupedRow = false;\n\n // const candidatesByVisualWeight = new Map<number, VisualConfig>();\n // for (const candidate of generation.candidates ?? []) {\n // candidatesByVisualWeight.set(candidate.visualWeight ?? 0, candidate);\n // }\n\n let groupedMetrics: MetricGeneration[] | undefined;\n let isMergedRow = false;\n if (grouped) {\n const { groupIndex } = generation;\n if (groupIndex == null) {\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n });\n } else if (!handledGroupIndexes.has(groupIndex)) {\n handledGroupIndexes.add(groupIndex);\n groupedMetrics = groupMap.get(groupIndex)!;\n const groupCount = groupedMetrics.length;\n isLastGroupedRow = i + groupCount - 1 === size - 1;\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: generation.group,\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastGroupedRow,\n }),\n style: {\n gridRow: `span ${groupCount}`,\n },\n },\n });\n } else {\n isMergedRow = true;\n }\n }\n\n tableChildren.push(\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyId}`,\n },\n },\n ],\n },\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyName || \"\"}`,\n },\n },\n ],\n },\n {\n // 绿色圆点表示已生成\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children:\n generation.candidates?.length || generation.mockData\n ? [\n {\n brick: \"eo-icon\",\n properties: {\n lib: \"fa\",\n prefix: generation.candidates?.length ? \"fas\" : \"far\",\n icon: \"circle\",\n style: {\n color:\n generation.generationId &&\n generation.candidates?.length\n ? \"var(--palette-green-6)\"\n : \"var(--palette-gray-6)\",\n transformOrigin: \"center center\",\n transform: \"scale(0.5)\",\n },\n },\n },\n ]\n : undefined,\n }\n );\n\n const metricKey = generation.propertyName || generation.propertyId;\n\n const rawMetricData: Metric = {\n name: generation.propertyId,\n displayName: generation.propertyName,\n unit: generation.propertyUnit,\n dataType: generation.propertyDataType,\n };\n const candidates = generateMetricCandidates(rawMetricData);\n\n // 生成的编排\n for (let i = -1; i < 3; i++) {\n const candidate = candidates.find((item) => item.visualWeight === i);\n\n // let brick: BrickConf;\n // if (candidate) {\n // brick = convertToStoryboard(candidate, generation.propertyId);\n // }\n\n const isPercentBase1 = generation.propertyUnit === \"percent(1)\";\n const isPercentBase100 =\n generation.propertyUnit === \"percent(100)\" ||\n generation.propertyUnit === \"%\";\n\n let brick: BrickConf | undefined;\n const size = i <= 0 ? \"small\" : i === 1 ? \"medium\" : \"large\";\n const isMergedCell = size !== \"small\" && isMergedRow;\n const counterMetric = generation.counter\n ? groupedMetrics?.find((gen) => gen.propertyId === generation.counter)\n : undefined;\n const counterMetricKey =\n counterMetric?.propertyName || counterMetric?.propertyId;\n if (isMergedCell) {\n continue;\n }\n\n const isGroupedCell = size !== \"small\" && groupedMetrics;\n if (\n generation.mockData &&\n (isPercentBase1 || isPercentBase100 || i >= 0)\n ) {\n // const chartType = i === -1 ? \"gauge\" : i === 2 ? \"area\" : \"line\";\n\n brick = convertToChart(\n {\n ...candidate,\n // visualWeight: i,\n // color: \"orange\",\n // chartType,\n // size,\n min: counterMetricKey ? undefined : candidate.min,\n // precision:\n // isPercentBase1 || isPercentBase100\n // ? 1\n // : generation.propertyDataType === \"double\"\n // ? 2\n // : 0,\n },\n \"<% DATA %>\",\n metricKey,\n {\n unit: generation.propertyUnit,\n },\n groupedMetrics?.map((gen) => gen.propertyName || gen.propertyId),\n counterMetricKey\n );\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow || isLastGroupedRow,\n \"large-chart-cell\": size !== \"small\",\n }),\n style: {\n justifyContent: \"center\",\n ...(isGroupedCell\n ? { gridRow: `span ${groupedMetrics.length}` }\n : null),\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: brick\n ? [\n {\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: [brick],\n dataSource: generation.mockData.map((value, index) => ({\n time:\n Math.round(+new Date() / 1000) -\n 86400 +\n index * 300,\n ...(isGroupedCell\n ? Object.fromEntries(\n groupedMetrics.map((gen) => [\n gen.propertyName || gen.propertyId,\n gen.mockData?.[index],\n ])\n )\n : { [metricKey]: value }),\n })),\n },\n errorBoundary: true,\n },\n ]\n : undefined,\n },\n ],\n });\n }\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n {\n brick: \"sl-resize-observer\",\n children: [table],\n events: {\n \"sl-resize\": {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-metric-preview\",\n type: \"resize\",\n payload: `<%\n EVENT.detail.entries[0].borderBoxSize\n ? { width: EVENT.detail.entries[0].borderBoxSize[0].inlineSize, height: EVENT.detail.entries[0].borderBoxSize[0].blockSize }\n : { width: EVENT.detail.entries[0].contentRect.width, height: EVENT.detail.entries[0].contentRect.height }\n %>`,\n },\n ],\n },\n },\n },\n {\n brick: \"eo-message-listener\",\n properties: {\n sameOrigin: true,\n },\n events: {\n message: {\n if: \"<% EVENT.detail.data?.channel === 'raw-metric-preview' && EVENT.detail.data.type === 'busy' %>\",\n action: \"context.replace\",\n args: [\"busy\", \"<% EVENT.detail.data.payload %>\"],\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }\n ),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: [sharedPreviewStyleText, previewStyleText].join(\"\\n\"),\n }\n );\n }, [app, injected, generations, theme, uiVersion, grouped]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport {\n traverseStoryboardExpressions,\n collectAppGetMenuUsage,\n beforeVisitGlobalMember,\n collectMemberUsageInFunction,\n type MemberCallUsage,\n type MemberUsage,\n} from \"@next-core/utils/storyboard\";\n\ninterface UsageStatistics {\n functions: string[];\n menus: string[];\n}\n\ninterface FunctionItem {\n name: string;\n source: string;\n}\n\ninterface Option {\n includesFnDeps?: boolean;\n fnList?: FunctionItem[];\n}\n\nexport async function getUsageMemberStatistics(\n storyboardData: unknown,\n options?: Option\n): Promise<UsageStatistics> {\n const { includesFnDeps = false, fnList } = options || {};\n const fnUsage: MemberUsage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n const collectFnUsage = beforeVisitGlobalMember(fnUsage, \"FN\");\n\n traverseStoryboardExpressions(\n storyboardData,\n (node, parent) => {\n // Collect FN calls using the complete logic of beforeVisitGlobalMember\n collectFnUsage(node, parent);\n\n // Collect APP.getMenu calls\n collectAppGetMenuUsage(menuUsage, node, parent);\n },\n {\n // Match expressions containing FN or APP.getMenu to avoid parsing irrelevant expressions\n matchExpressionString: (v: string) =>\n v.includes(\"FN\") || v.includes(\"APP.getMenu\"),\n }\n );\n\n // Build the final function list (including dependency functions)\n const allFunctions = new Set(fnUsage.usedProperties);\n\n if (includesFnDeps) {\n const matchedFnList = fnList.filter((fn) =>\n fnUsage.usedProperties.has(fn.name)\n );\n\n for (const fn of matchedFnList) {\n const deps = collectMemberUsageInFunction(fn, \"FN\", true);\n\n Array.from(deps)\n .filter((dep) => dep !== fn.name)\n .forEach((dep) => allFunctions.add(dep));\n }\n }\n\n return {\n functions: Array.from(allFunctions),\n menus: Array.from(menuUsage.usedArgs),\n };\n}\n\ncustomElements.define(\n \"visual-builder.get-usage-member-statistics\",\n createProviderClass(getUsageMemberStatistics)\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative;box-shadow:rgba(204,204,204,0.2) 0px 0px 0px 1px}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.outline{position:absolute;border-style:solid;border-width:2px;border-radius:0 4px 4px;pointer-events:none}.label{position:absolute;left:-2px;top:-20px;height:18px;line-height:16px;padding:2px 5px 0;font-size:12px;border-radius:4px 4px 0 0;white-space:nowrap}.outline.hover{border-color:rgba(var(--palette-blue-6-channel),0.3)}.outline.hover .label{background:rgba(var(--palette-blue-6-channel),0.3)}.outline.active{border-color:var(--palette-blue-6)}.outline.active .label{background:var(--palette-blue-6)}.container:not(.inspecting) .outline{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n useEffect,\n useImperativeHandle,\n useMemo,\n createRef,\n useState,\n useCallback,\n useRef,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n createForm,\n Form,\n onFieldValueChange,\n onFieldInit,\n onFieldInitialValueChange,\n onFormInitialValuesChange,\n onFormValidateSuccess,\n onFormValuesChange,\n createEffectHook,\n} from \"@formily/core\";\nimport { createSchemaField, FormProvider } from \"@formily/react\";\nimport { ConfigProvider, theme } from \"antd\";\nimport { StyleProvider, createCache } from \"@ant-design/cssinjs\";\nimport {\n FormCollapse,\n FormItem,\n FormLayout,\n Input,\n NumberPicker,\n Radio,\n Select,\n Switch,\n} from \"@formily/antd-v5\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport {\n EditorComponentProps,\n DataItem,\n SelectOptions,\n} from \"@next-shared/property-editor\";\nimport { CategoryTitle } from \"./components/CategoryTitle\";\nimport { AdvancedFormItem } from \"./components/AdvancedFormItem\";\nimport { CodeEditorComponent } from \"./components/common/CodeEditorComponent\";\nimport { IconSelectComponent } from \"./components/common/IconSelectComponent\";\nimport { ColorPickerComponent } from \"./components/common/ColorPickerComponent\";\nimport { InputWithUrlComponent } from \"./components/common/InputWithUrlComponent\";\nimport { TextAlignRadioComponent } from \"./components/common/TextAlignRadioComponent\";\nimport { InputWithUnitComponent } from \"./components/common/InputWithUnitComponent\";\nimport { UseChildrenSelectComponent } from \"./components/common/UseChildrenSelectComponent\";\nimport { BoxSizeComponent } from \"./components/common/BoxSizeComponent\";\nimport { CustomOptionsComponent } from \"./components/common/CustomOptionsComponent\";\nimport { CustomTab } from \"./components/common/CustomTab\";\nimport { __secret_internals, customEditors } from \"@next-core/runtime\";\nimport {\n ADVANCED_FORM_KEY,\n DataNode,\n formilySchemaFormatter,\n} from \"./utils/formilySchemaFormatter\";\nimport \"./style.css\";\nimport _, { isEmpty, omit } from \"lodash\";\nimport { BrickPackage } from \"@next-core/types\";\nimport { NORMAL_FORM_KEY } from \"./utils/formilySchemaFormatter\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst PropertyEditorComponent = React.forwardRef(LegacyPropertyEditor);\n\nexport const BEFORE_SUBMIT_KEY = \"before_submit\";\nexport const ADVANCED_CHANGE_KEY = \"on_advanced_change\";\n\nexport const SchemaField = createSchemaField({\n components: {\n FormLayout,\n Input,\n FormItem: AdvancedFormItem,\n FormItemWithoutAdvanced: FormItem,\n FormCollapse,\n NumberPicker,\n Radio,\n Select,\n Switch,\n CategoryTitle,\n CodeEditor: CodeEditorComponent,\n IconSelect: IconSelectComponent,\n ColorPicker: ColorPickerComponent,\n UseChildrenSelect: UseChildrenSelectComponent,\n InputWithUrl: InputWithUrlComponent,\n InputWithUnit: InputWithUnitComponent,\n TextAlignRadio: TextAlignRadioComponent,\n CustomOptions: CustomOptionsComponent,\n BoxSize: BoxSizeComponent,\n CustomTab,\n },\n});\n\nexport type { DataNode };\n\nlet cacheCustomEditor: Function;\n\n/**\n * 构件 `visual-builder.property-editor`\n */\nexport\n@defineElement(\"visual-builder.property-editor\", {\n // styleTexts: [styleText],\n // 因为有使用 vs.code-editor,需要把 shadowOptions 设置成 false\n shadowOptions: false,\n dependencies: [\"eo-icon-select\", \"vs.code-editor\", \"eo-tooltip\"],\n})\nclass PropertyEditor extends ReactNextElement {\n #formRef = createRef<any>();\n\n /** 构件名称 */\n @property()\n accessor editorName: string | undefined;\n\n /** 值 */\n @property({\n attribute: false,\n })\n accessor values: any | undefined;\n\n /** 高级模式 */\n @property({\n type: Boolean,\n })\n accessor advancedMode: boolean | undefined;\n\n @property({\n attribute: false,\n })\n accessor dataList: DataItem[];\n\n @property({\n attribute: false,\n })\n accessor editorPackages: BrickPackage[];\n\n @property({\n attribute: false,\n })\n accessor links: any;\n\n @property({\n attribute: false,\n })\n accessor extraLibs: SelectOptions;\n\n @property({\n attribute: false,\n })\n accessor childSlots: SelectOptions;\n\n /**\n * 表单验证成功时触发事件\n */\n @event({ type: \"validate.success\" }) accessor #successEvent!: EventEmitter<\n Record<string, unknown>\n >;\n /**\n * 表单验证报错时触发事件\n */\n @event({ type: \"validate.error\" }) accessor #errorEvent!: EventEmitter<any[]>;\n\n @method()\n validate() {\n const form: Form = this.#formRef.current?.getFormInstance();\n this.#submitValue = null;\n\n form\n .validate()\n .then(() => {\n if (this.advancedMode) {\n // 高级模式直接输出 form.values[ADVANCED_FORM_KEY]\n this.#successEvent.emit(form.values[ADVANCED_FORM_KEY]);\n } else {\n const value = _.omit(form.values, [ADVANCED_FORM_KEY]);\n form.notify(BEFORE_SUBMIT_KEY, value);\n this.#successEvent.emit(this.#submitValue ?? value);\n }\n })\n .catch((err: any[]) => {\n this.#errorEvent.emit(err);\n });\n }\n\n @event({ type: \"values.change\" })\n accessor #valuesChangeEvent!: EventEmitter<any>;\n\n #handleValuesChange = (value: any) => {\n this.#valuesChangeEvent.emit(value);\n };\n\n @event({ type: \"token.click\" })\n accessor #tokenClick!: EventEmitter<string>;\n\n #handleTokenClick = (value: string): void => {\n this.#tokenClick.emit(value);\n };\n\n #submitValue: any;\n\n #onSubmitEffect = createEffectHook(\n BEFORE_SUBMIT_KEY,\n (values, form) => (listener) => {\n this.#submitValue = listener(values, form);\n }\n );\n\n @event({ type: \"trigger.action\" })\n accessor #triggerActionEvent!: EventEmitter<string>;\n\n #handleTriggerAction = (action: string) => {\n this.#triggerActionEvent.emit(action);\n };\n\n #filterData = (data?: Record<string, any> | string) => {\n const transformData =\n typeof data === \"string\" && data === \"undefined\"\n ? undefined\n : omit(data as any, [\"dataset.testid\"]);\n const shouldFilterFields = [];\n isEmpty(transformData?.dataset) && shouldFilterFields.push(\"dataset\");\n isEmpty(transformData?.style) && shouldFilterFields.push(\"style\");\n\n const filterData = omit(transformData, shouldFilterFields);\n if (isEmpty(filterData)) {\n return undefined;\n }\n return filterData;\n };\n\n render() {\n return (\n <PropertyEditorComponent\n ref={this.#formRef}\n editorName={this.editorName}\n values={this.#filterData(this.values)}\n advancedMode={this.advancedMode}\n dataList={this.dataList}\n extraLibs={this.extraLibs}\n links={this.links}\n childSlots={this.childSlots}\n editorPackages={this.editorPackages}\n handleValuesChange={this.#handleValuesChange}\n handleTokenClick={this.#handleTokenClick}\n handleTriggerAction={this.#handleTriggerAction}\n onSubmitEffect={this.#onSubmitEffect}\n />\n );\n }\n}\n\nexport interface PropertyEditorProps {\n values: any;\n editorName: string;\n advancedMode?: boolean;\n childSlots?: SelectOptions;\n extraLibs: SelectOptions;\n dataList: DataItem[];\n links: any;\n editorPackages: BrickPackage[];\n handleValuesChange: (value: any) => void;\n handleTokenClick: (token: string) => void;\n handleTriggerAction: (action: string) => void;\n onSubmitEffect: (listener: (value: any, form: Form) => any) => void;\n}\n\nexport function LegacyPropertyEditor(\n {\n advancedMode,\n values,\n editorName,\n dataList,\n editorPackages,\n extraLibs,\n childSlots,\n links,\n handleValuesChange,\n handleTokenClick,\n handleTriggerAction,\n onSubmitEffect,\n }: PropertyEditorProps,\n ref: any\n) {\n const [Editor, setEditor] = useState<\n (props: EditorComponentProps<typeof SchemaField>) => React.ReactElement\n >(cacheCustomEditor as any);\n const currentTheme = useCurrentTheme();\n const cache = useMemo(() => createCache(), []);\n // should update form instance when Editor change\n const form = useMemo(() => createForm(), [Editor]);\n const transformValueRef = useRef<any>(null);\n const advancedChangeRef = useRef<boolean>(false);\n\n const onAdvancedChangeEffect = useMemo(\n () =>\n createEffectHook(\n ADVANCED_CHANGE_KEY,\n (advancedMode, form) => (listener) => {\n const values =\n !advancedMode && form.values[ADVANCED_FORM_KEY]\n ? form.values[ADVANCED_FORM_KEY]\n : form.values;\n transformValueRef.current = listener(advancedMode, form, values);\n }\n ),\n []\n );\n\n useImperativeHandle(ref, () => ({\n getFormInstance: () => form,\n }));\n\n const load = useCallback(async () => {\n // TODO: cache editors\n if (customEditors.get(editorName)) {\n setEditor(() => customEditors.get(editorName)?.(React) as any);\n return;\n }\n await __secret_internals.loadEditors([editorName], editorPackages);\n cacheCustomEditor = () => customEditors.get(editorName)?.(React);\n setEditor(cacheCustomEditor as any);\n }, [editorName, editorPackages]);\n\n const defaultTransform = useCallback((values: any, advancedMode: boolean) => {\n if (advancedMode) {\n const filterValue = _.omit(values, [ADVANCED_FORM_KEY]);\n return {\n [ADVANCED_FORM_KEY]: _.isEmpty(filterValue) ? \"\" : filterValue,\n };\n }\n return values[ADVANCED_FORM_KEY] ?? values;\n }, []);\n\n useEffect(() => {\n load();\n }, [load]);\n\n useEffect(() => {\n if (Editor) {\n form.setInitialValues(values, \"overwrite\");\n }\n }, [Editor, form]);\n\n useEffect(() => {\n advancedChangeRef.current = true;\n transformValueRef.current = null;\n\n form.notify(ADVANCED_CHANGE_KEY, advancedMode);\n\n form.query(NORMAL_FORM_KEY).take((field) => {\n field.display = !advancedMode ? \"visible\" : \"hidden\";\n });\n form.query(ADVANCED_FORM_KEY).take((field) => {\n field.display = advancedMode ? \"visible\" : \"hidden\";\n });\n\n const formValues = form.getState().values;\n const formData = defaultTransform(\n transformValueRef.current ?? formValues,\n advancedMode\n );\n\n form.setValues(formData, \"overwrite\");\n advancedChangeRef.current = false;\n }, [advancedMode, form, defaultTransform, Editor]);\n\n useEffect(() => {\n form.addEffects(\"onValueChange\", () => {\n onFormValuesChange((form) => {\n if (advancedChangeRef.current) return;\n handleValuesChange(form.values);\n });\n });\n }, [form, handleValuesChange]);\n\n if (!Editor) return null;\n\n return (\n <div className=\"property-form-wrapper\">\n <ConfigProvider\n prefixCls=\"antdV5\"\n theme={{\n algorithm:\n currentTheme === \"dark-v2\"\n ? theme.darkAlgorithm\n : theme.defaultAlgorithm,\n components: {\n // Form: {\n // not work\n // itemMarginBottom: 10,\n // }\n InputNumber: {\n handleVisible: true,\n },\n },\n }}\n getPopupContainer={(trigger) => trigger!}\n >\n <StyleProvider cache={cache}>\n <FormProvider form={form}>\n <Editor\n advancedMode={advancedMode}\n SchemaFieldComponent={SchemaField}\n form={form}\n scope={{\n dataList,\n advancedMode,\n childSlots,\n extraLibs,\n links,\n tokenClick: (event: CustomEvent<string>) =>\n handleTokenClick(event.detail),\n triggerAction: handleTriggerAction,\n }}\n effects={{\n onFieldInit,\n onFieldValueChange,\n onFieldInitialValueChange,\n onFormInitialValuesChange,\n onFormValidateSuccess,\n onFormValuesChange,\n onSubmit: onSubmitEffect,\n onAdvancedChange: onAdvancedChangeEffect,\n }}\n formilySchemaFormatter={formilySchemaFormatter}\n />\n </FormProvider>\n </StyleProvider>\n </ConfigProvider>\n </div>\n );\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.message{display:flex;gap:8px}.main{flex:1;min-width:0}.label{font-weight:bold;line-height:28px}.message:not(:last-child){margin-bottom:2em}.invisible-dots{opacity:0}.failed .content{color:var(--color-error)}.command:not(:first-child){margin-top:1em}.command:not(:last-child){margin-bottom:1em}pre{white-space:pre-wrap;background-color:var(--palette-gray-3);border-radius:6px;padding:1em}.markdown > :first-child{margin-top:0}.markdown > :last-child{margin-bottom:0}.avatar{align-self:flex-start;display:flex;align-items:center;justify-content:center}.texting::after{content:\" \";animation:texting 2s infinite;white-space:pre}@keyframes texting{0%{content:\" \"}25%{content:\". \"}50%{content:\".. \"}75%{content:\"...\"}100%{content:\" \"}}pre[class*=\"language-\"]{overflow:visible}pre[class*=\"language-\"],\ncode[class*=\"language-\"]{white-space:pre-wrap}eo-avatar.role-assistant::part(avatar-icon){background-color:var(--palette-blue-5)}.content{word-wrap:break-word}.plain{white-space:pre-wrap}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}eo-popover::part(popup){width:800px;max-width:60vw;padding:10px;background:var(--color-fill-bg-container-4);border-radius:var(--medius-border-radius);box-shadow:var(--feedback-container-shadow);z-index:1000}.history-title{font-size:var(--title-font-size);font-weight:var(--font-weight-500);color:var(--color-strong-text);margin-bottom:5px}.history-list{max-height:500px;overflow-y:auto}.item-container{padding:10px 0;display:flex;flex-direction:column;gap:5px}.empty{padding:5px 0 10px 0;font-size:14px;color:var(--text-color-secondary);text-align:center}.item-container:not(:last-of-type){border-bottom:1px solid var(--color-border-divider-line)}.item-title{display:flex;align-items:center;justify-content:space-between;gap:5px}.title-left,\n.title-right{display:flex;align-items:center}.title-left{cursor:pointer;overflow:hidden;gap:5px}.topic{font-size:14px;color:var(--text-color-title);font-weight:var(--font-weight-500);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.branch{font-size:14px;color:var(--text-color-secondary)}.rollback{margin-right:5px;font-size:14px;color:var(--text-color-secondary);cursor:pointer}.rollback:hover{color:var(--color-brand)}.item-info{display:flex;align-items:center;gap:5px}.time,\n.operator{font-size:14px;color:var(--text-color-secondary)}.load-more-container{display:block;text-align:center}.end-container{display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;color:var(--color-brand)}.rollback-all{cursor:pointer}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `#preview-root{padding:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{--sidebar-background:#fff;--title-container-background:#fff;--title-container-color:#595959;display:block;outline-color:rgba(83,89,93,0.5);background-color:var(--sidebar-background);height:100%}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--sidebar-background:#181818;--title-container-background:#181818;--title-container-color:rgb(187,187,187);background-color:var(--sidebar-background)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar{display:flex;flex-direction:column;height:100%}.title-container{display:flex;padding:0 8px 8px 8px;color:var(--title-container-color);background:var(--title-container-background)}.title-label{font-weight:300;line-height:44px;padding-left:12px;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pane-container{flex-grow:1;min-height:0;display:flex;flex-direction:column}::slotted([slot=\"panes\"]){transition:flex 0.2s;min-height:25px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `body{background-color:transparent}#preview-root{padding:0;height:auto;max-height:100vh;overflow-y:auto;border:1px solid var(--theme-gray-border-color);border-radius:4px;background:var(--body-background)}.head-cell{position:sticky;top:0;z-index:1;font-weight:bold;align-content:center}.head-cell,\n.body-cell{background:var(--body-background)}.body-cell{display:flex;align-items:center;justify-content:space-between}.last-col-cell{border-right-color:transparent}.last-row-cell{border-bottom-color:transparent}.form-container > ::part(message){display:none}.list{display:flex;flex-direction:column;gap:8px;width:100%}.raw-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-color-secondary)}.raw-content.expand{white-space:pre-wrap}.tips{color:var(--text-color-secondary);font-weight:normal}.body-cell:not(:hover) .btn-toggle{visibility:hidden}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:grid;width:100%}:host([hidden]){display:none}::slotted(*){padding:4px 8px;border:1px solid var(--theme-gray-border-color);border-left-color:transparent;border-top-color:transparent;min-width:0;word-break:break-word}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","WrappedIcon","wrapBrick","defineElement","property","event","createDecorators","_WorkbenchPane","_A","WeakMap","_B","_C","_D","_WorkbenchPane_brand","WeakSet","_handleActiveChange","_E","_handleActiveFirstActivated","WorkbenchPane","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_titleLabel","_init_extra_titleLabel","_init_active","_init_extra_active","_init_badge","_init_extra_badge","_init_activeChangeEvent","_init_extra_activeChangeEvent","active","this","_classPrivateGetter","_get_activeChangeEvent","emit","_init_activeFirstActivatedEvent","_init_extra_activeFirstActivatedEvent","_get_activeFirstActivatedEvent","titleLabel","_classPrivateFieldGet","v","_classPrivateFieldSet","badge","render","React","WorkbenchPaneComponent","onActiveChange","onFirstActivated","_ref","internalActive","setInternalActive","useState","activatedOnce","setActivatedOnce","useEffect","handleClick","useCallback","previousActive","scrollBodyRef","useRef","scrolled","setScrolled","handleScroll","useMemo","debounceByAnimationFrame","current","scrollTop","className","classNames","tabIndex","onClick","lib","theme","icon","name","onScroll","ref","style","padding","color","_WorkbenchPane2","e","_set_activeChangeEvent","_set_activeFirstActivatedEvent","c","_initClass","_applyDecs","styleTexts","styleText","sharedStyle","type","Boolean","Number","o","_","has","_checkInRHS","_WorkbenchSidebar","_getPaneSlot","_reflowPanes","_onPanesSlotChange","WorkbenchSidebar","_this$shadowRoot","shadowRoot","querySelector","panes","call","assignedNodes","pane","_pane$activeFlex","flex","String","activeFlex","target","addEventListener","_defineProperty","panesSlots","WorkbenchSidebarComponent","refCallback","_WorkbenchSidebar2","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","WrapLink","WrappedTooltip","_WorkbenchAction","_F","WorkbenchAction","_init_icon","_init_extra_icon","_init_to","_init_extra_to","_init_href","_init_extra_href","_init_target","_init_extra_target","_init_tooltip","_init_extra_tooltip","to","href","tooltip","WorkbenchActionComponent","content","placement","url","_WorkbenchAction2","attribute","WrapperWorkbenchAction","_WorkbenchActionList","WorkbenchActionList","_init_appId","_init_extra_appId","_init_menu","_init_extra_menu","appId","menu","WorkbenchActionListComponent","currentAppId","_WorkbenchActionList2","historyMap","Map","_menu$menuItems2","history","getHistory","activeIndex","setActiveIndex","location","setLocation","unlisten","listen","clear","_menu$menuItems","pathname","search","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","map","item","index","isSimpleMenuItem","get","key","text","set","handleLinkClick","filter","defaultGetCollapsedId","node","_WorkbenchTreeElement","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_WorkbenchTreeElement_brand","_handleActionClick","_T","_nodeClickFactory","_U","_handleNodeDrop","_V","_contextMenuFactory","_W","_handleNodeToggle","WorkbenchTreeElement","_init_nodes","_init_extra_nodes","_init_actions","_init_extra_actions","_init_actionsHidden","_init_extra_actionsHidden","_init_placeholder","_init_extra_placeholder","_init_isTransformName","_init_extra_isTransformName","_init_searchPlaceholder","_init_extra_searchPlaceholder","_init_noSearch","_init_extra_noSearch","_init_activeKey","_init_extra_activeKey","_init_showMatchedNodeOnly","_init_extra_showMatchedNodeOnly","_init_matchNodeDataFields","_init_extra_matchNodeDataFields","_init_fixedActionsFor","_init_extra_fixedActionsFor","_init_collapsible","_init_extra_collapsible","_init_collapsedNodes","_init_extra_collapsedNodes","_init_allowDrag","_init_extra_allowDrag","_init_allowDragToRoot","_init_extra_allowDragToRoot","_init_allowDragToInside","_init_extra_allowDragToInside","_init_nodeKey","_init_extra_nodeKey","_init_skipNotify","_init_extra_skipNotify","_init_actionClickEvent","_init_extra_actionClickEvent","detail","_get_actionClickEvent","_init_nodeClickEvent","_init_extra_nodeClickEvent","_get_nodeClickEvent","data","_init_nodeDropEvent","_init_extra_nodeDropEvent","_get_nodeDropEvent","_init_nodeContextMenuEvent","_init_extra_nodeContextMenuEvent","preventDefault","_get_nodeContextMenuEvent","x","clientX","y","clientY","_init_nodeToggleEvent","_init_extra_nodeToggleEvent","nodeId","collapsed","_get_nodeToggleEvent","nodes","actions","actionsHidden","placeholder","isTransformName","searchPlaceholder","noSearch","activeKey","showMatchedNodeOnly","matchNodeDataFields","fixedActionsFor","collapsible","collapsedNodes","allowDrag","allowDragToRoot","allowDragToInside","nodeKey","skipNotify","WorkbenchActionsContext","Provider","value","onActionClick","WorkbenchTreeContext","basePaddingLeft","getCollapsedId","onNodeToggle","clickFactory","contextMenuFactory","matchNode","lowerTrimmedQuery","_this$matchNodeDataFi","deepMatch","length","pick","WorkbenchTree","dropEmit","_WorkbenchTreeElement2","_set_actionClickEvent","_set_nodeClickEvent","_set_nodeDropEvent","_set_nodeContextMenuEvent","_set_nodeToggleEvent","treeStyleText","actionStyleText","K","NS","actionI18nKeyMap","add","ADD","edit","EDIT","delete","DELETE","batch_delete","import","IMPORT","clone","CLONE","append_relation","APPEND_RELATION","update_relation","UPDATE_RELATION","remove_relation","REMOVE_RELATION","rollback","ROLLBACK","rollback_all","ROLLBACK_ALL","fullActionI18nKeyMap","ADD_FULL","EDIT_FULL","DELETE_FULL","IMPORT_FULL","CLONE_FULL","APPEND_RELATION_FULL","UPDATE_RELATION_FULL","REMOVE_RELATION_FULL","ROLLBACK_FULL","ROLLBACK_ALL_FULL","categoryI18nKeyMap","project","PROJECT","userGroup","USER","permission","PERMISSION","brick","BRICK","route","ROUTE","template","TEMPLATE","snippet","SNIPPET","i18n","I18N","image","IMAGE","function","FUNCTION","MENU","menuItem","MENU_ITEM","workflow","WORKFLOW","modelI18nKeyMap","PROJECT_MICRO_APP","MICRO_APP_RESOURCE_PERMISSION","STORYBOARD_BRICK","STORYBOARD_ROUTE","STORYBOARD_TEMPLATE","STORYBOARD_SNIPPET","STORYBOARD_I18N","MICRO_APP_RESOURCE_IMAGE","STORYBOARD_FUNCTION","MICRO_APP_RESOURCE_MENU","MICRO_APP_RESOURCE_MENU_ITEM","translateHistory","_categoryI18nKeyMap$h","_actionI18nKeyMap$his","_modelI18nKeyMap$hist","_history$abstract","_history$abstract2","_modelI18nKeyMap$hist2","_history$abstract3","_history$abstract4","_history$abstract5","_history$abstract6","_history$abstract7","_history$abstract8","_history$abstract9","_history$abstract0","_fullActionI18nKeyMap","_history$abstract1","_history$abstract10","historyAction","action","rollBackIdInfo","category","t","leftObjectId","abstract","rightObjectId","translateNodes","nodesCount","leftNodes","leftNodesCount","rightNodes","rightNodesCount","rollbackAbstract","nodeChanges","join","relationChanges","undefined","total","separator","NODE","context","count","initializeReactI18n","en","LOAD_MORE","LOADING","NO_DATA","NODE_ellipsis","zh","WrappedButton","WrappedLink","WrappedEasyopsAvatar","WrappedPopover","onVisibleChange","onBeforeVisibleChange","_WorkbenchHistoryActi","_WorkbenchHistoryAction_brand","_handleHistoryItemClick","_handleRollback","_handleRollbackAll","WorkbenchHistoryAction","_init_projectId","_init_extra_projectId","_init_historyItemClickEvent","_init_extra_historyItemClickEvent","_get_historyItemClickEvent","_init_rollbackEvent","_init_extra_rollbackEvent","_get_rollbackEvent","_init_rollbackAllEvent","_init_extra_rollbackAllEvent","_get_rollbackAllEvent","projectId","WorkbenchHistoryActionComponent","onHistoryItemClick","onRollback","onRollbackAll","props","useTranslation","loading","setLoading","hideLoadMore","setHideLoadMore","allLoaded","setAllLoaded","historyList","setHistoryList","lastTs","handleLoadList","isFirst","WorkspaceApi_getChangeHistory","ts","limit","then","result","pre","list","translation","concat","catch","error","handleHttpError","finally","trigger","arrow","arrowColor","slot","shape","i","HistoryItem","uniqueKey","enableRollback","disabled","moment","duration","diff","humanizedTime","days","format","humanize","ss","s","m","h","title","nameOrInstanceId","user","size","_WorkbenchHistoryAction","_set_historyItemClickEvent","_set_rollbackEvent","_set_rollbackAllEvent","autoFocusedSets","Set","_PageArchNode","_PageArchNode_brand","_handleLabelEditingChange","_handleLabelChange","_handleNodeClick","_handleNodeDoubleClick","_handleNodeContextMenu","_handleChildAppend","_handleExternalClick","_handleSubNodeDoubleClick","_handleSubNodeContextMenu","PageArchNode","_init_label","_init_extra_label","_init_type","_init_extra_type","_init_external","_init_extra_external","_init_subNodes","_init_extra_subNodes","_init_notSynced","_init_extra_notSynced","_init_disableChildAppend","_init_extra_disableChildAppend","_init_autoFocusOnce","_init_extra_autoFocusOnce","_init_labelEditingChange","_init_extra_labelEditingChange","_get_labelEditingChange","_init_labelChange","_init_extra_labelChange","_get_labelChange","_init_nodeClick","_init_extra_nodeClick","_get_nodeClick","_init_nodeDoubleClick","_init_extra_nodeDoubleClick","_get_nodeDoubleClick","_init_nodeContextMenu","_init_extra_nodeContextMenu","_get_nodeContextMenu","_init_childAppend","_init_extra_childAppend","_get_childAppend","_init_externalClick","_init_extra_externalClick","_get_externalClick","_init_subNodeDoubleClick","_init_extra_subNodeDoubleClick","_get_subNodeDoubleClick","_init_subNodeContextMenu","_init_extra_subNodeContextMenu","_get_subNodeContextMenu","label","external","subNodes","notSynced","disableChildAppend","autoFocusOnce","PageArchNodeComponent","onLabelEditingChange","onLabelChange","onNodeClick","onNodeDoubleClick","onNodeContextMenu","onChildAppend","onExternalClick","onSubNodeDoubleClick","onSubNodeContextMenu","_subNodes$length","_type","currentLabel","setCurrentLabel","editingLabel","setEditingLabel","editingLabelInitialized","shouldEmitLabelChange","setShouldEmitLabelChange","labelInputRef","handleEditLabel","stopPropagation","setTimeout","_labelInputRef$curren","_labelInputRef$curren2","focus","preventScroll","select","handleInputChange","handleInputKeydown","keyCode","which","_labelInputRef$curren3","blur","handleInputBlur","handleChildAppend","handleExternalClick","extraHeight","Math","max","floor","height","onDoubleClick","onContextMenu","onChange","onKeyDown","onBlur","onMouseDown","subNode","SubNode","role","_ref2","_PageArchNode2","_set_labelEditingChange","_set_labelChange","_set_nodeClick","_set_nodeDoubleClick","_set_nodeContextMenu","_set_childAppend","_set_externalClick","_set_subNodeDoubleClick","_set_subNodeContextMenu","method","_FormItemElementBase_brand","FormItemElementBase","_initProto","_init_helpBrick","_init_extra_helpBrick","_init_labelBrick","_init_extra_labelBrick","_init_labelCol","_init_extra_labelCol","_init_wrapperCol","_init_extra_wrapperCol","isFormItemElement","validateState","_classPrivateSetter","_set_validate","_render","_get_validate","notRender","hidden","_set__notRender","_get__notRender","$bindFormItem","_get_bindFormItem","_set_bindFormItem","helpBrick","labelBrick","labelCol","wrapperCol","setNotRender","getFormElement","element","parentNode","isFormElement","_this","_this2","_this3","_this4","_this5","_this6","_FormItemElementBase","locales","CONTRACT_OPTIONS_TIPS_PREFIX","CONTRACT_OPTIONS_TIPS_SUFFIX","CONTRACT_VALIDATE_MESSAGE","WrappedInput","MoreOption","itemsCount","setCount","setEdit","autoFocus","inputStyle","width","handleBlur","WrappedFormItem","WrappedAutoComplete","_EoContractSelect","_EoContractSelect_brand","splitContract","version","split","isContractApi","test","checkContractRule","isNil","EoContractSelectComponent","suffix","q","setQ","pageSize","setPageSize","contractList","setContractList","query","ContractCenterApi_searchContract","page","fullContractName","interceptorParams","ignoreLoadingBar","err","console","useContractList","mixedValue","setMixedValue","versionOptions","setVersionOptions","handlerSearch","debounce","_contractList$find","_versionList$","versionList","find","autofillVersion","useBrick","ReactUseMultipleBricks","_EoContractSelect2","_init_name","_init_extra_name","_init_required","_init_extra_required","_init_value","_init_extra_value","_init_suffix","_init_extra_suffix","_init_changeEvent","_init_extra_changeEvent","_get_changeEvent","required","exportparts","curElement","formElement","validator","handleChange","_set_changeEvent","WrappedMenu","WrappedMenuItem","lockBodyScroll","unwrapProvider","_GenerateSnippetsCont","_GenerateSnippetsContextMenu_brand","_handleItemDragStart","_handleItemDragEnd","GenerateSnippetsContextMenu","_init_options","_init_extra_options","_init_position","_init_extra_position","_init_itemDragStartEvent","_init_extra_itemDragStartEvent","_init_itemDragEndEvent","_init_extra_itemDragEndEvent","_get_itemDragStartEvent","_get_itemDragEndEvent","position","open","close","disconnectedCallback","super","GenerateSnippetsContextMenuComponent","onItemDragStart","onItemDragEnd","_ref3","_ref4","dragging","setDragging","containerRef","fixedPosition","setFixedPosition","handleMaskClick","handleItemStart","_e$dataTransfer","dragConf","dataTransfer","setData","JSON","stringify","classList","handleItemDragEnd","remove","rect","getBoundingClientRect","clientWidth","clientHeight","document","documentElement","fixed","left","top","visibility","op","_op$children","_op$children2","children","itemIndex","hoist","draggable","onDragStart","onDragEnd","_GenerateSnippetsContextMenu","_set_itemDragStartEvent","_set_itemDragEndEvent","bundledLanguages","json","javascript","js","typescript","html","html-derivative","xml","css","markdown","md","mermaid","mmd","jsx","tsx","shellscript","bash","sh","shell","zsh","python","py","go","sql","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","code","lang","mermaidPromise","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","async","promises","visit","tree","parent","tagName","properties","classListItem","slice","toLowerCase","getCodeLanguage","svg","default","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","_document$getElementB","getElementById","root","parseFromString","svgElement","defs","createElementNS","innerHTML","prepend","textContent","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","Promise","all","production","Fragment","jsxs","MarkdownComponent","_shiki$theme","components","shiki","reactContent","setReactContent","ignore","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","WrappedAvatar","MessageComponent","message","messageChunks","chunks","chunkRegExp","match","lastIndex","exec","fullMatch","command","start","previousText","trim","raw","lastText","contentRef","contentElement","textingElements","parentElement","querySelectorAll","partial","lastChild","nodeType","Node","ELEMENT_NODE","_lastChild$previousSi","TEXT_NODE","previousSibling","failed","chunk","MessageChunkComponent","_ChatConversation","_ChatConversation_brand","_handleStoryboardUpdate","ChatConversation","_init_messages","_init_extra_messages","_init_errorBoundary","_init_extra_errorBoundary","_init_storyboardUpdate","_init_extra_storyboardUpdate","storyboard","_get_storyboardUpdate","messages","errorBoundary","ChatConversationComponent","host","onStoryboardUpdate","lastIndexMapRef","setChunks","manualScrolledRef","_lastIndexMapRef$curr","newChunks","newPage","parsed","parse","prev","setStoryboard","blocks","storyboardMap","uuid","sort","a","b","seq","contentLayout","main","pageTitle","hasContent","block","child","childBrick","iid","meta","rawBrick","hasContainer","verticalScrollParent","overflowY","getComputedStyle","getPropertyValue","ShadowRoot","Element","scrollingElement","scrollTo","scrollHeight","removeEventListener","_message$key","_ChatConversation2","_set_storyboardUpdate","InspectOutlineComponent","variant","borderWidth","_ChatPreview","_ChatPreview_brand","_handleActiveTargetChange","ChatPreview","_init_storyboard","_init_extra_storyboard","_init_theme","_init_extra_theme","_init_uiVersion","_init_extra_uiVersion","_init_app","_init_extra_app","_init_inspecting","_init_extra_inspecting","_init_activeTargetChangeEvent","_init_extra_activeTargetChangeEvent","_get_activeTargetChangeEvent","uiVersion","app","inspecting","payload","iframeWin","contentWindow","postMessage","channel","origin","ChatPreviewComponent","onActiveTargetChange","iframeRef","ready","setReady","initialized","setInitialized","scroll","setScroll","hoverOutlines","setHoverOutlines","activeOutlines","setActiveOutlines","adjustedHoverOutlines","setAdjustedHoverOutlines","adjustedActiveOutlines","setAdjustedActiveOutlines","handleIframeLoad","check","_iframeRef$current","_preview_only_render","_iframeRef$current2","_window$PUBLIC_ROOT","pkg","__secret_internals","getBrickPackagesById","Error","_preview_only_inject","filePath","getBasePath","window","PUBLIC_ROOT","_iframeRef$current3","yaml","safeDump","schema","JSON_SCHEMA","skipInvalid","noRefs","noCompatMode","handleMouseOut","outlines","listener","_event$data","_iframeRef$current4","adjustOutlines","outline","_iframeRef$current$of","_iframeRef$current5","_iframeRef$current$of2","_iframeRef$current6","offsetLeft","offsetTop","rest","src","onLoad","onMouseOut","_extends","_ChatPreview2","_set_activeTargetChangeEvent","isInspecting","currentHoverElement","targets","getPossibleBrickTargets","composedPath","getTargetOutline","selectByClick","onMouseEvent","hoverOnTarget","eventTargets","HTMLElement","elementsFromPoint","hoverElement","leading","onPointerMove","onPointerLeave","inspectTargets","forEach","dataset","startsWith","substring","IID_ITEM_PREFIX","getLabel","scrollX","scrollY","pop","injected","sendMessage","customElements","define","createProviderClass","_e$data","toggleInspecting","selector","elements","walk","candidates","getElementsIncludingInShadowDOM","_PreGeneratedPreview","PreGeneratedPreview","_init_generations","_init_extra_generations","_init_category","_init_extra_category","generations","PreGeneratedPreviewComponent","setInjected","inject","fixedPkg","allSettled","candidatesMap","mocksMap","generation","_generation$displayLe","candidatesByReadWriteType","propertyId","candidatesByDisplayLevel","rwType","displayLevel","mockData","tableChildren","gridColumn","textAlign","table","gridTemplateColumns","propertyIndex","readWriteTypeIndex","isLastProperty","propertyName","candidate","values","_candidate$propertyNa","gridRow","isLastRow","_candidate$category","_candidate$mockData","_candidate$storyboard","candidateCategory","dataSource","mockValue","random","cellData","candidateChildren","isObject","container","fixBrickConf","layout","previewStyleText","_brick$properties","prefix","_PreGeneratedPreview2","_PreGeneratedTableVie","PreGeneratedTableView","PreGeneratedTableViewComponent","_PreGeneratedTableView","_PreGeneratedContaine","PreGeneratedContainer","_init_useBrick","_init_extra_useBrick","_init_dataSource","_init_extra_dataSource","PreGeneratedContainerComponent","_PreGeneratedContainer","shadowOptions","loadEditors","customEditors","getDataDependency","contextConfs","keyword","depsMap","contextConf","stats","collectMemberUsage","if","resolve","processNodeList","nodeList","nodeItem","_find$deps","dependencyList","parents","cloneDeep","dep","deps","some","depsData","collects","matches","processDataDeps","processNodeItem","nodeDataList","dependencyMap","dataType","curData","Array","from","usedProperties","_internals","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","developHelper","developHelperV2","_developHelperV2$getB","getBrickPackages","__compat_internals","_RawDataPreview","_RawDataPreview_brand","_handleComment","_handleApprove","_handleViewAttrPrompt","RawDataPreview","_init_previewUrl","_init_extra_previewUrl","_init_mocks","_init_extra_mocks","_init_busy","_init_extra_busy","_init_commentEvent","_init_extra_commentEvent","_get_commentEvent","_init_approveEvent","_init_extra_approveEvent","_get_approveEvent","_init_viewAttrPromptEvent","_init_extra_viewAttrPromptEvent","_get_viewAttrPromptEvent","previewUrl","mocks","busy","RawDataPreviewComponent","onComment","onApprove","onViewAttrPrompt","propertyToggleStateRef","propertyExpandStateRef","propertyApproveStateRef","_generations$filter$m","approved","onMessage","URL","args","_generation$propertyN","_generation$candidate2","candidatesByVisualWeight","_generation$candidate","_candidate$visualWeig","visualWeight","events","click","generationId","transformOrigin","transform","propertyType","propertyValues","_generation$mockData","mockList","ma","mb","aIsArray","isArray","bIsArray","aIsNil","bIsNil","aIsEmpty","bIsEmpty","mock","convertToStoryboard","change","propertyInstanceId","comment","autoSize","keydown","sameOrigin","portal","_RawDataPreview2","_set_commentEvent","_set_approveEvent","_set_viewAttrPromptEvent","path","keys","regexp","pathToRegexp","defaults","end","strict","sensitive","attrInstanceId","InstanceApi_createInstance","attr","boolean","promptOfBoolean","promptOfDateTime","enum","promptOfEnum","number","promptOfNumber","others","promptOfOthers","promptOfStructList","struct","promptOfStruct","promptOfJson","convertToChart","config","metricKey","metric","groupedMetricKeys","counterMetricKey","brickItem","unit","chartType","xField","yField","showArea","_config$max","isPercentBase1","isPercentBase100","axis","yAxis","precision","min","thresholdColors","yFields","timeFormat","areaOpacity","forceAbsoluteNumbers","series","isNegative","areaShape","legends","getFixedT","getCompatibleBrickConf","slots","childrenToSlots","originalSlots","newSlots","sl","hasOwnProperty","bricks","initializeI18n","_PreGeneratedConfig","_PreGeneratedConfig_brand","_handleBrickChange","PreGeneratedConfig","_init_attrList","_init_extra_attrList","_init_mockList","_init_extra_mockList","_init_metricGroups","_init_extra_metricGroups","_init_containerConfig","_init_extra_containerConfig","_init_brickChangeEvent","_init_extra_brickChangeEvent","_get_brickChangeEvent","attrList","metricGroups","containerConfig","PreGeneratedConfigComponent","onBrickChange","setConfig","groupMap","setGroupMap","selectedIdsRef","orderedIdsRef","eventAgentId","uniqueId","viewType","viewAttrList","dataSourceList","metrics","groups","_results$id","_results","metricsMap","results","group","groupIndex","metricName","counter","nextGroupIndex","buildGroupedMetrics","orderedList","selectedIds","orderedIds","indexOf","weightMap","weightMapLiteral","groupMapLiteral","brickConf","configList","_settings$fields","dataName","settings","valueAccessor","getMemberAccessor","metricConfigList","pagination","wrapper","charts","templateColumns","gap","attrConfigList","cardTitle","fields","description","brickMap","lowLevelConvertToStoryboard","Object","fromEntries","rowKey","columns","col","dataIndex","useChildren","column","convertToBrickConf","_meta$metric$candidat","getConfigMeta","can","observer","ResizeObserver","body","observe","disconnect","pkgVisualBuilder","fixedPkgVisualBuilder","_orderedList$slice","_viewAttrList$map","_dataSourceList$map","_dataSourceList$map2","selectedItems","includes","selectedRowKeys","injectChartV2Styles","rowSelection","rowDraggable","bordered","mode","dropdownHoist","flatMap","_filteredCandidates","_mockList$0$item$id","_mockList$2","filteredCandidates","_meta$metric$candidat2","_mockList$","condition","headerBrick","minus","plus","lifeCycle","onPageLoad","_candidates$filter$ma","_candidates","_findNearestCandidate","_candidates2","weight","reduce","nearest","abs","functions","source","_counterMetric","editedMetrics","finalMetrics","counterMetric","g","every","_PreGeneratedConfig2","_set_brickChangeEvent","_PreGeneratedConfigPr","PreGeneratedConfigPreview","_init_container","_init_extra_container","PreGeneratedConfigPreviewComponent","_attrList$","_PreGeneratedConfigPreview","generateMetricCandidates","getAvailableContainersByType","metricCount","nonMetricCount","prefer","getMergedObjectInfo","objectIdWithNamespace","isTimeSeries","objectId","namespace","InstanceApi_postSearchV3","$ne","space","$exists","warn","attrs","parentObjectIds","parentId","_attr$generatedView","generatedView","page_size","order","hasMetricName","displayName","datum","dataList","listValue","_object_id","time","containerOptions","_RawMetricPreview","RawMetricPreview","_init_grouped","_init_extra_grouped","grouped","RawMetricPreviewComponent","handledGroupIndexes","_groupMap$get","_generation$candidate3","groupedMetrics","isLastGroupedRow","isMergedRow","groupCount","propertyUnit","propertyDataType","_groupedMetrics","isMergedCell","gen","isGroupedCell","_groupedMetrics2","justifyContent","round","Date","_gen$mockData","sharedPreviewStyleText","_RawMetricPreview2","storyboardData","includesFnDeps","fnList","fnUsage","hasNonStaticUsage","menuUsage","usedArgs","collectFnUsage","beforeVisitGlobalMember","traverseStoryboardExpressions","collectAppGetMenuUsage","matchExpressionString","allFunctions","matchedFnList","fn","collectMemberUsageInFunction","menus","PropertyEditorComponent","LegacyPropertyEditor","BEFORE_SUBMIT_KEY","ADVANCED_CHANGE_KEY","SchemaField","createSchemaField","FormLayout","Input","FormItem","AdvancedFormItem","FormItemWithoutAdvanced","FormCollapse","NumberPicker","Radio","Select","Switch","CategoryTitle","CodeEditor","CodeEditorComponent","IconSelect","IconSelectComponent","ColorPicker","ColorPickerComponent","UseChildrenSelect","UseChildrenSelectComponent","InputWithUrl","InputWithUrlComponent","InputWithUnit","InputWithUnitComponent","TextAlignRadio","TextAlignRadioComponent","CustomOptions","CustomOptionsComponent","BoxSize","BoxSizeComponent","CustomTab","cacheCustomEditor","_PropertyEditor","_formRef","_PropertyEditor_brand","_handleValuesChange","_handleTokenClick","_submitValue","_onSubmitEffect","_handleTriggerAction","_filterData","PropertyEditor","createRef","_init_editorName","_init_extra_editorName","_init_values","_init_extra_values","_init_advancedMode","_init_extra_advancedMode","_init_dataList","_init_extra_dataList","_init_editorPackages","_init_extra_editorPackages","_init_links","_init_extra_links","_init_extraLibs","_init_extra_extraLibs","_init_childSlots","_init_extra_childSlots","_init_successEvent","_init_extra_successEvent","_init_errorEvent","_init_extra_errorEvent","_init_valuesChangeEvent","_init_extra_valuesChangeEvent","_get_valuesChangeEvent","_init_tokenClick","_init_extra_tokenClick","_get_tokenClick","createEffectHook","form","_init_triggerActionEvent","_init_extra_triggerActionEvent","_get_triggerActionEvent","transformData","omit","shouldFilterFields","isEmpty","filterData","editorName","advancedMode","editorPackages","links","extraLibs","childSlots","validate","_classPrivateFieldGet2","getFormInstance","_get_successEvent","ADVANCED_FORM_KEY","_classPrivateFieldGet3","notify","_get_errorEvent","handleValuesChange","handleTokenClick","handleTriggerAction","onSubmitEffect","Editor","setEditor","currentTheme","useCurrentTheme","cache","createCache","createForm","transformValueRef","advancedChangeRef","onAdvancedChangeEffect","useImperativeHandle","load","_customEditors$get","_customEditors$get2","defaultTransform","_values$ADVANCED_FORM","filterValue","setInitialValues","_transformValueRef$cu","NORMAL_FORM_KEY","take","field","display","formValues","getState","formData","setValues","addEffects","onFormValuesChange","ConfigProvider","prefixCls","algorithm","darkAlgorithm","defaultAlgorithm","InputNumber","handleVisible","getPopupContainer","StyleProvider","FormProvider","SchemaFieldComponent","scope","tokenClick","triggerAction","effects","onFieldInit","onFieldValueChange","onFieldInitialValueChange","onFormInitialValuesChange","onFormValidateSuccess","onSubmit","onAdvancedChange","formilySchemaFormatter","_PropertyEditor2","_set_successEvent","_set_errorEvent","_set_valuesChangeEvent","_set_tokenClick","_set_triggerActionEvent","dependencies"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/9653.b9c29b0d.js","mappings":"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","sources":["webpack:///./src/workbench-action/workbench-action.shadow.css","webpack:///./src/workbench-pane/workbench-pane.shadow.css","webpack:///./src/pre-generated-config/styles.shadow.css","webpack:///./src/workbench-action/host-context.css","webpack:///./src/raw-metric-preview/styles.shadow.css","webpack:///./src/generate-snippets-context-menu/styles.shadow.css","webpack:///./src/pre-generated-preview/preview.shadow.css","webpack:///./src/raw-metric-preview/preview.shadow.css","webpack:///./src/raw-data-preview/styles.shadow.css","webpack:///./src/page-arch-node/styles.shadow.css","webpack:///./src/contract-select/styles.shadow.css","webpack:///./src/shared/scrollbar.shadow.css","webpack:///./src/workbench-action-list/host-context.css","webpack:///./src/workbench-action-list/workbench-action-list.shadow.css","webpack:///./src/workbench-pane/index.tsx","webpack:///./src/workbench-sidebar/index.tsx","webpack:///./src/workbench-action/host-context.css?4509","webpack:///./src/workbench-action/index.tsx","webpack:///./src/workbench-action-list/host-context.css?28ab","webpack:///./src/workbench-action-list/index.tsx","webpack:///./src/workbench-tree/index.tsx","webpack:///./src/workbench-history-action/i18n.ts","webpack:///./src/workbench-history-action/utils.ts","webpack:///./src/workbench-history-action/index.tsx","webpack:///./src/page-arch-node/index.tsx","webpack:///../../src/FormItemElement.tsx","webpack:///./src/contract-select/i18n.ts","webpack:///./src/contract-select/more-option/MoreOption.tsx","webpack:///./src/contract-select/index.tsx","webpack:///./src/contract-select/useContractList.ts","webpack:///./src/generate-snippets-context-menu/index.tsx","webpack:///./src/generate-snippets-context-menu/i18n.ts","webpack:///../../src/index.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/utils.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/chat-conversation/MessageComponent.tsx","webpack:///./src/chat-conversation/index.tsx","webpack:///./src/chat-preview/InspectOutlineComponent.tsx","webpack:///./src/chat-preview/index.tsx","webpack:///./src/data-providers/chat-preview/inspector.ts","webpack:///./src/data-providers/inject-chat-preview-agent.ts","webpack:///./src/pre-generated-preview/index.tsx","webpack:///./src/pre-generated-table-view/index.tsx","webpack:///./src/pre-generated-container/index.tsx","webpack:///./src/data-providers/check-editor-by-name.ts","webpack:///./src/data-providers/get-data-dependency.ts","webpack:///./src/data-providers/get-dependency-tree.ts","webpack:///./src/shared/compat_internals.ts","webpack:///./src/raw-data-preview/index.tsx","webpack:///./src/data-providers/parse-path.ts","webpack:///./src/data-providers/batch-update-raw-data-generated-view.ts","webpack:///./src/data-providers/get-raw-data-system-prompts.ts","webpack:///./src/pre-generated-config/i18n.ts","webpack:///./src/raw-metric-preview/convert.ts","webpack:///./src/pre-generated-config/convertToBrickConf.ts","webpack:///./src/pre-generated-config/index.tsx","webpack:///./src/pre-generated-config-preview/index.tsx","webpack:///./src/raw-metric-preview/generateMetricCandidates.ts","webpack:///./src/data-providers/get-config-by-data-for-ai.ts","webpack:///./src/raw-metric-preview/index.tsx","webpack:///./src/data-providers/get-usage-member-statistics.ts","webpack:///./src/chat-preview/styles.shadow.css","webpack:///./src/property-editor/index.tsx","webpack:///./src/chat-conversation/styles.shadow.css","webpack:///./src/workbench-history-action/styles.shadow.css","webpack:///./src/pre-generated-config/preview.shadow.css","webpack:///./src/workbench-sidebar/workbench-sidebar.shadow.css","webpack:///./src/pre-generated-preview/styles.shadow.css","webpack:///./src/raw-data-preview/preview.shadow.css","webpack:///./src/pre-generated-table-view/styles.shadow.css"],"sourcesContent":["// 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, `.action::part(link){display:flex;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;color:var(--vb-workbench-action-color);position:relative;transition:none}.action.active::part(link)::before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:2px;background-color:var(--vb-workbench-action-active-border-color)}.action.active::part(link),\n.action::part(link):hover{color:var(--vb-workbench-active-color)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block;--pane-color:#595959}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--pane-color:#ccc}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.pane{display:flex;flex-direction:column;color:var(--pane-color);height:100%}.pane-header{display:flex;align-items:center;cursor:pointer;border-top:1px solid transparent;position:relative}.pane-header:focus{outline-width:1px;outline-style:solid;outline-offset:-1px;outline-color:#007fd4}:host(:not(:first-child)) .pane-header{border-top-color:rgba(204,204,204,0.2)}.pane-scroll-shadow{display:none;position:absolute;bottom:-3px;left:0;right:0;height:3px;box-shadow:#000000 0 6px 6px -6px inset;z-index:1}.scrolled .pane-scroll-shadow{display:block}.pane-title{display:flex;align-items:center;font-size:13px;line-height:24px;height:25px;min-width:0;flex:1}.title-icon{display:flex;justify-content:center;align-items:center;width:24px;padding-right:2px;line-height:1;flex-shrink:0}.title-label{text-transform:uppercase;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pane-body{flex-grow:1;min-height:0;display:none;overflow:hidden;overflow-y:auto;overflow-y:overlay}:host([active]) .pane-body{display:initial}:host(:not(:hover)) ::slotted([slot=\"actions\"]){display:none}.badge{background-color:rgb(77,77,77);color:rgb(255,255,255);border-radius:11px;height:18px;padding:3px 6px;line-height:13px;margin:0 3px;font-size:12px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--vb-workbench-action-color:#616161;--vb-workbench-action-active-color:#1f1f1f;--vb-workbench-action-active-border-color:#005fb8}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--vb-workbench-action-color:rgba(255,255,255,0.4);--vb-workbench-action-active-color:#fff;--vb-workbench-action-active-border-color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}.mask,\n.container{display:none;position:fixed;z-index:1}.mask{top:0;bottom:0;left:0;right:0;z-index:1}:host([active]) .mask,\n:host([active]) .container{display:block}.container{background:var(--antd-dropdown-menu-bg);border-radius:var(--medius-border-radius);padding:5px}.container .title{padding:5px 12px;cursor:default;color:var(--color-secondary-text);border-bottom:1px solid var(--color-text-divider-line)}.container eo-menu{border:none;padding:5px 0}.container eo-menu eo-menu-item:not([disabled]):hover::part(menu-item){background-color:var(--left-sidebar-item-hover-bg)}.container eo-menu eo-menu-item[disabled]::part(menu-item){cursor:not-allowed}.container eo-menu eo-menu-item::part(menu-item){cursor:grab;padding:5px 12px;border-radius:var(--medius-border-radius);min-width:max-content}.container eo-menu eo-menu-item.dragging{opacity:0.5}.container eo-menu eo-tooltip{display:block}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `body{background-color:transparent}#preview-root{padding:0;height:auto;max-height:100vh;overflow-y:auto;border:1px solid var(--theme-gray-border-color);border-radius:4px;background:var(--body-background)}.head-cell{position:sticky;top:0;z-index:1;font-weight:bold}.head-cell,\n.body-cell{background:var(--body-background)}.last-col-cell{border-right-color:transparent}.last-row-cell{border-bottom-color:transparent}.form-container > ::part(message){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `#preview-root{overflow-y:initial;max-height:initial}.body-cell.large-chart-cell{padding:16px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{--local-node-outline-style:solid;display:block}:host([hidden]){display:none}:host([not-synced]){--local-node-outline-style:dashed}*{box-sizing:border-box}.node{width:168px;max-width:none;height:130px;position:relative;display:flex;flex-direction:column;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.node.board{height:70px;max-width:168px;width:-moz-fit-content;width:fit-content;padding-bottom:4px}.label,\n.label-input{width:100%;height:24px;padding:3px;border:none;line-height:18px;font-size:var(--sub-title-font-size-small);color:var(--color-header-text);font-weight:var(--font-weight-500);text-align:center;font-family:inherit;cursor:text;-webkit-user-select:text;user-select:text}.label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.node.editing-label .label{height:0}.node:not(.editing-label) .label-input{display:none}.add-button,\n.icon-container,\n.thumbnail-container,\n.thumbnail-placeholder{display:flex;align-items:center;justify-content:center}.thumbnail-container{height:98px;outline:1px var(--local-node-outline-style) var(--palette-gray-4);opacity:1;border:4px solid transparent;border-radius:4px;width:100%;position:relative;flex-direction:column}.thumbnail-placeholder{color:var(--palette-gray-5);font-size:36px;flex:1}.icon-container{font-size:20px;background-color:var(--palette-teal-6);color:var(--palette-gray-4);width:36px;height:36px;border-radius:50%;outline-offset:4px}:host([active]) .thumbnail-container,\n:host([active]) .icon-container{outline:2px var(--local-node-outline-style) var(--palette-blue-3)}:host(:not([active])) .node:hover .thumbnail-container,\n:host(:not([active])) .node:hover .icon-container{outline:1px var(--local-node-outline-style) var(--palette-blue-3)}.add-button{position:absolute;bottom:-26px;left:calc(50% - 12px);width:24px;height:24px;background:var(--palette-gray-3);color:var(--palette-gray-6);border-radius:50%;cursor:pointer}:host([not-synced]) .add-button,\n:host([disable-child-append]) .add-button,\n:host(:not([active])) .add-button{display:none}.add-button:hover{background:var(--palette-blue-5);color:var(--palette-gray-2)}.external{position:absolute;top:4px;left:4px;padding:0 10px;display:flex;align-items:center;gap:6px;background:var(--palette-purple-4);font-size:12px;line-height:20px;height:22px;cursor:pointer;color:var(--palette-gray-1);border-radius:9999px;right:4px;max-width:-moz-fit-content;max-width:fit-content}.external-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.external:hover{background:var(--palette-purple-5)}.sub-nodes{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;width:100%}.sub-node{background-color:var(--palette-gray-2);border-radius:4px;padding:6px;display:flex;flex-direction:column;justify-content:space-between;height:32px}.sub-node-skeleton-title{width:18px;height:4px;border-radius:2px;align-self:flex-start;background-color:var(--palette-gray-4)}.sub-node-skeleton-content{width:100%;height:4px;border-radius:2px;background-color:var(--palette-gray-4)}.sub-node-skeleton-button{width:18px;height:4px;border-radius:2px;align-self:flex-end;background-color:var(--palette-blue-3)}.sub-node:hover{background-color:var(--palette-gray-3)}.sub-node:hover .sub-node-skeleton-title,\n.sub-node:hover .sub-node-skeleton-content{background-color:var(--palette-gray-5)}.sub-node:hover .sub-node-skeleton-button{background-color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}.contract-wrapper{display:flex;gap:4px}.contract-selector{flex:1}.version-selector{width:100px}.options-tips{padding:0px 10px;font-weight:400;color:#999;white-space:nowrap;font-style:italic}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `.custom-scrollbar-container{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.15) rgba(255,255,255,0.03)}.custom-scrollbar-container::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;position:absolute}.custom-scrollbar-container::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,0);border-radius:4px}.custom-scrollbar-container:hover::-webkit-scrollbar-track{background-color:rgba(255,255,255,0.03)}.custom-scrollbar-container:hover::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,0.15)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--vb-workbench-action-list-background:#f8f8f8}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--vb-workbench-action-list-background:#323237}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `:host{display:flex;flex-direction:column;height:100%;overflow-y:auto;scrollbar-width:none;background-color:var(--vb-workbench-action-list-background)}:host([hidden]){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n useEffect,\n useRef,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./workbench-pane.shadow.css\";\nimport sharedStyle from \"../shared/scrollbar.shadow.css\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport classNames from \"classnames\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface WorkbenchPaneProps {\n titleLabel?: string;\n active?: boolean;\n badge?: number;\n onActiveChange?(active: boolean): void;\n onFirstActivated?(): void;\n}\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-pane\", {\n styleTexts: [styleText, sharedStyle],\n})\nclass WorkbenchPane extends ReactNextElement {\n @property() accessor titleLabel: string | undefined;\n\n @property({ type: Boolean }) accessor active: boolean | undefined;\n\n @property({ type: Number }) accessor badge: number | undefined;\n\n @event({ type: \"active.change\" })\n accessor #activeChangeEvent: EventEmitter<boolean>;\n #handleActiveChange = (active: boolean): void => {\n if (active !== this.active) {\n this.active = active;\n this.#activeChangeEvent.emit(active);\n }\n };\n\n @event({ type: \"active.firstActivated\" })\n accessor #activeFirstActivatedEvent: EventEmitter<void>;\n\n #handleActiveFirstActivated = (): void => {\n this.#activeFirstActivatedEvent.emit();\n };\n\n render() {\n return (\n <WorkbenchPaneComponent\n titleLabel={this.titleLabel}\n active={this.active}\n badge={this.badge}\n onActiveChange={this.#handleActiveChange}\n onFirstActivated={this.#handleActiveFirstActivated}\n />\n );\n }\n}\n\nfunction WorkbenchPaneComponent({\n titleLabel,\n active,\n badge,\n onActiveChange,\n onFirstActivated,\n}: WorkbenchPaneProps) {\n const [internalActive, setInternalActive] = useState<boolean>(active);\n const [activatedOnce, setActivatedOnce] = useState(false);\n\n useEffect(() => {\n setInternalActive(active);\n }, [active]);\n\n useEffect(() => {\n onActiveChange?.(internalActive);\n }, [internalActive, onActiveChange]);\n\n const handleClick = useCallback(() => {\n setInternalActive((previousActive) => !previousActive);\n if (!activatedOnce && !internalActive) {\n setActivatedOnce(true);\n onFirstActivated?.();\n }\n }, [activatedOnce, internalActive, onFirstActivated]);\n\n const scrollBodyRef = useRef<HTMLDivElement>();\n\n const [scrolled, setScrolled] = useState(false);\n\n const handleScroll = useMemo(\n () =>\n debounceByAnimationFrame((): void => {\n setScrolled(scrollBodyRef.current.scrollTop > 0);\n }),\n []\n );\n\n return (\n <div\n className={classNames(\"pane\", {\n scrolled,\n })}\n >\n <div className=\"pane-header\" tabIndex={0} onClick={handleClick}>\n <div className=\"pane-title\">\n <span className=\"title-icon\">\n {internalActive ? (\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"down\" />\n ) : (\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"right\" />\n )}\n </span>\n <div className=\"title-label\">{titleLabel}</div>\n <slot name=\"title\" />\n </div>\n <slot name=\"actions\" />\n {badge && <div className=\"badge\">{badge}</div>}\n <div className=\"pane-scroll-shadow\"></div>\n </div>\n <div\n className=\"pane-body custom-scrollbar-container\"\n onScroll={handleScroll}\n ref={scrollBodyRef}\n >\n <slot>\n <div\n style={{\n padding: \"10px 20px\",\n color: \"var(--text-color-secondary)\",\n }}\n >\n No content\n </div>\n </slot>\n </div>\n </div>\n );\n}\n\nexport { WorkbenchPane };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport styleText from \"./workbench-sidebar.shadow.css\";\n\ninterface WorkbenchSidebarProps {\n titleLabel: string;\n refCallback: (element: HTMLDivElement) => void;\n}\ninterface WorkbenchSidebarChildElement extends HTMLElement {\n active?: boolean;\n activeFlex?: string;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-sidebar\", {\n styleTexts: [styleText],\n})\nclass WorkbenchSidebar extends ReactNextElement {\n @property() accessor titleLabel: string | undefined;\n\n #getPaneSlot = (): HTMLSlotElement => {\n return this.shadowRoot?.querySelector(\"slot:not([name])\");\n };\n\n #reflowPanes = (): void => {\n const slot = this.#getPaneSlot();\n const panes = slot.assignedNodes() as WorkbenchSidebarChildElement[];\n\n for (const pane of panes) {\n if (pane.active) {\n pane.style.flex = String(pane.activeFlex ?? \"1\");\n } else {\n pane.style.flex = \"initial\";\n }\n }\n };\n\n #onPanesSlotChange = (event: Event): void => {\n const slot = event.target as HTMLSlotElement;\n const panes = slot.assignedNodes();\n for (const pane of panes) {\n pane.addEventListener(\"active.change\", this.#reflowPanes);\n }\n };\n\n refCallback = () => {\n this.#reflowPanes();\n const panesSlots = this.#getPaneSlot();\n\n panesSlots?.addEventListener(\"slotchange\", (e) => {\n this.#onPanesSlotChange(e);\n });\n };\n\n render() {\n return (\n <WorkbenchSidebarComponent\n titleLabel={this.titleLabel}\n refCallback={this.refCallback}\n />\n );\n }\n}\n\nfunction WorkbenchSidebarComponent({\n titleLabel,\n refCallback,\n}: WorkbenchSidebarProps) {\n return (\n <div className=\"sidebar\" ref={refCallback}>\n <div className=\"title-container\">\n <div className=\"title-label\">{titleLabel}</div>\n <slot name=\"titleToolbar\" />\n </div>\n <div className=\"pane-container\">\n <slot />\n </div>\n </div>\n );\n}\n\nexport { WorkbenchSidebar };\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]!./host-context.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]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport classNames from \"classnames\";\nimport \"./host-context.css\";\nimport styleText from \"./workbench-action.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrapLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport interface WorkbenchActionProps {\n icon?: GeneralIconProps;\n to?: string;\n target?: string;\n active?: boolean;\n href?: string;\n tooltip?: string;\n}\n\n/**\n * @insider\n */\nexport\n@defineElement(\"visual-builder.workbench-action\", {\n styleTexts: [styleText],\n})\nclass WorkbenchAction extends ReactNextElement {\n @property({\n attribute: false,\n })\n accessor icon: GeneralIconProps | undefined;\n\n @property() accessor to: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor active: boolean | undefined;\n\n @property() accessor href: string | undefined;\n\n @property() accessor target: string | undefined;\n\n @property() accessor tooltip: string | undefined;\n\n render(): React.ReactNode {\n return (\n <WorkbenchActionComponent\n to={this.to}\n icon={this.icon}\n active={this.active}\n href={this.href}\n target={this.target}\n tooltip={this.tooltip}\n />\n );\n }\n}\n\nfunction WorkbenchActionComponent({\n icon,\n to,\n active,\n href,\n target,\n tooltip,\n}: WorkbenchActionProps) {\n return (\n <WrappedTooltip content={tooltip} placement=\"right\">\n <WrapLink\n className={classNames(\"action\", { active })}\n url={to}\n href={href}\n target={target as LinkProps[\"target\"]}\n >\n <WrappedIcon {...icon} />\n </WrapLink>\n </WrappedTooltip>\n );\n}\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]!./host-context.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]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport {\n WorkbenchAction,\n WorkbenchActionProps,\n} from \"../workbench-action/index.js\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\nimport styleText from \"./workbench-action-list.shadow.css\";\n\nexport interface SidebarMenu {\n title?: string;\n icon?: GeneralIconProps;\n menuItems?: SidebarMenuItem[];\n}\n\nconst WrapperWorkbenchAction = wrapBrick<WorkbenchAction, WorkbenchActionProps>(\n \"visual-builder.workbench-action\"\n);\n\nconst { defineElement, property } = createDecorators();\n\ninterface WorkbenchActionListProps {\n appId?: string;\n menu: SidebarMenu;\n}\n\n/**\n * @insider\n */\n@defineElement(\"visual-builder.workbench-action-list\", {\n styleTexts: [styleText],\n})\nclass WorkbenchActionList extends ReactNextElement {\n @property() accessor appId: string | undefined;\n\n @property({\n attribute: false,\n })\n accessor menu!: SidebarMenu;\n\n render(): React.ReactNode {\n return <WorkbenchActionListComponent appId={this.appId} menu={this.menu} />;\n }\n}\n\nlet currentAppId: string;\nconst historyMap = new Map<number, string>();\n\nexport function WorkbenchActionListComponent({\n appId,\n menu,\n}: WorkbenchActionListProps) {\n const history = getHistory();\n const [activeIndex, setActiveIndex] = useState<number>();\n const [location, setLocation] = useState(history.location);\n\n useEffect(() => {\n const unlisten = history.listen((location) => {\n setLocation(location);\n });\n return unlisten;\n }, [history]);\n\n useEffect(() => {\n if (!currentAppId) currentAppId = appId;\n if (currentAppId !== appId) {\n historyMap.clear();\n currentAppId = appId;\n }\n }, [appId]);\n\n useEffect(() => {\n const { pathname, search } = location;\n\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setActiveIndex(Number(selectedKeys[0]));\n }, [menu, location]);\n\n const handleLinkClick = (item: SidebarMenuItem): void => {\n if ((item as SidebarMenuSimpleItem).href) return;\n historyMap.set(activeIndex, `${location.pathname}${location.search}`);\n };\n\n const isSimpleMenuItem = (\n item: SidebarMenuItem\n ): item is SidebarMenuSimpleItem => {\n return item.type === \"default\" || !item.type;\n };\n\n return (\n <>\n {menu?.menuItems\n ?.map((item, index) => {\n if (isSimpleMenuItem(item)) {\n let url = item.to;\n if (activeIndex !== index && historyMap.has(index)) {\n url = historyMap.get(index);\n }\n return (\n <WrapperWorkbenchAction\n key={index}\n icon={item.icon}\n to={url as string}\n href={item.href}\n target={item.target}\n tooltip={item.text}\n active={activeIndex === index}\n onClick={() => handleLinkClick(item)}\n />\n );\n }\n })\n .filter(Boolean)}\n </>\n );\n}\n\nexport { WorkbenchActionList };\n","import React from \"react\";\nimport { pick } from \"lodash\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport type {\n ActionClickDetail,\n WorkbenchNodeData,\n WorkbenchTreeAction,\n} from \"../interfaces.js\";\nimport { WorkbenchActionsContext } from \"../shared/workbench/WorkbenchActionsContext.js\";\nimport {\n WorkbenchTree,\n dropEmitProps,\n} from \"../shared/workbench/WorkbenchTree.js\";\nimport { WorkbenchTreeContext } from \"../shared/workbench/WorkbenchTreeContext.js\";\nimport { deepMatch } from \"../utils/deepMatch.js\";\nimport treeStyleText from \"./WorkbenchTree.shadow.css\";\nimport actionStyleText from \"../shared/workbench-mini-action-bar/WorkbenchMiniActionBar.shadow.css\";\nimport \"@next-core/theme\";\n\nfunction defaultGetCollapsedId(node: WorkbenchNodeData): string | number {\n return node.key;\n}\n\nconst { defineElement, property, event } = createDecorators();\n\n/**\n * @id next-builder.workbench-tree\n * @author steve\n * @history\n * 1.x.0: 新增构件 `next-builder.workbench-tree`\n * @docKind brick\n * @noInheritDoc\n * @insider\n */\n@defineElement(\"visual-builder.workbench-tree\", {\n styleTexts: [treeStyleText, actionStyleText],\n})\nclass WorkbenchTreeElement extends ReactNextElement {\n @property({ attribute: false })\n accessor nodes: WorkbenchNodeData[];\n\n @property({ attribute: false })\n accessor actions: WorkbenchTreeAction[];\n\n @property({ type: Boolean })\n accessor actionsHidden: boolean;\n\n @property()\n accessor placeholder: string;\n\n @property({ type: Boolean })\n accessor isTransformName: boolean;\n\n @property()\n accessor searchPlaceholder: string;\n\n @property({ type: Boolean })\n accessor noSearch: boolean;\n\n @property({ attribute: false })\n accessor activeKey: string | number;\n\n @property({ type: Boolean })\n accessor showMatchedNodeOnly: boolean;\n\n @property({ attribute: false })\n accessor matchNodeDataFields: string | string[];\n\n @property({ attribute: false })\n accessor fixedActionsFor: Record<string, unknown> | Record<string, unknown>[];\n\n @property({ type: Boolean })\n accessor collapsible: boolean;\n\n @property({ attribute: false })\n accessor collapsedNodes: string[];\n\n @property({ type: Boolean })\n accessor allowDrag: boolean;\n\n @property({ type: Boolean })\n accessor allowDragToRoot: boolean;\n\n @property({ type: Boolean })\n accessor allowDragToInside: boolean;\n\n @property({ type: String })\n accessor nodeKey: string;\n\n @property({ type: Boolean })\n accessor skipNotify: boolean;\n\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail): void => {\n this.#actionClickEvent.emit(detail);\n };\n\n @event({ type: \"node.click\" })\n accessor #nodeClickEvent: EventEmitter<unknown>;\n\n #nodeClickFactory = (node: WorkbenchNodeData) => () => {\n this.#nodeClickEvent.emit(node.data);\n };\n\n @event({ type: \"node.drop\" })\n accessor #nodeDropEvent: EventEmitter<any>;\n\n #handleNodeDrop = (detail: dropEmitProps): void => {\n this.#nodeDropEvent.emit(detail);\n };\n\n @event({ type: \"context.menu\" })\n accessor #nodeContextMenuEvent: EventEmitter<unknown>;\n\n #contextMenuFactory = (node: WorkbenchNodeData) => (e: React.MouseEvent) => {\n e.preventDefault();\n this.#nodeContextMenuEvent.emit({\n active: true,\n node: node?.data,\n x: e.clientX,\n y: e.clientY,\n });\n };\n\n @event({ type: \"node.toggle\" })\n accessor #nodeToggleEvent: EventEmitter<{\n nodeId: string;\n collapsed: boolean;\n }>;\n\n #handleNodeToggle = (nodeId: string, collapsed: boolean): void => {\n this.#nodeToggleEvent.emit({ nodeId, collapsed });\n };\n\n render() {\n return (\n <WorkbenchActionsContext.Provider\n value={{\n actions: this.actions,\n actionsHidden: this.actionsHidden,\n onActionClick: this.#handleActionClick,\n }}\n >\n <WorkbenchTreeContext.Provider\n value={{\n activeKey: this.activeKey,\n basePaddingLeft: 5,\n showMatchedNodeOnly: this.showMatchedNodeOnly,\n isTransformName: this.isTransformName,\n fixedActionsFor: this.fixedActionsFor,\n nodeKey: this.nodeKey,\n collapsible: this.collapsible,\n collapsedNodes: this.collapsedNodes,\n getCollapsedId: defaultGetCollapsedId,\n onNodeToggle: this.#handleNodeToggle,\n skipNotify: this.skipNotify,\n clickFactory: this.#nodeClickFactory,\n contextMenuFactory: this.#contextMenuFactory,\n matchNode: (node, lowerTrimmedQuery) =>\n deepMatch(node.name, lowerTrimmedQuery) ||\n (!!this.matchNodeDataFields?.length &&\n deepMatch(\n this.matchNodeDataFields === \"*\"\n ? node.data\n : pick(node.data, this.matchNodeDataFields),\n lowerTrimmedQuery\n )),\n }}\n >\n <WorkbenchTree\n nodes={this.nodes}\n placeholder={this.placeholder}\n searchPlaceholder={this.searchPlaceholder}\n noSearch={this.noSearch}\n dropEmit={this.#handleNodeDrop}\n allowDrag={this.allowDrag}\n allowDragToInside={this.allowDragToInside}\n allowDragToRoot={this.allowDragToRoot}\n />\n </WorkbenchTreeContext.Provider>\n </WorkbenchActionsContext.Provider>\n );\n }\n}\n\nexport { WorkbenchTreeElement };\n","export enum K {\n LOAD_MORE = \"LOAD_MORE\",\n LOADING = \"LOADING\",\n NO_DATA = \"NO_DATA\",\n NODE = \"NODE\",\n // action\n ADD = \"ADD\",\n EDIT = \"EDIT\",\n DELETE = \"DELETE\",\n IMPORT = \"IMPORT\",\n CLONE = \"CLONE\",\n APPEND_RELATION = \"APPEND_RELATION\",\n UPDATE_RELATION = \"UPDATE_RELATION\",\n REMOVE_RELATION = \"REMOVE_RELATION\",\n ROLLBACK = \"ROLLBACK\",\n ROLLBACK_ALL = \"ROLLBACK_ALL\",\n ADD_FULL = \"ADD_FULL\",\n EDIT_FULL = \"EDIT_FULL\",\n DELETE_FULL = \"DELETE_FULL\",\n IMPORT_FULL = \"IMPORT_FULL\",\n CLONE_FULL = \"CLONE_FULL\",\n APPEND_RELATION_FULL = \"APPEND_RELATION_FULL\",\n UPDATE_RELATION_FULL = \"UPDATE_RELATION_FULL\",\n REMOVE_RELATION_FULL = \"REMOVE_RELATION_FULL\",\n ROLLBACK_FULL = \"ROLLBACK_FULL\",\n ROLLBACK_ALL_FULL = \"ROLLBACK_ALL_FULL\",\n // category\n PROJECT = \"PROJECT\",\n USER = \"USER\",\n PERMISSION = \"PERMISSION\",\n BRICK = \"BRICK\",\n ROUTE = \"ROUTE\",\n TEMPLATE = \"TEMPLATE\",\n SNIPPET = \"SNIPPET\",\n I18N = \"I18N\",\n IMAGE = \"IMAGE\",\n FUNCTION = \"FUNCTION\",\n MENU = \"MENU\",\n MENU_ITEM = \"MENU_ITEM\",\n WORKFLOW = \"WORKFLOW\",\n}\n\nconst en: Locale = {\n LOAD_MORE: \"Load more\",\n LOADING: \"Loading\",\n NO_DATA: \"No data\",\n NODE: \"{{ nodes }}\",\n NODE_ellipsis: \"{{ nodes }} etc., a total of {{ count }} items\",\n // action\n ADD: \"Add node\",\n EDIT: \"Edit node\",\n DELETE: \"Delete node\",\n IMPORT: \"Batch import node\",\n CLONE: \"Clone node\",\n APPEND_RELATION: \"Append Relation\",\n UPDATE_RELATION: \"Update Relation\",\n REMOVE_RELATION: \"Remove Relation\",\n ROLLBACK: \"Rollback\",\n ROLLBACK_ALL: \"Rollback all operations\",\n ADD_FULL: \"Add {{ category }} ({{ nodes }})\",\n EDIT_FULL: \"Edit {{ nodeChanges }} of {{ category }} ({{ nodes }})\",\n DELETE_FULL: \"Delete {{ category }} ({{ nodes }})\",\n IMPORT_FULL: \"Batch Import {{ category }} ({{ nodes }})\",\n CLONE_FULL: \"Clone {{ category }} ({{ nodes }})\",\n APPEND_RELATION_FULL:\n \"Append the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n UPDATE_RELATION_FULL:\n \"Update the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n REMOVE_RELATION_FULL:\n \"Remove the relation between {{ leftObjectId }} ({{ leftNodes }}) and {{ rightObjectId }} ({{ rightNodes }})\",\n ROLLBACK_FULL: \"Rollback to [{{ rollbackAbstract }}]\",\n ROLLBACK_ALL_FULL: \"Rollback all operations\",\n // category\n PROJECT: \"Project\",\n USER: \"User Group\",\n PERMISSION: \"Permission\",\n BRICK: \"Brick\",\n ROUTE: \"Route\",\n TEMPLATE: \"Template\",\n SNIPPET: \"Snippet\",\n I18N: \"I18N\",\n IMAGE: \"Image\",\n FUNCTION: \"Function\",\n MENU: \"Menu\",\n MENU_ITEM: \"Menu item\",\n WORKFLOW: \"Workflow\",\n};\n\nconst zh: Locale = {\n LOAD_MORE: \"加载更多\",\n LOADING: \"加载中\",\n NO_DATA: \"没有数据\",\n NODE: \"{{ nodes }}\",\n NODE_ellipsis: \"{{ nodes }}等共{{ count }}项\",\n // action\n ADD: \"新增节点\",\n EDIT: \"编辑节点\",\n DELETE: \"删除节点\",\n IMPORT: \"批量导入节点\",\n CLONE: \"克隆节点\",\n APPEND_RELATION: \"添加关系\",\n UPDATE_RELATION: \"更新关系\",\n REMOVE_RELATION: \"移除关系\",\n ROLLBACK: \"回滚\",\n ROLLBACK_ALL: \"回滚全部操作\",\n ADD_FULL: \"新增{{ category }}({{ nodes }})\",\n EDIT_FULL: \"编辑{{ category }}({{ nodes }})的 {{ nodeChanges }}\",\n DELETE_FULL: \"删除{{ category }}({{ nodes }})\",\n IMPORT_FULL: \"批量导入{{ category }}({{ nodes }})\",\n CLONE_FULL: \"克隆{{ category }}({{ nodes }})\",\n APPEND_RELATION_FULL:\n \"添加{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n UPDATE_RELATION_FULL:\n \"更新{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n REMOVE_RELATION_FULL:\n \"移除{{ leftObjectId }}({{ leftNodes }})和{{ rightObjectId }}({{ rightNodes }})的关系\",\n ROLLBACK_FULL: \"回滚到【{{ rollbackAbstract }}】\",\n ROLLBACK_ALL_FULL: \"回滚全部操作\",\n // category\n PROJECT: \"项目\",\n USER: \"用户组\",\n PERMISSION: \"权限点\",\n BRICK: \"构件\",\n ROUTE: \"路由\",\n TEMPLATE: \"模版\",\n SNIPPET: \"片段\",\n I18N: \"国际化\",\n IMAGE: \"图片\",\n FUNCTION: \"函数\",\n MENU: \"菜单\",\n MENU_ITEM: \"菜单项\",\n WORKFLOW: \"工作流\",\n};\n\nexport const NS = \"bricks/visual-builder/workbench-history-action\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n} & { NODE_ellipsis: string };\n","import { NS, K } from \"./i18n.js\";\nimport { i18n } from \"@next-core/i18n\";\nimport { NextBuilderModels } from \"@next-api-sdk/next-builder-sdk\";\n\nconst actionI18nKeyMap: Record<string, string> = {\n add: `${NS}:${K.ADD}`,\n edit: `${NS}:${K.EDIT}`,\n delete: `${NS}:${K.DELETE}`,\n batch_delete: `${NS}:${K.DELETE}`,\n import: `${NS}:${K.IMPORT}`,\n clone: `${NS}:${K.CLONE}`,\n append_relation: `${NS}:${K.APPEND_RELATION}`,\n update_relation: `${NS}:${K.UPDATE_RELATION}`,\n remove_relation: `${NS}:${K.REMOVE_RELATION}`,\n rollback: `${NS}:${K.ROLLBACK}`,\n rollback_all: `${NS}:${K.ROLLBACK_ALL}`,\n};\n\nconst fullActionI18nKeyMap: Record<string, string> = {\n add: `${NS}:${K.ADD_FULL}`,\n edit: `${NS}:${K.EDIT_FULL}`,\n delete: `${NS}:${K.DELETE_FULL}`,\n batch_delete: `${NS}:${K.DELETE_FULL}`,\n import: `${NS}:${K.IMPORT_FULL}`,\n clone: `${NS}:${K.CLONE_FULL}`,\n append_relation: `${NS}:${K.APPEND_RELATION_FULL}`,\n update_relation: `${NS}:${K.UPDATE_RELATION_FULL}`,\n remove_relation: `${NS}:${K.REMOVE_RELATION_FULL}`,\n rollback: `${NS}:${K.ROLLBACK_FULL}`,\n rollback_all: `${NS}:${K.ROLLBACK_ALL_FULL}`,\n};\n\nconst categoryI18nKeyMap: Record<string, string> = {\n project: `${NS}:${K.PROJECT}`,\n userGroup: `${NS}:${K.USER}`,\n permission: `${NS}:${K.PERMISSION}`,\n brick: `${NS}:${K.BRICK}`,\n route: `${NS}:${K.ROUTE}`,\n template: `${NS}:${K.TEMPLATE}`,\n snippet: `${NS}:${K.SNIPPET}`,\n i18n: `${NS}:${K.I18N}`,\n image: `${NS}:${K.IMAGE}`,\n function: `${NS}:${K.FUNCTION}`,\n menu: `${NS}:${K.MENU}`,\n menuItem: `${NS}:${K.MENU_ITEM}`,\n workflow: `${NS}:${K.WORKFLOW}`,\n};\n\nconst modelI18nKeyMap: Record<string, string> = {\n PROJECT_MICRO_APP: `${NS}:${K.PROJECT}`,\n \"MICRO_APP_USER_GROUP@EASYOPS\": `${NS}:${K.USER}`,\n MICRO_APP_RESOURCE_PERMISSION: `${NS}:${K.PERMISSION}`,\n STORYBOARD_BRICK: `${NS}:${K.BRICK}`,\n STORYBOARD_ROUTE: `${NS}:${K.ROUTE}`,\n STORYBOARD_TEMPLATE: `${NS}:${K.TEMPLATE}`,\n STORYBOARD_SNIPPET: `${NS}:${K.SNIPPET}`,\n STORYBOARD_I18N: `${NS}:${K.I18N}`,\n MICRO_APP_RESOURCE_IMAGE: `${NS}:${K.IMAGE}`,\n STORYBOARD_FUNCTION: `${NS}:${K.FUNCTION}`,\n MICRO_APP_RESOURCE_MENU: `${NS}:${K.MENU}`,\n MICRO_APP_RESOURCE_MENU_ITEM: `${NS}:${K.MENU_ITEM}`,\n \"WORKFLOW_DEF@EASYOPS\": `${NS}:${K.WORKFLOW}`,\n};\n\nexport function translateHistory(\n history: Partial<NextBuilderModels.ModelWorkspaceChangeHistory>\n): Record<string, string> {\n const historyAction =\n history.action === \"rollback\" && !history.rollBackIdInfo\n ? \"rollback_all\"\n : history.action;\n\n const category = i18n.t(\n categoryI18nKeyMap[history.category] ?? history.category\n );\n const action = i18n.t(actionI18nKeyMap[historyAction] ?? historyAction);\n const leftObjectId = i18n.t(\n modelI18nKeyMap[history.abstract?.leftObjectId] ??\n history.abstract?.leftObjectId\n );\n const rightObjectId = i18n.t(\n modelI18nKeyMap[history.abstract?.rightObjectId] ??\n history.abstract?.rightObjectId\n );\n const nodes = translateNodes(\n history.abstract?.nodes,\n history.abstract?.nodesCount\n );\n const leftNodes = translateNodes(\n history.abstract?.leftNodes,\n history.abstract?.leftNodesCount\n );\n const rightNodes = translateNodes(\n history.abstract?.rightNodes,\n history.abstract?.rightNodesCount\n );\n const rollbackAbstract =\n historyAction === \"rollback\"\n ? translateHistory(history.rollBackIdInfo).abstract\n : null;\n\n const abstract = i18n.t(\n fullActionI18nKeyMap[historyAction] ?? historyAction,\n {\n category,\n nodes,\n leftNodes,\n rightNodes,\n nodeChanges: history.abstract?.nodeChanges?.join(\", \"),\n relationChanges: history.abstract?.relationChanges?.join(\", \"),\n leftObjectId,\n rightObjectId,\n rollbackAbstract,\n }\n );\n\n return {\n category,\n action,\n leftObjectId,\n rightObjectId,\n nodes,\n leftNodes,\n rightNodes,\n abstract,\n rollbackAbstract,\n };\n}\n\nfunction translateNodes(nodes: string[] = [], total: number, separator = \", \") {\n return i18n.t(`${NS}:${K.NODE}`, {\n nodes: nodes.join(separator),\n context: total > nodes.length ? \"ellipsis\" : undefined,\n count: total,\n });\n}\n","import React, { useRef, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n} from \"@next-bricks/basic/popover\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport moment from \"moment\";\nimport styleText from \"./styles.shadow.css\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport {\n WorkspaceApi_getChangeHistory,\n NextBuilderModels,\n} from \"@next-api-sdk/next-builder-sdk\";\nimport { translateHistory } from \"./utils.js\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedEasyopsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\ninterface HistoryData\n extends Partial<NextBuilderModels.ModelWorkspaceChangeHistory> {\n translation: Record<string, string>;\n}\n\nexport interface WorkbenchHistoryActionProps {\n appId: string;\n projectId: string;\n}\n\n/**\n * 项目变更历史\n * @insider\n */\nexport\n@defineElement(\"visual-builder.workbench-history-action\", {\n styleTexts: [styleText],\n})\nclass WorkbenchHistoryAction\n extends ReactNextElement\n implements WorkbenchHistoryActionProps\n{\n @property()\n accessor appId: string;\n\n @property()\n accessor projectId: string;\n\n /**\n * 点击历史项标题触发\n */\n @event({ type: \"history.item.click\" })\n accessor #historyItemClickEvent!: EventEmitter<\n HistoryData & { enableRollback: boolean }\n >;\n #handleHistoryItemClick = (\n data: HistoryData & { enableRollback: boolean }\n ): void => {\n this.#historyItemClickEvent.emit(data);\n };\n\n /**\n * 点击回滚触发\n */\n @event({ type: \"rollback\" })\n accessor #rollbackEvent!: EventEmitter<HistoryData>;\n #handleRollback = (data: HistoryData): void => {\n this.#rollbackEvent.emit(data);\n };\n\n /**\n * 回滚全部\n */\n @event({ type: \"rollback.all\" })\n accessor #rollbackAllEvent!: EventEmitter<void>;\n #handleRollbackAll = (): void => {\n this.#rollbackAllEvent.emit();\n };\n\n render() {\n return (\n <WorkbenchHistoryActionComponent\n appId={this.appId}\n projectId={this.projectId}\n onHistoryItemClick={this.#handleHistoryItemClick}\n onRollback={this.#handleRollback}\n onRollbackAll={this.#handleRollbackAll}\n />\n );\n }\n}\n\ninterface WorkbenchHistoryActionComponentProps\n extends WorkbenchHistoryActionProps {\n onHistoryItemClick?: (\n data: HistoryData & { enableRollback: boolean }\n ) => void;\n onRollback?: (data: HistoryData) => void;\n onRollbackAll?: () => void;\n}\n\nexport function WorkbenchHistoryActionComponent(\n props: WorkbenchHistoryActionComponentProps\n) {\n const { appId, onHistoryItemClick, onRollback, onRollbackAll } = props;\n const { t } = useTranslation(NS);\n\n const [loading, setLoading] = useState(false);\n const [hideLoadMore, setHideLoadMore] = useState(true);\n const [allLoaded, setAllLoaded] = useState(false);\n const [historyList, setHistoryList] = useState<HistoryData[]>([]);\n const lastTs = useRef<string>(\"\");\n\n const handleLoadList = (isFirst?: boolean) => {\n setLoading(true);\n WorkspaceApi_getChangeHistory(appId, { ts: lastTs.current, limit: 20 })\n .then((result) => {\n setHistoryList((pre) => {\n const list = result.list.map((v) => ({\n ...v,\n translation: translateHistory(v),\n }));\n return isFirst ? list : pre.concat(list);\n });\n lastTs.current = result.ts;\n setAllLoaded(result.list.length < 20);\n setHideLoadMore(result.list.length < 20);\n })\n .catch((error) => {\n handleHttpError(error);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const handleBeforeVisibleChange = (e: CustomEvent<boolean>) => {\n if (e.detail) {\n setHideLoadMore(true);\n setAllLoaded(false);\n setHistoryList([]);\n lastTs.current = \"\";\n handleLoadList(true);\n }\n };\n\n return (\n <WrappedPopover\n placement=\"bottom\"\n trigger=\"click\"\n arrow={true}\n arrowColor=\"var(--color-fill-bg-container-4)\"\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <WrappedButton\n slot=\"anchor\"\n shape=\"circle\"\n className=\"history-action\"\n icon={{\n lib: \"antd\",\n icon: \"history\",\n theme: \"outlined\",\n }}\n />\n <div>\n <div className=\"history-title\">History</div>\n <div className=\"history-list\">\n {historyList.length ? (\n <>\n {historyList.map((v, i) => {\n return (\n <HistoryItem\n key={`${v.uniqueKey}-${v.ts}`}\n data={v}\n enableRollback={i !== 0 && v.action !== \"rollback\"}\n current={i === 0}\n onHistoryItemClick={onHistoryItemClick}\n onRollback={onRollback}\n />\n );\n })}\n {!hideLoadMore && (\n <span className=\"load-more-container\">\n <WrappedLink\n className=\"load-more\"\n disabled={loading}\n onClick={() => handleLoadList()}\n >\n {t(K.LOAD_MORE)}\n </WrappedLink>\n </span>\n )}\n {allLoaded && (\n <span className=\"end-container\">\n The End\n <WrappedIcon\n className=\"rollback-all\"\n lib=\"antd\"\n icon=\"rollback\"\n theme=\"outlined\"\n onClick={() => onRollbackAll()}\n />\n </span>\n )}\n </>\n ) : (\n <div className=\"empty\">{loading ? t(K.LOADING) : t(K.NO_DATA)}</div>\n )}\n </div>\n {/* 点击历史详情会打开 modal 来展示,这里提供一个 slot,编排将 modal 放置在这里,使其成为 popover 的 children,才能防止用户在操作 modal 过程中意外关闭 popover */}\n <slot />\n </div>\n </WrappedPopover>\n );\n}\n\ninterface HistoryItemProps {\n data: HistoryData;\n enableRollback?: boolean;\n current?: boolean;\n onHistoryItemClick?: (\n data: HistoryData & { enableRollback: boolean }\n ) => void;\n onRollback?: (data: HistoryData) => void;\n}\n\nfunction HistoryItem(props: HistoryItemProps) {\n const { data, enableRollback, current, onHistoryItemClick, onRollback } =\n props;\n\n const ts = moment(Number(data.ts) / 1000000);\n const duration = moment.duration(ts.diff(moment()));\n const humanizedTime =\n duration.days() <= -1\n ? ts.format(\"YYYY-MM-DD HH:mm:ss\")\n : duration.humanize(true, { ss: 0, s: 60, m: 60, h: 24 });\n\n return (\n <div className=\"item-container\">\n <div className=\"item-title\">\n <div\n className=\"title-left\"\n onClick={() => onHistoryItemClick({ ...data, enableRollback })}\n >\n <div className=\"topic\" title={data.translation.abstract}>\n {data.translation.abstract}\n </div>\n {current && <div className=\"branch\">(current)</div>}\n </div>\n <div className=\"title-right\">\n {enableRollback && (\n <WrappedIcon\n className=\"rollback\"\n lib=\"antd\"\n icon=\"rollback\"\n theme=\"outlined\"\n onClick={() => onRollback(data)}\n />\n )}\n </div>\n </div>\n <div className=\"item-info\">\n <WrappedEasyopsAvatar\n className=\"avatar\"\n nameOrInstanceId={data.user}\n size=\"xs\"\n />\n <div className=\"time\">{humanizedTime}</div>\n <div className=\"operator\">{data.user}</div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nconst autoFocusedSets = new Set<string>();\n\nexport interface PageArchNodeProps {\n label?: string;\n type?: PageArchNodeType;\n active?: boolean;\n external?: ExtraNodeData;\n subNodes?: ExtraNodeData[];\n autoFocusOnce?: string;\n notSynced?: boolean;\n disableChildAppend?: boolean;\n}\n\nexport interface ExtraNodeData {\n label: string;\n id: string;\n}\n\nexport interface SubNodeContextMenuData extends ContextMenuDetail {\n node: ExtraNodeData;\n}\n\nexport interface ContextMenuDetail {\n clientX: number;\n clientY: number;\n}\n\nexport type PageArchNodeType = \"page\" | \"board\";\n\n/**\n * 构件 `visual-builder.page-arch-node`\n */\nexport\n@defineElement(\"visual-builder.page-arch-node\", {\n styleTexts: [styleText],\n})\nclass PageArchNode extends ReactNextElement implements PageArchNodeProps {\n @property()\n accessor label: string | undefined;\n\n @property()\n accessor type: PageArchNodeType | undefined;\n\n @property({ attribute: false })\n accessor external: ExtraNodeData | undefined;\n\n @property({ attribute: false })\n accessor subNodes: ExtraNodeData[] | undefined;\n\n // @property()\n // accessor thumbnail: string | undefined;\n\n @property({ type: Boolean, render: false })\n accessor active: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor notSynced: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor disableChildAppend: boolean | undefined;\n\n @property()\n accessor autoFocusOnce: string | undefined;\n\n @event({ type: \"label.editing.change\" })\n accessor #labelEditingChange: EventEmitter<boolean>;\n\n #handleLabelEditingChange = (value: boolean) => {\n this.#labelEditingChange.emit(value);\n };\n\n @event({ type: \"label.change\" })\n accessor #labelChange: EventEmitter<string>;\n\n #handleLabelChange = (value: string) => {\n this.#labelChange.emit(value);\n };\n\n @event({ type: \"node.click\" })\n accessor #nodeClick: EventEmitter<void>;\n\n #handleNodeClick = () => {\n this.#nodeClick.emit();\n };\n\n @event({ type: \"node.dblclick\" })\n accessor #nodeDoubleClick: EventEmitter<void>;\n\n #handleNodeDoubleClick = () => {\n this.#nodeDoubleClick.emit();\n };\n\n @event({ type: \"node.contextmenu\" })\n accessor #nodeContextMenu: EventEmitter<ContextMenuDetail>;\n\n #handleNodeContextMenu = (data: ContextMenuDetail) => {\n this.#nodeContextMenu.emit(data);\n };\n\n @event({ type: \"child.append\" })\n accessor #childAppend: EventEmitter<void>;\n\n #handleChildAppend = () => {\n this.#childAppend.emit();\n };\n\n @event({ type: \"external.click\" })\n accessor #externalClick: EventEmitter<ExtraNodeData>;\n\n #handleExternalClick = (data: ExtraNodeData) => {\n this.#externalClick.emit(data);\n };\n\n @event({ type: \"subNode.dblclick\" })\n accessor #subNodeDoubleClick: EventEmitter<ExtraNodeData>;\n\n #handleSubNodeDoubleClick = (data: ExtraNodeData) => {\n this.#subNodeDoubleClick.emit(data);\n };\n\n @event({ type: \"subNode.contextmenu\" })\n accessor #subNodeContextMenu: EventEmitter<SubNodeContextMenuData>;\n\n #handleSubNodeContextMenu = (data: SubNodeContextMenuData) => {\n this.#subNodeContextMenu.emit(data);\n };\n\n render() {\n return (\n <PageArchNodeComponent\n label={this.label}\n type={this.type}\n external={this.external}\n subNodes={this.subNodes}\n autoFocusOnce={this.autoFocusOnce}\n onLabelEditingChange={this.#handleLabelEditingChange}\n onLabelChange={this.#handleLabelChange}\n onNodeClick={this.#handleNodeClick}\n onNodeDoubleClick={this.#handleNodeDoubleClick}\n onNodeContextMenu={this.#handleNodeContextMenu}\n onChildAppend={this.#handleChildAppend}\n onExternalClick={this.#handleExternalClick}\n onSubNodeDoubleClick={this.#handleSubNodeDoubleClick}\n onSubNodeContextMenu={this.#handleSubNodeContextMenu}\n />\n );\n }\n}\n\nexport interface PageArchNodeComponentProps extends PageArchNodeProps {\n onLabelEditingChange?(value: boolean): void;\n onLabelChange?(value: string): void;\n onNodeClick?(): void;\n onNodeDoubleClick?(): void;\n onNodeContextMenu?(data: ContextMenuDetail): void;\n onChildAppend?(): void;\n onExternalClick?(data: ExtraNodeData): void;\n onSubNodeDoubleClick?(data: ExtraNodeData): void;\n onSubNodeContextMenu?(data: SubNodeContextMenuData): void;\n}\n\nexport function PageArchNodeComponent({\n label,\n type: _type,\n external,\n subNodes,\n autoFocusOnce,\n onLabelEditingChange,\n onLabelChange,\n onNodeClick,\n onNodeDoubleClick,\n onNodeContextMenu,\n onChildAppend,\n onExternalClick,\n onSubNodeDoubleClick,\n onSubNodeContextMenu,\n}: PageArchNodeComponentProps) {\n const type = _type === \"board\" ? \"board\" : \"page\";\n const [currentLabel, setCurrentLabel] = useState(label);\n const [editingLabel, setEditingLabel] = useState(false);\n const editingLabelInitialized = useRef(false);\n const [shouldEmitLabelChange, setShouldEmitLabelChange] = useState(false);\n const labelInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setCurrentLabel(label);\n }, [label]);\n\n const handleEditLabel = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setEditingLabel(true);\n }, []);\n\n useEffect(() => {\n if (autoFocusOnce && !autoFocusedSets.has(autoFocusOnce)) {\n autoFocusedSets.add(autoFocusOnce);\n setTimeout(() => {\n setEditingLabel(true);\n }, 1);\n }\n }, [autoFocusOnce]);\n\n useEffect(() => {\n if (editingLabel) {\n // Prevent scroll when focusing.\n // Otherwise the diagram svg may be clipped in Chrome.\n labelInputRef.current?.focus({ preventScroll: true });\n labelInputRef.current?.select();\n }\n }, [editingLabel]);\n\n useEffect(() => {\n if (editingLabelInitialized.current) {\n onLabelEditingChange?.(editingLabel);\n } else {\n editingLabelInitialized.current = true;\n }\n }, [editingLabel, onLabelEditingChange]);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentLabel(event.target.value);\n },\n []\n );\n\n const handleInputKeydown = useCallback((event: React.KeyboardEvent) => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Enter\" || key === 13) {\n labelInputRef.current?.blur();\n }\n }, []);\n\n const handleInputBlur = useCallback(() => {\n setEditingLabel(false);\n setShouldEmitLabelChange(true);\n }, []);\n\n useEffect(() => {\n if (shouldEmitLabelChange) {\n onLabelChange?.(currentLabel);\n setShouldEmitLabelChange(false);\n }\n }, [currentLabel, onLabelChange, shouldEmitLabelChange]);\n\n const handleChildAppend = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onChildAppend?.();\n },\n [onChildAppend]\n );\n\n const handleExternalClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onExternalClick?.(external);\n },\n [external, onExternalClick]\n );\n\n const stopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n // 32 + 8\n const extraHeight = Math.max(0, Math.floor((subNodes?.length ?? 0) - 3)) * 38;\n\n return (\n <>\n <div\n className={classNames(\"node\", type, { \"editing-label\": editingLabel })}\n style={{ height: type === \"board\" ? 70 : 130 + extraHeight }}\n onClick={onNodeClick}\n onDoubleClick={onNodeDoubleClick}\n onContextMenu={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onNodeContextMenu?.({\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }}\n >\n <input\n className=\"label-input\"\n value={currentLabel}\n ref={labelInputRef}\n onChange={handleInputChange}\n onKeyDown={handleInputKeydown}\n onBlur={handleInputBlur}\n onDoubleClick={stopPropagation}\n onContextMenu={stopPropagation}\n onMouseDown={stopPropagation}\n />\n <div\n className=\"label\"\n onDoubleClick={handleEditLabel}\n onMouseDown={stopPropagation}\n >\n {currentLabel}\n </div>\n {type === \"board\" ? (\n <div className=\"icon-container\">\n <WrappedIcon lib=\"antd\" icon=\"unordered-list\" />\n </div>\n ) : (\n <div\n className=\"thumbnail-container\"\n style={{\n height: 98 + extraHeight,\n }}\n >\n <div className=\"thumbnail-placeholder\">\n <WrappedIcon lib=\"antd\" icon=\"ellipsis\" />\n </div>\n {external && (\n <div\n className=\"external\"\n onClick={handleExternalClick}\n onDoubleClick={stopPropagation}\n onMouseDown={stopPropagation}\n >\n <WrappedIcon lib=\"antd\" icon=\"desktop\" />\n <span className=\"external-label\">{external.label}</span>\n </div>\n )}\n {subNodes?.length ? (\n <div className=\"sub-nodes\">\n {subNodes.map((subNode) => (\n <SubNode\n key={subNode.id}\n subNode={subNode}\n onSubNodeDoubleClick={onSubNodeDoubleClick}\n onSubNodeContextMenu={onSubNodeContextMenu}\n />\n ))}\n </div>\n ) : null}\n </div>\n )}\n </div>\n <div\n className=\"add-button\"\n role=\"button\"\n onClick={handleChildAppend}\n onMouseDown={stopPropagation}\n >\n <WrappedIcon lib=\"fa\" icon=\"plus\" />\n </div>\n </>\n );\n}\n\nexport interface SubNodeProps {\n subNode: ExtraNodeData;\n onSubNodeDoubleClick?(data: ExtraNodeData): void;\n onSubNodeContextMenu?(data: SubNodeContextMenuData): void;\n}\n\nfunction SubNode({\n subNode,\n onSubNodeDoubleClick,\n onSubNodeContextMenu,\n}: SubNodeProps) {\n return (\n <WrappedTooltip key={subNode.id} content={subNode.label}>\n <div\n className=\"sub-node\"\n onDoubleClick={(e) => {\n e.stopPropagation();\n onSubNodeDoubleClick?.(subNode);\n }}\n onContextMenu={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onSubNodeContextMenu?.({\n node: subNode,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }}\n >\n <div className=\"sub-node-skeleton-title\"></div>\n <div className=\"sub-node-skeleton-content\"></div>\n <div className=\"sub-node-skeleton-button\"></div>\n </div>\n </WrappedTooltip>\n );\n}\n","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 enum K {\n CONTRACT_OPTIONS_TIPS_PREFIX = \"CONTRACT_OPTIONS_TIPS_PREFIX\",\n CONTRACT_OPTIONS_TIPS_SUFFIX = \"CONTRACT_OPTIONS_TIPS_SUFFIX\",\n CONTRACT_VALIDATE_MESSAGE = \"CONTRACT_VALIDATE_MESSAGE\",\n}\n\nconst en: Locale = {\n CONTRACT_OPTIONS_TIPS_PREFIX: \"Only the first\",\n CONTRACT_OPTIONS_TIPS_SUFFIX:\n \"items are displayed, please search for more results\",\n CONTRACT_VALIDATE_MESSAGE: \"Please fill in the correct contract name \",\n};\n\nconst zh: Locale = {\n CONTRACT_OPTIONS_TIPS_PREFIX: \"仅展示前\",\n CONTRACT_OPTIONS_TIPS_SUFFIX: \"项,更多结果请搜索\",\n CONTRACT_VALIDATE_MESSAGE: \"请填写正确的契约名称\",\n};\n\nexport const NS = \"bricks/visual-builder/contract-select\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState } from \"react\";\nimport { K, NS, locales } from \"../i18n.js\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport {\n Input,\n InputEvents,\n InputEventsMap,\n InputProps,\n} from \"@next-bricks/form/input\";\n\ninitializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onChange: \"change\",\n }\n);\n\nexport interface MoreOptionProps {\n slot?: string;\n itemsCount?: number;\n onBlur?(itemsCount: number): void;\n}\n\nexport function MoreOption(props: MoreOptionProps): React.ReactElement {\n const { itemsCount = 20, onBlur } = props;\n const [count, setCount] = useState(itemsCount);\n const { t } = useTranslation(NS);\n const [edit, setEdit] = useState(false);\n\n const handleChange = (e: CustomEvent<string>): void => {\n setCount(Number(e.detail));\n };\n\n const handleClick = (): void => {\n setEdit(true);\n };\n\n const handleBlur = (): void => {\n setEdit(false);\n onBlur?.(count);\n };\n\n return (\n <div className=\"options-tips\" slot={props.slot}>\n {t(K.CONTRACT_OPTIONS_TIPS_PREFIX)}{\" \"}\n {edit ? (\n <WrappedInput\n autoFocus={true}\n inputStyle={{ width: 65 }}\n value={String(count)}\n onBlur={handleBlur}\n onChange={handleChange as any}\n />\n ) : (\n <span>\n {count} <WrappedIcon icon=\"edit\" lib=\"antd\" onClick={handleClick} />\n </span>\n )}{\" \"}\n {t(K.CONTRACT_OPTIONS_TIPS_SUFFIX)}\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n AutoComplete,\n AutoCompleteProps,\n AutoCompleteEvents,\n AutoCompleteEventsMap,\n} from \"@next-bricks/form/auto-complete\";\nimport { debounce, isNil } from \"lodash\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport { useContractList } from \"./useContractList.js\";\nimport { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport { i18n } from \"@next-core/i18n\";\nimport { MoreOption } from \"./more-option/MoreOption\";\nimport { UseSingleBrickConf } from \"@next-core/types\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nconst WrappedAutoComplete = wrapBrick<\n AutoComplete,\n AutoCompleteProps,\n AutoCompleteEvents,\n AutoCompleteEventsMap\n>(\"eo-auto-complete\", {\n onChange: \"change\",\n});\n\n/**\n * 契约选择构件\n */\nexport\n@defineElement(\"visual-builder.contract-select\", {\n styleTexts: [styleText],\n})\nclass EoContractSelect extends FormItemElementBase {\n @property()\n accessor name: string | undefined;\n\n @property({\n type: Boolean,\n })\n accessor required: boolean | undefined;\n\n @property()\n accessor label: string | undefined;\n\n @property({\n attribute: false,\n })\n accessor value: any | undefined;\n\n @property({\n attribute: false,\n })\n accessor suffix:\n | { useBrick: UseSingleBrickConf | UseSingleBrickConf[] }\n | undefined;\n\n @event({ type: \"change\" })\n accessor #changeEvent: EventEmitter<string>;\n\n handleChange = (v: string) => {\n this.#changeEvent.emit(v);\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 labelBrick={this.labelBrick}\n helpBrick={this.helpBrick}\n notRender={this.notRender}\n trigger=\"handleChange\"\n validator={checkContractRule}\n >\n <EoContractSelectComponent\n value={this.value}\n suffix={this.suffix}\n validateState={this.validateState}\n onChange={this.handleChange}\n />\n </WrappedFormItem>\n );\n }\n}\n\nexport interface EoContractSelectProps {\n value?: string;\n validateState?: string;\n placeholder?: string;\n inputStyle?: React.CSSProperties;\n suffix?: { useBrick: UseSingleBrickConf | UseSingleBrickConf[] };\n onChange?(value: string): void;\n}\n\ninterface ProcessedContractField {\n name: string;\n version: string;\n}\n\nfunction splitContract(value: string): ProcessedContractField {\n if (typeof value !== \"string\")\n return {\n name: \"\",\n version: \"\",\n };\n const [name, version] = value.split(\":\");\n return {\n name,\n version,\n };\n}\n\nfunction isContractApi(name: string): boolean {\n return /.*@.*:\\d+\\.\\d+\\.\\d+/.test(name);\n}\n\nexport function checkContractRule(value: any): string {\n if (!isNil(value) && !isContractApi(value)) {\n return i18n.t(`${NS}:${K.CONTRACT_VALIDATE_MESSAGE}`);\n }\n return \"\";\n}\n\nexport function EoContractSelectComponent({\n value,\n inputStyle,\n validateState,\n suffix,\n onChange,\n}: EoContractSelectProps) {\n const [q, setQ] = useState<string>();\n const [pageSize, setPageSize] = useState(20);\n const contractList = useContractList({ q, pageSize });\n const [mixedValue, setMixedValue] = useState(splitContract(value));\n const [versionOptions, setVersionOptions] = useState([]);\n\n useEffect(() => {\n setMixedValue(splitContract(value));\n }, [value]);\n\n const handlerSearch = useMemo(\n () =>\n debounce((value) => {\n setQ(value);\n }, 200),\n []\n );\n\n const handlerNameChange = (event: CustomEvent<string>): void => {\n const name = event.detail;\n // 直接 copy 契约全名\n if (isContractApi(name)) {\n setMixedValue(splitContract(name));\n onChange?.(name);\n } else {\n const versionList = contractList.find(\n (item) => item.fullContractName === name\n )?.version;\n\n const autofillVersion = versionList?.[0] ?? \"\";\n setVersionOptions(versionList);\n setMixedValue({\n name,\n version: autofillVersion,\n });\n onChange?.(`${name}:${autofillVersion}`);\n }\n handlerSearch(name);\n };\n\n const handleVersionChange = (event: CustomEvent<string>): void => {\n const version = event.detail;\n setMixedValue({\n name: mixedValue.name,\n version,\n });\n\n onChange?.(`${mixedValue.name}:${version}`);\n };\n\n return (\n <div className=\"contract-wrapper\">\n <WrappedAutoComplete\n className=\"contract-selector\"\n options={contractList?.map((item) => ({\n value: item.fullContractName,\n label: item.fullContractName,\n }))}\n value={mixedValue.name}\n inputStyle={inputStyle}\n validateState={validateState}\n onChange={handlerNameChange as any}\n >\n <MoreOption\n onBlur={(pageSize) => setPageSize(pageSize)}\n slot=\"options-toolbar\"\n />\n </WrappedAutoComplete>\n <WrappedAutoComplete\n className=\"version-selector\"\n value={mixedValue.version}\n validateState={validateState}\n options={versionOptions?.map((v) => ({ value: v, label: v }))}\n onChange={handleVersionChange as any}\n ></WrappedAutoComplete>\n {suffix?.useBrick ? (\n <ReactUseMultipleBricks {...suffix}></ReactUseMultipleBricks>\n ) : null}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { ContractCenterApi_searchContract } from \"@next-api-sdk/next-builder-sdk\";\n\ninterface ContractParams {\n pageSize?: number;\n q?: string;\n}\n\ninterface ContractField {\n fullContractName?: string;\n version: string[];\n}\n\nexport function useContractList({\n pageSize = 20,\n q = \"\",\n}: ContractParams): ContractField[] {\n const [contractList, setContractList] = useState<ContractField[]>([]);\n const [query, setQ] = useState<string>(q);\n const [count, setCount] = useState(pageSize);\n\n useEffect(() => {\n setQ(q);\n }, [q]);\n\n useEffect(() => {\n setCount(pageSize);\n }, [pageSize]);\n\n useEffect(() => {\n (async () => {\n try {\n const { list } = await ContractCenterApi_searchContract(\n {\n page: 1,\n pageSize: count,\n fullContractName: query,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n\n setContractList(list as ContractField[]);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n setContractList([]);\n }\n })();\n }, [query, count]);\n\n return contractList;\n}\n","import React, { useState, useCallback, useRef, useEffect } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Menu } from \"@next-bricks/basic/menu\";\nimport { MenuItem, MenuComponentProps } from \"@next-bricks/basic/menu-item\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n\nconst WrappedMenu = wrapBrick<Menu, unknown>(\"eo-menu\");\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nconst MINIMAL_PADDING = 8;\n\nexport type Position = [x: number, y: number];\n\nexport interface OpenInfo {\n /**\n * 通常设为 `[EVENT.clientX, EVENT.clientY]`\n */\n position: Position;\n}\n\nexport interface SnippetItem {\n text: string;\n icon?: GeneralIconProps;\n disabled?: boolean;\n hidden?: boolean;\n tooltip?: string;\n dragConf?: {\n format: string;\n data: unknown;\n };\n}\n\nexport interface SnippetOption {\n title?: string;\n children?: SnippetItem[];\n}\n\n/**\n * 构件 `visual-builder.generate-snippets-context-menu`\n */\nexport\n@defineElement(\"visual-builder.generate-snippets-context-menu\", {\n styleTexts: [styleText],\n})\nclass GenerateSnippetsContextMenu extends ReactNextElement {\n @property({\n attribute: false,\n })\n accessor options: SnippetOption[] | undefined;\n\n @property({\n type: Boolean,\n })\n accessor active: boolean | undefined;\n\n @property({ attribute: false })\n accessor position: Position | undefined;\n\n @event({ type: \"item.drag.start\" })\n accessor #itemDragStartEvent!: EventEmitter<SnippetItem>;\n\n @event({ type: \"item.drag.end\" })\n accessor #itemDragEndEvent!: EventEmitter<SnippetItem>;\n\n @method()\n open({ position }: OpenInfo) {\n this.active = true;\n this.position = position;\n }\n\n @method()\n close() {\n this.active = false;\n this.position = undefined;\n }\n\n #handleItemDragStart = (action: SnippetItem): void => {\n this.#itemDragStartEvent.emit(action);\n };\n\n #handleItemDragEnd = (action: SnippetItem): void => {\n this.#itemDragEndEvent.emit(action);\n };\n\n disconnectedCallback() {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return (\n <GenerateSnippetsContextMenuComponent\n active={this.active}\n element={this}\n position={this.position}\n onItemDragStart={this.#handleItemDragStart}\n onItemDragEnd={this.#handleItemDragEnd}\n options={this.options}\n />\n );\n }\n}\n\nexport interface GenerateSnippetsContextMenuProps {\n options?: SnippetOption[];\n active?: boolean;\n position?: Position;\n element?: GenerateSnippetsContextMenu;\n onItemDragStart?: (data: SnippetItem) => void;\n onItemDragEnd?: (data: SnippetItem) => void;\n}\n\nexport function GenerateSnippetsContextMenuComponent({\n element,\n active,\n onItemDragEnd,\n onItemDragStart,\n options,\n position,\n}: GenerateSnippetsContextMenuProps) {\n const [dragging, setDragging] = useState(false);\n const containerRef = useRef<any>(null);\n const [fixedPosition, setFixedPosition] = useState<Position | null>(null);\n\n const handleMaskClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n element?.close();\n },\n [element]\n );\n\n const handleItemStart = useCallback(\n (e: React.DragEvent, data: SnippetItem) => {\n setDragging(true);\n\n if (data.dragConf) {\n e.dataTransfer?.setData(\n data.dragConf.format,\n JSON.stringify(data.dragConf.data)\n );\n }\n (e.target as HTMLElement).classList.add(\"dragging\");\n onItemDragStart?.(data);\n },\n [onItemDragStart]\n );\n\n const handleItemDragEnd = useCallback(\n (e: React.DragEvent, data: SnippetItem) => {\n setDragging(false);\n (e.target as HTMLElement).classList.remove(\"dragging\");\n element?.close();\n onItemDragEnd?.(data);\n },\n [element, onItemDragEnd]\n );\n\n useEffect(() => {\n lockBodyScroll(element!, active);\n }, [active, element]);\n\n useEffect(() => {\n if (active && containerRef.current && position) {\n const rect = containerRef.current.getBoundingClientRect();\n const width = rect.width + MINIMAL_PADDING;\n const height = rect.height + MINIMAL_PADDING;\n const { clientWidth, clientHeight } = document.documentElement;\n const fixed = [...position] as Position;\n if (clientWidth > width && position[0] + width > clientWidth) {\n fixed[0] = position[0] - width;\n }\n if (clientHeight > height && position[1] + height > clientHeight) {\n fixed[1] = clientHeight - height;\n }\n setFixedPosition(fixed);\n } else {\n setFixedPosition(null);\n }\n }, [active, position]);\n\n return (\n <>\n {!dragging && (\n <div\n className=\"mask\"\n onClick={handleMaskClick}\n onContextMenu={handleMaskClick}\n />\n )}\n <div\n className=\"container\"\n ref={containerRef}\n style={{\n left: (fixedPosition ?? position)?.[0],\n top: (fixedPosition ?? position)?.[1],\n visibility: fixedPosition ? \"visible\" : \"hidden\",\n }}\n >\n {options?.map((op, index) => (\n <div key={index}>\n <div className=\"title\">{op.title}</div>\n {op.children?.length && (\n <WrappedMenu>\n {op.children?.map((item, itemIndex) => {\n return (\n <WrappedTooltip\n content={item.tooltip}\n hoist\n placement=\"left\"\n key={itemIndex}\n >\n <WrappedMenuItem\n disabled={item.disabled}\n icon={item.icon}\n draggable={!item.disabled}\n onDragStart={(e: React.DragEvent) =>\n handleItemStart(e, item)\n }\n onDragEnd={(e: React.DragEvent) =>\n handleItemDragEnd(e, item)\n }\n >\n {item.text}\n </WrappedMenuItem>\n </WrappedTooltip>\n );\n })}\n </WrappedMenu>\n )}\n </div>\n ))}\n </div>\n </>\n );\n}\n","export enum K {}\n\nconst en: Locale = {};\n\nconst zh: Locale = {};\n\nexport const NS = \"bricks/visual-builder/generate-snippets-context-menu\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\";\ntype BundledTheme = \"light-plus\" | \"dark-plus\";\ntype Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;\n\nconst bundledLanguages = {\n json: () => import(\"@shikijs/langs/json\"),\n javascript: () => import(\"@shikijs/langs/javascript\"),\n js: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n ts: () => import(\"@shikijs/langs/typescript\"),\n html: () => import(\"@shikijs/langs/html\"),\n \"html-derivative\": () => import(\"@shikijs/langs/html-derivative\"),\n xml: () => import(\"@shikijs/langs/xml\"),\n css: () => import(\"@shikijs/langs/css\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n md: () => import(\"@shikijs/langs/markdown\"),\n mermaid: () => import(\"@shikijs/langs/mermaid\"),\n mmd: () => import(\"@shikijs/langs/mermaid\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n shellscript: () => import(\"@shikijs/langs/shellscript\"),\n bash: () => import(\"@shikijs/langs/shellscript\"),\n sh: () => import(\"@shikijs/langs/shellscript\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n zsh: () => import(\"@shikijs/langs/shellscript\"),\n python: () => import(\"@shikijs/langs/python\"),\n py: () => import(\"@shikijs/langs/python\"),\n go: () => import(\"@shikijs/langs/go\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n} as Record<BundledLanguage, DynamicImportLanguageRegistration>;\n\nconst bundledThemes = {\n \"light-plus\": lightPlus,\n \"dark-plus\": darkPlus,\n} as Record<BundledTheme, ThemeInput>;\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter<\n BundledLanguage,\n BundledTheme\n>({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import(\"shiki/wasm\")),\n});\n\nconst {\n codeToHtml,\n codeToHast,\n codeToTokensBase,\n codeToTokens,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState,\n} = /* @__PURE__ */ createSingletonShorthands<BundledLanguage, BundledTheme>(\n createHighlighter,\n {\n guessEmbeddedLanguages(code, lang) {\n if (lang === \"markdown\" || lang === \"md\") {\n return [\"mermaid\"];\n }\n },\n }\n);\n\nexport {\n bundledLanguages,\n bundledThemes,\n codeToHast,\n codeToHtml,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getLastGrammarState,\n getSingletonHighlighter,\n};\nexport type { BundledLanguage, BundledTheme, Highlighter };\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport { getSingletonHighlighter } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\nexport async function preloadHighlighter(\n theme: \"light-plus\" | \"dark-plus\"\n): Promise<void> {\n await getSingletonHighlighter({\n themes: [theme],\n });\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { MarkdownComponent } from \"@next-shared/markdown\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { AvatarProps, EoAvatar } from \"@next-bricks/basic/avatar\";\nimport type { Message } from \"./index\";\n\nconst WrappedAvatar = wrapBrick<EoAvatar, AvatarProps>(\"eo-avatar\");\n\nexport interface MessageComponentProps {\n message: Message;\n}\n\ntype MessageChunk =\n | MessageChunkPlain\n | MessageChunkMarkdown\n | MessageChunkCommand;\n\ninterface MessageChunkPlain {\n type: \"plain\";\n content: string;\n}\n\ninterface MessageChunkMarkdown {\n type: \"markdown\";\n content: string;\n}\n\ninterface MessageChunkCommand {\n type: \"command\";\n command: string;\n content: string;\n raw: string;\n}\n\nexport function MessageComponent({ message }: MessageComponentProps) {\n const messageChunks = useMemo(() => {\n const chunks: MessageChunk[] = [];\n\n if (message.role === \"assistant\") {\n const chunkRegExp =\n /(?:^|\\n)```(easy_cmd_\\S+)\\n([\\s\\S]*?)\\n```(?:$|\\n)/gm;\n\n let match: RegExpExecArray | null;\n let lastIndex = 0;\n while ((match = chunkRegExp.exec(message.content))) {\n const [fullMatch, command, content] = match;\n const start = match.index;\n const previousText = message.content.slice(lastIndex, start).trim();\n if (previousText.length > 0) {\n chunks.push({\n type: \"markdown\",\n content: previousText,\n });\n }\n chunks.push({\n type: \"command\",\n command,\n content: content.trim(),\n raw: fullMatch,\n });\n lastIndex = chunkRegExp.lastIndex;\n }\n const lastText = message.content.slice(lastIndex).trim();\n if (lastText.length > 0) {\n chunks.push({\n type: \"markdown\",\n content: lastText,\n });\n }\n } else {\n chunks.push({\n type: \"plain\",\n content: message.content,\n });\n }\n\n return chunks;\n }, [message.content, message.role]);\n\n const contentRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const contentElement = contentRef.current;\n if (!contentElement) {\n return;\n }\n setTimeout(() => {\n const textingElements =\n contentElement.parentElement.querySelectorAll(\".texting\");\n for (const element of textingElements) {\n element.classList.remove(\"texting\");\n }\n if (!message.partial) {\n return;\n }\n // Find the last text element descendant of the message element,\n // and apply a texting effect to it.\n let current = contentElement as HTMLElement;\n while (current) {\n const lastChild = current.lastChild;\n if (\n lastChild?.nodeType === Node.ELEMENT_NODE &&\n ((lastChild as HTMLElement)?.tagName !== \"DETAILS\" ||\n (lastChild as HTMLDetailsElement).open)\n ) {\n current = lastChild as HTMLElement;\n } else {\n // Handle a special case: the last child is a text node without any\n // non-whitespace content. In such case, we should apply the texting\n // effect to the previous sibling element.\n if (\n lastChild?.nodeType === Node.TEXT_NODE &&\n lastChild.textContent.trim().length === 0 &&\n lastChild.previousSibling?.nodeType === Node.ELEMENT_NODE\n ) {\n current = lastChild.previousSibling as HTMLElement;\n } else {\n break;\n }\n }\n }\n current.classList.add(\"texting\");\n }, 1);\n }, [message.partial, message.content]);\n\n return (\n <div className={classNames(\"message\", { failed: message.failed })}>\n <div className=\"avatar\">\n <WrappedAvatar\n icon={{\n lib: \"easyops\",\n icon: message.role === \"assistant\" ? \"robot\" : \"account\",\n }}\n size=\"small\"\n className={`role-${message.role}`}\n />\n </div>\n <div className=\"main\">\n <div className=\"label\">\n {message.role === \"assistant\" ? \"Assistant\" : \"You\"}\n </div>\n <div className=\"content\" ref={contentRef}>\n {messageChunks.map((chunk, index) => (\n <MessageChunkComponent key={index} chunk={chunk} />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction MessageChunkComponent({ chunk }: { chunk: MessageChunk }) {\n return (\n <>\n {chunk.type === \"markdown\" ? (\n <div className=\"markdown\">\n <MarkdownComponent content={chunk.content} />\n </div>\n ) : chunk.type === \"command\" ? (\n <>\n <details className=\"command\">\n <summary>```{chunk.command}</summary>\n <pre>\n <code>{chunk.content}</code>\n </pre>\n </details>\n </>\n ) : (\n <div className=\"plain\">{chunk.content}</div>\n )}\n </>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { MessageComponent } from \"./MessageComponent\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface Message {\n role: \"user\" | \"assistant\";\n content: string;\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface ChatConversationProps {\n messages?: Message[];\n errorBoundary?: boolean;\n}\n\ntype StoryboardChunk = StoryboardChunkBlock | StoryboardChunkBlockItem;\n\ninterface StoryboardChunkBlock {\n type: \"block\";\n uuid: string;\n children: string[];\n name: string;\n seq: number;\n hasContainer?: boolean;\n}\n\ninterface StoryboardChunkBlockItem {\n type: \"item\";\n uuid: string;\n storyboard?: BrickConf;\n}\n\n/**\n * 用于 Visual Builder 的智能聊天对话列表\n */\nexport\n@defineElement(\"visual-builder.chat-conversation\", {\n styleTexts: [styleText],\n})\nclass ChatConversation\n extends ReactNextElement\n implements ChatConversationProps\n{\n @property({ attribute: false })\n accessor messages: Message[] | undefined;\n\n @property({ type: Boolean })\n accessor errorBoundary: boolean | undefined;\n\n @event({ type: \"storyboard.update\" })\n accessor #storyboardUpdate!: EventEmitter<BrickConf[]>;\n\n #handleStoryboardUpdate = (storyboard: BrickConf[]) => {\n this.#storyboardUpdate.emit(storyboard);\n };\n\n render() {\n return (\n <ChatConversationComponent\n host={this}\n messages={this.messages}\n errorBoundary={this.errorBoundary}\n onStoryboardUpdate={this.#handleStoryboardUpdate}\n />\n );\n }\n}\n\nexport interface ChatConversationComponentProps extends ChatConversationProps {\n host: Element;\n onStoryboardUpdate?: (storyboard: BrickConf[]) => void;\n}\n\nexport function ChatConversationComponent({\n messages,\n host,\n errorBoundary,\n onStoryboardUpdate,\n}: ChatConversationComponentProps) {\n const chunkRegExp = useMemo(\n () =>\n /(?:^|\\n)```easy_cmd_vb_block_(page|storyboard)\\n([\\s\\S]*?)\\n```(?:$|\\n)/gm,\n []\n );\n const lastIndexMapRef = useRef(new Map<number, number>());\n const [chunks, setChunks] = useState<StoryboardChunk[]>([]);\n const manualScrolledRef = useRef(false);\n\n useEffect(() => {\n for (const message of messages ?? []) {\n if (message.role !== \"assistant\") {\n continue;\n }\n chunkRegExp.lastIndex = lastIndexMapRef.current.get(message.key) ?? 0;\n let match: RegExpExecArray | null;\n const newChunks: StoryboardChunk[] = [];\n let newPage = false;\n while ((match = chunkRegExp.exec(message.content))) {\n lastIndexMapRef.current.set(message.key, chunkRegExp.lastIndex);\n const [, type, content] = match;\n try {\n const parsed = JSON.parse(content) as unknown;\n if (type === \"page\") {\n newPage = true;\n newChunks.push(\n ...(parsed as (StoryboardChunkBlock | StoryboardChunkBlockItem)[])\n );\n } else {\n newChunks.push({\n ...(parsed as StoryboardChunkBlockItem),\n type: \"item\",\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"parse storyboard failed:\", e);\n }\n }\n if (newPage) {\n setChunks(newChunks);\n } else if (newChunks.length > 0) {\n setChunks((prev) => [...prev, ...newChunks]);\n }\n }\n }, [chunkRegExp, messages]);\n\n const [storyboard, setStoryboard] = useState<BrickConf[]>([]);\n\n useEffect(() => {\n const blocks = [];\n const storyboardMap = new Map<string, BrickConf>();\n for (const chunk of chunks) {\n if (chunk.type === \"block\") {\n blocks.push(chunk);\n } else if (chunk.storyboard) {\n storyboardMap.set(chunk.uuid, chunk.storyboard);\n }\n }\n\n // Sort by seq ascent\n blocks.sort((a, b) => a.seq - b.seq);\n\n const contentLayout: BrickConf = {\n brick: \"eo-content-layout\",\n children: [],\n };\n const main: BrickConf = {\n brick: \"eo-main-view\",\n children: [\n {\n brick: \"eo-page-title\",\n slot: \"pageTitle\",\n properties: {\n pageTitle: \"测试页面\",\n },\n },\n ],\n };\n\n let hasContent = false;\n for (const block of blocks) {\n // No container\n if (block.name === \"全局操作区\") {\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n main.children.push({\n ...childBrick,\n properties: {\n ...childBrick.properties,\n slot: undefined,\n },\n errorBoundary,\n slot: \"toolbar\",\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n block: {\n uuid: block.uuid,\n name: block.name,\n },\n },\n } as BrickConf);\n hasContent = true;\n }\n }\n } else {\n const rawBrick = storyboardMap.get(block.uuid);\n if (rawBrick) {\n const brick: BrickConf = {\n ...rawBrick,\n children: [],\n errorBoundary,\n iid: `block:${block.uuid}`,\n meta: {\n type: \"block\",\n uuid: block.uuid,\n name: block.name,\n },\n } as BrickConf;\n hasContent = true;\n contentLayout.children.push(brick);\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n brick.children.push({\n ...childBrick,\n errorBoundary,\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n },\n } as BrickConf);\n }\n }\n } else if (!block.hasContainer) {\n for (const child of block.children) {\n const childBrick = storyboardMap.get(child);\n if (childBrick) {\n contentLayout.children.push({\n ...childBrick,\n errorBoundary,\n iid: `item:${child}`,\n meta: {\n type: \"item\",\n uuid: child,\n },\n } as BrickConf);\n hasContent = true;\n }\n }\n }\n }\n }\n\n main.children.push(contentLayout);\n\n setStoryboard((prev) =>\n hasContent ? [main] : prev.length === 0 ? prev : []\n );\n }, [chunks, errorBoundary]);\n\n useEffect(() => {\n onStoryboardUpdate?.(storyboard);\n }, [onStoryboardUpdate, storyboard]);\n\n const verticalScrollParent = useMemo(() => {\n // Lookup the nearest scrollable parent (on axis y)\n let current = host;\n while (current) {\n const overflowY = getComputedStyle(current, null).getPropertyValue(\n \"overflow-y\"\n );\n if (overflowY === \"auto\" || overflowY === \"scroll\") {\n return current;\n }\n if (current.parentNode instanceof ShadowRoot) {\n current = current.parentNode.host;\n } else if (current.parentNode instanceof Element) {\n current = current.parentNode;\n } else {\n break;\n }\n }\n return document.scrollingElement || document.documentElement;\n }, [host]);\n\n useEffect(() => {\n if (manualScrolledRef.current) {\n return;\n }\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n verticalScrollParent.scrollTo(0, verticalScrollParent.scrollHeight!);\n }, 1);\n }, [messages, verticalScrollParent]);\n\n useEffect(() => {\n const handleScroll = () => {\n manualScrolledRef.current =\n verticalScrollParent.scrollTop +\n verticalScrollParent.clientHeight! +\n 6 <\n verticalScrollParent.scrollHeight;\n };\n verticalScrollParent.addEventListener(\"scroll\", handleScroll);\n return () => {\n verticalScrollParent.removeEventListener(\"scroll\", handleScroll);\n };\n }, [verticalScrollParent]);\n\n return (\n <>\n {messages?.map((message, index) => (\n <MessageComponent\n key={message.key ?? `index-${index}`}\n message={message}\n />\n ))}\n </>\n );\n}\n","import React from \"react\";\nimport { InspectOutline } from \"../data-providers/chat-preview/interfaces.js\";\n\nexport interface InspectOutlineComponentProps extends InspectOutline {\n variant: \"hover\" | \"active\";\n}\n\nexport function InspectOutlineComponent({\n variant,\n width,\n height,\n left,\n top,\n label,\n}: InspectOutlineComponentProps): React.ReactElement {\n const borderWidth = 4;\n return (\n <div\n className={\"outline \" + variant}\n style={{\n width: width + borderWidth * 2,\n height: height + borderWidth * 2,\n left: left - borderWidth,\n top: top - borderWidth,\n }}\n >\n <div className=\"label\">{label}</div>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { BrickConf, MicroApp } from \"@next-core/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport classNames from \"classnames\";\nimport type {\n InspectOutline,\n InspectSelector,\n} from \"../data-providers/chat-preview/interfaces\";\nimport { InspectOutlineComponent } from \"./InspectOutlineComponent\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatPreviewProps {\n storyboard?: BrickConf | BrickConf[];\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n inspecting?: boolean;\n}\n\n/**\n * 构件 `visual-builder.chat-preview`\n */\nexport\n@defineElement(\"visual-builder.chat-preview\", {\n styleTexts: [styleText],\n})\nclass ChatPreview extends ReactNextElement {\n @property({ attribute: false })\n accessor storyboard: BrickConf | BrickConf[] | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n @property({ type: Boolean })\n accessor inspecting: boolean | undefined;\n\n @event({ type: \"activeTarget.change\" })\n accessor #activeTargetChangeEvent!: EventEmitter<InspectSelector | undefined>;\n #handleActiveTargetChange = (target: InspectSelector | undefined) => {\n this.#activeTargetChangeEvent.emit(target);\n };\n\n @method()\n select(payload: InspectSelector) {\n const iframeWin = this.shadowRoot?.querySelector(\"iframe\")?.contentWindow;\n iframeWin?.postMessage(\n {\n channel: \"chat-preview\",\n type: \"select\",\n payload,\n },\n location.origin\n );\n }\n\n render() {\n return (\n <ChatPreviewComponent\n storyboard={this.storyboard}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n inspecting={this.inspecting}\n onActiveTargetChange={this.#handleActiveTargetChange}\n />\n );\n }\n}\n\nexport interface ChatPreviewComponentProps extends ChatPreviewProps {\n onActiveTargetChange?(target: InspectSelector | undefined): void;\n}\n\nexport function ChatPreviewComponent({\n storyboard,\n theme,\n uiVersion,\n app,\n inspecting,\n onActiveTargetChange,\n}: ChatPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [scroll, setScroll] = useState({ x: 0, y: 0 });\n const [hoverOutlines, setHoverOutlines] = useState<InspectOutline[]>([]);\n const [activeOutlines, setActiveOutlines] = useState<InspectOutline[]>([]);\n const [adjustedHoverOutlines, setAdjustedHoverOutlines] = useState<\n InspectOutline[]\n >([]);\n const [adjustedActiveOutlines, setAdjustedActiveOutlines] = useState<\n InspectOutline[]\n >([]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_inject;\n inject(\"visual-builder.inject-chat-preview-agent\", {\n ...pkg,\n filePath: `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n });\n }, [ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n render(\n \"yaml\",\n {\n yaml: safeDump(storyboard, {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }),\n },\n {\n app,\n theme,\n uiVersion,\n }\n );\n }, [app, ready, storyboard, theme, uiVersion]);\n\n const handleMouseOut = useMemo(() => {\n if (!initialized) {\n return;\n }\n return () => {\n // Delay posting message to allow iframe inner hovering message be sent before\n // mouse out from iframe itself.\n setTimeout(() => {\n window.postMessage({\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: { outlines: [] },\n });\n }, 100);\n };\n }, [initialized]);\n\n useEffect(() => {\n const listener = (event: MessageEvent) => {\n if (event.data?.channel === \"chat-preview\") {\n switch (event.data.type) {\n case \"initialized\":\n setInitialized(true);\n break;\n case \"inspect-hover\":\n setHoverOutlines(event.data.payload.outlines);\n break;\n case \"scroll\":\n setScroll(event.data.payload);\n break;\n case \"inspect-active\":\n setActiveOutlines(event.data.payload.outlines);\n break;\n }\n }\n };\n window.addEventListener(\"message\", listener);\n return () => {\n window.removeEventListener(\"message\", listener);\n };\n }, []);\n\n useEffect(() => {\n if (!initialized) {\n return;\n }\n iframeRef.current?.contentWindow?.postMessage(\n {\n channel: \"chat-preview\",\n type: \"toggle-inspecting\",\n payload: {\n inspecting,\n },\n },\n location.origin\n );\n }, [initialized, inspecting]);\n\n const adjustOutlines = useCallback(\n (outlines: InspectOutline[]): InspectOutline[] => {\n return outlines.map((outline) => {\n const minScale = 1;\n const offsetLeft = iframeRef?.current?.offsetLeft ?? 0;\n const offsetTop = iframeRef?.current?.offsetTop ?? 0;\n const { width, height, left, top, ...rest } = outline;\n return {\n width: width * minScale,\n height: height * minScale,\n left: (left - scroll.x) * minScale + offsetLeft,\n top: (top - scroll.y) * minScale + offsetTop,\n ...rest,\n };\n });\n },\n [scroll.x, scroll.y]\n );\n\n useEffect(() => {\n onActiveTargetChange(activeOutlines[0]);\n }, [activeOutlines, onActiveTargetChange]);\n\n useEffect(() => {\n setAdjustedActiveOutlines(adjustOutlines(activeOutlines));\n }, [activeOutlines, adjustOutlines]);\n\n useEffect(() => {\n setAdjustedHoverOutlines(adjustOutlines(hoverOutlines));\n }, [hoverOutlines, adjustOutlines]);\n\n return (\n <div className={classNames(\"container\", { inspecting })}>\n <iframe\n ref={iframeRef}\n src={`${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n onMouseOut={handleMouseOut}\n />\n {adjustedHoverOutlines.map((outline, index) => (\n <InspectOutlineComponent key={index} variant=\"hover\" {...outline} />\n ))}\n {adjustedActiveOutlines.map((outline, index) => (\n <InspectOutlineComponent key={index} variant=\"active\" {...outline} />\n ))}\n </div>\n );\n}\n","// istanbul ignore file: working in progress\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-devtools-shared/src/backend/views/Highlighter/index.js\nimport { debounce } from \"lodash\";\nimport type {\n InspectOutline,\n InspectSelector,\n InspectTarget,\n} from \"./interfaces.js\";\n\nlet isInspecting = false;\nconst IID_ITEM_PREFIX = \"item:\";\nlet currentHoverElement: Element | null = null;\n\nexport function toggleInspecting(inspecting: boolean): void {\n if (isInspecting === inspecting) {\n return;\n }\n isInspecting = inspecting;\n\n const method = inspecting ? \"addEventListener\" : \"removeEventListener\";\n\n window[method](\"click\", onClick as EventListener, true);\n window[method](\"mousedown\", onMouseEvent as EventListener, true);\n window[method](\"mouseover\", onMouseEvent as EventListener, true);\n window[method](\"mouseup\", onMouseEvent as EventListener, true);\n window[method](\"pointerdown\", onMouseEvent as EventListener, true);\n window[method](\"pointerover\", onMouseEvent as EventListener, true);\n window[method](\"pointerup\", onMouseEvent as EventListener, true);\n window[method](\"pointerleave\", onPointerLeave as EventListener, true);\n window[method](\"pointermove\", onPointerMove as EventListener, true);\n}\n\nfunction getElementsIncludingInShadowDOM(\n iid: string,\n isRoot?: boolean\n): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n function walk(root: Document | ShadowRoot) {\n const candidates = root.querySelectorAll<HTMLElement>(\n isRoot ? iid : `[data-iid=\"${iid}\"]`\n );\n elements.push(...candidates);\n\n // If elements are found in the document, we should stop searching in shadow DOM.\n if (root === document && candidates.length > 0) {\n return;\n }\n\n // These useBrick in v3 bricks will be inside shadow DOM.\n for (const item of root.querySelectorAll(\"*\")) {\n if (item.shadowRoot) {\n walk(item.shadowRoot);\n }\n }\n }\n\n walk(document);\n\n return elements;\n}\n\nexport function select(selector: InspectSelector) {\n const iid = `${selector.type}:${selector.uuid}`;\n const elements = getElementsIncludingInShadowDOM(iid);\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-active\",\n payload: {\n outlines: elements.map((element) =>\n getTargetOutline({ ...selector, element, label: getLabel(element) })\n ),\n },\n },\n location.origin\n );\n}\n\nfunction onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n selectByClick(event);\n}\n\nfunction onMouseEvent(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst hoverOnTarget = debounce(\n (eventTargets: EventTarget[], clientX: number, clientY: number) => {\n let targets = getPossibleBrickTargets(eventTargets);\n if (targets.length === 0) {\n for (const element of eventTargets) {\n if (element instanceof HTMLElement && element.shadowRoot) {\n targets = getPossibleBrickTargets(\n element.shadowRoot.elementsFromPoint(clientX, clientY)\n );\n break;\n }\n }\n }\n const hoverElement = targets.length > 0 ? targets[0].element : null;\n if (hoverElement !== currentHoverElement) {\n currentHoverElement = hoverElement;\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: {\n outlines: targets.map(getTargetOutline),\n },\n },\n location.origin\n );\n }\n },\n 20,\n { leading: true }\n);\n\nfunction onPointerMove(event: MouseEvent): void {\n // `event.composedPath()` will be unavailable in debounced callback\n hoverOnTarget(event.composedPath(), event.clientX, event.clientY);\n}\n\nfunction onPointerLeave(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n currentHoverElement = null;\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-hover\",\n payload: { outlines: [] },\n },\n location.origin\n );\n}\n\nfunction selectByClick(event: MouseEvent): void {\n const targets = getPossibleBrickTargets(event.composedPath());\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n type: \"inspect-active\",\n payload: {\n outlines: targets.map(getTargetOutline),\n },\n },\n location.origin\n );\n}\n\nfunction getPossibleBrickTargets(eventTargets: EventTarget[]) {\n const inspectTargets: InspectTarget[] = [];\n eventTargets.forEach((item) => {\n let iid: string | undefined;\n if (\n (item as Node).nodeType === Node.ELEMENT_NODE &&\n item instanceof HTMLElement &&\n (iid = item.dataset.iid) &&\n iid.startsWith(IID_ITEM_PREFIX)\n ) {\n const uuid = iid.substring(IID_ITEM_PREFIX.length);\n inspectTargets.push({\n type: \"item\",\n uuid,\n label: getLabel(item),\n element: item,\n });\n }\n });\n return inspectTargets;\n}\n\nfunction getTargetOutline(target: InspectTarget): InspectOutline {\n const { element, type, uuid, label } = target;\n const { width, height, left, top } = element.getBoundingClientRect();\n return {\n width,\n height,\n left: left + window.scrollX,\n top: top + window.scrollY,\n type,\n uuid,\n label,\n };\n}\n\nfunction getLabel(element: Element) {\n return element.tagName.toLowerCase().split(\".\").pop();\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { select, toggleInspecting } from \"./chat-preview/inspector\";\n\nlet injected = false;\n\nexport async function injectChatPreviewAgent(): Promise<unknown> {\n if (injected) {\n return;\n }\n injected = true;\n import(\"./chat-preview/styles.css\");\n\n sendMessage({ type: \"initialized\" });\n\n window.addEventListener(\"message\", (e) => {\n if (e.data?.channel === \"chat-preview\") {\n switch (e.data.type) {\n case \"toggle-inspecting\":\n toggleInspecting(e.data.payload.inspecting);\n break;\n case \"select\":\n select(e.data.payload);\n break;\n }\n }\n });\n\n window.addEventListener(\"scroll\", () => {\n sendMessage({\n type: \"scroll\",\n payload: {\n x: window.scrollX,\n y: window.scrollY,\n },\n });\n });\n}\n\nfunction sendMessage(message: object) {\n window.parent.postMessage(\n {\n channel: \"chat-preview\",\n ...message,\n },\n location.origin\n );\n}\n\ncustomElements.define(\n \"visual-builder.inject-chat-preview-agent\",\n createProviderClass(injectChatPreviewAgent)\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { isObject } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PreGeneratedPreviewProps {\n generations?: AttributeGeneration[];\n category?: PreviewCategory;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface AttributeGeneration {\n instanceId: string;\n objectId: string;\n propertyId: string;\n propertyName: string;\n displayLevel: number;\n rwType: string;\n category: PreviewCategory;\n storyboard: BrickConf | BrickConf[];\n mockData: unknown[];\n}\n\nexport type PreviewCategory =\n | \"detail-item\"\n | \"form-item\"\n | \"table-column\"\n | \"card-item\"\n | \"metric-item\"\n | \"value\";\n\n/**\n * 构件 `visual-builder.pre-generated-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-preview\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedPreview extends ReactNextElement {\n @property({ attribute: false })\n accessor generations: AttributeGeneration[] | undefined;\n\n /**\n * @default \"value\"\n */\n @property()\n accessor category: PreviewCategory | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n render() {\n return (\n <PreGeneratedPreviewComponent\n generations={this.generations}\n category={this.category}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n />\n );\n }\n}\n\nexport interface PreGeneratedPreviewComponentProps\n extends PreGeneratedPreviewProps {\n //\n}\n\nexport function PreGeneratedPreviewComponent({\n generations,\n category,\n theme,\n uiVersion,\n app,\n}: PreGeneratedPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const candidatesMap = new Map<\n string,\n Map<string, Map<number, AttributeGeneration>>\n >();\n const mocksMap = new Map<string, unknown[]>();\n\n for (const generation of generations) {\n let candidatesByReadWriteType = candidatesMap.get(generation.propertyId);\n if (!candidatesByReadWriteType) {\n candidatesMap.set(\n generation.propertyId,\n (candidatesByReadWriteType = new Map())\n );\n }\n let candidatesByDisplayLevel = candidatesByReadWriteType.get(\n generation.rwType\n );\n if (!candidatesByDisplayLevel) {\n candidatesByReadWriteType.set(\n generation.rwType,\n (candidatesByDisplayLevel = new Map())\n );\n }\n candidatesByDisplayLevel.set(generation.displayLevel ?? 0, generation);\n\n mocksMap.set(generation.propertyId, generation.mockData);\n }\n\n const tableChildren: BrickConf[] = [\n {\n brick: \"div\",\n properties: {\n textContent: \"属性\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"类别\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"展示等级\",\n className: \"head-cell last-col-cell\",\n style: {\n gridColumn: \"span 5\",\n textAlign: \"center\",\n },\n },\n },\n ];\n const table: BrickConf = {\n brick: \"visual-builder.pre-generated-table-view\",\n properties: {\n style: {\n gridTemplateColumns: \"120px 80px repeat(5, 1fr)\",\n },\n },\n children: tableChildren,\n };\n\n let propertyIndex = 0;\n for (const [propertyId, candidatesByReadWriteType] of candidatesMap) {\n let readWriteTypeIndex = 0;\n const isLastProperty = propertyIndex === candidatesMap.size - 1;\n for (const [rwType, candidates] of candidatesByReadWriteType) {\n if (readWriteTypeIndex === 0) {\n let propertyName: string | undefined;\n\n for (const candidate of candidates.values()) {\n propertyName = candidate.propertyName ?? propertyId;\n break;\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: propertyName,\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastProperty,\n }),\n style: {\n gridRow: `span ${candidatesByReadWriteType.size}`,\n },\n },\n });\n }\n\n const isLastRow =\n isLastProperty &&\n readWriteTypeIndex === candidatesByReadWriteType.size - 1;\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: rwType,\n className: classNames(\"body-cell\", { \"last-row-cell\": isLastRow }),\n },\n });\n\n for (let i = -2; i < 3; i++) {\n const candidate = candidates.get(i);\n const candidateCategory = candidate?.category ?? category;\n\n let dataSource: unknown;\n if (candidate?.mockData?.length) {\n const mockValue =\n candidate.mockData[\n Math.floor(Math.random() * candidate.mockData.length)\n ];\n switch (candidateCategory) {\n case \"detail-item\":\n case \"form-item\":\n case \"card-item\":\n dataSource = {\n [propertyId]: mockValue,\n };\n break;\n case \"table-column\":\n dataSource = {\n cellData: mockValue,\n };\n }\n }\n\n const candidateChildren = []\n .concat(candidate?.storyboard ?? [])\n .filter((brick) => {\n if (!isObject(brick)) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected type of storyboard:\", typeof brick);\n return false;\n }\n return true;\n });\n candidateChildren.forEach(fixBrickConf);\n\n let container: BrickConf;\n switch (candidateCategory) {\n case \"form-item\":\n container = {\n brick: \"eo-form\",\n properties: {\n layout: \"inline\",\n values: dataSource,\n className: \"form-container\",\n },\n children: candidateChildren.map((child) => ({\n ...child,\n errorBoundary: true,\n })),\n };\n break;\n case \"card-item\":\n container = {\n brick: \":forEach\",\n dataSource: [dataSource],\n children: candidateChildren.map((child) => ({\n ...child,\n errorBoundary: true,\n })),\n };\n break;\n default:\n container = {\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: candidateChildren,\n dataSource,\n },\n errorBoundary: true,\n };\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-col-cell\": i === 2,\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n ...container,\n errorBoundary: true,\n },\n ],\n });\n }\n\n readWriteTypeIndex++;\n }\n\n propertyIndex++;\n }\n\n // const tbodyChildren: BrickConf[] = [];\n // const table: BrickConf = {\n // brick: \"table\",\n // properties: {\n // className: \"preview-table\",\n // },\n // children: [\n // {\n // brick: \"thead\",\n // children: [\n // {\n // brick: \"tr\",\n // slot: \"head\",\n // children: [\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"属性\",\n // },\n // },\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"类别\",\n // },\n // },\n // {\n // brick: \"th\",\n // properties: {\n // textContent: \"展示等级\",\n // colSpan: 5,\n // style: {\n // textAlign: \"center\",\n // }\n // },\n // },\n // ],\n // }\n // ]\n // },\n // {\n // brick: \"tbody\",\n // children: tbodyChildren,\n // },\n // ],\n // };\n\n // for (const [propertyId, candidatesByReadWriteType] of candidatesMap) {\n // let readWriteTypeIndex = 0;\n // for (const [rwType, candidates] of candidatesByReadWriteType) {\n\n // const row: BrickConf[] = []\n\n // if (readWriteTypeIndex === 0) {\n // let propertyName: string | undefined;\n\n // for (const candidate of candidates.values()) {\n // propertyName = candidate.propertyName ?? propertyId;\n // break;\n // }\n\n // row.push({\n // brick: \"td\",\n // properties: {\n // textContent: propertyName,\n // rowSpan: candidatesByReadWriteType.size,\n // },\n // })\n // }\n\n // row.push({\n // brick: \"td\",\n // properties: {\n // textContent: rwType,\n // },\n // });\n\n // for (let i = -2; i < 3; i++) {\n // const candidate = candidates.get(i);\n\n // let dataSource: unknown;\n // if (candidate?.mockData?.length) {\n // const mockValue = candidate.mockData[\n // Math.floor(Math.random() * candidate.mockData.length)\n // ];\n // switch (candidate.category ?? category) {\n // case \"detail-item\":\n // dataSource = {\n // [propertyId]: mockValue\n // };\n // break;\n // case \"table-column\":\n // dataSource = {\n // cellData: mockValue\n // };\n // }\n // }\n\n // row.push({\n // brick: \"td\",\n // children: [\n // {\n // brick: \"visual-builder.pre-generated-container\",\n // properties: {\n // useBrick: candidate?.storyboard ?? [],\n // dataSource,\n // }\n // }\n // ],\n // });\n // }\n // tbodyChildren.push({\n // brick: \"tr\",\n // children: row,\n // });\n\n // readWriteTypeIndex++;\n // }\n // }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(table, {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: previewStyleText,\n }\n );\n }, [app, injected, generations, theme, uiVersion, category]);\n\n // useEffect(() => {\n // if (!injected) {\n // return;\n // }\n // const render = (iframeRef.current?.contentWindow as PreviewWindow)\n // ?._preview_only_render;\n // if (!render) {\n // return;\n // }\n\n // const candidatesMap = new Map<string, AttributeCandidate[]>();\n // const mocksMap = new Map<string, unknown[]>();\n // let maxCandidatesCount = 0;\n\n // for (const generation of generations) {\n // candidatesMap.set(generation.id, generation.candidates);\n // mocksMap.set(generation.id, generation.mocks);\n // maxCandidatesCount = Math.max(\n // maxCandidatesCount,\n // generation.candidates.length\n // );\n // }\n\n // const storyboards: BrickConf[] = [];\n\n // for (let i = 0; i < maxCandidatesCount; i++) {\n // const brick: BrickConf = {\n // brick: \"eo-descriptions\",\n // properties: {\n // column: 1,\n // dataSource: Object.fromEntries(\n // Array.from(mocksMap.entries()).map(([id, mocks]) => [\n // id,\n // mocks[\n // i < mocks.length ? i : Math.floor(Math.random() * mocks.length)\n // ],\n // ])\n // ),\n // list: generations.map((generation) => ({\n // label: generation.name,\n // useChildren: `[${generation.id}]`,\n // })),\n // },\n // children: Array.from(candidatesMap.entries()).flatMap(\n // ([id, candidates]) => {\n // const children = ([] as BrickConf[]).concat(\n // candidates[\n // i < candidates.length\n // ? i\n // : Math.floor(Math.random() * candidates.length)\n // ].storyboard\n // );\n // return children.map((child) => ({\n // ...child,\n // slot: `[${id}]`,\n // }));\n // }\n // ),\n // };\n // storyboards.push(brick);\n // }\n\n // render(\n // \"yaml\",\n // {\n // yaml: safeDump(storyboards, {\n // schema: JSON_SCHEMA,\n // skipInvalid: true,\n // noRefs: true,\n // noCompatMode: true,\n // }),\n // },\n // {\n // app,\n // theme,\n // uiVersion,\n // styleText: `#preview-root { display: flex; flex-wrap: wrap; gap: 2em; }`,\n // }\n // );\n // }, [app, injected, generations, theme, uiVersion]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={`${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n\nfunction fixBrickConf(brick: BrickConf) {\n if (brick.properties?.prefix) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected readonly property of 'prefix' in:\", brick);\n delete brick.properties.prefix;\n }\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement } = createDecorators();\n\n/**\n * 构件 `visual-builder.pre-generated-table-view`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-table-view\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedTableView extends ReactNextElement {\n render() {\n return <PreGeneratedTableViewComponent />;\n }\n}\n\nexport function PreGeneratedTableViewComponent() {\n return <slot />;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport type { UseBrickConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `visual-builder.pre-generated-container`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.pre-generated-container\", {\n shadowOptions: false,\n})\nclass PreGeneratedContainer extends ReactNextElement {\n @property({ attribute: false })\n accessor useBrick: UseBrickConf | undefined;\n\n @property({ attribute: false })\n accessor dataSource: unknown | undefined;\n\n render() {\n return (\n <PreGeneratedContainerComponent\n useBrick={this.useBrick}\n dataSource={this.dataSource}\n />\n );\n }\n}\n\nexport interface PreGeneratedContainerProps {\n useBrick?: UseBrickConf;\n dataSource?: unknown;\n}\n\nexport function PreGeneratedContainerComponent({\n useBrick,\n dataSource,\n}: PreGeneratedContainerProps) {\n if (!useBrick) {\n return null;\n }\n return (\n <ReactUseMultipleBricks\n useBrick={useBrick}\n data={dataSource}\n errorBoundary\n />\n );\n}\n","import { __secret_internals, customEditors } from \"@next-core/runtime\";\nimport { createProviderClass } from \"@next-core/utils/general\";\n\nexport async function checkEditorByName(name: string): Promise<boolean> {\n try {\n await __secret_internals.loadEditors([name]);\n } catch {\n return false;\n }\n const editor = customEditors.get(name);\n\n return !!editor;\n}\n\ncustomElements.define(\n \"visual-builder.check-editor-by-name\",\n createProviderClass(checkEditorByName)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\nimport { ContextConf } from \"@next-core/types\";\n\nexport function getDataDependency(\n contextConfs: ContextConf[],\n keyword: string\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n\n for (const contextConf of contextConfs) {\n const stats = collectMemberUsage(\n [contextConf.if, contextConf.value, contextConf.resolve],\n keyword\n );\n depsMap.set(contextConf, stats);\n }\n\n return depsMap;\n}\n\ncustomElements.define(\n \"visual-builder.get-data-deps\",\n createProviderClass(getDataDependency)\n);\n","import { ContextConf } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport { MenuIcon } from \"@next-shared/general/types\";\nimport { getDataDependency } from \"./get-data-dependency\";\nimport { cloneDeep } from \"lodash\";\n\ninterface DataItem extends ContextConf {\n $key?: string;\n path?: string;\n}\n\ninterface NodeItem {\n name: string;\n key: string;\n path?: string;\n icon?: MenuIcon;\n data?: DataItem;\n unreachable?: boolean;\n children?: NodeItem[];\n}\n\ninterface DepsItem {\n deps: string[];\n node: NodeItem;\n}\n\ninterface DepsOptions {\n nodeList?: NodeItem[];\n dependencyList: DepsItem[];\n parents?: NodeItem[];\n result?: NodeItem[];\n}\n\nfunction processNodeList(nodeList: NodeItem[], options: DepsOptions) {\n nodeList.forEach((node) => {\n processNodeItem(node, { ...options, nodeList });\n });\n}\n\nfunction processNodeItem(nodeItem: NodeItem, options: DepsOptions) {\n const { dependencyList, nodeList, parents, result } = options;\n\n const data = cloneDeep(nodeItem);\n result.push(data);\n\n const find = dependencyList.find((dep) => dep.node.key === data.key);\n\n if (find.deps?.length && !parents.some((item) => item.key === data.key)) {\n const children = (data.children = []) as NodeItem[];\n processDataDeps(find, {\n dependencyList,\n nodeList,\n parents: [...parents, data],\n result: children,\n });\n }\n}\n\nfunction processDataDeps(depsData: DepsItem, options: DepsOptions) {\n const collects = [] as NodeItem[];\n\n depsData.deps.forEach((name) => {\n // 有可能存在同名的两个数据,一起展示\n const matches = options.nodeList.filter((item) => item.name === name);\n collects.push(...matches);\n });\n\n processNodeList(collects, options);\n}\n\nexport function getDependencyTree(\n nodeDataList: NodeItem[],\n options: {\n dataType: string;\n }\n): NodeItem[] {\n const nodeList = nodeDataList;\n const dependencyMap = getDataDependency(\n nodeList.map((item) => item.data),\n options.dataType\n );\n\n const dependencyList = [] as DepsItem[];\n for (const [curData, value] of dependencyMap) {\n dependencyList.push({\n deps: Array.from(value.usedProperties),\n node: nodeList.find((node) => node.data === curData),\n });\n }\n\n const result = [] as NodeItem[];\n\n processNodeList(nodeList, {\n result,\n dependencyList,\n parents: [],\n });\n\n return result;\n}\n\ncustomElements.define(\n \"visual-builder.get-dependency-tree\",\n createProviderClass(getDependencyTree)\n);\n","// istanbul ignore file\nimport { __secret_internals as _internals } from \"@next-core/runtime\";\nimport type { BrickPackage } from \"@next-core/types\";\n\ninterface DLL {\n (moduleId: \"tYg3\"): {\n developHelper: {\n getBrickPackages?: () => BrickPackage[];\n };\n };\n}\n\nlet __secret_internals = _internals;\n\n// Make v3 bricks compatible with Brick Next v2.\ntry {\n const dll = (window as unknown as { dll?: DLL }).dll;\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n const { developHelper: developHelperV2 } = dll(\"tYg3\");\n __secret_internals = {\n getBrickPackagesById(id: string) {\n return developHelperV2\n .getBrickPackages?.()\n .find((pkg) => pkg.id === id);\n },\n } as any;\n }\n} catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Try to use v2 runtime APIs failed:\", e);\n}\n\n/**\n * The `__secret_internals` that is compatible in both v3 and v2.\n */\nexport const __compat_internals = __secret_internals;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, ContextConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { __compat_internals } from \"../shared/compat_internals\";\nimport type { VisualConfig } from \"./raw-data-interfaces\";\nimport { convertToStoryboard } from \"./convert\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface RawDataPreviewProps {\n previewUrl?: string;\n generations?: AttributeGeneration[];\n mocks?: Record<string, unknown>[];\n busy?: boolean;\n category?: PreviewCategory;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface AttributeGeneration {\n generationId?: string;\n objectId: string;\n objectName: string;\n propertyId: string;\n propertyName: string;\n propertyType?: string;\n propertyValues?: unknown[];\n propertyInstanceId?: string;\n comment?: string;\n approved?: boolean;\n candidates: VisualConfig[] | null;\n mockData: Record<string, unknown>[];\n}\n\nexport interface CommentDetail {\n comment: string;\n propertyInstanceId?: string;\n}\n\nexport interface ApproveDetail {\n approved: boolean;\n propertyInstanceId?: string;\n}\n\ninterface BasePreviewMessage {\n channel: \"raw-data-preview\";\n}\n\ninterface CommentMessage extends BasePreviewMessage {\n type: \"comment\";\n payload: CommentDetail;\n}\n\ninterface ApproveMessage extends BasePreviewMessage {\n type: \"approve\";\n payload: ApproveDetail;\n}\n\ninterface ViewAttrPromptMessage extends BasePreviewMessage {\n type: \"viewAttrPrompt\";\n payload: AttributeGeneration;\n}\n\ninterface UpdatePropertyToggleStateMessage extends BasePreviewMessage {\n type: \"updatePropertyToggleState\";\n payload: string[];\n}\n\ninterface UpdatePropertyExpandStateMessage extends BasePreviewMessage {\n type: \"updatePropertyExpandState\";\n payload: string[];\n}\n\ninterface UpdatePropertyApproveStateMessage extends BasePreviewMessage {\n type: \"updatePropertyApproveState\";\n payload: string[];\n}\n\ntype PreviewMessage =\n | CommentMessage\n | ApproveMessage\n | ViewAttrPromptMessage\n | UpdatePropertyToggleStateMessage\n | UpdatePropertyExpandStateMessage\n | UpdatePropertyApproveStateMessage;\n\nexport type PreviewCategory =\n | \"detail-item\"\n | \"form-item\"\n | \"table-column\"\n | \"card-item\"\n | \"metric-item\"\n | \"value\";\n\n/**\n * 构件 `visual-builder.raw-data-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.raw-data-preview\", {\n styleTexts: [styleText],\n})\nclass RawDataPreview extends ReactNextElement {\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor generations: AttributeGeneration[] | undefined;\n\n @property({ attribute: false })\n accessor mocks: Record<string, unknown>[] | undefined;\n\n @property({ type: Boolean })\n accessor busy: boolean | undefined;\n\n /**\n * @default \"value\"\n */\n @property()\n accessor category: PreviewCategory | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n @event({ type: \"comment\" })\n accessor #commentEvent: EventEmitter<CommentDetail>;\n\n #handleComment = (detail: CommentDetail) => {\n this.#commentEvent.emit(detail);\n };\n\n @event({ type: \"approve\" })\n accessor #approveEvent: EventEmitter<ApproveDetail>;\n\n #handleApprove = (detail: ApproveDetail) => {\n this.#approveEvent.emit(detail);\n };\n\n @event({ type: \"view.attr.prompt\" })\n accessor #viewAttrPromptEvent: EventEmitter<AttributeGeneration>;\n\n #handleViewAttrPrompt = (detail: AttributeGeneration) => {\n this.#viewAttrPromptEvent.emit(detail);\n };\n\n render() {\n return (\n <RawDataPreviewComponent\n previewUrl={this.previewUrl}\n generations={this.generations}\n mocks={this.mocks}\n busy={this.busy}\n category={this.category}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n onComment={this.#handleComment}\n onApprove={this.#handleApprove}\n onViewAttrPrompt={this.#handleViewAttrPrompt}\n />\n );\n }\n}\n\nexport interface RawDataPreviewComponentProps extends RawDataPreviewProps {\n onComment: (detail: CommentDetail) => void;\n onApprove: (detail: ApproveDetail) => void;\n onViewAttrPrompt: (detail: AttributeGeneration) => void;\n}\n\nexport function RawDataPreviewComponent({\n previewUrl,\n generations,\n mocks,\n busy,\n category,\n theme,\n uiVersion,\n app,\n onComment,\n onApprove,\n onViewAttrPrompt,\n}: RawDataPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n const propertyToggleStateRef = useRef<string[]>([]);\n const propertyExpandStateRef = useRef<string[]>([]);\n const propertyApproveStateRef = useRef<string[]>([]);\n\n useEffect(() => {\n propertyApproveStateRef.current =\n generations\n ?.filter((generation) => generation.approved)\n .map((generation) => generation.propertyId) ?? [];\n }, [generations]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n iframeWin.postMessage(\n {\n channel: \"raw-data-preview\",\n type: \"busy\",\n payload: busy,\n },\n location.origin\n );\n }\n }, [busy, ready]);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<PreviewMessage>) => {\n if (data?.channel === \"raw-data-preview\") {\n switch (data.type) {\n case \"comment\":\n onComment(data.payload);\n break;\n case \"approve\":\n onApprove(data.payload);\n break;\n case \"viewAttrPrompt\":\n onViewAttrPrompt(data.payload);\n break;\n case \"updatePropertyToggleState\":\n propertyToggleStateRef.current = data.payload;\n break;\n case \"updatePropertyExpandState\":\n propertyExpandStateRef.current = data.payload;\n break;\n case \"updatePropertyApproveState\":\n propertyApproveStateRef.current = data.payload;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }\n }, [onApprove, onComment, onViewAttrPrompt, ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __compat_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: previewUrl\n ? new URL(pkg.filePath, new URL(previewUrl, location.origin)).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const tableChildren: BrickConf[] = [\n {\n brick: \"div\",\n properties: {\n textContent: \"属性\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"类型\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"原始数据\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"视觉重量 (由低至高)\",\n className: \"head-cell\",\n style: {\n gridColumn: \"span 4\",\n textAlign: \"center\",\n },\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"确认\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n className: \"head-cell last-col-cell\",\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: \"批注\",\n },\n },\n {\n brick: \"span\",\n properties: {\n className: \"tips\",\n textContent: \"(补充提示词,按住 ⌘ 或 ctrl + 回车提交)\",\n },\n },\n ],\n },\n ];\n const table: BrickConf & { context?: ContextConf[] } = {\n brick: \"visual-builder.pre-generated-table-view\",\n context: [\n {\n name: \"propertyToggleState\",\n value: propertyToggleStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyToggleState\",\n payload: \"<% CTX.propertyToggleState %>\",\n },\n ],\n },\n },\n {\n name: \"propertyExpandState\",\n value: propertyExpandStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyExpandState\",\n payload: \"<% CTX.propertyExpandState %>\",\n },\n ],\n },\n },\n {\n name: \"propertyApproveState\",\n value: propertyApproveStateRef.current,\n onChange: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"updatePropertyApproveState\",\n payload: \"<% CTX.propertyApproveState %>\",\n },\n ],\n },\n },\n {\n name: \"busy\",\n },\n ],\n properties: {\n style: {\n gridTemplateColumns:\n \"minmax(120px, 0.5fr) 32px auto repeat(5, 1fr) auto 1fr\",\n },\n },\n children: tableChildren,\n };\n\n for (let i = 0, size = generations.length; i < size; i++) {\n const generation = generations[i];\n const isLastRow = i === size - 1;\n\n const candidatesByVisualWeight = new Map<number, VisualConfig>();\n for (const candidate of generation.candidates ?? []) {\n candidatesByVisualWeight.set(candidate.visualWeight ?? 0, candidate);\n }\n\n tableChildren.push(\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyName ?? generation.propertyId}`,\n },\n },\n {\n // 多个示例的展开/收起按钮\n brick: \"eo-button\",\n properties: {\n className: \"btn-toggle\",\n type: \"text\",\n icon: `<%=\n {\n lib: \"fa\",\n prefix: \"fas\",\n icon: CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) ? \"chevron-up\" : \"chevron-down\",\n }\n %>`,\n },\n events: {\n click: {\n action: \"context.replace\",\n args: [\n \"propertyToggleState\",\n `<%\n CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)})\n ? CTX.propertyToggleState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n : CTX.propertyToggleState.concat(${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n },\n },\n ],\n },\n {\n // 绿色圆点表示已生成\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates?.length\n ? [\n {\n brick: \"eo-icon\",\n properties: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"circle\",\n style: {\n color: generation.generationId\n ? \"var(--palette-green-6)\"\n : \"var(--palette-gray-6)\",\n transformOrigin: \"center center\",\n transform: \"scale(0.5)\",\n },\n },\n },\n ]\n : undefined,\n },\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"eo-link\",\n properties: {\n type: \"text\",\n textContent: generation.propertyType,\n },\n events: {\n click: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"viewAttrPrompt\",\n payload: generation,\n },\n ],\n },\n },\n },\n ],\n }\n );\n\n let values = generation.propertyValues;\n if (!values) {\n const mockList = (generation.mockData ?? mocks ?? []).slice();\n mockList.sort((ma, mb) => {\n const a = ma?.[generation.propertyId];\n const b = mb?.[generation.propertyId];\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n if (aIsArray || bIsArray) {\n return (bIsArray ? b.length : -1) - (aIsArray ? a.length : -1);\n }\n const aIsNil = a == null;\n const bIsNil = b == null;\n if (aIsNil || bIsNil) {\n return (bIsNil ? 0 : 1) - (aIsNil ? 0 : 1);\n }\n\n const aIsEmpty = typeof a === \"string\" && a.length === 0;\n const bIsEmpty = typeof b === \"string\" && b.length === 0;\n if (aIsEmpty || bIsEmpty) {\n return (bIsEmpty ? 0 : 1) - (aIsEmpty ? 0 : 1);\n }\n return 0;\n });\n values = mockList.map((mock) => mock[generation.propertyId]);\n }\n\n // 原始数据\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: values.map((mock, index) => ({\n brick: \"div\",\n if:\n index === 0\n ? true\n : `<%= CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n properties: {\n className: `<%= \\`raw-content\\${ CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)}) ? \" expand\" : \"\" }\\` %>`,\n textContent:\n mock === undefined\n ? \"\"\n : typeof mock === \"string\"\n ? mock\n : JSON.stringify(mock, null, 2),\n },\n })),\n },\n {\n // 原始数据的展开/收起按钮\n brick: \"eo-button\",\n properties: {\n className: \"btn-toggle\",\n type: \"text\",\n icon: `<%=\n {\n lib: \"fa\",\n prefix: \"fas\",\n icon: CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)}) ? \"chevron-up\" : \"chevron-down\",\n }\n %>`,\n },\n events: {\n click: {\n action: \"context.replace\",\n args: [\n \"propertyExpandState\",\n `<%\n CTX.propertyExpandState.includes(${JSON.stringify(generation.propertyId)})\n ? CTX.propertyExpandState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n : CTX.propertyExpandState.concat(${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n },\n },\n ],\n });\n\n // 生成的编排\n for (let i = -1; i < 3; i++) {\n const candidate = candidatesByVisualWeight.get(i);\n\n let brick: BrickConf;\n if (candidate) {\n brick = convertToStoryboard(candidate, generation.propertyId);\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: brick\n ? values.map((mock, index) => ({\n brick: \"visual-builder.pre-generated-container\",\n if:\n index === 0\n ? true\n : `<%= CTX.propertyToggleState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n properties: {\n useBrick: [brick],\n dataSource: {\n [generation.propertyId]: mock,\n },\n },\n errorBoundary: true,\n }))\n : undefined,\n },\n ],\n });\n }\n\n tableChildren.push(\n {\n // 确认 checkbox\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates\n ? [\n {\n brick: \"eo-checkbox\",\n properties: {\n value: `<%= CTX.propertyApproveState.includes(${JSON.stringify(generation.propertyId)}) ? [\"approved\"] : [] %>`,\n options: [{ label: \"\", value: \"approved\" }],\n disabled: `<%= CTX.busy || ${JSON.stringify(!generation.generationId)} %>`,\n },\n events: {\n change: [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"approve\",\n payload: {\n approved: \"<% EVENT.detail.length > 0 %>\",\n propertyInstanceId: generation.propertyInstanceId,\n },\n },\n ],\n },\n {\n action: \"context.replace\",\n args: [\n \"propertyApproveState\",\n `<%\n EVENT.detail.length > 0\n ? CTX.propertyApproveState.concat(${JSON.stringify(generation.propertyId)})\n : CTX.propertyApproveState.filter((id) => id !== ${JSON.stringify(generation.propertyId)})\n %>`,\n ],\n },\n ],\n },\n },\n ]\n : undefined,\n },\n {\n // 批注 textarea\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-col-cell\": true,\n \"last-row-cell\": isLastRow,\n }),\n },\n children: generation.candidates\n ? [\n {\n brick: \"eo-textarea\",\n properties: {\n value: generation.comment\n ? `<% ${JSON.stringify(generation.comment)} %>`\n : undefined,\n autoSize: true,\n style: {\n width: \"100%\",\n },\n disabled: `<%= CTX.busy || ${JSON.stringify(!generation.generationId)} || CTX.propertyApproveState.includes(${JSON.stringify(generation.propertyId)}) %>`,\n },\n events: {\n keydown: {\n if: \"<% EVENT.code === 'Enter' && (EVENT.metaKey || EVENT.ctrlKey) %>\",\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-data-preview\",\n type: \"comment\",\n payload: {\n comment: \"<% EVENT.target.value %>\",\n propertyInstanceId: generation.propertyInstanceId,\n },\n },\n ],\n },\n },\n },\n ]\n : undefined,\n }\n );\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n table,\n {\n brick: \"eo-message-listener\",\n properties: {\n sameOrigin: true,\n },\n events: {\n message: {\n if: \"<% EVENT.detail.data?.channel === 'raw-data-preview' && EVENT.detail.data.type === 'busy' %>\",\n action: \"context.replace\",\n args: [\"busy\", \"<% EVENT.detail.data.payload %>\"],\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }\n ),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: previewStyleText,\n }\n );\n }, [app, injected, generations, theme, uiVersion, category, mocks]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { defaults } from \"lodash\";\nimport { pathToRegexp, Key } from \"path-to-regexp\";\n\ninterface Option {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\nexport async function parsePath(path: string, options?: Option) {\n const defaultParams = { end: false, strict: false, sensitive: true };\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, defaults(options, defaultParams));\n\n return {\n regexp,\n keys,\n };\n}\n\ncustomElements.define(\n \"visual-builder.parse-path\",\n createProviderClass(parsePath)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { InstanceApi_createInstance } from \"@next-api-sdk/cmdb-sdk\";\n\nexport interface GeneratedView {\n attrInstanceId: string;\n input: string;\n output: string;\n list: unknown[];\n defaultVisualWeight?: number;\n systemPromptVersion?: string;\n}\n\nexport async function batchUpdateRawDataGeneratedView(\n generations: GeneratedView[]\n): Promise<unknown> {\n return Promise.allSettled(\n generations.map(({ attrInstanceId, ...props }) =>\n InstanceApi_createInstance(\"RAW_DATA_GENERATED_VIEW@EASYOPS\", {\n ...props,\n attr: [attrInstanceId],\n })\n )\n );\n}\n\ncustomElements.define(\n \"visual-builder.batch-update-raw-data-generated-view\",\n createProviderClass(batchUpdateRawDataGeneratedView)\n);\n","// istanbul ignore file\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport promptOfBoolean from \"./prompts/raw-data-boolean.md\";\nimport promptOfDateTime from \"./prompts/raw-data-date-time.md\";\nimport promptOfEnum from \"./prompts/raw-data-enum.md\";\nimport promptOfNumber from \"./prompts/raw-data-number.md\";\nimport promptOfOthers from \"./prompts/raw-data-others.md\";\nimport promptOfStructList from \"./prompts/raw-data-struct-list.md\";\nimport promptOfStruct from \"./prompts/raw-data-struct.md\";\nimport promptOfJson from \"./prompts/raw-data-json.md\";\n\nexport function getRawDataSystemPrompts(): Record<string, string> {\n return {\n boolean: promptOfBoolean,\n \"date-time\": promptOfDateTime,\n enum: promptOfEnum,\n number: promptOfNumber,\n others: promptOfOthers,\n \"struct-list\": promptOfStructList,\n struct: promptOfStruct,\n json: promptOfJson,\n };\n}\n\ncustomElements.define(\n \"visual-builder.get-raw-data-system-prompts\",\n createProviderClass(getRawDataSystemPrompts)\n);\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/visual-builder/pre-generated-config\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import type { BrickConf } from \"@next-core/types\";\nimport type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n// import { ALLOWED_COLORS } from \"./constants\";\n\nexport interface RawMetric {\n unit?: string;\n}\n\nexport function convertToChart(\n config: MetricVisualConfig,\n dataSource: unknown,\n metricKey: string,\n metric: RawMetric,\n groupedMetricKeys?: string[],\n counterMetricKey?: string\n): BrickConf | null {\n let brickItem: BrickConf | null = null;\n\n // const color =\n // config.color && ALLOWED_COLORS.includes(config.color)\n // ? `<% THEME.getCssPropertyValue(${JSON.stringify(`--palette-${config.color}-5`)}) %>`\n // : undefined;\n\n // 目前图表构件不支持 bibytes 的 ticks\n const unit = metric.unit === \"bibytes\" ? \"bytes\" : metric.unit;\n\n if (config.size === \"small\") {\n switch (config.chartType) {\n case \"line\":\n brickItem = {\n brick: \"eo-mini-line-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yField: metricKey,\n // lineColor: color,\n width: \"auto\",\n showArea: true,\n },\n };\n break;\n case \"gauge\": {\n const isPercentBase1 = metric.unit === \"percent(1)\";\n const isPercentBase100 =\n metric.unit === \"percent(100)\" || metric.unit === \"%\";\n brickItem = {\n brick: \"chart-v2.gauge-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yField: metricKey,\n height: 100,\n axis: {\n yAxis: {\n unit,\n precision: config.precision,\n min: config.min,\n max:\n config.max ??\n (isPercentBase1 ? 1 : isPercentBase100 ? 100 : undefined),\n },\n },\n thresholdColors:\n isPercentBase1 || isPercentBase100\n ? [\n {\n value: 20,\n color: \"cyan\",\n },\n {\n value: 90,\n color: \"yellow\",\n },\n {\n value: 100,\n color: \"red\",\n },\n ].map(({ value, color }) => ({\n value: isPercentBase100 ? value : value / 100,\n color: `<% THEME.getCssPropertyValue(${JSON.stringify(`--palette-${color}-5`)}) %>`,\n }))\n : undefined,\n },\n };\n break;\n }\n }\n } else {\n switch (config.chartType) {\n case \"line\":\n case \"area\":\n brickItem = {\n brick: \"chart-v2.time-series-chart\",\n properties: {\n data: dataSource,\n xField: \"time\",\n yFields: groupedMetricKeys ?? [metricKey],\n // colors: groupedMetricKeys ? undefined : [color].filter(Boolean),\n height: config.size === \"large\" ? 230 : 200,\n timeFormat: \"HH:mm\",\n areaOpacity: config.chartType === \"line\" ? 0 : undefined,\n axis: {\n yAxis: {\n unit,\n precision: config.precision,\n min: config.min,\n max: config.max,\n shape: \"smooth\",\n },\n },\n ...(counterMetricKey\n ? {\n forceAbsoluteNumbers: true,\n series: {\n [counterMetricKey]: {\n isNegative: true,\n },\n },\n }\n : null),\n areaShape: \"smooth\",\n legends: config.size === \"large\",\n },\n };\n break;\n }\n }\n\n return brickItem;\n}\n","import type { BrickConf, SlotConfOfBricks, SlotsConf } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type {\n ChartConfig,\n Config,\n ContainerConfig,\n DefaultConfig,\n GroupedChartConfig,\n} from \"./index.js\";\nimport { getMemberAccessor } from \"../shared/getMemberAccessor.js\";\nimport {\n convertToStoryboard,\n lowLevelConvertToStoryboard,\n} from \"../raw-data-preview/convert.js\";\nimport { has } from \"lodash\";\nimport { convertToChart } from \"../raw-metric-preview/convert.js\";\n\nexport function convertToBrickConf(\n configList: Config[],\n { type, dataName, dataType, settings }: ContainerConfig\n): BrickConf | null {\n if (!type || !dataName || configList.length === 0) {\n return null;\n }\n\n const dataAccessor = dataType === \"state\" ? \"STATE\" : \"CTX\";\n const valueAccessor = `${dataAccessor}${getMemberAccessor(dataName)}`;\n\n if (type === \"chart\" || type === \"grouped-chart\") {\n const metricConfigList = configList as (ChartConfig | GroupedChartConfig)[];\n const dataSource = `<%= ${valueAccessor}${settings?.pagination || settings?.wrapper ? \".list\" : \"\"} %>`;\n\n const charts = metricConfigList.map(({ candidate, meta }) =>\n convertToChart(\n {\n ...candidate,\n min: meta.counterMetricKey ? undefined : candidate.min,\n },\n dataSource,\n meta.metric.metricKey,\n {\n unit: meta.metric.unit,\n },\n meta.groupedMetricKeys,\n meta.counterMetricKey\n )\n );\n\n if (charts.length === 1) {\n return charts[0];\n }\n\n return {\n brick: \"eo-grid-layout\",\n properties: {\n templateColumns: \"repeat(auto-fill, minmax(500px, 1fr))\",\n gap: \"var(--card-content-gap)\",\n },\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: charts,\n },\n },\n };\n }\n\n const attrConfigList = configList as DefaultConfig[];\n\n if (type === \"cards\") {\n const dataSource = `<%= ${valueAccessor}${settings?.pagination || settings?.wrapper ? \".list\" : \"\"} %>`;\n\n return {\n brick: \"eo-grid-layout\",\n properties: {\n templateColumns: \"repeat(auto-fill, minmax(260px, 1fr))\",\n gap: \"var(--card-content-gap)\",\n },\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [\n {\n brick: \":forEach\",\n dataSource,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [\n {\n brick: \"eo-card-item\",\n properties: {\n cardTitle:\n has(settings?.fields, \"title\") &&\n typeof settings.fields.title === \"string\"\n ? `<% ITEM${getMemberAccessor(settings.fields.title)} %>`\n : undefined,\n description:\n has(settings?.fields, \"description\") &&\n typeof settings.fields.description === \"string\"\n ? `<% ITEM${getMemberAccessor(settings.fields.description)} %>`\n : undefined,\n },\n },\n ],\n },\n },\n },\n ],\n },\n },\n };\n }\n\n const dataSource = `<%= ${\n settings?.pagination\n ? settings?.fields?.pageSize\n ? `{...${valueAccessor},pageSize: ${valueAccessor}${getMemberAccessor(settings.fields.pageSize)}}`\n : valueAccessor\n : settings?.wrapper\n ? valueAccessor\n : `{ list: ${valueAccessor} }`\n } %>`;\n\n const brickMap = new Map<string, BrickConf>();\n for (const config of attrConfigList) {\n if (config.candidate) {\n const brick =\n type === \"table\"\n ? lowLevelConvertToStoryboard(config.candidate, \".cellData\")\n : convertToStoryboard(config.candidate, config.meta.attr.id);\n if (brick) {\n brickMap.set(config.meta.attr.id, getCompatibleBrickConf(brick));\n }\n }\n }\n const slots = Object.fromEntries(\n attrConfigList\n .map((config) => {\n const brick = brickMap.get(config.meta.attr.id);\n return brick\n ? [\n `[${config.meta.attr.id}]`,\n {\n type: \"bricks\",\n bricks: [brick],\n },\n ]\n : null;\n })\n .filter(Boolean)\n );\n\n switch (type) {\n case \"table\":\n return {\n brick: \"eo-next-table\",\n properties: {\n rowKey: \"instanceId\",\n columns: attrConfigList.map(({ meta: { attr } }) => {\n const col: Record<string, unknown> = {\n title: attr.name,\n dataIndex: attr.id,\n key: attr.id,\n };\n if (brickMap.has(attr.id)) {\n col.useChildren = `[${attr.id}]`;\n }\n return col;\n }),\n dataSource,\n ...(settings?.pagination ? null : { pagination: false }),\n },\n slots,\n };\n case \"descriptions\":\n return {\n brick: \"eo-descriptions\",\n properties: {\n column: 2,\n list: attrConfigList.map(({ candidate, meta: { attr } }) => {\n const item: Record<string, unknown> = {\n label: attr.name,\n };\n if (candidate) {\n item.useChildren = `[${attr.id}]`;\n }\n return item;\n }),\n dataSource,\n },\n slots,\n };\n }\n\n return null;\n}\n\nfunction getCompatibleBrickConf(brick: BrickConf) {\n const { children, slots, ...rest } = brick;\n return {\n ...rest,\n slots: childrenToSlots(children, slots),\n };\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(\n getCompatibleBrickConf(child)\n );\n }\n }\n return newSlots;\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { safeDump } from \"js-yaml\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { pick, uniqueId } from \"lodash\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { /* K, */ NS, locales /* , t */ } from \"./i18n.js\";\nimport type { VisualConfig } from \"../raw-data-preview/raw-data-interfaces.js\";\nimport { convertToStoryboard } from \"../raw-data-preview/convert.js\";\nimport type { MetricVisualConfig } from \"../raw-metric-preview/raw-metric-interfaces.js\";\nimport { convertToChart } from \"../raw-metric-preview/convert.js\";\nimport { convertToBrickConf } from \"./convertToBrickConf.js\";\nimport updateWeightMap from \"./updateWeightMap.js?raw\";\nimport type { MetricGroup } from \"../data-providers/get-config-by-data-for-ai.js\";\nimport styleText from \"./styles.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface PreGeneratedConfigProps {\n previewUrl?: string;\n attrList?: Attr[];\n mockList?: Record<string, unknown>[];\n metricGroups?: MetricGroup[];\n containerConfig?: ContainerConfig;\n}\n\nexport type Attr = ObjectAttr | MetricAttr;\n\nexport interface ObjectAttr {\n id: string;\n name: string;\n enum?: unknown[];\n metricKey?: undefined;\n candidates?: VisualConfig[];\n}\n\nexport interface MetricAttr {\n metricKey: string;\n id: string;\n name?: string;\n candidates?: MetricVisualConfig[];\n unit?: string;\n}\n\ninterface GroupedMetric {\n id: number;\n group: string;\n metrics: MetricAttr[];\n counter?: string;\n}\n\ninterface BaseConfigMessage {\n channel: \"pre-generated-config\";\n id?: string; // The unique id for message callbacks\n}\n\ninterface ConfigChangeMessage extends BaseConfigMessage {\n type: \"config-change\";\n payload: PreConfig;\n}\n\ninterface GroupChangeMessage extends BaseConfigMessage {\n type: \"group-change\";\n payload: {\n id: number;\n metrics: string[];\n };\n}\n\ninterface OrderChangeMessage extends BaseConfigMessage {\n type: \"order-change\";\n payload: {\n orderedIds: (string | number)[];\n };\n}\n\ninterface SelectionChangeMessage extends BaseConfigMessage {\n type: \"selection-change\";\n payload: {\n selectedIds: (string | number)[];\n };\n}\n\ninterface GetConfigResponseMessage extends BaseConfigMessage {\n type: \"get-config-response\";\n payload: PreConfig;\n}\n\ntype ConfigMessage =\n | ConfigChangeMessage\n | GroupChangeMessage\n | OrderChangeMessage\n | SelectionChangeMessage\n | GetConfigResponseMessage;\n\nexport interface PreConfig {\n selectedIds: (string | number)[];\n orderedIds: (string | number)[];\n weightMapLiteral: [string | number, number][];\n groupMapLiteral: [number, string[]][];\n}\n\nexport type Config = DefaultConfig | ChartConfig | GroupedChartConfig;\n\nexport interface DefaultConfig {\n meta: DefaultConfigMeta;\n candidate: VisualConfig;\n}\n\nexport interface ChartConfig {\n meta: ChartConfigMeta;\n candidate: MetricVisualConfig;\n}\n\nexport interface GroupedChartConfig {\n meta: GroupedChartConfigMeta;\n candidate: MetricVisualConfig;\n}\n\nexport interface ContainerConfig {\n type:\n | \"table\"\n | \"descriptions\"\n | \"cards\"\n | \"chart\"\n | \"grouped-chart\"\n | null\n | undefined;\n dataName: string;\n dataType?: \"context\" | \"state\";\n settings?: {\n pagination?: boolean;\n wrapper?: boolean;\n fields?: Record<string, string>;\n };\n}\n\n/**\n * 构件 `visual-builder.pre-generated-config`\n */\nexport\n@defineElement(\"visual-builder.pre-generated-config\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedConfig\n extends ReactNextElement\n implements PreGeneratedConfigProps\n{\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor attrList: ObjectAttr[] | undefined;\n\n @property({ attribute: false })\n accessor mockList: Record<string, unknown>[] | undefined;\n\n @property({ attribute: false })\n accessor metricGroups: MetricGroup[] | undefined;\n\n @property({ attribute: false })\n accessor containerConfig: ContainerConfig | undefined;\n\n @event({ type: \"brick.change\" })\n accessor #brickChangeEvent: EventEmitter<BrickConf | null>;\n\n #handleBrickChange = (payload: BrickConf | null) => {\n this.#brickChangeEvent.emit(payload);\n };\n\n render() {\n return (\n <PreGeneratedConfigComponent\n previewUrl={this.previewUrl}\n attrList={this.attrList}\n mockList={this.mockList}\n metricGroups={this.metricGroups}\n containerConfig={this.containerConfig}\n onBrickChange={this.#handleBrickChange}\n root={this}\n />\n );\n }\n}\n\nexport interface PreGeneratedConfigComponentProps\n extends PreGeneratedConfigProps {\n root: HTMLElement;\n onBrickChange: (payload: BrickConf | null) => void;\n}\n\nexport function PreGeneratedConfigComponent({\n previewUrl,\n attrList,\n mockList,\n metricGroups,\n containerConfig,\n root,\n onBrickChange,\n}: PreGeneratedConfigComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n const [config, setConfig] = useState<PreConfig | null>(null);\n const [groupMap, setGroupMap] = useState<Map<number, string[] | null>>(null);\n // Use ref instead of state to avoid re-rendering\n const selectedIdsRef = useRef<(string | number)[] | null>(null);\n const orderedIdsRef = useRef<(string | number)[] | null>(null);\n const eventAgentId = useMemo(() => uniqueId(\"event-agent-\"), []);\n\n const viewType =\n containerConfig?.type === \"chart\"\n ? \"chart\"\n : containerConfig?.type === \"grouped-chart\"\n ? \"grouped-chart\"\n : \"default\";\n\n const viewAttrList = useMemo(() => {\n return viewType === \"default\"\n ? attrList\n : attrList?.filter((attr) => attr.metricKey);\n }, [attrList, viewType]);\n\n const dataSourceList = useMemo(() => {\n return viewType === \"grouped-chart\"\n ? buildGroupedMetrics(viewAttrList as MetricAttr[], metricGroups)\n : viewAttrList;\n }, [metricGroups, viewAttrList, viewType]);\n\n useEffect(() => {\n setGroupMap(null);\n selectedIdsRef.current = null;\n orderedIdsRef.current = null;\n }, [dataSourceList]);\n\n useEffect(() => {\n if (config) {\n const orderedList = config.selectedIds\n .sort(\n (a, b) => config.orderedIds.indexOf(a) - config.orderedIds.indexOf(b)\n )\n .map((id) => dataSourceList.find((item) => item.id === id))\n .filter(Boolean);\n const weightMap = new Map(config.weightMapLiteral);\n const groupMap = new Map(config.groupMapLiteral);\n\n const configList = orderedList.map((item) => {\n const meta = getConfigMeta(\n viewType,\n viewAttrList,\n metricGroups,\n item,\n groupMap\n );\n const candidates =\n meta.viewType === \"grouped-chart\"\n ? meta.metric.candidates?.filter((can) => can.size !== \"small\")\n : (item as ObjectAttr | MetricAttr).candidates;\n const candidate = candidates?.find(\n (can) => can.visualWeight === weightMap.get(item.id)\n );\n return { candidate, meta } as Config;\n });\n\n const brickConf = convertToBrickConf(configList, containerConfig);\n onBrickChange(brickConf);\n }\n }, [\n config,\n containerConfig,\n dataSourceList,\n metricGroups,\n onBrickChange,\n viewAttrList,\n viewType,\n ]);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n const iframeWin = iframeRef.current?.contentWindow;\n if (!ready || !iframeWin) {\n return;\n }\n const observer = new ResizeObserver(() => {\n root.style.height = `${iframeWin.document.body.scrollHeight}px`;\n });\n observer.observe(iframeWin.document.body);\n return () => observer.disconnect();\n }, [ready, root]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<ConfigMessage>) => {\n if (data?.channel === \"pre-generated-config\") {\n switch (data.type) {\n case \"config-change\":\n setConfig(data.payload);\n break;\n case \"group-change\":\n setGroupMap(\n (prev) =>\n new Map([\n ...(prev ?? []),\n [data.payload.id, data.payload.metrics],\n ])\n );\n break;\n case \"order-change\":\n orderedIdsRef.current = data.payload.orderedIds;\n break;\n case \"selection-change\":\n selectedIdsRef.current = data.payload.selectedIds;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }, [ready]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n // const deps = [\"advanced\", \"visual-builder\"];\n const pkgVisualBuilder = __secret_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkgVisualBuilder) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkgVisualBuilder = {\n ...pkgVisualBuilder,\n filePath: previewUrl\n ? new URL(\n pkgVisualBuilder.filePath,\n new URL(previewUrl, location.origin)\n ).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkgVisualBuilder.filePath}`,\n };\n\n Promise.allSettled([\n inject(\n \"visual-builder.pre-generated-container\",\n fixedPkgVisualBuilder,\n undefined,\n true\n ),\n ]).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const orderedIds = orderedIdsRef.current;\n const selectedIds = selectedIdsRef.current;\n const orderedList = orderedIds\n ? orderedIds\n .map((id) => dataSourceList.find((item) => item.id === id))\n .filter(Boolean)\n : dataSourceList;\n const selectedItems = selectedIds\n ? orderedList.filter((item) => selectedIds.includes(item.id))\n : (orderedList?.slice(0, 5) ?? []);\n const selectedRowKeys = selectedIds ?? selectedItems.map((attr) => attr.id);\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n {\n brick: \"eo-next-table\",\n errorBoundary: true,\n properties: {\n injectChartV2Styles: true,\n pagination: false,\n rowSelection: true,\n rowKey: \"id\",\n rowDraggable: true,\n bordered: true,\n dataSource: {\n list: orderedList,\n },\n selectedRowKeys,\n columns: [\n ...(viewType === \"chart\"\n ? [\n {\n title: \"指标名\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"20%\",\n },\n {\n title: \"指标别名\",\n dataIndex: \"name\",\n key: \"name\",\n width: \"20%\",\n },\n ]\n : viewType === \"grouped-chart\"\n ? [\n {\n title: \"指标组\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"40%\",\n useBrick: {\n brick: \"eo-select\",\n properties: {\n options: \"<% CTX.metricOptions %>\",\n mode: \"multiple\",\n value:\n \"<% CTX.groupMap.get(DATA.cellData) ?? DATA.rowData.metrics.map((metric) => metric.id) %>\",\n dropdownHoist: true,\n },\n events: {\n change: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"group-change\",\n payload:\n \"<% { id: DATA.cellData, metrics: EVENT.detail.value } %>\",\n },\n ],\n },\n },\n },\n },\n ]\n : [\n {\n title: \"ID\",\n dataIndex: \"id\",\n key: \"id\",\n width: \"20%\",\n },\n {\n title: \"名称\",\n dataIndex: \"name\",\n key: \"name\",\n width: \"20%\",\n },\n ]),\n {\n title: \"预览\",\n dataIndex: \"preview\",\n key: \"preview\",\n useBrick: {\n brick: \"div\",\n children: dataSourceList?.flatMap<BrickConf>((item) => {\n const meta = getConfigMeta(\n viewType,\n viewAttrList,\n metricGroups,\n item,\n groupMap\n );\n\n let filteredCandidates:\n | VisualConfig[]\n | MetricVisualConfig[]\n | undefined;\n let dataSource: unknown;\n if (meta.viewType === \"grouped-chart\") {\n dataSource = mockList?.map((mock) =>\n pick(mock, [\"time\", ...meta.groupedMetricKeys])\n );\n filteredCandidates = meta.metric.candidates?.filter(\n (can) => can.size !== \"small\"\n );\n } else {\n filteredCandidates = (item as Attr).candidates;\n if (meta.viewType === \"chart\") {\n dataSource = mockList?.map((item) =>\n pick(item, [\"time\", meta.metric.metricKey])\n );\n } else {\n dataSource = mockList?.[0] ?? {};\n }\n }\n\n const bricks = filteredCandidates\n ?.map((candidate) => {\n const condition = `<%=\n DATA.rowData.id === ${JSON.stringify(item.id)} &&\n ${JSON.stringify(candidate.visualWeight)} === CTX.weightMap.get(${JSON.stringify(item.id)})\n %>`;\n const brick =\n meta.viewType === \"default\"\n ? convertToStoryboard(\n candidate as VisualConfig,\n (item as ObjectAttr).id\n )\n : convertToChart(\n {\n ...(candidate as MetricVisualConfig),\n min: meta.counterMetricKey\n ? undefined\n : (candidate as MetricVisualConfig).min,\n },\n \"<% DATA %>\",\n meta.metric.metricKey,\n {\n unit: meta.metric.unit,\n },\n meta.groupedMetricKeys,\n meta.counterMetricKey\n );\n if (brick) {\n return {\n if: condition,\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: brick,\n dataSource,\n },\n };\n }\n })\n .filter(Boolean);\n\n return bricks?.length\n ? bricks\n : {\n if: `<% DATA.rowData.id === ${JSON.stringify(item.id)} %>`,\n brick: \"span\",\n properties: {\n textContent: mockList?.[0]?.[item.id] ?? \"\",\n },\n };\n }),\n },\n },\n {\n dataIndex: \"operations\",\n key: \"operations\",\n width: 81,\n headerBrick: {\n useBrick: {\n brick: \"eo-mini-actions\",\n properties: {\n actions: `<%=\n [\n {\n icon: {\n lib: \"antd\",\n icon: \"minus\",\n },\n event: \"minus\",\n disabled: [...CTX.weightMap].every(([id, v]) => v <= CTX.availableWeights.get(id)[0]),\n },\n {\n icon: {\n lib: \"antd\",\n icon: \"plus\",\n },\n event: \"plus\",\n disabled: [...CTX.weightMap].every(([id, v]) => v >= CTX.availableWeights.get(id).slice(-1)[0]),\n },\n ]\n %>`,\n },\n events: {\n minus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, null, -1) %>`,\n ],\n },\n plus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, null, 1) %>`,\n ],\n },\n },\n },\n },\n useBrick: {\n if: \"<% CTX.availableWeights.get(DATA.rowData.id)?.length %>\",\n brick: \"eo-mini-actions\",\n properties: {\n actions: `<%=\n [\n {\n icon: {\n lib: \"antd\",\n icon: \"minus\",\n },\n event: \"minus\",\n disabled: CTX.weightMap.get(DATA.rowData.id) <= CTX.availableWeights.get(DATA.rowData.id)[0],\n },\n {\n icon: {\n lib: \"antd\",\n icon: \"plus\",\n },\n event: \"plus\",\n disabled: CTX.weightMap.get(DATA.rowData.id) >= CTX.availableWeights.get(DATA.rowData.id).slice(-1)[0],\n },\n ]\n %>`,\n },\n events: {\n minus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, DATA.rowData.id, -1) %>`,\n ],\n },\n plus: {\n action: \"context.replace\",\n args: [\n \"weightMap\",\n `<% FN.updateWeightMap(CTX.weightMap, CTX.availableWeights, DATA.rowData.id, 1) %>`,\n ],\n },\n },\n },\n },\n ],\n },\n events: {\n \"row.select\": {\n action: \"context.replace\",\n args: [\"selectedItems\", \"<%= EVENT.detail.rows %>\"],\n },\n \"row.drag\": {\n action: \"context.replace\",\n args: [\n \"orderedIds\",\n \"<%= EVENT.detail.list.map((attr) => attr.id) %>\",\n ],\n },\n },\n },\n {\n brick: \"eo-event-agent\",\n properties: {\n id: eventAgentId,\n },\n events: {\n trigger: {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"config-change\",\n payload:\n \"<% FN.getPreConfig(CTX.selectedItems, CTX.orderedIds, CTX.weightMap, CTX.groupMap) %>\",\n },\n ],\n },\n },\n lifeCycle: {\n onPageLoad: {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n skipInvalid: true,\n }\n ),\n },\n {\n theme: \"light\",\n uiVersion: \"8.2\",\n styleText: previewStyleText,\n context: [\n {\n name: \"orderedIds\",\n value: viewAttrList?.map((attr) => attr.id) ?? [],\n onChange: [\n {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"order-change\",\n payload: {\n orderedIds: \"<% EVENT.detail %>\",\n },\n },\n ],\n },\n ]\n : []),\n ],\n },\n {\n name: \"selectedItems\",\n value: selectedItems,\n onChange: [\n {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"pre-generated-config\",\n type: \"selection-change\",\n payload: {\n selectedIds:\n \"<% EVENT.detail.map((item) => item.id) %>\",\n },\n },\n ],\n },\n ]\n : []),\n ],\n },\n {\n name: \"availableWeights\",\n value: `<% new Map(${JSON.stringify(\n dataSourceList?.map((item) => [\n item.id,\n (viewType === \"grouped-chart\"\n ? (item as GroupedMetric).metrics[0]\n : (item as ObjectAttr)\n ).candidates\n ?.filter(\n (can) =>\n viewType !== \"grouped-chart\" ||\n (can as MetricVisualConfig).size !== \"small\"\n )\n .map((can) => can.visualWeight)\n .sort((a, b) => a - b) ?? [],\n ]) ?? []\n )}) %>`,\n },\n {\n name: \"weightMap\",\n value: `<% new Map(${JSON.stringify(\n dataSourceList?.map((item) => [\n item.id,\n findNearestCandidate(\n (viewType === \"grouped-chart\"\n ? (item as GroupedMetric).metrics[0]\n : (item as ObjectAttr)\n ).candidates?.filter(\n (can) =>\n viewType !== \"grouped-chart\" ||\n (can as MetricVisualConfig).size !== \"small\"\n ) as BaseVisualConfig[],\n viewType === \"grouped-chart\" ? 2 : 0\n )?.visualWeight,\n ]) ?? []\n )}) %>`,\n onChange: {\n target: `#${eventAgentId}`,\n method: \"trigger\",\n },\n },\n {\n name: \"groupMap\",\n value: `<% new Map(${JSON.stringify([...(groupMap ?? [])])}) %>`,\n },\n ...(viewType === \"grouped-chart\"\n ? [\n {\n name: \"metricOptions\",\n value: viewAttrList?.map((attr) => ({\n label: attr.metricKey,\n value: attr.id,\n })),\n },\n ]\n : []),\n ],\n functions: [\n {\n name: \"updateWeightMap\",\n source: updateWeightMap,\n },\n {\n name: \"getPreConfig\",\n source: `\n function getPreConfig(selectedItems, orderedIds, weightMap, groupMap) {\n return {\n selectedIds: selectedItems.map((item) => item.id),\n orderedIds,\n weightMapLiteral: [...weightMap],\n groupMapLiteral: [...groupMap],\n };\n }\n `,\n },\n ],\n }\n );\n }, [\n attrList,\n containerConfig,\n injected,\n metricGroups,\n mockList,\n eventAgentId,\n dataSourceList,\n viewType,\n viewAttrList,\n groupMap,\n ]);\n\n return (\n <div className=\"container\">\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n\ninterface BaseVisualConfig {\n visualWeight: number;\n}\n\nfunction findNearestCandidate<T extends BaseVisualConfig>(\n candidates: T[] | undefined,\n weight: number\n): T | undefined {\n return candidates?.reduce((nearest, candidate) => {\n if (\n !nearest ||\n Math.abs(candidate.visualWeight - weight) <\n Math.abs(nearest.visualWeight - weight)\n ) {\n return candidate;\n }\n return nearest;\n });\n}\n\nfunction buildGroupedMetrics(\n metrics: MetricAttr[],\n groups: MetricGroup[]\n): GroupedMetric[] {\n const metricsMap = new Map(metrics.map((metric) => [metric.id, metric]));\n\n const results: GroupedMetric[] = [];\n\n groups.forEach((group, groupIndex) => {\n const result: MetricAttr[] = [];\n for (const metricName of group.metrics) {\n const metric = metricsMap.get(metricName);\n if (metric) {\n metricsMap.delete(metricName);\n result.push(metric);\n }\n }\n if (result.length) {\n results.push({\n id: groupIndex,\n group: group.group,\n metrics: result,\n counter: group.counter,\n });\n }\n });\n\n const nextGroupIndex = (results[results.length - 1]?.id ?? -1) + 1;\n\n results.push(\n ...[...metricsMap.values()].map((metric, index) => ({\n id: nextGroupIndex + index,\n group: \"\",\n metrics: [metric],\n }))\n );\n\n return results;\n}\n\ntype ConfigMeta = DefaultConfigMeta | ChartConfigMeta | GroupedChartConfigMeta;\n\ninterface DefaultConfigMeta {\n viewType: \"default\";\n attr: ObjectAttr;\n}\n\ninterface ChartConfigMeta {\n viewType: \"chart\";\n metric: MetricAttr;\n groupedMetricKeys?: undefined;\n counterMetricKey?: undefined;\n}\n\ninterface GroupedChartConfigMeta {\n viewType: \"grouped-chart\";\n metric: MetricAttr;\n groupedMetricKeys: string[];\n counterMetricKey?: string;\n}\n\nfunction getConfigMeta(\n viewType: \"default\" | \"chart\" | \"grouped-chart\",\n viewAttrList: Attr[],\n metricGroups: MetricGroup[],\n item: Attr | GroupedMetric,\n groupMap: Map<number, string[]> | null\n): ConfigMeta {\n if (viewType === \"grouped-chart\") {\n const group = item as GroupedMetric;\n\n const editedMetrics = groupMap?.get(group.id);\n let finalMetrics: MetricAttr[];\n if (editedMetrics) {\n finalMetrics = viewAttrList.filter((attr) =>\n editedMetrics.includes(attr.id)\n ) as MetricAttr[];\n } else {\n finalMetrics = group.metrics;\n }\n\n const attr = finalMetrics[0];\n const groupedMetricKeys = finalMetrics.map((metric) => metric.metricKey);\n\n // Set counter metric only if it matches the original metric groups\n let counterMetric: MetricAttr | undefined;\n if (group.counter && finalMetrics.length === 2) {\n for (const g of metricGroups) {\n if (\n g.metrics.length === 2 &&\n g.counter === group.counter &&\n finalMetrics.every((m) => g.metrics.includes(m.id))\n ) {\n counterMetric = finalMetrics.find(\n (metric) => metric.id === group.counter\n );\n break;\n }\n }\n }\n\n return {\n viewType,\n metric: attr,\n groupedMetricKeys,\n counterMetricKey: counterMetric?.metricKey,\n };\n }\n if (viewType === \"chart\") {\n const attr = item as MetricAttr;\n return {\n viewType,\n metric: attr,\n };\n }\n return { viewType, attr: item as ObjectAttr };\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport type { BrickConf } from \"@next-core/types\";\nimport { safeDump } from \"js-yaml\";\nimport \"@next-core/theme\";\nimport type { VisualConfig } from \"../raw-data-preview/raw-data-interfaces\";\nimport styleText from \"../pre-generated-config/styles.shadow.css\";\nimport previewStyleText from \"../pre-generated-config/preview.shadow.css\";\nimport {\n convertToStoryboard,\n lowLevelConvertToStoryboard,\n} from \"../raw-data-preview/convert\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ObjectAttr {\n id: string;\n name: string;\n enum?: unknown[];\n config?: VisualConfig;\n}\n\nexport interface PreGeneratedConfigPreviewProps {\n previewUrl?: string;\n container?: ContainerType;\n attrList?: ObjectAttr[];\n mockList?: Record<string, unknown>[];\n}\n\nexport type ContainerType = \"table\" | \"descriptions\";\n\n/**\n * 构件 `visual-builder.pre-generated-config-preview`\n */\nexport\n@defineElement(\"visual-builder.pre-generated-config-preview\", {\n styleTexts: [styleText],\n})\nclass PreGeneratedConfigPreview\n extends ReactNextElement\n implements PreGeneratedConfigPreviewProps\n{\n @property()\n accessor previewUrl: string | undefined;\n\n @property()\n accessor container: ContainerType | undefined;\n\n @property({ attribute: false })\n accessor attrList: ObjectAttr[] | undefined;\n\n @property({ attribute: false })\n accessor mockList: Record<string, unknown>[] | undefined;\n\n render() {\n return (\n <PreGeneratedConfigPreviewComponent\n root={this}\n previewUrl={this.previewUrl}\n container={this.container}\n attrList={this.attrList}\n mockList={this.mockList}\n />\n );\n }\n}\n\nexport interface PreGeneratedConfigPreviewComponentProps\n extends PreGeneratedConfigPreviewProps {\n root: HTMLElement;\n}\n\nexport function PreGeneratedConfigPreviewComponent({\n root,\n previewUrl,\n container,\n attrList,\n mockList,\n}: PreGeneratedConfigPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n const iframeWin = iframeRef.current?.contentWindow;\n if (!ready || !iframeWin) {\n return;\n }\n const observer = new ResizeObserver(() => {\n root.style.height = `${iframeWin.document.body.scrollHeight}px`;\n });\n observer.observe(iframeWin.document.body);\n return () => observer.disconnect();\n }, [ready, root]);\n\n useEffect(() => {\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!ready || !render || !attrList) {\n return;\n }\n\n let brickConf: BrickConf;\n\n switch (container) {\n case \"descriptions\":\n brickConf = {\n brick: \"eo-descriptions\",\n errorBoundary: true,\n properties: {\n column: 2,\n list: attrList.map((attr) => {\n const item: Record<string, unknown> = {\n label: attr.name,\n };\n if (attr.config) {\n item.useBrick = convertToStoryboard(attr.config, attr.id);\n }\n return item;\n }),\n dataSource: mockList?.[0],\n },\n };\n break;\n default:\n brickConf = {\n brick: \"eo-next-table\",\n errorBoundary: true,\n properties: {\n rowKey: attrList[0]?.id,\n columns: attrList.map((attr) => {\n const col: Record<string, unknown> = {\n title: attr.name,\n dataIndex: attr.id,\n key: attr.id,\n };\n if (attr.config) {\n col.useBrick = lowLevelConvertToStoryboard(\n attr.config,\n \".cellData\"\n );\n }\n return col;\n }),\n dataSource: {\n list: mockList,\n page: 1,\n pageSize: 20,\n },\n },\n };\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump([brickConf], {\n skipInvalid: true,\n }),\n },\n {\n theme: \"light\",\n uiVersion: \"8.2\",\n styleText: previewStyleText,\n }\n );\n }, [ready, attrList, mockList, container]);\n\n return (\n <div className=\"container\">\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n\nexport interface Metric {\n name: string;\n displayName?: string;\n unit?: string;\n dataType?: \"long\" | \"double\";\n}\n\nexport function generateMetricCandidates(metric: Metric): MetricVisualConfig[] {\n const configList: MetricVisualConfig[] = [];\n for (let i = -1; i < 3; i++) {\n const isPercentBase1 = metric.unit === \"percent(1)\";\n const isPercentBase100 =\n metric.unit === \"percent(100)\" || metric.unit === \"%\";\n\n const size = i <= 0 ? \"small\" : i === 1 ? \"medium\" : \"large\";\n\n if (isPercentBase1 || isPercentBase100 || i >= 0) {\n const chartType = i === -1 ? \"gauge\" : i === 2 ? \"area\" : \"line\";\n\n configList.push({\n visualWeight: i,\n // color: \"orange\",\n chartType,\n size,\n min: 0,\n precision:\n isPercentBase1 || isPercentBase100\n ? 1\n : metric.dataType === \"double\"\n ? 2\n : 0,\n });\n }\n }\n return configList;\n}\n","import { createProviderClass, hasOwnProperty } from \"@next-core/utils/general\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport { isObject } from \"lodash\";\nimport {\n generateMetricCandidates,\n type Metric,\n} from \"../raw-metric-preview/generateMetricCandidates\";\n\nexport interface Data {\n name: string;\n value: unknown;\n}\n\nexport type Config = NormalConfig | UnknownConfig;\n\nexport interface NormalConfig {\n type: ConfigType;\n attrList: Attr[];\n metricGroups: MetricGroup[];\n dataList: unknown[];\n containerOptions?: ContainerOption[];\n}\n\nexport interface UnknownConfig {\n type: \"unknown\";\n error: string;\n}\n\nexport interface Options {\n dataType?: \"context\" | \"state\";\n}\n\nexport type ConfigType =\n | \"list\"\n | \"list-with-pagination\"\n | \"list-with-wrapper\"\n | \"object\"\n | \"unknown\";\n\nexport interface Attr {\n id: string;\n name: string;\n candidates?: unknown[];\n metricKey?: string;\n unit?: string;\n}\n\nexport interface MetricGroup {\n group: string;\n metrics: string[];\n counter?: string;\n}\n\nexport interface ObjectInfo {\n attrList: Attr[];\n metricGroups: MetricGroup[];\n}\n\nexport interface ContainerOption {\n label: string;\n value: string;\n settings?: unknown;\n prefer?: boolean;\n}\n\ninterface ListWithPagination {\n list: DatumWithObjectId[];\n page: number;\n total: number;\n pageSize?: number;\n page_size?: number;\n}\n\ninterface DatumWithObjectId {\n _object_id: string;\n time?: number;\n}\n\ninterface ModelObject {\n attrList: ModelAttr[];\n parentObjectIds?: string[];\n metricGroups?: MetricGroup[];\n}\n\ninterface ModelAttr {\n id: string;\n name: string;\n generatedView?: ModelAttrGeneratedView[];\n}\n\ninterface ModelAttrGeneratedView {\n list?: unknown[];\n}\n\nexport async function getConfigByDataForAi(\n data: Data | undefined | null\n): Promise<Config> {\n if (data?.value == null) {\n return null;\n }\n\n const { value } = data;\n\n let datum: DatumWithObjectId | undefined;\n let type: ConfigType = \"unknown\";\n let dataList: unknown[] = [];\n let fields: Record<string, string> | undefined;\n\n // Detect value type\n if (Array.isArray(value)) {\n // It's a list without pagination\n if (value.length > 0) {\n type = \"list\";\n datum = value[0] as DatumWithObjectId;\n dataList = value;\n }\n } else if (isObject(value)) {\n const listValue = value as ListWithPagination;\n if (hasOwnProperty(listValue, \"list\") && Array.isArray(listValue.list)) {\n // It's a list with pagination\n if (listValue.list.length > 0) {\n type =\n hasOwnProperty(listValue, \"page\") &&\n typeof listValue.page === \"number\" &&\n hasOwnProperty(listValue, \"total\") &&\n typeof listValue.total === \"number\"\n ? \"list-with-pagination\"\n : \"list-with-wrapper\";\n datum = listValue.list[0];\n dataList = listValue.list;\n }\n if (\n type === \"list-with-pagination\" &&\n typeof listValue.page_size === \"number\" &&\n typeof listValue.pageSize !== \"number\"\n ) {\n fields = { pageSize: \"page_size\" };\n }\n } else {\n // It's a single object\n type = \"object\";\n datum = value as DatumWithObjectId;\n dataList = [datum];\n }\n }\n\n const keys = new Set<string>();\n for (const item of dataList) {\n if (isObject(item)) {\n for (const key of Object.keys(item)) {\n keys.add(key);\n }\n } else {\n type = \"unknown\";\n break;\n }\n }\n\n let attrList: Attr[] = [];\n let metricGroups: MetricGroup[] = [];\n\n if (\n type !== \"unknown\" &&\n isObject(datum) &&\n hasOwnProperty(datum, \"_object_id\") &&\n typeof datum._object_id === \"string\"\n ) {\n const objectId = datum._object_id;\n\n const isTimeSeries =\n type !== \"object\" &&\n hasOwnProperty(datum, \"time\") &&\n typeof datum.time === \"number\";\n ({ attrList, metricGroups } = await getMergedObjectInfo(\n objectId,\n keys,\n isTimeSeries\n ));\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"Can not detect objectId with data:\", data);\n\n // Fallback to attributes retrieval by data keys\n attrList = [...keys].map((id) => ({ id, name: id }));\n }\n\n if (attrList.length === 0) {\n type = \"unknown\";\n }\n\n return {\n type,\n attrList,\n metricGroups,\n dataList,\n containerOptions: getAvailableContainersByType(type, fields, attrList),\n };\n}\n\nfunction getAvailableContainersByType(\n type: ConfigType,\n fields: Record<string, string> | undefined,\n attrList: Attr[]\n): ContainerOption[] {\n let result: ContainerOption[] = [];\n\n switch (type) {\n case \"list\":\n result = [\n {\n label: \"表格\",\n value: \"table\",\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n },\n ];\n break;\n case \"list-with-pagination\":\n result = [\n {\n label: \"表格\",\n value: \"table\",\n settings: {\n pagination: true,\n fields,\n },\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n settings: {\n pagination: true,\n fields,\n },\n },\n ];\n break;\n case \"list-with-wrapper\":\n result = [\n {\n label: \"属性详情\",\n value: \"descriptions\",\n },\n {\n label: \"表格\",\n value: \"table\",\n settings: {\n wrapper: true,\n fields,\n },\n },\n {\n label: \"卡片列表\",\n value: \"cards\",\n settings: {\n wrapper: true,\n },\n },\n ];\n break;\n case \"object\":\n return [\n {\n label: \"属性详情\",\n value: \"descriptions\",\n },\n ];\n default:\n return [];\n }\n\n // Count metrics and non-metrics, prefer to show chart first\n // if there are more metrics than non-metrics\n let metricCount = 0;\n let nonMetricCount = 0;\n for (const attr of attrList) {\n if (attr.metricKey) {\n metricCount++;\n } else {\n nonMetricCount++;\n }\n }\n const settings =\n type === \"list-with-pagination\"\n ? { pagination: true }\n : type === \"list-with-wrapper\"\n ? { wrapper: true }\n : undefined;\n if (metricCount > 0) {\n result.push({\n label: \"图表\",\n value: \"chart\",\n settings,\n prefer: metricCount > nonMetricCount && metricCount < 6,\n });\n }\n if (metricCount > 1) {\n result.push({\n label: \"组合图表\",\n value: \"grouped-chart\",\n settings,\n prefer: metricCount > nonMetricCount && metricCount >= 6,\n });\n }\n return result;\n}\n\nasync function getMergedObjectInfo(\n objectIdWithNamespace: string,\n keys: Set<string>,\n isTimeSeries: boolean\n): Promise<ObjectInfo> {\n const attrList: Attr[] = [];\n const metricGroups: MetricGroup[] = [];\n\n const [objectId, namespace] = objectIdWithNamespace.split(\"@\");\n\n const { list } = (await InstanceApi_postSearchV3(\"MODEL_OBJECT\", {\n fields: [\n \"name\",\n \"objectId\",\n \"attrList.id\",\n \"attrList.name\",\n \"attrList.generatedView.list\",\n \"parentObjectIds\",\n \"metricGroups\",\n ],\n query: {\n objectId,\n ignore: { $ne: true },\n ...(namespace\n ? { \"space.name\": namespace }\n : { space: { $exists: false } }),\n },\n page: 1,\n })) as { list: ModelObject[] };\n\n if (list.length === 0) {\n // eslint-disable-next-line no-console\n console.warn(\"Can not find object by objectId:\", objectIdWithNamespace);\n } else {\n const { attrList: attrs, parentObjectIds, metricGroups: groups } = list[0];\n\n if (parentObjectIds?.length) {\n const parents = await Promise.all(\n parentObjectIds.map((parentId) =>\n getMergedObjectInfo(parentId, keys, isTimeSeries)\n )\n );\n\n for (const parent of parents) {\n attrList.push(...parent.attrList);\n metricGroups.push(...parent.metricGroups);\n }\n }\n\n attrList.push(\n ...attrs\n .map<Attr>((attr) =>\n keys.has(attr.id)\n ? {\n id: attr.id,\n name: attr.name,\n candidates: attr.generatedView?.[0]?.list,\n }\n : null\n )\n .filter(Boolean)\n );\n if (groups?.length) {\n metricGroups.push(...groups);\n }\n\n if (isTimeSeries) {\n const { list: metrics } = (await InstanceApi_postSearchV3(\n \"_COLLECTOR_ALIAS_METRIC\",\n {\n fields: [\"name\", \"displayName\", \"unit\", \"dataType\"],\n page_size: 3000,\n query: {\n dataType: {\n $ne: \"string\",\n },\n objectId: objectIdWithNamespace,\n },\n sort: [\n {\n key: \"name\",\n order: 1,\n },\n ],\n }\n )) as { list: Metric[] };\n\n attrList.push(\n ...metrics\n .map<Attr>((metric) => {\n const hasMetricName =\n metric.displayName && keys.has(metric.displayName);\n return hasMetricName || keys.has(metric.name)\n ? {\n id: metric.name,\n name: metric.displayName,\n metricKey: hasMetricName ? metric.displayName : metric.name,\n unit: metric.unit,\n candidates: generateMetricCandidates(metric),\n }\n : null;\n })\n .filter(Boolean)\n );\n }\n }\n\n return { attrList, metricGroups };\n}\n\ncustomElements.define(\n \"visual-builder.get-config-by-data-for-ai\",\n createProviderClass(getConfigByDataForAi)\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type { BrickConf, ContextConf, MicroApp } from \"@next-core/types\";\nimport classNames from \"classnames\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport type { PreviewWindow } from \"@next-core/preview/types\";\nimport { JSON_SCHEMA, safeDump } from \"js-yaml\";\nimport { __compat_internals } from \"../shared/compat_internals\";\nimport type { MetricVisualConfig } from \"./raw-metric-interfaces\";\n// import { convertToStoryboard } from \"./convert\";\nimport styleText from \"./styles.shadow.css\";\nimport sharedPreviewStyleText from \"../raw-data-preview/preview.shadow.css\";\nimport previewStyleText from \"./preview.shadow.css\";\nimport { convertToChart } from \"./convert\";\nimport {\n generateMetricCandidates,\n type Metric,\n} from \"./generateMetricCandidates\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface RawMetricPreviewProps {\n previewUrl?: string;\n generations?: MetricGeneration[];\n grouped?: boolean;\n // mocks?: Record<string, unknown>;\n busy?: boolean;\n theme?: string;\n uiVersion?: string;\n app?: MicroApp;\n}\n\nexport interface MetricGeneration {\n generationId?: string;\n objectId: string;\n objectName: string;\n propertyId: string;\n propertyName?: string;\n propertyUnit: string;\n propertyDataType: \"long\" | \"double\";\n propertyInstanceId?: string;\n comment?: string;\n approved?: boolean;\n candidates: MetricVisualConfig[] | null;\n mockData: unknown[];\n groupIndex?: number;\n group?: string;\n counter?: string;\n}\n\nexport interface CommentDetail {\n comment: string;\n propertyInstanceId?: string;\n}\n\nexport interface ApproveDetail {\n approved: boolean;\n propertyInstanceId?: string;\n}\n\ninterface BasePreviewMessage {\n channel: \"raw-metric-preview\";\n}\n\ninterface CommentMessage extends BasePreviewMessage {\n type: \"comment\";\n payload: CommentDetail;\n}\n\ninterface ApproveMessage extends BasePreviewMessage {\n type: \"approve\";\n payload: ApproveDetail;\n}\n\ninterface ResizeMessage extends BasePreviewMessage {\n type: \"resize\";\n payload: {\n width: number;\n height: number;\n };\n}\n\ntype PreviewMessage = CommentMessage | ApproveMessage | ResizeMessage;\n\n/**\n * 构件 `visual-builder.raw-metric-preview`\n *\n * @internal\n */\nexport\n@defineElement(\"visual-builder.raw-metric-preview\", {\n styleTexts: [styleText],\n})\nclass RawMetricPreview extends ReactNextElement {\n @property()\n accessor previewUrl: string | undefined;\n\n @property({ attribute: false })\n accessor generations: MetricGeneration[] | undefined;\n\n @property({ type: Boolean })\n accessor grouped: boolean | undefined;\n\n // @property({ attribute: false })\n // accessor mocks: Record<string, unknown> | undefined;\n\n @property({ type: Boolean })\n accessor busy: boolean | undefined;\n\n @property()\n accessor theme: string | undefined;\n\n @property()\n accessor uiVersion: string | undefined;\n\n @property()\n accessor app: MicroApp | undefined;\n\n render() {\n return (\n <RawMetricPreviewComponent\n root={this}\n previewUrl={this.previewUrl}\n generations={this.generations}\n grouped={this.grouped}\n // mocks={this.mocks}\n busy={this.busy}\n theme={this.theme}\n uiVersion={this.uiVersion}\n app={this.app}\n />\n );\n }\n}\n\nexport interface RawMetricPreviewComponentProps extends RawMetricPreviewProps {\n root: HTMLElement;\n}\n\nexport function RawMetricPreviewComponent({\n root,\n previewUrl,\n generations,\n grouped,\n // mocks,\n busy,\n theme,\n uiVersion,\n app,\n}: RawMetricPreviewComponentProps) {\n const iframeRef = useRef<HTMLIFrameElement>();\n const [ready, setReady] = useState(false);\n const [injected, setInjected] = useState(false);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const iframeWin = iframeRef.current?.contentWindow as PreviewWindow;\n if (iframeWin?._preview_only_render) {\n setReady(true);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n iframeWin.postMessage(\n {\n channel: \"raw-metric-preview\",\n type: \"busy\",\n payload: busy,\n },\n location.origin\n );\n }\n }, [busy, ready]);\n\n useEffect(() => {\n if (ready) {\n const iframeWin = iframeRef.current!.contentWindow as PreviewWindow;\n const onMessage = ({ data }: MessageEvent<PreviewMessage>) => {\n if (data?.channel === \"raw-metric-preview\") {\n switch (data.type) {\n case \"resize\":\n root.style.height = `${data.payload.height + 2}px`;\n break;\n }\n }\n };\n iframeWin.addEventListener(\"message\", onMessage);\n return () => {\n iframeWin.removeEventListener(\"message\", onMessage);\n };\n }\n }, [ready, root]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n const pkg = __compat_internals.getBrickPackagesById(\n \"bricks/visual-builder\"\n );\n if (!pkg) {\n throw new Error(\n \"Cannot find preview agent package: bricks/visual-builder\"\n );\n }\n const inject = (iframeRef.current!.contentWindow as PreviewWindow)!\n ._preview_only_inject;\n\n const fixedPkg = {\n ...pkg,\n filePath: previewUrl\n ? new URL(pkg.filePath, new URL(previewUrl, location.origin)).toString()\n : `${location.origin}${getBasePath()}${\n window.PUBLIC_ROOT ?? \"\"\n }${pkg.filePath}`,\n };\n\n Promise.allSettled(\n [\n \"visual-builder.pre-generated-table-view\",\n \"visual-builder.pre-generated-container\",\n ].map((brick) => inject(brick, fixedPkg, undefined, true))\n ).then(() => {\n setInjected(true);\n });\n }, [previewUrl, ready]);\n\n useEffect(() => {\n if (!injected) {\n return;\n }\n const render = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_render;\n if (!render) {\n return;\n }\n\n const tableChildren: BrickConf[] = [\n ...(grouped\n ? [\n {\n brick: \"div\",\n properties: {\n textContent: \"分组\",\n className: \"head-cell\",\n },\n },\n ]\n : []),\n {\n brick: \"div\",\n properties: {\n textContent: \"指标\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"别名\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: \"head-cell\",\n },\n },\n {\n brick: \"div\",\n properties: {\n textContent: \"视觉重量 (由低至高)\",\n className: \"head-cell\",\n style: {\n gridColumn: \"span 4\",\n textAlign: \"center\",\n },\n },\n },\n ];\n const table: BrickConf & { context?: ContextConf[] } = {\n brick: \"visual-builder.pre-generated-table-view\",\n context: [\n {\n name: \"busy\",\n },\n ],\n properties: {\n style: {\n gridTemplateColumns: `${grouped ? \"minmax(129px, 0.5fr) \" : \"\"}minmax(120px, 0.8fr) minmax(120px, 0.5fr) 32px repeat(2, 0.6fr) repeat(2, 1fr)`,\n },\n },\n children: tableChildren,\n };\n\n const handledGroupIndexes = new Set<number>();\n\n const groupMap = new Map<number, MetricGeneration[]>();\n for (const generation of generations) {\n const index = generation.groupIndex;\n if (index != null) {\n const metrics = groupMap.get(index) ?? [];\n groupMap.set(index, metrics.concat(generation));\n }\n }\n\n for (let i = 0, size = generations.length; i < size; i++) {\n const generation = generations[i];\n const isLastRow = i === size - 1;\n let isLastGroupedRow = false;\n\n // const candidatesByVisualWeight = new Map<number, VisualConfig>();\n // for (const candidate of generation.candidates ?? []) {\n // candidatesByVisualWeight.set(candidate.visualWeight ?? 0, candidate);\n // }\n\n let groupedMetrics: MetricGeneration[] | undefined;\n let isMergedRow = false;\n if (grouped) {\n const { groupIndex } = generation;\n if (groupIndex == null) {\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: \"\",\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n });\n } else if (!handledGroupIndexes.has(groupIndex)) {\n handledGroupIndexes.add(groupIndex);\n groupedMetrics = groupMap.get(groupIndex)!;\n const groupCount = groupedMetrics.length;\n isLastGroupedRow = i + groupCount - 1 === size - 1;\n tableChildren.push({\n brick: \"div\",\n properties: {\n textContent: generation.group,\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastGroupedRow,\n }),\n style: {\n gridRow: `span ${groupCount}`,\n },\n },\n });\n } else {\n isMergedRow = true;\n }\n }\n\n tableChildren.push(\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyId}`,\n },\n },\n ],\n },\n {\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children: [\n {\n brick: \"span\",\n properties: {\n textContent: `${generation.propertyName || \"\"}`,\n },\n },\n ],\n },\n {\n // 绿色圆点表示已生成\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow,\n }),\n },\n children:\n generation.candidates?.length || generation.mockData\n ? [\n {\n brick: \"eo-icon\",\n properties: {\n lib: \"fa\",\n prefix: generation.candidates?.length ? \"fas\" : \"far\",\n icon: \"circle\",\n style: {\n color:\n generation.generationId &&\n generation.candidates?.length\n ? \"var(--palette-green-6)\"\n : \"var(--palette-gray-6)\",\n transformOrigin: \"center center\",\n transform: \"scale(0.5)\",\n },\n },\n },\n ]\n : undefined,\n }\n );\n\n const metricKey = generation.propertyName || generation.propertyId;\n\n const rawMetricData: Metric = {\n name: generation.propertyId,\n displayName: generation.propertyName,\n unit: generation.propertyUnit,\n dataType: generation.propertyDataType,\n };\n const candidates = generateMetricCandidates(rawMetricData);\n\n // 生成的编排\n for (let i = -1; i < 3; i++) {\n const candidate = candidates.find((item) => item.visualWeight === i);\n\n // let brick: BrickConf;\n // if (candidate) {\n // brick = convertToStoryboard(candidate, generation.propertyId);\n // }\n\n const isPercentBase1 = generation.propertyUnit === \"percent(1)\";\n const isPercentBase100 =\n generation.propertyUnit === \"percent(100)\" ||\n generation.propertyUnit === \"%\";\n\n let brick: BrickConf | undefined;\n const size = i <= 0 ? \"small\" : i === 1 ? \"medium\" : \"large\";\n const isMergedCell = size !== \"small\" && isMergedRow;\n const counterMetric = generation.counter\n ? groupedMetrics?.find((gen) => gen.propertyId === generation.counter)\n : undefined;\n const counterMetricKey =\n counterMetric?.propertyName || counterMetric?.propertyId;\n if (isMergedCell) {\n continue;\n }\n\n const isGroupedCell = size !== \"small\" && groupedMetrics;\n if (\n generation.mockData &&\n (isPercentBase1 || isPercentBase100 || i >= 0)\n ) {\n // const chartType = i === -1 ? \"gauge\" : i === 2 ? \"area\" : \"line\";\n\n brick = convertToChart(\n {\n ...candidate,\n // visualWeight: i,\n // color: \"orange\",\n // chartType,\n // size,\n min: counterMetricKey ? undefined : candidate.min,\n // precision:\n // isPercentBase1 || isPercentBase100\n // ? 1\n // : generation.propertyDataType === \"double\"\n // ? 2\n // : 0,\n },\n \"<% DATA %>\",\n metricKey,\n {\n unit: generation.propertyUnit,\n },\n groupedMetrics?.map((gen) => gen.propertyName || gen.propertyId),\n counterMetricKey\n );\n }\n\n tableChildren.push({\n brick: \"div\",\n properties: {\n className: classNames(\"body-cell\", {\n \"last-row-cell\": isLastRow || isLastGroupedRow,\n \"large-chart-cell\": size !== \"small\",\n }),\n style: {\n justifyContent: \"center\",\n ...(isGroupedCell\n ? { gridRow: `span ${groupedMetrics.length}` }\n : null),\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n className: \"list\",\n },\n children: brick\n ? [\n {\n brick: \"visual-builder.pre-generated-container\",\n properties: {\n useBrick: [brick],\n dataSource: generation.mockData.map((value, index) => ({\n time:\n Math.round(+new Date() / 1000) -\n 86400 +\n index * 300,\n ...(isGroupedCell\n ? Object.fromEntries(\n groupedMetrics.map((gen) => [\n gen.propertyName || gen.propertyId,\n gen.mockData?.[index],\n ])\n )\n : { [metricKey]: value }),\n })),\n },\n errorBoundary: true,\n },\n ]\n : undefined,\n },\n ],\n });\n }\n }\n\n render(\n \"yaml\",\n {\n yaml: safeDump(\n [\n {\n brick: \"sl-resize-observer\",\n children: [table],\n events: {\n \"sl-resize\": {\n action: \"window.postMessage\",\n args: [\n {\n channel: \"raw-metric-preview\",\n type: \"resize\",\n payload: `<%\n EVENT.detail.entries[0].borderBoxSize\n ? { width: EVENT.detail.entries[0].borderBoxSize[0].inlineSize, height: EVENT.detail.entries[0].borderBoxSize[0].blockSize }\n : { width: EVENT.detail.entries[0].contentRect.width, height: EVENT.detail.entries[0].contentRect.height }\n %>`,\n },\n ],\n },\n },\n },\n {\n brick: \"eo-message-listener\",\n properties: {\n sameOrigin: true,\n },\n events: {\n message: {\n if: \"<% EVENT.detail.data?.channel === 'raw-metric-preview' && EVENT.detail.data.type === 'busy' %>\",\n action: \"context.replace\",\n args: [\"busy\", \"<% EVENT.detail.data.payload %>\"],\n },\n },\n portal: true,\n errorBoundary: true,\n },\n ],\n {\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }\n ),\n },\n {\n app,\n theme,\n uiVersion,\n styleText: [sharedPreviewStyleText, previewStyleText].join(\"\\n\"),\n }\n );\n }, [app, injected, generations, theme, uiVersion, grouped]);\n\n return (\n <div className={classNames(\"container\")}>\n <iframe\n ref={iframeRef}\n src={previewUrl ?? `${getBasePath()}_brick-preview-v3_/preview/`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport {\n traverseStoryboardExpressions,\n collectAppGetMenuUsage,\n beforeVisitGlobalMember,\n collectMemberUsageInFunction,\n type MemberCallUsage,\n type MemberUsage,\n} from \"@next-core/utils/storyboard\";\n\ninterface UsageStatistics {\n functions: string[];\n menus: string[];\n}\n\ninterface FunctionItem {\n name: string;\n source: string;\n}\n\ninterface Option {\n includesFnDeps?: boolean;\n fnList?: FunctionItem[];\n}\n\nexport async function getUsageMemberStatistics(\n storyboardData: unknown,\n options?: Option\n): Promise<UsageStatistics> {\n const { includesFnDeps = false, fnList } = options || {};\n const fnUsage: MemberUsage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n const collectFnUsage = beforeVisitGlobalMember(fnUsage, \"FN\");\n\n traverseStoryboardExpressions(\n storyboardData,\n (node, parent) => {\n // Collect FN calls using the complete logic of beforeVisitGlobalMember\n collectFnUsage(node, parent);\n\n // Collect APP.getMenu calls\n collectAppGetMenuUsage(menuUsage, node, parent);\n },\n {\n // Match expressions containing FN or APP.getMenu to avoid parsing irrelevant expressions\n matchExpressionString: (v: string) =>\n v.includes(\"FN\") || v.includes(\"APP.getMenu\"),\n }\n );\n\n // Build the final function list (including dependency functions)\n const allFunctions = new Set(fnUsage.usedProperties);\n\n if (includesFnDeps) {\n const matchedFnList = fnList.filter((fn) =>\n fnUsage.usedProperties.has(fn.name)\n );\n\n for (const fn of matchedFnList) {\n const deps = collectMemberUsageInFunction(fn, \"FN\", true);\n\n Array.from(deps)\n .filter((dep) => dep !== fn.name)\n .forEach((dep) => allFunctions.add(dep));\n }\n }\n\n return {\n functions: Array.from(allFunctions),\n menus: Array.from(menuUsage.usedArgs),\n };\n}\n\ncustomElements.define(\n \"visual-builder.get-usage-member-statistics\",\n createProviderClass(getUsageMemberStatistics)\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative;box-shadow:rgba(204,204,204,0.2) 0px 0px 0px 1px}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.outline{position:absolute;border-style:solid;border-width:2px;border-radius:0 4px 4px;pointer-events:none}.label{position:absolute;left:-2px;top:-20px;height:18px;line-height:16px;padding:2px 5px 0;font-size:12px;border-radius:4px 4px 0 0;white-space:nowrap}.outline.hover{border-color:rgba(var(--palette-blue-6-channel),0.3)}.outline.hover .label{background:rgba(var(--palette-blue-6-channel),0.3)}.outline.active{border-color:var(--palette-blue-6)}.outline.active .label{background:var(--palette-blue-6)}.container:not(.inspecting) .outline{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n useEffect,\n useImperativeHandle,\n useMemo,\n createRef,\n useState,\n useCallback,\n useRef,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n createForm,\n Form,\n onFieldValueChange,\n onFieldInit,\n onFieldInitialValueChange,\n onFormInitialValuesChange,\n onFormValidateSuccess,\n onFormValuesChange,\n createEffectHook,\n} from \"@formily/core\";\nimport { createSchemaField, FormProvider } from \"@formily/react\";\nimport { ConfigProvider, theme } from \"antd\";\nimport { StyleProvider, createCache } from \"@ant-design/cssinjs\";\nimport {\n FormCollapse,\n FormItem,\n FormLayout,\n Input,\n NumberPicker,\n Radio,\n Select,\n Switch,\n} from \"@formily/antd-v5\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\nimport {\n EditorComponentProps,\n DataItem,\n SelectOptions,\n} from \"@next-shared/property-editor\";\nimport { CategoryTitle } from \"./components/CategoryTitle\";\nimport { AdvancedFormItem } from \"./components/AdvancedFormItem\";\nimport { CodeEditorComponent } from \"./components/common/CodeEditorComponent\";\nimport { IconSelectComponent } from \"./components/common/IconSelectComponent\";\nimport { ColorPickerComponent } from \"./components/common/ColorPickerComponent\";\nimport { InputWithUrlComponent } from \"./components/common/InputWithUrlComponent\";\nimport { TextAlignRadioComponent } from \"./components/common/TextAlignRadioComponent\";\nimport { InputWithUnitComponent } from \"./components/common/InputWithUnitComponent\";\nimport { UseChildrenSelectComponent } from \"./components/common/UseChildrenSelectComponent\";\nimport { BoxSizeComponent } from \"./components/common/BoxSizeComponent\";\nimport { CustomOptionsComponent } from \"./components/common/CustomOptionsComponent\";\nimport { CustomTab } from \"./components/common/CustomTab\";\nimport { __secret_internals, customEditors } from \"@next-core/runtime\";\nimport {\n ADVANCED_FORM_KEY,\n DataNode,\n formilySchemaFormatter,\n} from \"./utils/formilySchemaFormatter\";\nimport \"./style.css\";\nimport _, { isEmpty, omit } from \"lodash\";\nimport { BrickPackage } from \"@next-core/types\";\nimport { NORMAL_FORM_KEY } from \"./utils/formilySchemaFormatter\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst PropertyEditorComponent = React.forwardRef(LegacyPropertyEditor);\n\nexport const BEFORE_SUBMIT_KEY = \"before_submit\";\nexport const ADVANCED_CHANGE_KEY = \"on_advanced_change\";\n\nexport const SchemaField = createSchemaField({\n components: {\n FormLayout,\n Input,\n FormItem: AdvancedFormItem,\n FormItemWithoutAdvanced: FormItem,\n FormCollapse,\n NumberPicker,\n Radio,\n Select,\n Switch,\n CategoryTitle,\n CodeEditor: CodeEditorComponent,\n IconSelect: IconSelectComponent,\n ColorPicker: ColorPickerComponent,\n UseChildrenSelect: UseChildrenSelectComponent,\n InputWithUrl: InputWithUrlComponent,\n InputWithUnit: InputWithUnitComponent,\n TextAlignRadio: TextAlignRadioComponent,\n CustomOptions: CustomOptionsComponent,\n BoxSize: BoxSizeComponent,\n CustomTab,\n },\n});\n\nexport type { DataNode };\n\nlet cacheCustomEditor: Function;\n\n/**\n * 构件 `visual-builder.property-editor`\n */\nexport\n@defineElement(\"visual-builder.property-editor\", {\n // styleTexts: [styleText],\n // 因为有使用 vs.code-editor,需要把 shadowOptions 设置成 false\n shadowOptions: false,\n dependencies: [\"eo-icon-select\", \"vs.code-editor\", \"eo-tooltip\"],\n})\nclass PropertyEditor extends ReactNextElement {\n #formRef = createRef<any>();\n\n /** 构件名称 */\n @property()\n accessor editorName: string | undefined;\n\n /** 值 */\n @property({\n attribute: false,\n })\n accessor values: any | undefined;\n\n /** 高级模式 */\n @property({\n type: Boolean,\n })\n accessor advancedMode: boolean | undefined;\n\n @property({\n attribute: false,\n })\n accessor dataList: DataItem[];\n\n @property({\n attribute: false,\n })\n accessor editorPackages: BrickPackage[];\n\n @property({\n attribute: false,\n })\n accessor links: any;\n\n @property({\n attribute: false,\n })\n accessor extraLibs: SelectOptions;\n\n @property({\n attribute: false,\n })\n accessor childSlots: SelectOptions;\n\n /**\n * 表单验证成功时触发事件\n */\n @event({ type: \"validate.success\" }) accessor #successEvent!: EventEmitter<\n Record<string, unknown>\n >;\n /**\n * 表单验证报错时触发事件\n */\n @event({ type: \"validate.error\" }) accessor #errorEvent!: EventEmitter<any[]>;\n\n @method()\n validate() {\n const form: Form = this.#formRef.current?.getFormInstance();\n this.#submitValue = null;\n\n form\n .validate()\n .then(() => {\n if (this.advancedMode) {\n // 高级模式直接输出 form.values[ADVANCED_FORM_KEY]\n this.#successEvent.emit(form.values[ADVANCED_FORM_KEY]);\n } else {\n const value = _.omit(form.values, [ADVANCED_FORM_KEY]);\n form.notify(BEFORE_SUBMIT_KEY, value);\n this.#successEvent.emit(this.#submitValue ?? value);\n }\n })\n .catch((err: any[]) => {\n this.#errorEvent.emit(err);\n });\n }\n\n @event({ type: \"values.change\" })\n accessor #valuesChangeEvent!: EventEmitter<any>;\n\n #handleValuesChange = (value: any) => {\n this.#valuesChangeEvent.emit(value);\n };\n\n @event({ type: \"token.click\" })\n accessor #tokenClick!: EventEmitter<string>;\n\n #handleTokenClick = (value: string): void => {\n this.#tokenClick.emit(value);\n };\n\n #submitValue: any;\n\n #onSubmitEffect = createEffectHook(\n BEFORE_SUBMIT_KEY,\n (values, form) => (listener) => {\n this.#submitValue = listener(values, form);\n }\n );\n\n @event({ type: \"trigger.action\" })\n accessor #triggerActionEvent!: EventEmitter<string>;\n\n #handleTriggerAction = (action: string) => {\n this.#triggerActionEvent.emit(action);\n };\n\n #filterData = (data?: Record<string, any> | string) => {\n const transformData =\n typeof data === \"string\" && data === \"undefined\"\n ? undefined\n : omit(data as any, [\"dataset.testid\"]);\n const shouldFilterFields = [];\n isEmpty(transformData?.dataset) && shouldFilterFields.push(\"dataset\");\n isEmpty(transformData?.style) && shouldFilterFields.push(\"style\");\n\n const filterData = omit(transformData, shouldFilterFields);\n if (isEmpty(filterData)) {\n return undefined;\n }\n return filterData;\n };\n\n render() {\n return (\n <PropertyEditorComponent\n ref={this.#formRef}\n editorName={this.editorName}\n values={this.#filterData(this.values)}\n advancedMode={this.advancedMode}\n dataList={this.dataList}\n extraLibs={this.extraLibs}\n links={this.links}\n childSlots={this.childSlots}\n editorPackages={this.editorPackages}\n handleValuesChange={this.#handleValuesChange}\n handleTokenClick={this.#handleTokenClick}\n handleTriggerAction={this.#handleTriggerAction}\n onSubmitEffect={this.#onSubmitEffect}\n />\n );\n }\n}\n\nexport interface PropertyEditorProps {\n values: any;\n editorName: string;\n advancedMode?: boolean;\n childSlots?: SelectOptions;\n extraLibs: SelectOptions;\n dataList: DataItem[];\n links: any;\n editorPackages: BrickPackage[];\n handleValuesChange: (value: any) => void;\n handleTokenClick: (token: string) => void;\n handleTriggerAction: (action: string) => void;\n onSubmitEffect: (listener: (value: any, form: Form) => any) => void;\n}\n\nexport function LegacyPropertyEditor(\n {\n advancedMode,\n values,\n editorName,\n dataList,\n editorPackages,\n extraLibs,\n childSlots,\n links,\n handleValuesChange,\n handleTokenClick,\n handleTriggerAction,\n onSubmitEffect,\n }: PropertyEditorProps,\n ref: any\n) {\n const [Editor, setEditor] = useState<\n (props: EditorComponentProps<typeof SchemaField>) => React.ReactElement\n >(cacheCustomEditor as any);\n const currentTheme = useCurrentTheme();\n const cache = useMemo(() => createCache(), []);\n // should update form instance when Editor change\n const form = useMemo(() => createForm(), [Editor]);\n const transformValueRef = useRef<any>(null);\n const advancedChangeRef = useRef<boolean>(false);\n\n const onAdvancedChangeEffect = useMemo(\n () =>\n createEffectHook(\n ADVANCED_CHANGE_KEY,\n (advancedMode, form) => (listener) => {\n const values =\n !advancedMode && form.values[ADVANCED_FORM_KEY]\n ? form.values[ADVANCED_FORM_KEY]\n : form.values;\n transformValueRef.current = listener(advancedMode, form, values);\n }\n ),\n []\n );\n\n useImperativeHandle(ref, () => ({\n getFormInstance: () => form,\n }));\n\n const load = useCallback(async () => {\n // TODO: cache editors\n if (customEditors.get(editorName)) {\n setEditor(() => customEditors.get(editorName)?.(React) as any);\n return;\n }\n await __secret_internals.loadEditors([editorName], editorPackages);\n cacheCustomEditor = () => customEditors.get(editorName)?.(React);\n setEditor(cacheCustomEditor as any);\n }, [editorName, editorPackages]);\n\n const defaultTransform = useCallback((values: any, advancedMode: boolean) => {\n if (advancedMode) {\n const filterValue = _.omit(values, [ADVANCED_FORM_KEY]);\n return {\n [ADVANCED_FORM_KEY]: _.isEmpty(filterValue) ? \"\" : filterValue,\n };\n }\n return values[ADVANCED_FORM_KEY] ?? values;\n }, []);\n\n useEffect(() => {\n load();\n }, [load]);\n\n useEffect(() => {\n if (Editor) {\n form.setInitialValues(values, \"overwrite\");\n }\n }, [Editor, form]);\n\n useEffect(() => {\n advancedChangeRef.current = true;\n transformValueRef.current = null;\n\n form.notify(ADVANCED_CHANGE_KEY, advancedMode);\n\n form.query(NORMAL_FORM_KEY).take((field) => {\n field.display = !advancedMode ? \"visible\" : \"hidden\";\n });\n form.query(ADVANCED_FORM_KEY).take((field) => {\n field.display = advancedMode ? \"visible\" : \"hidden\";\n });\n\n const formValues = form.getState().values;\n const formData = defaultTransform(\n transformValueRef.current ?? formValues,\n advancedMode\n );\n\n form.setValues(formData, \"overwrite\");\n advancedChangeRef.current = false;\n }, [advancedMode, form, defaultTransform, Editor]);\n\n useEffect(() => {\n form.addEffects(\"onValueChange\", () => {\n onFormValuesChange((form) => {\n if (advancedChangeRef.current) return;\n handleValuesChange(form.values);\n });\n });\n }, [form, handleValuesChange]);\n\n if (!Editor) return null;\n\n return (\n <div className=\"property-form-wrapper\">\n <ConfigProvider\n prefixCls=\"antdV5\"\n theme={{\n algorithm:\n currentTheme === \"dark-v2\"\n ? theme.darkAlgorithm\n : theme.defaultAlgorithm,\n components: {\n // Form: {\n // not work\n // itemMarginBottom: 10,\n // }\n InputNumber: {\n handleVisible: true,\n },\n },\n }}\n getPopupContainer={(trigger) => trigger!}\n >\n <StyleProvider cache={cache}>\n <FormProvider form={form}>\n <Editor\n advancedMode={advancedMode}\n SchemaFieldComponent={SchemaField}\n form={form}\n scope={{\n dataList,\n advancedMode,\n childSlots,\n extraLibs,\n links,\n tokenClick: (event: CustomEvent<string>) =>\n handleTokenClick(event.detail),\n triggerAction: handleTriggerAction,\n }}\n effects={{\n onFieldInit,\n onFieldValueChange,\n onFieldInitialValueChange,\n onFormInitialValuesChange,\n onFormValidateSuccess,\n onFormValuesChange,\n onSubmit: onSubmitEffect,\n onAdvancedChange: onAdvancedChangeEffect,\n }}\n formilySchemaFormatter={formilySchemaFormatter}\n />\n </FormProvider>\n </StyleProvider>\n </ConfigProvider>\n </div>\n );\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.message{display:flex;gap:8px}.main{flex:1;min-width:0}.label{font-weight:bold;line-height:28px}.message:not(:last-child){margin-bottom:2em}.invisible-dots{opacity:0}.failed .content{color:var(--color-error)}.command:not(:first-child){margin-top:1em}.command:not(:last-child){margin-bottom:1em}pre{white-space:pre-wrap;background-color:var(--palette-gray-3);border-radius:6px;padding:1em}.markdown > :first-child{margin-top:0}.markdown > :last-child{margin-bottom:0}.avatar{align-self:flex-start;display:flex;align-items:center;justify-content:center}.texting::after{content:\" \";animation:texting 2s infinite;white-space:pre}@keyframes texting{0%{content:\" \"}25%{content:\". \"}50%{content:\".. \"}75%{content:\"...\"}100%{content:\" \"}}pre[class*=\"language-\"]{overflow:visible}pre[class*=\"language-\"],\ncode[class*=\"language-\"]{white-space:pre-wrap}eo-avatar.role-assistant::part(avatar-icon){background-color:var(--palette-blue-5)}.content{word-wrap:break-word}.plain{white-space:pre-wrap}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:inline-block}:host([hidden]){display:none}eo-popover::part(popup){width:800px;max-width:60vw;padding:10px;background:var(--color-fill-bg-container-4);border-radius:var(--medius-border-radius);box-shadow:var(--feedback-container-shadow);z-index:1000}.history-title{font-size:var(--title-font-size);font-weight:var(--font-weight-500);color:var(--color-strong-text);margin-bottom:5px}.history-list{max-height:500px;overflow-y:auto}.item-container{padding:10px 0;display:flex;flex-direction:column;gap:5px}.empty{padding:5px 0 10px 0;font-size:14px;color:var(--text-color-secondary);text-align:center}.item-container:not(:last-of-type){border-bottom:1px solid var(--color-border-divider-line)}.item-title{display:flex;align-items:center;justify-content:space-between;gap:5px}.title-left,\n.title-right{display:flex;align-items:center}.title-left{cursor:pointer;overflow:hidden;gap:5px}.topic{font-size:14px;color:var(--text-color-title);font-weight:var(--font-weight-500);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.branch{font-size:14px;color:var(--text-color-secondary)}.rollback{margin-right:5px;font-size:14px;color:var(--text-color-secondary);cursor:pointer}.rollback:hover{color:var(--color-brand)}.item-info{display:flex;align-items:center;gap:5px}.time,\n.operator{font-size:14px;color:var(--text-color-secondary)}.load-more-container{display:block;text-align:center}.end-container{display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;color:var(--color-brand)}.rollback-all{cursor:pointer}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `#preview-root{padding:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{--sidebar-background:#fff;--title-container-background:#fff;--title-container-color:#595959;display:block;outline-color:rgba(83,89,93,0.5);background-color:var(--sidebar-background);height:100%}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--sidebar-background:#181818;--title-container-background:#181818;--title-container-color:rgb(187,187,187);background-color:var(--sidebar-background)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar{display:flex;flex-direction:column;height:100%}.title-container{display:flex;padding:0 8px 8px 8px;color:var(--title-container-color);background:var(--title-container-background)}.title-label{font-weight:300;line-height:44px;padding-left:12px;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pane-container{flex-grow:1;min-height:0;display:flex;flex-direction:column}::slotted([slot=\"panes\"]){transition:flex 0.2s;min-height:25px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}.container{position:relative}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `body{background-color:transparent}#preview-root{padding:0;height:auto;max-height:100vh;overflow-y:auto;border:1px solid var(--theme-gray-border-color);border-radius:4px;background:var(--body-background)}.head-cell{position:sticky;top:0;z-index:1;font-weight:bold;align-content:center}.head-cell,\n.body-cell{background:var(--body-background)}.body-cell{display:flex;align-items:center;justify-content:space-between}.last-col-cell{border-right-color:transparent}.last-row-cell{border-bottom-color:transparent}.form-container > ::part(message){display:none}.list{display:flex;flex-direction:column;gap:8px;width:100%}.raw-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-color-secondary)}.raw-content.expand{white-space:pre-wrap}.tips{color:var(--text-color-secondary);font-weight:normal}.body-cell:not(:hover) .btn-toggle{visibility:hidden}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:host{display:grid;width:100%}:host([hidden]){display:none}::slotted(*){padding:4px 8px;border:1px solid var(--theme-gray-border-color);border-left-color:transparent;border-top-color:transparent;min-width:0;word-break:break-word}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","WrappedIcon","wrapBrick","defineElement","property","event","createDecorators","_WorkbenchPane","_A","WeakMap","_B","_C","_D","_WorkbenchPane_brand","WeakSet","_handleActiveChange","_E","_handleActiveFirstActivated","WorkbenchPane","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_titleLabel","_init_extra_titleLabel","_init_active","_init_extra_active","_init_badge","_init_extra_badge","_init_activeChangeEvent","_init_extra_activeChangeEvent","active","this","_classPrivateGetter","_get_activeChangeEvent","emit","_init_activeFirstActivatedEvent","_init_extra_activeFirstActivatedEvent","_get_activeFirstActivatedEvent","titleLabel","_classPrivateFieldGet","v","_classPrivateFieldSet","badge","render","React","WorkbenchPaneComponent","onActiveChange","onFirstActivated","_ref","internalActive","setInternalActive","useState","activatedOnce","setActivatedOnce","useEffect","handleClick","useCallback","previousActive","scrollBodyRef","useRef","scrolled","setScrolled","handleScroll","useMemo","debounceByAnimationFrame","current","scrollTop","className","classNames","tabIndex","onClick","lib","theme","icon","name","onScroll","ref","style","padding","color","_WorkbenchPane2","e","_set_activeChangeEvent","_set_activeFirstActivatedEvent","c","_initClass","_applyDecs","styleTexts","styleText","sharedStyle","type","Boolean","Number","o","_","has","_checkInRHS","_WorkbenchSidebar","_getPaneSlot","_reflowPanes","_onPanesSlotChange","WorkbenchSidebar","_this$shadowRoot","shadowRoot","querySelector","panes","call","assignedNodes","pane","_pane$activeFlex","flex","String","activeFlex","target","addEventListener","_defineProperty","panesSlots","WorkbenchSidebarComponent","refCallback","_WorkbenchSidebar2","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","WrapLink","WrappedTooltip","_WorkbenchAction","_F","WorkbenchAction","_init_icon","_init_extra_icon","_init_to","_init_extra_to","_init_href","_init_extra_href","_init_target","_init_extra_target","_init_tooltip","_init_extra_tooltip","to","href","tooltip","WorkbenchActionComponent","content","placement","url","_WorkbenchAction2","attribute","WrapperWorkbenchAction","_WorkbenchActionList","WorkbenchActionList","_init_appId","_init_extra_appId","_init_menu","_init_extra_menu","appId","menu","WorkbenchActionListComponent","currentAppId","_WorkbenchActionList2","historyMap","Map","_menu$menuItems2","history","getHistory","activeIndex","setActiveIndex","location","setLocation","unlisten","listen","clear","_menu$menuItems","pathname","search","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","map","item","index","isSimpleMenuItem","get","key","text","set","handleLinkClick","filter","defaultGetCollapsedId","node","_WorkbenchTreeElement","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_WorkbenchTreeElement_brand","_handleActionClick","_T","_nodeClickFactory","_U","_handleNodeDrop","_V","_contextMenuFactory","_W","_handleNodeToggle","WorkbenchTreeElement","_init_nodes","_init_extra_nodes","_init_actions","_init_extra_actions","_init_actionsHidden","_init_extra_actionsHidden","_init_placeholder","_init_extra_placeholder","_init_isTransformName","_init_extra_isTransformName","_init_searchPlaceholder","_init_extra_searchPlaceholder","_init_noSearch","_init_extra_noSearch","_init_activeKey","_init_extra_activeKey","_init_showMatchedNodeOnly","_init_extra_showMatchedNodeOnly","_init_matchNodeDataFields","_init_extra_matchNodeDataFields","_init_fixedActionsFor","_init_extra_fixedActionsFor","_init_collapsible","_init_extra_collapsible","_init_collapsedNodes","_init_extra_collapsedNodes","_init_allowDrag","_init_extra_allowDrag","_init_allowDragToRoot","_init_extra_allowDragToRoot","_init_allowDragToInside","_init_extra_allowDragToInside","_init_nodeKey","_init_extra_nodeKey","_init_skipNotify","_init_extra_skipNotify","_init_actionClickEvent","_init_extra_actionClickEvent","detail","_get_actionClickEvent","_init_nodeClickEvent","_init_extra_nodeClickEvent","_get_nodeClickEvent","data","_init_nodeDropEvent","_init_extra_nodeDropEvent","_get_nodeDropEvent","_init_nodeContextMenuEvent","_init_extra_nodeContextMenuEvent","preventDefault","_get_nodeContextMenuEvent","x","clientX","y","clientY","_init_nodeToggleEvent","_init_extra_nodeToggleEvent","nodeId","collapsed","_get_nodeToggleEvent","nodes","actions","actionsHidden","placeholder","isTransformName","searchPlaceholder","noSearch","activeKey","showMatchedNodeOnly","matchNodeDataFields","fixedActionsFor","collapsible","collapsedNodes","allowDrag","allowDragToRoot","allowDragToInside","nodeKey","skipNotify","WorkbenchActionsContext","Provider","value","onActionClick","WorkbenchTreeContext","basePaddingLeft","getCollapsedId","onNodeToggle","clickFactory","contextMenuFactory","matchNode","lowerTrimmedQuery","_this$matchNodeDataFi","deepMatch","length","pick","WorkbenchTree","dropEmit","_WorkbenchTreeElement2","_set_actionClickEvent","_set_nodeClickEvent","_set_nodeDropEvent","_set_nodeContextMenuEvent","_set_nodeToggleEvent","treeStyleText","actionStyleText","K","NS","actionI18nKeyMap","add","ADD","edit","EDIT","delete","DELETE","batch_delete","import","IMPORT","clone","CLONE","append_relation","APPEND_RELATION","update_relation","UPDATE_RELATION","remove_relation","REMOVE_RELATION","rollback","ROLLBACK","rollback_all","ROLLBACK_ALL","fullActionI18nKeyMap","ADD_FULL","EDIT_FULL","DELETE_FULL","IMPORT_FULL","CLONE_FULL","APPEND_RELATION_FULL","UPDATE_RELATION_FULL","REMOVE_RELATION_FULL","ROLLBACK_FULL","ROLLBACK_ALL_FULL","categoryI18nKeyMap","project","PROJECT","userGroup","USER","permission","PERMISSION","brick","BRICK","route","ROUTE","template","TEMPLATE","snippet","SNIPPET","i18n","I18N","image","IMAGE","function","FUNCTION","MENU","menuItem","MENU_ITEM","workflow","WORKFLOW","modelI18nKeyMap","PROJECT_MICRO_APP","MICRO_APP_RESOURCE_PERMISSION","STORYBOARD_BRICK","STORYBOARD_ROUTE","STORYBOARD_TEMPLATE","STORYBOARD_SNIPPET","STORYBOARD_I18N","MICRO_APP_RESOURCE_IMAGE","STORYBOARD_FUNCTION","MICRO_APP_RESOURCE_MENU","MICRO_APP_RESOURCE_MENU_ITEM","translateHistory","_categoryI18nKeyMap$h","_actionI18nKeyMap$his","_modelI18nKeyMap$hist","_history$abstract","_history$abstract2","_modelI18nKeyMap$hist2","_history$abstract3","_history$abstract4","_history$abstract5","_history$abstract6","_history$abstract7","_history$abstract8","_history$abstract9","_history$abstract0","_fullActionI18nKeyMap","_history$abstract1","_history$abstract10","historyAction","action","rollBackIdInfo","category","t","leftObjectId","abstract","rightObjectId","translateNodes","nodesCount","leftNodes","leftNodesCount","rightNodes","rightNodesCount","rollbackAbstract","nodeChanges","join","relationChanges","undefined","total","separator","NODE","context","count","initializeReactI18n","en","LOAD_MORE","LOADING","NO_DATA","NODE_ellipsis","zh","WrappedButton","WrappedLink","WrappedEasyopsAvatar","WrappedPopover","onVisibleChange","onBeforeVisibleChange","_WorkbenchHistoryActi","_WorkbenchHistoryAction_brand","_handleHistoryItemClick","_handleRollback","_handleRollbackAll","WorkbenchHistoryAction","_init_projectId","_init_extra_projectId","_init_historyItemClickEvent","_init_extra_historyItemClickEvent","_get_historyItemClickEvent","_init_rollbackEvent","_init_extra_rollbackEvent","_get_rollbackEvent","_init_rollbackAllEvent","_init_extra_rollbackAllEvent","_get_rollbackAllEvent","projectId","WorkbenchHistoryActionComponent","onHistoryItemClick","onRollback","onRollbackAll","props","useTranslation","loading","setLoading","hideLoadMore","setHideLoadMore","allLoaded","setAllLoaded","historyList","setHistoryList","lastTs","handleLoadList","isFirst","WorkspaceApi_getChangeHistory","ts","limit","then","result","pre","list","translation","concat","catch","error","handleHttpError","finally","trigger","arrow","arrowColor","slot","shape","i","HistoryItem","uniqueKey","enableRollback","disabled","moment","duration","diff","humanizedTime","days","format","humanize","ss","s","m","h","title","nameOrInstanceId","user","size","_WorkbenchHistoryAction","_set_historyItemClickEvent","_set_rollbackEvent","_set_rollbackAllEvent","autoFocusedSets","Set","_PageArchNode","_PageArchNode_brand","_handleLabelEditingChange","_handleLabelChange","_handleNodeClick","_handleNodeDoubleClick","_handleNodeContextMenu","_handleChildAppend","_handleExternalClick","_handleSubNodeDoubleClick","_handleSubNodeContextMenu","PageArchNode","_init_label","_init_extra_label","_init_type","_init_extra_type","_init_external","_init_extra_external","_init_subNodes","_init_extra_subNodes","_init_notSynced","_init_extra_notSynced","_init_disableChildAppend","_init_extra_disableChildAppend","_init_autoFocusOnce","_init_extra_autoFocusOnce","_init_labelEditingChange","_init_extra_labelEditingChange","_get_labelEditingChange","_init_labelChange","_init_extra_labelChange","_get_labelChange","_init_nodeClick","_init_extra_nodeClick","_get_nodeClick","_init_nodeDoubleClick","_init_extra_nodeDoubleClick","_get_nodeDoubleClick","_init_nodeContextMenu","_init_extra_nodeContextMenu","_get_nodeContextMenu","_init_childAppend","_init_extra_childAppend","_get_childAppend","_init_externalClick","_init_extra_externalClick","_get_externalClick","_init_subNodeDoubleClick","_init_extra_subNodeDoubleClick","_get_subNodeDoubleClick","_init_subNodeContextMenu","_init_extra_subNodeContextMenu","_get_subNodeContextMenu","label","external","subNodes","notSynced","disableChildAppend","autoFocusOnce","PageArchNodeComponent","onLabelEditingChange","onLabelChange","onNodeClick","onNodeDoubleClick","onNodeContextMenu","onChildAppend","onExternalClick","onSubNodeDoubleClick","onSubNodeContextMenu","_subNodes$length","_type","currentLabel","setCurrentLabel","editingLabel","setEditingLabel","editingLabelInitialized","shouldEmitLabelChange","setShouldEmitLabelChange","labelInputRef","handleEditLabel","stopPropagation","setTimeout","_labelInputRef$curren","_labelInputRef$curren2","focus","preventScroll","select","handleInputChange","handleInputKeydown","keyCode","which","_labelInputRef$curren3","blur","handleInputBlur","handleChildAppend","handleExternalClick","extraHeight","Math","max","floor","height","onDoubleClick","onContextMenu","onChange","onKeyDown","onBlur","onMouseDown","subNode","SubNode","role","_ref2","_PageArchNode2","_set_labelEditingChange","_set_labelChange","_set_nodeClick","_set_nodeDoubleClick","_set_nodeContextMenu","_set_childAppend","_set_externalClick","_set_subNodeDoubleClick","_set_subNodeContextMenu","method","_FormItemElementBase_brand","FormItemElementBase","_initProto","_init_helpBrick","_init_extra_helpBrick","_init_labelBrick","_init_extra_labelBrick","_init_labelCol","_init_extra_labelCol","_init_wrapperCol","_init_extra_wrapperCol","isFormItemElement","validateState","_classPrivateSetter","_set_validate","_render","_get_validate","notRender","hidden","_set__notRender","_get__notRender","$bindFormItem","_get_bindFormItem","_set_bindFormItem","helpBrick","labelBrick","labelCol","wrapperCol","setNotRender","getFormElement","element","parentNode","isFormElement","_this","_this2","_this3","_this4","_this5","_this6","_FormItemElementBase","locales","CONTRACT_OPTIONS_TIPS_PREFIX","CONTRACT_OPTIONS_TIPS_SUFFIX","CONTRACT_VALIDATE_MESSAGE","WrappedInput","MoreOption","itemsCount","setCount","setEdit","autoFocus","inputStyle","width","handleBlur","WrappedFormItem","WrappedAutoComplete","_EoContractSelect","_EoContractSelect_brand","splitContract","version","split","isContractApi","test","checkContractRule","isNil","EoContractSelectComponent","suffix","q","setQ","pageSize","setPageSize","contractList","setContractList","query","ContractCenterApi_searchContract","page","fullContractName","interceptorParams","ignoreLoadingBar","err","console","useContractList","mixedValue","setMixedValue","versionOptions","setVersionOptions","handlerSearch","debounce","_contractList$find","_versionList$","versionList","find","autofillVersion","useBrick","ReactUseMultipleBricks","_EoContractSelect2","_init_name","_init_extra_name","_init_required","_init_extra_required","_init_value","_init_extra_value","_init_suffix","_init_extra_suffix","_init_changeEvent","_init_extra_changeEvent","_get_changeEvent","required","exportparts","curElement","formElement","validator","handleChange","_set_changeEvent","WrappedMenu","WrappedMenuItem","lockBodyScroll","unwrapProvider","_GenerateSnippetsCont","_GenerateSnippetsContextMenu_brand","_handleItemDragStart","_handleItemDragEnd","GenerateSnippetsContextMenu","_init_options","_init_extra_options","_init_position","_init_extra_position","_init_itemDragStartEvent","_init_extra_itemDragStartEvent","_init_itemDragEndEvent","_init_extra_itemDragEndEvent","_get_itemDragStartEvent","_get_itemDragEndEvent","position","open","close","disconnectedCallback","super","GenerateSnippetsContextMenuComponent","onItemDragStart","onItemDragEnd","_ref3","_ref4","dragging","setDragging","containerRef","fixedPosition","setFixedPosition","handleMaskClick","handleItemStart","_e$dataTransfer","dragConf","dataTransfer","setData","JSON","stringify","classList","handleItemDragEnd","remove","rect","getBoundingClientRect","clientWidth","clientHeight","document","documentElement","fixed","left","top","visibility","op","_op$children","_op$children2","children","itemIndex","hoist","draggable","onDragStart","onDragEnd","_GenerateSnippetsContextMenu","_set_itemDragStartEvent","_set_itemDragEndEvent","bundledLanguages","json","javascript","js","typescript","html","html-derivative","xml","css","markdown","md","mermaid","mmd","jsx","tsx","shellscript","bash","sh","shell","zsh","python","py","go","sql","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","code","lang","mermaidPromise","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","async","promises","visit","tree","parent","tagName","properties","classListItem","slice","toLowerCase","getCodeLanguage","svg","default","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","_document$getElementB","getElementById","root","parseFromString","svgElement","defs","createElementNS","innerHTML","prepend","textContent","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","Promise","all","production","Fragment","jsxs","MarkdownComponent","_shiki$theme","components","shiki","reactContent","setReactContent","ignore","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","WrappedAvatar","MessageComponent","message","messageChunks","chunks","chunkRegExp","match","lastIndex","exec","fullMatch","command","start","previousText","trim","raw","lastText","contentRef","contentElement","textingElements","parentElement","querySelectorAll","partial","lastChild","nodeType","Node","ELEMENT_NODE","_lastChild$previousSi","TEXT_NODE","previousSibling","failed","chunk","MessageChunkComponent","_ChatConversation","_ChatConversation_brand","_handleStoryboardUpdate","ChatConversation","_init_messages","_init_extra_messages","_init_errorBoundary","_init_extra_errorBoundary","_init_storyboardUpdate","_init_extra_storyboardUpdate","storyboard","_get_storyboardUpdate","messages","errorBoundary","ChatConversationComponent","host","onStoryboardUpdate","lastIndexMapRef","setChunks","manualScrolledRef","_lastIndexMapRef$curr","newChunks","newPage","parsed","parse","prev","setStoryboard","blocks","storyboardMap","uuid","sort","a","b","seq","contentLayout","main","pageTitle","hasContent","block","child","childBrick","iid","meta","rawBrick","hasContainer","verticalScrollParent","overflowY","getComputedStyle","getPropertyValue","ShadowRoot","Element","scrollingElement","scrollTo","scrollHeight","removeEventListener","_message$key","_ChatConversation2","_set_storyboardUpdate","InspectOutlineComponent","variant","borderWidth","_ChatPreview","_ChatPreview_brand","_handleActiveTargetChange","ChatPreview","_init_storyboard","_init_extra_storyboard","_init_theme","_init_extra_theme","_init_uiVersion","_init_extra_uiVersion","_init_app","_init_extra_app","_init_inspecting","_init_extra_inspecting","_init_activeTargetChangeEvent","_init_extra_activeTargetChangeEvent","_get_activeTargetChangeEvent","uiVersion","app","inspecting","payload","iframeWin","contentWindow","postMessage","channel","origin","ChatPreviewComponent","onActiveTargetChange","iframeRef","ready","setReady","initialized","setInitialized","scroll","setScroll","hoverOutlines","setHoverOutlines","activeOutlines","setActiveOutlines","adjustedHoverOutlines","setAdjustedHoverOutlines","adjustedActiveOutlines","setAdjustedActiveOutlines","handleIframeLoad","check","_iframeRef$current","_preview_only_render","_iframeRef$current2","_window$PUBLIC_ROOT","pkg","__secret_internals","getBrickPackagesById","Error","_preview_only_inject","filePath","getBasePath","window","PUBLIC_ROOT","_iframeRef$current3","yaml","safeDump","schema","JSON_SCHEMA","skipInvalid","noRefs","noCompatMode","handleMouseOut","outlines","listener","_event$data","_iframeRef$current4","adjustOutlines","outline","_iframeRef$current$of","_iframeRef$current5","_iframeRef$current$of2","_iframeRef$current6","offsetLeft","offsetTop","rest","src","onLoad","onMouseOut","_extends","_ChatPreview2","_set_activeTargetChangeEvent","isInspecting","currentHoverElement","targets","getPossibleBrickTargets","composedPath","getTargetOutline","selectByClick","onMouseEvent","hoverOnTarget","eventTargets","HTMLElement","elementsFromPoint","hoverElement","leading","onPointerMove","onPointerLeave","inspectTargets","forEach","dataset","startsWith","substring","IID_ITEM_PREFIX","getLabel","scrollX","scrollY","pop","injected","sendMessage","customElements","define","createProviderClass","_e$data","toggleInspecting","selector","elements","walk","candidates","getElementsIncludingInShadowDOM","_PreGeneratedPreview","PreGeneratedPreview","_init_generations","_init_extra_generations","_init_category","_init_extra_category","generations","PreGeneratedPreviewComponent","setInjected","inject","fixedPkg","allSettled","candidatesMap","mocksMap","generation","_generation$displayLe","candidatesByReadWriteType","propertyId","candidatesByDisplayLevel","rwType","displayLevel","mockData","tableChildren","gridColumn","textAlign","table","gridTemplateColumns","propertyIndex","readWriteTypeIndex","isLastProperty","propertyName","candidate","values","_candidate$propertyNa","gridRow","isLastRow","_candidate$category","_candidate$mockData","_candidate$storyboard","candidateCategory","dataSource","mockValue","random","cellData","candidateChildren","isObject","container","fixBrickConf","layout","previewStyleText","_brick$properties","prefix","_PreGeneratedPreview2","_PreGeneratedTableVie","PreGeneratedTableView","PreGeneratedTableViewComponent","_PreGeneratedTableView","_PreGeneratedContaine","PreGeneratedContainer","_init_useBrick","_init_extra_useBrick","_init_dataSource","_init_extra_dataSource","PreGeneratedContainerComponent","_PreGeneratedContainer","shadowOptions","loadEditors","customEditors","getDataDependency","contextConfs","keyword","depsMap","contextConf","stats","collectMemberUsage","if","resolve","processNodeList","nodeList","nodeItem","_find$deps","dependencyList","parents","cloneDeep","dep","deps","some","depsData","collects","matches","processDataDeps","processNodeItem","nodeDataList","dependencyMap","dataType","curData","Array","from","usedProperties","_internals","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","developHelper","developHelperV2","_developHelperV2$getB","getBrickPackages","__compat_internals","_RawDataPreview","_RawDataPreview_brand","_handleComment","_handleApprove","_handleViewAttrPrompt","RawDataPreview","_init_previewUrl","_init_extra_previewUrl","_init_mocks","_init_extra_mocks","_init_busy","_init_extra_busy","_init_commentEvent","_init_extra_commentEvent","_get_commentEvent","_init_approveEvent","_init_extra_approveEvent","_get_approveEvent","_init_viewAttrPromptEvent","_init_extra_viewAttrPromptEvent","_get_viewAttrPromptEvent","previewUrl","mocks","busy","RawDataPreviewComponent","onComment","onApprove","onViewAttrPrompt","propertyToggleStateRef","propertyExpandStateRef","propertyApproveStateRef","_generations$filter$m","approved","onMessage","URL","args","_generation$propertyN","_generation$candidate2","candidatesByVisualWeight","_generation$candidate","_candidate$visualWeig","visualWeight","events","click","generationId","transformOrigin","transform","propertyType","propertyValues","_generation$mockData","mockList","ma","mb","aIsArray","isArray","bIsArray","aIsNil","bIsNil","aIsEmpty","bIsEmpty","mock","convertToStoryboard","change","propertyInstanceId","comment","autoSize","keydown","sameOrigin","portal","_RawDataPreview2","_set_commentEvent","_set_approveEvent","_set_viewAttrPromptEvent","path","keys","regexp","pathToRegexp","defaults","end","strict","sensitive","attrInstanceId","InstanceApi_createInstance","attr","boolean","promptOfBoolean","promptOfDateTime","enum","promptOfEnum","number","promptOfNumber","others","promptOfOthers","promptOfStructList","struct","promptOfStruct","promptOfJson","convertToChart","config","metricKey","metric","groupedMetricKeys","counterMetricKey","brickItem","unit","chartType","xField","yField","showArea","_config$max","isPercentBase1","isPercentBase100","axis","yAxis","precision","min","thresholdColors","yFields","timeFormat","areaOpacity","forceAbsoluteNumbers","series","isNegative","areaShape","legends","getFixedT","getCompatibleBrickConf","slots","childrenToSlots","originalSlots","newSlots","sl","hasOwnProperty","bricks","initializeI18n","_PreGeneratedConfig","_PreGeneratedConfig_brand","_handleBrickChange","PreGeneratedConfig","_init_attrList","_init_extra_attrList","_init_mockList","_init_extra_mockList","_init_metricGroups","_init_extra_metricGroups","_init_containerConfig","_init_extra_containerConfig","_init_brickChangeEvent","_init_extra_brickChangeEvent","_get_brickChangeEvent","attrList","metricGroups","containerConfig","PreGeneratedConfigComponent","onBrickChange","setConfig","groupMap","setGroupMap","selectedIdsRef","orderedIdsRef","eventAgentId","uniqueId","viewType","viewAttrList","dataSourceList","metrics","groups","_results$id","_results","metricsMap","results","group","groupIndex","metricName","counter","nextGroupIndex","buildGroupedMetrics","orderedList","selectedIds","orderedIds","indexOf","weightMap","weightMapLiteral","groupMapLiteral","brickConf","configList","_settings$fields","dataName","settings","valueAccessor","getMemberAccessor","metricConfigList","pagination","wrapper","charts","templateColumns","gap","attrConfigList","cardTitle","fields","description","brickMap","lowLevelConvertToStoryboard","Object","fromEntries","rowKey","columns","col","dataIndex","useChildren","column","convertToBrickConf","_meta$metric$candidat","getConfigMeta","can","observer","ResizeObserver","body","observe","disconnect","pkgVisualBuilder","fixedPkgVisualBuilder","_orderedList$slice","_viewAttrList$map","_dataSourceList$map","_dataSourceList$map2","selectedItems","includes","selectedRowKeys","injectChartV2Styles","rowSelection","rowDraggable","bordered","mode","dropdownHoist","flatMap","_filteredCandidates","_mockList$0$item$id","_mockList$2","filteredCandidates","_meta$metric$candidat2","_mockList$","condition","headerBrick","minus","plus","lifeCycle","onPageLoad","_candidates$filter$ma","_candidates","_findNearestCandidate","_candidates2","weight","reduce","nearest","abs","functions","source","_counterMetric","editedMetrics","finalMetrics","counterMetric","g","every","_PreGeneratedConfig2","_set_brickChangeEvent","_PreGeneratedConfigPr","PreGeneratedConfigPreview","_init_container","_init_extra_container","PreGeneratedConfigPreviewComponent","_attrList$","_PreGeneratedConfigPreview","generateMetricCandidates","getAvailableContainersByType","metricCount","nonMetricCount","prefer","getMergedObjectInfo","objectIdWithNamespace","isTimeSeries","objectId","namespace","InstanceApi_postSearchV3","$ne","space","$exists","warn","attrs","parentObjectIds","parentId","_attr$generatedView","generatedView","page_size","order","hasMetricName","displayName","datum","dataList","listValue","_object_id","time","containerOptions","_RawMetricPreview","RawMetricPreview","_init_grouped","_init_extra_grouped","grouped","RawMetricPreviewComponent","handledGroupIndexes","_groupMap$get","_generation$candidate3","groupedMetrics","isLastGroupedRow","isMergedRow","groupCount","propertyUnit","propertyDataType","_groupedMetrics","isMergedCell","gen","isGroupedCell","_groupedMetrics2","justifyContent","round","Date","_gen$mockData","sharedPreviewStyleText","_RawMetricPreview2","storyboardData","includesFnDeps","fnList","fnUsage","hasNonStaticUsage","menuUsage","usedArgs","collectFnUsage","beforeVisitGlobalMember","traverseStoryboardExpressions","collectAppGetMenuUsage","matchExpressionString","allFunctions","matchedFnList","fn","collectMemberUsageInFunction","menus","PropertyEditorComponent","LegacyPropertyEditor","BEFORE_SUBMIT_KEY","ADVANCED_CHANGE_KEY","SchemaField","createSchemaField","FormLayout","Input","FormItem","AdvancedFormItem","FormItemWithoutAdvanced","FormCollapse","NumberPicker","Radio","Select","Switch","CategoryTitle","CodeEditor","CodeEditorComponent","IconSelect","IconSelectComponent","ColorPicker","ColorPickerComponent","UseChildrenSelect","UseChildrenSelectComponent","InputWithUrl","InputWithUrlComponent","InputWithUnit","InputWithUnitComponent","TextAlignRadio","TextAlignRadioComponent","CustomOptions","CustomOptionsComponent","BoxSize","BoxSizeComponent","CustomTab","cacheCustomEditor","_PropertyEditor","_formRef","_PropertyEditor_brand","_handleValuesChange","_handleTokenClick","_submitValue","_onSubmitEffect","_handleTriggerAction","_filterData","PropertyEditor","createRef","_init_editorName","_init_extra_editorName","_init_values","_init_extra_values","_init_advancedMode","_init_extra_advancedMode","_init_dataList","_init_extra_dataList","_init_editorPackages","_init_extra_editorPackages","_init_links","_init_extra_links","_init_extraLibs","_init_extra_extraLibs","_init_childSlots","_init_extra_childSlots","_init_successEvent","_init_extra_successEvent","_init_errorEvent","_init_extra_errorEvent","_init_valuesChangeEvent","_init_extra_valuesChangeEvent","_get_valuesChangeEvent","_init_tokenClick","_init_extra_tokenClick","_get_tokenClick","createEffectHook","form","_init_triggerActionEvent","_init_extra_triggerActionEvent","_get_triggerActionEvent","transformData","omit","shouldFilterFields","isEmpty","filterData","editorName","advancedMode","editorPackages","links","extraLibs","childSlots","validate","_classPrivateFieldGet2","getFormInstance","_get_successEvent","ADVANCED_FORM_KEY","_classPrivateFieldGet3","notify","_get_errorEvent","handleValuesChange","handleTokenClick","handleTriggerAction","onSubmitEffect","Editor","setEditor","currentTheme","useCurrentTheme","cache","createCache","createForm","transformValueRef","advancedChangeRef","onAdvancedChangeEffect","useImperativeHandle","load","_customEditors$get","_customEditors$get2","defaultTransform","_values$ADVANCED_FORM","filterValue","setInitialValues","_transformValueRef$cu","NORMAL_FORM_KEY","take","field","display","formValues","getState","formData","setValues","addEffects","onFormValuesChange","ConfigProvider","prefixCls","algorithm","darkAlgorithm","defaultAlgorithm","InputNumber","handleVisible","getPopupContainer","StyleProvider","FormProvider","SchemaFieldComponent","scope","tokenClick","triggerAction","effects","onFieldInit","onFieldValueChange","onFieldInitialValueChange","onFormInitialValuesChange","onFormValidateSuccess","onSubmit","onAdvancedChange","formilySchemaFormatter","_PropertyEditor2","_set_successEvent","_set_errorEvent","_set_valuesChangeEvent","_set_tokenClick","_set_triggerActionEvent","dependencies"],"sourceRoot":""}
|