@next-bricks/ai-portal 0.20.13 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +35 -23
- package/dist/chunks/2312.776924b8.js +3 -0
- package/dist/chunks/2312.776924b8.js.LICENSE.txt +1 -0
- package/dist/chunks/2312.776924b8.js.map +1 -0
- package/dist/chunks/2679.94e8a688.js +3 -0
- package/dist/chunks/{4410.14ec23d5.js.LICENSE.txt → 2679.94e8a688.js.LICENSE.txt} +0 -2
- package/dist/chunks/2679.94e8a688.js.map +1 -0
- package/dist/chunks/2873.4150a3c1.js +2 -0
- package/dist/chunks/2873.4150a3c1.js.map +1 -0
- package/dist/chunks/4845.b7e94ccb.js +3 -0
- package/dist/chunks/4845.b7e94ccb.js.map +1 -0
- package/dist/chunks/662.c85cde62.js +2 -0
- package/dist/chunks/662.c85cde62.js.map +1 -0
- package/dist/chunks/7654.2939b726.js +2 -0
- package/dist/chunks/7654.2939b726.js.map +1 -0
- package/dist/chunks/chat-box.a303e83d.js +2 -0
- package/dist/chunks/chat-box.a303e83d.js.map +1 -0
- package/dist/chunks/chat-history.720bb746.js +3 -0
- package/dist/chunks/chat-history.720bb746.js.map +1 -0
- package/dist/chunks/chat-stream.f2653a5d.js +2 -0
- package/dist/chunks/chat-stream.f2653a5d.js.map +1 -0
- package/dist/chunks/cruise-canvas.36738895.js +2 -0
- package/dist/chunks/cruise-canvas.36738895.js.map +1 -0
- package/dist/chunks/elevo-sidebar.05379cd1.js +3 -0
- package/dist/chunks/elevo-sidebar.05379cd1.js.map +1 -0
- package/dist/chunks/main.471c9ce9.js +2 -0
- package/dist/chunks/main.471c9ce9.js.map +1 -0
- package/dist/examples.json +14 -11
- package/dist/images/de350a46.png +0 -0
- package/dist/index.af48aa2e.js +2 -0
- package/dist/index.af48aa2e.js.map +1 -0
- package/dist/manifest.json +219 -147
- package/dist/types.json +472 -301
- package/dist-types/bootstrap.d.ts +1 -0
- package/dist-types/chat-stream/AssistantMessage/AssistantMessage.d.ts +7 -0
- package/dist-types/chat-stream/NodeJob/NodeJob.d.ts +7 -0
- package/dist-types/chat-stream/UserMessage/UserMessage.d.ts +5 -0
- package/dist-types/chat-stream/i18n.d.ts +14 -0
- package/dist-types/chat-stream/index.d.ts +26 -0
- package/dist-types/chat-stream/interfaces.d.ts +10 -0
- package/dist-types/chat-stream/useChatStream.d.ts +3 -0
- package/dist-types/cruise-canvas/CanvasContext.d.ts +5 -1
- package/dist-types/cruise-canvas/NodeFeedback/NodeFeedback.d.ts +1 -0
- package/dist-types/cruise-canvas/constants.d.ts +1 -0
- package/dist-types/cruise-canvas/getOrderedJobs.d.ts +10 -0
- package/dist-types/cruise-canvas/i18n.d.ts +11 -7
- package/dist-types/cruise-canvas/index.d.ts +6 -0
- package/dist-types/cruise-canvas/interfaces.d.ts +10 -1
- package/dist-types/cruise-canvas/useLayout.d.ts +2 -1
- package/dist-types/cruise-canvas/useTaskGraph.d.ts +2 -1
- package/dist-types/elevo-sidebar/ChatHistory.d.ts +5 -1
- package/dist-types/elevo-sidebar/index.d.ts +4 -0
- package/docs/chat-stream.md +11 -0
- package/package.json +2 -2
- package/dist/chunks/1165.9f35625d.js +0 -2
- package/dist/chunks/1165.9f35625d.js.map +0 -1
- package/dist/chunks/3362.90a6e017.js +0 -2
- package/dist/chunks/3362.90a6e017.js.map +0 -1
- package/dist/chunks/4410.14ec23d5.js +0 -3
- package/dist/chunks/4410.14ec23d5.js.map +0 -1
- package/dist/chunks/8230.e8052bfd.js +0 -3
- package/dist/chunks/8230.e8052bfd.js.map +0 -1
- package/dist/chunks/chat-box.2fbc1947.js +0 -2
- package/dist/chunks/chat-box.2fbc1947.js.map +0 -1
- package/dist/chunks/chat-history.73bb371f.js +0 -3
- package/dist/chunks/chat-history.73bb371f.js.map +0 -1
- package/dist/chunks/cruise-canvas.0f61fbbc.js +0 -2
- package/dist/chunks/cruise-canvas.0f61fbbc.js.map +0 -1
- package/dist/chunks/elevo-sidebar.859a89ed.js +0 -3
- package/dist/chunks/elevo-sidebar.859a89ed.js.map +0 -1
- package/dist/chunks/main.c5a8080f.js +0 -2
- package/dist/chunks/main.c5a8080f.js.map +0 -1
- package/dist/index.975dc931.js +0 -2
- package/dist/index.975dc931.js.map +0 -1
- /package/dist/chunks/{8230.e8052bfd.js.LICENSE.txt → 4845.b7e94ccb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-history.73bb371f.js.LICENSE.txt → chat-history.720bb746.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-sidebar.859a89ed.js.LICENSE.txt → elevo-sidebar.05379cd1.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/662.c85cde62.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/utils/converters/raw-data-generate/getMemberAccessor.ts","webpack:///./src/cruise-canvas/utils/converters/raw-data-generate/convert.ts","webpack:///./src/cruise-canvas/utils/converters/getModelObjectInstanceId.ts","webpack:///./src/cruise-canvas/constants.ts","webpack:///./src/cruise-canvas/getOrderedJobs.ts","webpack:///./src/cruise-canvas/utils/createPortal.ts","webpack:///./src/cruise-canvas/shared.module.css?c988","webpack:///../../src/schemas.ts","webpack:///../../src/utils.ts","webpack:///../../../src/constructors/values.ts","webpack:///../../../src/constructors/events.ts","webpack:///../../../src/constructors/element.ts","webpack:///../../../src/constructors/view.ts","webpack:///../../src/parseJsx.ts","webpack:///./src/cruise-canvas/reducers/jobs.ts","webpack:///./src/cruise-canvas/reducers/index.ts","webpack:///./src/cruise-canvas/reducers/task.ts","webpack:///./src/cruise-canvas/reducers/error.ts","webpack:///./src/cruise-canvas/useTaskDetail.ts","webpack:///../../src/rehypePrism.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/EnhancedMarkdown/EnhancedMarkdown.tsx","webpack:///./src/cruise-canvas/bricks.ts","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///./src/cruise-canvas/utils/converters/findNearestCandidate.ts","webpack:///./src/cruise-canvas/utils/converters/getPreGeneratedAttrViews.ts","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.module.css","webpack:///./src/cruise-canvas/CanvasContext.ts","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.module.css?37c1","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.tsx","webpack:///./src/cruise-canvas/shared.module.css"],"sourcesContent":["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\";\nimport type { ConvertBrickOptions } from \"../interfaces.js\";\n\nconst { pick } = _;\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","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 type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { type TaskState } from \"./interfaces.js\";\n\nexport const DEFAULT_SCALE_RANGE_MIN = 0.5;\nexport const DEFAULT_SCALE_RANGE_MAX = 2;\nexport const START_NODE_ID = \"<START>\";\nexport const END_NODE_ID = \"<END>\";\nexport const FEEDBACK_NODE_ID = \"<FEEDBACK>\";\nexport const REQUIREMENT_NODE_ID = \"<REQUIREMENT>\";\nexport const CANVAS_PADDING_TOP = 20;\nexport const CANVAS_PADDING_RIGHT = 20;\n// 20 + 48 + 8 + 26 + 20\nexport const CANVAS_PADDING_BOTTOM = 122;\nexport const CANVAS_PADDING_LEFT = 160;\nexport const RANK_SEP = 40;\nexport const NODE_SEP = 42;\nexport const EDGE_SEP = 10;\n\nexport const DONE_STATES = [\"completed\", \"failed\", \"canceled\"] as TaskState[];\n\nexport const GENERAL_DONE_STATES = [...DONE_STATES, \"paused\"] as TaskState[];\n\n// istanbul ignore next\nexport const IS_MAC = /mac/i.test(\n (\n navigator as Navigator & {\n userAgentData?: {\n platform: string;\n };\n }\n ).userAgentData?.platform ??\n navigator.platform ??\n navigator.userAgent\n);\n\nexport const ICON_CLOSE: GeneralIconProps = {\n lib: \"antd\",\n icon: \"close\",\n};\n\nexport const ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n","import type { Job } from \"./interfaces\";\n\nexport interface GetOrderedJobsOptions {\n showHiddenJobs?: boolean;\n}\n\nexport function getOrderedJobs(\n jobs: Job[] | null | undefined,\n options?: GetOrderedJobsOptions\n) {\n const fixedJobs = jobs ?? [];\n const jobMap = new Map<string, Job>();\n const childrenMap = new Map<string, string[]>();\n let downstreamMap = new Map<string, string[]>();\n let rootDownstreams: string[] = [];\n const rootChildren: string[] = [];\n const jobLevels = new Map<string, number>();\n const hiddenJobIds = new Set<string>();\n const showHiddenJobs = options?.showHiddenJobs;\n\n // Setup children relations\n for (const job of fixedJobs) {\n jobMap.set(job.id, job);\n // TODO: remove mock\n if (!showHiddenJobs && job.hidden) {\n hiddenJobIds.add(job.id);\n }\n if (job.parent) {\n let children = childrenMap.get(job.parent);\n if (!children) {\n childrenMap.set(job.parent, (children = []));\n }\n children.push(job.id);\n } else {\n rootChildren.push(job.id);\n }\n }\n\n // Setup downstream relations\n for (const job of fixedJobs) {\n for (const up of job.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstreamMap.set(up, (downstream = []));\n }\n downstream.push(job.id);\n }\n\n if (\n !job.parent &&\n !job.upstream?.length &&\n (showHiddenJobs || !job.hidden)\n ) {\n rootDownstreams.push(job.id);\n }\n }\n\n // Convert children to flat downstream\n const alignDownstreamMap = (children: string[], level: number) => {\n for (const jobId of children) {\n jobLevels.set(jobId, level);\n const subChildren = childrenMap.get(jobId);\n const downstream = downstreamMap.get(jobId);\n\n if (subChildren) {\n const directSubChildren = subChildren.filter((child) => {\n const childJob = jobMap.get(child)!;\n return !childJob.upstream?.length;\n });\n\n const leafSubChildren = downstream\n ? subChildren.filter((child) => {\n return !downstreamMap.has(child);\n })\n : [];\n\n downstreamMap.set(jobId, directSubChildren);\n\n for (const child of leafSubChildren) {\n downstreamMap.set(child, [...downstream!]);\n }\n\n alignDownstreamMap(subChildren, level + 1);\n }\n }\n };\n\n alignDownstreamMap(rootChildren, 0);\n\n // Remove hidden jobs, and reconnect related downstream connections.\n if (!showHiddenJobs && hiddenJobIds.size > 0) {\n const findVisibleDownstreams = (downstreams: string[]): string[] => {\n return downstreams.flatMap((jobId) => {\n const job = jobMap.get(jobId)!;\n if (job.hidden) {\n const nextDownstreams = downstreamMap.get(jobId);\n return nextDownstreams ? findVisibleDownstreams(nextDownstreams) : [];\n }\n return jobId;\n });\n };\n\n const newDownstreamMap = new Map<string, string[]>();\n\n const fixDownstreams = (visibleDownstreams: string[]) => {\n for (const id of visibleDownstreams) {\n const downstreams = downstreamMap.get(id);\n if (downstreams) {\n const visibleDownstreams = findVisibleDownstreams(downstreams);\n newDownstreamMap.set(id, visibleDownstreams);\n fixDownstreams(visibleDownstreams);\n }\n }\n };\n\n rootDownstreams = findVisibleDownstreams(rootDownstreams);\n fixDownstreams(rootDownstreams);\n downstreamMap = newDownstreamMap;\n }\n\n // Get BFS order of jobs\n const list: string[] = [];\n const visitedJobs = new Set<string>();\n const queue: string[] = [...rootDownstreams];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (visitedJobs.has(id)) {\n continue;\n }\n visitedJobs.add(id);\n list.push(id);\n const downstream = downstreamMap.get(id);\n if (downstream) {\n queue.push(...downstream);\n }\n }\n\n return { list, jobMap, jobLevels, downstreamMap };\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","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./shared.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./shared.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as z from \"zod\";\n\nexport const DEFINE_VARIABLE = \"defineVariable\";\nexport const DEFINE_DATA_SOURCE = \"defineDataSource\";\n\nexport const EventHandlerOfUpdateVariable = z.strictObject({\n action: z.literal(\"update_variable\"),\n payload: z.strictObject({\n name: z.string(),\n value: z.any(),\n }),\n});\n\nexport const EventHandlerOfRefreshDataSource = z.strictObject({\n action: z.literal(\"refresh_data_source\"),\n payload: z.strictObject({\n name: z.string(),\n }),\n});\n\nexport const EventHandlerOfCallComponent = z.strictObject({\n action: z.literal(\"call_component\"),\n payload: z.strictObject({\n componentId: z.string(),\n method: z.string(),\n args: z.array(z.any()).optional(),\n }),\n});\n\nexport const EventHandlerOfShowMessage = z.strictObject({\n action: z.literal(\"show_message\"),\n payload: z.strictObject({\n type: z.enum([\"info\", \"success\", \"warn\", \"error\"]),\n content: z.string(),\n }),\n});\n\nexport const EventHandlerOfCallAPI = z.strictObject({\n action: z.literal(\"call_api\"),\n payload: z.strictObject({\n api: z.string(),\n params: z.any().optional(),\n }),\n get callback() {\n return EventHandlerCallback.optional();\n },\n});\n\nexport const EventHandler = z.union([\n EventHandlerOfUpdateVariable,\n EventHandlerOfRefreshDataSource,\n EventHandlerOfCallAPI,\n EventHandlerOfCallComponent,\n EventHandlerOfShowMessage,\n]);\n\nexport const OneOrMoreEventHandlers = z.union([\n EventHandler,\n z.array(EventHandler),\n]);\n\nexport const EventHandlerCallback = z.strictObject({\n success: OneOrMoreEventHandlers.optional(),\n error: OneOrMoreEventHandlers.optional(),\n finally: OneOrMoreEventHandlers.optional(),\n});\n","import * as t from \"@babel/types\";\n\nconst EXPRESSION_PREFIX_REG = /^\\s*<%=?\\s+/;\nconst EXPRESSION_SUFFIX_REG = /\\s+%>\\s*$/;\n\nexport function isExpressionString(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n EXPRESSION_PREFIX_REG.test(value) &&\n EXPRESSION_SUFFIX_REG.test(value)\n );\n}\n\nexport interface ValidateExpressionOptions {\n disallowArrowFunction?: boolean;\n}\n\nexport function validateExpression(\n expr: t.Expression,\n options: ValidateExpressionOptions\n): t.Node | null {\n let invalidNode: t.Node | null = null;\n t.traverse(expr, {\n enter(node) {\n if (\n !invalidNode &&\n (t.isFunctionExpression(node) ||\n t.isStatement(node) ||\n t.isJSX(node) ||\n (options.disallowArrowFunction && t.isArrowFunctionExpression(node)))\n ) {\n invalidNode = node;\n }\n },\n });\n return invalidNode;\n}\n","import * as t from \"@babel/types\";\nimport type {\n ConstructJsValueOptions,\n ConstructResult,\n} from \"../interfaces.js\";\nimport { validateExpression } from \"../utils.js\";\n\nconst ambiguousSymbol = Symbol(\"ambiguous\");\n\nexport function constructJsObject(\n node: t.ObjectExpression,\n state: ConstructResult,\n options: ConstructJsValueOptions\n): string | Record<string, unknown> {\n if (node.properties.some((prop) => t.isSpreadElement(prop))) {\n if (options.allowExpression) {\n const invalidNode = validateExpression(node, options);\n if (invalidNode) {\n state.errors.push({\n message: `Unsupported node type: ${invalidNode.type}`,\n node: invalidNode,\n severity: \"error\",\n });\n } else {\n if (options.ambiguous) {\n return ambiguousSymbol as unknown as string;\n }\n return `<%${options.modifier ?? \"\"} ${state.source.substring(node.start!, node.end!)} %>`;\n }\n }\n }\n\n const obj: Record<string, unknown> = {};\n for (const prop of node.properties) {\n if (t.isObjectProperty(prop)) {\n if (prop.computed || prop.shorthand) {\n state.errors.push({\n message:\n \"Computed properties and shorthand properties are not supported\",\n node: prop.key,\n severity: \"error\",\n });\n continue;\n }\n let key: string;\n if (t.isIdentifier(prop.key)) {\n key = prop.key.name;\n } else if (t.isStringLiteral(prop.key)) {\n key = prop.key.value;\n } else {\n state.errors.push({\n message: `Unsupported object key type: ${prop.key.type}`,\n node: prop.key,\n severity: \"error\",\n });\n continue;\n }\n\n obj[key] = constructJsValue(prop.value, state, options);\n } else {\n state.errors.push({\n message: `Unsupported property type: ${prop.type}`,\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n }\n return obj;\n}\n\nexport function constructJsArray(\n node: t.ArrayExpression,\n state: ConstructResult,\n options: ConstructJsValueOptions\n): string | unknown[] {\n if (node.elements.some((elem) => t.isSpreadElement(elem))) {\n if (options.allowExpression) {\n const invalidNode = validateExpression(node, options);\n if (invalidNode) {\n state.errors.push({\n message: `Unsupported node type: ${invalidNode.type}`,\n node: invalidNode,\n severity: \"error\",\n });\n } else {\n if (options.ambiguous) {\n return ambiguousSymbol as unknown as string;\n }\n return `<%${options.modifier ?? \"\"} ${state.source.substring(node.start!, node.end!)} %>`;\n }\n }\n }\n\n const arr: unknown[] = [];\n\n for (const elem of node.elements) {\n if (elem === null) {\n state.errors.push({\n message: \"Array elements cannot be empty\",\n node,\n severity: \"error\",\n });\n continue;\n }\n if (t.isSpreadElement(elem)) {\n state.errors.push({\n message: \"Spread elements are not supported in arrays\",\n node: elem,\n severity: \"error\",\n });\n continue;\n }\n arr.push(constructJsValue(elem, state, options));\n }\n\n return arr;\n}\n\nexport function constructJsValue(\n node: t.Node,\n state: ConstructResult,\n options: ConstructJsValueOptions\n): unknown {\n if (t.isObjectExpression(node)) {\n return constructJsObject(node, state, options);\n }\n\n if (t.isArrayExpression(node)) {\n return constructJsArray(node, state, options);\n }\n\n if (\n t.isStringLiteral(node) ||\n t.isNumericLiteral(node) ||\n t.isBooleanLiteral(node)\n ) {\n return node.value;\n }\n\n if (t.isNullLiteral(node)) {\n return null;\n }\n\n if (t.isIdentifier(node) && node.name === \"undefined\") {\n return undefined;\n }\n\n if (t.isExpression(node) && options.allowExpression) {\n const invalidNode = validateExpression(node, options);\n if (invalidNode) {\n state.errors.push({\n message: `Unsupported node type: ${invalidNode.type}`,\n node: invalidNode,\n severity: \"error\",\n });\n return null;\n } else {\n if (options.ambiguous) {\n return ambiguousSymbol;\n }\n return `<%${options.modifier ?? \"\"} ${state.source.substring(node.start!, node.end!)} %>`;\n }\n }\n\n state.errors.push({\n message: `Unsupported node type: ${node.type}`,\n node,\n severity: \"error\",\n });\n return null;\n}\n\nexport function constructPropValue(\n expr: t.Expression,\n state: ConstructResult,\n options: ConstructJsValueOptions\n) {\n let shouldCompute = false;\n t.traverse(expr, {\n enter(node, parent) {\n let p: t.Node | undefined;\n if (\n !shouldCompute &&\n !(\n t.isStringLiteral(node) ||\n t.isNumericLiteral(node) ||\n t.isBooleanLiteral(node) ||\n t.isNullLiteral(node) ||\n t.isObjectExpression(node) ||\n t.isArrayExpression(node) ||\n t.isObjectProperty(node) ||\n (t.isIdentifier(node) &&\n ((p = parent[parent.length - 1]?.node), true) &&\n (p && t.isObjectProperty(p)\n ? !p.computed && !p.shorthand\n : node.name === \"undefined\"))\n )\n ) {\n shouldCompute = true;\n }\n },\n });\n\n if (shouldCompute) {\n const invalidNode = validateExpression(expr, options);\n if (!invalidNode) {\n return `<%${options.modifier ?? \"\"} ${state.source.substring(expr.start!, expr.end!)} %>`;\n }\n }\n\n return constructJsValue(expr, state, options);\n}\n","import * as t from \"@babel/types\";\nimport type z from \"zod\";\nimport type { ConstructResult, Events } from \"../interfaces.js\";\nimport { constructJsValue } from \"./values.js\";\nimport { EventHandler, type EventHandlerOfCallAPI } from \"../schemas.js\";\n\nexport function constructEvents(node: t.Expression, result: ConstructResult) {\n if (!t.isObjectExpression(node)) {\n result.errors.push({\n message: `Expected an object expression for events, but got ${node.type}`,\n node,\n severity: \"error\",\n });\n return;\n }\n\n const events: Events = {};\n for (const prop of node.properties) {\n if (!t.isObjectProperty(prop)) {\n result.errors.push({\n message: `Unsupported property type in events: ${prop.type}`,\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n if (prop.computed || prop.shorthand) {\n result.errors.push({\n message:\n \"Computed properties and shorthand properties are not supported in events\",\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n let key: string;\n if (t.isIdentifier(prop.key)) {\n key = prop.key.name;\n } else if (t.isStringLiteral(prop.key)) {\n key = prop.key.value;\n } else {\n result.errors.push({\n message: `Unsupported object key type in events: ${prop.key.type}`,\n node: prop.key,\n severity: \"error\",\n });\n continue;\n }\n\n if (t.isArrayExpression(prop.value)) {\n const handlers: z.infer<typeof EventHandler>[] = [];\n for (const elem of prop.value.elements) {\n if (elem === null) {\n result.errors.push({\n message: \"Array elements cannot be empty in events\",\n node: prop.value,\n severity: \"error\",\n });\n continue;\n }\n if (t.isSpreadElement(elem)) {\n result.errors.push({\n message: \"Spread elements are not supported in events\",\n node: elem,\n severity: \"error\",\n });\n continue;\n }\n const handler = constructEventHandler(elem, result);\n if (handler) {\n handlers.push(handler);\n }\n }\n events[key] = handlers;\n } else if (t.isObjectExpression(prop.value)) {\n const handler = constructEventHandler(prop.value, result);\n if (handler) {\n events[key] = handler;\n }\n }\n }\n return events;\n}\n\nexport function constructEventHandler(\n node: t.Expression,\n result: ConstructResult\n) {\n if (!t.isObjectExpression(node)) {\n result.errors.push({\n message: `Expected an object expression for event handler, but got ${node.type}`,\n node,\n severity: \"error\",\n });\n return null;\n }\n const handler: Record<string, unknown> = {};\n let payloadProp: t.Node | undefined;\n for (const prop of node.properties) {\n if (!t.isObjectProperty(prop)) {\n result.errors.push({\n message: `Unsupported property type in event handler: ${prop.type}`,\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n if (prop.computed || prop.shorthand) {\n result.errors.push({\n message:\n \"Computed properties and shorthand properties are not supported in event handlers\",\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n let key: string;\n if (t.isIdentifier(prop.key)) {\n key = prop.key.name;\n } else if (t.isStringLiteral(prop.key)) {\n key = prop.key.value;\n } else {\n result.errors.push({\n message: `Unsupported object key type in event handler: ${prop.key.type}`,\n node: prop.key,\n severity: \"error\",\n });\n continue;\n }\n\n handler[key] = constructJsValue(prop.value, result, {\n allowExpression: true,\n });\n\n if (key === \"payload\") {\n payloadProp = prop.value;\n }\n }\n\n // Set ambiguousParams if for call_api action\n let ambiguousParams: unknown;\n if (\n handler.action === \"call_api\" &&\n (handler as z.infer<typeof EventHandlerOfCallAPI>).payload?.api &&\n payloadProp\n ) {\n if (t.isObjectExpression(payloadProp)) {\n for (const prop of payloadProp.properties) {\n if (\n t.isObjectProperty(prop) &&\n !prop.computed &&\n !prop.shorthand &&\n t.isIdentifier(prop.key) &&\n prop.key.name === \"params\"\n ) {\n ambiguousParams = constructJsValue(\n prop.value,\n {\n ...result,\n // Ignore errors in ambiguous params\n errors: [],\n },\n {\n allowExpression: true,\n disallowArrowFunction: true,\n ambiguous: true,\n }\n );\n }\n }\n }\n }\n\n const parsedHandler = EventHandler.safeParse(handler);\n if (parsedHandler.success) {\n const result = parsedHandler.data;\n\n if (ambiguousParams) {\n // Assert: result is a call_api action\n (\n result as {\n payload: {\n ambiguousParams?: unknown;\n };\n }\n ).payload.ambiguousParams = ambiguousParams;\n }\n\n return result;\n } else {\n result.errors.push({\n message: `Invalid event handler structure: ${parsedHandler.error}`,\n node,\n severity: \"error\",\n });\n }\n\n return null;\n}\n","import * as t from \"@babel/types\";\nimport type {\n ChildElement,\n ChildExpression,\n ChildMerged,\n ChildText,\n Component,\n ConstructResult,\n Events,\n ParseJsxOptions,\n} from \"../interfaces.js\";\nimport { constructJsValue, constructPropValue } from \"./values.js\";\nimport { validateExpression } from \"../utils.js\";\nimport { constructEvents } from \"./events.js\";\n\nexport function constructElement(\n node:\n | t.JSXElement\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXFragment\n | t.JSXSpreadChild,\n result: ConstructResult,\n options?: ParseJsxOptions\n): ChildElement | null {\n if (t.isJSXElement(node)) {\n if (!t.isJSXIdentifier(node.openingElement.name)) {\n result.errors.push({\n message: `Expected JSXIdentifier, but got ${node.openingElement.name.type}`,\n node: node.openingElement.name,\n severity: \"error\",\n });\n return null;\n }\n\n const tagName = node.openingElement.name.name;\n const properties: Record<string, unknown> = {};\n const ambiguousProps: Record<string, unknown> = {};\n let events: Events | undefined;\n let componentId: string | undefined;\n\n for (const attr of node.openingElement.attributes) {\n if (t.isJSXSpreadAttribute(attr)) {\n result.errors.push({\n message: `Spread attributes are not supported in component`,\n node: attr,\n severity: \"error\",\n });\n continue;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n result.errors.push({\n message: `Expected JSXIdentifier, but got ${attr.name.type}`,\n node: attr.name,\n severity: \"error\",\n });\n continue;\n }\n const attrName = attr.name.name;\n\n if (attrName === \"events\") {\n if (!t.isJSXExpressionContainer(attr.value)) {\n result.errors.push({\n message: `\"events\" attribute in component expects a JSXExpressionContainer, but got ${attr.value?.type}`,\n node: attr.value ?? attr,\n severity: \"error\",\n });\n continue;\n }\n if (t.isJSXEmptyExpression(attr.value.expression)) {\n result.errors.push({\n message: `Empty expression in events is not allowed`,\n node: attr.value,\n severity: \"warning\",\n });\n continue;\n }\n events = constructEvents(attr.value.expression, result);\n } else if (attrName === \"componentId\") {\n if (!t.isStringLiteral(attr.value)) {\n result.errors.push({\n message: `\"componentId\" attribute in component expects a string literal, but got ${attr.value?.type}`,\n node: attr.value ?? attr,\n severity: \"error\",\n });\n continue;\n }\n componentId = attr.value.value;\n } else {\n if (attr.value == null) {\n properties[attrName] = true;\n } else if (t.isStringLiteral(attr.value)) {\n properties[attrName] = attr.value.value;\n ambiguousProps[attrName] = attr.value.value;\n } else if (t.isJSXExpressionContainer(attr.value)) {\n if (t.isJSXEmptyExpression(attr.value.expression)) {\n result.errors.push({\n message: `Empty expression in JSX attribute \"${attrName}\" is not allowed`,\n node: attr.value,\n severity: \"warning\",\n });\n continue;\n }\n properties[attrName] = constructPropValue(\n attr.value.expression,\n result,\n {\n allowExpression: true,\n disallowArrowFunction: true,\n modifier: \"=\",\n }\n );\n\n if (options?.reward) {\n ambiguousProps[attrName] = constructJsValue(\n attr.value.expression,\n {\n ...result,\n // Ignore errors in ambiguous props\n errors: [],\n },\n {\n allowExpression: true,\n disallowArrowFunction: true,\n ambiguous: true,\n }\n );\n }\n } else {\n result.errors.push({\n message: `Unsupported attribute value type in component: ${attr.value.type}`,\n node: attr.value,\n severity: \"error\",\n });\n }\n }\n }\n\n let rawChildren: (ChildElement | ChildMerged)[] = node.children.map(\n (child) => constructElement(child, result, options)\n );\n let onlyTextChildren = rawChildren.every((child) => child?.type === \"text\");\n\n if (!onlyTextChildren) {\n let previousChild: ChildElement | ChildMerged | null = null;\n const tempChildren: (ChildElement | ChildMerged)[] = [];\n\n for (const child of rawChildren) {\n if (child === null) {\n // Do nothing\n } else if (child.type === \"text\" || child.type === \"expression\") {\n if (\n previousChild?.type === \"text\" ||\n previousChild?.type === \"expression\"\n ) {\n previousChild = {\n type: \"merged\",\n children: [previousChild, child],\n };\n tempChildren.splice(tempChildren.length - 1, 1, previousChild);\n continue;\n } else if (previousChild?.type === \"merged\") {\n previousChild.children.push(child);\n continue;\n }\n }\n previousChild = child;\n tempChildren.push(child);\n }\n\n rawChildren = tempChildren;\n onlyTextChildren = rawChildren.every(\n (child) =>\n child?.type === \"text\" ||\n (child?.type === \"merged\" &&\n child.children.every((c) => c.type === \"text\"))\n );\n }\n\n let children: Component[] | undefined;\n if (onlyTextChildren) {\n const text = rawChildren\n .flatMap((child) =>\n child!.type === \"text\"\n ? child!.text\n : (child as ChildMerged).children.map((c) => (c as ChildText).text)\n )\n .join(\"\")\n .trim();\n if (text) {\n properties.textContent = text;\n }\n } else {\n const onlyLooseTextChildren = rawChildren.every(\n (child) => !!child && child.type !== \"component\"\n );\n if (onlyLooseTextChildren) {\n const text = mergeTexts(\n rawChildren.flatMap((child) =>\n child!.type === \"merged\"\n ? (child as ChildMerged).children\n : (child as ChildText)\n ),\n result.source\n );\n properties.textContent = text;\n } else {\n children = rawChildren\n .filter((child) => !!child)\n .map((child) =>\n child.type === \"component\"\n ? child.component\n : {\n name: \"eo-text\",\n properties: {\n textContent:\n child.type === \"text\"\n ? child.text\n : child.type === \"expression\"\n ? `<%= ${child.expression} %>`\n : mergeTexts(child.children, result.source),\n },\n }\n );\n }\n }\n\n const component: Component = {\n name: tagName,\n componentId,\n properties,\n events,\n children,\n };\n\n if (options?.reward) {\n component.ambiguousProps = ambiguousProps;\n }\n\n if (componentId) {\n if (result.componentsMap.has(componentId)) {\n result.errors.push({\n message: `Duplicated componentId \"${componentId}\" found`,\n node,\n severity: \"error\",\n });\n } else {\n result.componentsMap.set(componentId, component);\n }\n }\n\n return {\n type: \"component\",\n component,\n };\n }\n if (t.isJSXText(node)) {\n if (node.value.trim()) {\n return {\n type: \"text\",\n text: node.value,\n };\n }\n return null;\n }\n if (t.isJSXExpressionContainer(node)) {\n if (t.isJSXEmptyExpression(node.expression)) {\n result.errors.push({\n message: \"Empty expression in JSX is not allowed\",\n node,\n severity: \"warning\",\n });\n return null;\n }\n const invalidNode = validateExpression(node.expression, {\n disallowArrowFunction: true,\n });\n if (invalidNode) {\n result.errors.push({\n message: `Unsupported node type in expression: ${invalidNode.type}`,\n node: invalidNode,\n severity: \"error\",\n });\n return null;\n }\n return {\n type: \"expression\",\n expression: node.expression,\n };\n }\n\n result.errors.push({\n message: `Unsupported node type in component: ${node.type}`,\n node,\n severity: \"error\",\n });\n return null;\n}\n\nfunction mergeTexts(elements: (ChildText | ChildExpression)[], source: string) {\n return `<%= CTX.__builtin_fn_mergeTexts(${elements\n .map((elem) =>\n elem.type === \"text\"\n ? JSON.stringify(elem)\n : `{type:\"expression\",value:(${source.substring(elem.expression.start!, elem.expression.end!)})}`\n )\n .join(\", \")}) %>`;\n}\n","import * as t from \"@babel/types\";\nimport type { ConstructResult, ParseJsxOptions } from \"../interfaces.js\";\nimport { constructElement } from \"./element.js\";\n\nexport function constructView(\n node: t.JSXElement,\n result: ConstructResult,\n options?: ParseJsxOptions\n) {\n const element = node.openingElement;\n if (!t.isJSXIdentifier(element.name)) {\n result.errors.push({\n message: `Expected JSXIdentifier, but got ${element.name.type}`,\n node: element.name,\n severity: \"error\",\n });\n return;\n }\n const tagName = element.name.name;\n if (tagName !== \"eo-view\") {\n result.errors.push({\n message: `Expected <eo-view>, but got <${tagName}>`,\n node: element.name,\n severity: \"error\",\n });\n return;\n }\n\n for (const attr of element.attributes) {\n if (t.isJSXSpreadAttribute(attr)) {\n result.errors.push({\n message: \"Spread attributes are not supported in <eo-view>\",\n node: attr,\n severity: \"error\",\n });\n continue;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n result.errors.push({\n message: `Expected JSXIdentifier, but got ${attr.name.type}`,\n node: attr.name,\n severity: \"error\",\n });\n continue;\n }\n const name = attr.name.name;\n switch (name) {\n case \"title\":\n if (t.isStringLiteral(attr.value)) {\n result.title = attr.value.value;\n } else {\n result.errors.push({\n message: `\"title\" attribute in <eo-view> expects a string literal, but got ${attr.value?.type}`,\n node: attr.value ?? attr,\n severity: \"error\",\n });\n }\n break;\n default:\n result.errors.push({\n message: `Unsupported attribute \"${name}\" in <eo-view>`,\n node: attr.name,\n severity: \"notice\",\n });\n }\n }\n\n if (!result.title) {\n result.errors.push({\n message: `\"title\" attribute is required in <eo-view>`,\n node: element.name,\n severity: \"warning\",\n });\n }\n\n for (const child of node.children) {\n const element = constructElement(child, result, options);\n if (element === null) {\n continue;\n }\n if (element.type === \"text\") {\n if (element.text.trim() === \"\") {\n continue; // Skip empty text nodes\n }\n result.errors.push({\n message: `Unexpected string child in <eo-view>: \"${element.text}\". Only components are allowed.`,\n node: child,\n severity: \"warning\",\n });\n continue;\n }\n if (element.type === \"expression\") {\n result.errors.push({\n message: `Unexpected expression child in <eo-view>: \"${element.expression}\". Only components are allowed.`,\n node: element.expression,\n severity: \"warning\",\n });\n continue;\n }\n result.components.push(element.component);\n }\n}\n","import { parse, type ParseResult } from \"@babel/parser\";\nimport * as t from \"@babel/types\";\nimport { DEFINE_DATA_SOURCE, DEFINE_VARIABLE } from \"./schemas.js\";\nimport type {\n Component,\n ConstructResult,\n DataSource,\n ParseError,\n ParseJsxOptions,\n Variable,\n} from \"./interfaces.js\";\nimport { constructJsValue } from \"./constructors/values.js\";\nimport { constructView } from \"./constructors/view.js\";\nimport { isExpressionString } from \"./utils.js\";\n\nexport function parseJsx(source: string, options?: ParseJsxOptions) {\n const dataSources: DataSource[] = [];\n const variables: Variable[] = [];\n const components: Component[] = [];\n const errors: ParseError[] = [];\n let title: string | undefined;\n const componentsMap = new Map<string, Component>();\n const result: ConstructResult = {\n source,\n title,\n dataSources,\n variables,\n components,\n componentsMap,\n errors,\n };\n\n let ast: ParseResult<t.File> | undefined;\n try {\n ast = parse(source, {\n plugins: [\"jsx\"],\n sourceType: \"module\",\n errorRecovery: true,\n });\n } catch (error) {\n errors.push({\n message: `Failed to parse JSX: ${error}`,\n node: null,\n severity: \"fatal\",\n });\n }\n\n if (ast?.errors?.length) {\n for (const error of ast.errors) {\n errors.push({\n message: `${error.code}: ${error.reasonCode}`,\n node: null,\n severity: \"error\",\n });\n }\n }\n\n for (const stmt of ast?.program.body ?? []) {\n if (t.isExpressionStatement(stmt)) {\n const expr = stmt.expression;\n if (t.isCallExpression(expr)) {\n if (t.isIdentifier(expr.callee)) {\n if (expr.callee.name === DEFINE_VARIABLE) {\n const missingArgs = expr.arguments.length < 1;\n if (missingArgs || expr.arguments.length > 2) {\n errors.push({\n message: `\"${DEFINE_VARIABLE}()\" expects one or two arguments, but got ${expr.arguments.length}`,\n node: expr,\n severity: missingArgs ? \"error\" : \"notice\",\n });\n if (missingArgs) {\n continue;\n }\n }\n const varName = expr.arguments[0];\n if (!t.isStringLiteral(varName)) {\n errors.push({\n message: `\"${DEFINE_VARIABLE}()\" expects a string literal as the first argument, but got ${varName.type}`,\n node: varName,\n severity: \"error\",\n });\n continue;\n }\n const name = varName.value;\n\n if (expr.arguments.length === 2) {\n const value = constructJsValue(expr.arguments[1], result, {\n allowExpression: true,\n });\n variables.push({ name, value });\n } else {\n variables.push({ name });\n }\n } else if (expr.callee.name === DEFINE_DATA_SOURCE) {\n const missingArgs = expr.arguments.length < 2;\n if (missingArgs || expr.arguments.length > 2) {\n errors.push({\n message: `\"${DEFINE_DATA_SOURCE}()\" expects two arguments, but got ${expr.arguments.length}`,\n node: expr,\n severity: missingArgs ? \"error\" : \"notice\",\n });\n if (missingArgs) {\n continue;\n }\n }\n const dataSourceName = expr.arguments[0];\n if (!t.isStringLiteral(dataSourceName)) {\n errors.push({\n message: `\"${DEFINE_DATA_SOURCE}()\" expects a string literal as the first argument, but got ${dataSourceName.type}`,\n node: dataSourceName,\n severity: \"error\",\n });\n continue;\n }\n const dataSourceConfig = expr.arguments[1];\n if (!t.isObjectExpression(dataSourceConfig)) {\n errors.push({\n message: `\"${DEFINE_DATA_SOURCE}()\" expects an object literal as the second argument, but got ${dataSourceConfig.type}`,\n node: dataSourceConfig,\n severity: \"error\",\n });\n continue;\n }\n\n const dataSource = {\n name: dataSourceName.value,\n } as DataSource;\n for (const prop of dataSourceConfig.properties) {\n if (!t.isObjectProperty(prop)) {\n errors.push({\n message: `Unsupported property type in data source config: ${prop.type}`,\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n if (prop.computed || prop.shorthand) {\n errors.push({\n message:\n \"Computed properties and shorthand properties are not supported in data source config\",\n node: prop,\n severity: \"error\",\n });\n continue;\n }\n let key: string;\n if (t.isIdentifier(prop.key)) {\n key = prop.key.name;\n } else if (t.isStringLiteral(prop.key)) {\n key = prop.key.value;\n } else {\n errors.push({\n message: `Unsupported object key type in data source config: ${prop.key.type}`,\n node: prop.key,\n severity: \"error\",\n });\n continue;\n }\n\n switch (key) {\n case \"api\":\n if (!t.isStringLiteral(prop.value)) {\n errors.push({\n message: `Data source \"api\" expects a string literal, but got ${prop.value.type}`,\n node: prop.value,\n severity: \"error\",\n });\n continue;\n }\n dataSource.api = prop.value.value;\n break;\n case \"objectId\":\n if (!t.isStringLiteral(prop.value)) {\n errors.push({\n message: `Data source \"objectId\" expects a string literal, but got ${prop.value.type}`,\n node: prop.value,\n severity: \"error\",\n });\n continue;\n }\n dataSource.objectId = prop.value.value;\n break;\n case \"params\":\n if (!isNilNode(prop.value)) {\n if (!t.isObjectExpression(prop.value)) {\n errors.push({\n message: `Data source \"params\" prefers an object literal, but got ${prop.value.type}`,\n node: prop.value,\n severity: \"notice\",\n });\n }\n const params = constructJsValue(prop.value, result, {\n allowExpression: true,\n });\n if (\n isExpressionString(params) ||\n (typeof params === \"object\" && params !== null)\n ) {\n dataSource.params = params as\n | string\n | Record<string, unknown>;\n } else {\n errors.push({\n message: `Data source \"params\" expects an object or expression, but got ${typeof params}`,\n node: prop.value,\n severity: \"error\",\n });\n }\n if (options?.reward) {\n dataSource.ambiguousParams = constructJsValue(\n prop.value,\n {\n ...result,\n // Ignore errors in ambiguous params\n errors: [],\n },\n {\n allowExpression: true,\n disallowArrowFunction: true,\n ambiguous: true,\n }\n );\n }\n }\n break;\n case \"transform\":\n if (!isNilNode(prop.value)) {\n if (!t.isArrowFunctionExpression(prop.value)) {\n errors.push({\n message: `Data source \"transform\" expects an arrow function, but got ${prop.value.type}`,\n node: prop.value,\n severity: \"error\",\n });\n continue;\n }\n if (!t.isExpression(prop.value.body)) {\n errors.push({\n message: `\"transform\" function body expects an expression, but got ${prop.value.body.type}`,\n node: prop.value.body,\n severity: \"error\",\n });\n continue;\n }\n if (prop.value.params.length !== 1) {\n errors.push({\n message: `\"transform\" function expects exactly one parameter, but got ${prop.value.params.length}`,\n node: prop.value.params[1] ?? prop.value,\n severity: \"error\",\n });\n continue;\n }\n const arg = prop.value.params[0];\n if (!t.isIdentifier(arg)) {\n errors.push({\n message: `\"transform\" function parameter expects an identifier, but got ${arg.type}`,\n node: arg,\n severity: \"error\",\n });\n continue;\n }\n if (arg.name !== \"DATA\") {\n errors.push({\n message: `\"transform\" function parameter expects named \"DATA\", but got \"${arg.name}\"`,\n node: arg,\n severity: \"error\",\n });\n continue;\n }\n dataSource.transform = `<% ${source.substring(prop.value.body.start!, prop.value.body.end!)} %>`;\n }\n break;\n }\n }\n if (dataSource.api) {\n dataSources.push(dataSource);\n } else {\n errors.push({\n message: `\"${DEFINE_DATA_SOURCE}()\" requires \"api\" property in the second argument`,\n node: dataSourceConfig,\n severity: \"error\",\n });\n }\n }\n }\n }\n } else if (t.isExportDefaultDeclaration(stmt)) {\n const declaration = stmt.declaration;\n if (!t.isJSXElement(declaration)) {\n errors.push({\n message: `Exported default declaration must be a JSX element, but got ${declaration.type}`,\n node: declaration,\n severity: \"error\",\n });\n continue;\n }\n\n constructView(declaration, result, options);\n } else {\n errors.push({\n message: `Unsupported statement type: ${stmt.type}`,\n node: stmt,\n severity: \"error\",\n });\n continue;\n }\n }\n\n return result;\n}\n\nfunction isNilNode(node: t.Node) {\n return (\n t.isNullLiteral(node) || (t.isIdentifier(node) && node.name === \"undefined\")\n );\n}\n","import type { Reducer } from \"react\";\nimport { isEqual, isMatchWith, pick, pull } from \"lodash\";\nimport type {\n ComponentGraph,\n ComponentGraphEdge,\n ComponentGraphNode,\n DataPart,\n Job,\n JobPatch,\n Message,\n Part,\n RawComponentGraphNode,\n TextPart,\n} from \"../interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ViewWithInfo } from \"../utils/converters/interfaces\";\nimport { parseJsx, type ConstructResult } from \"@next-shared/jsx-storyboard\";\n\nexport const jobs: Reducer<Job[], CruiseCanvasAction> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const jobsPatch = action.payload.jobs;\n let jobs = action.isInitial ? [] : state;\n\n if (!Array.isArray(jobsPatch) || jobsPatch.length === 0) {\n return jobs;\n }\n const previousComponentGraph = state.findLast(\n (job) => !!job.componentGraph\n )?.componentGraph;\n\n for (const jobPatch of jobsPatch) {\n const previousJobIndex =\n jobs?.findIndex((job) => job.id === jobPatch.id) ?? -1;\n const { messages: messagesPatch, toolCall } = jobPatch;\n\n if (typeof toolCall?.arguments === \"string\") {\n toolCall.originalArguments = toolCall.arguments;\n try {\n toolCall.arguments = JSON.parse(toolCall.arguments);\n } catch (e) {\n // Failed to parse toolCall arguments\n toolCall.arguments = {};\n toolCall.argumentsParseFailed = true;\n toolCall.argumentsParseError = e;\n }\n }\n\n if (previousJobIndex === -1) {\n const patch = {\n ...jobPatch,\n };\n if (\n (patch.toolCall?.name === \"get_view_with_info\" ||\n patch.toolCall?.name === \"create_view\") &&\n patch.state === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch);\n if (generatedView) {\n patch.generatedView = generatedView;\n }\n }\n const componentGraph = getJobComponentGraph(\n messagesPatch ?? [],\n previousComponentGraph\n );\n if (componentGraph) {\n patch.componentGraph = componentGraph;\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n jobs = [\n ...jobs,\n {\n ...patch,\n messages: mergeMessages(messagesPatch),\n } as Job,\n ];\n } else {\n jobs = [...jobs, patch as Job];\n }\n } else {\n const previousJob = jobs[previousJobIndex];\n const restMessagesPatch: JobPatch = pick(jobPatch, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"instruction\",\n \"toolCall\",\n \"isError\",\n \"hidden\",\n \"startTime\",\n \"endTime\",\n ]);\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\n ]);\n }\n\n if (\n !previousJob.generatedView &&\n (\n [\"get_view_with_info\", \"create_view\"] as (string | undefined)[]\n ).includes(\n restMessagesPatch.toolCall?.name ?? previousJob.toolCall?.name\n ) &&\n (restMessagesPatch.state ?? previousJob.state) === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch);\n if (generatedView) {\n restMessagesPatch.generatedView = generatedView;\n }\n }\n\n const componentGraph = getJobComponentGraph(\n [...(previousJob.messages ?? []), ...(messagesPatch ?? [])],\n previousComponentGraph\n );\n if (componentGraph) {\n restMessagesPatch.componentGraph = componentGraph;\n }\n\n if (!isMatchWith(previousJob, restMessagesPatch, isEqual)) {\n jobs = [\n ...jobs.slice(0, previousJobIndex),\n {\n ...previousJob,\n ...restMessagesPatch,\n },\n ...jobs.slice(previousJobIndex + 1),\n ];\n }\n }\n }\n\n return jobs;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeMessages(messages: Message[]): Message[] {\n const merged: Message[] = [];\n let previousRole: Message[\"role\"] | undefined;\n for (const message of messages) {\n if (!previousRole || previousRole !== message.role) {\n merged.push({ ...message });\n } else {\n const lastMessage = merged[merged.length - 1];\n lastMessage.parts = [...lastMessage.parts, ...message.parts];\n }\n previousRole = message.role;\n }\n\n for (const message of merged) {\n message.parts = mergeMessageParts(message.parts);\n }\n\n return merged;\n}\n\nfunction mergeMessageParts(parts: Part[]): Part[] {\n const merged: Part[] = [];\n let previousType: Part[\"type\"] | undefined;\n let previousDataType: string | undefined;\n for (const part of parts) {\n if (previousType === \"text\" && part.type === \"text\") {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n } else if (\n // Assert: previousType is data when previousDataType is defined\n previousDataType === \"stream\" &&\n part.type === \"data\" &&\n part.data?.type === \"stream\"\n ) {\n const lastPart = merged[merged.length - 1] as DataPart;\n lastPart.data.message += part.data.message;\n } else {\n merged.push({ ...part });\n }\n\n previousType = part.type;\n previousDataType = part.type === \"data\" ? part.data?.type : undefined;\n }\n return merged;\n}\n\nfunction getJobGeneratedView(\n messages: Message[] | undefined\n): ConstructResult | ViewWithInfo | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n const result = JSON.parse(part.text) as JsxResult | ViewWithInfo;\n return isJsxResult(result) ? parseJsx(result.code) : result;\n } catch {\n // Do nothing, continue to next part\n }\n }\n }\n }\n }\n}\n\nfunction getJobComponentGraph(\n messages: Message[],\n previousGraph: ComponentGraph | undefined\n): ComponentGraph | undefined {\n let graph = previousGraph;\n let hasGraph = false;\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"data\" && part.data?.type === \"graph\") {\n const msg = part.data.message;\n switch (msg?.type) {\n case \"component_graph\": {\n const nodes: ComponentGraphNode[] = [];\n const edges: ComponentGraphEdge[] = [];\n for (const node of Object.values(\n msg.data\n ) as RawComponentGraphNode[]) {\n // Remove self-references\n if (Array.isArray(node.children)) {\n pull(node.children, node.id);\n }\n\n nodes.push({\n type: \"node\",\n id: node.id,\n data: node,\n });\n edges.push(\n ...(node.children?.map<ComponentGraphEdge>((target) => ({\n type: \"edge\",\n source: node.id,\n target: target,\n })) ?? [])\n );\n }\n graph = { nodes, edges, initial: true };\n hasGraph = true;\n break;\n }\n case \"component_graph_node\": {\n if (graph) {\n const nodeIndex = graph.nodes.findIndex(\n (n) => n.id === msg.data.component\n );\n if (nodeIndex !== -1) {\n const node = graph.nodes[nodeIndex];\n if (node.data.status !== msg.data.status) {\n graph = {\n nodes: [\n ...graph.nodes.slice(0, nodeIndex),\n {\n ...node,\n data: {\n ...node.data,\n status: msg.data.status,\n },\n },\n ...graph.nodes.slice(nodeIndex + 1),\n ],\n edges: graph.edges,\n initial: false,\n };\n }\n }\n hasGraph = true;\n }\n }\n }\n }\n }\n }\n }\n return hasGraph ? graph : undefined;\n}\n\ninterface JsxResult {\n viewId: string;\n code: string;\n}\n\nfunction isJsxResult(view: JsxResult | ViewWithInfo): view is JsxResult {\n return !!(view as JsxResult).code;\n}\n","import { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { jobs } from \"./jobs\";\nimport { task } from \"./task\";\nimport { error } from \"./error\";\n\ntype ReducersMapObject<S, A> = {\n [K in keyof S]: Reducer<S[K], A>;\n};\n\nfunction combineReducers<S, A>(\n reducers: ReducersMapObject<S, A>\n): Reducer<S, A> {\n return ((state, action) =>\n Object.fromEntries(\n Object.entries<Reducer<any, A>>(reducers).map(([key, value]) => [\n key,\n value(state[key as keyof S], action),\n ])\n )) as Reducer<S, A>;\n}\n\nexport const rootReducer = combineReducers<\n CruiseCanvasState,\n CruiseCanvasAction\n>({\n task,\n jobs,\n error,\n});\n","import type { Reducer } from \"react\";\nimport { isEqual, isMatchWith, pick } from \"lodash\";\nimport type { TaskBaseDetail } from \"../interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const task: Reducer<TaskBaseDetail | null, CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const taskPatch = pick(action.payload, [\n \"id\",\n \"requirement\",\n \"state\",\n \"title\",\n \"startTime\",\n \"endTime\",\n \"plan\",\n ]);\n\n // TODO(): remove temp work around.\n // if ((taskPatch as any).state === \"blocked\") {\n // taskPatch.state = \"working\";\n // }\n\n return (\n action.isInitial\n ? taskPatch\n : state && isMatchWith(state, taskPatch, isEqual)\n ? state\n : { ...state, ...taskPatch }\n ) as TaskBaseDetail;\n }\n\n case \"reset\": {\n return null;\n }\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const error: Reducer<string | null, CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const error = action.payload.error;\n return state === null && typeof error === \"string\" ? error : state;\n }\n\n case \"reset\": {\n return null;\n }\n }\n\n return state;\n};\n","// istanbul ignore file\nimport { useCallback, useEffect, useReducer, useRef } from \"react\";\nimport { http } from \"@next-core/http\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type { TaskPatch } from \"./interfaces\";\n\nconst MINIMAL_DELAY = 500;\n\nexport function useTaskDetail(\n taskId: string | undefined,\n replay?: boolean,\n replayDelay?: number\n) {\n const [{ task, jobs, error }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n task: null,\n jobs: [],\n error: null,\n })\n );\n\n const humanInputRef = useRef<(jobId: string, input: string) => void>();\n const resumedRef = useRef<() => void>();\n\n const replayListRef = useRef<TaskPatch[] | null>(null);\n const replayRef = useRef(replay);\n const replayDelayRef = useRef((replayDelay ?? 2) * 1000);\n const replayResolveRef = useRef<(() => void) | null>(null);\n\n const skipToResults = useCallback(() => {\n replayRef.current = false;\n if (replayResolveRef.current) {\n replayResolveRef.current();\n replayResolveRef.current = null;\n }\n }, []);\n\n const watchAgain = useCallback(async () => {\n replayRef.current = true;\n\n let isInitial = true;\n let previousTime: number | undefined;\n for (const value of replayListRef.current!) {\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n dispatch({ type: \"sse\", payload: value, isInitial });\n isInitial = false;\n }\n }, []);\n\n useEffect(() => {\n dispatch({ type: \"reset\" });\n humanInputRef.current = undefined;\n if (!taskId) {\n return;\n }\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async () => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n replayListRef.current = [];\n ctrl = new AbortController();\n try {\n const request = await createSSEStream<TaskPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${taskId}`,\n // `/api/mocks/task/get?${new URLSearchParams({ id: taskId })}`\n // `http://localhost:8888/.netlify/functions/task-get?${new URLSearchParams({ id: taskId })}`\n // `https://serverless-mocks.netlify.app/.netlify/functions/task-get?${new URLSearchParams({ id: taskId })}`\n {\n signal: ctrl.signal,\n }\n );\n const stream = await request;\n let isInitial = true;\n let previousTime: number | undefined;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n replayListRef.current.push(value);\n dispatch({ type: \"sse\", payload: value, isInitial });\n isInitial = false;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n resumedRef.current = makeRequest;\n\n humanInputRef.current = async (jobId: string, input: string) => {\n try {\n await http.post(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${taskId}/job/${jobId}`,\n { input }\n );\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"human input failed\", e);\n handleHttpError(e);\n return;\n }\n\n makeRequest();\n };\n\n makeRequest();\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [taskId]);\n\n return {\n task,\n jobs,\n error,\n humanInputRef,\n resumedRef,\n skipToResults,\n watchAgain,\n };\n}\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport { refractor, type RefractorElement } from \"refractor\";\nimport { getCodeLanguage } from \"./utils.js\";\n\n// Reference https://github.com/mapbox/rehype-prism\nexport function rehypePrism() {\n function visitor(\n node: RefractorElement,\n _index: number | undefined,\n parent: RefractorElement | undefined\n ) {\n if (!parent || parent.tagName !== \"pre\" || node.tagName !== \"code\") {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang === null || lang === \"mermaid\") {\n return;\n }\n\n let result;\n try {\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"language-\" + lang);\n result = refractor.highlight(toString(node), lang);\n } catch {\n return;\n }\n\n node.children = result.children;\n }\n return (tree: RefractorElement) => {\n visit(tree, \"element\", visitor);\n };\n}\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { RefractorElement } from \"refractor\";\nimport mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet count = 0;\n\nmermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n});\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: RefractorElement) => {\n const promises: Promise<void>[] = [];\n\n function visitor(\n node: RefractorElement,\n index: number | undefined,\n parent: RefractorElement | undefined\n ) {\n if (!parent || parent.tagName !== \"pre\" || node.tagName !== \"code\") {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n\n const { svg } = await mermaid.render(id, toString(node));\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as RefractorElement[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n }\n\n visit(tree, \"element\", visitor);\n\n await Promise.all(promises);\n };\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport { rehypePrism } from \"./rehypePrism.js\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n}: MarkdownComponentProps) {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n\n useEffect(() => {\n let ignore = false;\n unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use([rehypePrism])\n .use(rehypeMermaid)\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content)\n .then((vFile) => {\n if (!ignore) {\n setReactContent(vFile.result);\n }\n })\n .catch((error) => {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n });\n return () => {\n ignore = true;\n };\n }, [components, content]);\n\n return reactContent;\n}\n","import React, { useCallback, useContext, useRef } from \"react\";\nimport {\n MarkdownComponent,\n type MarkdownComponentProps,\n} from \"@next-shared/markdown\";\nimport { CodeBlock } from \"../CodeBlock/CodeBlock\";\nimport { CanvasContext } from \"../CanvasContext\";\n\nconst components: MarkdownComponentProps[\"components\"] = {\n pre: CodeBlock,\n};\n\nexport function EnhancedMarkdown(props: MarkdownComponentProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { setHoverOnScrollableContent } = useContext(CanvasContext);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent) => {\n let found = false;\n for (const el of e.nativeEvent.composedPath()) {\n if (el === ref.current) {\n break;\n }\n if (\n (el instanceof HTMLTableElement || el instanceof HTMLPreElement) &&\n el.scrollWidth > el.clientWidth\n ) {\n found = true;\n break;\n }\n }\n setHoverOnScrollableContent(found);\n },\n [setHoverOnScrollableContent]\n );\n\n const handleMouseLeave = useCallback(() => {\n setHoverOnScrollableContent(false);\n }, [setHoverOnScrollableContent]);\n\n return (\n <div onMouseMove={handleMouseMove} onMouseLeave={handleMouseLeave}>\n <MarkdownComponent {...props} components={components} />\n </div>\n );\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n Drawer,\n DrawerProps,\n DrawerEvents,\n DrawerMapEvents,\n} from \"@next-bricks/containers/drawer\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport { PopoverProps, Popover } from \"@next-bricks/basic/popover\";\nimport { EoNextTable, NextTableProps } from \"@next-bricks/advanced/next-table\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport const WrappedPopover = wrapBrick<Popover, PopoverProps>(\"eo-popover\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & { keyboard?: boolean },\n DrawerEvents,\n DrawerMapEvents\n>(\"eo-drawer\", {\n onClose: \"close\",\n onOpen: \"open\",\n});\n\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n\nexport const AsyncWrappedTable = React.lazy(async () => ({\n default: await asyncWrapBrick<EoNextTable, NextTableProps>(\"eo-next-table\"),\n}));\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--YostHfxu{background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter);border-radius:var(--elevo-border-radius);padding:16px}.loading--FzSrGTPm{position:absolute;top:calc(50% - 7px);left:calc(50% - 7px)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--YostHfxu`,\n\t\"loading\": `loading--FzSrGTPm`\n};\nexport default ___CSS_LOADER_EXPORT___;\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_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport findNearestCandidate from \"./findNearestCandidate\";\nimport { getModelObjectInstanceId } from \"./getModelObjectInstanceId\";\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","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CmdbInstanceDetail.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CmdbInstanceDetail.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { uniqueId, upperFirst } from \"lodash\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport {\n UseBrickConf,\n type BrickConf,\n type BrickEventHandler,\n type ContextConf,\n type UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport type { DescriptionItem } from \"@next-bricks/presentational/descriptions\";\nimport type { CmdbInstanceDetailData } from \"../interfaces\";\nimport { getPreGeneratedAttrViews } from \"../utils/converters/getPreGeneratedAttrViews\";\nimport { convertToStoryboard } from \"../utils/converters/raw-data-generate/convert\";\nimport type { JSONSchema, JSONSchemaObject } from \"../json-schema\";\nimport styles from \"./CmdbInstanceDetail.module.css\";\nimport { createPortal } from \"../utils/createPortal\";\nimport { WrappedIcon } from \"../bricks\";\nimport { ICON_LOADING } from \"../constants\";\n\n/**\n * 如果属性数量超过阈值,则使用两列布局\n */\nconst LIST_SPLIT_THRESHOLD = 6;\n\n/**\n * 如果条目数量超过阈值,则使用表格显示\n */\nconst SHOW_AS_TABLE_THRESHOLD = 2;\n\nconst BUILTIN_FN_STRINGIFY = \"__builtin_fn_stringify\";\n\nexport function CmdbInstanceDetail({\n objectId,\n detail,\n outputSchema,\n}: CmdbInstanceDetailData) {\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n setLoading(true);\n try {\n const { bricks, context } = await convertCmdbInstanceDetail(\n detail,\n objectId,\n outputSchema,\n rootId\n );\n if (ignore) {\n return;\n }\n await rootRef.current?.render(bricks, { context });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [detail, objectId, outputSchema, rootId]);\n\n return (\n <div className={styles.container}>\n {loading && <WrappedIcon className={styles.loading} {...ICON_LOADING} />}\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction isComplexType(type: JSONSchema[\"type\"] | undefined): boolean {\n return !type || type === \"object\" || type === \"array\";\n}\n\nfunction isEmptyValue(detail: Record<string, any>, key: string) {\n return (\n !hasOwnProperty(detail, key) ||\n detail[key] == null ||\n detail[key] === \"\" ||\n (Array.isArray(detail[key]) && detail[key].length === 0)\n );\n}\n\nasync function convertCmdbInstanceDetail(\n detail: Record<string, any>,\n objectId: string,\n outputSchema: JSONSchema | string | undefined,\n rootId: string\n): Promise<{ bricks: BrickConf[]; context: ContextConf[] }> {\n const attrViews = await getPreGeneratedAttrViews(objectId, 1);\n\n let schema: JSONSchema | undefined;\n if (typeof outputSchema === \"string\") {\n try {\n schema = JSON.parse(outputSchema) as JSONSchema;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse outputSchema as JSON\", e);\n }\n } else {\n schema = outputSchema;\n }\n\n let list: DescriptionItem[];\n const modals: BrickConf[] = [];\n const context: ContextConf[] = [\n {\n name: BUILTIN_FN_STRINGIFY,\n value: builtinFnStringify,\n },\n ];\n\n function convertArrayOfObjects(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = Object.entries(schema.properties);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n const modal: BrickConf = {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n width: \"800px\",\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n };\n\n modals.push(modal);\n\n const columns: {\n key: string;\n dataIndex: string;\n title: string;\n useChildren?: string;\n }[] = [];\n const tableChildren: UseSingleBrickConf[] = [];\n\n for (const [k, v] of props) {\n let useChildren: string | undefined;\n if (v.type === \"array\" && v.items.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertArrayOfObjects(\n \"DATA.cellData\",\n v.items,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n } else if (v.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertObject(\n \"DATA.cellData\",\n v,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n }\n\n columns.push({\n key: k,\n dataIndex: k,\n title: v.description || upperFirst(k),\n useChildren,\n });\n }\n\n modal.children = [\n {\n brick: \"eo-next-table\",\n properties: {\n dataSource: needContext\n ? `<%= { list: CTX.${contextId} } %>`\n : `<% { list: (${valueAccessor}) } %>`,\n columns,\n themeVariant: \"elevo\",\n pagination: false,\n bordered: true,\n },\n children: tableChildren,\n },\n ];\n\n const clickHandler: BrickEventHandler[] = [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ];\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\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: `<% (${valueAccessor}).slice(0, ${SHOW_AS_TABLE_THRESHOLD}) %>`,\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(ITEM, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n },\n {\n brick: \"eo-link\",\n if: `<% (${valueAccessor}).length > ${SHOW_AS_TABLE_THRESHOLD} %>`,\n properties: {\n textContent: `<% \\`+\\${(${valueAccessor}).length - ${SHOW_AS_TABLE_THRESHOLD}}\\` %>`,\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n };\n }\n\n function convertObject(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = Object.entries(schema.properties);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n modals.push({\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n children: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: 1,\n dataSource: needContext\n ? `<%= CTX.${contextId} %>`\n : `<% ${valueAccessor} %> `,\n list: props.map(([k, v]) => ({\n label: v.description || upperFirst(k),\n field: k,\n })),\n },\n },\n ],\n });\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(${valueAccessor}, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ],\n },\n },\n ],\n };\n }\n\n if (schema?.type === \"object\") {\n const entries = Object.entries<JSONSchema>(schema.properties);\n list = entries.map<DescriptionItem>(([key, def]) => {\n const { description, type } = def;\n const label = description || upperFirst(key);\n\n if (isEmptyValue(detail, key)) {\n return {\n label,\n text: \"\",\n };\n }\n\n if (type === \"array\" && Array.isArray(detail[key])) {\n const { items } = def;\n if (items?.type === \"object\") {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertArrayOfObjects(\n `CTX.${contextName}`,\n items,\n label,\n key\n ),\n };\n }\n\n if (!isComplexType(items?.type)) {\n return {\n label,\n text: detail[key].join(\", \"),\n };\n }\n }\n\n if (type === \"object\" && isObject(detail[key])) {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertObject(`CTX.${contextName}`, def, label, key),\n };\n }\n\n if (isComplexType(type)) {\n return {\n label,\n text: JSON.stringify(detail[key], null, 2),\n };\n }\n\n const candidate = attrViews?.get(key);\n if (candidate) {\n const brick = convertToStoryboard(candidate, key, {\n ignoreStyle: true,\n });\n if (brick) {\n return {\n label,\n useBrick: brick as UseBrickConf,\n };\n }\n }\n\n return {\n label,\n field: key,\n };\n });\n } else {\n list = Object.keys(detail).map((key) => ({\n label: upperFirst(key),\n field: key,\n }));\n }\n\n return {\n bricks: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: list.length > LIST_SPLIT_THRESHOLD ? 2 : 1,\n dataSource: detail,\n list,\n },\n },\n ...modals,\n ],\n context,\n };\n}\n\nfunction normalizeIdentifier(identifier: string): string {\n return identifier.replace(/[^a-zA-Z0-9_]+/g, \"_\");\n}\n\nfunction builtinFnStringify(\n value: Record<string, unknown>,\n key: string | null,\n type: JSONSchema[\"type\"] | undefined\n): string {\n if (key === null || isEmptyValue(value, key)) {\n return \"\";\n }\n const v = value[key];\n if (isComplexType(type) && isObject(v)) {\n return JSON.stringify(v, null, 2);\n }\n return String(v);\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-block--B8VszXyv{position:relative}.copy--xhIT7aTz{position:absolute;top:8px;right:8px}.code-block--B8VszXyv:not(:hover) .copy--xhIT7aTz{display:none}.success--y_M0QrXy::part(button){color:var(--color-success)}.failed--WtJHXSP6::part(button){color:var(--color-error)}.code-block--B8VszXyv .mermaid{display:flex;justify-content:center}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-block\": `code-block--B8VszXyv`,\n\t\"copy\": `copy--xhIT7aTz`,\n\t\"success\": `success--y_M0QrXy`,\n\t\"failed\": `failed--WtJHXSP6`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { createContext, type Dispatch } from \"react\";\nimport type { FeedbackDetail, FileInfo, SizeTuple } from \"./interfaces\";\n\nexport interface CanvasContextValue {\n humanInput: (jobId: string, input: string) => void;\n onShare: () => void;\n onPause: () => void;\n onResume: () => void;\n onCancel: () => void;\n onNodeResize: (id: string, size: SizeTuple | null) => void;\n onSubmitFeedback: (detail: FeedbackDetail) => void;\n activeToolCallJobId: string | null;\n setActiveToolCallJobId: Dispatch<React.SetStateAction<string | null>>;\n setActiveNodeId: Dispatch<React.SetStateAction<string | null>>;\n hoverOnScrollableContent: boolean;\n setHoverOnScrollableContent: Dispatch<React.SetStateAction<boolean>>;\n activeExpandedViewJobId: string | null;\n setActiveExpandedViewJobId: Dispatch<React.SetStateAction<string | null>>;\n supports?: Record<string, boolean>;\n setActiveFile: Dispatch<React.SetStateAction<FileInfo | null>>;\n setShowFeedback: Dispatch<React.SetStateAction<boolean>>;\n submittingFeedback: boolean;\n submittedFeedback: boolean;\n}\n\nexport const CanvasContext = createContext<CanvasContextValue>({\n humanInput: () => {},\n onShare: () => {},\n onPause: () => {},\n onResume: () => {},\n onCancel: () => {},\n onNodeResize: () => {},\n onSubmitFeedback: () => {},\n activeToolCallJobId: null,\n setActiveToolCallJobId: () => {},\n setActiveNodeId: () => {},\n hoverOnScrollableContent: false,\n setHoverOnScrollableContent: () => {},\n activeExpandedViewJobId: null,\n setActiveExpandedViewJobId: () => {},\n setActiveFile: () => {},\n setShowFeedback: () => {},\n submittingFeedback: false,\n submittedFeedback: false,\n});\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CodeBlock.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CodeBlock.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { copyToClipboard, WrappedButton } from \"../bricks\";\nimport styles from \"./CodeBlock.module.css\";\n\nconst COPY_BUTTON_ICON = {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"copy\",\n} as const;\n\nconst COPY_BUTTON_ICON_SUCCESS = {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"check\",\n} as const;\n\nconst COPY_BUTTON_ICON_FAILED = {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"triangle-exclamation\",\n} as const;\n\nexport type CodeBlockProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function CodeBlock({ children, node, ...props }: CodeBlockProps) {\n const ref = useRef<HTMLPreElement>(null);\n const isCodeBlock = props.className?.includes(\"language-\");\n const [state, setState] = useState<\"idle\" | \"success\" | \"failed\">(\"idle\");\n const timerRef = useRef<ReturnType<typeof setTimeout> | undefined>();\n\n const handleCopy = useCallback(async () => {\n clearTimeout(timerRef.current);\n setState(\"idle\");\n const content = ref.current?.querySelector(\"code\")?.textContent;\n if (content) {\n try {\n await copyToClipboard(content);\n setState(\"success\");\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to copy code block content to clipboard.\", error);\n setState(\"failed\");\n }\n\n timerRef.current = setTimeout(() => {\n setState(\"idle\");\n }, 2000);\n }\n }, []);\n\n useEffect(() => {\n return () => {\n clearTimeout(timerRef.current);\n };\n }, []);\n\n return (\n <div className={styles[\"code-block\"]}>\n <pre {...props} className={props.className} ref={ref}>\n {children}\n {isCodeBlock && (\n <WrappedButton\n themeVariant=\"elevo\"\n className={classNames(styles.copy, {\n [styles.success]: state === \"success\",\n [styles.failed]: state === \"failed\",\n })}\n onClick={handleCopy}\n icon={\n state === \"success\"\n ? COPY_BUTTON_ICON_SUCCESS\n : state === \"failed\"\n ? COPY_BUTTON_ICON_FAILED\n : COPY_BUTTON_ICON\n }\n />\n )}\n </pre>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.shine-text--t2t9tIJp{color:transparent;background:linear-gradient(to right,var(--shine-text-color) 0%,var(--shine-text-color) 40%,var(--shine-text-highlight-color) 50%,var(--shine-text-color) 60%,var(--shine-text-color) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineText--ycIJ4nxc 2s infinite linear}@keyframes shineText--ycIJ4nxc{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}.markdown--t5EHw6k4 a{color:var(--elevo-color-brand)}.markdown--t5EHw6k4 a:hover{color:var(--elevo-color-brand-hover)}.markdown--t5EHw6k4 a:active{color:var(--elevo-color-brand-active)}.markdown--t5EHw6k4 code[class*=\"language-\"],.markdown--t5EHw6k4 pre[class*=\"language-\"]{background:hsl(230,1%,98%);color:hsl(230,8%,24%);font-family:\"Fira Code\",\"Fira Mono\",Menlo,Consolas,\"DejaVu Sans Mono\",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none;font-size:13px}.markdown--t5EHw6k4 code[class*=\"language-\"]::selection,.markdown--t5EHw6k4 code[class*=\"language-\"] *::selection,.markdown--t5EHw6k4 pre[class*=\"language-\"] *::selection{background:hsl(230,1%,90%);color:inherit}.markdown--t5EHw6k4 pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow-x:auto;border-radius:9px}.markdown--t5EHw6k4 :not(pre) > code[class*=\"language-\"]{padding:0.2em 0.3em;border-radius:9px;white-space:normal}.markdown--t5EHw6k4 .token.comment,.markdown--t5EHw6k4 .token.prolog,.markdown--t5EHw6k4 .token.cdata{color:hsl(230,4%,64%)}.markdown--t5EHw6k4 .token.doctype,.markdown--t5EHw6k4 .token.punctuation,.markdown--t5EHw6k4 .token.entity{color:hsl(230,8%,24%)}.markdown--t5EHw6k4 .token.attr-name,.markdown--t5EHw6k4 .token.class-name,.markdown--t5EHw6k4 .token.boolean,.markdown--t5EHw6k4 .token.constant,.markdown--t5EHw6k4 .token.number,.markdown--t5EHw6k4 .token.atrule{color:hsl(35,99%,36%)}.markdown--t5EHw6k4 .token.keyword{color:hsl(301,63%,40%)}.markdown--t5EHw6k4 .token.property,.markdown--t5EHw6k4 .token.tag,.markdown--t5EHw6k4 .token.symbol,.markdown--t5EHw6k4 .token.deleted,.markdown--t5EHw6k4 .token.important{color:hsl(5,74%,59%)}.markdown--t5EHw6k4 .token.selector,.markdown--t5EHw6k4 .token.string,.markdown--t5EHw6k4 .token.char,.markdown--t5EHw6k4 .token.builtin,.markdown--t5EHw6k4 .token.inserted,.markdown--t5EHw6k4 .token.regex,.markdown--t5EHw6k4 .token.attr-value,.markdown--t5EHw6k4 .token.attr-value > .token.punctuation{color:hsl(119,34%,47%)}.markdown--t5EHw6k4 .token.variable,.markdown--t5EHw6k4 .token.operator,.markdown--t5EHw6k4 .token.function{color:hsl(221,87%,60%)}.markdown--t5EHw6k4 .token.url{color:hsl(198,99%,37%)}.markdown--t5EHw6k4 .token.attr-value > .token.punctuation.attr-equals,.markdown--t5EHw6k4 .token.special-attr > .token.attr-value > .token.value.css{color:hsl(230,8%,24%)}.markdown--t5EHw6k4 .language-css .token.selector{color:hsl(5,74%,59%)}.markdown--t5EHw6k4 .language-css .token.property{color:hsl(230,8%,24%)}.markdown--t5EHw6k4 .language-css .token.function,.markdown--t5EHw6k4 .language-css .token.url > .token.function{color:hsl(198,99%,37%)}.markdown--t5EHw6k4 .language-css .token.url > .token.string.url{color:hsl(119,34%,47%)}.markdown--t5EHw6k4 .language-css .token.important,.markdown--t5EHw6k4 .language-css .token.atrule .token.rule{color:hsl(301,63%,40%)}.markdown--t5EHw6k4 .language-javascript .token.operator{color:hsl(301,63%,40%)}.markdown--t5EHw6k4 .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:hsl(344,84%,43%)}.markdown--t5EHw6k4 .language-json .token.operator{color:hsl(230,8%,24%)}.markdown--t5EHw6k4 .language-json .token.null.keyword{color:hsl(35,99%,36%)}.markdown--t5EHw6k4 .language-markdown .token.url,.markdown--t5EHw6k4 .language-markdown .token.url > .token.operator,.markdown--t5EHw6k4 .language-markdown .token.url-reference.url > .token.string{color:hsl(230,8%,24%)}.markdown--t5EHw6k4 .language-markdown .token.url > .token.content{color:hsl(221,87%,60%)}.markdown--t5EHw6k4 .language-markdown .token.url > .token.url,.markdown--t5EHw6k4 .language-markdown .token.url-reference.url{color:hsl(198,99%,37%)}.markdown--t5EHw6k4 .language-markdown .token.blockquote.punctuation,.markdown--t5EHw6k4 .language-markdown .token.hr.punctuation{color:hsl(230,4%,64%);font-style:italic}.markdown--t5EHw6k4 .language-markdown .token.code-snippet{color:hsl(119,34%,47%)}.markdown--t5EHw6k4 .language-markdown .token.bold .token.content{color:hsl(35,99%,36%)}.markdown--t5EHw6k4 .language-markdown .token.italic .token.content{color:hsl(301,63%,40%)}.markdown--t5EHw6k4 .language-markdown .token.strike .token.content,.markdown--t5EHw6k4 .language-markdown .token.strike .token.punctuation,.markdown--t5EHw6k4 .language-markdown .token.list.punctuation,.markdown--t5EHw6k4 .language-markdown .token.title.important > .token.punctuation{color:hsl(5,74%,59%)}.markdown--t5EHw6k4 .token.bold{font-weight:bold}.markdown--t5EHw6k4 .token.comment,.markdown--t5EHw6k4 .token.italic{font-style:italic}.markdown--t5EHw6k4 .token.entity{cursor:help}.markdown--t5EHw6k4 .token.namespace{opacity:0.8}.markdown--t5EHw6k4 table{width:100%;overflow-x:auto;border-collapse:collapse}.markdown--t5EHw6k4 tr{border-top:1px solid #ccd1de}.markdown--t5EHw6k4 td,.markdown--t5EHw6k4 th{border:1px solid #ccd1de;padding:6px 13px}.markdown--t5EHw6k4{overflow-wrap:break-word}.markdown--t5EHw6k4:not(:first-child){margin-top:6px}.markdown--t5EHw6k4 p{margin:1em 0}.markdown--t5EHw6k4 > :first-child{margin-top:0}.markdown--t5EHw6k4 > :last-child{margin-bottom:0}.table-container--hekbaxrD{padding:8px 8px 10px;border-radius:12px;border:1px solid #e2e2ec;background:#ffffff}.table-container--hekbaxrD:not(:first-child){margin-top:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"shine-text\": `shine-text--t2t9tIJp`,\n\t\"shineText\": `shineText--ycIJ4nxc`,\n\t\"markdown\": `markdown--t5EHw6k4`,\n\t\"table-container\": `table-container--hekbaxrD`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["VALID_IDENTIFIER_REG","getMemberAccessor","property","propertyStr","String","test","JSON","stringify","pick","_","convertToStoryboard","config","attr","options","lowLevelConvertToStoryboard","attrAccessor","brickItem","display","getPlainBrick","type","countOnly","brick","children","_config$style","_config$style2","_config$style3","_config$style4","_config$style5","colorSuffix","style","variant","valueAccessor","getValueAccessor","properties","textContent","size","getTagSize","color","background","palette","replaceAll","outline","getIconBrick","alignItems","gap","maxItems","Number","dataSource","if","_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","value","formatter","format","undefined","isCostTime","tag","_config$true$text","_config$true3","_config$false$text","_config$false3","_config$true4","_config$false4","trueContent","text","falseContent","field","configStyle","ignoreStyle","fontSize","fontWeight","cache","Map","async","getModelObjectInstanceId","objectId","has","get","promise","list","InstanceApi_postSearchV3","fields","query","$eq","page_size","length","instanceId","doGetModelObjectInstanceId","set","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","START_NODE_ID","END_NODE_ID","FEEDBACK_NODE_ID","REQUIREMENT_NODE_ID","CANVAS_PADDING_TOP","CANVAS_PADDING_RIGHT","CANVAS_PADDING_BOTTOM","CANVAS_PADDING_LEFT","RANK_SEP","NODE_SEP","EDGE_SEP","DONE_STATES","GENERAL_DONE_STATES","IS_MAC","_ref","_userAgentData$platfo","_userAgentData","navigator","userAgentData","platform","userAgent","ICON_CLOSE","ICON_LOADING","spinning","getOrderedJobs","jobs","fixedJobs","jobMap","childrenMap","downstreamMap","rootDownstreams","rootChildren","jobLevels","hiddenJobIds","Set","showHiddenJobs","job","id","hidden","add","parent","push","_job$upstream2","up","_job$upstream","upstream","downstream","alignDownstreamMap","level","jobId","subChildren","directSubChildren","filter","child","_childJob$upstream","leafSubChildren","findVisibleDownstreams","downstreams","flatMap","nextDownstreams","newDownstreamMap","fixDownstreams","visibleDownstreams","visitedJobs","queue","shift","createPortal","rootId","portal","document","createElement","dataset","position","width","height","body","append","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","DEFINE_VARIABLE","DEFINE_DATA_SOURCE","EventHandlerOfUpdateVariable","z","action","payload","name","EventHandlerOfRefreshDataSource","EventHandlerOfCallComponent","componentId","method","args","optional","EventHandlerOfShowMessage","content","EventHandlerOfCallAPI","api","params","callback","EventHandlerCallback","EventHandler","OneOrMoreEventHandlers","success","error","finally","EXPRESSION_PREFIX_REG","EXPRESSION_SUFFIX_REG","validateExpression","expr","invalidNode","t","enter","node","disallowArrowFunction","ambiguousSymbol","Symbol","constructJsValue","state","some","prop","allowExpression","_options$modifier","ambiguous","modifier","source","substring","start","end","errors","message","severity","obj","computed","shorthand","key","constructJsObject","elements","elem","_options$modifier2","arr","constructJsArray","_options$modifier3","constructPropValue","shouldCompute","_options$modifier4","_parent","p","constructEvents","result","events","handlers","handler","constructEventHandler","_payload","payloadProp","ambiguousParams","parsedHandler","safeParse","data","constructElement","openingElement","tagName","ambiguousProps","attributes","attrName","_attr$value","_attr$value2","expression","_attr$value3","_attr$value4","reward","rawChildren","map","onlyTextChildren","every","previousChild","tempChildren","_previousChild","_previousChild2","_previousChild3","splice","c","join","trim","mergeTexts","component","componentsMap","constructView","element","title","components","parseJsx","_ast","dataSources","variables","ast","parse","plugins","sourceType","errorRecovery","code","reasonCode","stmt","_ast$program$body","_ast2","program","callee","missingArgs","arguments","varName","dataSourceName","dataSourceConfig","isNilNode","_prop$value$params$","arg","transform","declaration","mergeMessages","messages","merged","previousRole","role","lastMessage","parts","mergeMessageParts","previousType","previousDataType","part","_part$data","_part$data2","getJobGeneratedView","getJobComponentGraph","previousGraph","graph","hasGraph","_part$data3","msg","nodes","edges","Object","values","_node$children$map","_node$children","Array","isArray","pull","target","initial","nodeIndex","findIndex","n","status","slice","rootReducer","reducers","task","taskPatch","isInitial","isMatchWith","isEqual","_state$findLast","jobsPatch","previousComponentGraph","findLast","componentGraph","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","messagesPatch","toolCall","originalArguments","e","argumentsParseFailed","argumentsParseError","_patch$toolCall","_patch$toolCall2","patch","generatedView","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","_previousJob$messages2","previousJob","restMessagesPatch","_previousJob$messages","includes","fromEntries","entries","MINIMAL_DELAY","useTaskDetail","taskId","replay","replayDelay","dispatch","useReducer","humanInputRef","useRef","resumedRef","replayListRef","replayRef","replayDelayRef","replayResolveRef","skipToResults","useCallback","current","watchAgain","previousTime","delay","time","Math","min","max","Promise","resolve","setTimeout","useEffect","ctrl","ignore","requesting","makeRequest","AbortController","request","createSSEStream","getBasePath","signal","stream","console","handleHttpError","input","http","post","_ctrl","abort","getCodeLanguage","className","classListItem","toLowerCase","rehypePrism","visitor","_index","lang","concat","refractor","highlight","toString","tree","visit","count","mermaid","initialize","startOnLoad","themeVariables","lineColor","primaryColor","primaryBorderColor","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","index","svg","render","root","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","all","production","Fragment","jsx","jsxs","MarkdownComponent","reactContent","setReactContent","useState","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeReact","passNode","process","then","vFile","catch","pre","CodeBlock","EnhancedMarkdown","props","ref","setHoverOnScrollableContent","useContext","CanvasContext","handleMouseMove","found","el","nativeEvent","composedPath","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","React","onMouseMove","onMouseLeave","_extends","WrappedIcon","wrapBrick","WrappedButton","WrappedDrawer","onClose","onOpen","WrappedIconButton","showDialog","unwrapProvider","copyToClipboard","___CSS_LOADER_EXPORT___","module","findNearestCandidate","candidates","weight","reduce","nearest","candidate","abs","visualWeight","attrListCache","getPreGeneratedAttrViews","attrViews","attrList","InstanceApi_getDetail","doGetAttrList","getAttrList","_attr$generatedView","select","doGetPreGeneratedAttrViews","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","detail","outputSchema","useMemo","uniqueId","rootRef","container","unstable_createRoot","supportsUseChildren","unmount","remove","loading","setLoading","_rootRef$current","bricks","context","_schema","schema","modals","builtinFnStringify","convertArrayOfObjects","label","idPrefix","needContext","_props$","modalId","normalizeIdentifier","contextId","modal","themeVariant","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","description","upperFirst","slot","convertObject","dataIndex","pagination","bordered","clickHandler","cursor","click","_props$2","column","_ref2","_ref3","def","isEmptyValue","contextName","useBrick","isComplexType","isObject","keys","convertCmdbInstanceDetail","styles","hasOwnProperty","identifier","replace","createContext","humanInput","onShare","onPause","onResume","onCancel","onNodeResize","onSubmitFeedback","activeToolCallJobId","setActiveToolCallJobId","setActiveNodeId","hoverOnScrollableContent","activeExpandedViewJobId","setActiveExpandedViewJobId","setActiveFile","setShowFeedback","submittingFeedback","submittedFeedback","COPY_BUTTON_ICON","COPY_BUTTON_ICON_SUCCESS","COPY_BUTTON_ICON_FAILED","_props$className","isCodeBlock","setState","timerRef","handleCopy","_ref$current","clearTimeout","classNames","copy","failed","onClick"],"sourceRoot":""}
|