@next-bricks/ai-portal 0.1.2 → 0.2.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.
Files changed (52) hide show
  1. package/dist/bricks.json +4 -3
  2. package/dist/chunks/1045.3a82f036.js +2 -0
  3. package/dist/chunks/{1045.07fed1b5.js.map → 1045.3a82f036.js.map} +1 -1
  4. package/dist/chunks/{3506.0d6e4b61.js → 1165.6759a6d3.js} +2 -2
  5. package/dist/chunks/1165.6759a6d3.js.map +1 -0
  6. package/dist/chunks/2048.1d89240f.js +3 -0
  7. package/dist/chunks/2048.1d89240f.js.map +1 -0
  8. package/dist/chunks/{2277.a95810e5.js → 2277.9a812e91.js} +2 -2
  9. package/dist/chunks/{2277.a95810e5.js.map → 2277.9a812e91.js.map} +1 -1
  10. package/dist/chunks/2569.6beb894c.js +2 -0
  11. package/dist/chunks/2569.6beb894c.js.map +1 -0
  12. package/dist/chunks/{4658.b0138e9e.js → 4658.714b36d2.js} +2 -2
  13. package/dist/chunks/{4658.b0138e9e.js.map → 4658.714b36d2.js.map} +1 -1
  14. package/dist/chunks/720.6e5b21b6.js +2 -0
  15. package/dist/chunks/720.6e5b21b6.js.map +1 -0
  16. package/dist/chunks/chat-box.e9bd884e.js +2 -0
  17. package/dist/chunks/chat-box.e9bd884e.js.map +1 -0
  18. package/dist/chunks/home-container.77357cc7.js +2 -0
  19. package/dist/chunks/home-container.77357cc7.js.map +1 -0
  20. package/dist/chunks/main.2777577d.js +2 -0
  21. package/dist/chunks/main.2777577d.js.map +1 -0
  22. package/dist/examples.json +3 -0
  23. package/dist/images/6336f999.png +0 -0
  24. package/dist/images/eef4f2bd.png +0 -0
  25. package/dist/index.714ce74f.js +2 -0
  26. package/dist/index.714ce74f.js.map +1 -0
  27. package/dist/manifest.json +17 -0
  28. package/dist/types.json +19 -0
  29. package/dist-types/bootstrap.d.ts +1 -0
  30. package/dist-types/chat-box/i18n.d.ts +1 -1
  31. package/dist-types/chat-box/index.d.ts +5 -1
  32. package/dist-types/home-container/index.d.ts +10 -0
  33. package/dist-types/home-container/index.spec.d.ts +1 -0
  34. package/docs/home-container.md +11 -0
  35. package/package.json +2 -2
  36. package/dist/chunks/1045.07fed1b5.js +0 -2
  37. package/dist/chunks/2259.63e2454f.js +0 -3
  38. package/dist/chunks/2259.63e2454f.js.map +0 -1
  39. package/dist/chunks/2569.e4658458.js +0 -2
  40. package/dist/chunks/2569.e4658458.js.map +0 -1
  41. package/dist/chunks/3426.053742ef.js +0 -2
  42. package/dist/chunks/3426.053742ef.js.map +0 -1
  43. package/dist/chunks/3506.0d6e4b61.js.map +0 -1
  44. package/dist/chunks/7039.74886564.js +0 -2
  45. package/dist/chunks/7039.74886564.js.map +0 -1
  46. package/dist/chunks/chat-box.13de41ba.js +0 -2
  47. package/dist/chunks/chat-box.13de41ba.js.map +0 -1
  48. package/dist/chunks/main.b03201e6.js +0 -2
  49. package/dist/chunks/main.b03201e6.js.map +0 -1
  50. package/dist/index.3c536b70.js +0 -2
  51. package/dist/index.3c536b70.js.map +0 -1
  52. /package/dist/chunks/{2259.63e2454f.js.LICENSE.txt → 2048.1d89240f.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/2569.6beb894c.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/i18n.ts","webpack:///../../../src/utils/calculateAutoSizeStyle.ts","webpack:///../../src/TextareaAutoResize.tsx","webpack:///./src/cruise-canvas/styles.module.css?7c94","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/cruise-canvas/PlanProgress/PlanProgress.module.css?4fe8","webpack:///./src/cruise-canvas/PlanProgress/PlanProgress.tsx","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css?7927","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.tsx","webpack:///./src/cruise-canvas/PlanProgress/PlanProgress.module.css","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css?7d53","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.tsx","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css","webpack:///../../src/rehypePrism.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/cmdb.tsx","webpack:///./src/cruise-canvas/NodeJob/NodeJob.tsx","webpack:///./src/cruise-canvas/bricks.ts","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css","webpack:///./src/cruise-canvas/useAutoCenter.ts","webpack:///./src/cruise-canvas/constants.ts","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css?5e68","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.tsx","webpack:///./src/cruise-canvas/styles.module.css","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css","webpack:///./src/cruise-canvas/useLayout.ts","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css?c135","webpack:///./src/cruise-canvas/NodeStart/NodeStart.tsx","webpack:///./src/cruise-canvas/useZoom.ts","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css?bd4b","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.tsx","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css?69ec","webpack:///./src/cruise-canvas/useTaskGraph.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n YES = \"YES\",\n NO = \"NO\",\n PLAN_COMPLETED = \"PLAN_COMPLETED\",\n TASK_COMPLETED = \"TASK_COMPLETED\",\n SHARE = \"SHARE\",\n}\n\nconst en: Locale = {\n YES: \"Yes\",\n NO: \"No\",\n PLAN_COMPLETED: \"All jobs done\",\n TASK_COMPLETED: \"Task completed\",\n SHARE: \"Share\",\n};\n\nconst zh: Locale = {\n YES: \"是\",\n NO: \"否\",\n PLAN_COMPLETED: \"所有任务已全部完成\",\n TASK_COMPLETED: \"任务完成\",\n SHARE: \"分享\",\n};\n\nexport const NS = \"bricks/ai-portal/cruise-canvas\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file\nimport type React from \"react\";\n\nconst HIDDEN_TEXTAREA_STYLE = `\n min-height: 0!important;\n max-height: none!important;\n height: 0!important;\n visibility: hidden!important;\n overflow: hidden!important;\n position: absolute!important;\n z-index: -1000!important;\n top: 0!important;\n right: 0!important;\n pointer-events: none!important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\n\nlet hiddenTextarea: HTMLTextAreaElement | undefined;\n\nexport interface AutoSizeOptions {\n minRows?: number | null;\n maxRows?: number | null;\n borderSize?: number;\n paddingSize?: number;\n}\n\n/**\n * 计算 textarea 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n options?: AutoSizeOptions\n): React.CSSProperties {\n const {\n minRows = null,\n maxRows = null,\n borderSize = 2,\n paddingSize = 8,\n } = options ?? {};\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined;\n let maxHeight: number | undefined;\n let overflowY: React.CSSProperties[\"overflowY\"];\n\n let height = hiddenTextarea.scrollHeight + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n const singleRowHeight =\n process.env.NODE_ENV === \"test\"\n ? 22\n : parseFloat(\n window\n .getComputedStyle(hiddenTextarea)\n .getPropertyValue(\"line-height\")\n );\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows + paddingSize + borderSize;\n height = Math.max(minHeight, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows + paddingSize + borderSize;\n if (height <= maxHeight) {\n overflowY = \"hidden\";\n }\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY,\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\n\n// istanbul ignore next\nconst modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n\nexport interface TextareaAutoResizeProps\n extends React.DetailedHTMLProps<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n > {\n /** @default true */\n autoResize?: boolean;\n minRows?: number | null;\n maxRows?: number | null;\n /** @default 2 */\n borderSize?: number;\n /** @default 8 */\n paddingSize?: number;\n containerRef?: React.RefObject<HTMLElement>;\n submitWhen?: \"enter-without-shift\" | \"enter-with-mod\";\n}\n\nexport interface TextareaAutoResizeRef {\n focus(): void;\n}\n\nexport const TextareaAutoResize = React.forwardRef<\n TextareaAutoResizeRef,\n TextareaAutoResizeProps\n>(LegacyTextareaAutoResize);\n\nfunction LegacyTextareaAutoResize(\n {\n autoResize: _autoResize,\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n containerRef,\n value: propValue,\n style,\n submitWhen,\n onChange,\n onSubmit,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n ...props\n }: TextareaAutoResizeProps,\n ref: React.ForwardedRef<TextareaAutoResizeRef>\n): React.JSX.Element {\n const autoResize = _autoResize ?? true;\n const [value, setValue] = useState(propValue ?? \"\");\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [autoStyle, setAutoStyle] = useState<React.CSSProperties | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n const textarea = textareaRef.current;\n // istanbul ignore else: defensive check\n if (textarea) {\n const valueLength = textarea.value?.length;\n textarea.focus();\n valueLength && textarea.setSelectionRange(valueLength, valueLength);\n }\n },\n }),\n []\n );\n\n const doAutoResize = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && autoResize) {\n const style = calculateAutoSizeStyle(textarea, {\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n });\n // istanbul ignore next\n if (process.env.NODE_ENV === \"test\") {\n setAutoStyle(style);\n } else {\n flushSync(() => {\n setAutoStyle(style);\n });\n }\n }\n }, [autoResize, maxRows, minRows, borderSize, paddingSize]);\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLTextAreaElement>\n ): void => {\n setValue(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n setValue(propValue ?? \"\");\n }, [propValue]);\n\n useEffect(() => {\n doAutoResize();\n }, [doAutoResize, value]);\n\n const compositionRef = useRef(false);\n\n const handleCompositionStart = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = true;\n onCompositionStart?.(e);\n },\n [onCompositionStart]\n );\n\n const handleCompositionEnd = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n onCompositionEnd?.(e);\n },\n [onCompositionEnd]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n\n if (\n e.key === \"Enter\" &&\n (submitWhen === \"enter-without-shift\"\n ? !e.shiftKey\n : submitWhen === \"enter-with-mod\" && e[modKey])\n ) {\n e.preventDefault();\n e.stopPropagation();\n onSubmit?.(e);\n }\n\n onKeyDown?.(e);\n },\n [onKeyDown, onSubmit, submitWhen]\n );\n\n // istanbul ignore next\n useEffect(() => {\n const container = containerRef?.current;\n if (!container || !autoResize) {\n return;\n }\n let previousInlineSize: number | undefined;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === container) {\n // istanbul ignore next: compatibility\n const currentInlineSize = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].inlineSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .inlineSize\n : entry.contentRect.width;\n if (\n currentInlineSize !== undefined &&\n currentInlineSize !== previousInlineSize\n ) {\n const isInitial = !previousInlineSize;\n previousInlineSize = currentInlineSize;\n if (!isInitial) {\n requestAnimationFrame(doAutoResize);\n }\n }\n }\n }\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [autoResize, containerRef, doAutoResize]);\n\n return (\n <textarea\n {...props}\n ref={textareaRef}\n value={value}\n style={{\n ...style,\n ...autoStyle,\n }}\n onChange={handleInputChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n onKeyDown={handleKeyDown}\n />\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.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]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import type { Reducer } from \"react\";\nimport { isEqual, isMatchWith, pick } from \"lodash\";\nimport type { Job, JobPatch, Message, Part, TextPart } from \"../interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\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\n for (const jobPatch of jobsPatch) {\n // TODO(): remove temp work around.\n // if (!jobPatch.upstream?.length) {\n // delete jobPatch.upstream;\n // }\n // if (!jobPatch.parent) {\n // delete jobPatch.parent;\n // }\n // if (!jobPatch.state) {\n // delete jobPatch.state;\n // }\n // if (!jobPatch.instruction) {\n // delete jobPatch.instruction;\n // }\n\n if ((jobPatch as any).state === \"blocked\") {\n jobPatch.state = \"working\";\n }\n\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 try {\n jobPatch.toolCall!.arguments = JSON.parse(toolCall.arguments);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse toolCall arguments:\", e);\n jobPatch.toolCall!.arguments = {};\n jobPatch.toolCall!.argumentsParseFailed = true;\n jobPatch.toolCall!.argumentsParseError = e;\n }\n }\n\n if (previousJobIndex === -1) {\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n jobs = [\n ...jobs,\n {\n ...jobPatch,\n messages: mergeMessages(messagesPatch),\n } as Job,\n ];\n } else {\n jobs = [...jobs, jobPatch 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 \"startTime\",\n \"endTime\",\n ]);\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\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 for (const part of parts) {\n if (!previousType || previousType !== part.type || part.type !== \"text\") {\n merged.push({ ...part });\n } else {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n }\n previousType = part.type;\n }\n return merged;\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 \"startTime\",\n \"endTime\",\n \"plan\",\n ]);\n\n // TODO(): remove temp work around.\n // if (!taskPatch.requirement) {\n // delete taskPatch.requirement;\n // }\n // if (!taskPatch.state) {\n // delete taskPatch.state;\n // }\n\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 { useEffect, useReducer, useRef, useState } from \"react\";\nimport { isEqual } from \"lodash\";\nimport { HttpResponseError } from \"@next-core/http\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type { Job, StepWithState, TaskPatch } from \"./interfaces\";\n\nexport function useTaskDetail(taskId: string | undefined) {\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\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 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 for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\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 humanInputRef.current = async (jobId: string, input: string) => {\n const response = await fetch(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${taskId}/job/${jobId}`,\n // `/api/mocks/task/input`,\n // `http://localhost:8888/.netlify/functions/task-input`,\n // `https://serverless-mocks.netlify.app/.netlify/functions/task-input`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id: taskId,\n jobId: jobId,\n input,\n }),\n }\n );\n if (response.ok) {\n makeRequest();\n } else {\n // eslint-disable-next-line no-console\n console.error(\n \"human input failed\",\n response.status,\n response.statusText\n );\n\n let responseJson;\n try {\n responseJson = await response.json();\n } catch {\n // Do nothing.\n }\n handleHttpError(new HttpResponseError(response, responseJson));\n }\n };\n\n makeRequest();\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [taskId]);\n\n const [plan, setPlan] = useState<StepWithState[]>([]);\n\n useEffect(() => {\n setPlan((prev) => {\n const jobMap = new Map<string, Job>();\n const childrenMap = new Map<string, string[]>();\n for (const job of jobs) {\n jobMap.set(job.id, job);\n\n if (job.parent) {\n childrenMap.set(job.parent, [\n ...(childrenMap.get(job.parent) ?? []),\n job.id,\n ]);\n }\n }\n\n // A step is input-required when itself is input-required or any of its descendants is input-required.\n const isInputRequired = (job: Job): boolean => {\n return (\n job.state === \"input-required\" ||\n !!childrenMap.get(job.id)?.some((childId) => {\n const childJob = jobMap.get(childId)!;\n return isInputRequired(childJob);\n })\n );\n };\n\n const plan: StepWithState[] = [];\n for (const step of task?.plan ?? []) {\n const job = jobMap.get(step.id);\n plan.push({\n id: step.id,\n instruction: step.instruction,\n state: job\n ? isInputRequired(job)\n ? \"input-required\"\n : job.state\n : undefined,\n });\n }\n\n return isEqual(prev, plan) ? prev : plan;\n });\n }, [jobs, task?.plan]);\n\n return { task, jobs, plan, error, humanInputRef };\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]!./PlanProgress.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]!./PlanProgress.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./PlanProgress.module.css\";\nimport type { JobState, StepWithState } from \"../interfaces\";\nimport { WrappedIcon } from \"../bricks\";\nimport { K, t } from \"../i18n\";\n\nexport interface PlanProgressProps {\n plan?: StepWithState[];\n}\n\ninterface PlanProgressStat {\n doneCount: number;\n instruction: string;\n state: JobState | undefined;\n}\n\nexport function PlanProgress({ plan }: PlanProgressProps): JSX.Element | null {\n const [expanded, setExpanded] = useState(false);\n\n const { doneCount, state, instruction } = useMemo(() => {\n return (plan ?? []).reduce<PlanProgressStat>(\n (acc, step) => {\n if (step.state === \"completed\") {\n return {\n ...acc,\n state: step.state,\n doneCount: acc.doneCount + 1,\n };\n } else if (\n !acc.instruction ||\n (step.state && step.state !== \"unknown\")\n ) {\n return {\n ...acc,\n state: step.state,\n instruction: step.instruction,\n };\n }\n return acc;\n },\n {\n doneCount: 0,\n state: \"unknown\",\n instruction: \"\",\n }\n );\n }, [plan]);\n\n const { className, icon } = useMemo(() => {\n return getClassNameAndIconProps(state);\n }, [state]);\n\n const toggle = useCallback(() => {\n setExpanded((prev) => !prev);\n }, []);\n\n if (!plan?.length) {\n return null;\n }\n\n return (\n <div className={classNames(styles.progress, className)} onClick={toggle}>\n <div className={styles.icon}>\n <WrappedIcon {...icon} />\n </div>\n <span\n className={styles.text}\n title={state === \"completed\" ? \"\" : instruction}\n >\n {state === \"completed\" ? t(K.PLAN_COMPLETED) : instruction}\n </span>\n <span className={styles.stat}>\n {doneCount}/{plan.length}\n </span>\n <WrappedIcon\n className={styles.expand}\n lib=\"antd\"\n theme=\"outlined\"\n icon={expanded ? \"down\" : \"up\"}\n />\n {expanded && (\n <ul className={styles.details} onClick={(e) => e.stopPropagation()}>\n {plan.map((step, index) => (\n <PlanStep\n key={index}\n state={step.state}\n instruction={step.instruction}\n />\n ))}\n </ul>\n )}\n </div>\n );\n}\n\ninterface PlanStepProps {\n state?: JobState;\n instruction: string;\n}\n\nfunction PlanStep({ state, instruction }: PlanStepProps) {\n const { className, icon } = useMemo(() => {\n return getClassNameAndIconProps(state);\n }, [state]);\n\n return (\n <li className={styles.step}>\n <WrappedIcon {...icon} className={classNames(styles.state, className)} />\n <span className={styles.instruction} title={instruction}>\n {instruction}\n </span>\n </li>\n );\n}\n\nfunction getClassNameAndIconProps(state: JobState | undefined) {\n switch (state) {\n case \"completed\":\n return {\n className: styles.completed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"check\",\n },\n };\n case \"submitted\":\n case \"working\":\n return {\n className: styles.working,\n icon: {\n lib: \"antd\",\n theme: \"outlined\",\n icon: \"loading-3-quarters\",\n spinning: true,\n },\n };\n case \"input-required\":\n return {\n className: styles[\"input-required\"],\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-pause\",\n },\n };\n case \"failed\":\n return {\n className: styles.failed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"xmark\",\n },\n };\n case \"canceled\":\n return {\n className: styles.canceled,\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n },\n };\n default:\n return {\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"clock\",\n },\n };\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, `.zoom-bar--MTw5VGPl{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;padding:4px 6px;-webkit-user-select:none;user-select:none;background:rgba(255,255,255,0.7);box-shadow:0px 3px 14px 0px rgba(0,0,0,0.1),0px 1px 4px 0px rgba(0,0,0,0.06);border-radius:8px;border:1px solid rgba(255,255,255,0.3)}.zoom-bar--MTw5VGPl button{background:transparent;border:none;border-radius:4px;color:#333;width:24px;height:24px;font-size:16px;line-height:16px;display:flex;align-items:center;justify-content:center;cursor:pointer}.zoom-bar--MTw5VGPl button:hover{background:rgba(0,0,0,0.04)}.zoom-bar--MTw5VGPl button:active{background:rgba(0,0,0,0.08)}.divider--S0X2YCDi{background:rgba(0,0,0,0.15);width:1px;height:16px}.zoom-bar--MTw5VGPl > :not(:last-child){margin-right:6px}@media (max-width: 719px){.zoom-bar--MTw5VGPl{left:auto;bottom:auto;top:20px;right:20px}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"zoom-bar\": `zoom-bar--MTw5VGPl`,\n\t\"divider\": `divider--S0X2YCDi`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeRequirement.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]!./NodeRequirement.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport moment from \"moment\";\nimport styles from \"./NodeRequirement.module.css\";\n\nconst WrappedEasyOpsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\n\nexport interface NodeRequirementProps {\n content?: string;\n startTime?: number;\n loading?: boolean;\n}\n\nexport function NodeRequirement({\n content,\n startTime,\n loading,\n}: NodeRequirementProps): JSX.Element {\n const username = useMemo(() => {\n return auth.getAuth().username;\n }, []);\n\n return (\n <div className={styles[\"node-requirement\"]}>\n <div className={styles.heading}>\n <div className={styles.user}>\n <WrappedEasyOpsAvatar\n nameOrInstanceId={username}\n showName\n size=\"xs\"\n />\n </div>\n <div className={styles.time}>\n {startTime && moment(startTime * 1000).format(\"MM-DD HH:mm\")}\n </div>\n </div>\n <div className={styles.body}>{content}</div>\n {loading && (\n <>\n <svg\n className={styles[\"loading-line\"]}\n viewBox=\"0 0 2 62\"\n width=\"2\"\n height=\"62\"\n >\n <path d=\"M1 0 L1 62\" />\n </svg>\n <div className={styles.loading}>\n <div className={styles.inner} />\n </div>\n </>\n )}\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, `.progress--62eOnxaf{position:absolute;bottom:20px;left:50%;transform:translate(-50%,0);width:453px;max-width:80%;background:#ffffff;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);border-radius:12px;padding:12px;line-height:24px;cursor:pointer;display:flex;align-items:center}.icon--TMLJniSx{margin-right:6px;width:22px;height:22px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:linear-gradient(222deg,#abaab7 25%,#fff 75%);color:#4e4d56;font-size:12px;text-shadow:0px 1px 1px #fff}.progress--62eOnxaf.completed--ACUTqxl7 .icon--TMLJniSx{background:linear-gradient(222deg,#16c661 25%,#fff 75%);color:#055527}.progress--62eOnxaf.failed--atS7ek2B .icon--TMLJniSx{background:linear-gradient(222deg,#f24c25 25%,#fff 75%);color:#5b1504}.progress--62eOnxaf.working--Z6W16jVj .icon--TMLJniSx{background:linear-gradient(222deg,#3e56ff 25%,#fff 75%);color:#0c165d}.progress--62eOnxaf.input-required--YhWlEgu0 .icon--TMLJniSx{background:linear-gradient(222deg,#12aacc 25%,#fff 75%);color:#0c353e}.progress--62eOnxaf.canceled--imA9nfyy .icon--TMLJniSx{background:linear-gradient(222deg,#fcaa07 25%,#fff 75%);color:#302206}.text--vZYOZzn1,\n.instruction--Z7riLyFL{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;flex:1}.stat--YsJ88cZz{margin-left:6px;color:#8c8c8c}.expand--gqn8QEnc{margin-left:6px;color:#8c8c8c}.details--rtuqBzKj{position:absolute;left:0;right:0;bottom:4em;background:#fff;border-radius:12px;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);list-style:none;margin:0;padding:12px;cursor:auto}.step--f9i49Db2{display:flex;align-items:center}.step--f9i49Db2:not(:last-child){margin-bottom:8px}.state--TmkD_q3_{margin-right:6px;color:var(--text-color-secondary)}.state--TmkD_q3_.completed--ACUTqxl7{color:var(--color-success)}.state--TmkD_q3_.failed--atS7ek2B{color:var(--color-error)}.state--TmkD_q3_.working--Z6W16jVj{color:var(--color-info)}.state--TmkD_q3_.input-required--YhWlEgu0{color:var(--palette-cyan-7)}.state--TmkD_q3_.canceled--imA9nfyy{color:#fcaa07}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"progress\": `progress--62eOnxaf`,\n\t\"icon\": `icon--TMLJniSx`,\n\t\"completed\": `completed--ACUTqxl7`,\n\t\"failed\": `failed--atS7ek2B`,\n\t\"working\": `working--Z6W16jVj`,\n\t\"input-required\": `input-required--YhWlEgu0`,\n\t\"canceled\": `canceled--imA9nfyy`,\n\t\"text\": `text--vZYOZzn1`,\n\t\"instruction\": `instruction--Z7riLyFL`,\n\t\"stat\": `stat--YsJ88cZz`,\n\t\"expand\": `expand--gqn8QEnc`,\n\t\"details\": `details--rtuqBzKj`,\n\t\"step\": `step--f9i49Db2`,\n\t\"state\": `state--TmkD_q3_`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ZoomBar.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]!./ZoomBar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useCallback } from \"react\";\nimport styles from \"./ZoomBar.module.css\";\nimport { WrappedIcon } from \"../bricks\";\n\nexport interface ZoomBarProps {\n scale: number;\n onScaleChange?: (scale: number) => void;\n onReCenter?: () => void;\n}\n\nexport function ZoomBar({\n scale,\n onScaleChange,\n onReCenter,\n}: ZoomBarProps): JSX.Element {\n const handleZoomIn = useCallback(() => {\n onScaleChange?.(scale + 0.1);\n }, [onScaleChange, scale]);\n\n const handleZoomOut = useCallback(() => {\n onScaleChange?.(scale - 0.1);\n }, [onScaleChange, scale]);\n\n return (\n <div className={styles[\"zoom-bar\"]}>\n <button onClick={onReCenter}>\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"expand\" />\n </button>\n <div className={styles.divider}></div>\n <button onClick={handleZoomOut}>\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"minus-circle\" />\n </button>\n <button onClick={handleZoomIn}>\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"plus-circle\" />\n </button>\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, `.node-instruction--Gu7k6RDs{max-width:437px;max-width:min(437px,90vw);background:rgba(255,255,255,0.2);box-shadow:0px 4px 10px 0px rgba(54,64,80,0.08);border-radius:9999px;border:1px solid rgba(255,255,255,0.284);padding:6px 16px;color:rgba(0,0,0,0.45)}.text--jsSeLl7B{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading--KdGolqAK > .text--jsSeLl7B{color:transparent;background:linear-gradient(to right,rgba(0,0,0,0.45) 0%,rgba(0,0,0,0.45) 40%,rgba(220,220,220,1) 50%,rgba(0,0,0,0.45) 60%,rgba(0,0,0,0.45) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineEffect--Zn2JtRpU 2s infinite linear}@keyframes shineEffect--Zn2JtRpU{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-instruction\": `node-instruction--Gu7k6RDs`,\n\t\"text\": `text--jsSeLl7B`,\n\t\"loading\": `loading--KdGolqAK`,\n\t\"shineEffect\": `shineEffect--Zn2JtRpU`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport { refractor, type RefractorElement } from \"refractor\";\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 = getLanguage(node);\n\n if (lang === null) {\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\nfunction getLanguage(node: RefractorElement) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport { rehypePrism } from \"./rehypePrism.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({ content }: MarkdownComponentProps) {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n\n useEffect(() => {\n let ignore = false;\n unified()\n .use(remarkParse)\n .use(remarkToRehype)\n .use([rehypePrism])\n .use(rehypeReact, production 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 }, [content]);\n\n return reactContent;\n}\n","import React from \"react\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\n\ninterface CMDBSelectProps {\n objectId?: string | null;\n fieldId?: string | null;\n objectList?: any[] | null;\n}\n\ninterface CMDBSelectEvents {\n \"cmdb.instance.form.change.v2\": CustomEvent<any[]>;\n}\n\ninterface CMDBSelectEvensMapping {\n onChangeV2: \"cmdb.instance.form.change.v2\";\n}\n\nexport const AsyncWrappedCMDB = React.lazy(async () => ({\n default: await asyncWrapBrick<\n HTMLElement,\n CMDBSelectProps,\n CMDBSelectEvents,\n CMDBSelectEvensMapping\n >(\"cmdb-instances.cmdb-instances-input-form\", {\n onChangeV2: \"cmdb.instance.form.change.v2\",\n }),\n}));\n","// istanbul ignore file: experimental\nimport React, { Suspense, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MarkdownComponent } from \"@next-shared/markdown\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport { CmdbObjectApi_getObjectRef } from \"@next-api-sdk/cmdb-sdk\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport styles from \"./NodeJob.module.css\";\nimport type { Job } from \"../interfaces\";\nimport { K, t } from \"../i18n.js\";\nimport { AsyncWrappedCMDB } from \"../cmdb.js\";\nimport { WrappedButton, WrappedIcon } from \"../bricks.js\";\n\nexport interface NodeJobProps {\n job: Job;\n state?: string;\n humanInput?: (jobId: string, input: string) => void;\n}\n\nexport function NodeJob({ job, state, humanInput }: NodeJobProps): JSX.Element {\n const askUser = job.toolCall?.name === \"ask_human\";\n const knownAskUser =\n askUser &&\n [\n \"ask_user_more\",\n \"ask_user_confirm\",\n \"ask_user_choose\",\n \"ask_user_select_from_cmdb\",\n ].includes(job.toolCall!.arguments?.command as string);\n\n const [expanded, setExpanded] = useState(false);\n const toggle = () => {\n setExpanded((prev) => !prev);\n };\n\n return (\n <div\n className={classNames(styles[\"node-job\"], {\n [styles.error]: job.isError,\n [styles[\"ask-user\"]]: knownAskUser,\n })}\n >\n <div className={styles.heading}>\n {job.toolCall ? (\n <>\n {askUser ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"person-circle-question\"\n />\n ) : (\n <WrappedIcon\n className={styles.icon}\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"tool\"\n />\n )}\n <div className={styles.tool}>{job.toolCall?.name}</div>\n </>\n ) : (\n <>\n <WrappedIcon className={styles.icon} lib=\"easyops\" icon=\"robot\" />\n </>\n )}\n <div className={styles.time}>\n {job.startTime && moment(job.startTime * 1000).format(\"MM-DD HH:mm\")}\n </div>\n </div>\n <div className={styles.body}>\n {knownAskUser ? (\n <>\n <div className={`${styles.message} ${styles[\"role-assistant\"]}`}>\n <MarkdownComponent\n content={job.toolCall!.arguments?.question as string}\n />\n </div>\n {state === \"input-required\" &&\n (job.toolCall!.arguments!.command === \"ask_user_more\" ? (\n <HumanInputComponent jobId={job.id} humanInput={humanInput} />\n ) : job.toolCall!.arguments!.command === \"ask_user_confirm\" ? (\n <HumanConfirmComponent\n jobId={job.id}\n humanInput={humanInput}\n confirmText={job.toolCall!.arguments!.confirm_text as string}\n cancelText={job.toolCall!.arguments!.cancel_text as string}\n />\n ) : job.toolCall!.arguments!.command === \"ask_user_choose\" ? (\n <HumanChooseComponent\n jobId={job.id}\n humanInput={humanInput}\n options={job.toolCall!.arguments!.options as string[]}\n />\n ) : job.toolCall!.arguments!.command ===\n \"ask_user_select_from_cmdb\" ? (\n <HumanSelectFromCmdb\n jobId={job.id}\n humanInput={humanInput}\n objectId={job.toolCall!.arguments!.objectId as string}\n attrId={job.toolCall!.arguments!.attrId as string}\n />\n ) : null)}\n </>\n ) : askUser ? (\n <div className={`${styles.message} ${styles[\"role-assistant\"]}`}>\n Unexpected ask_human command:{\" \"}\n {JSON.stringify(job.toolCall!.arguments?.command ?? null)}\n </div>\n ) : null}\n {!askUser && job.toolCall && !expanded ? (\n <>\n <div className={styles[\"tool-call\"]}>\n {job.isError || state === \"failed\" ? (\n <WrappedIcon\n className={`${styles[\"tool-icon\"]} ${styles.failed}`}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"xmark\"\n />\n ) : state === \"completed\" ? (\n <WrappedIcon\n className={styles[\"tool-icon\"]}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"check\"\n />\n ) : state === \"working\" || state === \"completed\" ? (\n <WrappedIcon\n className={styles[\"tool-icon\"]}\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n ) : state === \"input-required\" ? (\n <WrappedIcon\n className={styles[\"tool-icon\"]}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-pause\"\n />\n ) : state === \"canceled\" ? (\n <WrappedIcon\n className={styles[\"tool-icon\"]}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-stop\"\n />\n ) : (\n <WrappedIcon\n className={styles[\"tool-icon\"]}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"clock\"\n />\n )}\n </div>\n </>\n ) : (\n job.messages?.map((message, index) => (\n <div\n key={index}\n className={classNames(styles.message, {\n [styles[\"role-user\"]]: message.role === \"tool\" && askUser,\n })}\n >\n {message.parts?.map((part, partIndex) => (\n <React.Fragment key={partIndex}>\n {part.type === \"text\" ? (\n message.role === \"tool\" && askUser ? (\n part.text\n ) : (\n <RefineMarkdownComponent\n content={part.text}\n isToolOutput={\n message.role === \"tool\" && !!job.toolCall && !askUser\n }\n />\n )\n ) : part.type === \"file\" ? (\n <div>{part.file.name}</div>\n ) : (\n <div>{JSON.stringify(part.data)}</div>\n )}\n </React.Fragment>\n ))}\n </div>\n ))\n )}\n {!askUser && job.toolCall && job.messages?.length ? (\n <WrappedIcon\n className={styles.expand}\n lib=\"fa\"\n prefix=\"fas\"\n icon={expanded ? \"chevron-up\" : \"chevron-down\"}\n onClick={toggle}\n />\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction HumanInputComponent({\n jobId,\n humanInput,\n}: {\n jobId: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div /* className=\"node-ask-user-more size-medium\" */ ref={containerRef}>\n {/* <div className=\"message\">\n <MarkdownComponent content={node.content} />\n </div> */}\n <TextareaAutoResize\n className={styles[\"human-input\"]}\n containerRef={containerRef}\n autoResize\n minRows={2}\n paddingSize={14}\n placeholder=\"Type your message here...\"\n submitWhen=\"enter-without-shift\"\n onSubmit={(e) => {\n const input = e.currentTarget.value;\n if (input) {\n humanInput?.(jobId, input);\n }\n }}\n />\n </div>\n );\n}\n\nfunction HumanConfirmComponent({\n jobId,\n humanInput,\n confirmText,\n cancelText,\n}: {\n jobId: string;\n confirmText?: string;\n cancelText?: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n return (\n <div style={{ marginTop: \"1em\" }}>\n <WrappedButton\n type=\"primary\"\n onClick={() => {\n humanInput?.(jobId, confirmText || t(K.YES));\n }}\n >\n {confirmText || t(K.YES)}\n </WrappedButton>\n <WrappedButton\n onClick={() => {\n humanInput?.(jobId, cancelText || t(K.NO));\n }}\n style={{ marginLeft: \"0.5em\" }}\n >\n {cancelText || t(K.NO)}\n </WrappedButton>\n </div>\n );\n}\n\nfunction HumanChooseComponent({\n jobId,\n options,\n humanInput,\n}: {\n jobId: string;\n options?: string[];\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n return (\n <div\n style={{\n marginTop: \"1em\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5em\",\n }}\n >\n {options?.map((option, index) => (\n <WrappedButton\n key={index}\n onClick={() => {\n humanInput?.(jobId, option);\n }}\n >\n {option}\n </WrappedButton>\n ))}\n </div>\n );\n}\n\nfunction HumanSelectFromCmdb({\n jobId,\n objectId,\n attrId,\n humanInput,\n}: {\n jobId: string;\n objectId?: string;\n attrId?: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n const [objectList, setObjectList] = useState<any[] | null>(null);\n\n useEffect(() => {\n if (!objectId) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const objects = (\n await CmdbObjectApi_getObjectRef({ ref_object: objectId })\n ).data;\n if (!ignore) {\n setObjectList(objects);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Fetch object list failed:\", e);\n handleHttpError(e);\n }\n })();\n return () => {\n ignore = true;\n };\n }, [objectId]);\n\n if (!objectId) {\n return (\n <div style={{ marginTop: \"1em\" }}>\n Can not call ask_user_select_from_cmdb without objectId\n </div>\n );\n }\n // if (!objectId || !attrId) {\n // return <div style={{ marginTop: \"1em\" }}>Can not call ask_user_select_from_cmdb without {!objectId ? \"objectId\" : \"attrId\"}</div>;\n // }\n\n const fieldId =\n !attrId || (attrId === \"instanceId\" && objectId === \"HOST\") ? \"ip\" : attrId;\n\n return (\n <div style={{ marginTop: \"1em\" }}>\n <Suspense>\n <AsyncWrappedCMDB\n objectList={objectList}\n objectId={objectId}\n fieldId={fieldId}\n onChangeV2={(e) => {\n if (!e.detail.length) {\n return;\n }\n humanInput?.(\n jobId,\n e.detail.map((i) => i[fieldId /* ?? \"instanceId\" */]).join(\"\\n\")\n );\n }}\n />\n </Suspense>\n </div>\n );\n}\n\nfunction RefineMarkdownComponent({\n content,\n isToolOutput,\n}: {\n content?: string;\n isToolOutput?: boolean;\n}): JSX.Element {\n const refinedContent = useMemo(() => {\n if (isToolOutput) {\n try {\n const json = JSON.parse(content ?? \"\");\n return `${\"```json\\n\"}${JSON.stringify(json, null, 2)}${\"\\n```\"}`;\n } catch {\n // Do nothing.\n }\n }\n return content;\n }, [content, isToolOutput]);\n\n return <MarkdownComponent content={refinedContent} />;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/requirement@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-requirement--aVjY3LFY{width:453px;max-width:90vw;background-color:rgba(255,255,255,0.4);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center bottom;background-size:453px 128px;background-repeat:no-repeat;box-shadow:0px 4px 10px 0px rgba(54,64,80,0.18);border-radius:12px;-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);border:1px solid rgba(255,255,255,0.4);padding:8px;white-space:pre-wrap;position:relative}.heading--F8b1aIJT{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px;font-size:12px}.time--IRwoiblW{color:#8c8c8c}.body--JYv_r9n_{background:#f1f6ff;box-shadow:0px 1px 0px 0px #ffffff;border-radius:9px;padding:15px 10px}.loading-line--xDrsXoxu{position:absolute;bottom:-62px;left:50%;transform:translate(-50%,0)}.loading-line--xDrsXoxu path{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.loading--yZvyv4wE{position:absolute;bottom:-74px;left:50%;transform:translate(-50%,0);width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:rgba(69,94,255,0.5);border-radius:24px;animation:loading--yZvyv4wE 1s infinite linear}.inner--voOHXPcc{width:12px;height:12px;background:rgb(69,94,255);border-radius:12px}@keyframes loading--yZvyv4wE{0%{transform:translate(-50%,0) scale(1);opacity:1}100%{transform:translate(-50%,0) scale(1.5);opacity:0}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-requirement\": `node-requirement--aVjY3LFY`,\n\t\"heading\": `heading--F8b1aIJT`,\n\t\"time\": `time--IRwoiblW`,\n\t\"body\": `body--JYv_r9n_`,\n\t\"loading-line\": `loading-line--xDrsXoxu`,\n\t\"loading\": `loading--yZvyv4wE`,\n\t\"inner\": `inner--voOHXPcc`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { ZoomTransform, type ZoomBehavior } from \"d3-zoom\";\nimport { select } from \"d3-selection\";\nimport type { GraphNode } from \"./interfaces\";\nimport { CANVAS_PADDING_BOTTOM } from \"./constants\";\n\nexport interface UseAutoCenterOptions {\n nodes: GraphNode[];\n sizeReady: boolean;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n rootRef: RefObject<HTMLDivElement>;\n}\n\nexport function useAutoCenter({\n nodes,\n sizeReady,\n zoomer,\n rootRef,\n}: UseAutoCenterOptions) {\n const [centered, setCentered] = useState(false);\n const reCenterRef = useRef(false);\n\n // Transform to horizontal center once.\n useEffect(() => {\n const root = rootRef.current;\n if (sizeReady && root && !centered && nodes.length > 0) {\n let left = Infinity;\n let right = -Infinity;\n let top = Infinity;\n let bottom = -Infinity;\n\n for (const node of nodes) {\n const view = node.view!;\n const r = view.x + view.width;\n const b = view.y + view.height;\n if (view.x < left) {\n left = view.x;\n }\n if (r > right) {\n right = r;\n }\n if (view.y < top) {\n top = view.y;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const x = (root.clientWidth - (right + left)) / 2;\n let y = 30;\n if (reCenterRef.current) {\n const height = bottom - top + CANVAS_PADDING_BOTTOM;\n const diffY = height - root.clientHeight;\n if (diffY > 0) {\n y = -diffY - top;\n } else {\n y = (root.clientHeight - (bottom + top)) / 2;\n }\n }\n\n zoomer.transform(select(root), new ZoomTransform(1, x, y));\n setCentered(true);\n }\n\n reCenterRef.current = false;\n }, [centered, nodes, rootRef, sizeReady, zoomer]);\n\n return { centered, setCentered, reCenterRef };\n}\n","import { JobState } 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 CANVAS_PADDING_BOTTOM = 96;\nexport const RANK_SEP = 40;\nexport const NODE_SEP = 42;\nexport const EDGE_SEP = 10;\n\nexport const DONE_STATES = [\"completed\", \"failed\", \"canceled\"] as JobState[];\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]!./NodeInstruction.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]!./NodeInstruction.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./NodeInstruction.module.css\";\n\nexport interface NodeInstructionProps {\n content?: string;\n loading?: boolean;\n}\n\nexport function NodeInstruction({\n content,\n loading,\n}: NodeInstructionProps): JSX.Element {\n return (\n <div\n className={classNames(styles[\"node-instruction\"], {\n [styles.loading]: loading,\n })}\n >\n <div className={styles.text} title={content}>\n {content}\n </div>\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `ai-portal\\\\.cruise-canvas{display:block;position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;color:#262626;--cruise-canvas-node-border:1px solid gray;--cruise-canvas-node-width-medium:380px;--cruise-canvas-node-width-large:764px;--cruise-canvas-primary-color:#2540ff}.root--z6jdb_BU{width:100%;height:100%;position:relative}.widgets--r6lUPOu2{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;-webkit-user-select:none;user-select:none}.widgets--r6lUPOu2 > *{pointer-events:auto;-webkit-user-select:text;user-select:text}.canvas--u6C26uH_,\n.edges--uNPQGWZg{width:100%;height:100%;position:absolute;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.node--IBGywwp4{position:absolute;-webkit-user-select:text;user-select:text;cursor:auto}.node--IBGywwp4:not(.ready--pmh440go),\n.canvas--u6C26uH_:not(.ready--pmh440go) > .edges--uNPQGWZg{visibility:hidden}svg.edges--uNPQGWZg{pointer-events:none;overflow:visible}.edge--muRUWYG1{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.size-medium--s_5BfbCV,\n.size-large--GFdstz_s{border:var(--cruise-canvas-node-border);border-radius:6px;padding:6px}.size-medium--s_5BfbCV{width:var(--cruise-canvas-node-width-medium)}.size-large--GFdstz_s{width:var(--cruise-canvas-node-width-large)}.node-default--rfA_zOid{border:var(--cruise-canvas-node-border)}.node-default--rfA_zOid > :first-child{margin-top:0}.node-default--rfA_zOid > :last-child{margin-bottom:0}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"root\": `root--z6jdb_BU`,\n\t\"widgets\": `widgets--r6lUPOu2`,\n\t\"canvas\": `canvas--u6C26uH_`,\n\t\"edges\": `edges--uNPQGWZg`,\n\t\"node\": `node--IBGywwp4`,\n\t\"ready\": `ready--pmh440go`,\n\t\"edge\": `edge--muRUWYG1`,\n\t\"size-medium\": `size-medium--s_5BfbCV`,\n\t\"size-large\": `size-large--GFdstz_s`,\n\t\"node-default\": `node-default--rfA_zOid`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/end@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../images/completed@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-end--yzRaOZnC{width:330px;background-color:#fff;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:330px 271px;background-repeat:no-repeat;background-position:center;border:1px solid #e0e5f0;border-radius:12px;display:flex;flex-direction:column;align-items:center;padding:41px 24px 28px}.icon--IVcHjGFO{width:64px;height:64px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});background-size:59px 49px;background-repeat:no-repeat;background-position:center;margin-bottom:16px}.title--ESn4jaJ9{margin-bottom:8px;font-weight:500;font-size:16px;line-height:24px}.description--aYl8sq6S{margin-bottom:36px;font-size:13px;color:#8c8c8c;line-height:24px}.button--mkIwsPzt{width:120px;height:30px;background:rgba(0,0,0,0.04);border:none;border-radius:15px;text-align:center;cursor:pointer}.button--mkIwsPzt:hover{background:rgba(0,0,0,0.08)}.button--mkIwsPzt:active{background:rgba(0,0,0,0.15)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-end\": `node-end--yzRaOZnC`,\n\t\"icon\": `icon--IVcHjGFO`,\n\t\"title\": `title--ESn4jaJ9`,\n\t\"description\": `description--aYl8sq6S`,\n\t\"button\": `button--mkIwsPzt`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-job--soTYrcA7{width:330px;max-width:90vw;background:linear-gradient(180deg,#f5f8ff 0%,#edf0f9 100%);box-shadow:0px 4px 10px 0px rgba(177,149,207,0.4),0px 2px 4px 0px rgba(0,0,0,0.06);border-radius:12px;border:1px solid #fff;padding:8px}.ask-user--lf925zGf{background:rgba(255,255,255,0.4);box-shadow:0px 4px 10px 0px rgba(54,64,80,0.18);border-color:rgba(255,255,255,0.5);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px)}.error--IwtdD0T6{box-shadow:inset 0px 0px 8px 2px rgba(242,76,37,0.6);border-color:rgba(242,76,37,0.6)}.heading--GZqrhPqL{display:flex;align-items:center;border-bottom:1px solid #e2e2ec;padding:0 5px 5px;font-size:12px;color:#8c8c8c}.icon--Rb_vveHN{margin-right:6px}.tool--RR3S1Z1V{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time--eHXSEjt6{margin-left:6px}.body--V34MsV9R{padding:16px 4px 8px;max-height:392px;overflow-y:auto}.message--iVQBlD6k{overflow-wrap:break-word}.message--iVQBlD6k + .message--iVQBlD6k{margin-top:1em}.message--iVQBlD6k p{margin:1em 0}.message--iVQBlD6k > :first-child{margin-top:0}.message--iVQBlD6k > :last-child{margin-bottom:0}.ask-user--lf925zGf .heading--GZqrhPqL{border-bottom:none}.ask-user--lf925zGf .body--V34MsV9R{padding-top:8px}.role-assistant--Y8vd9Oms,\n.role-user--nAW4Hzsu{background:rgba(255,255,255,0.8);border-radius:9px;border:1px solid #ccd1de;padding:6px 16px}.role-user--nAW4Hzsu{white-space:pre-wrap}.human-input--wFc6ovnT{margin-top:1em;display:block;width:100%;padding:0.5em 1em;color:var(--antd-input-color);background:rgba(255,255,255,0.8);box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9;box-sizing:border-box;border:1px solid var(--antd-input-border-color);border-radius:9px;font-size:14px;line-height:22px;height:32px}.human-input--wFc6ovnT:not(:disabled):hover{border:1px solid var(--antd-input-hover-border-color)}.human-input--wFc6ovnT:not(:disabled):focus{border:1px solid var(--antd-input-focus-border-color);outline:0;box-shadow:0 0 0 2px rgb(0 113 235/20%)}.human-input--wFc6ovnT::placeholder{color:var(--antd-input-placeholder-color)}.tool-call--R4168MLY{display:flex;align-items:center;justify-content:center;font-size:16px}.failed--MS4GZtpc{color:var(--color-error)}.expand--XB3NqkVv{position:absolute;bottom:4px;right:8px;visibility:hidden;cursor:pointer;padding:5px}.node-job--soTYrcA7:hover .expand--XB3NqkVv{visibility:visible}.message--iVQBlD6k code[class*=\"language-\"],.message--iVQBlD6k 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}.message--iVQBlD6k code[class*=\"language-\"]::selection,.message--iVQBlD6k code[class*=\"language-\"] *::selection,.message--iVQBlD6k pre[class*=\"language-\"] *::selection{background:hsl(230,1%,90%);color:inherit}.message--iVQBlD6k pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:9px}.message--iVQBlD6k :not(pre) > code[class*=\"language-\"]{padding:0.2em 0.3em;border-radius:9px;white-space:normal}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.prolog,.message--iVQBlD6k .token.cdata{color:hsl(230,4%,64%)}.message--iVQBlD6k .token.doctype,.message--iVQBlD6k .token.punctuation,.message--iVQBlD6k .token.entity{color:hsl(230,8%,24%)}.message--iVQBlD6k .token.attr-name,.message--iVQBlD6k .token.class-name,.message--iVQBlD6k .token.boolean,.message--iVQBlD6k .token.constant,.message--iVQBlD6k .token.number,.message--iVQBlD6k .token.atrule{color:hsl(35,99%,36%)}.message--iVQBlD6k .token.keyword{color:hsl(301,63%,40%)}.message--iVQBlD6k .token.property,.message--iVQBlD6k .token.tag,.message--iVQBlD6k .token.symbol,.message--iVQBlD6k .token.deleted,.message--iVQBlD6k .token.important{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.selector,.message--iVQBlD6k .token.string,.message--iVQBlD6k .token.char,.message--iVQBlD6k .token.builtin,.message--iVQBlD6k .token.inserted,.message--iVQBlD6k .token.regex,.message--iVQBlD6k .token.attr-value,.message--iVQBlD6k .token.attr-value > .token.punctuation{color:hsl(119,34%,47%)}.message--iVQBlD6k .token.variable,.message--iVQBlD6k .token.operator,.message--iVQBlD6k .token.function{color:hsl(221,87%,60%)}.message--iVQBlD6k .token.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .token.attr-value > .token.punctuation.attr-equals,.message--iVQBlD6k .token.special-attr > .token.attr-value > .token.value.css{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.selector{color:hsl(5,74%,59%)}.message--iVQBlD6k .language-css .token.property{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.function,.message--iVQBlD6k .language-css .token.url > .token.function{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-css .token.url > .token.string.url{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-css .token.important,.message--iVQBlD6k .language-css .token.atrule .token.rule{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.operator{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:hsl(344,84%,43%)}.message--iVQBlD6k .language-json .token.operator{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-json .token.null.keyword{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.url,.message--iVQBlD6k .language-markdown .token.url > .token.operator,.message--iVQBlD6k .language-markdown .token.url-reference.url > .token.string{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-markdown .token.url > .token.content{color:hsl(221,87%,60%)}.message--iVQBlD6k .language-markdown .token.url > .token.url,.message--iVQBlD6k .language-markdown .token.url-reference.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-markdown .token.blockquote.punctuation,.message--iVQBlD6k .language-markdown .token.hr.punctuation{color:hsl(230,4%,64%);font-style:italic}.message--iVQBlD6k .language-markdown .token.code-snippet{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-markdown .token.bold .token.content{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.italic .token.content{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-markdown .token.strike .token.content,.message--iVQBlD6k .language-markdown .token.strike .token.punctuation,.message--iVQBlD6k .language-markdown .token.list.punctuation,.message--iVQBlD6k .language-markdown .token.title.important > .token.punctuation{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.bold{font-weight:bold}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.italic{font-style:italic}.message--iVQBlD6k .token.entity{cursor:help}.message--iVQBlD6k .token.namespace{opacity:0.8}.node-job--soTYrcA7 *::-webkit-scrollbar{width:5px;height:5px;background:transparent}.node-job--soTYrcA7 *::-webkit-scrollbar-thumb{background-color:#d8d8d8;border-radius:3px}.node-job--soTYrcA7 *::-webkit-scrollbar-track{background:transparent}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-job\": `node-job--soTYrcA7`,\n\t\"ask-user\": `ask-user--lf925zGf`,\n\t\"error\": `error--IwtdD0T6`,\n\t\"heading\": `heading--GZqrhPqL`,\n\t\"icon\": `icon--Rb_vveHN`,\n\t\"tool\": `tool--RR3S1Z1V`,\n\t\"time\": `time--eHXSEjt6`,\n\t\"body\": `body--V34MsV9R`,\n\t\"message\": `message--iVQBlD6k`,\n\t\"role-assistant\": `role-assistant--Y8vd9Oms`,\n\t\"role-user\": `role-user--nAW4Hzsu`,\n\t\"human-input\": `human-input--wFc6ovnT`,\n\t\"tool-call\": `tool-call--R4168MLY`,\n\t\"failed\": `failed--MS4GZtpc`,\n\t\"expand\": `expand--XB3NqkVv`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import dagre from \"@dagrejs/dagre\";\nimport { useMemo, useRef } from \"react\";\nimport type {\n NodePosition,\n NodeView,\n GraphEdge,\n GraphNode,\n SizeTuple,\n TaskState,\n} from \"./interfaces\";\nimport {\n EDGE_SEP,\n END_NODE_ID,\n NODE_SEP,\n RANK_SEP,\n START_NODE_ID,\n} from \"./constants\";\n\nexport interface UseLayoutOptions {\n rawNodes: GraphNode[] | undefined;\n rawEdges: GraphEdge[] | undefined;\n sizeMap: Map<string, SizeTuple> | null;\n state?: TaskState;\n}\n\nexport function useLayout({\n rawNodes: _rawNodes,\n rawEdges: _rawEdges,\n sizeMap,\n state,\n}: UseLayoutOptions) {\n const memoizedPositionsRef = useRef<Map<string, NodePosition> | null>(null);\n const completed = state === \"completed\";\n\n const { initialNodes, initialEdges } = useMemo(() => {\n const initialNodes: GraphNode[] = [\n {\n type: \"start\",\n id: START_NODE_ID,\n },\n ];\n const initialEdges: GraphEdge[] = [];\n const finishedNodeIds: string[] = [];\n const rawNodes = _rawNodes ?? [];\n const rawEdges = _rawEdges ?? [];\n\n const hasSource = new Set<string>(rawEdges.map((edge) => edge.target));\n const hasTarget = completed\n ? new Set<string>(rawEdges.map((edge) => edge.source))\n : null;\n\n for (const node of rawNodes) {\n if (!hasSource.has(node.id)) {\n initialEdges.push({\n source: START_NODE_ID,\n target: node.id,\n });\n }\n\n if (completed && !hasTarget!.has(node.id)) {\n finishedNodeIds.push(node.id);\n }\n }\n\n initialNodes.push(...rawNodes);\n initialEdges.push(...rawEdges);\n\n if (finishedNodeIds.length > 0) {\n initialNodes.push({\n id: END_NODE_ID,\n type: \"end\",\n });\n initialEdges.push(\n ...finishedNodeIds.map((id) => ({\n source: id,\n target: END_NODE_ID,\n }))\n );\n }\n\n const memoizedPositions = memoizedPositionsRef.current;\n if (memoizedPositions) {\n for (const node of initialNodes) {\n const view = memoizedPositions.get(node.id);\n if (view) {\n node.view = view as NodeView;\n }\n }\n }\n\n return { initialNodes, initialEdges };\n }, [completed, _rawEdges, _rawNodes]);\n\n const startNodePositionRef = useRef<NodePosition | null>(null);\n\n return useMemo(() => {\n for (const node of initialNodes) {\n if (!sizeMap?.has(node.id)) {\n return { sizeReady: false, nodes: initialNodes, edges: [] };\n }\n }\n\n const graph = new dagre.graphlib.Graph();\n graph.setGraph({\n rankdir: \"TB\",\n nodesep: NODE_SEP,\n edgesep: EDGE_SEP,\n ranksep: RANK_SEP,\n });\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n for (const edge of initialEdges) {\n graph.setEdge(edge.source, edge.target);\n }\n for (const node of initialNodes) {\n const [width, height] = sizeMap!.get(node.id)!;\n graph.setNode(node.id, {\n id: node.id,\n width,\n height,\n });\n }\n dagre.layout(graph);\n\n // Make the start node position unchanged\n let offsets: NodePosition | null = null;\n\n const nodes = initialNodes.map<GraphNode>((node) => {\n const nodeView = graph.node(node.id);\n const x = nodeView.x - nodeView.width / 2;\n const y = nodeView.y - nodeView.height / 2;\n\n if (node.type === \"start\") {\n if (startNodePositionRef.current) {\n offsets = {\n x: startNodePositionRef.current.x - x,\n y: startNodePositionRef.current.y - y,\n };\n } else {\n startNodePositionRef.current = { x, y };\n }\n }\n\n return {\n ...node,\n view: {\n x,\n y,\n width: nodeView.width,\n height: nodeView.height,\n },\n };\n });\n\n if (offsets) {\n for (const node of nodes) {\n Object.assign(node.view!, getPositionWithOffsets(node.view!, offsets));\n }\n }\n\n const memoizedPositions = (memoizedPositionsRef.current ??= new Map());\n for (const node of nodes) {\n const { x, y } = node.view!;\n memoizedPositions.set(node.id, { x, y });\n }\n\n const edges = initialEdges.map((edge) => {\n const source = graph.node(edge.source);\n const sourcePosition = getPositionWithOffsets(source, offsets);\n const target = graph.node(edge.target);\n const targetPosition = getPositionWithOffsets(target, offsets);\n // const turnY =\n // (sourcePosition.y +\n // source.height / 2 +\n // targetPosition.y -\n // target.height / 2) /\n // 2;\n const turnY = targetPosition.y - (target.height + RANK_SEP) / 2;\n const points: NodePosition[] = [\n { x: sourcePosition.x, y: sourcePosition.y + source.height / 2 },\n { x: sourcePosition.x, y: turnY },\n { x: targetPosition.x, y: turnY },\n { x: targetPosition.x, y: targetPosition.y - target.height / 2 },\n ];\n\n return {\n ...edge,\n points,\n };\n });\n\n return {\n sizeReady: true,\n nodes,\n edges,\n };\n }, [initialEdges, initialNodes, sizeMap]);\n}\n\nfunction getPositionWithOffsets<T extends NodePosition>(\n position: T,\n offsets: NodePosition | null\n): NodePosition {\n if (!offsets) {\n return {\n x: position.x,\n y: position.y,\n };\n }\n return {\n x: position.x + offsets.x,\n y: position.y + offsets.y,\n };\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeStart.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]!./NodeStart.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeStart.module.css\";\n\nexport function NodeStart(): JSX.Element {\n return (\n <div className={styles[\"node-start\"]}>\n <div className={styles.icon} />\n </div>\n );\n}\n","// istanbul ignore file: hard to test with d3-zoom\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { select } from \"d3-selection\";\nimport { zoom, type ZoomBehavior } from \"d3-zoom\";\nimport type {\n RangeTuple,\n TransformLiteral /* , ActiveTarget */,\n} from \"./interfaces\";\nimport { DEFAULT_SCALE_RANGE_MIN, DEFAULT_SCALE_RANGE_MAX } from \"./constants\";\n// import type { ActiveTarget } from \"./interfaces\";\nimport jobStyles from \"./NodeJob/NodeJob.module.css\";\n\nexport interface UseZoomOptions {\n rootRef: React.RefObject<HTMLDivElement>;\n zoomable?: boolean;\n scrollable?: boolean;\n pannable?: boolean;\n pannableWithCtrl?: boolean;\n scaleRange?: RangeTuple;\n onSwitchActiveTarget?(target: unknown | null): void;\n}\n\nexport interface UseZoomResult {\n grabbing: boolean;\n transform: TransformLiteral;\n transformRef: React.MutableRefObject<TransformLiteral>;\n scaleRange: RangeTuple;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n}\n\n// istanbul ignore next\nconst isMac = /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\n// istanbul ignore next\nfunction wheelData(event: WheelEvent) {\n // On Windows with normal mouse, deltaY is too big when scroll with ctrlKey pressed,\n // which cause the zooming too fast.\n // While on mac OS, we need to keep default behavior of d3-zoom.\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n (event.ctrlKey && isMac ? 10 : 1)\n );\n}\n\nexport function useZoom({\n rootRef,\n zoomable,\n scrollable,\n pannable,\n pannableWithCtrl,\n scaleRange: _scaleRange,\n onSwitchActiveTarget,\n}: UseZoomOptions): UseZoomResult {\n const [grabbing, setGrabbing] = useState(false);\n const [transform, setTransform] = useState<TransformLiteral>({\n k: 1,\n x: 0,\n y: 0,\n });\n const transformRef = useRef(transform);\n\n const scaleRange = useMemo(\n () =>\n _scaleRange ??\n ([DEFAULT_SCALE_RANGE_MIN, DEFAULT_SCALE_RANGE_MAX] as RangeTuple),\n [_scaleRange]\n );\n\n const zoomer = useMemo(\n () => zoom<HTMLDivElement, unknown>().wheelDelta(wheelData),\n []\n );\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n let moved = false;\n zoomer\n .scaleExtent(zoomable ? scaleRange : [1, 1])\n .on(\"start\", () => {\n moved = false;\n setGrabbing(true);\n })\n .on(\"zoom\", (e: { transform: TransformLiteral }) => {\n moved = true;\n setTransform(e.transform);\n transformRef.current = e.transform;\n })\n .on(\"end\", () => {\n setGrabbing(false);\n if (!moved) {\n onSwitchActiveTarget?.(null);\n }\n })\n .filter(\n (event) =>\n (event.type === \"wheel\" ||\n (pannableWithCtrl ? pannable || event.ctrlKey : !event.ctrlKey)) &&\n !event.button\n );\n }, [\n onSwitchActiveTarget,\n scaleRange,\n zoomable,\n zoomer,\n pannableWithCtrl,\n pannable,\n ]);\n\n useEffect(() => {\n if (pannableWithCtrl) {\n const onContextMenu = (e: MouseEvent) => {\n if (e.ctrlKey) {\n e.preventDefault();\n }\n };\n document.addEventListener(\"contextmenu\", onContextMenu, true);\n return () => {\n document.removeEventListener(\"contextmenu\", onContextMenu, true);\n };\n }\n }, [pannableWithCtrl]);\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n const root = rootRef.current;\n if (!root) {\n return;\n }\n\n const rootSelection = select(root);\n\n const unsetZoom = () => {\n rootSelection\n .on(\".zoom\", null)\n .on(\".zoom.custom\", null)\n .on(\"wheel\", null);\n };\n\n if (!(zoomable || scrollable || pannable)) {\n unsetZoom();\n return;\n }\n\n if (zoomable || scrollable) {\n // Do not override default d3 zoom handler.\n // Only handles *panning*\n rootSelection.on(\n \"wheel.zoom.custom\",\n (e: WheelEvent & { wheelDeltaX: number; wheelDeltaY: number }) => {\n // Mac OS trackpad pinch event is emitted as a wheel.zoom and d3.event.ctrlKey set to true\n if (!e.ctrlKey) {\n // Stop immediate propagation for default d3 zoom handler\n e.stopImmediatePropagation();\n if (scrollable) {\n const pre = (e.target as HTMLElement)!.closest(\n 'pre[class*=\"language-\"]'\n );\n if (pre) {\n if (checkScrollableX(pre, e.deltaX)) {\n return;\n }\n }\n\n const node = (e.target as HTMLElement)!.closest(\n `.${jobStyles.body}`\n );\n if (node) {\n if (checkScrollableY(node, e.deltaY)) {\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n zoomer.translateBy(\n rootSelection,\n e.wheelDeltaX / 5,\n e.wheelDeltaY / 5\n );\n }\n }\n }\n // zoomer.scaleBy(rootSelection, Math.pow(2, defaultWheelDelta(e)))\n }\n );\n }\n\n rootSelection\n .call(zoomer)\n .on(\"wheel\", (e: WheelEvent) => {\n e.preventDefault();\n })\n .on(\"dblclick.zoom\", null);\n\n if (!pannable && !pannableWithCtrl) {\n rootSelection.on(\"mousedown.zoom\", null);\n }\n\n if (!pannable) {\n rootSelection\n .on(\"touchstart.zoom\", null)\n .on(\"touchmove.zoom\", null)\n .on(\"touchend.zoom\", null);\n }\n\n return unsetZoom;\n }, [pannableWithCtrl, pannable, rootRef, scrollable, zoomable, zoomer]);\n\n return { grabbing, transform, transformRef, zoomer, scaleRange };\n}\n\n// 检查元素是否还能滚动\nfunction checkScrollableY(element: Element, delta: number) {\n const isScrollingDown = delta > 0;\n // 还能向下滚动 或 还能向上滚动\n if (isScrollingDown) {\n const maxScroll = element.scrollHeight - element.clientHeight;\n return element.scrollTop <= maxScroll - 1;\n }\n return element.scrollTop >= 1;\n}\n\n// 检查元素是否还能滚动\nfunction checkScrollableX(element: Element, delta: number) {\n const isScrollingRight = delta > 0; // Updated variable name for clarity\n // 还能向右滚动 或 还能向左滚动\n if (isScrollingRight) {\n const maxScroll = element.scrollWidth - element.clientWidth; // Changed to scrollWidth and clientWidth\n return element.scrollLeft <= maxScroll - 1; // Changed to scrollLeft\n }\n return element.scrollLeft >= 1;\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/start@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-start--Mrh1iP5r{width:65px;height:65px;position:relative;overflow:visible}.icon--NxC4u6Wl{width:75px;height:75px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:75px 75px;background-repeat:no-repeat;background-position:center;position:absolute;left:-5px;top:-1px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-start\": `node-start--Mrh1iP5r`,\n\t\"icon\": `icon--NxC4u6Wl`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeEnd.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]!./NodeEnd.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeEnd.module.css\";\nimport { K, t } from \"../i18n\";\n\nexport interface NodeEndProps {\n onShare?: () => void;\n}\n\nexport function NodeEnd({ onShare }: NodeEndProps): JSX.Element {\n return (\n <div className={styles[\"node-end\"]}>\n <div className={styles.icon} />\n <div className={styles.title}>{t(K.TASK_COMPLETED)}</div>\n <div className={styles.description}>{t(K.PLAN_COMPLETED)}</div>\n <button className={styles.button} onClick={onShare}>\n {t(K.SHARE)}\n </button>\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeJob.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]!./NodeJob.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file\nimport { useMemo } from \"react\";\nimport type { Job, GraphEdge, GraphNode, TaskBaseDetail } from \"./interfaces\";\n\nexport function useTaskGraph(\n task: TaskBaseDetail | null | undefined,\n jobs: Job[]\n) {\n return useMemo(() => {\n if (!task) {\n return null;\n }\n\n const nodes: GraphNode[] = [];\n const edges: GraphEdge[] = [];\n\n const requirementNodeId = \"requirement\";\n nodes.push({\n type: \"requirement\",\n id: requirementNodeId,\n content: task.requirement,\n state: jobs.length === 0 ? \"working\" : \"completed\",\n });\n\n const jobMap = new Map<string, Job>();\n const childrenMap = new Map<string, string[]>();\n const downstreamMap = new Map<string, string[]>();\n const upstreamMap = new Map<string, string[]>();\n const rootDownstream: string[] = [];\n const rootChildren: string[] = [];\n\n for (const job of jobs) {\n if (job.parent) {\n let children = childrenMap.get(job.parent);\n if (!children) {\n children = [];\n childrenMap.set(job.parent, children);\n }\n children.push(job.id);\n }\n }\n\n // Setup jobMap and downstreamMap\n for (const job of jobs) {\n jobMap.set(job.id, job);\n\n for (const up of job.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstream = [];\n downstreamMap.set(up, downstream);\n }\n downstream.push(job.id);\n }\n\n if (!job.parent) {\n rootChildren.push(job.id);\n\n if (!job.upstream?.length) {\n rootDownstream.push(job.id);\n }\n }\n }\n\n const alignDownstreamMap = (children: string[]) => {\n for (const rootJobId of children) {\n const subChildren = childrenMap.get(rootJobId);\n const downstream = downstreamMap.get(rootJobId);\n\n if (subChildren) {\n const firstLevelChildren = subChildren.filter((child) => {\n const childJob = jobMap.get(child)!;\n return !childJob.upstream?.length;\n });\n\n const lastLevelChildren = downstream\n ? subChildren.filter((child) => {\n return !downstreamMap.has(child);\n })\n : [];\n\n downstreamMap.set(rootJobId, firstLevelChildren);\n\n for (const child of lastLevelChildren) {\n downstreamMap.set(child, [...downstream!]);\n }\n\n alignDownstreamMap(subChildren);\n }\n }\n };\n\n alignDownstreamMap(rootChildren);\n\n // Setup upstreamMap\n for (const [upstream, downstream] of downstreamMap) {\n for (const target of downstream) {\n let upstreams = upstreamMap.get(target);\n if (!upstreams) {\n upstreams = [];\n upstreamMap.set(target, upstreams);\n }\n upstreams.push(upstream);\n }\n }\n\n // Get BFS order of jobs\n const list: string[] = [];\n const visitedJobs = new Set<string>();\n const queue: string[] = [...rootDownstream];\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 const jobNodesMap = new Map<string, string[]>([\n [requirementNodeId, [requirementNodeId]],\n ]);\n\n for (const jobId of list) {\n const job = jobMap.get(jobId)!;\n const { messages } = job;\n const hasMessages =\n (Array.isArray(messages) && messages.length > 0) || job.toolCall;\n\n const nodeIds: string[] = [];\n\n if (job.instruction) {\n const instructionNodeId = `instruction:${jobId}`;\n nodes.push({\n type: \"instruction\",\n id: instructionNodeId,\n job,\n state: job.state,\n });\n\n nodeIds.push(instructionNodeId);\n }\n\n if (hasMessages || !job.instruction) {\n const jobNodeId = `job:${job.id}`;\n nodes.push({\n type: \"job\",\n id: jobNodeId,\n job,\n state: job.state,\n });\n nodeIds.push(jobNodeId);\n }\n\n jobNodesMap.set(jobId, nodeIds);\n }\n\n for (const jobId of list) {\n const nodeIds = jobNodesMap.get(jobId)!;\n\n const upstreams = upstreamMap.get(jobId);\n for (const upstream of upstreams ?? [requirementNodeId]) {\n const parentNodeIds = jobNodesMap.get(upstream)!;\n edges.push({\n source: parentNodeIds[parentNodeIds.length - 1],\n target: nodeIds[0],\n });\n }\n\n for (let i = 1; i < nodeIds.length; i++) {\n edges.push({\n source: nodeIds[i - 1],\n target: nodeIds[i],\n });\n }\n }\n\n return {\n nodes,\n edges,\n };\n }, [task, jobs]);\n}\n"],"names":["K","NS","locales","en","YES","NO","PLAN_COMPLETED","TASK_COMPLETED","SHARE","zh","t","i18n","getFixedT","SIZING_STYLE","hiddenTextarea","modKey","test","navigator","platform","TextareaAutoResize","React","LegacyTextareaAutoResize","_ref","ref","autoResize","_autoResize","minRows","maxRows","borderSize","paddingSize","containerRef","value","propValue","style","submitWhen","onChange","onSubmit","onKeyDown","onCompositionStart","onCompositionEnd","props","setValue","useState","textareaRef","useRef","autoStyle","setAutoStyle","useImperativeHandle","focus","textarea","current","_textarea$value","valueLength","length","setSelectionRange","doAutoResize","useCallback","uiTextNode","options","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","window","getComputedStyle","sizingStyle","map","name","getPropertyValue","join","minHeight","maxHeight","overflowY","placeholder","height","scrollHeight","singleRowHeight","parseFloat","Math","max","min","resize","calculateAutoSizeStyle","flushSync","useEffect","compositionRef","handleCompositionStart","e","handleCompositionEnd","handleKeyDown","key","shiftKey","preventDefault","stopPropagation","container","previousInlineSize","observer","ResizeObserver","entries","entry","target","currentInlineSize","contentBoxSize","inlineSize","contentRect","width","undefined","isInitial","requestAnimationFrame","observe","disconnect","_extends","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","mergeMessages","messages","merged","previousRole","message","role","lastMessage","parts","push","mergeMessageParts","previousType","part","type","text","rootReducer","reducers","task","state","action","taskPatch","pick","payload","isMatchWith","isEqual","jobs","jobsPatch","Array","isArray","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","job","id","messagesPatch","toolCall","arguments","JSON","parse","console","error","argumentsParseFailed","argumentsParseError","previousJob","restMessagesPatch","_previousJob$messages","slice","Object","fromEntries","useTaskDetail","taskId","dispatch","useReducer","humanInputRef","ctrl","ignore","requesting","makeRequest","async","AbortController","request","createSSEStream","getBasePath","signal","stream","handleHttpError","jobId","input","response","fetch","method","headers","stringify","ok","responseJson","status","statusText","json","HttpResponseError","_ctrl","abort","plan","setPlan","prev","jobMap","Map","childrenMap","_childrenMap$get","set","parent","get","isInputRequired","_childrenMap$get2","some","childId","childJob","step","_task$plan","instruction","PlanProgress","expanded","setExpanded","doneCount","useMemo","reduce","acc","className","icon","getClassNameAndIconProps","toggle","classNames","styles","progress","onClick","WrappedIcon","title","stat","expand","lib","theme","details","index","PlanStep","_ref2","completed","prefix","working","spinning","failed","canceled","___CSS_LOADER_EXPORT___","module","WrappedEasyOpsAvatar","wrapBrick","NodeRequirement","content","startTime","loading","username","auth","getAuth","heading","user","nameOrInstanceId","showName","size","time","moment","format","viewBox","d","inner","ZoomBar","scale","onScaleChange","onReCenter","handleZoomIn","handleZoomOut","divider","rehypePrism","visitor","node","_index","tagName","lang","properties","classListItem","toLowerCase","getLanguage","result","concat","refractor","highlight","toString","children","tree","visit","production","Fragment","jsx","jsxs","MarkdownComponent","reactContent","setReactContent","unified","use","remarkParse","remarkToRehype","rehypeReact","process","then","vFile","catch","AsyncWrappedCMDB","default","asyncWrapBrick","onChangeV2","NodeJob","_job$toolCall","_arguments","_job$toolCall2","_arguments2","_arguments$command","_arguments3","_job$messages","_job$messages2","humanInput","askUser","knownAskUser","includes","command","isError","tool","question","HumanInputComponent","HumanConfirmComponent","confirmText","confirm_text","cancelText","cancel_text","HumanChooseComponent","HumanSelectFromCmdb","objectId","attrId","_message$parts","partIndex","RefineMarkdownComponent","isToolOutput","file","data","currentTarget","_ref3","marginTop","WrappedButton","marginLeft","_ref4","display","flexDirection","gap","option","_ref5","objectList","setObjectList","objects","CmdbObjectApi_getObjectRef","ref_object","fieldId","Suspense","detail","i","_ref6","refinedContent","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","useAutoCenter","nodes","sizeReady","zoomer","rootRef","centered","setCentered","reCenterRef","root","left","Infinity","right","top","bottom","view","r","x","b","y","clientWidth","diffY","CANVAS_PADDING_BOTTOM","clientHeight","transform","select","ZoomTransform","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","START_NODE_ID","END_NODE_ID","RANK_SEP","NODE_SEP","EDGE_SEP","DONE_STATES","NodeInstruction","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","useLayout","rawNodes","_rawNodes","rawEdges","_rawEdges","sizeMap","memoizedPositionsRef","initialNodes","initialEdges","finishedNodeIds","hasSource","Set","edge","hasTarget","source","has","memoizedPositions","startNodePositionRef","_memoizedPositionsRef","edges","graph","dagre","Graph","setGraph","rankdir","nodesep","edgesep","ranksep","setDefaultEdgeLabel","setEdge","setNode","offsets","nodeView","assign","getPositionWithOffsets","sourcePosition","targetPosition","turnY","points","position","NodeStart","isMac","_userAgentData$platfo","_userAgentData","userAgentData","userAgent","wheelData","event","deltaY","deltaMode","ctrlKey","useZoom","zoomable","scrollable","pannable","pannableWithCtrl","scaleRange","_scaleRange","onSwitchActiveTarget","grabbing","setGrabbing","setTransform","k","transformRef","zoom","wheelDelta","moved","scaleExtent","on","filter","button","onContextMenu","addEventListener","removeEventListener","rootSelection","unsetZoom","stopImmediatePropagation","pre","closest","element","delta","maxScroll","scrollWidth","scrollLeft","checkScrollableX","deltaX","jobStyles","scrollTop","checkScrollableY","cancelable","translateBy","wheelDeltaX","wheelDeltaY","call","NodeEnd","onShare","description","useTaskGraph","requirementNodeId","requirement","downstreamMap","upstreamMap","rootDownstream","rootChildren","up","_job$upstream","upstream","downstream","_job$upstream2","alignDownstreamMap","rootJobId","subChildren","firstLevelChildren","child","_childJob$upstream","lastLevelChildren","upstreams","list","visitedJobs","queue","shift","add","jobNodesMap","hasMessages","nodeIds","instructionNodeId","jobNodeId","parentNodeIds"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2277,4658],{4658:(e,t,r)=>{r.r(t),r.d(t,{inject:()=>m,transform:()=>v,transformAndInject:()=>w});var n=r(1030),a=r(9933);let i=function(e){return e[e.Initial=0]="Initial",e[e.ExpectField=1]="ExpectField",e[e.ExpectOptionalBeginDefault=2]="ExpectOptionalBeginDefault",e[e.ExpectDefaultValue=3]="ExpectDefaultValue",e[e.ExpectOptionalBeginPipe=4]="ExpectOptionalBeginPipe",e[e.ExpectPipeIdentifier=5]="ExpectPipeIdentifier",e[e.ExpectOptionalBeginPipeParameter=6]="ExpectOptionalBeginPipeParameter",e[e.ExpectPipeParameter=7]="ExpectPipeParameter",e[e.ExpectPlaceholderEnd=8]="ExpectPlaceholderEnd",e}({}),s=function(e){return e.Raw="Raw",e.BeginPlaceHolder="BeginPlaceHolder",e.Field="Field",e.BeginDefault="BeginDefault",e.LiteralString="LiteralString",e.BeginPipe="BeginPipe",e.PipeIdentifier="PipeIdentifier",e.BeginPipeParameter="BeginPipeParameter",e.EndPlaceHolder="EndPlaceHolder",e.JsonValue="JsonValue",e}({}),c=function(e){return e[e.Array=0]="Array",e[e.Object=1]="Object",e[e.String=2]="String",e[e.Others=3]="Others",e}({});function l(e){return new RegExp(`(${[].concat(e).map((e=>(0,n.escapeRegExp)(e))).join("|")})\\{`)}function o(e){var t;const r=y(e),n=null===(t=r.match(e.beginPlaceholder))||void 0===t?void 0:t[0],a=n?r.indexOf(n):-1;if(a>=0&&n&&"{"!==r.charAt(a+n.length)){const t=e.cursor+a;a>0&&e.tokens.push({type:s.Raw,value:r.substring(0,a)}),e.tokens.push({type:s.BeginPlaceHolder,loc:{start:t,end:t+n.length},value:n.substring(0,n.length-1)}),e.cursor+=a+n.length,e.status=i.ExpectField}else e.tokens.push({type:s.Raw,value:r}),e.cursor=e.raw.length}function u(e){e.cursor+=y(e).match(/^[ \r\n\t]*/)[0].length}function p(e){const[t]=y(e).match(/^[\w.*[\]\-\u{80}-\u{10FFFF}]*/u);e.tokens.push({type:s.Field,value:t}),e.cursor+=t.length,e.status=i.ExpectOptionalBeginDefault}function d(e){"="===y(e).charAt(0)?(e.tokens.push({type:s.BeginDefault}),e.cursor+=1,e.status=i.ExpectDefaultValue):e.status=i.ExpectOptionalBeginPipe}function f(e){k(e,i.ExpectOptionalBeginPipe)}function g(e){"|"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipe}),e.cursor+=1,e.status=i.ExpectPipeIdentifier):e.status=i.ExpectPlaceholderEnd}function h(e){const t=y(e).match(/^[a-zA-Z]\w*/);if(!t)throw new Error(`Expected a pipe identifier at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);const r=t[0];e.tokens.push({type:s.PipeIdentifier,value:r}),e.cursor+=r.length,e.status=i.ExpectOptionalBeginPipeParameter}function P(e){":"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipeParameter}),e.cursor+=1,e.status=i.ExpectPipeParameter):e.status=i.ExpectOptionalBeginPipe}function E(e){k(e,i.ExpectOptionalBeginPipeParameter)}function b(e){if("}"!==y(e).charAt(0))throw new Error(`Expected a placeholder end '}' at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.EndPlaceHolder,loc:{start:e.cursor,end:e.cursor+1}}),e.cursor+=1,e.status=i.Initial}const x=new Map([["false",!1],["null",null],["true",!0]]);function k(e,t){const r=y(e);if(/[0-9[{"]/.test(r.charAt(0))||/-[0-9]/.test(r.substring(0,2)))!function(e,t){const r=y(e),n=r.charAt(0),a="["===n?c.Array:"{"===n?c.Object:'"'===n?c.String:c.Others;let i=0,l=0,o=0,u=!1,p=!1,d=!1;for(;i<r.length;){const e=r.charAt(i);if(p)p=!1;else if(u)'"'===e?u=!1:"\\"===e&&(p=!0);else switch(e){case"[":o+=1;break;case"{":l+=1;break;case"]":o-=1;break;case"}":l-=1;break;case'"':u=!0}switch(i+=1,a){case c.Array:d=!o;break;case c.Object:d=!l;break;case c.String:d=!u;break;default:d=i<r.length&&/[^a-z0-9E.+-]/.test(r.charAt(i))}if(d)break}if(!d)throw new Error(`Failed to match a JSON value at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.JsonValue,value:JSON.parse(r.substring(0,i))}),e.cursor+=i,e.status=t}(e,t);else{const[r]=y(e).match(/^[\w\-\u{80}-\u{10FFFF}]*/u);x.has(r)?e.tokens.push({type:s.JsonValue,value:x.get(r)}):e.tokens.push({type:s.LiteralString,value:r}),e.cursor+=r.length,e.status=t}}function y(e){return e.raw.substring(e.cursor)}function v(e,t){return A(e,"@",t)}function m(e,t){return A(e,"$",t)}function w(e,t){return A(e,["@","$"],t)}function A(e,t,r){if(!function(e,t){return l(t).test(e)}(e,t))return e;const c=(x=r.data,function(e){let t=e.field?(0,n.get)(x,e.field):x;return void 0===t&&(t=e.defaultValue),(0,a.processPipes)(t,e.pipes)});var x;const k=function(e,t){return function(r){var i,s;const c=r.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\.)?(.+)$/);if(!c)return t.substring(r.loc.start,r.loc.end);let l,[,o,u]=c;!o&&/^[A-Z_]+$/.test(u)&&(o=u,u="*");const p={SYS:"sys",FLAGS:"flags"};switch(o){case"QUERY":case"query":l="*"===u?e.query:e.query.has(u)?e.query.get(u):void 0;break;case"QUERY_ARRAY":l=e.query.has(u)?e.query.getAll(u):void 0;break;case"EVENT":case"event":if(void 0===e.event)return t.substring(r.loc.start,r.loc.end);l="*"===u?e.event:(0,n.get)(e.event,u);break;case"APP":l="*"===u?null!==(i=e.overrideApp)&&void 0!==i?i:e.app:(0,n.get)(null!==(s=e.overrideApp)&&void 0!==s?s:e.app,u);break;case"HASH":l=e.location.hash;break;case"SYS":case"FLAGS":l="*"===u?e[p[o]]:(0,n.get)(e[p[o]],u);break;case"ANCHOR":{const t=e.location.hash?e.location.hash.substr(1):null;l="*"===u?t:(0,n.get)(t,u);break}case"CTX":{const e=t.substring(r.loc.start,r.loc.end);return console.error(`CTX is not supported in placeholder any more: "${e}"`),e}default:if(!e.match)return t.substring(r.loc.start,r.loc.end);l=e.match.params[u]}return void 0===l&&(l=r.defaultValue),(0,a.processPipes)(l,r.pipes)}}(r,e);return y=function(e,t){return function(e){const t={type:"InjectableString",elements:[]};let r;function n(t){return t===e[0].type&&(r=e.shift(),!0)}function a(t){if(r=e.shift(),Array.isArray(t)?!t.includes(r.type):t!==r.type)throw new Error(`Expected token: ${t}, received token: ${r.type}`)}for(;e.length>0;)if(n(s.Raw))t.elements.push({type:"RawString",value:r.value});else{a(s.BeginPlaceHolder);const e=r.loc.start,i=r.value;a(s.Field);const c={type:"Placeholder",symbol:i,field:r.value,defaultValue:void 0,pipes:[],loc:{start:e,end:e}};for(t.elements.push(c),n(s.BeginDefault)&&(a([s.JsonValue,s.LiteralString]),c.defaultValue=r.value);n(s.BeginPipe);){a(s.PipeIdentifier);const e={type:"PipeCall",identifier:r.value,parameters:[]};for(c.pipes.push(e);n(s.BeginPipeParameter);)a([s.JsonValue,s.LiteralString]),e.parameters.push(r.value)}a(s.EndPlaceHolder),c.loc.end=r.loc.end}return t}(function(e,t){const r={beginPlaceholder:l(t),raw:e,cursor:0,status:i.Initial,tokens:[]};for(;r.cursor<e.length;)switch(r.status){case i.Initial:o(r);break;case i.ExpectField:u(r),p(r);break;case i.ExpectOptionalBeginDefault:u(r),d(r);break;case i.ExpectDefaultValue:u(r),f(r);break;case i.ExpectOptionalBeginPipe:u(r),g(r);break;case i.ExpectPipeIdentifier:u(r),h(r);break;case i.ExpectOptionalBeginPipeParameter:u(r),P(r);break;case i.ExpectPipeParameter:u(r),E(r);break;case i.ExpectPlaceholderEnd:u(r),b(r)}if(r.status!==i.Initial)throw new Error("Expected a placeholder end '}' at the end");return r.tokens}(e,t))}(e,t).elements.map((e=>"RawString"===e.type?e.value:"$"===e.symbol?k(e):c(e))),1===y.length?y[0]:y.join("");var y}}}]);
2
- //# sourceMappingURL=4658.b0138e9e.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2277,4658],{2277:(e,t,r)=>{r.r(t),r.d(t,{inject:()=>m,transform:()=>v,transformAndInject:()=>w});var n=r(1030),a=r(9933);let i=function(e){return e[e.Initial=0]="Initial",e[e.ExpectField=1]="ExpectField",e[e.ExpectOptionalBeginDefault=2]="ExpectOptionalBeginDefault",e[e.ExpectDefaultValue=3]="ExpectDefaultValue",e[e.ExpectOptionalBeginPipe=4]="ExpectOptionalBeginPipe",e[e.ExpectPipeIdentifier=5]="ExpectPipeIdentifier",e[e.ExpectOptionalBeginPipeParameter=6]="ExpectOptionalBeginPipeParameter",e[e.ExpectPipeParameter=7]="ExpectPipeParameter",e[e.ExpectPlaceholderEnd=8]="ExpectPlaceholderEnd",e}({}),s=function(e){return e.Raw="Raw",e.BeginPlaceHolder="BeginPlaceHolder",e.Field="Field",e.BeginDefault="BeginDefault",e.LiteralString="LiteralString",e.BeginPipe="BeginPipe",e.PipeIdentifier="PipeIdentifier",e.BeginPipeParameter="BeginPipeParameter",e.EndPlaceHolder="EndPlaceHolder",e.JsonValue="JsonValue",e}({}),c=function(e){return e[e.Array=0]="Array",e[e.Object=1]="Object",e[e.String=2]="String",e[e.Others=3]="Others",e}({});function l(e){return new RegExp(`(${[].concat(e).map((e=>(0,n.escapeRegExp)(e))).join("|")})\\{`)}function o(e){var t;const r=y(e),n=null===(t=r.match(e.beginPlaceholder))||void 0===t?void 0:t[0],a=n?r.indexOf(n):-1;if(a>=0&&n&&"{"!==r.charAt(a+n.length)){const t=e.cursor+a;a>0&&e.tokens.push({type:s.Raw,value:r.substring(0,a)}),e.tokens.push({type:s.BeginPlaceHolder,loc:{start:t,end:t+n.length},value:n.substring(0,n.length-1)}),e.cursor+=a+n.length,e.status=i.ExpectField}else e.tokens.push({type:s.Raw,value:r}),e.cursor=e.raw.length}function u(e){e.cursor+=y(e).match(/^[ \r\n\t]*/)[0].length}function p(e){const[t]=y(e).match(/^[\w.*[\]\-\u{80}-\u{10FFFF}]*/u);e.tokens.push({type:s.Field,value:t}),e.cursor+=t.length,e.status=i.ExpectOptionalBeginDefault}function d(e){"="===y(e).charAt(0)?(e.tokens.push({type:s.BeginDefault}),e.cursor+=1,e.status=i.ExpectDefaultValue):e.status=i.ExpectOptionalBeginPipe}function f(e){k(e,i.ExpectOptionalBeginPipe)}function g(e){"|"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipe}),e.cursor+=1,e.status=i.ExpectPipeIdentifier):e.status=i.ExpectPlaceholderEnd}function h(e){const t=y(e).match(/^[a-zA-Z]\w*/);if(!t)throw new Error(`Expected a pipe identifier at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);const r=t[0];e.tokens.push({type:s.PipeIdentifier,value:r}),e.cursor+=r.length,e.status=i.ExpectOptionalBeginPipeParameter}function P(e){":"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipeParameter}),e.cursor+=1,e.status=i.ExpectPipeParameter):e.status=i.ExpectOptionalBeginPipe}function E(e){k(e,i.ExpectOptionalBeginPipeParameter)}function b(e){if("}"!==y(e).charAt(0))throw new Error(`Expected a placeholder end '}' at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.EndPlaceHolder,loc:{start:e.cursor,end:e.cursor+1}}),e.cursor+=1,e.status=i.Initial}const x=new Map([["false",!1],["null",null],["true",!0]]);function k(e,t){const r=y(e);if(/[0-9[{"]/.test(r.charAt(0))||/-[0-9]/.test(r.substring(0,2)))!function(e,t){const r=y(e),n=r.charAt(0),a="["===n?c.Array:"{"===n?c.Object:'"'===n?c.String:c.Others;let i=0,l=0,o=0,u=!1,p=!1,d=!1;for(;i<r.length;){const e=r.charAt(i);if(p)p=!1;else if(u)'"'===e?u=!1:"\\"===e&&(p=!0);else switch(e){case"[":o+=1;break;case"{":l+=1;break;case"]":o-=1;break;case"}":l-=1;break;case'"':u=!0}switch(i+=1,a){case c.Array:d=!o;break;case c.Object:d=!l;break;case c.String:d=!u;break;default:d=i<r.length&&/[^a-z0-9E.+-]/.test(r.charAt(i))}if(d)break}if(!d)throw new Error(`Failed to match a JSON value at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.JsonValue,value:JSON.parse(r.substring(0,i))}),e.cursor+=i,e.status=t}(e,t);else{const[r]=y(e).match(/^[\w\-\u{80}-\u{10FFFF}]*/u);x.has(r)?e.tokens.push({type:s.JsonValue,value:x.get(r)}):e.tokens.push({type:s.LiteralString,value:r}),e.cursor+=r.length,e.status=t}}function y(e){return e.raw.substring(e.cursor)}function v(e,t){return A(e,"@",t)}function m(e,t){return A(e,"$",t)}function w(e,t){return A(e,["@","$"],t)}function A(e,t,r){if(!function(e,t){return l(t).test(e)}(e,t))return e;const c=(x=r.data,function(e){let t=e.field?(0,n.get)(x,e.field):x;return void 0===t&&(t=e.defaultValue),(0,a.processPipes)(t,e.pipes)});var x;const k=function(e,t){return function(r){var i,s;const c=r.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\.)?(.+)$/);if(!c)return t.substring(r.loc.start,r.loc.end);let l,[,o,u]=c;!o&&/^[A-Z_]+$/.test(u)&&(o=u,u="*");const p={SYS:"sys",FLAGS:"flags"};switch(o){case"QUERY":case"query":l="*"===u?e.query:e.query.has(u)?e.query.get(u):void 0;break;case"QUERY_ARRAY":l=e.query.has(u)?e.query.getAll(u):void 0;break;case"EVENT":case"event":if(void 0===e.event)return t.substring(r.loc.start,r.loc.end);l="*"===u?e.event:(0,n.get)(e.event,u);break;case"APP":l="*"===u?null!==(i=e.overrideApp)&&void 0!==i?i:e.app:(0,n.get)(null!==(s=e.overrideApp)&&void 0!==s?s:e.app,u);break;case"HASH":l=e.location.hash;break;case"SYS":case"FLAGS":l="*"===u?e[p[o]]:(0,n.get)(e[p[o]],u);break;case"ANCHOR":{const t=e.location.hash?e.location.hash.substr(1):null;l="*"===u?t:(0,n.get)(t,u);break}case"CTX":{const e=t.substring(r.loc.start,r.loc.end);return console.error(`CTX is not supported in placeholder any more: "${e}"`),e}default:if(!e.match)return t.substring(r.loc.start,r.loc.end);l=e.match.params[u]}return void 0===l&&(l=r.defaultValue),(0,a.processPipes)(l,r.pipes)}}(r,e);return y=function(e,t){return function(e){const t={type:"InjectableString",elements:[]};let r;function n(t){return t===e[0].type&&(r=e.shift(),!0)}function a(t){if(r=e.shift(),Array.isArray(t)?!t.includes(r.type):t!==r.type)throw new Error(`Expected token: ${t}, received token: ${r.type}`)}for(;e.length>0;)if(n(s.Raw))t.elements.push({type:"RawString",value:r.value});else{a(s.BeginPlaceHolder);const e=r.loc.start,i=r.value;a(s.Field);const c={type:"Placeholder",symbol:i,field:r.value,defaultValue:void 0,pipes:[],loc:{start:e,end:e}};for(t.elements.push(c),n(s.BeginDefault)&&(a([s.JsonValue,s.LiteralString]),c.defaultValue=r.value);n(s.BeginPipe);){a(s.PipeIdentifier);const e={type:"PipeCall",identifier:r.value,parameters:[]};for(c.pipes.push(e);n(s.BeginPipeParameter);)a([s.JsonValue,s.LiteralString]),e.parameters.push(r.value)}a(s.EndPlaceHolder),c.loc.end=r.loc.end}return t}(function(e,t){const r={beginPlaceholder:l(t),raw:e,cursor:0,status:i.Initial,tokens:[]};for(;r.cursor<e.length;)switch(r.status){case i.Initial:o(r);break;case i.ExpectField:u(r),p(r);break;case i.ExpectOptionalBeginDefault:u(r),d(r);break;case i.ExpectDefaultValue:u(r),f(r);break;case i.ExpectOptionalBeginPipe:u(r),g(r);break;case i.ExpectPipeIdentifier:u(r),h(r);break;case i.ExpectOptionalBeginPipeParameter:u(r),P(r);break;case i.ExpectPipeParameter:u(r),E(r);break;case i.ExpectPlaceholderEnd:u(r),b(r)}if(r.status!==i.Initial)throw new Error("Expected a placeholder end '}' at the end");return r.tokens}(e,t))}(e,t).elements.map((e=>"RawString"===e.type?e.value:"$"===e.symbol?k(e):c(e))),1===y.length?y[0]:y.join("");var y}}}]);
2
+ //# sourceMappingURL=4658.714b36d2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/4658.b0138e9e.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/inject/dist/esm/interfaces.js","webpack:///../../node_modules/@next-core/inject/dist/esm/lexical.js","webpack:///../../node_modules/@next-core/inject/dist/esm/compile.js","webpack:///../../node_modules/@next-core/inject/dist/esm/syntax.js"],"sourcesContent":["export let LexicalStatus = /*#__PURE__*/function (LexicalStatus) {\n LexicalStatus[LexicalStatus[\"Initial\"] = 0] = \"Initial\";\n LexicalStatus[LexicalStatus[\"ExpectField\"] = 1] = \"ExpectField\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginDefault\"] = 2] = \"ExpectOptionalBeginDefault\";\n LexicalStatus[LexicalStatus[\"ExpectDefaultValue\"] = 3] = \"ExpectDefaultValue\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipe\"] = 4] = \"ExpectOptionalBeginPipe\";\n LexicalStatus[LexicalStatus[\"ExpectPipeIdentifier\"] = 5] = \"ExpectPipeIdentifier\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipeParameter\"] = 6] = \"ExpectOptionalBeginPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPipeParameter\"] = 7] = \"ExpectPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPlaceholderEnd\"] = 8] = \"ExpectPlaceholderEnd\";\n return LexicalStatus;\n}({});\nexport let TokenType = /*#__PURE__*/function (TokenType) {\n TokenType[\"Raw\"] = \"Raw\";\n TokenType[\"BeginPlaceHolder\"] = \"BeginPlaceHolder\";\n TokenType[\"Field\"] = \"Field\";\n TokenType[\"BeginDefault\"] = \"BeginDefault\";\n TokenType[\"LiteralString\"] = \"LiteralString\";\n TokenType[\"BeginPipe\"] = \"BeginPipe\";\n TokenType[\"PipeIdentifier\"] = \"PipeIdentifier\";\n TokenType[\"BeginPipeParameter\"] = \"BeginPipeParameter\";\n TokenType[\"EndPlaceHolder\"] = \"EndPlaceHolder\";\n TokenType[\"JsonValue\"] = \"JsonValue\";\n return TokenType;\n}({});\nexport let JsonValueType = /*#__PURE__*/function (JsonValueType) {\n JsonValueType[JsonValueType[\"Array\"] = 0] = \"Array\";\n JsonValueType[JsonValueType[\"Object\"] = 1] = \"Object\";\n JsonValueType[JsonValueType[\"String\"] = 2] = \"String\";\n JsonValueType[JsonValueType[\"Others\"] = 3] = \"Others\";\n return JsonValueType;\n}({});\n//# sourceMappingURL=interfaces.js.map","import { escapeRegExp } from \"lodash\";\nimport { LexicalStatus, TokenType, JsonValueType } from \"./interfaces.js\";\nexport function getRegExpOfPlaceholder(symbols) {\n return new RegExp(`(${[].concat(symbols).map(symbol => escapeRegExp(symbol)).join(\"|\")})\\\\{`);\n}\nexport function tokenize(raw, symbols) {\n const context = {\n beginPlaceholder: getRegExpOfPlaceholder(symbols),\n raw,\n cursor: 0,\n status: LexicalStatus.Initial,\n tokens: []\n };\n while (context.cursor < raw.length) {\n switch (context.status) {\n case LexicalStatus.Initial:\n eatOptionalRawAndOptionalPlaceholderBegin(context);\n break;\n case LexicalStatus.ExpectField:\n eatWhitespace(context);\n eatField(context);\n break;\n case LexicalStatus.ExpectOptionalBeginDefault:\n eatWhitespace(context);\n eatOptionalDefault(context);\n break;\n case LexicalStatus.ExpectDefaultValue:\n eatWhitespace(context);\n eatDefaultValue(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipe:\n eatWhitespace(context);\n eatOptionalBeginPipe(context);\n break;\n case LexicalStatus.ExpectPipeIdentifier:\n eatWhitespace(context);\n eatPipeIdentifier(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipeParameter:\n eatWhitespace(context);\n eatOptionalBeginPipeParameter(context);\n break;\n case LexicalStatus.ExpectPipeParameter:\n eatWhitespace(context);\n eatPipeParameter(context);\n break;\n case LexicalStatus.ExpectPlaceholderEnd:\n eatWhitespace(context);\n eatPlaceholderEnd(context);\n break;\n }\n }\n if (context.status !== LexicalStatus.Initial) {\n throw new Error(\"Expected a placeholder end '}' at the end\");\n }\n return context.tokens;\n}\nfunction eatOptionalRawAndOptionalPlaceholderBegin(context) {\n var _subRaw$match;\n const subRaw = getSubRaw(context);\n const matchedPlaceholder = (_subRaw$match = subRaw.match(context.beginPlaceholder)) === null || _subRaw$match === void 0 ? void 0 : _subRaw$match[0];\n const subCursor = matchedPlaceholder ? subRaw.indexOf(matchedPlaceholder) : -1;\n if (subCursor >= 0 && matchedPlaceholder && subRaw.charAt(subCursor + matchedPlaceholder.length) !== \"{\") {\n const nextCursor = context.cursor + subCursor;\n if (subCursor > 0) {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw.substring(0, subCursor)\n });\n }\n context.tokens.push({\n type: TokenType.BeginPlaceHolder,\n loc: {\n start: nextCursor,\n end: nextCursor + matchedPlaceholder.length\n },\n value: matchedPlaceholder.substring(0, matchedPlaceholder.length - 1)\n });\n context.cursor += subCursor + matchedPlaceholder.length;\n context.status = LexicalStatus.ExpectField;\n } else {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw\n });\n context.cursor = context.raw.length;\n }\n}\nfunction eatWhitespace(context) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.cursor += getSubRaw(context).match(/^[ \\r\\n\\t]*/)[0].length;\n}\nfunction eatField(context) {\n // Only allow alphanumeric, `_`, `.`, `*`, `[`, `]`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w.*[\\]\\-\\u{80}-\\u{10FFFF}]*/u);\n context.tokens.push({\n type: TokenType.Field,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginDefault;\n}\nfunction eatOptionalDefault(context) {\n if (getSubRaw(context).charAt(0) === \"=\") {\n context.tokens.push({\n type: TokenType.BeginDefault\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectDefaultValue;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatDefaultValue(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipe);\n}\nfunction eatOptionalBeginPipe(context) {\n if (getSubRaw(context).charAt(0) === \"|\") {\n context.tokens.push({\n type: TokenType.BeginPipe\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeIdentifier;\n } else {\n context.status = LexicalStatus.ExpectPlaceholderEnd;\n }\n}\nfunction eatPipeIdentifier(context) {\n const matches = getSubRaw(context).match(/^[a-zA-Z]\\w*/);\n if (!matches) {\n throw new Error(`Expected a pipe identifier at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n const value = matches[0];\n context.tokens.push({\n type: TokenType.PipeIdentifier,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginPipeParameter;\n}\nfunction eatOptionalBeginPipeParameter(context) {\n if (getSubRaw(context).charAt(0) === \":\") {\n context.tokens.push({\n type: TokenType.BeginPipeParameter\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeParameter;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatPipeParameter(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipeParameter);\n}\nfunction eatPlaceholderEnd(context) {\n if (getSubRaw(context).charAt(0) === \"}\") {\n context.tokens.push({\n type: TokenType.EndPlaceHolder,\n loc: {\n start: context.cursor,\n end: context.cursor + 1\n }\n });\n context.cursor += 1;\n context.status = LexicalStatus.Initial;\n } else {\n throw new Error(`Expected a placeholder end '}' at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n}\nconst jsonLiteralMap = new Map([[\"false\", false], [\"null\", null], [\"true\", true]]);\nfunction eatJsonValueOrLiteralString(context, nextStatus) {\n const subRaw = getSubRaw(context);\n if (/[0-9[{\"]/.test(subRaw.charAt(0)) || /-[0-9]/.test(subRaw.substring(0, 2))) {\n eatJsonValue(context, nextStatus);\n } else {\n // Accept any characters except controls and whitespace.\n // Only allow alphanumeric, `_`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w\\-\\u{80}-\\u{10FFFF}]*/u);\n if (jsonLiteralMap.has(value)) {\n context.tokens.push({\n type: TokenType.JsonValue,\n value: jsonLiteralMap.get(value)\n });\n } else {\n context.tokens.push({\n type: TokenType.LiteralString,\n value\n });\n }\n context.cursor += value.length;\n context.status = nextStatus;\n }\n}\n\n// 我们不需要非常精确地在一段字符串中匹配出一段*完整合法的* JSON value,\n// 而只需要找到一段*可能是完整合法的* JSON value 即可,解析的工作交给 `JSON.parse()`。\n// 由于 JSON 中 object/array/string 的镜像起止符特性,我们尝试去完成这些符号匹配即可。\nfunction eatJsonValue(context, nextStatus) {\n const subRaw = getSubRaw(context);\n const firstChar = subRaw.charAt(0);\n const valueType = firstChar === \"[\" ? JsonValueType.Array : firstChar === \"{\" ? JsonValueType.Object : firstChar === '\"' ? JsonValueType.String : JsonValueType.Others;\n let subCursor = 0;\n let objectBracesToMatch = 0;\n let arrayBracketsToMatch = 0;\n let stringQuotesToClose = false;\n let stringBackslashToEscape = false;\n let matched = false;\n while (subCursor < subRaw.length) {\n const char = subRaw.charAt(subCursor);\n if (stringBackslashToEscape) {\n stringBackslashToEscape = false;\n } else if (stringQuotesToClose) {\n if (char === '\"') {\n stringQuotesToClose = false;\n } else if (char === \"\\\\\") {\n stringBackslashToEscape = true;\n }\n } else {\n switch (char) {\n case \"[\":\n arrayBracketsToMatch += 1;\n break;\n case \"{\":\n objectBracesToMatch += 1;\n break;\n case \"]\":\n arrayBracketsToMatch -= 1;\n break;\n case \"}\":\n objectBracesToMatch -= 1;\n break;\n case '\"':\n stringQuotesToClose = true;\n break;\n }\n }\n subCursor += 1;\n switch (valueType) {\n case JsonValueType.Array:\n matched = !arrayBracketsToMatch;\n break;\n case JsonValueType.Object:\n matched = !objectBracesToMatch;\n break;\n case JsonValueType.String:\n matched = !stringQuotesToClose;\n break;\n default:\n // 对于其它类型,如果下一个字符不再是这些值类型可能的字符时,我们认为 JSON value 完成匹配。\n // 其它可能的值类型:number/boolean/null/undefined。\n matched = subCursor < subRaw.length && /[^a-z0-9E.+-]/.test(subRaw.charAt(subCursor));\n }\n if (matched) {\n break;\n }\n }\n if (!matched) {\n throw new Error(`Failed to match a JSON value at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n context.tokens.push({\n type: TokenType.JsonValue,\n value: JSON.parse(subRaw.substring(0, subCursor))\n });\n context.cursor += subCursor;\n context.status = nextStatus;\n}\nfunction getSubRaw(context) {\n return context.raw.substring(context.cursor);\n}\n//# sourceMappingURL=lexical.js.map","import { get } from \"lodash\";\nimport { processPipes } from \"@next-core/pipes\";\nimport { parseInjectableString } from \"./syntax.js\";\nimport { getRegExpOfPlaceholder } from \"./lexical.js\";\nexport function transform(raw, context) {\n return compile(raw, \"@\", context);\n}\nexport function inject(raw, context) {\n return compile(raw, \"$\", context);\n}\nexport function transformAndInject(raw, context) {\n return compile(raw, [\"@\", \"$\"], context);\n}\nfunction compile(raw, symbols, context) {\n // const symbols = [\"@\", \"$\"];\n if (!isInjectable(raw, symbols)) {\n return raw;\n }\n const transformNode = transformNodeFactory(context.data);\n const injectNode = injectNodeFactory(context, raw);\n const tree = parseInjectableString(raw, symbols);\n const values = tree.elements.map(node => node.type === \"RawString\" ? node.value : node.symbol === \"$\" ? injectNode(node) : transformNode(node));\n return reduceCompiledValues(values);\n}\nfunction reduceCompiledValues(values) {\n // If the whole string is a placeholder, we should keep the original value.\n if (values.length === 1) {\n return values[0];\n }\n\n // If an element is `undefined`, `null` or an empty array `[]`, it is converted to an empty string.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join#Description\n return values.join(\"\");\n}\nfunction isInjectable(raw, symbols) {\n return getRegExpOfPlaceholder(symbols).test(raw);\n}\nfunction transformNodeFactory(data) {\n return function transformNode(node) {\n // If meet `@{}`, return `data`.\n let result = node.field ? get(data, node.field) : data;\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\nfunction injectNodeFactory(context, raw) {\n return function injectNode(node) {\n var _context$overrideApp, _context$overrideApp2;\n const matches = node.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\\.)?(.+)$/);\n if (!matches) {\n // Keep the original raw partial when meet a unknown namespace.\n return raw.substring(node.loc.start, node.loc.end);\n }\n let [, namespace, subField] = matches;\n\n // Support namespace with no subfield such as `${ANCHOR}`.\n // But distinguish with match params. E.g. `${query}` is a match param.\n if (!namespace && /^[A-Z_]+$/.test(subField)) {\n namespace = subField;\n subField = \"*\";\n }\n let result;\n const SimpleContextMap = {\n SYS: \"sys\",\n FLAGS: \"flags\"\n };\n switch (namespace) {\n case \"QUERY\":\n case \"query\":\n if (subField === \"*\") {\n result = context.query;\n } else {\n result = context.query.has(subField) ? context.query.get(subField) : undefined;\n }\n break;\n case \"QUERY_ARRAY\":\n result = context.query.has(subField) ? context.query.getAll(subField) : undefined;\n break;\n case \"EVENT\":\n case \"event\":\n if (context.event === undefined) {\n // Keep the original raw partial when meet a `${EVENT}` in non-event context.\n return raw.substring(node.loc.start, node.loc.end);\n }\n result = subField === \"*\" ? context.event : get(context.event, subField);\n break;\n case \"APP\":\n result = subField === \"*\" ? (_context$overrideApp = context.overrideApp) !== null && _context$overrideApp !== void 0 ? _context$overrideApp : context.app : get((_context$overrideApp2 = context.overrideApp) !== null && _context$overrideApp2 !== void 0 ? _context$overrideApp2 : context.app, subField);\n break;\n case \"HASH\":\n result = context.location.hash;\n break;\n case \"SYS\":\n case \"FLAGS\":\n result = subField === \"*\" ? context[SimpleContextMap[namespace]] : get(context[SimpleContextMap[namespace]], subField);\n break;\n case \"ANCHOR\":\n {\n const anchor = context.location.hash ? context.location.hash.substr(1) : null;\n result = subField === \"*\" ? anchor : get(anchor, subField);\n break;\n }\n case \"CTX\":\n {\n const original = raw.substring(node.loc.start, node.loc.end);\n // eslint-disable-next-line no-console\n console.error(`CTX is not supported in placeholder any more: \"${original}\"`);\n return original;\n }\n default:\n if (context.match) {\n result = context.match.params[subField];\n } else {\n // If the context is empty, return the original raw partial.\n return raw.substring(node.loc.start, node.loc.end);\n }\n }\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\n//# sourceMappingURL=compile.js.map","import { tokenize } from \"./lexical.js\";\nimport { TokenType } from \"./interfaces.js\";\nexport function parseInjectableString(raw, symbols) {\n return parseTokens(tokenize(raw, symbols));\n}\nfunction parseTokens(tokens) {\n const tree = {\n type: \"InjectableString\",\n elements: []\n };\n let token;\n function optionalToken(type) {\n if (type === tokens[0].type) {\n token = tokens.shift();\n return true;\n }\n return false;\n }\n function acceptToken(type) {\n token = tokens.shift();\n if (Array.isArray(type) ? !type.includes(token.type) : type !== token.type) {\n throw new Error(`Expected token: ${type}, received token: ${token.type}`);\n }\n }\n while (tokens.length > 0) {\n if (optionalToken(TokenType.Raw)) {\n tree.elements.push({\n type: \"RawString\",\n value: token.value\n });\n } else {\n acceptToken(TokenType.BeginPlaceHolder);\n const start = token.loc.start;\n const symbol = token.value;\n acceptToken(TokenType.Field);\n const placeholder = {\n type: \"Placeholder\",\n symbol,\n field: token.value,\n defaultValue: undefined,\n pipes: [],\n loc: {\n start,\n end: start\n }\n };\n tree.elements.push(placeholder);\n if (optionalToken(TokenType.BeginDefault)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n placeholder.defaultValue = token.value;\n }\n while (optionalToken(TokenType.BeginPipe)) {\n acceptToken(TokenType.PipeIdentifier);\n const pipe = {\n type: \"PipeCall\",\n identifier: token.value,\n parameters: []\n };\n placeholder.pipes.push(pipe);\n while (optionalToken(TokenType.BeginPipeParameter)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n pipe.parameters.push(token.value);\n }\n }\n acceptToken(TokenType.EndPlaceHolder);\n placeholder.loc.end = token.loc.end;\n }\n }\n return tree;\n}\n//# sourceMappingURL=syntax.js.map"],"names":["LexicalStatus","TokenType","JsonValueType","getRegExpOfPlaceholder","symbols","RegExp","concat","map","symbol","escapeRegExp","join","eatOptionalRawAndOptionalPlaceholderBegin","context","_subRaw$match","subRaw","getSubRaw","matchedPlaceholder","match","beginPlaceholder","subCursor","indexOf","charAt","length","nextCursor","cursor","tokens","push","type","Raw","value","substring","BeginPlaceHolder","loc","start","end","status","ExpectField","raw","eatWhitespace","eatField","Field","ExpectOptionalBeginDefault","eatOptionalDefault","BeginDefault","ExpectDefaultValue","ExpectOptionalBeginPipe","eatDefaultValue","eatJsonValueOrLiteralString","eatOptionalBeginPipe","BeginPipe","ExpectPipeIdentifier","ExpectPlaceholderEnd","eatPipeIdentifier","matches","Error","JSON","stringify","PipeIdentifier","ExpectOptionalBeginPipeParameter","eatOptionalBeginPipeParameter","BeginPipeParameter","ExpectPipeParameter","eatPipeParameter","eatPlaceholderEnd","EndPlaceHolder","Initial","jsonLiteralMap","Map","nextStatus","test","firstChar","valueType","Array","Object","String","Others","objectBracesToMatch","arrayBracketsToMatch","stringQuotesToClose","stringBackslashToEscape","matched","char","JsonValue","parse","eatJsonValue","has","get","LiteralString","transform","compile","inject","transformAndInject","isInjectable","transformNode","data","node","result","field","undefined","defaultValue","processPipes","pipes","injectNode","_context$overrideApp","_context$overrideApp2","namespace","subField","SimpleContextMap","SYS","FLAGS","query","getAll","event","overrideApp","app","location","hash","anchor","substr","original","console","error","params","injectNodeFactory","values","tree","elements","token","optionalToken","shift","acceptToken","isArray","includes","placeholder","pipe","identifier","parameters","parseTokens","tokenize","parseInjectableString"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/4658.714b36d2.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/inject/dist/esm/interfaces.js","webpack:///../../node_modules/@next-core/inject/dist/esm/lexical.js","webpack:///../../node_modules/@next-core/inject/dist/esm/compile.js","webpack:///../../node_modules/@next-core/inject/dist/esm/syntax.js"],"sourcesContent":["export let LexicalStatus = /*#__PURE__*/function (LexicalStatus) {\n LexicalStatus[LexicalStatus[\"Initial\"] = 0] = \"Initial\";\n LexicalStatus[LexicalStatus[\"ExpectField\"] = 1] = \"ExpectField\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginDefault\"] = 2] = \"ExpectOptionalBeginDefault\";\n LexicalStatus[LexicalStatus[\"ExpectDefaultValue\"] = 3] = \"ExpectDefaultValue\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipe\"] = 4] = \"ExpectOptionalBeginPipe\";\n LexicalStatus[LexicalStatus[\"ExpectPipeIdentifier\"] = 5] = \"ExpectPipeIdentifier\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipeParameter\"] = 6] = \"ExpectOptionalBeginPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPipeParameter\"] = 7] = \"ExpectPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPlaceholderEnd\"] = 8] = \"ExpectPlaceholderEnd\";\n return LexicalStatus;\n}({});\nexport let TokenType = /*#__PURE__*/function (TokenType) {\n TokenType[\"Raw\"] = \"Raw\";\n TokenType[\"BeginPlaceHolder\"] = \"BeginPlaceHolder\";\n TokenType[\"Field\"] = \"Field\";\n TokenType[\"BeginDefault\"] = \"BeginDefault\";\n TokenType[\"LiteralString\"] = \"LiteralString\";\n TokenType[\"BeginPipe\"] = \"BeginPipe\";\n TokenType[\"PipeIdentifier\"] = \"PipeIdentifier\";\n TokenType[\"BeginPipeParameter\"] = \"BeginPipeParameter\";\n TokenType[\"EndPlaceHolder\"] = \"EndPlaceHolder\";\n TokenType[\"JsonValue\"] = \"JsonValue\";\n return TokenType;\n}({});\nexport let JsonValueType = /*#__PURE__*/function (JsonValueType) {\n JsonValueType[JsonValueType[\"Array\"] = 0] = \"Array\";\n JsonValueType[JsonValueType[\"Object\"] = 1] = \"Object\";\n JsonValueType[JsonValueType[\"String\"] = 2] = \"String\";\n JsonValueType[JsonValueType[\"Others\"] = 3] = \"Others\";\n return JsonValueType;\n}({});\n//# sourceMappingURL=interfaces.js.map","import { escapeRegExp } from \"lodash\";\nimport { LexicalStatus, TokenType, JsonValueType } from \"./interfaces.js\";\nexport function getRegExpOfPlaceholder(symbols) {\n return new RegExp(`(${[].concat(symbols).map(symbol => escapeRegExp(symbol)).join(\"|\")})\\\\{`);\n}\nexport function tokenize(raw, symbols) {\n const context = {\n beginPlaceholder: getRegExpOfPlaceholder(symbols),\n raw,\n cursor: 0,\n status: LexicalStatus.Initial,\n tokens: []\n };\n while (context.cursor < raw.length) {\n switch (context.status) {\n case LexicalStatus.Initial:\n eatOptionalRawAndOptionalPlaceholderBegin(context);\n break;\n case LexicalStatus.ExpectField:\n eatWhitespace(context);\n eatField(context);\n break;\n case LexicalStatus.ExpectOptionalBeginDefault:\n eatWhitespace(context);\n eatOptionalDefault(context);\n break;\n case LexicalStatus.ExpectDefaultValue:\n eatWhitespace(context);\n eatDefaultValue(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipe:\n eatWhitespace(context);\n eatOptionalBeginPipe(context);\n break;\n case LexicalStatus.ExpectPipeIdentifier:\n eatWhitespace(context);\n eatPipeIdentifier(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipeParameter:\n eatWhitespace(context);\n eatOptionalBeginPipeParameter(context);\n break;\n case LexicalStatus.ExpectPipeParameter:\n eatWhitespace(context);\n eatPipeParameter(context);\n break;\n case LexicalStatus.ExpectPlaceholderEnd:\n eatWhitespace(context);\n eatPlaceholderEnd(context);\n break;\n }\n }\n if (context.status !== LexicalStatus.Initial) {\n throw new Error(\"Expected a placeholder end '}' at the end\");\n }\n return context.tokens;\n}\nfunction eatOptionalRawAndOptionalPlaceholderBegin(context) {\n var _subRaw$match;\n const subRaw = getSubRaw(context);\n const matchedPlaceholder = (_subRaw$match = subRaw.match(context.beginPlaceholder)) === null || _subRaw$match === void 0 ? void 0 : _subRaw$match[0];\n const subCursor = matchedPlaceholder ? subRaw.indexOf(matchedPlaceholder) : -1;\n if (subCursor >= 0 && matchedPlaceholder && subRaw.charAt(subCursor + matchedPlaceholder.length) !== \"{\") {\n const nextCursor = context.cursor + subCursor;\n if (subCursor > 0) {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw.substring(0, subCursor)\n });\n }\n context.tokens.push({\n type: TokenType.BeginPlaceHolder,\n loc: {\n start: nextCursor,\n end: nextCursor + matchedPlaceholder.length\n },\n value: matchedPlaceholder.substring(0, matchedPlaceholder.length - 1)\n });\n context.cursor += subCursor + matchedPlaceholder.length;\n context.status = LexicalStatus.ExpectField;\n } else {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw\n });\n context.cursor = context.raw.length;\n }\n}\nfunction eatWhitespace(context) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.cursor += getSubRaw(context).match(/^[ \\r\\n\\t]*/)[0].length;\n}\nfunction eatField(context) {\n // Only allow alphanumeric, `_`, `.`, `*`, `[`, `]`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w.*[\\]\\-\\u{80}-\\u{10FFFF}]*/u);\n context.tokens.push({\n type: TokenType.Field,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginDefault;\n}\nfunction eatOptionalDefault(context) {\n if (getSubRaw(context).charAt(0) === \"=\") {\n context.tokens.push({\n type: TokenType.BeginDefault\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectDefaultValue;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatDefaultValue(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipe);\n}\nfunction eatOptionalBeginPipe(context) {\n if (getSubRaw(context).charAt(0) === \"|\") {\n context.tokens.push({\n type: TokenType.BeginPipe\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeIdentifier;\n } else {\n context.status = LexicalStatus.ExpectPlaceholderEnd;\n }\n}\nfunction eatPipeIdentifier(context) {\n const matches = getSubRaw(context).match(/^[a-zA-Z]\\w*/);\n if (!matches) {\n throw new Error(`Expected a pipe identifier at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n const value = matches[0];\n context.tokens.push({\n type: TokenType.PipeIdentifier,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginPipeParameter;\n}\nfunction eatOptionalBeginPipeParameter(context) {\n if (getSubRaw(context).charAt(0) === \":\") {\n context.tokens.push({\n type: TokenType.BeginPipeParameter\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeParameter;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatPipeParameter(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipeParameter);\n}\nfunction eatPlaceholderEnd(context) {\n if (getSubRaw(context).charAt(0) === \"}\") {\n context.tokens.push({\n type: TokenType.EndPlaceHolder,\n loc: {\n start: context.cursor,\n end: context.cursor + 1\n }\n });\n context.cursor += 1;\n context.status = LexicalStatus.Initial;\n } else {\n throw new Error(`Expected a placeholder end '}' at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n}\nconst jsonLiteralMap = new Map([[\"false\", false], [\"null\", null], [\"true\", true]]);\nfunction eatJsonValueOrLiteralString(context, nextStatus) {\n const subRaw = getSubRaw(context);\n if (/[0-9[{\"]/.test(subRaw.charAt(0)) || /-[0-9]/.test(subRaw.substring(0, 2))) {\n eatJsonValue(context, nextStatus);\n } else {\n // Accept any characters except controls and whitespace.\n // Only allow alphanumeric, `_`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w\\-\\u{80}-\\u{10FFFF}]*/u);\n if (jsonLiteralMap.has(value)) {\n context.tokens.push({\n type: TokenType.JsonValue,\n value: jsonLiteralMap.get(value)\n });\n } else {\n context.tokens.push({\n type: TokenType.LiteralString,\n value\n });\n }\n context.cursor += value.length;\n context.status = nextStatus;\n }\n}\n\n// 我们不需要非常精确地在一段字符串中匹配出一段*完整合法的* JSON value,\n// 而只需要找到一段*可能是完整合法的* JSON value 即可,解析的工作交给 `JSON.parse()`。\n// 由于 JSON 中 object/array/string 的镜像起止符特性,我们尝试去完成这些符号匹配即可。\nfunction eatJsonValue(context, nextStatus) {\n const subRaw = getSubRaw(context);\n const firstChar = subRaw.charAt(0);\n const valueType = firstChar === \"[\" ? JsonValueType.Array : firstChar === \"{\" ? JsonValueType.Object : firstChar === '\"' ? JsonValueType.String : JsonValueType.Others;\n let subCursor = 0;\n let objectBracesToMatch = 0;\n let arrayBracketsToMatch = 0;\n let stringQuotesToClose = false;\n let stringBackslashToEscape = false;\n let matched = false;\n while (subCursor < subRaw.length) {\n const char = subRaw.charAt(subCursor);\n if (stringBackslashToEscape) {\n stringBackslashToEscape = false;\n } else if (stringQuotesToClose) {\n if (char === '\"') {\n stringQuotesToClose = false;\n } else if (char === \"\\\\\") {\n stringBackslashToEscape = true;\n }\n } else {\n switch (char) {\n case \"[\":\n arrayBracketsToMatch += 1;\n break;\n case \"{\":\n objectBracesToMatch += 1;\n break;\n case \"]\":\n arrayBracketsToMatch -= 1;\n break;\n case \"}\":\n objectBracesToMatch -= 1;\n break;\n case '\"':\n stringQuotesToClose = true;\n break;\n }\n }\n subCursor += 1;\n switch (valueType) {\n case JsonValueType.Array:\n matched = !arrayBracketsToMatch;\n break;\n case JsonValueType.Object:\n matched = !objectBracesToMatch;\n break;\n case JsonValueType.String:\n matched = !stringQuotesToClose;\n break;\n default:\n // 对于其它类型,如果下一个字符不再是这些值类型可能的字符时,我们认为 JSON value 完成匹配。\n // 其它可能的值类型:number/boolean/null/undefined。\n matched = subCursor < subRaw.length && /[^a-z0-9E.+-]/.test(subRaw.charAt(subCursor));\n }\n if (matched) {\n break;\n }\n }\n if (!matched) {\n throw new Error(`Failed to match a JSON value at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n context.tokens.push({\n type: TokenType.JsonValue,\n value: JSON.parse(subRaw.substring(0, subCursor))\n });\n context.cursor += subCursor;\n context.status = nextStatus;\n}\nfunction getSubRaw(context) {\n return context.raw.substring(context.cursor);\n}\n//# sourceMappingURL=lexical.js.map","import { get } from \"lodash\";\nimport { processPipes } from \"@next-core/pipes\";\nimport { parseInjectableString } from \"./syntax.js\";\nimport { getRegExpOfPlaceholder } from \"./lexical.js\";\nexport function transform(raw, context) {\n return compile(raw, \"@\", context);\n}\nexport function inject(raw, context) {\n return compile(raw, \"$\", context);\n}\nexport function transformAndInject(raw, context) {\n return compile(raw, [\"@\", \"$\"], context);\n}\nfunction compile(raw, symbols, context) {\n // const symbols = [\"@\", \"$\"];\n if (!isInjectable(raw, symbols)) {\n return raw;\n }\n const transformNode = transformNodeFactory(context.data);\n const injectNode = injectNodeFactory(context, raw);\n const tree = parseInjectableString(raw, symbols);\n const values = tree.elements.map(node => node.type === \"RawString\" ? node.value : node.symbol === \"$\" ? injectNode(node) : transformNode(node));\n return reduceCompiledValues(values);\n}\nfunction reduceCompiledValues(values) {\n // If the whole string is a placeholder, we should keep the original value.\n if (values.length === 1) {\n return values[0];\n }\n\n // If an element is `undefined`, `null` or an empty array `[]`, it is converted to an empty string.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join#Description\n return values.join(\"\");\n}\nfunction isInjectable(raw, symbols) {\n return getRegExpOfPlaceholder(symbols).test(raw);\n}\nfunction transformNodeFactory(data) {\n return function transformNode(node) {\n // If meet `@{}`, return `data`.\n let result = node.field ? get(data, node.field) : data;\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\nfunction injectNodeFactory(context, raw) {\n return function injectNode(node) {\n var _context$overrideApp, _context$overrideApp2;\n const matches = node.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\\.)?(.+)$/);\n if (!matches) {\n // Keep the original raw partial when meet a unknown namespace.\n return raw.substring(node.loc.start, node.loc.end);\n }\n let [, namespace, subField] = matches;\n\n // Support namespace with no subfield such as `${ANCHOR}`.\n // But distinguish with match params. E.g. `${query}` is a match param.\n if (!namespace && /^[A-Z_]+$/.test(subField)) {\n namespace = subField;\n subField = \"*\";\n }\n let result;\n const SimpleContextMap = {\n SYS: \"sys\",\n FLAGS: \"flags\"\n };\n switch (namespace) {\n case \"QUERY\":\n case \"query\":\n if (subField === \"*\") {\n result = context.query;\n } else {\n result = context.query.has(subField) ? context.query.get(subField) : undefined;\n }\n break;\n case \"QUERY_ARRAY\":\n result = context.query.has(subField) ? context.query.getAll(subField) : undefined;\n break;\n case \"EVENT\":\n case \"event\":\n if (context.event === undefined) {\n // Keep the original raw partial when meet a `${EVENT}` in non-event context.\n return raw.substring(node.loc.start, node.loc.end);\n }\n result = subField === \"*\" ? context.event : get(context.event, subField);\n break;\n case \"APP\":\n result = subField === \"*\" ? (_context$overrideApp = context.overrideApp) !== null && _context$overrideApp !== void 0 ? _context$overrideApp : context.app : get((_context$overrideApp2 = context.overrideApp) !== null && _context$overrideApp2 !== void 0 ? _context$overrideApp2 : context.app, subField);\n break;\n case \"HASH\":\n result = context.location.hash;\n break;\n case \"SYS\":\n case \"FLAGS\":\n result = subField === \"*\" ? context[SimpleContextMap[namespace]] : get(context[SimpleContextMap[namespace]], subField);\n break;\n case \"ANCHOR\":\n {\n const anchor = context.location.hash ? context.location.hash.substr(1) : null;\n result = subField === \"*\" ? anchor : get(anchor, subField);\n break;\n }\n case \"CTX\":\n {\n const original = raw.substring(node.loc.start, node.loc.end);\n // eslint-disable-next-line no-console\n console.error(`CTX is not supported in placeholder any more: \"${original}\"`);\n return original;\n }\n default:\n if (context.match) {\n result = context.match.params[subField];\n } else {\n // If the context is empty, return the original raw partial.\n return raw.substring(node.loc.start, node.loc.end);\n }\n }\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\n//# sourceMappingURL=compile.js.map","import { tokenize } from \"./lexical.js\";\nimport { TokenType } from \"./interfaces.js\";\nexport function parseInjectableString(raw, symbols) {\n return parseTokens(tokenize(raw, symbols));\n}\nfunction parseTokens(tokens) {\n const tree = {\n type: \"InjectableString\",\n elements: []\n };\n let token;\n function optionalToken(type) {\n if (type === tokens[0].type) {\n token = tokens.shift();\n return true;\n }\n return false;\n }\n function acceptToken(type) {\n token = tokens.shift();\n if (Array.isArray(type) ? !type.includes(token.type) : type !== token.type) {\n throw new Error(`Expected token: ${type}, received token: ${token.type}`);\n }\n }\n while (tokens.length > 0) {\n if (optionalToken(TokenType.Raw)) {\n tree.elements.push({\n type: \"RawString\",\n value: token.value\n });\n } else {\n acceptToken(TokenType.BeginPlaceHolder);\n const start = token.loc.start;\n const symbol = token.value;\n acceptToken(TokenType.Field);\n const placeholder = {\n type: \"Placeholder\",\n symbol,\n field: token.value,\n defaultValue: undefined,\n pipes: [],\n loc: {\n start,\n end: start\n }\n };\n tree.elements.push(placeholder);\n if (optionalToken(TokenType.BeginDefault)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n placeholder.defaultValue = token.value;\n }\n while (optionalToken(TokenType.BeginPipe)) {\n acceptToken(TokenType.PipeIdentifier);\n const pipe = {\n type: \"PipeCall\",\n identifier: token.value,\n parameters: []\n };\n placeholder.pipes.push(pipe);\n while (optionalToken(TokenType.BeginPipeParameter)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n pipe.parameters.push(token.value);\n }\n }\n acceptToken(TokenType.EndPlaceHolder);\n placeholder.loc.end = token.loc.end;\n }\n }\n return tree;\n}\n//# sourceMappingURL=syntax.js.map"],"names":["LexicalStatus","TokenType","JsonValueType","getRegExpOfPlaceholder","symbols","RegExp","concat","map","symbol","escapeRegExp","join","eatOptionalRawAndOptionalPlaceholderBegin","context","_subRaw$match","subRaw","getSubRaw","matchedPlaceholder","match","beginPlaceholder","subCursor","indexOf","charAt","length","nextCursor","cursor","tokens","push","type","Raw","value","substring","BeginPlaceHolder","loc","start","end","status","ExpectField","raw","eatWhitespace","eatField","Field","ExpectOptionalBeginDefault","eatOptionalDefault","BeginDefault","ExpectDefaultValue","ExpectOptionalBeginPipe","eatDefaultValue","eatJsonValueOrLiteralString","eatOptionalBeginPipe","BeginPipe","ExpectPipeIdentifier","ExpectPlaceholderEnd","eatPipeIdentifier","matches","Error","JSON","stringify","PipeIdentifier","ExpectOptionalBeginPipeParameter","eatOptionalBeginPipeParameter","BeginPipeParameter","ExpectPipeParameter","eatPipeParameter","eatPlaceholderEnd","EndPlaceHolder","Initial","jsonLiteralMap","Map","nextStatus","test","firstChar","valueType","Array","Object","String","Others","objectBracesToMatch","arrayBracketsToMatch","stringQuotesToClose","stringBackslashToEscape","matched","char","JsonValue","parse","eatJsonValue","has","get","LiteralString","transform","compile","inject","transformAndInject","isInjectable","transformNode","data","node","result","field","undefined","defaultValue","processPipes","pipes","injectNode","_context$overrideApp","_context$overrideApp2","namespace","subField","SimpleContextMap","SYS","FLAGS","query","getAll","event","overrideApp","app","location","hash","anchor","substr","original","console","error","params","injectNodeFactory","values","tree","elements","token","optionalToken","shift","acceptToken","isArray","includes","placeholder","pipe","identifier","parameters","parseTokens","tokenize","parseInjectableString"],"sourceRoot":""}