@next-bricks/ai-portal 0.53.0 → 0.55.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 +21 -19
- package/dist/chunks/1864.4bd403fd.js +2 -0
- package/dist/chunks/1864.4bd403fd.js.map +1 -0
- package/dist/chunks/1889.b7766f77.js +2 -0
- package/dist/chunks/1889.b7766f77.js.map +1 -0
- package/dist/chunks/2761.561a580a.js +2 -0
- package/dist/chunks/2761.561a580a.js.map +1 -0
- package/dist/chunks/3227.689d8678.js +2 -0
- package/dist/chunks/3227.689d8678.js.map +1 -0
- package/dist/chunks/4888.42dd29a2.js +3 -0
- package/dist/chunks/4888.42dd29a2.js.map +1 -0
- package/dist/chunks/6201.fa3b6e24.js +2 -0
- package/dist/chunks/6201.fa3b6e24.js.map +1 -0
- package/dist/chunks/{6593.1afe9a04.js → 6593.58eda50f.js} +2 -2
- package/dist/chunks/6593.58eda50f.js.map +1 -0
- package/dist/chunks/7279.af201b60.js +3 -0
- package/dist/chunks/{6947.1cec7258.js.LICENSE.txt → 7279.af201b60.js.LICENSE.txt} +0 -6
- package/dist/chunks/7279.af201b60.js.map +1 -0
- package/dist/chunks/9388.e48bb229.js +2 -0
- package/dist/chunks/9388.e48bb229.js.map +1 -0
- package/dist/chunks/chat-box.8e064684.js +2 -0
- package/dist/chunks/chat-box.8e064684.js.map +1 -0
- package/dist/chunks/chat-input.dd3d2035.js +2 -0
- package/dist/chunks/chat-input.dd3d2035.js.map +1 -0
- package/dist/chunks/{cruise-canvas.60fa24a3.js → cruise-canvas.c494563b.js} +2 -2
- package/dist/chunks/{cruise-canvas.60fa24a3.js.map → cruise-canvas.c494563b.js.map} +1 -1
- package/dist/chunks/elevo-card.49b42ed0.js +3 -0
- package/dist/chunks/elevo-card.49b42ed0.js.map +1 -0
- package/dist/chunks/flow-tabs.ce40cc92.js +2 -0
- package/dist/chunks/flow-tabs.ce40cc92.js.map +1 -0
- package/dist/chunks/main.6b7402db.js +2 -0
- package/dist/chunks/main.6b7402db.js.map +1 -0
- package/dist/chunks/set-chat-command.367b9c88.js +2 -0
- package/dist/chunks/set-chat-command.367b9c88.js.map +1 -0
- package/dist/chunks/stage-flow.4c7ea7d9.js +2 -0
- package/dist/chunks/stage-flow.4c7ea7d9.js.map +1 -0
- package/dist/examples.json +11 -11
- package/dist/images/0e7e6764.png +0 -0
- package/dist/images/7944ebaf.png +0 -0
- package/dist/images/c7ec12fe.png +0 -0
- package/dist/index.14c08956.js +2 -0
- package/dist/index.14c08956.js.map +1 -0
- package/dist/manifest.json +182 -165
- package/dist/types.json +1071 -616
- package/dist-types/bootstrap.d.ts +1 -0
- package/dist-types/chat-box/FileListComponent.d.ts +8 -0
- package/dist-types/chat-box/UploadButton.d.ts +9 -0
- package/dist-types/chat-box/bricks.d.ts +8 -0
- package/dist-types/chat-box/index.d.ts +6 -1
- package/dist-types/chat-box/interfaces.d.ts +8 -0
- package/dist-types/data-providers/set-chat-command.d.ts +7 -0
- package/dist-types/data-providers/set-chat-command.spec.d.ts +1 -0
- package/dist-types/shared/interfaces.d.ts +9 -0
- package/dist-types/stage-flow/i18n.d.ts +3 -1
- package/dist-types/stage-flow/index.d.ts +2 -0
- package/package.json +2 -2
- package/dist/chunks/1334.aae33a33.js +0 -2
- package/dist/chunks/1334.aae33a33.js.map +0 -1
- package/dist/chunks/1889.0cd5c088.js +0 -2
- package/dist/chunks/1889.0cd5c088.js.map +0 -1
- package/dist/chunks/2142.0599aecd.js +0 -2
- package/dist/chunks/2142.0599aecd.js.map +0 -1
- package/dist/chunks/2893.c26f0be9.js +0 -2
- package/dist/chunks/2893.c26f0be9.js.map +0 -1
- package/dist/chunks/3020.acf9607e.js +0 -2
- package/dist/chunks/3020.acf9607e.js.map +0 -1
- package/dist/chunks/6201.58eeb93e.js +0 -2
- package/dist/chunks/6201.58eeb93e.js.map +0 -1
- package/dist/chunks/6593.1afe9a04.js.map +0 -1
- package/dist/chunks/6947.1cec7258.js +0 -3
- package/dist/chunks/6947.1cec7258.js.map +0 -1
- package/dist/chunks/chat-box.59ab1b62.js +0 -2
- package/dist/chunks/chat-box.59ab1b62.js.map +0 -1
- package/dist/chunks/chat-input.b09e4ba0.js +0 -3
- package/dist/chunks/chat-input.b09e4ba0.js.map +0 -1
- package/dist/chunks/elevo-card.731505e0.js +0 -3
- package/dist/chunks/elevo-card.731505e0.js.map +0 -1
- package/dist/chunks/flow-tabs.222a11ea.js +0 -3
- package/dist/chunks/flow-tabs.222a11ea.js.LICENSE.txt +0 -5
- package/dist/chunks/flow-tabs.222a11ea.js.map +0 -1
- package/dist/chunks/main.2188a2bf.js +0 -2
- package/dist/chunks/main.2188a2bf.js.map +0 -1
- package/dist/chunks/stage-flow.7cfa123d.js +0 -2
- package/dist/chunks/stage-flow.7cfa123d.js.map +0 -1
- package/dist/index.7d776211.js +0 -2
- package/dist/index.7d776211.js.map +0 -1
- /package/dist/chunks/{chat-input.b09e4ba0.js.LICENSE.txt → 4888.42dd29a2.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-card.731505e0.js.LICENSE.txt → elevo-card.49b42ed0.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/6593.1afe9a04.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/utils/createPortal.ts","webpack:///./src/shared/workers/tsxParser.ts","webpack:///../../../src/modules/constants.ts","webpack:///../../../src/modules/validations.ts","webpack:///../../../src/modules/convertDataSource.ts","webpack:///../../src/convertEvents.ts","webpack:///../../src/expressions.ts","webpack:///../../src/deepReplaceVariables.ts","webpack:///../../src/convertTable.ts","webpack:///../../src/convertDashboard.ts","webpack:///../../../src/modules/getTplName.ts","webpack:///../../src/convertComponent.ts","webpack:///../../src/convertList.ts","webpack:///../../src/convertDescriptions.ts","webpack:///../../src/convertCard.ts","webpack:///../../src/convertButton.ts","webpack:///../../src/convertForm.ts","webpack:///../../src/convertToolbar.ts","webpack:///../../src/convertModal.ts","webpack:///../../src/convertText.ts","webpack:///../../src/convertLink.ts","webpack:///../../src/convertOutput.ts","webpack:///../../src/convertTag.ts","webpack:///../../src/convertAvatar.ts","webpack:///../../src/convertAvatarGroup.ts","webpack:///../../src/convertCodeBlock.ts","webpack:///../../src/convertFormItem.ts","webpack:///../../src/convertForEach.ts","webpack:///../../src/convertIf.ts","webpack:///../../../src/modules/convertModule.ts","webpack:///../../../src/helpers/index.ts","webpack:///../../src/withBox.ts","webpack:///../../../src/modules/convertView.ts"],"sourcesContent":["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","// istanbul ignore file\nimport type { ParsedApp, ParseOptions } from \"@next-shared/tsx-parser\";\nimport { wrap } from \"comlink\";\n\nexport interface RemoteTsxParserWorker {\n parseView(source: string, options?: ParseOptions): Promise<ParsedApp>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteTsxParserWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteTsxParserWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteTsxParserWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./tsxParser.worker.ts\", import.meta.url));\n }\n return worker;\n}\n","export const MODULE_SOURCE = \"next-tsx\";\n\nexport const CALL_API_LIST = [\"callApi\", \"callHttp\", \"callTool\"] as const;\n","import type { NodePath } from \"@babel/traverse\";\nimport * as t from \"@babel/types\";\nimport type { ComponentChild, ParsedModule } from \"./interfaces.js\";\nimport { MODULE_SOURCE } from \"./constants.js\";\n\nexport function validateFunction(\n fn: t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression,\n state: ParsedModule\n): boolean {\n if (fn.async || fn.generator) {\n state.errors.push({\n message: `Function cannot be async or generator`,\n node: fn,\n severity: \"error\",\n });\n return false;\n }\n\n return true;\n}\n\nexport function validateGlobalApi(\n id: NodePath<t.Identifier | t.JSXIdentifier>,\n api: string\n): boolean {\n const ref = id.referencesImport(MODULE_SOURCE, api);\n if (ref) {\n return true;\n }\n return id.node.name === api && !id.scope.getBinding(id.node.name);\n}\n\nexport function validateEmbeddedExpression(\n expr: t.Expression,\n state: ParsedModule | null\n): boolean {\n let invalidNode: t.Node | null = null;\n\n t.traverse(expr, {\n enter(node, parent) {\n if (\n !invalidNode &&\n (t.isFunctionExpression(node) ||\n t.isStatement(node) ||\n t.isAwaitExpression(node) ||\n t.isYieldExpression(node) ||\n t.isJSX(node) ||\n (t.isArrowFunctionExpression(node) &&\n (node.async ||\n node.generator ||\n t.isBlockStatement(node.body) ||\n t.isObjectProperty(parent[parent.length - 1]?.node))))\n ) {\n invalidNode = node;\n }\n },\n });\n\n if (invalidNode) {\n state?.errors.push({\n message: `Unsupported expression type: ${(invalidNode as t.Node).type}`,\n node: invalidNode,\n severity: \"error\",\n });\n return false;\n }\n\n return true;\n}\n\nexport function isNilPath(path: NodePath<t.Node>) {\n return (\n path.isNullLiteral() ||\n (path.isIdentifier() &&\n path.node.name === \"undefined\" &&\n path.scope.getBinding(\"undefined\") === undefined)\n );\n}\n\nconst EXPRESSION_PREFIX_REG = /^<%=?\\s/;\nconst EXPRESSION_SUFFIX_REG = /\\s%>$/;\n\nexport function isExpressionString(value: unknown): value is string {\n if (typeof value !== \"string\") {\n return false;\n }\n const trimmed = value.trim();\n return (\n EXPRESSION_PREFIX_REG.test(trimmed) && EXPRESSION_SUFFIX_REG.test(trimmed)\n );\n}\n\nexport function isAnyOfficialComponent(child: ComponentChild) {\n return (\n !child.reference ||\n (child.reference.type === \"imported\" &&\n child.reference.importSource === MODULE_SOURCE)\n );\n}\n\nexport function isOfficialComponent(child: ComponentChild, name: string) {\n return (\n isAnyOfficialComponent(child) &&\n (child.reference ? child.reference.name === name : child.name === name)\n );\n}\n","import type { ContextConf } from \"@next-core/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { DataSource } from \"@next-shared/tsx-parser\";\n\nexport function convertDataSource(resource: DataSource): ContextConf {\n const {\n name,\n http,\n api,\n params,\n tool,\n transform,\n rejectTransform,\n config,\n scope,\n } = resource;\n const hasEnabled =\n config && Object.prototype.hasOwnProperty.call(config, \"enabled\");\n\n return {\n name: name,\n resolve: {\n ...(http\n ? {\n useProvider: \"basic.http-request\",\n args: [api, params],\n }\n : tool\n ? {\n useProvider: \"ai-portal.call-tool\",\n args: [tool, params],\n }\n : {\n useProvider: `${api}:*`,\n params: params as Record<string, unknown> | undefined,\n // TODO: remove the temporary workaround below\n ...(api === \"easyops.api.data_exchange.olap@Query\" &&\n isObject(params)\n ? {\n params: {\n ...params,\n translate: [\"#showKey\"],\n limit: undefined,\n limitBy: undefined,\n order: undefined,\n displayName: true,\n },\n }\n : null),\n }),\n ...(transform ? { transform: { value: transform } } : null),\n ...(rejectTransform\n ? { onReject: { transform: { value: rejectTransform } } }\n : null),\n ...(hasEnabled\n ? {\n if: config.enabled as string | boolean,\n }\n : null),\n },\n track: true,\n ...(hasEnabled\n ? {\n value: config.fallback,\n }\n : null),\n ...(scope === \"template\" ? { expose: false } : null),\n };\n}\n","import type { BrickEventHandler, BrickEventsMap } from \"@next-core/types\";\nimport type { Component, EventHandler } from \"@next-shared/tsx-parser\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nexport function convertEvents(component: Component, options: ConvertOptions) {\n const events: BrickEventsMap = {};\n for (const [event, handler] of Object.entries(component.events ?? {})) {\n switch (component.name) {\n case \"Table\":\n switch (event) {\n case \"select\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"row.select.v2\"] = action;\n }\n break;\n }\n case \"sort\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"sort.change\"] = action;\n }\n break;\n }\n case \"paginate\": {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"page.change\"] = action;\n }\n break;\n }\n }\n break;\n case \"Button\":\n if (event === \"click\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events.click = action;\n }\n }\n break;\n case \"Search\":\n if (event === \"search\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events.search = action;\n }\n }\n break;\n case \"Select\":\n if (event === \"change\") {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[\"change.v2\"] = action;\n }\n }\n break;\n default: {\n const action = convertEventHandlers(handler, options);\n if (action) {\n events[event] = action;\n }\n }\n }\n }\n return Object.keys(events).length > 0 ? events : undefined;\n}\n\nfunction convertEventHandlers(\n handler: EventHandler | EventHandler[] | null,\n options: ConvertOptions\n): BrickEventHandler[] | undefined {\n if (!handler) {\n return;\n }\n const list = (Array.isArray(handler) ? handler : [handler])\n .map((hdl) => convertEventHandler(hdl, options))\n .filter(Boolean) as BrickEventHandler[];\n return list.length > 0 ? list : undefined;\n}\n\nfunction convertEventHandler(\n handler: EventHandler,\n options: ConvertOptions\n): BrickEventHandler | undefined {\n switch (handler?.action) {\n case \"update_variable\":\n return {\n action:\n handler.payload.scope === \"template\"\n ? \"state.update\"\n : \"context.replace\",\n args: [handler.payload.name, handler.payload.value],\n };\n case \"refresh_data_source\":\n return {\n action:\n handler.payload.scope === \"template\"\n ? \"state.refresh\"\n : \"context.refresh\",\n args: [handler.payload.name],\n };\n case \"call_api\": {\n const { api, http, tool, params } = handler.payload;\n\n const success = handler.callback?.success\n ? convertEventHandlers(\n handler.callback.success as EventHandler | EventHandler[],\n options\n )\n : undefined;\n\n return {\n ...(http\n ? {\n useProvider: \"basic.http-request\",\n args: [api, params],\n }\n : tool\n ? {\n useProvider: \"ai-portal.call-tool\",\n args: [tool, params],\n }\n : {\n useProvider: `${api}:*`,\n params,\n }),\n callback: {\n ...(success && { success }),\n error: {\n action: \"handleHttpError\",\n },\n },\n };\n }\n case \"call_ref\":\n return {\n ...(handler.payload.scope === \"template\"\n ? {\n targetRef: handler.payload.ref,\n }\n : {\n target: `[data-root-id=\"${options.rootId}\"] [data-ref=\"${handler.payload.ref}\"]`,\n }),\n method: handler.payload.method,\n args: handler.payload.args,\n };\n case \"update_query\":\n return {\n action:\n handler.payload.method === \"replace\"\n ? \"history.replaceQuery\"\n : \"history.pushQuery\",\n args: handler.payload.args,\n };\n case \"show_message\":\n return {\n action: `message.${handler.payload.type}` as \"message.info\",\n args: [handler.payload.content],\n };\n case \"dispatch_event\":\n return {\n action: \"tpl.dispatchEvent\",\n args: [handler.payload.type, { detail: handler.payload.detail }],\n };\n case \"conditional\":\n return {\n if: handler.payload.test,\n then: convertEventHandlers(handler.payload.consequent, options) ?? [],\n else: convertEventHandlers(handler.payload.alternate, options),\n };\n }\n}\n","import { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\n\nconst EXPRESSION_PREFIX_REG = /^<%=?\\s/;\nconst EXPRESSION_SUFFIX_REG = /\\s%>$/;\n\n/**\n * @param value The trimmed string content\n * @returns if the value is a valid expression\n */\nfunction isExpression(value: string) {\n return EXPRESSION_PREFIX_REG.test(value) && EXPRESSION_SUFFIX_REG.test(value);\n}\n\nexport function parseDataSource(data: string | object):\n | {\n isString: false;\n embedded?: undefined;\n expression?: undefined;\n usedContexts?: undefined;\n }\n | {\n isString: true;\n embedded: string;\n expression: string;\n usedContexts: Set<string>;\n } {\n if (typeof data !== \"string\") {\n return {\n isString: false,\n };\n }\n\n let expression: string;\n const expr = data.trim();\n if (isExpression(expr)) {\n expression = expr\n .replace(EXPRESSION_PREFIX_REG, \"\")\n .replace(EXPRESSION_SUFFIX_REG, \"\")\n .trim();\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"Invalid expression:\", JSON.stringify(data));\n expression = \"null\";\n }\n\n const usedContexts = strictCollectMemberUsage(data, \"CTX\");\n\n return {\n isString: true,\n embedded: data,\n expression,\n usedContexts,\n };\n}\n","import type * as t from \"@babel/types\";\nimport { preevaluate, type PreevaluateResult } from \"@next-core/cook\";\nimport { isExpressionString } from \"@next-shared/tsx-parser\";\n\nexport function deepReplaceVariables<T>(\n value: T,\n patterns: Map<string, string> | undefined\n): T {\n if (!patterns?.size) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) =>\n deepReplaceVariables(item, patterns)\n ) as unknown as T;\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n deepReplaceVariables(v, patterns),\n ])\n ) as T;\n }\n\n if (typeof value === \"string\" && isExpressionString(value)) {\n return replaceVariables(value, patterns) as unknown as T;\n }\n\n return value;\n}\n\ninterface Replacement {\n id: t.Identifier;\n shorthand?: boolean;\n}\n\nexport function replaceVariables(\n expr: string,\n patterns: Map<string, string> | undefined\n): string {\n if (!patterns?.size) {\n return expr;\n }\n const keywords = [...patterns.keys()];\n if (keywords.some((k) => expr.includes(k))) {\n const replacements: Replacement[] = [];\n let result: PreevaluateResult | undefined;\n try {\n result = preevaluate(expr, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, path) {\n if (patterns.has(node.name)) {\n const p = path![path!.length - 1]?.node;\n let shorthand: boolean | undefined;\n if (p && p.type === \"Property\" && !p.computed && p.shorthand) {\n shorthand = true;\n }\n replacements.push({ id: node, shorthand });\n }\n },\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse expression failed:\", error);\n }\n if (replacements.length > 0 && result) {\n const { prefix, source, suffix } = result;\n const chunks: string[] = [];\n let prevStart = 0;\n for (let i = 0; i < replacements.length; i++) {\n const { id, shorthand } = replacements[i];\n const { name, start, end } = id;\n chunks.push(\n source.substring(prevStart, start!),\n `${shorthand ? `${name}: ` : \"\"}${patterns.get(name)}`\n );\n prevStart = end!;\n }\n chunks.push(source.substring(prevStart));\n return `${prefix}${chunks.join(\"\")}${suffix}`;\n }\n }\n return expr;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type {\n ComponentChild,\n ParsedModule,\n RenderUseBrick,\n} from \"@next-shared/tsx-parser\";\nimport type { TableColumn, TableProps } from \"../lib/components.js\";\nimport type { ConvertState, ConvertOptions } from \"./interfaces.js\";\n// import { lowLevelConvertToStoryboard } from \"./raw-data-generate/convert.js\";\nimport { parseDataSource } from \"./expressions.js\";\n// import { getPreGeneratedAttrViews } from \"./getPreGeneratedAttrViews.js\";\n// import { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport { deepReplaceVariables } from \"./deepReplaceVariables.js\";\n\nconst columnUseBrickParams = [\"cellData\", \"rowData\"];\n\nexport default async function convertTable(\n component: ComponentChild,\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions,\n scope: \"page\" | \"view\" | \"template\"\n): Promise<BrickConf> {\n const { properties } = component;\n const { dataSource, size, columns, rowKey, pagination, ...restProps } =\n properties as Omit<TableProps<object>, \"dataSource\" | \"columns\"> & {\n dataSource: string | object;\n size?: \"small\" | \"medium\" | \"large\";\n pagination?: boolean;\n columns:\n | string\n | Array<\n Omit<TableColumn<object>, \"render\"> & {\n render?: RenderUseBrick;\n }\n >;\n };\n\n const parsedDataSource = parseDataSource(dataSource);\n\n // const objectId = findObjectIdByUsedDataContexts(\n // parsedDataSource.usedContexts,\n // view.dataSources,\n // view.variables\n // );\n\n // const attrViews = objectId\n // ? await getPreGeneratedAttrViews(objectId)\n // : undefined;\n\n const configuredColumns = new Map<string, BrickConf>();\n\n // if (attrViews?.size && Array.isArray(columns)) {\n // for (const column of columns) {\n // if (column.render || typeof column.dataIndex !== \"string\") {\n // continue;\n // }\n // const candidate = attrViews.get(column.dataIndex);\n // if (candidate) {\n // const brick = lowLevelConvertToStoryboard(candidate, \".cellData\");\n // if (brick) {\n // brick.slot = `[${column.dataIndex}]`;\n // configuredColumns.set(column.dataIndex, brick);\n // }\n // }\n // }\n // }\n\n const convertedColumns = Array.isArray(columns)\n ? await Promise.all(\n columns.map(async ({ render, ...column }) => {\n if (render) {\n const patterns = new Map<string, string>();\n for (\n let i = 0;\n i < render.params.length && i < columnUseBrickParams.length;\n i++\n ) {\n patterns.set(render.params[i], `DATA.${columnUseBrickParams[i]}`);\n }\n\n const useBrick = (\n await Promise.all(\n render.children.map((child) =>\n convertComponent(child, mod, state, options, scope)\n )\n )\n ).flatMap((child) => deepReplaceVariables(child, patterns));\n\n return {\n ...column,\n useBrick: useBrick.map((item) =>\n item.brick.startsWith(\":\")\n ? {\n brick: \"div\",\n children: [item],\n }\n : item\n ),\n };\n }\n return typeof column.dataIndex === \"string\" &&\n configuredColumns.has(column.dataIndex)\n ? {\n ...column,\n useChildren: `[${column.dataIndex}]`,\n }\n : column;\n })\n )\n : columns;\n\n return {\n brick: \"eo-next-table\",\n properties: {\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n ...restProps,\n rowKey: rowKey ?? (Array.isArray(columns) ? columns[0]?.key : undefined),\n columns: convertedColumns,\n themeVariant: \"elevo\",\n scrollConfig: {\n x: \"max-content\",\n },\n ...(options.expanded\n ? {\n bordered: true,\n pagination,\n size: \"large\",\n }\n : {\n size: \"middle\",\n pagination: false,\n }),\n },\n children:\n configuredColumns.size > 0 ? Array.from(configuredColumns.values()) : [],\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component, ParsedModule } from \"@next-shared/tsx-parser\";\nimport type { DashboardProps, DashboardWidget } from \"../lib/components.js\";\nimport { parseDataSource } from \"./expressions.js\";\n// import { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport {\n /* getPreGeneratedMetricGroups, */ type MetricWithGroup,\n} from \"./getPreGeneratedMetricGroups.js\";\nimport type { ConvertState, ConvertOptions } from \"./interfaces.js\";\n\nconst COLORS = [\n \"#336EF4\",\n \"#45CAFF\",\n \"#41CDCF\",\n \"#8146F3\",\n \"#F8A075\",\n \"#94E65E\",\n \"#57689C\",\n \"#C285EF\",\n \"#FAC60B\",\n \"#E4551F\",\n \"#8984FF\",\n \"#2540FF\",\n \"#08BF33\",\n \"#F7811C\",\n \"#AC7CFF\",\n \"#1BA5DC\",\n \"#E89716\",\n \"#76A6F5\",\n \"#4F69FF\",\n];\n\ninterface MergedWidget extends DashboardWidget {\n relevantMetrics?: string[];\n counterMetric?: string;\n groupTitle?: string;\n size?: \"small\" | \"medium\" | \"large\";\n}\n\nexport default async function convertDashboard(\n { properties }: Component,\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions\n): Promise<BrickConf> {\n const {\n dataSource,\n groupField: _groupField,\n widgets,\n } = properties as Omit<DashboardProps, \"dataSource\"> & {\n dataSource: string | object;\n };\n\n state.usedHelpers.add(\"_helper_getLatestMetricValue\");\n state.usedHelpers.add(\"_helper_extractList\");\n state.usedHelpers.add(\"_helper_groupMetricData\");\n state.usedHelpers.add(\"_helper_getMetricDisplayNames\");\n\n const groupField = _groupField ? \"#showKey\" : undefined;\n\n const { isString, expression /* , usedContexts */ } =\n parseDataSource(dataSource);\n\n const chartData = isString\n ? `<%= FN._helper_extractList((${expression})) %>`\n : dataSource;\n\n if (options.expanded) {\n let mergedWidgets = widgets as MergedWidget[];\n // const objectId = findObjectIdByUsedDataContexts(\n // usedContexts,\n // view.dataSources,\n // view.variables\n // );\n // const metricGroups = objectId\n // ? await getPreGeneratedMetricGroups(objectId)\n // : [];\n const metricGroups: MetricWithGroup[] = [];\n\n if (metricGroups.length > 0) {\n mergedWidgets = [];\n const mergedMetrics = new Set<string>();\n const metricIds = new Set(widgets.map((w) => w.metric.id));\n for (const widget of widgets) {\n if (mergedMetrics.has(widget.metric.id)) {\n continue; // Skip already merged metrics\n }\n const mergedWidget = { ...widget } as MergedWidget;\n mergedWidgets.push(mergedWidget);\n const group = metricGroups.find((g) =>\n g.metrics.includes(widget.metric.id)\n );\n if (group) {\n const relevantMetrics = group.metrics.filter((m) => metricIds.has(m));\n if (relevantMetrics.length > 1) {\n mergedWidget.relevantMetrics = relevantMetrics;\n mergedWidget.counterMetric = group.counter;\n mergedWidget.groupTitle = group.group;\n for (const metricId of relevantMetrics) {\n mergedMetrics.add(metricId);\n metricIds.delete(metricId);\n }\n }\n }\n }\n }\n\n let colorCursor = 0;\n\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(500px, 1fr))\",\n gap: \"16px\",\n },\n dataset: {\n component: \"dashboard\",\n },\n },\n children: mergedWidgets.map((widget) => {\n const { title, /* type, */ metric, size, precision } = widget;\n const colorCount =\n widget.relevantMetrics?.length ?? (groupField ? 2 : 1);\n const colors = Array.from(\n { length: colorCount },\n (_, i) => COLORS[(colorCursor + i) % COLORS.length]\n );\n colorCursor += colorCount;\n const unit = metric.unit === \"load\" ? \"\" : metric.unit;\n const chart = {\n brick: \"chart-v2.time-series-chart\",\n properties: {\n data: chartData,\n xField: \"time\",\n ...(widget.relevantMetrics\n ? {\n // yFields: widget.relevantMetrics,\n yFields: `<% FN._helper_getMetricDisplayNames((${expression}).displayNameList, ${JSON.stringify(\n widget.relevantMetrics\n )}) %>`,\n }\n : {\n // yField: metric.id,\n yField: `<% FN._helper_getMetricDisplayNames((${expression}).displayNameList, [${JSON.stringify(\n metric.id\n )}])[0] %>`,\n }),\n ...(widget.counterMetric\n ? {\n forceAbsoluteNumbers: true,\n series: {\n [widget.counterMetric]: {\n isNegative: true,\n },\n },\n }\n : null),\n height: size === \"large\" ? 230 : 200,\n timeFormat: \"HH:mm\",\n ...(widget.relevantMetrics || groupField\n ? null\n : {\n areaOptions: {\n style: {\n fill: `l(90) 0:${colors[0]} 1:#ffffff`,\n },\n },\n }),\n axis: {\n yAxis: {\n unit,\n precision,\n ...(widget.counterMetric\n ? null\n : unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : unit === \"percent(100)\" || unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n shape: \"smooth\",\n },\n },\n groupField,\n areaShape: \"smooth\",\n legends: !!(widget.relevantMetrics || groupField),\n colors: colors,\n tooltip: {\n marker: {\n fill: colors[0],\n stroke: \"#fff\",\n lineWidth: 2,\n shadowColor: colors[0],\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 4,\n },\n domStyles: {\n \"g2-tooltip\": {\n background: [\n `radial-gradient( farthest-corner at -20px 150px, ${colors[0]} 0%, rgba(238,238,238,0) 60%)`,\n \"linear-gradient( 180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.8) 100%)\",\n ].join(\", \"),\n boxShadow: `0px 4px 8px 0px ${convertHexColorToRGBA(colors[0], 0.08)}`,\n borderRadius: \"8px\",\n border: \"1px solid rgba(255,255,255,1)\",\n backdropFilter: \"blur(3px)\",\n },\n },\n },\n },\n };\n return {\n brick: \"div\",\n properties: {\n style: {\n background: \"rgba(255,255,255,0.8)\",\n boxShadow: \"0px 2px 4px 0px rgba(0,0,0,0.06)\",\n borderRadius: \"8px\",\n padding: \"16px 20px 20px\",\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n style: {\n fontSize: \"16px\",\n fontWeight: \"500\",\n marginBottom: \"20px\",\n },\n textContent: widget.groupTitle || title || metric.id,\n },\n },\n chart,\n ],\n };\n }),\n };\n }\n\n if (groupField) {\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<%= FN._helper_groupMetricData(FN._helper_extractList((${expression})), ${JSON.stringify(groupField)}) %>`,\n children: [\n {\n brick: \"div\",\n properties: {\n textContent: \"<% `${ITEM.group}:` %>\",\n style: {\n fontWeight: \"500\",\n },\n },\n },\n {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: \"10px\",\n marginBottom: \"8px\",\n },\n dataset: {\n component: \"dashboard\",\n },\n },\n children: widgets.map((widget, i) => {\n const { title, /* type, */ metric, precision } = widget;\n return {\n brick: \"ai-portal.stat-with-mini-chart\",\n properties: {\n size: \"small\",\n label: title || metric.id,\n data: \"<% ITEM.list %>\",\n xField: \"time\",\n yField: metric.id,\n lineColor: COLORS[i % COLORS.length],\n showArea: true,\n ...(metric.unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : metric.unit === \"percent(100)\" || metric.unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n value: `<%= FN._helper_getLatestMetricValue(ITEM.list, ${JSON.stringify(\n {\n metric,\n precision,\n }\n )}) %>`,\n },\n };\n }),\n },\n ],\n },\n ],\n };\n }\n\n return {\n brick: \"div\",\n properties: {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: \"10px\",\n },\n dataset: {\n component: \"dashboard\",\n },\n },\n children: widgets.map((widget, i) => {\n const { title, /* type, */ metric, precision } = widget;\n return {\n brick: \"ai-portal.stat-with-mini-chart\",\n properties: {\n size: \"small\",\n label: title || metric.id,\n data: chartData,\n xField: \"time\",\n yField: metric.id,\n lineColor: COLORS[i % COLORS.length],\n showArea: true,\n ...(metric.unit === \"percent(1)\"\n ? { min: 0, max: 1 }\n : metric.unit === \"percent(100)\" || metric.unit === \"%\"\n ? { min: 0, max: 100 }\n : { min: 0 }),\n value: `<%= FN._helper_getLatestMetricValue((${\n isString\n ? `FN._helper_extractList((${expression}))`\n : JSON.stringify(dataSource ?? null)\n }), ${JSON.stringify({\n metric,\n precision,\n })}) %>`,\n },\n };\n }),\n };\n}\n\nfunction convertHexColorToRGBA(color: string, alpha: number): string {\n const hex = color.slice(1);\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","let counter = 0;\nconst tplNameMap = new Map<string, string>();\n\nexport function getViewTplName(name: string, rootId: string) {\n return `${getViewTplNamePrefixByRootId(rootId)}${getViewTplNameSuffix(name)}`;\n}\n\nexport function getAppTplName(name: string) {\n return `tpl-${getViewTplNameSuffix(name)}`;\n}\n\nfunction getViewTplNamePrefixByRootId(rootId: string) {\n if (!tplNameMap.has(rootId)) {\n tplNameMap.set(rootId, `isolated-tpl-${counter++}`);\n }\n return tplNameMap.get(rootId)!;\n}\n\nfunction getViewTplNameSuffix(name: string) {\n return name.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport {\n isAnyOfficialComponent,\n type ComponentChild,\n type ModulePart,\n type ParsedModule,\n} from \"@next-shared/tsx-parser\";\nimport type { ConvertState, ConvertOptions } from \"./interfaces.js\";\nimport { convertEvents } from \"./convertEvents.js\";\nimport convertList from \"./convertList.js\";\nimport convertTable from \"./convertTable.js\";\nimport convertDescriptions from \"./convertDescriptions.js\";\nimport convertDashboard from \"./convertDashboard.js\";\nimport convertButton from \"./convertButton.js\";\nimport convertForm from \"./convertForm.js\";\nimport convertFormItem from \"./convertFormItem.js\";\nimport convertModal from \"./convertModal.js\";\nimport convertToolbar from \"./convertToolbar.js\";\nimport convertText from \"./convertText.js\";\nimport convertCard from \"./convertCard.js\";\nimport convertForEach from \"./convertForEach.js\";\nimport convertIf from \"./convertIf.js\";\nimport convertOutput from \"./convertOutput.js\";\nimport convertLink from \"./convertLink.js\";\nimport convertTag from \"./convertTag.js\";\nimport convertAvatar from \"./convertAvatar.js\";\nimport convertAvatarGroup from \"./convertAvatarGroup.js\";\nimport convertCodeBlock from \"./convertCodeBlock.js\";\nimport { getAppTplName, getViewTplName } from \"./modules/getTplName.js\";\n\nexport async function convertComponent(\n component: ComponentChild,\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions,\n scope: \"page\" | \"view\" | \"template\"\n): Promise<BrickConf | BrickConf[]> {\n let brick: BrickConf | null = null;\n\n if (isAnyOfficialComponent(component)) {\n const componentName = component.reference\n ? component.reference.name\n : component.name;\n switch (componentName) {\n case \"List\":\n brick = await convertList(component);\n break;\n case \"Table\":\n brick = await convertTable(component, mod, state, options, scope);\n break;\n case \"Descriptions\":\n brick = await convertDescriptions(\n component,\n mod,\n state,\n options,\n scope\n );\n break;\n case \"Card\":\n brick = await convertCard(component);\n break;\n case \"Dashboard\":\n brick = await convertDashboard(component, mod, state, options);\n break;\n case \"Button\":\n brick = await convertButton(component);\n break;\n case \"Form\":\n brick = await convertForm(component);\n break;\n case \"Toolbar\":\n brick = await convertToolbar(component);\n break;\n case \"Modal\":\n brick = await convertModal(component);\n break;\n case \"Plaintext\":\n brick = await convertText(component);\n break;\n case \"Link\":\n brick = await convertLink(component, mod, state);\n break;\n case \"Output\":\n brick = await convertOutput(component);\n break;\n case \"Tag\":\n brick = await convertTag(component);\n break;\n case \"Avatar\":\n brick = await convertAvatar(component);\n break;\n case \"AvatarGroup\":\n brick = await convertAvatarGroup(component);\n break;\n case \"CodeBlock\":\n brick = await convertCodeBlock(component);\n break;\n case \"Search\":\n case \"Input\":\n case \"NumberInput\":\n case \"Textarea\":\n case \"Select\":\n case \"Radio\":\n case \"Checkbox\":\n case \"Switch\":\n case \"DatePicker\":\n case \"TimePicker\":\n brick = await convertFormItem(\n component,\n convertComponentName(component.name)\n );\n break;\n case \"ForEach\":\n brick = await convertForEach(component);\n break;\n case \"If\":\n brick = await convertIf(component);\n break;\n default:\n if (\n state.app.appType === \"app\" &&\n component.name.toLowerCase() === component.name\n ) {\n // Assume it's a native HTML element\n brick = {\n brick: component.name,\n properties: component.properties,\n };\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Unknown component:\", component.name);\n }\n }\n } else {\n const { type, importSource, name } = component.reference!;\n let refPart: ModulePart | null | undefined;\n if (type === \"imported\") {\n const imported = state.app.modules.get(importSource!);\n refPart = name\n ? imported?.namedExports.get(name)\n : imported?.defaultExport;\n } else {\n const parts = [...mod.internals, ...mod.namedExports.values()];\n refPart = parts.find(\n (part) => part.type === \"template\" && part.component.id?.name === name\n );\n }\n if (refPart?.type === \"template\") {\n const tplName = refPart.component.id!.name;\n brick = {\n brick:\n state.app.appType === \"app\"\n ? getAppTplName(tplName)\n : getViewTplName(tplName, options.rootId),\n properties: component.properties,\n };\n } else {\n // eslint-disable-next-line no-console\n console.error(\n `Cannot find the component \"${component.reference!.name}\".`\n );\n }\n }\n\n if (!brick) {\n return [];\n }\n\n if (component.ref) {\n if (scope === \"template\") {\n (brick as { ref?: string }).ref = component.ref;\n } else {\n brick.properties ??= {};\n brick.properties.dataset ??= {};\n (brick.properties.dataset as Record<string, string>).ref = component.ref;\n }\n }\n\n if (component.slot) {\n brick.slot = component.slot;\n }\n\n brick.events = convertEvents(component, options);\n\n if (component.children?.length) {\n brick.children = (\n await Promise.all(\n component.children.map((child) =>\n convertComponent(child, mod, state, options, scope)\n )\n )\n ).flat();\n\n if (\n (component.name === \"Card\" || component.name === \"Modal\") &&\n brick.children.length > 0\n ) {\n brick.children = [\n {\n brick: \"eo-content-layout\",\n children: brick.children,\n },\n ];\n }\n }\n\n return brick;\n}\n\nfunction convertComponentName(name: string) {\n return name.includes(\"-\")\n ? name\n : `eo${name.replace(/([A-Z])/g, \"-$1\").toLowerCase()}`;\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ListProps } from \"../lib/components.js\";\nimport { parseDataSource } from \"./expressions.js\";\n\nexport default function convertList({ properties }: Component): BrickConf {\n const props = properties as Omit<ListProps, \"dataSource\"> & {\n dataSource: string | object;\n };\n\n const { dataSource, fields, variant } = props;\n\n const parsedDataSource = parseDataSource(dataSource);\n\n return {\n brick: \"eo-list\",\n properties: {\n variant,\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n fields,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type {\n Component,\n ParsedModule,\n RenderUseBrick,\n} from \"@next-shared/tsx-parser\";\nimport type { DescriptionsProps } from \"../lib/components.js\";\n// import { convertToStoryboard } from \"./raw-data-generate/convert.js\";\n// import { getPreGeneratedAttrViews } from \"./getPreGeneratedAttrViews.js\";\nimport { parseDataSource } from \"./expressions.js\";\n// import { findObjectIdByUsedDataContexts } from \"./findObjectIdByUsedDataContexts.js\";\nimport { convertComponent } from \"./convertComponent.js\";\nimport { deepReplaceVariables } from \"./deepReplaceVariables.js\";\nimport type { ConvertState, ConvertOptions } from \"./interfaces.js\";\n\ninterface DescriptionItem {\n label: string;\n text?: string;\n field?: string;\n render?: RenderUseBrick;\n}\n\nexport default async function convertDescriptions(\n { properties }: Component,\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions,\n scope: \"page\" | \"view\" | \"template\"\n): Promise<BrickConf> {\n const { dataSource, title, list, columns, ...restProps } =\n properties as Partial<DescriptionsProps<object>> as Omit<\n DescriptionsProps<object>,\n \"list\"\n > & {\n dataSource: string | object;\n list: DescriptionItem[] | string;\n columns?: number;\n };\n\n const parsedDataSource = parseDataSource(dataSource);\n\n // const objectId = findObjectIdByUsedDataContexts(\n // parsedDataSource.usedContexts,\n // view.dataSources,\n // view.variables\n // );\n\n // const attrViews = objectId\n // ? await getPreGeneratedAttrViews(objectId)\n // : undefined;\n\n const configuredItems = new Map<string, BrickConf>();\n\n // if (attrViews?.size && Array.isArray(list)) {\n // for (const item of list) {\n // if (item.render) {\n // continue;\n // }\n // if (item.field) {\n // const candidate = attrViews.get(item.field);\n // if (candidate) {\n // const brick = convertToStoryboard(candidate, item.field);\n // if (brick) {\n // brick.slot = `[${item.field}]`;\n // configuredItems.set(item.field, brick);\n // }\n // }\n // }\n // }\n // }\n\n const convertedList = Array.isArray(list)\n ? await Promise.all(\n list.map(async ({ render, ...item }) => {\n if (render) {\n const patterns = new Map<string, string>();\n if (render.params.length > 0) {\n patterns.set(render.params[0], \"DATA\");\n }\n\n const useBrick = (\n await Promise.all(\n render.children.map((child) =>\n convertComponent(child, mod, state, options, scope)\n )\n )\n ).flatMap((child) => deepReplaceVariables(child, patterns));\n\n return {\n label: item.label,\n useBrick,\n };\n }\n const brick = item.field\n ? configuredItems.get(item.field)\n : undefined;\n return brick\n ? {\n label: item.label,\n useChildren: `[${item.field}]`,\n }\n : item;\n })\n )\n : list;\n\n return {\n brick: \"eo-descriptions\",\n properties: {\n ...restProps,\n dataSource: parsedDataSource.isString\n ? parsedDataSource.embedded\n : dataSource,\n // descriptionTitle: title,\n list: convertedList,\n ...(columns == null\n ? {\n column: options.expanded ? 3 : 1,\n templateColumns: \"repeat(auto-fill,minmax(360px,1fr))\",\n }\n : {\n column: columns,\n }),\n // showCard: !options.expanded,\n themeVariant: \"elevo\",\n },\n children:\n configuredItems.size > 0 ? Array.from(configuredItems.values()) : [],\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { CardProps } from \"../lib/components.js\";\n\nexport default function convertCard(component: Component): BrickConf {\n const { properties } = component;\n const { title, textContent } = properties as CardProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-card\",\n properties: {\n themeVariant: \"elevo\",\n cardTitle: title,\n background: \"#fff\",\n outline: \"background\",\n ...(textContent ? { textContent } : null),\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ButtonProps } from \"../lib/components.js\";\n\nexport default function convertButton(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as ButtonProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-button\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { FormProps } from \"../lib/components.js\";\n\nexport default function convertForm(component: Component): BrickConf {\n const { properties } = component;\n const { values } = (properties ?? {}) as FormProps<object>;\n\n return {\n brick: \"eo-form\",\n properties: {\n values: values ?? {},\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertToolbar(_component: Component): BrickConf {\n return {\n brick: \"eo-flex-layout\",\n properties: {\n gap: \"0.5em\",\n alignItems: \"center\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { ModalProps } from \"../lib/components.js\";\n\nexport default function convertModal(component: Component): BrickConf {\n const { properties } = component;\n const { title, confirmText, cancelText, ...restProps } =\n properties as Partial<ModalProps> & {\n textContent?: string;\n };\n return {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n themeVariant: \"elevo\",\n modalTitle: title,\n confirmText: confirmText,\n cancelText: cancelText,\n keyboard: true,\n ...restProps,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertText(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as {\n textContent?: string;\n };\n return {\n brick: \"span\",\n properties: {\n ...props,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component, ParsedModule } from \"@next-shared/tsx-parser\";\nimport type { LinkProps } from \"../lib/components.js\";\nimport type { ConvertState } from \"./interfaces.js\";\n\nexport default function convertLink(\n component: Component,\n mod: ParsedModule,\n state: ConvertState\n): BrickConf {\n const { properties } = component;\n const props = properties as LinkProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-link\",\n properties: {\n ...props,\n inApp: state.app.appType === \"app\",\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertOutput(component: Component): BrickConf {\n const { properties } = component;\n const { style, ...restProps } = properties as {\n textContent?: string;\n style?: Record<string, any>;\n };\n\n return {\n brick: \"pre\",\n properties: {\n style: {\n background: \"hsl(230, 1%, 98%)\",\n color: \"hsl(230, 8%, 24%)\",\n fontFamily:\n '\"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace',\n direction: \"ltr\",\n textAlign: \"left\",\n whiteSpace: \"pre\",\n wordSpacing: \"normal\",\n wordBreak: \"normal\",\n lineHeight: \"1.5\",\n tabSize: \"2\",\n hyphens: \"none\",\n fontSize: \"13px\",\n\n padding: \"1em\",\n // margin: \"0.5em 0\",\n margin: \"0\",\n overflowX: \"auto\",\n borderRadius: \"9px\",\n ...style,\n },\n ...restProps,\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { TagProps } from \"../lib/components.js\";\n\nexport default function convertTag(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as TagProps & {\n textContent?: string;\n };\n return {\n brick: \"eo-tag\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { AvatarProps } from \"../lib/components.js\";\n\nexport default function convertAvatar(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as AvatarProps;\n return {\n brick: \"eo-avatar\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { AvatarGroupProps } from \"../lib/components.js\";\n\nexport default function convertAvatarGroup(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as AvatarGroupProps;\n return {\n brick: \"eo-avatar-group\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport type { CodeBlockProps } from \"../lib/components.js\";\n\nexport default function convertCodeBlock(component: Component): BrickConf {\n const { properties } = component;\n const props = properties as Partial<CodeBlockProps>;\n return {\n brick: \"eo-code-block\",\n properties: {\n ...props,\n themeVariant: \"elevo\",\n },\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertFormItem(\n component: Component,\n type: string\n): BrickConf {\n const { properties } = component;\n\n let brick = type;\n let props: Record<string, unknown> = {\n ...properties,\n themeVariant: \"elevo\",\n };\n\n switch (brick) {\n case \"eo-search\":\n props = {\n ...props,\n trim: true,\n };\n break;\n case \"eo-number-input\":\n brick = \"eo-input\";\n props = {\n type: \"number\",\n ...props,\n };\n break;\n }\n\n return {\n brick,\n properties: props,\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertForEach(component: Component): BrickConf {\n const { properties } = component;\n const { dataSource } = properties as {\n dataSource?: unknown;\n };\n return {\n brick: \":forEach\",\n dataSource,\n };\n}\n","import type { BrickConf } from \"@next-core/types\";\nimport type { Component } from \"@next-shared/tsx-parser\";\n\nexport default function convertIf(component: Component): BrickConf {\n const { properties } = component;\n const { dataSource } = properties as {\n dataSource?: unknown;\n };\n return {\n brick: \":if\",\n dataSource,\n };\n}\n","import type { BrickConf, ContextConf } from \"@next-core/types\";\nimport {\n isOfficialComponent,\n type ComponentChild,\n type ModulePart,\n type ModulePartOfFunction,\n type ParsedModule,\n} from \"@next-shared/tsx-parser\";\nimport { convertDataSource } from \"./convertDataSource.js\";\nimport { convertComponent } from \"../convertComponent.js\";\nimport type { ConvertState, ConvertOptions } from \"../interfaces.js\";\n\nexport interface ConvertedModule {\n sourceModule: ParsedModule;\n defaultExport: ConvertedPart | null;\n namedExports: Map<string, ConvertedPart>;\n internals: ConvertedPart[];\n}\n\nexport type ConvertedPart = ConvertedPartOfComponent | ModulePartOfFunction;\n\nexport interface ConvertedPartOfComponent {\n type: \"page\" | \"view\" | \"template\";\n bricks: BrickConf[];\n context: ContextConf[];\n name?: string;\n title?: string;\n}\n\nexport default async function convertModule(\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions\n): Promise<ConvertedModule> {\n if (mod.usedHelpers.size > 0) {\n for (const helper of mod.usedHelpers) {\n state.usedHelpers.add(helper);\n }\n }\n\n const [defaultExport, namedExports, internals] = await Promise.all([\n mod.defaultExport\n ? parseModulePart(mod.defaultExport, mod, state, options)\n : null,\n Promise.all(\n Array.from(mod.namedExports.entries()).map(\n async ([name, part]) =>\n [name, await parseModulePart(part, mod, state, options)] as [\n string,\n ConvertedPart,\n ]\n )\n ).then((entries) => new Map(entries)),\n Promise.all(\n mod.internals.map((part) => parseModulePart(part, mod, state, options))\n ),\n ]);\n\n return {\n sourceModule: mod,\n defaultExport,\n namedExports,\n internals,\n };\n}\n\nasync function parseModulePart(\n part: ModulePart,\n mod: ParsedModule,\n state: ConvertState,\n options: ConvertOptions\n): Promise<ConvertedPart> {\n if (part.type === \"function\") {\n return part;\n }\n\n const context: ContextConf[] = [];\n\n const { component } = part;\n\n for (const binding of component.bindingMap.values()) {\n if (binding.kind === \"resource\") {\n context.push(convertDataSource(binding.resource!));\n } else if (\n binding.kind === \"state\" ||\n binding.kind === \"constant\" ||\n binding.kind === \"param\"\n ) {\n context.push({\n name: binding.id.name,\n value: binding.initialValue,\n expose: binding.kind === \"param\",\n track: true,\n });\n }\n }\n\n let children: ComponentChild[] | undefined;\n if (part.type === \"view\") {\n const view = component.children?.find((child) =>\n isOfficialComponent(child, \"View\")\n );\n if (view) {\n children = view.children;\n }\n } else {\n children = component.children;\n }\n\n const bricks = children?.length\n ? (\n await Promise.all(\n children.map((child) =>\n convertComponent(child, mod, state, options, part.type)\n )\n )\n ).flat()\n : [];\n\n return {\n type: part.type,\n bricks,\n context,\n name: component.id?.name,\n title: part.title,\n };\n}\n","import mergeTexts from \"../../../src/helpers/mergeTexts.ts?raw\";\nimport getLatestMetricValue from \"../../../src/helpers/getLatestMetricValue.ts?raw\";\nimport extractList from \"../../../src/helpers/extractList.ts?raw\";\nimport groupMetricData from \"../../../src/helpers/groupMetricData.ts?raw\";\nimport getMetricDisplayNames from \"../../../src/helpers/getMetricDisplayNames.ts?raw\";\n\nlet helperFunctions: Map<string, string> | undefined;\n\nexport function getHelperFunctions() {\n if (!helperFunctions) {\n helperFunctions = new Map([\n [\"_helper_mergeTexts\", fixFunctionSource(mergeTexts)],\n [\"_helper_getLatestMetricValue\", fixFunctionSource(getLatestMetricValue)],\n [\"_helper_extractList\", fixFunctionSource(extractList)],\n [\"_helper_groupMetricData\", fixFunctionSource(groupMetricData)],\n [\n \"_helper_getMetricDisplayNames\",\n fixFunctionSource(getMetricDisplayNames),\n ],\n ]);\n }\n return helperFunctions;\n}\n\nfunction fixFunctionSource(source: string): string {\n return source.replace(/^export /m, \"\").replace(/^import [^\\n]+\\n/gm, \"\");\n}\n","import { BrickConf } from \"@next-core/types\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nexport function withBox(\n children: BrickConf[] | undefined,\n options: ConvertOptions\n): BrickConf {\n return {\n brick: \"div\",\n properties: {\n style: options.expanded\n ? {\n background: \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(10px)\",\n borderRadius: \"16px\",\n padding: \"24px\",\n }\n : {\n background: \"var(--elevo-component-background)\",\n backdropFilter: \"var(--elevo-component-backdrop-filter)\",\n borderRadius: \"var(--elevo-border-radius)\",\n padding: \"16px\",\n },\n },\n children,\n };\n}\n","import type {\n BrickConfInTemplate,\n CustomTemplate,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport type { ParsedApp } from \"@next-shared/tsx-parser\";\nimport convertModule, {\n type ConvertedPartOfComponent,\n} from \"./convertModule.js\";\nimport type {\n ConvertState,\n ConvertOptions,\n ConvertResult,\n} from \"../interfaces.js\";\nimport { getHelperFunctions } from \"../helpers/index.js\";\nimport { getViewTplName } from \"./getTplName.js\";\nimport { withBox } from \"../withBox.js\";\n\nexport async function convertView(\n view: ParsedApp,\n options: ConvertOptions\n): Promise<ConvertResult> {\n const { entry } = view;\n if (!entry) {\n throw new Error(\"No entry module found in the view.\");\n }\n\n const state: ConvertState = {\n usedHelpers: new Set(),\n app: view,\n };\n const convertedEntry = await convertModule(entry, state, options);\n\n const { defaultExport, internals, namedExports } = convertedEntry;\n\n if (!defaultExport) {\n throw new Error(\"No view found in the entry module.\");\n }\n\n const functions: StoryboardFunction[] = [];\n const templates: CustomTemplate[] = [];\n\n for (const part of [...internals, ...namedExports.values()]) {\n if (part.type === \"function\") {\n functions.push(part.function);\n } else if (part.type === \"template\") {\n templates.push({\n name: getViewTplName(part.name!, options.rootId),\n bricks: part.bricks as BrickConfInTemplate[],\n state: part.context,\n });\n }\n }\n\n const helpers = Array.from(state.usedHelpers).map<StoryboardFunction>(\n (name) => {\n const source = getHelperFunctions().get(name);\n if (!source) {\n throw new Error(`Helper function ${name} not found`);\n }\n return {\n name,\n source,\n typescript: true,\n };\n }\n );\n\n const { title, bricks, context } = defaultExport as ConvertedPartOfComponent;\n\n const needBox = bricks.every((brick) =>\n [\"eo-form\", \"eo-descriptions\", \"eo-button\"].includes(brick.brick)\n );\n\n return {\n title,\n brick: {\n brick: \"eo-content-layout\",\n children: needBox ? [withBox(bricks, options)] : bricks,\n },\n context: [\n ...context,\n ...(options.withContexts\n ? Object.entries(options.withContexts).map(([name, value]) => ({\n name,\n value,\n }))\n : []),\n ],\n functions: [...functions, ...helpers],\n templates,\n };\n}\n"],"names":["createPortal","rootId","portal","document","createElement","dataset","style","position","width","height","body","append","remoteWorkerPromise","worker","getRemoteTsxParserWorker","Remote","wrap","Worker","URL","MODULE_SOURCE","EXPRESSION_PREFIX_REG","EXPRESSION_SUFFIX_REG","isAnyOfficialComponent","child","reference","type","importSource","convertDataSource","resource","name","http","api","params","tool","transform","rejectTransform","config","scope","hasEnabled","Object","prototype","hasOwnProperty","call","resolve","useProvider","args","isObject","translate","limit","undefined","limitBy","order","displayName","value","onReject","if","enabled","track","fallback","expose","convertEventHandlers","handler","options","list","Array","isArray","map","hdl","_convertEventHandlers","action","payload","_handler$callback","success","callback","error","targetRef","ref","target","method","content","detail","test","then","consequent","else","alternate","convertEventHandler","filter","Boolean","length","parseDataSource","data","isString","expression","expr","trim","replace","console","warn","JSON","stringify","embedded","usedContexts","strictCollectMemberUsage","deepReplaceVariables","patterns","size","item","fromEntries","entries","_ref","k","v","trimmed","isExpressionString","keys","some","includes","replacements","result","preevaluate","withParent","hooks","beforeVisitGlobal","node","path","has","_ref2","p","shorthand","computed","push","id","prefix","source","suffix","chunks","prevStart","i","start","end","substring","get","join","replaceVariables","columnUseBrickParams","COLORS","convertHexColorToRGBA","color","alpha","hex","slice","bigint","parseInt","counter","tplNameMap","Map","getViewTplName","set","getViewTplNamePrefixByRootId","getViewTplNameSuffix","getAppTplName","toLowerCase","async","convertComponent","component","mod","state","_component$children","brick","properties","props","dataSource","fields","variant","parsedDataSource","themeVariant","convertList","_columns$","columns","rowKey","pagination","restProps","configuredColumns","convertedColumns","Promise","all","render","column","useBrick","children","flatMap","startsWith","dataIndex","useChildren","key","scrollConfig","x","expanded","bordered","from","values","convertTable","title","configuredItems","convertedList","label","field","templateColumns","convertDescriptions","textContent","cardTitle","background","outline","convertCard","groupField","_groupField","widgets","usedHelpers","add","chartData","mergedWidgets","metricGroups","mergedMetrics","Set","metricIds","w","metric","widget","mergedWidget","group","find","g","metrics","relevantMetrics","m","counterMetric","groupTitle","metricId","delete","colorCursor","display","gridTemplateColumns","gap","_widget$relevantMetri","_widget$relevantMetri2","precision","colorCount","colors","_","unit","chart","xField","yFields","yField","forceAbsoluteNumbers","series","isNegative","timeFormat","areaOptions","fill","axis","yAxis","min","max","shape","areaShape","legends","tooltip","marker","stroke","lineWidth","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","domStyles","boxShadow","borderRadius","border","backdropFilter","padding","fontSize","fontWeight","marginBottom","flexDirection","lineColor","showArea","convertDashboard","convertButton","convertForm","alignItems","confirmText","cancelText","modalTitle","keyboard","convertModal","convertText","inApp","app","appType","convertLink","fontFamily","direction","textAlign","whiteSpace","wordSpacing","wordBreak","lineHeight","tabSize","hyphens","margin","overflowX","convertOutput","convertTag","convertAvatar","convertAvatarGroup","convertCodeBlock","convertFormItem","convertForEach","convertIf","_refPart","refPart","imported","modules","namedExports","defaultExport","internals","part","_part$component$id","tplName","_brick","_brick$properties","_brick$properties2","_brick$properties2$da","slot","events","event","_component$events","click","search","convertEvents","flat","parseModulePart","_children","_component$id","context","binding","bindingMap","kind","initialValue","view","isOfficialComponent","bricks","helperFunctions","fixFunctionSource","withBox","convertView","entry","Error","convertedEntry","helper","sourceModule","convertModule","functions","templates","function","helpers","mergeTexts","getLatestMetricValue","extractList","groupMetricData","getMetricDisplayNames","typescript","every","withContexts"],"sourceRoot":""}
|