@next-bricks/ai-portal 0.47.1 → 0.47.2

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.
Files changed (38) hide show
  1. package/dist/bricks.json +16 -16
  2. package/dist/chunks/{1692.9fa908f1.js → 1692.e1b92e84.js} +2 -2
  3. package/dist/chunks/{1692.9fa908f1.js.map → 1692.e1b92e84.js.map} +1 -1
  4. package/dist/chunks/4144.e2d748f8.js +2 -0
  5. package/dist/chunks/4144.e2d748f8.js.map +1 -0
  6. package/dist/chunks/{4837.d70e4d5f.js → 4837.488c5888.js} +2 -2
  7. package/dist/chunks/{4837.d70e4d5f.js.map → 4837.488c5888.js.map} +1 -1
  8. package/dist/chunks/{495.8b4a1756.js → 495.06800ca3.js} +2 -2
  9. package/dist/chunks/{495.8b4a1756.js.map → 495.06800ca3.js.map} +1 -1
  10. package/dist/chunks/{7431.3ff52734.js → 7431.796d1a89.js} +3 -3
  11. package/dist/chunks/{7431.3ff52734.js.map → 7431.796d1a89.js.map} +1 -1
  12. package/dist/chunks/{9328.b23a66b4.js → 9328.1fc3c9b4.js} +2 -2
  13. package/dist/chunks/{9328.b23a66b4.js.map → 9328.1fc3c9b4.js.map} +1 -1
  14. package/dist/chunks/9474.8a4c4815.js +2 -0
  15. package/dist/chunks/9474.8a4c4815.js.map +1 -0
  16. package/dist/chunks/948.85b663ec.js.map +1 -1
  17. package/dist/chunks/{9599.8bf50b3b.js → 9599.f127b5a1.js} +2 -2
  18. package/dist/chunks/{9599.8bf50b3b.js.map → 9599.f127b5a1.js.map} +1 -1
  19. package/dist/chunks/{elevo-sidebar.877ac231.js → elevo-sidebar.dcdcf5d3.js} +3 -3
  20. package/dist/chunks/{elevo-sidebar.877ac231.js.map → elevo-sidebar.dcdcf5d3.js.map} +1 -1
  21. package/dist/chunks/{main.151d1068.js → main.775b7150.js} +2 -2
  22. package/dist/chunks/{main.151d1068.js.map → main.775b7150.js.map} +1 -1
  23. package/dist/chunks/{page-container.5da7bbb4.js → page-container.8bf6e607.js} +2 -2
  24. package/dist/chunks/{page-container.5da7bbb4.js.map → page-container.8bf6e607.js.map} +1 -1
  25. package/dist/chunks/{preview-container.659bb080.js → preview-container.ebe8c4fc.js} +2 -2
  26. package/dist/chunks/{preview-container.659bb080.js.map → preview-container.ebe8c4fc.js.map} +1 -1
  27. package/dist/examples.json +6 -6
  28. package/dist/{index.3c942bd7.js → index.d321fd76.js} +2 -2
  29. package/dist/{index.3c942bd7.js.map → index.d321fd76.js.map} +1 -1
  30. package/dist/manifest.json +112 -112
  31. package/dist/types.json +211 -211
  32. package/package.json +2 -2
  33. package/dist/chunks/4144.5c923db3.js +0 -2
  34. package/dist/chunks/4144.5c923db3.js.map +0 -1
  35. package/dist/chunks/9474.59a27cc1.js +0 -2
  36. package/dist/chunks/9474.59a27cc1.js.map +0 -1
  37. /package/dist/chunks/{7431.3ff52734.js.LICENSE.txt → 7431.796d1a89.js.LICENSE.txt} +0 -0
  38. /package/dist/chunks/{elevo-sidebar.877ac231.js.LICENSE.txt → elevo-sidebar.dcdcf5d3.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/4144.5c923db3.js","mappings":"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","sources":["webpack:///./src/shared/workers/tsxParser.ts","webpack:///../../src/getViewTitle.ts","webpack:///./src/cruise-canvas/utils/createPortal.ts","webpack:///../../src/utils.ts","webpack:///../../src/withBox.ts","webpack:///../../src/convertDataSources.ts","webpack:///../../src/convertVariables.ts","webpack:///../../src/expressions.ts","webpack:///../../src/convertEvents.ts","webpack:///../../../src/raw-data-generate/getMemberAccessor.ts","webpack:///../../../src/raw-data-generate/convert.ts","webpack:///../../src/findNearestCandidate.ts","webpack:///../../src/getModelObjectInstanceId.ts","webpack:///../../src/getPreGeneratedAttrViews.ts","webpack:///../../src/findObjectIdByUsedDataContexts.ts","webpack:///../../src/deepReplaceVariables.ts","webpack:///../../../src/tsx-constructors/replaceVariables.ts","webpack:///../../src/convertTable.ts","webpack:///../../src/getPreGeneratedMetricGroups.ts","webpack:///../../src/convertDashboard.ts","webpack:///../../src/convertTemplates.ts","webpack:///../../src/convertComponent.ts","webpack:///../../src/convertList.ts","webpack:///../../src/convertDescriptions.ts","webpack:///../../src/convertCard.ts","webpack:///../../src/convertButton.ts","webpack:///../../src/convertForm.ts","webpack:///../../src/convertToolbar.ts","webpack:///../../src/convertModal.ts","webpack:///../../src/convertText.ts","webpack:///../../src/convertLink.ts","webpack:///../../src/convertOutput.ts","webpack:///../../src/convertTag.ts","webpack:///../../src/convertAvatar.ts","webpack:///../../src/convertAvatarGroup.ts","webpack:///../../src/convertCodeBlock.ts","webpack:///../../src/convertFormItem.ts","webpack:///../../src/convertForEach.ts","webpack:///../../src/convertIf.ts","webpack:///../../src/convertTsx.ts"],"sourcesContent":["// istanbul ignore file\nimport type { ParseResult, ParseOptions } from \"@next-shared/tsx-parser\";\nimport { wrap } from \"comlink\";\n\nexport interface RemoteTsxParserWorker {\n parse(source: string, options?: ParseOptions): Promise<ParseResult>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteTsxParserWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteTsxParserWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteTsxParserWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./tsxParser.worker.ts\", import.meta.url));\n }\n return worker;\n}\n","import { isExpressionString, type ParseResult } from \"@next-shared/tsx-parser\";\n\nexport function getViewTitle(\n result: ParseResult | null | undefined\n): string | undefined {\n const view = result?.components.find((comp) => comp.name === \"View\");\n const viewTitle = view?.properties?.title;\n if (typeof viewTitle === \"string\" && !isExpressionString(viewTitle)) {\n return viewTitle;\n }\n}\n","export function createPortal(rootId: string) {\n const portal = document.createElement(\"div\");\n portal.dataset.rootId = rootId;\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n}\n","import * as t from \"@babel/types\";\n\nconst EXPRESSION_PREFIX_REG = /^<%=?\\s/;\nconst EXPRESSION_SUFFIX_REG = /\\s%>$/;\n\nexport function isExpressionString(value: unknown): value is string {\n if (typeof value !== \"string\") {\n return false;\n }\n const trimmed = value.trim();\n return (\n EXPRESSION_PREFIX_REG.test(trimmed) && EXPRESSION_SUFFIX_REG.test(trimmed)\n );\n}\n\nexport function validateExpression(expr: t.Expression): t.Node | null {\n let invalidNode: t.Node | null = null;\n t.traverse(expr, {\n enter(node, parent) {\n if (\n !invalidNode &&\n (t.isFunctionExpression(node) ||\n t.isStatement(node) ||\n t.isJSX(node) ||\n (t.isArrowFunctionExpression(node) &&\n (t.isBlockStatement(node.body) ||\n t.isObjectProperty(parent[parent.length - 1]?.node))))\n ) {\n invalidNode = node;\n }\n },\n });\n return invalidNode;\n}\n\nexport function isNilNode(node: t.Node) {\n return (\n t.isNullLiteral(node) || (t.isIdentifier(node) && node.name === \"undefined\")\n );\n}\n\nexport function containsJsxNode(expr: t.Expression): boolean {\n let found = false;\n t.traverse(expr, {\n enter(node) {\n if (!found && (t.isJSXElement(node) || t.isJSXFragment(node))) {\n found = true;\n }\n },\n });\n return found;\n}\n\nexport function convertJsxEventAttr(attr: string): string {\n return attr\n .slice(2)\n .replace(/([a-z])([A-Z])/g, \"$1.$2\")\n .toLowerCase();\n}\n","import { BrickConf } from \"@next-core/types\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nexport function withBox(\n children: BrickConf[] | undefined,\n options: ConvertOptions\n): BrickConf {\n return {\n brick: \"div\",\n properties: {\n style: options.expanded\n ? {\n background: \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(10px)\",\n borderRadius: \"16px\",\n padding: \"24px\",\n }\n : {\n background: \"var(--elevo-component-background)\",\n backdropFilter: \"var(--elevo-component-backdrop-filter)\",\n borderRadius: \"var(--elevo-border-radius)\",\n padding: \"16px\",\n },\n },\n children,\n };\n}\n","import type { ContextConf } from \"@next-core/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { DataSource } from \"@next-shared/tsx-parser\";\n\nexport function convertDataSources(dataSources: DataSource[]): ContextConf[] {\n return dataSources.map(\n ({\n name,\n http,\n api,\n params,\n tool,\n transform,\n rejectTransform,\n config,\n scope,\n }) => {\n const hasEnabled =\n config && Object.prototype.hasOwnProperty.call(config, \"enabled\");\n\n return {\n name: name,\n resolve: {\n ...(http\n ? {\n useProvider: \"basic.http-request\",\n args: [api, params],\n }\n : tool\n ? {\n useProvider: \"ai-portal.call-tool\",\n args: [tool, params],\n }\n : {\n useProvider: `${api}:*`,\n params: params as Record<string, unknown> | undefined,\n // TODO: remove the temporary workaround below\n ...(api === \"easyops.api.data_exchange.olap@Query\" &&\n isObject(params)\n ? {\n params: {\n ...params,\n translate: [\"#showKey\"],\n limit: undefined,\n limitBy: undefined,\n order: undefined,\n displayName: true,\n },\n }\n : null),\n }),\n ...(transform ? { transform: { value: transform } } : null),\n ...(rejectTransform\n ? { onReject: { transform: { value: rejectTransform } } }\n : null),\n ...(hasEnabled\n ? {\n if: config.enabled as string | boolean,\n }\n : null),\n },\n track: true,\n ...(hasEnabled\n ? {\n value: config.fallback,\n }\n : null),\n ...(scope === \"template\" ? { expose: false } : null),\n };\n }\n );\n}\n","import type { ContextConf } from \"@next-core/types\";\nimport type { Variable } from \"@next-shared/tsx-parser\";\n\nexport function convertVariables(variables: Variable[]): ContextConf[] {\n return variables.map(({ name, value, expose }) => ({\n name,\n value,\n expose,\n track: true,\n }));\n}\n","import { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\n\nconst EXPRESSION_PREFIX_REG = /^<%=?\\s/;\nconst EXPRESSION_SUFFIX_REG = /\\s%>$/;\n\n/**\n * @param value The trimmed string content\n * @returns if the value is a valid expression\n */\nfunction isExpression(value: string) {\n return EXPRESSION_PREFIX_REG.test(value) && EXPRESSION_SUFFIX_REG.test(value);\n}\n\nexport function parseDataSource(data: string | object):\n | {\n isString: false;\n embedded?: undefined;\n expression?: undefined;\n usedContexts?: undefined;\n }\n | {\n isString: true;\n embedded: string;\n expression: string;\n usedContexts: Set<string>;\n } {\n if (typeof data !== \"string\") {\n return {\n isString: false,\n };\n }\n\n let expression: string;\n const expr = data.trim();\n if (isExpression(expr)) {\n expression = expr\n .replace(EXPRESSION_PREFIX_REG, \"\")\n .replace(EXPRESSION_SUFFIX_REG, \"\")\n .trim();\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"Invalid expression:\", JSON.stringify(data));\n expression = \"null\";\n }\n\n const usedContexts = strictCollectMemberUsage(data, \"CTX\");\n\n return {\n isString: true,\n embedded: data,\n expression,\n usedContexts,\n };\n}\n","import type { BrickEventHandler, BrickEventsMap } from \"@next-core/types\";\nimport type { Component, EventHandler } from \"@next-shared/tsx-parser\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nexport function convertEvents(component: Component, options: ConvertOptions) {\n const events: BrickEventsMap = {};\n for (const [event, handler] of Object.entries(component.events ?? {})) {\n switch (component.name) {\n case \"Table\":\n switch (event) {\n case \"select\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"row.select.v2\"] = action;\n }\n break;\n }\n case \"sort\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"sort.change\"] = action;\n }\n break;\n }\n case \"paginate\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"page.change\"] = action;\n }\n break;\n }\n }\n break;\n case \"Button\":\n if (event === \"click\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events.click = action;\n }\n }\n break;\n case \"Search\":\n if (event === \"search\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events.search = action;\n }\n }\n break;\n case \"Select\":\n if (event === \"change\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"change.v2\"] = action;\n }\n }\n break;\n default: {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[event] = action;\n }\n }\n }\n }\n return Object.keys(events).length > 0 ? events : undefined;\n}\n\nfunction convertEventHandlers(\n handler: EventHandler | EventHandler[],\n options: ConvertOptions\n): BrickEventHandler[] | undefined {\n const list = (Array.isArray(handler) ? handler : [handler])\n .map((hdl) => convertEventHandler(hdl, options))\n .filter(Boolean) as BrickEventHandler[];\n return list.length > 0 ? list : undefined;\n}\n\nfunction convertEventHandler(\n handler: EventHandler,\n options: ConvertOptions\n): BrickEventHandler | undefined {\n switch (handler?.action) {\n case \"update_variable\":\n return {\n action:\n handler.payload.scope === \"template\"\n ? \"state.update\"\n : \"context.replace\",\n args: [handler.payload.name, handler.payload.value],\n };\n case \"refresh_data_source\":\n return {\n action:\n handler.payload.scope === \"template\"\n ? \"state.refresh\"\n : \"context.refresh\",\n args: [handler.payload.name],\n };\n case \"call_api\": {\n const { api, http, tool, params } = handler.payload;\n\n const success = handler.callback?.success\n ? convertEventHandlers(\n handler.callback.success as EventHandler | EventHandler[],\n options\n )\n : undefined;\n\n return {\n ...(http\n ? {\n useProvider: \"basic.http-request\",\n args: [api, params],\n }\n : tool\n ? {\n useProvider: \"ai-portal.call-tool\",\n args: [tool, params],\n }\n : {\n useProvider: `${api}:*`,\n params,\n }),\n callback: {\n ...(success && { success }),\n error: {\n action: \"handleHttpError\",\n },\n },\n };\n }\n case \"call_component\":\n return {\n target: `[data-root-id=\"${options.rootId}\"] [data-component-id=\"${handler.payload.componentId}\"]`,\n method: handler.payload.method,\n args: handler.payload.args,\n };\n case \"show_message\":\n return {\n action: `message.${handler.payload.type}` as \"message.info\",\n args: [handler.payload.content],\n };\n case \"dispatch_event\":\n return {\n action: \"tpl.dispatchEvent\",\n args: [handler.payload.type, { detail: handler.payload.detail }],\n };\n }\n}\n","const VALID_IDENTIFIER_REG = /^[$_\\p{ID_Start}][$\\p{ID_Continue}]*$/u;\n\nexport function getMemberAccessor(property: unknown): string {\n const propertyStr = String(property);\n return VALID_IDENTIFIER_REG.test(propertyStr)\n ? `.${propertyStr}`\n : `[${JSON.stringify(propertyStr)}]`;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport _ from \"lodash\";\nimport type { VisualConfig, VisualStyle } from \"./raw-data-interfaces.js\";\nimport { getMemberAccessor } from \"./getMemberAccessor.js\";\n\nconst { pick } = _;\n\nexport interface ConvertBrickOptions {\n ignoreStyle?: boolean;\n}\n\nexport function convertToStoryboard(\n config: VisualConfig,\n attr: string,\n options?: ConvertBrickOptions\n): BrickConf | null {\n return lowLevelConvertToStoryboard(config, getMemberAccessor(attr), options);\n}\n\nexport function lowLevelConvertToStoryboard(\n config: VisualConfig,\n attrAccessor: string,\n options?: ConvertBrickOptions\n): BrickConf | null {\n let brickItem: BrickConf;\n\n switch (config.display) {\n case \"link\":\n case \"text\": {\n brickItem = getPlainBrick(config, attrAccessor, options);\n if (config.type === \"struct-list\" && !config.countOnly) {\n brickItem = {\n brick: \"eo-tag\",\n // errorBoundary: true,\n children: [brickItem],\n };\n } else if (config.display === \"link\") {\n brickItem = {\n brick: \"eo-link\",\n // errorBoundary: true,\n children: [brickItem],\n };\n }\n break;\n }\n case \"tag\": {\n const colorSuffix =\n config.style?.variant === \"background\" ? \"-inverse\" : \"\";\n const valueAccessor = getValueAccessor(config, attrAccessor);\n brickItem = {\n brick: \"eo-tag\",\n // errorBoundary: true,\n properties: {\n textContent: `<% ${valueAccessor} %>`,\n size: getTagSize(config.style?.size),\n color: config.style?.background\n ? `${config.style.background}${colorSuffix}`\n : config.style?.palette\n ? `<%\n \\`\\${new Map(Object.entries(${JSON.stringify(\n config.style.palette,\n null,\n 2\n ).replaceAll(\"\\n\", \"\\n \")})).get(${valueAccessor}) ?? \"gray\"}${colorSuffix}\\`\n%>`\n : `gray${colorSuffix}`,\n outline: config.style?.variant === \"outline\",\n },\n };\n break;\n }\n case \"icon\": {\n brickItem = getIconBrick(config, attrAccessor, options);\n break;\n }\n case \"icon+text\": {\n const iconBrick = getIconBrick(config, attrAccessor, options);\n const textBrick = getPlainBrick(config, attrAccessor, options);\n brickItem = {\n brick: \"span\",\n // errorBoundary: true,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [iconBrick, textBrick],\n };\n break;\n }\n default:\n return null;\n }\n\n if (config.type !== \"struct-list\" || config.countOnly) {\n return brickItem;\n }\n\n const maxItems = Number(config.maxItems) || 3;\n return {\n brick: \"span\",\n // errorBoundary: true,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<% DATA${attrAccessor}.slice(0, ${maxItems}) %>`,\n children: [brickItem],\n },\n {\n brick: \"eo-link\",\n if: `<% DATA${attrAccessor}.length > ${maxItems} %>`,\n properties: {\n textContent: `<% \\`+ \\${DATA${attrAccessor}.length - ${maxItems}}\\` %>`,\n },\n },\n ],\n };\n}\n\nfunction getIconBrick(\n config: VisualConfig,\n attrAccessor: string,\n options?: ConvertBrickOptions\n): BrickConf {\n if (config.type === \"boolean\") {\n const valueAccessor = getValueAccessor(config, attrAccessor);\n const trueIcon = config.true?.icon ?? \"check\";\n const falseIcon = config.false?.icon ?? \"xmark\";\n const trueStyle = getPlainStyle(config.true?.style, options);\n const falseStyle = getPlainStyle(config.false?.style, options);\n return {\n brick: \"eo-icon\",\n // errorBoundary: true,\n properties: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: `<% ${valueAccessor} ? ${JSON.stringify(trueIcon)} : ${JSON.stringify(falseIcon)} %>`,\n style: `<% ${valueAccessor} ? ${JSON.stringify(trueStyle)} : ${JSON.stringify(falseStyle)} %>`,\n },\n };\n }\n\n if (config.type === \"json\") {\n const valueAccessor = getValueAccessor(config, attrAccessor);\n return {\n brick: \"eo-icon\",\n // errorBoundary: true,\n properties: {\n lib: `<% ${valueAccessor}?.lib %>`,\n prefix: `<% ${valueAccessor}?.prefix %>`,\n category: `<% ${valueAccessor}?.category %>`,\n theme: `<% ${valueAccessor}?.theme %>`,\n icon: `<% ${valueAccessor}?.icon %>`,\n style: getPlainStyle(config.style, options),\n },\n };\n }\n\n return {\n brick: \"eo-icon\",\n // errorBoundary: true,\n properties: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: config.icon,\n style: getPlainStyle(config.style, options),\n },\n };\n}\n\nfunction getPlainBrick(\n config: VisualConfig,\n attrAccessor: string,\n options?: ConvertBrickOptions\n): BrickConf {\n if (config.type === \"struct-list\" && config.countOnly) {\n return {\n brick: \"span\",\n properties: {\n textContent: `<% \\`\\${DATA${attrAccessor}.length}\\` %>`,\n },\n };\n }\n\n const valueAccessor = getValueAccessor(config, attrAccessor);\n const value = `<% ${valueAccessor} %>`;\n switch (config.formatter?.type) {\n case \"number\":\n return {\n brick: \"eo-formatter-number\",\n // errorBoundary: true,\n properties: {\n value,\n type: config.formatter.format,\n ...pick(config.formatter, [\n \"currency\",\n // \"unit\",\n \"originalUnit\",\n \"decimals\",\n \"thousandsSeparator\",\n ]),\n style: getPlainStyle(config.style, options),\n },\n };\n case \"date\":\n case \"date-time\":\n return {\n brick: \"eo-humanize-time\",\n // errorBoundary: true,\n properties: {\n value,\n type: config.type === \"date\" ? \"date\" : undefined,\n formatter: config.formatter.format,\n style: getPlainStyle(config.style, options),\n },\n };\n case \"cost-time\":\n return {\n brick: \"eo-humanize-time\",\n // errorBoundary: true,\n properties: {\n value,\n isCostTime: true,\n style: getPlainStyle(config.style, options),\n },\n };\n default: {\n let textContent: string | undefined;\n let style: Record<string, any> | string | undefined;\n let tag = \"span\";\n if (config.type === \"boolean\") {\n const trueContent = config.true?.text ?? \"Yes\";\n const falseContent = config.false?.text ?? \"No\";\n const trueStyle = getPlainStyle(config.true?.style, options);\n const falseStyle = getPlainStyle(config.false?.style, options);\n textContent = `<% ${valueAccessor} ? ${JSON.stringify(trueContent)} : ${JSON.stringify(falseContent)} %>`;\n style = `<% ${valueAccessor} ? ${JSON.stringify(trueStyle)} : ${JSON.stringify(falseStyle)} %>`;\n } else {\n style = getPlainStyle(config.style, options);\n if (config.type === \"json\") {\n if (config.display === \"link\") {\n textContent = `<% I18N(\"VIEW\", \"查看\") %>`;\n } else {\n tag = \"pre\";\n textContent = `<% PIPES.jsonStringify(${valueAccessor}) %>`;\n }\n } else {\n textContent = value;\n }\n }\n return {\n brick: tag,\n // errorBoundary: true,\n properties: {\n textContent,\n style,\n },\n };\n }\n }\n}\n\nfunction getValueAccessor(config: VisualConfig, attrAccessor: string): string {\n if (\n (config.type === \"struct\" || config.type === \"struct-list\") &&\n config.field\n ) {\n return `${config.type === \"struct\" ? `DATA${attrAccessor}` : \"ITEM\"}${getMemberAccessor(config.field)}`;\n }\n return `DATA${attrAccessor}`;\n}\n\nfunction getTagSize(size: VisualStyle[\"size\"]): string | undefined {\n switch (size) {\n case \"large\":\n case \"medium\":\n case \"small\":\n return size;\n case \"x-large\":\n return \"large\";\n // case \"x-small\":\n // return \"xs\";\n }\n}\n\nfunction getPlainStyle(\n configStyle: VisualStyle | undefined,\n options?: ConvertBrickOptions\n): Record<string, any> | undefined {\n if (!configStyle || options?.ignoreStyle) {\n return;\n }\n const style: Record<string, any> = {};\n switch (configStyle.size) {\n // case \"x-small\":\n case \"small\":\n style.fontSize = \"var(--sub-title-font-size-small)\";\n break;\n case \"medium\":\n style.fontSize = \"var(--normal-font-size)\";\n break;\n case \"large\":\n style.fontSize = \"var(--card-title-font-size)\";\n break;\n case \"x-large\":\n style.fontSize = \"var(--title-font-size-larger)\";\n break;\n }\n switch (configStyle.fontWeight) {\n case \"bold\":\n case \"normal\":\n style.fontWeight = configStyle.fontWeight;\n }\n if (configStyle.color) {\n style.color = configStyle.color;\n }\n return style;\n}\n","export default function findNearestCandidate<\n T extends { visualWeight: number },\n>(candidates: T[] | undefined, weight: number): T | undefined {\n const candidate = 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 return candidate;\n}\n","import { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\n\nconst cache = new Map<string, Promise<string | null>>();\n\nexport async function getModelObjectInstanceId(objectId: string) {\n if (cache.has(objectId)) {\n return cache.get(objectId)!;\n }\n\n const promise = doGetModelObjectInstanceId(objectId);\n cache.set(objectId, promise);\n return promise;\n}\n\nasync function doGetModelObjectInstanceId(objectId: string) {\n const { list } = await InstanceApi_postSearchV3(\"MODEL_OBJECT\", {\n fields: [\"instanceId\"],\n query: {\n objectId: {\n $eq: objectId,\n },\n },\n page_size: 1,\n });\n\n if (list?.length) {\n return list[0].instanceId;\n }\n\n return null;\n}\n","import { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport findNearestCandidate from \"./findNearestCandidate.js\";\nimport { getModelObjectInstanceId } from \"./getModelObjectInstanceId.js\";\n\nconst cache = new Map<string, Promise<Map<string, any>>>();\n\nconst attrListCache = new Map<string, any>();\n\nexport async function getPreGeneratedAttrViews(\n objectId: string,\n visualWeight?: number\n) {\n if (cache.has(objectId)) {\n return cache.get(objectId)!;\n }\n\n const promise = doGetPreGeneratedAttrViews(objectId, visualWeight);\n cache.set(objectId, promise);\n return promise;\n}\n\nasync function doGetPreGeneratedAttrViews(\n objectId: string,\n visualWeight?: number\n) {\n const attrViews = new Map<string, any>();\n\n try {\n const attrList = await getAttrList(objectId);\n if (attrList) {\n for (const attr of attrList) {\n const candidates = attr.generatedView?.[0]?.list;\n const select = findNearestCandidate(candidates, visualWeight ?? 0);\n if (select) {\n attrViews.set(attr.id, select);\n }\n }\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Error fetching pre-generated attr views:\", e);\n }\n\n return attrViews;\n}\n\nasync function getAttrList(objectId: string) {\n if (attrListCache.has(objectId)) {\n return attrListCache.get(objectId)!;\n }\n\n const promise = doGetAttrList(objectId);\n attrListCache.set(objectId, promise);\n return promise;\n}\n\nasync function doGetAttrList(objectId: string) {\n const instanceId = await getModelObjectInstanceId(objectId);\n if (!instanceId) {\n return null;\n }\n\n const fields = [\"attrList.id\", \"attrList.generatedView.list\"].join(\",\");\n\n const { attrList } = await InstanceApi_getDetail(\"MODEL_OBJECT\", instanceId, {\n fields,\n });\n\n return attrList;\n}\n","import { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport type { DataSource, Variable } from \"@next-shared/tsx-parser\";\n\n/**\n * Find the object ID associated with the used data contexts.\n *\n * This function traverses the used contexts along their dependency chain.\n */\nexport function findObjectIdByUsedDataContexts(\n usedContexts: Set<string> | undefined,\n dataSources: DataSource[] | undefined,\n variables: Variable[] | undefined\n) {\n let objectId: string | undefined;\n if (usedContexts?.size && dataSources?.length) {\n const dataSourceToObjectIdMap = new Map<string, string>();\n for (const dataSource of dataSources) {\n if (dataSource.objectId) {\n dataSourceToObjectIdMap.set(dataSource.name, dataSource.objectId);\n }\n }\n\n const variableDepsMap = new Map<string, Set<string>>();\n for (const variable of variables ?? []) {\n const deps = strictCollectMemberUsage(variable.value, \"CTX\");\n variableDepsMap.set(variable.name, deps);\n }\n\n const processedContexts = new Set<string>();\n\n const find = (context: string) => {\n if (processedContexts.has(context)) {\n return false;\n }\n processedContexts.add(context);\n\n const dataSourceObjectId = dataSourceToObjectIdMap.get(context);\n if (dataSourceObjectId) {\n objectId = dataSourceObjectId;\n return true;\n }\n\n const variableDeps = variableDepsMap.get(context);\n for (const dep of variableDeps ?? []) {\n if (find(dep)) {\n return true;\n }\n }\n\n return false;\n };\n\n for (const context of usedContexts) {\n if (find(context)) {\n break;\n }\n }\n }\n\n return objectId;\n}\n","import { isExpressionString, replaceVariables } from \"@next-shared/tsx-parser\";\n\nexport function deepReplaceVariables<T>(\n value: T,\n patterns: Map<string, string> | undefined\n): T {\n if (!patterns?.size) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) =>\n deepReplaceVariables(item, patterns)\n ) as unknown as T;\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n deepReplaceVariables(v, patterns),\n ])\n ) as T;\n }\n\n if (typeof value === \"string\" && isExpressionString(value)) {\n return replaceVariables(value, patterns) as unknown as T;\n }\n\n return value;\n}\n","import * as t from \"@babel/types\";\nimport {\n precookFunction,\n preevaluate,\n type PreevaluateResult,\n type PrecookFunctionResult,\n} from \"@next-core/cook\";\nimport type { ParseResult } from \"../interfaces.js\";\n\ninterface Replacement {\n id: t.Identifier;\n shorthand?: boolean;\n}\n\nexport function replaceGlobals(expr: string, result: ParseResult): string {\n const patterns = new Map([\n ...(result.templateCollection\n ? result.templateCollection.identifiers.map(\n (k) => [k, `STATE.${k}`] as const\n )\n : result.contexts.map((k) => [k, `CTX.${k}`] as const)),\n ...result.functionNames.map((k) => [k, `FN.${k}`] as const),\n ]);\n return replaceVariables(expr, patterns);\n}\n\nexport function replaceGlobalsInFunction(\n source: string,\n result: ParseResult,\n selfName: string\n): string {\n const patterns = new Map(\n result.functionNames\n .filter((name) => name !== selfName)\n .map((k) => [k, `FN.${k}`])\n );\n return replaceVariablesInFunction(source, patterns);\n}\n\nexport function replaceVariables(\n expr: string,\n patterns: Map<string, string> | undefined\n): string {\n if (!patterns?.size) {\n return expr;\n }\n const keywords = [...patterns.keys()];\n if (keywords.some((k) => expr.includes(k))) {\n const replacements: Replacement[] = [];\n let result: PreevaluateResult | undefined;\n try {\n result = preevaluate(expr, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, path) {\n if (patterns.has(node.name)) {\n const p = path![path!.length - 1]?.node;\n let shorthand: boolean | undefined;\n if (p && p.type === \"Property\" && !p.computed && p.shorthand) {\n shorthand = true;\n }\n replacements.push({ id: node, shorthand });\n }\n },\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse expression failed:\", error);\n }\n if (replacements.length > 0 && result) {\n const { prefix, source, suffix } = result;\n const chunks: string[] = [];\n let prevStart = 0;\n for (let i = 0; i < replacements.length; i++) {\n const { id, shorthand } = replacements[i];\n const { name, start, end } = id;\n chunks.push(\n source.substring(prevStart, start!),\n `${shorthand ? `${name}: ` : \"\"}${patterns.get(name)}`\n );\n prevStart = end!;\n }\n chunks.push(source.substring(prevStart));\n return `${prefix}${chunks.join(\"\")}${suffix}`;\n }\n }\n return expr;\n}\n\nfunction replaceVariablesInFunction(\n source: string,\n patterns: Map<string, string> | undefined\n): string {\n if (!patterns?.size) {\n return source;\n }\n const keywords = [...patterns.keys()];\n if (keywords.some((k) => source.includes(k))) {\n const replacements: Replacement[] = [];\n let result: PrecookFunctionResult | undefined;\n try {\n result = precookFunction(source, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n if (patterns.has(node.name)) {\n const p = parent![parent!.length - 1]?.node;\n let shorthand: boolean | undefined;\n if (p && p.type === \"Property\" && !p.computed && p.shorthand) {\n shorthand = true;\n }\n replacements.push({ id: node, shorthand });\n }\n },\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse function failed:\", error);\n }\n if (replacements.length > 0 && result) {\n const chunks: string[] = [];\n let prevStart = 0;\n for (let i = 0; i < replacements.length; i++) {\n const { id, shorthand } = replacements[i];\n const { name, start, end } = id;\n chunks.push(\n source.substring(prevStart, start!),\n `${shorthand ? `${name}: ` : \"\"}${patterns.get(name)}`\n );\n prevStart = end!;\n }\n chunks.push(source.substring(prevStart));\n return chunks.join(\"\");\n }\n }\n return source;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type {\n Component,\n ParseResult,\n RenderUseBrick,\n} from \"@next-shared/tsx-parser\";\nimport type { TableColumn, TableProps } from \"../lib/components.js\";\nimport type { ConvertOptions } from \"./interfaces.js\";\nimport { lowLevelConvertToStoryboard } from \"./raw-data-generate/convert.js\";\nimport { parseDataSource } from \"./expressions.js\";\nimport { getPreGeneratedAttrViews } from \"./getPreGeneratedAttrViews.js\";\nimport { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport { deepReplaceVariables } from \"./deepReplaceVariables.js\";\n\nconst columnUseBrickParams = [\"cellData\", \"rowData\"];\n\nexport default async function convertTable(\n component: Component,\n view: ParseResult,\n options: ConvertOptions\n): Promise<BrickConf> {\n const { properties } = component;\n const { dataSource, size, columns, rowKey, pagination, ...restProps } =\n properties as Omit<TableProps<object>, \"dataSource\" | \"columns\"> & {\n dataSource: string | object;\n size?: \"small\" | \"medium\" | \"large\";\n pagination?: boolean;\n columns:\n | string\n | Array<\n Omit<TableColumn<object>, \"render\"> & {\n render?: RenderUseBrick;\n }\n >;\n };\n\n const parsedDataSource = parseDataSource(dataSource);\n\n const objectId = findObjectIdByUsedDataContexts(\n parsedDataSource.usedContexts,\n view.dataSources,\n view.variables\n );\n\n const attrViews = objectId\n ? await getPreGeneratedAttrViews(objectId)\n : undefined;\n\n const configuredColumns = new Map<string, BrickConf>();\n\n if (attrViews?.size && Array.isArray(columns)) {\n for (const column of columns) {\n if (column.render || typeof column.dataIndex !== \"string\") {\n continue;\n }\n const candidate = attrViews.get(column.dataIndex);\n if (candidate) {\n const brick = lowLevelConvertToStoryboard(candidate, \".cellData\");\n if (brick) {\n brick.slot = `[${column.dataIndex}]`;\n configuredColumns.set(column.dataIndex, brick);\n }\n }\n }\n }\n\n const convertedColumns = Array.isArray(columns)\n ? await Promise.all(\n columns.map(async ({ render, ...column }) => {\n if (render) {\n const patterns = new Map<string, string>();\n for (\n let i = 0;\n i < render.params.length && i < columnUseBrickParams.length;\n i++\n ) {\n patterns.set(render.params[i], `DATA.${columnUseBrickParams[i]}`);\n }\n\n const useBrick = (\n await Promise.all(\n render.children.map((child) =>\n convertComponent(child, view, options)\n )\n )\n ).flatMap((child) => deepReplaceVariables(child, patterns));\n\n return {\n ...column,\n useBrick: useBrick.map((item) =>\n item.brick.startsWith(\":\")\n ? {\n brick: \"div\",\n children: [item],\n }\n : item\n ),\n };\n }\n return typeof column.dataIndex === \"string\" &&\n configuredColumns.has(column.dataIndex)\n ? {\n ...column,\n useChildren: `[${column.dataIndex}]`,\n }\n : column;\n })\n )\n : columns;\n\n return {\n brick: \"eo-next-table\",\n properties: {\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n ...restProps,\n rowKey: rowKey ?? (Array.isArray(columns) ? columns[0]?.key : undefined),\n columns: convertedColumns,\n themeVariant: \"elevo\",\n scrollConfig: {\n x: \"max-content\",\n },\n ...(options.expanded\n ? {\n bordered: true,\n pagination,\n size: \"large\",\n }\n : {\n size: \"middle\",\n pagination: false,\n }),\n },\n children:\n configuredColumns.size > 0 ? Array.from(configuredColumns.values()) : [],\n };\n}\n","import { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport { getModelObjectInstanceId } from \"./getModelObjectInstanceId.js\";\n\nconst cache = new Map<string, Promise<MetricWithGroup[]>>();\n\nexport interface MetricWithGroup {\n group: string;\n metrics: string[];\n counter?: string;\n}\n\nexport async function getPreGeneratedMetricGroups(objectId: string) {\n if (cache.has(objectId)) {\n return cache.get(objectId)!;\n }\n\n const promise = doGetPreGeneratedMetricGroups(objectId);\n cache.set(objectId, promise);\n return promise;\n}\n\nasync function doGetPreGeneratedMetricGroups(objectId: string) {\n let metricGroups: MetricWithGroup[] = [];\n\n try {\n const instanceId = await getModelObjectInstanceId(objectId);\n if (instanceId) {\n const fields = [\"metricGroups\"].join(\",\");\n\n const { metricGroups: groups } = await InstanceApi_getDetail(\n \"MODEL_OBJECT\",\n instanceId,\n {\n fields,\n }\n );\n\n if (Array.isArray(groups) && groups.length) {\n metricGroups = groups;\n }\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Error fetching pre-generated metric groups:\", e);\n }\n\n return metricGroups;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component, ParseResult } from \"@next-shared/tsx-parser\";\nimport type { DashboardProps, DashboardWidget } from \"../lib/components.js\";\nimport { parseDataSource } from \"./expressions.js\";\nimport { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport { getPreGeneratedMetricGroups } from \"./getPreGeneratedMetricGroups.js\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nconst COLORS = [\n \"#336EF4\",\n \"#45CAFF\",\n \"#41CDCF\",\n \"#8146F3\",\n \"#F8A075\",\n \"#94E65E\",\n \"#57689C\",\n \"#C285EF\",\n \"#FAC60B\",\n \"#E4551F\",\n \"#8984FF\",\n \"#2540FF\",\n \"#08BF33\",\n \"#F7811C\",\n \"#AC7CFF\",\n \"#1BA5DC\",\n \"#E89716\",\n \"#76A6F5\",\n \"#4F69FF\",\n];\n\ninterface MergedWidget extends DashboardWidget {\n relevantMetrics?: string[];\n counterMetric?: string;\n groupTitle?: string;\n size?: \"small\" | \"medium\" | \"large\";\n}\n\nexport default async function convertDashboard(\n { properties }: Component,\n view: ParseResult,\n options: ConvertOptions\n): Promise<BrickConf> {\n const {\n dataSource,\n groupField: _groupField,\n widgets,\n } = properties as Omit<DashboardProps, \"dataSource\"> & {\n dataSource: string | object;\n };\n\n const groupField = _groupField ? \"#showKey\" : undefined;\n\n const { isString, expression, usedContexts } = parseDataSource(dataSource);\n\n const chartData = isString\n ? `<%= CTX.__builtin_fn_extractList((${expression})) %>`\n : dataSource;\n\n if (options.expanded) {\n let mergedWidgets = widgets as MergedWidget[];\n const objectId = findObjectIdByUsedDataContexts(\n usedContexts,\n view.dataSources,\n view.variables\n );\n const metricGroups = objectId\n ? await getPreGeneratedMetricGroups(objectId)\n : [];\n\n if (metricGroups.length > 0) {\n mergedWidgets = [];\n const mergedMetrics = new Set<string>();\n const metricIds = new Set(widgets.map((w) => w.metric.id));\n for (const widget of widgets) {\n if (mergedMetrics.has(widget.metric.id)) {\n continue; // Skip already merged metrics\n }\n const mergedWidget = { ...widget } as MergedWidget;\n mergedWidgets.push(mergedWidget);\n const group = metricGroups.find((g) =>\n g.metrics.includes(widget.metric.id)\n );\n if (group) {\n const relevantMetrics = group.metrics.filter((m) => metricIds.has(m));\n if (relevantMetrics.length > 1) {\n mergedWidget.relevantMetrics = relevantMetrics;\n mergedWidget.counterMetric = group.counter;\n mergedWidget.groupTitle = group.group;\n for (const metricId of relevantMetrics) {\n mergedMetrics.add(metricId);\n metricIds.delete(metricId);\n }\n }\n }\n }\n }\n\n let colorCursor = 0;\n\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(500px, 1fr))\",\n gap: \"16px\",\n },\n },\n children: mergedWidgets.map((widget) => {\n const { title, /* type, */ metric, size, precision } = widget;\n const colorCount =\n widget.relevantMetrics?.length ?? (groupField ? 2 : 1);\n const colors = Array.from(\n { length: colorCount },\n (_, i) => COLORS[(colorCursor + i) % COLORS.length]\n );\n colorCursor += colorCount;\n const unit = metric.unit === \"load\" ? \"\" : metric.unit;\n const chart = {\n brick: \"chart-v2.time-series-chart\",\n properties: {\n data: chartData,\n xField: \"time\",\n ...(widget.relevantMetrics\n ? {\n // yFields: widget.relevantMetrics,\n yFields: `<% CTX.__builtin_fn_getMetricDisplayNames((${expression}).displayNameList, ${JSON.stringify(\n widget.relevantMetrics\n )}) %>`,\n }\n : {\n // yField: metric.id,\n yField: `<% CTX.__builtin_fn_getMetricDisplayNames((${expression}).displayNameList, [${JSON.stringify(\n metric.id\n )}])[0] %>`,\n }),\n ...(widget.counterMetric\n ? {\n forceAbsoluteNumbers: true,\n series: {\n [widget.counterMetric]: {\n isNegative: true,\n },\n },\n }\n : null),\n height: size === \"large\" ? 230 : 200,\n timeFormat: \"HH:mm\",\n ...(widget.relevantMetrics || groupField\n ? null\n : {\n areaOptions: {\n style: {\n fill: `l(90) 0:${colors[0]} 1:#ffffff`,\n },\n },\n }),\n axis: {\n yAxis: {\n unit,\n precision,\n ...(widget.counterMetric\n ? null\n : unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : unit === \"percent(100)\" || unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n shape: \"smooth\",\n },\n },\n groupField,\n areaShape: \"smooth\",\n legends: !!(widget.relevantMetrics || groupField),\n colors: colors,\n tooltip: {\n marker: {\n fill: colors[0],\n stroke: \"#fff\",\n lineWidth: 2,\n shadowColor: colors[0],\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 4,\n },\n domStyles: {\n \"g2-tooltip\": {\n background: [\n `radial-gradient( farthest-corner at -20px 150px, ${colors[0]} 0%, rgba(238,238,238,0) 60%)`,\n \"linear-gradient( 180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.8) 100%)\",\n ].join(\", \"),\n boxShadow: `0px 4px 8px 0px ${convertHexColorToRGBA(colors[0], 0.08)}`,\n borderRadius: \"8px\",\n border: \"1px solid rgba(255,255,255,1)\",\n backdropFilter: \"blur(3px)\",\n },\n },\n },\n },\n };\n return {\n brick: \"div\",\n properties: {\n style: {\n background: \"rgba(255,255,255,0.8)\",\n boxShadow: \"0px 2px 4px 0px rgba(0,0,0,0.06)\",\n borderRadius: \"8px\",\n padding: \"16px 20px 20px\",\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n style: {\n fontSize: \"16px\",\n fontWeight: \"500\",\n marginBottom: \"20px\",\n },\n textContent: widget.groupTitle || title || metric.id,\n },\n },\n chart,\n ],\n };\n }),\n };\n }\n\n if (groupField) {\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<%= CTX.__builtin_fn_groupMetricData(CTX.__builtin_fn_extractList((${expression})), ${JSON.stringify(groupField)}) %>`,\n children: [\n {\n brick: \"div\",\n properties: {\n textContent: \"<% `${ITEM.group}:` %>\",\n style: {\n fontWeight: \"500\",\n },\n },\n },\n {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: \"10px\",\n marginBottom: \"8px\",\n },\n },\n children: widgets.map((widget, i) => {\n const { title, /* type, */ metric, precision } = widget;\n return {\n brick: \"ai-portal.stat-with-mini-chart\",\n properties: {\n size: \"small\",\n label: title || metric.id,\n data: \"<% ITEM.list %>\",\n xField: \"time\",\n yField: metric.id,\n lineColor: COLORS[i % COLORS.length],\n showArea: true,\n ...(metric.unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : metric.unit === \"percent(100)\" || metric.unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n value: `<%= CTX.__builtin_fn_getLatestMetricValue(ITEM.list, ${JSON.stringify(\n {\n metric,\n precision,\n }\n )}) %>`,\n },\n };\n }),\n },\n ],\n },\n ],\n };\n }\n\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: \"10px\",\n },\n },\n children: widgets.map((widget, i) => {\n const { title, /* type, */ metric, precision } = widget;\n return {\n brick: \"ai-portal.stat-with-mini-chart\",\n properties: {\n size: \"small\",\n label: title || metric.id,\n data: chartData,\n xField: \"time\",\n yField: metric.id,\n lineColor: COLORS[i % COLORS.length],\n showArea: true,\n ...(metric.unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : metric.unit === \"percent(100)\" || metric.unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n value: `<%= CTX.__builtin_fn_getLatestMetricValue((${\n isString\n ? `CTX.__builtin_fn_extractList((${expression}))`\n : JSON.stringify(dataSource ?? null)\n }), ${JSON.stringify({\n metric,\n precision,\n })}) %>`,\n },\n };\n }),\n };\n}\n\nfunction convertHexColorToRGBA(color: string, alpha: number): string {\n const hex = color.slice(1);\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import type { ParseResult, Template } from \"@next-shared/tsx-parser\";\nimport type { ConvertOptions } from \"./interfaces.js\";\nimport type { CustomTemplate } from \"@next-core/types\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport { convertDataSources } from \"./convertDataSources.js\";\nimport { convertVariables } from \"./convertVariables.js\";\n\nlet counter = 0;\nconst tplNameMap = new Map<string, string>();\n\nexport function getTplNamePrefixByRootId(rootId: string) {\n if (!tplNameMap.has(rootId)) {\n tplNameMap.set(rootId, `isolated-tpl-${counter++}`);\n }\n return tplNameMap.get(rootId)!;\n}\n\nexport function getTplNameSuffix(name: string) {\n return name.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n}\n\nexport function convertTemplates(\n templates: Template[],\n result: ParseResult,\n options: ConvertOptions\n): Promise<CustomTemplate[]> {\n const tplNamePrefix = getTplNamePrefixByRootId(options.rootId);\n return Promise.all(\n templates.map(async (tpl) => {\n const children = (\n await Promise.all(\n tpl.components.map((component) =>\n convertComponent(component, result, options)\n )\n )\n ).flat();\n return {\n name: `${tplNamePrefix}${getTplNameSuffix(tpl.name)}`,\n bricks: children,\n state: [\n ...convertDataSources(tpl.dataSources ?? []),\n ...convertVariables(tpl.variables ?? []),\n ],\n } as CustomTemplate;\n })\n );\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component, ParseResult } from \"@next-shared/tsx-parser\";\nimport convertList from \"./convertList.js\";\nimport type { ConvertOptions } from \"./interfaces.js\";\nimport { convertEvents } from \"./convertEvents.js\";\nimport convertTable from \"./convertTable.js\";\nimport convertDescriptions from \"./convertDescriptions.js\";\nimport convertDashboard from \"./convertDashboard.js\";\nimport convertButton from \"./convertButton.js\";\nimport convertForm from \"./convertForm.js\";\nimport convertFormItem from \"./convertFormItem.js\";\nimport convertModal from \"./convertModal.js\";\nimport convertToolbar from \"./convertToolbar.js\";\nimport convertText from \"./convertText.js\";\nimport convertCard from \"./convertCard.js\";\nimport convertForEach from \"./convertForEach.js\";\nimport convertIf from \"./convertIf.js\";\nimport convertOutput from \"./convertOutput.js\";\nimport convertLink from \"./convertLink.js\";\nimport convertTag from \"./convertTag.js\";\nimport convertAvatar from \"./convertAvatar.js\";\nimport convertAvatarGroup from \"./convertAvatarGroup.js\";\nimport {\n getTplNamePrefixByRootId,\n getTplNameSuffix,\n} from \"./convertTemplates.js\";\nimport convertCodeBlock from \"./convertCodeBlock.js\";\n\nexport async function convertComponent(\n component: Component,\n result: ParseResult,\n options: ConvertOptions\n): Promise<BrickConf | BrickConf[]> {\n let brick: BrickConf | null = null;\n const tpl = result.templates.find((t) => t.name === component.name);\n if (tpl) {\n brick = {\n brick: `${getTplNamePrefixByRootId(options.rootId)}${getTplNameSuffix(tpl.name)}`,\n properties: component.properties,\n };\n } else {\n switch (component.name) {\n case \"List\":\n brick = await convertList(component);\n break;\n case \"Table\":\n brick = await convertTable(component, result, options);\n break;\n case \"Descriptions\":\n brick = await convertDescriptions(component, result, options);\n break;\n case \"Card\":\n brick = await convertCard(component);\n break;\n case \"Dashboard\":\n brick = await convertDashboard(component, result, options);\n break;\n case \"Button\":\n brick = await convertButton(component);\n break;\n case \"Form\":\n brick = await convertForm(component);\n break;\n case \"Toolbar\":\n brick = await convertToolbar(component);\n break;\n case \"Modal\":\n brick = await convertModal(component);\n break;\n case \"Plaintext\":\n brick = await convertText(component);\n break;\n case \"Link\":\n brick = await convertLink(component);\n break;\n case \"Output\":\n brick = await convertOutput(component);\n break;\n case \"Tag\":\n brick = await convertTag(component);\n break;\n case \"Avatar\":\n brick = await convertAvatar(component);\n break;\n case \"AvatarGroup\":\n brick = await convertAvatarGroup(component);\n break;\n case \"CodeBlock\":\n brick = await convertCodeBlock(component);\n break;\n case \"Search\":\n case \"Input\":\n case \"NumberInput\":\n case \"Textarea\":\n case \"Select\":\n case \"Radio\":\n case \"Checkbox\":\n case \"Switch\":\n case \"DatePicker\":\n case \"TimePicker\":\n brick = await convertFormItem(\n component,\n convertComponentName(component.name)\n );\n break;\n case \"ForEach\":\n brick = await convertForEach(component);\n break;\n case \"If\":\n brick = await convertIf(component);\n break;\n default:\n // eslint-disable-next-line no-console\n console.error(\"Unsupported component:\", component.name);\n }\n }\n\n if (!brick) {\n return [];\n }\n\n // Set [data-component-id] for the brick\n if (component.componentId) {\n brick.properties ??= {};\n brick.properties.dataset ??= {};\n (brick.properties.dataset as Record<string, string>).componentId =\n component.componentId;\n }\n\n if (component.slot) {\n brick.slot = component.slot;\n }\n\n brick.events = convertEvents(component, options);\n\n if (component.children?.length) {\n brick.children = (\n await Promise.all(\n component.children.map((child) =>\n convertComponent(child, result, options)\n )\n )\n ).flat();\n\n if (\n (component.name === \"Card\" || component.name === \"Modal\") &&\n brick.children.length > 0\n ) {\n brick.children = [\n {\n brick: \"eo-content-layout\",\n children: brick.children,\n },\n ];\n }\n }\n\n return brick;\n}\n\nfunction convertComponentName(name: string) {\n return name.includes(\"-\")\n ? name\n : `eo${name.replace(/([A-Z])/g, \"-$1\").toLowerCase()}`;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ListProps } from \"../lib/components.js\";\nimport { parseDataSource } from \"./expressions.js\";\n\nexport default function convertList({ properties }: Component): BrickConf {\n const props = properties as Omit<ListProps, \"dataSource\"> & {\n dataSource: string | object;\n };\n\n const { dataSource, fields, variant } = props;\n\n const parsedDataSource = parseDataSource(dataSource);\n\n return {\n brick: \"eo-list\",\n properties: {\n variant,\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n fields,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type {\n Component,\n ParseResult,\n RenderUseBrick,\n} from \"@next-shared/tsx-parser\";\nimport type { DescriptionsProps } from \"../lib/components.js\";\nimport { convertToStoryboard } from \"./raw-data-generate/convert.js\";\nimport { getPreGeneratedAttrViews } from \"./getPreGeneratedAttrViews.js\";\nimport { parseDataSource } from \"./expressions.js\";\nimport { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport { deepReplaceVariables } from \"./deepReplaceVariables.js\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\ninterface DescriptionItem {\n label: string;\n text?: string;\n field?: string;\n render?: RenderUseBrick;\n}\n\nexport default async function convertDescriptions(\n { properties }: Component,\n view: ParseResult,\n options: ConvertOptions\n): Promise<BrickConf> {\n const { dataSource, title, list, columns, ...restProps } =\n properties as Partial<DescriptionsProps<object>> as Omit<\n DescriptionsProps<object>,\n \"list\"\n > & {\n dataSource: string | object;\n list: DescriptionItem[] | string;\n columns?: number;\n };\n\n const parsedDataSource = parseDataSource(dataSource);\n\n const objectId = findObjectIdByUsedDataContexts(\n parsedDataSource.usedContexts,\n view.dataSources,\n view.variables\n );\n\n const attrViews = objectId\n ? await getPreGeneratedAttrViews(objectId)\n : undefined;\n\n const configuredItems = new Map<string, BrickConf>();\n\n if (attrViews?.size && Array.isArray(list)) {\n for (const item of list) {\n if (item.render) {\n continue;\n }\n if (item.field) {\n const candidate = attrViews.get(item.field);\n if (candidate) {\n const brick = convertToStoryboard(candidate, item.field);\n if (brick) {\n brick.slot = `[${item.field}]`;\n configuredItems.set(item.field, brick);\n }\n }\n }\n }\n }\n\n const convertedList = Array.isArray(list)\n ? await Promise.all(\n list.map(async ({ render, ...item }) => {\n if (render) {\n const patterns = new Map<string, string>();\n if (render.params.length > 0) {\n patterns.set(render.params[0], \"DATA\");\n }\n\n const useBrick = (\n await Promise.all(\n render.children.map((child) =>\n convertComponent(child, view, options)\n )\n )\n ).flatMap((child) => deepReplaceVariables(child, patterns));\n\n return {\n label: item.label,\n useBrick,\n };\n }\n const brick = item.field\n ? configuredItems.get(item.field)\n : undefined;\n return brick\n ? {\n label: item.label,\n useChildren: `[${item.field}]`,\n }\n : item;\n })\n )\n : list;\n\n return {\n brick: \"eo-descriptions\",\n properties: {\n ...restProps,\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n // descriptionTitle: title,\n list: convertedList,\n ...(columns == null\n ? {\n column: options.expanded ? 3 : 1,\n templateColumns: \"repeat(auto-fill,minmax(360px,1fr))\",\n }\n : {\n column: columns,\n }),\n // showCard: !options.expanded,\n themeVariant: \"elevo\",\n },\n children:\n configuredItems.size > 0 ? Array.from(configuredItems.values()) : [],\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { CardProps } from \"../lib/components.js\";\n\nexport default function convertCard(component: Component): BrickConf {\n const { properties } = component;\n const { title, textContent } = properties as CardProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-card\",\n properties: {\n themeVariant: \"elevo\",\n cardTitle: title,\n background: \"#fff\",\n outline: \"background\",\n ...(textContent ? { textContent } : null),\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ButtonProps } from \"../lib/components.js\";\n\nexport default function convertButton(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as ButtonProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-button\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { FormProps } from \"../lib/components.js\";\n\nexport default function convertForm(component: Component): BrickConf {\n const { properties } = component;\n const { values } = (properties ?? {}) as FormProps<object>;\n\n return {\n brick: \"eo-form\",\n properties: {\n values: values ?? {},\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertToolbar(_component: Component): BrickConf {\n return {\n brick: \"eo-flex-layout\",\n properties: {\n gap: \"0.5em\",\n alignItems: \"center\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ModalProps } from \"../lib/components.js\";\n\nexport default function convertModal(component: Component): BrickConf {\n const { properties } = component;\n const { title, confirmText, cancelText, ...restProps } =\n properties as Partial<ModalProps> & {\n textContent?: string;\n };\n return {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n themeVariant: \"elevo\",\n modalTitle: title,\n confirmText: confirmText,\n cancelText: cancelText,\n keyboard: true,\n ...restProps,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertText(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as {\n textContent?: string;\n };\n return {\n brick: \"span\",\n properties: {\n ...props,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { LinkProps } from \"../lib/components.js\";\n\nexport default function convertLink(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as LinkProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-link\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertOutput(component: Component): BrickConf {\n const { properties } = component;\n const { style, ...restProps } = properties as {\n textContent?: string;\n style?: Record<string, any>;\n };\n\n return {\n brick: \"pre\",\n properties: {\n style: {\n background: \"hsl(230, 1%, 98%)\",\n color: \"hsl(230, 8%, 24%)\",\n fontFamily:\n '\"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace',\n direction: \"ltr\",\n textAlign: \"left\",\n whiteSpace: \"pre\",\n wordSpacing: \"normal\",\n wordBreak: \"normal\",\n lineHeight: \"1.5\",\n tabSize: \"2\",\n hyphens: \"none\",\n fontSize: \"13px\",\n\n padding: \"1em\",\n // margin: \"0.5em 0\",\n margin: \"0\",\n overflowX: \"auto\",\n borderRadius: \"9px\",\n ...style,\n },\n ...restProps,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { TagProps } from \"../lib/components.js\";\n\nexport default function convertTag(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as TagProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-tag\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { AvatarProps } from \"../lib/components.js\";\n\nexport default function convertAvatar(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as AvatarProps;\n return {\n brick: \"eo-avatar\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { AvatarGroupProps } from \"../lib/components.js\";\n\nexport default function convertAvatarGroup(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as AvatarGroupProps;\n return {\n brick: \"eo-avatar-group\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { CodeBlockProps } from \"../lib/components.js\";\n\nexport default function convertCodeBlock(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as Partial<CodeBlockProps>;\n return {\n brick: \"eo-code-block\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertFormItem(\n component: Component,\n type: string\n): BrickConf {\n const { properties } = component;\n\n let brick = type;\n let props: Record<string, unknown> = {\n ...properties,\n themeVariant: \"elevo\",\n };\n\n switch (brick) {\n case \"eo-search\":\n props = {\n ...props,\n trim: true,\n };\n break;\n case \"eo-number-input\":\n brick = \"eo-input\";\n props = {\n type: \"number\",\n ...props,\n };\n break;\n }\n\n return {\n brick,\n properties: props,\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertForEach(component: Component): BrickConf {\n const { properties } = component;\n const { dataSource } = properties as {\n dataSource?: unknown;\n };\n return {\n brick: \":forEach\",\n dataSource,\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertIf(component: Component): BrickConf {\n const { properties } = component;\n const { dataSource } = properties as {\n dataSource?: unknown;\n };\n return {\n brick: \":if\",\n dataSource,\n };\n}\n","import type { ContextConf } from \"@next-core/types\";\nimport { pipes } from \"@easyops-cn/brick-next-pipes\";\nimport type { ParseResult } from \"@next-shared/tsx-parser\";\nimport { withBox } from \"./withBox.js\";\nimport { convertDataSources } from \"./convertDataSources.js\";\nimport { convertVariables } from \"./convertVariables.js\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport type { ConvertOptions, ConvertResult } from \"./interfaces.js\";\nimport { convertTemplates } from \"./convertTemplates.js\";\nimport { getViewTitle } from \"./getViewTitle.js\";\n\nconst BUILTIN_FUNCTIONS: ContextConf[] = [\n {\n name: \"__builtin_fn_mergeTexts\",\n value: mergeTexts,\n },\n {\n name: \"__builtin_fn_getLatestMetricValue\",\n value: getLatestMetricValue,\n },\n {\n name: \"__builtin_fn_extractList\",\n value: extractList,\n },\n {\n name: \"__builtin_fn_groupMetricData\",\n value: groupMetricData,\n },\n {\n name: \"__builtin_fn_getMetricDisplayNames\",\n value: getMetricDisplayNames,\n },\n];\n\nexport async function convertTsx(\n result: ParseResult,\n options: ConvertOptions\n): Promise<ConvertResult> {\n const context: ContextConf[] = [\n ...convertDataSources(result.dataSources ?? []),\n ...convertVariables(result.variables ?? []),\n ...(options.withContexts\n ? Object.entries(options.withContexts).map(([name, value]) => ({\n name,\n value,\n }))\n : []),\n ...BUILTIN_FUNCTIONS,\n ];\n\n if (result.components.length !== 1 || result.components[0].name !== \"View\") {\n throw new Error(\"Only single root component <View> is supported\");\n }\n\n const view = result.components[0];\n\n const children = (\n await Promise.all(\n (view.children ?? []).map((component) =>\n convertComponent(component, result, options)\n )\n )\n ).flat();\n\n const needBox = result.components.every((component) =>\n [\"Form\", \"Descriptions\", \"Button\"].includes(component.name)\n );\n\n const templates = await convertTemplates(result.templates, result, options);\n\n return {\n title: getViewTitle(result),\n brick: {\n brick: \"eo-content-layout\",\n children: needBox ? [withBox(children, options)] : children,\n },\n context,\n functions: result.functions,\n templates,\n };\n}\n\nfunction mergeTexts(\n ...items: (\n | { type: \"text\"; text: string }\n | { type: \"expression\"; value: unknown }\n )[]\n): string {\n const texts: string[] = [];\n for (const item of items) {\n if (item.type === \"text\") {\n texts.push(item.text.trim());\n } else {\n texts.push(mergeValuesAsText(item.value));\n }\n }\n return texts.join(\"\");\n}\n\nfunction mergeValuesAsText(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map(mergeValuesAsText).join(\"\");\n }\n const type = typeof value;\n if (type === \"string\" || type === \"number\") {\n return String(value);\n }\n if (type === \"object\" && value !== null) {\n throw new Error(\"Can not render object as text\");\n }\n return \"\";\n}\n\nfunction getLatestMetricValue(\n list: Record<string, any>[] | undefined,\n {\n metric,\n precision,\n }: { metric: { id: string; unit: string }; precision?: number }\n) {\n const value = list?.findLast?.((item) => item[metric.id] != null)?.[\n metric.id\n ];\n const unit = metric.unit === \"load\" ? \"\" : metric.unit;\n return pipes.unitFormat(value, unit, precision).join(\"\");\n}\n\nfunction extractList<T = unknown>(data: T[] | { list: T[] }): T[] {\n if (Array.isArray(data)) {\n return data;\n }\n return data?.list;\n}\n\nfunction groupMetricData(list: Record<string, any>[], groupField: string) {\n if (!list || !Array.isArray(list) || list.length === 0) {\n return [];\n }\n const grouped = new Map<\n string,\n { group: string; list: Record<string, any>[] }\n >();\n for (const item of list) {\n const key = item[groupField];\n let groupedList = grouped.get(key);\n if (!groupedList) {\n grouped.set(key, (groupedList = { group: key, list: [] }));\n }\n groupedList.list.push(item);\n }\n return Array.from(grouped.values());\n}\n\nfunction getMetricDisplayNames(\n displayNameList:\n | { metric_name: string; metric_display_name: string }[]\n | undefined,\n metricNames: string[]\n): string[] {\n return metricNames.map(\n (metricName) =>\n displayNameList?.find((item) => item.metric_name === metricName)\n ?.metric_display_name ?? metricName\n );\n}\n"],"names":["remoteWorkerPromise","worker","getRemoteTsxParserWorker","Remote","wrap","Worker","URL","getViewTitle","result","_view$properties","view","components","find","comp","name","viewTitle","properties","title","isExpressionString","createPortal","rootId","portal","document","createElement","dataset","style","position","width","height","body","append","EXPRESSION_PREFIX_REG","EXPRESSION_SUFFIX_REG","value","trimmed","trim","test","withBox","children","options","brick","expanded","background","backdropFilter","borderRadius","padding","convertDataSources","dataSources","map","_ref","http","api","params","tool","transform","rejectTransform","config","scope","hasEnabled","Object","prototype","hasOwnProperty","call","resolve","useProvider","args","isObject","translate","limit","undefined","limitBy","order","displayName","onReject","if","enabled","track","fallback","expose","convertVariables","variables","parseDataSource","data","isString","expression","expr","replace","console","warn","JSON","stringify","embedded","usedContexts","strictCollectMemberUsage","convertEventHandlers","handler","list","Array","isArray","hdl","action","payload","_handler$callback","success","callback","error","target","componentId","method","type","content","detail","convertEventHandler","filter","Boolean","length","VALID_IDENTIFIER_REG","getMemberAccessor","property","propertyStr","String","pick","_","convertToStoryboard","attr","lowLevelConvertToStoryboard","attrAccessor","brickItem","display","getPlainBrick","countOnly","_config$style","_config$style2","_config$style3","_config$style4","_config$style5","colorSuffix","variant","valueAccessor","getValueAccessor","textContent","size","getTagSize","color","palette","replaceAll","outline","getIconBrick","alignItems","gap","maxItems","Number","dataSource","_config$true$icon","_config$true","_config$false$icon","_config$false","_config$true2","_config$false2","trueIcon","true","icon","falseIcon","false","trueStyle","getPlainStyle","falseStyle","lib","prefix","category","theme","_config$formatter","formatter","format","isCostTime","tag","_config$true$text","_config$true3","_config$false$text","_config$false3","_config$true4","_config$false4","trueContent","text","falseContent","field","configStyle","ignoreStyle","fontSize","fontWeight","findNearestCandidate","candidates","weight","reduce","nearest","candidate","Math","abs","visualWeight","cache","Map","async","getModelObjectInstanceId","objectId","has","get","promise","InstanceApi_postSearchV3","fields","query","$eq","page_size","instanceId","doGetModelObjectInstanceId","set","attrListCache","getPreGeneratedAttrViews","attrViews","attrList","join","InstanceApi_getDetail","doGetAttrList","getAttrList","_attr$generatedView","select","generatedView","id","e","doGetPreGeneratedAttrViews","findObjectIdByUsedDataContexts","dataSourceToObjectIdMap","variableDepsMap","variable","deps","processedContexts","Set","context","add","dataSourceObjectId","variableDeps","dep","deepReplaceVariables","patterns","item","fromEntries","entries","k","v","keys","some","includes","replacements","preevaluate","withParent","hooks","beforeVisitGlobal","node","path","p","shorthand","computed","push","source","suffix","chunks","prevStart","i","start","end","substring","replaceVariables","columnUseBrickParams","COLORS","convertHexColorToRGBA","alpha","hex","slice","bigint","parseInt","counter","tplNameMap","getTplNamePrefixByRootId","getTplNameSuffix","toLowerCase","convertComponent","component","_component$children","tpl","templates","t","props","parsedDataSource","themeVariant","convertList","_columns$","columns","rowKey","pagination","restProps","configuredColumns","column","render","dataIndex","slot","convertedColumns","Promise","all","useBrick","child","flatMap","startsWith","useChildren","key","scrollConfig","x","bordered","from","values","convertTable","configuredItems","convertedList","_ref2","label","templateColumns","convertDescriptions","cardTitle","convertCard","groupField","_groupField","widgets","chartData","mergedWidgets","metricGroups","groups","doGetPreGeneratedMetricGroups","getPreGeneratedMetricGroups","mergedMetrics","metricIds","w","metric","widget","mergedWidget","group","g","metrics","relevantMetrics","m","counterMetric","groupTitle","metricId","delete","colorCursor","gridTemplateColumns","_widget$relevantMetri","_widget$relevantMetri2","precision","colorCount","colors","unit","chart","xField","yFields","yField","forceAbsoluteNumbers","series","isNegative","timeFormat","areaOptions","fill","axis","yAxis","min","max","shape","areaShape","legends","tooltip","marker","stroke","lineWidth","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","domStyles","boxShadow","border","marginBottom","flexDirection","lineColor","showArea","convertDashboard","convertButton","convertForm","confirmText","cancelText","modalTitle","keyboard","convertModal","convertText","convertLink","fontFamily","direction","textAlign","whiteSpace","wordSpacing","wordBreak","lineHeight","tabSize","hyphens","margin","overflowX","convertOutput","convertTag","convertAvatar","convertAvatarGroup","convertCodeBlock","convertFormItem","convertForEach","convertIf","_brick","_brick$properties","_brick$properties2","_brick$properties2$da","events","event","_component$events","click","search","convertEvents","flat","BUILTIN_FUNCTIONS","texts","_len","arguments","items","_key","mergeValuesAsText","_list$findLast","findLast","pipes","unitFormat","grouped","groupedList","displayNameList","metricNames","metricName","_displayNameList$find","_displayNameList$find2","metric_name","metric_display_name","convertTsx","_result$dataSources","_result$variables","_view$children","withContexts","Error","needBox","every","tplNamePrefix","_tpl$dataSources","_tpl$variables","bricks","state","convertTemplates","functions"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (()=>{"use strict";var e,r,t,n,s,o,i,a,p,l,u,c,d,m,f,y,g,h,v,x={9474:(e,r,t)=>{var n=t(40580),s=t(58135);const o=/^<%=?\s/,i=/\s%>$/;function a(e){let r=null;return s.traverse(e,{enter(e,t){var n;!r&&(s.isFunctionExpression(e)||s.isStatement(e)||s.isJSX(e)||s.isArrowFunctionExpression(e)&&(s.isBlockStatement(e.body)||s.isObjectProperty(null===(n=t[t.length-1])||void 0===n?void 0:n.node)))&&(r=e)}}),r}function p(e){return s.isNullLiteral(e)||s.isIdentifier(e)&&"undefined"===e.name}function l(e){let r=!1;return s.traverse(e,{enter(e){r||!s.isJSXElement(e)&&!s.isJSXFragment(e)||(r=!0)}}),r}function u(e){return e.slice(2).replace(/([a-z])([A-Z])/g,"$1.$2").toLowerCase()}var c=t(71321);function d(e,r){return f(e,new Map([...r.templateCollection?r.templateCollection.identifiers.map((e=>[e,`STATE.${e}`])):r.contexts.map((e=>[e,`CTX.${e}`])),...r.functionNames.map((e=>[e,`FN.${e}`]))]))}function m(e,r,t){return function(e,r){if(null==r||!r.size)return e;if([...r.keys()].some((r=>e.includes(r)))){const t=[];let n;try{n=(0,c.precookFunction)(e,{withParent:!0,hooks:{beforeVisitGlobal(e,n){if(r.has(e.name)){var s;const r=null===(s=n[n.length-1])||void 0===s?void 0:s.node;let o;r&&"Property"===r.type&&!r.computed&&r.shorthand&&(o=!0),t.push({id:e,shorthand:o})}}}})}catch(e){console.error("Parse function failed:",e)}if(t.length>0&&n){const n=[];let s=0;for(let o=0;o<t.length;o++){const{id:i,shorthand:a}=t[o],{name:p,start:l,end:u}=i;n.push(e.substring(s,l),`${a?`${p}: `:""}${r.get(p)}`),s=u}return n.push(e.substring(s)),n.join("")}}return e}(e,new Map(r.functionNames.filter((e=>e!==t)).map((e=>[e,`FN.${e}`]))))}function f(e,r){if(null==r||!r.size)return e;if([...r.keys()].some((r=>e.includes(r)))){const t=[];let n;try{n=(0,c.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal(e,n){if(r.has(e.name)){var s;const r=null===(s=n[n.length-1])||void 0===s?void 0:s.node;let o;r&&"Property"===r.type&&!r.computed&&r.shorthand&&(o=!0),t.push({id:e,shorthand:o})}}}})}catch(e){console.error("Parse expression failed:",e)}if(t.length>0&&n){const{prefix:e,source:s,suffix:o}=n,i=[];let a=0;for(let e=0;e<t.length;e++){const{id:n,shorthand:o}=t[e],{name:p,start:l,end:u}=n;i.push(s.substring(a,l),`${o?`${p}: `:""}${r.get(p)}`),a=u}return i.push(s.substring(a)),`${e}${i.join("")}${o}`}}return e}const y={callApi:[2,3],callHttp:[1,2],callTool:[2,3]};function g(e,r,t,n){if(!s.isCallExpression(e)&&!s.isOptionalCallExpression(e))return r.errors.push({message:`Await expression must be a call expression, received ${e.type}`,node:e,severity:"error"}),null;const{callee:a}=e;let l;if(!s.isIdentifier(a))return r.errors.push({message:`Await expression must call an identifier, received ${a.type}`,node:a,severity:"error"}),null;if(l=a.name,"callApi"!==l&&"callHttp"!==l&&"callTool"!==l)return r.errors.push({message:`Await expression must call "callApi", "callHttp" or "callTool", received "${l}"`,node:a,severity:"error"}),null;const u=y[l],c=e.arguments.length<u[0];if((c||!u.includes(e.arguments.length))&&(r.errors.push({message:`"${l}()" expects ${u.join(" or ")} arguments, but got ${e.arguments.length}`,node:e,severity:c?"error":"warning"}),c))return null;let d;const m=e.arguments[0];if("callHttp"===l){const e=S(m,r,{...n,allowExpression:!0});if("string"!=typeof e)return r.errors.push({message:`"${l}()" expects a string value as the first argument, but got ${typeof e}`,node:m,severity:"error"}),null;d={api:e,http:!0}}else if("callApi"===l){if(!s.isStringLiteral(m))return r.errors.push({message:`"${l}()" expects a string literal as the first argument, but got ${m.type}`,node:m,severity:"error"}),null;d={api:m.value}}else{const t=S(m,r,{...n,allowExpression:!0});if("string"!=typeof t)return r.errors.push({message:`"${l}()" expects a string value as the first argument, but got ${typeof t}`,node:m,severity:"error"}),null;const s=e.arguments[1],o=S(s,r,{...n,allowExpression:!0});if("string"!=typeof o)return r.errors.push({message:`"${l}()" expects a string value as the second argument, but got ${typeof o}`,node:s,severity:"error"}),null;const i=e.arguments[2];let a;i&&(a=S(i,r,{...n,allowExpression:!0})),d={api:l,tool:{conversationId:t,stepId:o},params:a}}if("callApi"===l||"callHttp"===l){const a=e.arguments[1];if(a&&!p(a)){s.isObjectExpression(a)||r.errors.push({message:`Data source "params" prefers an object literal, but got ${a.type}`,node:a,severity:"notice"});const e=S(a,r,{...n,allowExpression:!0});(function(e){if("string"!=typeof e)return!1;const r=e.trim();return o.test(r)&&i.test(r)})(e)||"object"==typeof e&&null!==e?d.params=e:r.errors.push({message:"API params expects an object or expression, but got "+typeof e,node:a,severity:"error"}),null!=t&&t.reward&&(d.ambiguousParams=S(a,{...r,errors:[]},{allowExpression:!0,ambiguous:!0}))}}if("callApi"===l){const t=e.arguments[2];if(t&&!p(t))if(s.isObjectExpression(t))for(const e of t.properties){if(!s.isObjectProperty(e)){r.errors.push({message:`"callApi()" third param "meta" expects object properties, but got ${e.type}`,node:e,severity:"error"});continue}const t=e.key;if(!s.isIdentifier(t)){r.errors.push({message:`"callApi()" third param "meta" property key must be an identifier, but got ${t.type}`,node:t,severity:"error"});continue}if("objectId"!==t.name){r.errors.push({message:`"callApi()" third param "meta" property key must be "objectId", but got "${t.name}"`,node:t,severity:"error"});continue}const n=e.value;if(!p(n)){if(!s.isStringLiteral(n)){r.errors.push({message:`"callApi()" third param "meta" property "${t.name}" expects a string literal, but got ${n.type}`,node:n,severity:"error"});continue}d.objectId=n.value}}else r.errors.push({message:`"callApi()" third param "meta" expects an object literal, but got ${t.type}`,node:t,severity:"error"})}return d}function h(e,r,t,n,o){var i;if(!s.isArrowFunctionExpression(e))return r.errors.push({message:`Expected arrow function expression as event handler, but got ${e.type}`,node:e,severity:"error"}),null;if(e.params.length>1)return r.errors.push({message:`Event handler expects 0 or 1 parameter, but got ${e.params.length}`,node:e,severity:"error"}),null;const a=new Map(null!==(i=null==n?void 0:n.replacePatterns)&&void 0!==i?i:[]),p=e.params[0];if(p){if(!s.isIdentifier(p))return r.errors.push({message:`Event handler parameter expects an identifier, but got ${p.type}`,node:p,severity:"error"}),null;const e=p.name;a.set(e,o?"EVENT.detail":"EVENT"),r.contexts.includes(e)&&r.errors.push({message:`Event handler parameter "${e}" conflicts with existing global variables`,node:p,severity:"error"})}if(!s.isBlockStatement(e.body))return r.errors.push({message:`Event handler body expects a block statement, but got ${e.body.type}`,node:e.body,severity:"error"}),null;const l=[];for(const o of e.body.body)if(s.isExpressionStatement(o))if(s.isAssignmentExpression(o.expression)){const{left:e,right:t}=o.expression;if(!s.isIdentifier(e)){r.errors.push({message:`Assignment in event handler expects an identifier on the left side, but got ${e.type}`,node:e,severity:"error"});continue}const i=S(t,r,{...n,allowExpression:!0,replacePatterns:a});l.push({action:"update_variable",payload:{name:e.name,value:i}})}else if(s.isCallExpression(o.expression)||s.isOptionalCallExpression(o.expression)){const{callee:e,arguments:i}=o.expression;if(s.isMemberExpression(e)||s.isOptionalMemberExpression(e)){if(!s.isCallExpression(e.object)){r.errors.push({message:`Member expression in event handler expects a call expression as object, but got ${e.object.type}`,node:e.object,severity:"error"});continue}if(!s.isIdentifier(e.object.callee)){r.errors.push({message:`Member expression in event handler expects an identifier as callee, but got ${e.object.callee.type}`,node:e.object.callee,severity:"error"});continue}if(!s.isIdentifier(e.property)){r.errors.push({message:`Member expression in event handler expects an identifier as property, but got ${e.property.type}`,node:e.property,severity:"error"});continue}const p=e.object.callee.name,u=e.object.arguments;if("getComponent"===p){if(2!==u.length){r.errors.push({message:`"getComponent()" expects 2 arguments, but got ${u.length}`,node:o.expression,severity:"error"});continue}const t=u[0];if(!s.isStringLiteral(t)){r.errors.push({message:`"getComponent()" expects a string literal as its first argument, but got ${t.type}`,node:t,severity:"error"});continue}const n=u[1];if(!s.isStringLiteral(n)){r.errors.push({message:`"getComponent()" expects a string literal as its second argument, but got ${n.type}`,node:n,severity:"error"});continue}l.push({action:"call_component",payload:{componentId:n.value,method:e.property.name,args:i.map((e=>S(e,r,{allowExpression:!0,replacePatterns:a})))}})}else if("callApi"===p||"callHttp"===p){if("then"!==e.property.name){r.errors.push({message:`"${p}()" expects "then" as its method, but got ${e.property.name}`,node:e.property,severity:"error"});continue}if(1!==i.length){r.errors.push({message:`"${p}().then()" expects exactly 1 argument, but got ${i.length}`,node:o.expression,severity:"error"});continue}const s=g(e.object,r,t,{replacePatterns:a});if(!s)continue;r.contracts.add(s.api);const u=h(i[0],r,t,n,!0);l.push({action:"call_api",payload:s,callback:u?{success:u}:void 0})}else r.errors.push({message:`Unsupported action in event handler: ${p}`,node:e.object.callee,severity:"error"});continue}if(!s.isIdentifier(e)){r.errors.push({message:`Call expression in event handler expects an identifier as callee, but got ${e.type}`,node:e,severity:"error"});continue}if(r.templateCollection){if(r.templateCollection.setters.has(e.name)){const t=i[0];l.push({action:"update_variable",payload:{scope:"template",name:r.templateCollection.setters.get(e.name),value:void 0===t?void 0:S(t,r,{allowExpression:!0,replacePatterns:a})}}),1!==i.length&&r.errors.push({message:`State setter expects exactly 1 argument, but got ${i.length}`,node:i[1],severity:"error"});continue}}else if(r.contextSetters.has(e.name)){const t=i[0];l.push({action:"update_variable",payload:{name:r.contextSetters.get(e.name),value:void 0===t?void 0:S(t,r,{allowExpression:!0,replacePatterns:a})}}),1!==i.length&&r.errors.push({message:`State setter expects exactly 1 argument, but got ${i.length}`,node:i[1],severity:"error"});continue}if("showMessage"===e.name){if(1!==i.length){r.errors.push({message:`"showMessage()" expects 1 argument, but got ${i.length}`,node:o.expression,severity:"error"});continue}const e=S(i[0],r,{allowExpression:!0,replacePatterns:a});l.push({action:"show_message",payload:e})}else if("refresh"===e.name){if(1!==i.length){r.errors.push({message:`"refresh()" expects 1 argument, but got ${i.length}`,node:o.expression,severity:"error"});continue}if(!s.isIdentifier(i[0])){r.errors.push({message:`"refresh()" expects an identifier as its argument, but got ${i[0].type}`,node:i[0],severity:"error"});continue}l.push({action:"refresh_data_source",payload:{name:i[0].name}})}else if("callApi"===e.name||"callHttp"===e.name){const e=g(o.expression,r,t,{replacePatterns:a});if(!e)continue;r.contracts.add(e.api),l.push({action:"call_api",payload:e})}else r.errors.push({message:`Unsupported action in event handler: ${e.name}`,node:e,severity:"error"})}else r.errors.push({message:`Unsupported event handler expression: ${o.expression.type}`,node:o.expression,severity:"error"});else r.errors.push({message:`Unsupported event handler statement: ${o.type}`,node:o,severity:"error"});return l}function v(e,r,t,n){if(s.isJSXElement(e)){if(!s.isJSXIdentifier(e.openingElement.name))return r.errors.push({message:`Expected JSXIdentifier, but got ${e.openingElement.name.type}`,node:e.openingElement.name,severity:"error"}),null;const a=e.openingElement.name.name;if("Fragment"===a){for(const t of e.openingElement.attributes)s.isJSXAttribute(t)&&s.isJSXIdentifier(t.name)&&"key"===t.name.name||r.errors.push({message:"Invalid attribute for Fragment",node:t,severity:"error"});return e.children.flatMap((e=>v(e,r,t,n)))}const l={},m={};let f,y;for(const a of e.openingElement.attributes){if(s.isJSXSpreadAttribute(a)){r.errors.push({message:"Spread attributes are not supported in component",node:a,severity:"error"});continue}if(!s.isJSXIdentifier(a.name)){r.errors.push({message:`Expected JSXIdentifier, but got ${a.name.type}`,node:a.name,severity:"error"});continue}const e=a.name.name;if(/^on[A-Z]/.test(e)){var o;if(!s.isJSXExpressionContainer(a.value)){var i,p;r.errors.push({message:`Event handler "${e}" expects a JSXExpressionContainer, but got ${null===(i=a.value)||void 0===i?void 0:i.type}`,node:null!==(p=a.value)&&void 0!==p?p:a,severity:"error"});continue}if(s.isJSXEmptyExpression(a.value.expression)){r.errors.push({message:"Empty expression in events is not allowed",node:a.value,severity:"warning"});continue}const n=a.value.expression;let l=null;l=s.isIdentifier(n)&&null!==(o=r.templateCollection)&&void 0!==o&&o.events.includes(n.name)?[{action:"dispatch_event",payload:{type:u(n.name),detail:"<% EVENT.detail %>"}}]:h(n,r,t),l&&(null!=f||(f={}),f[u(e)]=l)}else if("componentId"===e){if(!s.isStringLiteral(a.value)){var c,d;r.errors.push({message:`"componentId" attribute in component expects a string literal, but got ${null===(c=a.value)||void 0===c?void 0:c.type}`,node:null!==(d=a.value)&&void 0!==d?d:a,severity:"error"});continue}y=a.value.value}else if(null==a.value)l[e]=!0;else if(s.isStringLiteral(a.value))l[e]=a.value.value,m[e]=a.value.value;else if(s.isJSXExpressionContainer(a.value)){if(s.isJSXEmptyExpression(a.value.expression)){r.errors.push({message:`Empty expression in JSX attribute "${e}" is not allowed`,node:a.value,severity:"warning"});continue}l[e]=w(a.value.expression,r,{...n,allowExpression:!0,allowUseBrick:!0,modifier:"="}),null!=t&&t.reward&&(m[e]=S(a.value.expression,{...r,errors:[]},{allowExpression:!0,ambiguous:!0}))}else r.errors.push({message:`Unsupported attribute value type in component: ${a.value.type}`,node:a.value,severity:"error"})}const{textContent:g,children:b}=x(e.children,r,t,n);g&&(l.textContent=g);const $={name:a,componentId:y,properties:l,events:f,children:b};return null!=t&&t.reward&&($.ambiguousProps=m),y&&(r.componentsMap.has(y)?r.errors.push({message:`Duplicated componentId "${y}" found`,node:e,severity:"error"}):r.componentsMap.set(y,$)),{type:"component",component:$}}if(s.isJSXFragment(e))return e.children.flatMap((e=>v(e,r,t,n)));if(s.isJSXText(e))return e.value.trim()?{type:"text",text:e.value}:null;if(s.isJSXExpressionContainer(e))return v(e.expression,r,t,n);if(s.isJSXEmptyExpression(e))return null;if(s.isCallExpression(e)){const o=e.callee;if(s.isMemberExpression(o)&&s.isIdentifier(o.property)&&!o.computed&&"map"===o.property.name){const i=e.arguments;if(i.length>0){i.length>1&&r.errors.push({message:"Only one argument is allowed for map function",node:i[1],severity:"error"});const[e]=i;if(s.isArrowFunctionExpression(e)){if(s.isBlockStatement(e.body))return r.errors.push({message:"Block statement is not allowed in map function",node:e.body,severity:"error"}),null;if(l(e.body)){var m;const i=a(o.object);if(i)return r.errors.push({message:`Unsupported node type as the object of a map function with JSX element: ${i.type}`,node:i,severity:"error"}),null;if(e.params.length>2)return r.errors.push({message:"Only up to 2 parameters are allowed in map function with JSX element",node:e,severity:"error"}),null;const p=e.params.find((e=>!s.isIdentifier(e)));if(p)return r.errors.push({message:"Only identifier parameters are allowed in map function with JSX element",node:p,severity:"error"}),null;const l=new Map(null!==(m=null==n?void 0:n.replacePatterns)&&void 0!==m?m:[]);if(e.params.length>0){const[r,t]=e.params;l.set(r.name,"ITEM"),t&&l.set(t.name,"INDEX")}return{type:"component",component:{name:"ForEach",properties:{dataSource:w(o.object,r,{...n,modifier:"=",allowExpression:!0})},children:$([e.body],r,t,{...n,replacePatterns:l})}}}}}}}else if(s.isConditionalExpression(e)){const{test:s,consequent:o,alternate:i}=e;if(l(o)||l(i)){const e=a(s);return e?(r.errors.push({message:`Unsupported node type in conditional expression test: ${e.type}`,node:e,severity:"error"}),null):{type:"component",component:{name:"If",properties:{dataSource:w(s,r,{...n,modifier:"=",allowExpression:!0})},children:[...$([o],r,t,n),...$([i],r,t,n).map((e=>({...e,slot:"else"})))]}}}}else if(s.isLogicalExpression(e)){const{left:s,right:o,operator:i}=e;if(("&&"===i||"||"===i)&&l(o)){const i=a(s);if(i)return r.errors.push({message:`Unsupported node type in logical expression left: ${i.type}`,node:i,severity:"error"}),null;const p=$([o],r,t,n);return{type:"component",component:{name:"If",properties:{dataSource:w(s,r,{...n,modifier:"=",allowExpression:!0})},children:"&&"===e.operator?p:p.map((e=>({...e,slot:"else"})))}}}}if(s.isExpression(e)){const t=a(e);return t?(r.errors.push({message:`Unsupported node type in expression: ${t.type}`,node:t,severity:"error"}),null):{type:"expression",expression:e}}return r.errors.push({message:`Unsupported node type in component: ${e.type}`,node:e,severity:"error"}),null}function x(e,r,t,n){let s=e.flatMap((e=>v(e,r,t,n))),o=s.every((e=>"text"===(null==e?void 0:e.type)));if(!o){let e=null;const r=[];for(const t of s){if(null===t);else if("text"===t.type||"expression"===t.type){var i,a,p;if("text"===(null===(i=e)||void 0===i?void 0:i.type)||"expression"===(null===(a=e)||void 0===a?void 0:a.type)){e={type:"merged",children:[e,t]},r.splice(r.length-1,1,e);continue}if("merged"===(null===(p=e)||void 0===p?void 0:p.type)){e.children.push(t);continue}}e=t,r.push(t)}s=r,o=s.every((e=>"text"===(null==e?void 0:e.type)||"merged"===(null==e?void 0:e.type)&&e.children.every((e=>"text"===e.type))))}return o?{textContent:s.flatMap((e=>"text"===e.type?e.text:e.children.map((e=>e.text)))).join("").trim()}:s.every((e=>!!e&&"component"!==e.type))?{textContent:f(d(b(s.flatMap((e=>"merged"===e.type?e.children:e)),r.source),r),null==n?void 0:n.replacePatterns)}:{children:s.filter((e=>!!e)).map((e=>"component"===e.type?e.component:{name:"Plaintext",properties:{textContent:"text"===e.type?e.text:f(d("expression"===e.type?`<%= ${k(r.source,e.expression)} %>`:b(e.children,r.source),r),null==n?void 0:n.replacePatterns)}}))}}function b(e,r){return`<%= CTX.__builtin_fn_mergeTexts(${e.map((e=>"text"===e.type?JSON.stringify(e):`{type:"expression",value:(${k(r,e.expression)})}`)).join(", ")}) %>`}function $(e,r,t,n){const{textContent:s,children:o}=x(e,r,t,n);return null!=o?o:[{name:"Plaintext",properties:{textContent:s}}]}const E=Symbol("ambiguous");function S(e,r,t){if(s.isObjectExpression(e))return function(e,r,t){if(e.properties.some((e=>s.isSpreadElement(e)))&&t.allowExpression){const s=a(e);if(!s){var n;if(t.ambiguous)return E;const s=k(r.source,e);return f(d(`<%${null!==(n=t.modifier)&&void 0!==n?n:""} ${s} %>`,r),null==t?void 0:t.replacePatterns)}r.errors.push({message:`Unsupported node type: ${s.type}`,node:s,severity:"error"})}const o={};for(const n of e.properties)if(s.isObjectProperty(n)){if(n.computed||n.shorthand){r.errors.push({message:"Computed properties and shorthand properties are not supported",node:n.key,severity:"error"});continue}let e;if(s.isIdentifier(n.key))e=n.key.name;else{if(!s.isStringLiteral(n.key)){r.errors.push({message:`Unsupported object key type: ${n.key.type}`,node:n.key,severity:"error"});continue}e=n.key.value}o[e]=S(n.value,r,t)}else r.errors.push({message:`Unsupported property type: ${n.type}`,node:n,severity:"error"});return o}(e,r,t);if(s.isArrayExpression(e))return function(e,r,t){if(e.elements.some((e=>s.isSpreadElement(e)))&&t.allowExpression){const s=a(e);if(!s){var n;if(t.ambiguous)return E;const s=k(r.source,e);return f(d(`<%${null!==(n=t.modifier)&&void 0!==n?n:""} ${s} %>`,r),null==t?void 0:t.replacePatterns)}r.errors.push({message:`Unsupported node type: ${s.type}`,node:s,severity:"error"})}const o=[];for(const n of e.elements)null!==n?s.isSpreadElement(n)?r.errors.push({message:"Spread elements are not supported in arrays",node:n,severity:"error"}):o.push(S(n,r,t)):r.errors.push({message:"Array elements cannot be empty",node:e,severity:"error"});return o}(e,r,t);if(s.isStringLiteral(e)||s.isNumericLiteral(e)||s.isBooleanLiteral(e))return e.value;if(s.isNullLiteral(e))return null;if(!s.isIdentifier(e)||"undefined"!==e.name){if(t.allowUseBrick&&s.isArrowFunctionExpression(e)){const n=e.body;if(s.isBlockStatement(n))return r.errors.push({message:"Block statements are not supported in render callback",node:n,severity:"error"}),null;const o=[];for(const t of e.params){if(!s.isIdentifier(t))return r.errors.push({message:`Unsupported parameter type: ${t.type}`,node:t,severity:"error"}),null;o.push(t.name)}return{params:o,children:$([n],r,void 0,t)}}if(s.isExpression(e)&&t.allowExpression){const s=a(e);if(s)return r.errors.push({message:`Unsupported node type: ${s.type}`,node:s,severity:"error"}),null;{var n;if(t.ambiguous)return E;const s=k(r.source,e);return f(d(`<%${null!==(n=t.modifier)&&void 0!==n?n:""} ${s} %>`,r),null==t?void 0:t.replacePatterns)}}return r.errors.push({message:`Unsupported node type: ${e.type}`,node:e,severity:"error"}),null}}function w(e,r,t){let n=!1;if(s.traverse(e,{enter(e,r){var t;let o;n||s.isStringLiteral(e)||s.isNumericLiteral(e)||s.isBooleanLiteral(e)||s.isNullLiteral(e)||s.isObjectExpression(e)||s.isArrayExpression(e)||s.isObjectProperty(e)||s.isIdentifier(e)&&(o=null===(t=r[r.length-1])||void 0===t?void 0:t.node,1)&&(o&&s.isObjectProperty(o)?!o.computed&&!o.shorthand:"undefined"===e.name)||(n=!0)}}),n&&!a(e)){var o;const n=k(r.source,e);return f(d(`<%${null!==(o=t.modifier)&&void 0!==o?o:""} ${n} %>`,r),null==t?void 0:t.replacePatterns)}return S(e,r,t)}function k(e,r){const t=[];s.traverse(r,{enter(e){s.isTSTypeAnnotation(e)||s.isTSTypeParameterInstantiation(e)?t.push([e.start,e.end]):s.isTSAsExpression(e)&&t.push([e.expression.end,e.end])}});let n="",o=r.start;for(const[r,s]of t)r>o&&(n+=e.substring(o,r),o=s);return n+=e.substring(o,r.end),n}function I(e,r){e.async||e.generator?r.errors.push({message:"Function declaration cannot be async or generator",node:e,severity:"error"}):e.id?r.functions.push({name:e.id.name,source:m(r.source.slice(e.start,e.end),r,e.id.name),typescript:!0}):r.errors.push({message:"Function declaration must have a name",node:e,severity:"error"})}function j(e,r,t,n,s,o,i){var a;const p=g(e,r,t);if(!p)return null;r.contracts.add(p.api);const l={name:n,scope:r.templateCollection?"template":"view",config:i,...p};if(s){if(s.length>("catch"===o?1:2))return r.errors.push({message:`".${o}()" expects no more than 2 arguments, but got ${s.length}`,node:s[1],severity:"error"}),!1;if(s.length>0){const e=A(s[0],r);e&&(l["catch"===o?"rejectTransform":"transform"]=e)}if("catch"!==o&&s.length>1){const e=A(s[1],r);e&&(l.rejectTransform=e)}}(null!==(a=r.templateCollection)&&void 0!==a?a:r).dataSources.push(l)}function A(e,r){if(!s.isArrowFunctionExpression(e))return r.errors.push({message:`".then()" callback expects an arrow function, but got ${e.type}`,node:e,severity:"error"}),null;if(!s.isExpression(e.body))return r.errors.push({message:`".then()" callback function body expects an expression, but got ${e.body.type}`,node:e.body,severity:"error"}),null;var t;if(e.params.length>1)return r.errors.push({message:`".then()" callback function expects exactly 0 or 1 parameter, but got ${e.params.length}`,node:null!==(t=e.params[1])&&void 0!==t?t:e,severity:"error"}),null;const n=`<% ${k(r.source,e.body)} %>`;if(0===e.params.length)return n;const o=e.params[0];return s.isIdentifier(o)?f(n,new Map([[o.name,"DATA"]])):(r.errors.push({message:`".then()" callback function parameter expects an identifier, but got ${o.type}`,node:o,severity:"error"}),null)}function C(e,r,t,n){if(e.async||e.generator)return void r.errors.push({message:"Function declaration cannot be async or generator",node:e,severity:"error"});if("template"===t){if(e.params.length>1)return void r.errors.push({message:`Component function expects at most 1 parameter, but got ${e.params.length}`,node:e.params[1],severity:"error"})}else if(e.params.length>0)return void r.errors.push({message:`View function expects no parameter, but got ${e.params.length}`,node:e.params[0],severity:"error"});let o,i,a,p;if("template"===t){o=[],i=new Map,a=[],p=[];const t=[];r.templateCollection={identifiers:o,setters:i,dataSources:p,events:t};const n=e.params[0];if(n){if(!s.isObjectPattern(n))return r.errors.push({message:`Component function parameter expects an object pattern, but got ${n.type}`,node:n,severity:"error"}),void delete r.templateCollection;for(const e of n.properties){if(s.isRestElement(e)){r.errors.push({message:"Component function parameter does not support rest element",node:e,severity:"error"});continue}if(e.computed||!e.shorthand){r.errors.push({message:"Unexpected computed or non-shorthand property in component function parameter",node:e,severity:"error"});continue}if(!s.isIdentifier(e.key)){r.errors.push({message:`Component function parameter property expects an identifier as key, but got ${e.key.type}`,node:e.key,severity:"error"});continue}const n=e.key.name;if(/^on[A-Z]/.test(n))s.isIdentifier(e.value)||r.errors.push({message:`Event handler property "${n}" expects an identifier as value, but got ${e.value.type}`,node:e.value,severity:"error"}),t.push(n);else if(o.push(n),s.isAssignmentPattern(e.value)){const t=S(e.value.right,r,{allowExpression:!0});a.push({name:n,expose:!0,value:t})}else a.push({name:n,expose:!0})}}}else o=r.contexts,i=r.contextSetters,a=r.variables,p=r.dataSources;for(const r of e.body.body)if(s.isVariableDeclaration(r))for(const e of r.declarations)if(s.isCallExpression(e.init)&&s.isIdentifier(e.init.callee))switch(e.init.callee.name){case"useState":if(s.isArrayPattern(e.id)){const[r,t]=e.id.elements;if(s.isIdentifier(r)){const e=r.name;o.push(e),s.isIdentifier(t)&&i.set(t.name,e)}}break;case"useResource":if(s.isArrayPattern(e.id)){const[r]=e.id.elements;if(s.isIdentifier(r)){const e=r.name;o.push(e)}}}else s.isIdentifier(e.id)&&o.push(e.id.name);for(const o of e.body.body)if(s.isVariableDeclaration(o)){if("const"!==o.kind){r.errors.push({message:`Unsupported variable declaration kind: ${o.kind}`,node:o,severity:"error"});continue}for(const e of o.declarations){if(e.init&&s.isCallExpression(e.init)&&s.isIdentifier(e.init.callee))switch(e.init.callee.name){case"useState":{if(!s.isArrayPattern(e.id)){r.errors.push({message:`"useState()" return value must be destructured into an array pattern, received ${e.id.type}`,node:e.id,severity:"error"});continue}const[t,n]=e.id.elements;if(!s.isIdentifier(t)){r.errors.push({message:`"useState()" expects an identifier as the variable name, received ${null==t?void 0:t.type}`,node:t,severity:"error"});continue}if(n&&!s.isIdentifier(n)){r.errors.push({message:`"useState()" expects an identifier as the setter name, received ${n.type}`,node:n,severity:"error"});continue}const o=t.name,i=e.init.arguments;if(0===i.length)a.push({name:o,expose:!1});else{i.length>1&&r.errors.push({message:`"useState()" expects at most 1 argument, but got ${i.length}`,node:e.init,severity:"error"});const t=S(i[0],r,{allowExpression:!0});a.push({name:o,expose:!1,value:t})}continue}case"useResource":{if(!s.isArrayPattern(e.id)){r.errors.push({message:`"useResource()" return value must be destructured into an array pattern, received ${e.id.type}`,node:e.id,severity:"error"});continue}const[t]=e.id.elements;if(!s.isIdentifier(t)){r.errors.push({message:`"useResource()" expects an identifier as the variable name, received ${null==t?void 0:t.type}`,node:t,severity:"error"});continue}const o=t.name,i=e.init.arguments;(0===i.length||i.length>2)&&r.errors.push({message:`"useResource()" expects 1 or 2 arguments, but got ${i.length}`,node:e.init,severity:"error"});const a=i[0];if(!s.isArrowFunctionExpression(a)){r.errors.push({message:`"useResource()" expects an arrow function as the argument, but got ${a.type}`,node:a,severity:"error"});continue}if(a.async||a.generator){r.errors.push({message:'"useResource()" argument function cannot be async or generator',node:a,severity:"error"});continue}const p=a.body;if(s.isBlockStatement(p)){r.errors.push({message:'Block statement is not supported in "useResource()" argument function',node:p,severity:"error"});continue}if(!s.isCallExpression(p)){r.errors.push({message:`"useResource()" argument function must return a call expression, but got ${p.type}`,node:p,severity:"error"});continue}const{callee:l}=p;if(!s.isIdentifier(l)&&!s.isMemberExpression(l)){r.errors.push({message:`"useResource()" argument function must return a call to an identifier or member expression, but got ${l.type}`,node:l,severity:"error"});continue}const u=i[1];let c;if(u){if(!s.isObjectExpression(u)){r.errors.push({message:`"useResource()" second argument must be an object expression, but got ${u.type}`,node:u,severity:"error"});continue}for(const e of u.properties){if(!s.isObjectProperty(e)){r.errors.push({message:`Unsupported property type in "useResource()" second argument: ${e.type}`,node:e,severity:"error"});continue}const t=e.key;s.isIdentifier(t)?e.computed?r.errors.push({message:'"useResource()" second argument property key cannot be computed',node:t,severity:"error"}):"enabled"===t.name||"fallback"===t.name?(null!=c||(c={}),c[t.name]=S(e.value,r,{allowExpression:!0})):r.errors.push({message:`"useResource()" second argument property key must be "enabled" or "fallback", but got "${t.name}"`,node:t,severity:"error"}):r.errors.push({message:`"useResource()" second argument property key must be an identifier, but got ${t.type}`,node:t,severity:"error"})}}if(s.isMemberExpression(l)){if(!s.isIdentifier(l.property)||l.computed||"then"!==l.property.name&&"catch"!==l.property.name){r.errors.push({message:"Unexpected awaited expression",node:l.property,severity:"error"});continue}j(l.object,r,n,o,p.arguments,l.property.name,c)}else j(p,r,n,o,void 0,void 0,c);continue}}if(!s.isIdentifier(e.id)){r.errors.push({message:`Expect an identifier as the variable name, received ${e.id.type}`,node:e.id,severity:"error"});continue}const t=e.id.name;if(null==e.init)e.id.typeAnnotation||r.errors.push({message:`Variable "${t}" with no initial value must have a type annotation`,node:e.id,severity:"error"}),a.push({name:t});else{const n=S(e.init,r,{allowExpression:!0});a.push({name:t,value:n})}}}else{if(s.isReturnStatement(o)){var l;if(!s.isJSXElement(o.argument))return void r.errors.push({message:`Exported default declaration must be a JSX element, but got ${null===(l=o.argument)||void 0===l?void 0:l.type}`,node:o.argument,severity:"error"});const i=$([o.argument],r,n);return void("template"===t?(r.templates.push({name:e.id.name,variables:a,dataSources:p,components:i}),delete r.templateCollection):r.components.push(...i))}s.isTSInterfaceDeclaration(o)||s.isTSTypeAliasDeclaration(o)||r.errors.push({message:`Unsupported top level statement type: ${o.type}`,node:o,severity:"error"})}r.errors.push({message:"Component function declaration must have a return statement returning a JSX element",node:e,severity:"error"})}function P(e,r,t){for(const t of e.program.body)s.isFunctionDeclaration(t)&&t.id&&!T(t.id)&&r.functionNames.push(t.id.name);for(const n of e.program.body)if(s.isFunctionDeclaration(n)){if(!n.id){r.errors.push({message:"Function declaration must have a name",node:n,severity:"error"});continue}T(n.id)?C(n,r,"template",t):I(n,r)}else if(s.isExportDefaultDeclaration(n)){if(!s.isFunctionDeclaration(n.declaration)){r.errors.push({message:`Expected function declaration as default export, but got ${n.declaration.type}`,node:n.declaration,severity:"error"});continue}C(n.declaration,r,"view",t)}else s.isTSInterfaceDeclaration(n)||s.isTSTypeAliasDeclaration(n)||r.errors.push({message:`Unsupported top level statement type: ${n.type}`,node:n,severity:"error"})}function T(e){return e.name[0]>="A"&&e.name[0]<="Z"}(0,t(47695).p)(class{parse(e,r){return function(e,r){var t,o;const i=[],a={source:e,dataSources:[],variables:[],components:[],componentsMap:new Map,errors:i,contexts:null!==(t=null==r?void 0:r.withContexts)&&void 0!==t?t:[],contextSetters:new Map,functionNames:[],functions:[],contracts:new Set,templates:[]};let p;try{p=(0,n.parse)(e,{plugins:["jsx","typescript"],sourceType:"module",errorRecovery:!0})}catch(e){return i.push({message:`Failed to parse TSX: ${e}`,node:null,severity:"fatal"}),a}if(null!==(o=p.errors)&&void 0!==o&&o.length)for(const e of p.errors)i.push({message:`${e.code}: ${e.reasonCode}`,node:null,severity:"error"});for(const e of p.program.body)if(s.isExportDefaultDeclaration(e)){if(s.isFunctionDeclaration(e.declaration))return P(p,a,r),a;break}return function(e,r,t){const{errors:n,contexts:o,functionNames:i,variables:a}=r;s.traverse(e.program,{enter(e){s.isTSAnyKeyword(e)?n.push({message:"Unexpected 'any' type",node:e,severity:"warning"}):s.isTSAsExpression(e)&&n.push({message:"Unexpected 'as' usage",node:e,severity:"warning"})}});for(const r of e.program.body)if(s.isVariableDeclaration(r))for(const e of r.declarations)s.isIdentifier(e.id)&&o.push(e.id.name);else s.isFunctionDeclaration(r)&&r.id&&i.push(r.id.name);let p=!1;for(const o of e.program.body)if(s.isVariableDeclaration(o)){if(p&&n.push({message:"Unexpected variable declaration after export",node:o,severity:"error"}),"let"!==o.kind&&"const"!==o.kind){n.push({message:`Unsupported variable declaration kind: ${o.kind}`,node:o,severity:"error"});continue}for(const e of o.declarations){if(!s.isIdentifier(e.id)){n.push({message:`Expect an identifier as the variable name, received ${e.id.type}`,node:e.id,severity:"error"});continue}const o=e.id.name;if(null==e.init)e.id.typeAnnotation||n.push({message:`Variable "${o}" with no initial value must have a type annotation`,node:e.id,severity:"error"}),a.push({name:o});else if(s.isAwaitExpression(e.init)){const i=e.init.argument;if(!s.isCallExpression(i)){n.push({message:`Await expression must be a call expression, received ${i.type}`,node:i,severity:"error"});continue}const{callee:a}=i;if(!s.isIdentifier(a)&&!s.isMemberExpression(a)){n.push({message:`Await expression must call an identifier or member expression, received ${a.type}`,node:a,severity:"error"});continue}if(s.isMemberExpression(a)){if(!s.isIdentifier(a.property)||a.computed||"then"!==a.property.name&&"catch"!==a.property.name){n.push({message:"Unexpected awaited expression",node:a.property,severity:"error"});continue}j(a.object,r,t,o,i.arguments,a.property.name)}else j(i,r,t,o)}else{const t=S(e.init,r,{allowExpression:!0});a.push({name:o,value:t})}}}else if(s.isFunctionDeclaration(o))p&&n.push({message:"Unexpected function declaration after export",node:o,severity:"error"}),I(o,r);else if(s.isExportDefaultDeclaration(o)){p=!0;const e=o.declaration;if(!s.isJSXElement(e)){n.push({message:`Exported default declaration must be a JSX element, but got ${e.type}`,node:e,severity:"error"});continue}const i=$([e],r,t);r.components.push(...i)}else s.isTSInterfaceDeclaration(o)||s.isTSTypeAliasDeclaration(o)||n.push({message:`Unsupported top level statement type: ${o.type}`,node:o,severity:"error"})}(p,a,r),a}(e,r)}})}},b={};function $(e){var r=b[e];if(void 0!==r)return r.exports;var t=b[e]={exports:{}};return x[e](t,t.exports,$),t.exports}$.m=x,$.c=b,$.x=()=>{var e=$.O(void 0,[5521,4957,1321,580],(()=>$(9474)));return $.O(e)},e=[],$.O=(r,t,n,s)=>{if(!t){var o=1/0;for(l=0;l<e.length;l++){for(var[t,n,s]=e[l],i=!0,a=0;a<t.length;a++)(!1&s||o>=s)&&Object.keys($.O).every((e=>$.O[e](t[a])))?t.splice(a--,1):(i=!1,s<o&&(o=s));if(i){e.splice(l--,1);var p=n();void 0!==p&&(r=p)}}return r}s=s||0;for(var l=e.length;l>0&&e[l-1][2]>s;l--)e[l]=e[l-1];e[l]=[t,n,s]},$.d=(e,r)=>{for(var t in r)$.o(r,t)&&!$.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},$.f={},$.e=e=>Promise.all(Object.keys($.f).reduce(((r,t)=>($.f[t](e,r),r)),[])),$.u=e=>"chunks/"+e+"."+{1122:"95231c39",4957:"f878df32",5521:"ef48a4d3",6773:"afd27a30"}[e]+".js",$.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),$.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),$.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{$.S={};var e={},r={};$.I=(t,n)=>{n||(n=[]);var s=r[t];if(s||(s=r[t]={}),!(n.indexOf(s)>=0)){if(n.push(s),e[t])return e[t];$.o($.S,t)||($.S[t]={}),$.S[t];var o=[];return e[t]=o.length?Promise.all(o).then((()=>e[t]=1)):1}}})(),(()=>{var e;$.g.importScripts&&(e=$.g.location+"");var r=$.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),$.p=e+"../"})(),r=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},t=(e,t)=>{e=r(e),t=r(t);for(var n=0;;){if(n>=e.length)return n<t.length&&"u"!=(typeof t[n])[0];var s=e[n],o=(typeof s)[0];if(n>=t.length)return"u"==o;var i=t[n],a=(typeof i)[0];if(o!=a)return"o"==o&&"n"==a||"s"==a||"u"==o;if("o"!=o&&"u"!=o&&s!=i)return s<i;n++}},n=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var s=1,o=1;o<e.length;o++)s--,t+="u"==(typeof(a=e[o]))[0]?"-":(s>0?".":"")+(s=2,a);return t}var i=[];for(o=1;o<e.length;o++){var a=e[o];i.push(0===a?"not("+p()+")":1===a?"("+p()+" || "+p()+")":2===a?i.pop()+" "+i.pop():n(a))}return p();function p(){return i.pop().replace(/^\((.+)\)$/,"$1")}},s=(e,t)=>{if(0 in e){t=r(t);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,a=1,p=!0;;a++,i++){var l,u,c=a<e.length?(typeof e[a])[0]:"";if(i>=t.length||"o"==(u=(typeof(l=t[i]))[0]))return!p||("u"==c?a>n&&!o:""==c!=o);if("u"==u){if(!p||"u"!=c)return!1}else if(p)if(c==u)if(a<=n){if(l!=e[a])return!1}else{if(o?l>e[a]:l<e[a])return!1;l!=e[a]&&(p=!1)}else if("s"!=c&&"n"!=c){if(o||a<=n)return!1;p=!1,a--}else{if(a<=n||u<c!=o)return!1;p=!1}else"s"!=c&&"n"!=c&&(p=!1,a--)}}var d=[],m=d.pop.bind(d);for(i=1;i<e.length;i++){var f=e[i];d.push(1==f?m()|m():2==f?m()&m():f?s(f,t):!m())}return!!m()},o=(e,r)=>e&&$.o(e,r),i=e=>(e.loaded=1,e.get()),a=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),p=(e,r,n)=>{var s=n?a(e[r]):e[r];return Object.keys(s).reduce(((e,r)=>!e||!s[e].loaded&&t(e,r)?r:e),0)},l=(e,r,t,s)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+n(s)+")",u=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>u("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),m=(e=>function(r,t,n,s,o){var i=$.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,$.S[r],t,!1,s,o)):e(r,$.S[r],t,n,s,o)})(((e,r,t,n,a,u)=>{if(!o(r,t))return d(e,t,u);var m=p(r,t,n);return s(a,m)||c(l(r,t,m,a)),i(r[t][m])})),f={},y={71321:()=>m("default","@next-core/cook",!1,[0],(()=>Promise.all([$.e(1122),$.e(580)]).then((()=>()=>$(61122))))),40580:()=>m("default","@babel/parser",!1,[0],(()=>$.e(6773).then((()=>()=>$(46773)))))},g={580:[40580],1321:[71321]},h={},$.f.consumes=(e,r)=>{$.o(g,e)&&g[e].forEach((e=>{if($.o(f,e))return r.push(f[e]);if(!h[e]){var t=r=>{f[e]=0,$.m[e]=t=>{delete $.c[e],t.exports=r()}};h[e]=!0;var n=r=>{delete f[e],$.m[e]=t=>{throw delete $.c[e],r}};try{var s=y[e]();s.then?r.push(f[e]=s.then(t).catch(n)):t(s)}catch(e){n(e)}}}))},(()=>{var e={9474:1};$.f.i=(r,t)=>{e[r]||/^(1321|580)$/.test(r)||importScripts($.p+$.u(r))};var r=globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[],t=r.push.bind(r);r.push=r=>{var[n,s,o]=r;for(var i in s)$.o(s,i)&&($.m[i]=s[i]);for(o&&o($);n.length;)e[n.pop()]=1;t(r)}})(),v=$.x,$.x=()=>Promise.all([5521,4957,1321,580].map($.e,$)).then(v),$.x()})();
2
- //# sourceMappingURL=9474.59a27cc1.js.map