@flowgram.ai/form-materials 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +129 -76
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +12 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +131 -76
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/components/code-editor/theme/dark.ts +49 -30
- package/src/components/code-editor/theme/light.ts +56 -32
- package/src/components/json-editor-with-variables/extensions/variable-tag.tsx +4 -3
- package/src/components/prompt-editor-with-variables/extensions/variable-tag.tsx +10 -18
- package/src/shared/index.ts +1 -0
- package/src/shared/polyfill-create-root/index.tsx +33 -0
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/variable-selector/index.tsx","../../src/shared/format-legacy-refs/index.ts","../../src/shared/inject-material/index.tsx","../../src/shared/flow-value/utils.ts","../../src/shared/flow-value/schema.ts","../../src/components/variable-selector/use-variable-tree.tsx","../../src/plugins/json-schema-preset/index.tsx","../../src/plugins/json-schema-preset/type-definition/index.tsx","../../src/plugins/json-schema-preset/type-definition/string.tsx","../../src/plugins/json-schema-preset/type-definition/object.tsx","../../src/components/code-editor-mini/index.tsx","../../src/components/code-editor/index.tsx","../../src/components/code-editor/utils.ts","../../src/components/code-editor/language-features.ts","../../src/components/code-editor/theme/index.ts","../../src/components/code-editor/theme/light.ts","../../src/components/code-editor/theme/dark.ts","../../src/plugins/json-schema-preset/type-definition/number.tsx","../../src/plugins/json-schema-preset/type-definition/integer.tsx","../../src/plugins/json-schema-preset/type-definition/boolean.tsx","../../src/plugins/json-schema-preset/type-definition/array.tsx","../../src/plugins/json-schema-preset/create-type-preset-plugin.tsx","../../src/plugins/disable-declaration-plugin/create-disable-declaration-plugin.ts","../../src/components/variable-selector/styles.tsx","../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/index.tsx","../../src/components/blur-input/index.tsx","../../src/components/json-schema-editor/styles.tsx","../../src/components/json-schema-editor/hooks.tsx","../../src/components/json-schema-editor/default-value.tsx","../../src/components/constant-input/index.tsx","../../src/components/batch-variable-selector/index.tsx","../../src/components/dynamic-value-input/index.tsx","../../src/components/dynamic-value-input/styles.tsx","../../src/components/dynamic-value-input/hooks.ts","../../src/components/condition-row/index.tsx","../../src/components/condition-row/styles.tsx","../../src/components/condition-row/hooks/useRule.ts","../../src/components/condition-row/constants.ts","../../src/components/condition-row/hooks/useOp.tsx","../../src/components/batch-outputs/index.tsx","../../src/hooks/use-object-list/index.tsx","../../src/components/batch-outputs/styles.tsx","../../src/components/prompt-editor/index.tsx","../../src/components/prompt-editor/styles.tsx","../../src/components/prompt-editor/extensions/markdown.tsx","../../src/components/prompt-editor/extensions/language-support.tsx","../../src/components/prompt-editor/extensions/jinja.tsx","../../src/components/prompt-editor-with-variables/index.tsx","../../src/components/prompt-editor-with-variables/extensions/variable-tree.tsx","../../src/components/prompt-editor-with-variables/extensions/variable-tag.tsx","../../src/components/prompt-editor-with-variables/styles.tsx","../../src/components/prompt-editor-with-inputs/index.tsx","../../src/components/prompt-editor-with-inputs/extensions/inputs-tree.tsx","../../src/components/prompt-editor-with-inputs/inputs-picker.tsx","../../src/components/json-editor-with-variables/index.tsx","../../src/components/json-editor-with-variables/extensions/variable-tree.tsx","../../src/components/json-editor-with-variables/extensions/variable-tag.tsx","../../src/components/json-editor-with-variables/styles.tsx","../../src/components/inputs-values/index.tsx","../../src/components/inputs-values/styles.tsx","../../src/components/display-schema-tree/index.tsx","../../src/components/display-schema-tree/styles.tsx","../../src/components/display-outputs/index.tsx","../../src/components/display-schema-tag/index.tsx","../../src/components/display-schema-tag/styles.ts","../../src/components/display-outputs/styles.ts","../../src/components/display-flow-value/index.tsx","../../src/components/display-inputs-values/index.tsx","../../src/components/display-inputs-values/styles.ts","../../src/components/assign-rows/index.tsx","../../src/components/assign-row/index.tsx","../../src/components/assign-row/components/blur-input.tsx","../../src/components/inputs-values-tree/index.tsx","../../src/components/inputs-values-tree/styles.tsx","../../src/components/inputs-values-tree/row.tsx","../../src/components/inputs-values-tree/hooks/use-child-list.tsx","../../src/effects/provide-batch-input/index.ts","../../src/effects/auto-rename-ref/index.ts","../../src/effects/provide-json-schema-outputs/index.ts","../../src/effects/sync-variable-title/index.ts","../../src/effects/validate-when-variable-sync/index.ts","../../src/effects/listen-ref-value-change/index.ts","../../src/effects/listen-ref-schema-change/index.ts","../../src/form-plugins/batch-outputs-plugin/index.ts","../../src/form-plugins/infer-inputs-plugin/index.ts","../../src/form-plugins/infer-assign-plugin/index.ts","../../src/validate/validate-flow-value/index.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { TriggerRenderProps } from '@douyinfe/semi-ui/lib/es/treeSelect';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked, IconIssueStroked } from '@douyinfe/semi-icons';\n\nimport { createInjectMaterial } from '@/shared';\n\nimport { useVariableTree } from './use-variable-tree';\nimport { UIPopoverContent, UIRootTitle, UITag, UITreeSelect, UIVarName } from './styles';\n\nexport interface VariableSelectorProps {\n value?: string[];\n config?: {\n placeholder?: string;\n notFoundContent?: string;\n };\n onChange: (value?: string[]) => void;\n includeSchema?: IJsonSchema | IJsonSchema[];\n excludeSchema?: IJsonSchema | IJsonSchema[];\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n triggerRender?: (props: TriggerRenderProps) => React.ReactNode;\n}\n\nexport { useVariableTree };\n\nexport const VariableSelector = ({\n value,\n config = {},\n onChange,\n style,\n readonly = false,\n includeSchema,\n excludeSchema,\n hasError,\n triggerRender,\n}: VariableSelectorProps) => {\n const treeData = useVariableTree({ includeSchema, excludeSchema });\n\n const treeValue = useMemo(() => {\n if (typeof value === 'string') {\n console.warn(\n 'The Value of VariableSelector is a string, it should be an ARRAY. \\n',\n 'Please check the value of VariableSelector \\n'\n );\n return value;\n }\n return value?.join('.');\n }, [value]);\n\n const renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n return (\n <>\n <UITreeSelect\n dropdownMatchSelectWidth={false}\n disabled={readonly}\n treeData={treeData}\n size=\"small\"\n value={treeValue}\n clearIcon={null}\n $error={hasError}\n style={style}\n validateStatus={hasError ? 'error' : undefined}\n onChange={(_, _config) => {\n onChange((_config as TreeNodeData).keyPath as string[]);\n }}\n renderSelectedItem={(_option: TreeNodeData) => {\n if (!_option?.keyPath) {\n return (\n <UITag\n prefixIcon={<IconIssueStroked />}\n color=\"amber\"\n closable={!readonly}\n onClose={() => onChange(undefined)}\n >\n {config?.notFoundContent ?? 'Undefined'}\n </UITag>\n );\n }\n\n const rootIcon = renderIcon(_option.rootMeta?.icon || _option?.icon);\n\n const rootTitle = (\n <UIRootTitle>\n {_option.rootMeta?.title\n ? `${_option.rootMeta?.title} ${_option.isRoot ? '' : '-'} `\n : null}\n </UIRootTitle>\n );\n\n return (\n <div>\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{_option.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag\n prefixIcon={rootIcon}\n closable={!readonly}\n onClose={() => onChange(undefined)}\n >\n {rootTitle}\n {!_option.isRoot && <UIVarName $inSelector>{_option.label}</UIVarName>}\n </UITag>\n </Popover>\n </div>\n );\n }}\n showClear={false}\n arrowIcon={<IconChevronDownStroked size=\"small\" />}\n triggerRender={triggerRender}\n placeholder={config?.placeholder ?? I18n.t('Select Variable')}\n />\n </>\n );\n};\n\nVariableSelector.renderKey = 'variable-selector-render-key';\nexport const InjectVariableSelector = createInjectMaterial(VariableSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isObject } from 'lodash';\n\ninterface LegacyFlowRefValueSchema {\n type: 'ref';\n content: string;\n}\n\ninterface NewFlowRefValueSchema {\n type: 'ref';\n content: string[];\n}\n\n/**\n * In flowgram 0.2.0, for introducing Loop variable functionality,\n * the FlowRefValueSchema type definition is updated:\n *\n * interface LegacyFlowRefValueSchema {\n * type: 'ref';\n * content: string;\n * }\n *\n * interface NewFlowRefValueSchema {\n * type: 'ref';\n * content: string[];\n * }\n *\n *\n * For making sure backend json will not be changed, we provide format legacy ref utils for updating the formData\n *\n * How to use:\n *\n * 1. Call formatLegacyRefOnSubmit on the formData before submitting\n * 2. Call formatLegacyRefOnInit on the formData after submitting\n *\n * Example:\n * import { formatLegacyRefOnSubmit, formatLegacyRefOnInit } from '@flowgram.ai/form-materials';\n * formMeta: {\n * formatOnSubmit: (data) => formatLegacyRefOnSubmit(data),\n * formatOnInit: (data) => formatLegacyRefOnInit(data),\n * }\n */\nexport function formatLegacyRefOnSubmit(value: any): any {\n if (isObject(value)) {\n if (isLegacyFlowRefValueSchema(value)) {\n return formatLegacyRefToNewRef(value);\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, value]: [string, any]) => [\n key,\n formatLegacyRefOnSubmit(value),\n ])\n );\n }\n\n if (Array.isArray(value)) {\n return value.map(formatLegacyRefOnSubmit);\n }\n\n return value;\n}\n\n/**\n * In flowgram 0.2.0, for introducing Loop variable functionality,\n * the FlowRefValueSchema type definition is updated:\n *\n * interface LegacyFlowRefValueSchema {\n * type: 'ref';\n * content: string;\n * }\n *\n * interface NewFlowRefValueSchema {\n * type: 'ref';\n * content: string[];\n * }\n *\n *\n * For making sure backend json will not be changed, we provide format legacy ref utils for updating the formData\n *\n * How to use:\n *\n * 1. Call formatLegacyRefOnSubmit on the formData before submitting\n * 2. Call formatLegacyRefOnInit on the formData after submitting\n *\n * Example:\n * import { formatLegacyRefOnSubmit, formatLegacyRefOnInit } from '@flowgram.ai/form-materials';\n *\n * formMeta: {\n * formatOnSubmit: (data) => formatLegacyRefOnSubmit(data),\n * formatOnInit: (data) => formatLegacyRefOnInit(data),\n * }\n */\nexport function formatLegacyRefOnInit(value: any): any {\n if (isObject(value)) {\n if (isNewFlowRefValueSchema(value)) {\n return formatNewRefToLegacyRef(value);\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, value]: [string, any]) => [\n key,\n formatLegacyRefOnInit(value),\n ])\n );\n }\n\n if (Array.isArray(value)) {\n return value.map(formatLegacyRefOnInit);\n }\n\n return value;\n}\n\nexport function isLegacyFlowRefValueSchema(value: any): value is LegacyFlowRefValueSchema {\n return (\n isObject(value) &&\n Object.keys(value).length === 2 &&\n (value as any).type === 'ref' &&\n typeof (value as any).content === 'string'\n );\n}\n\nexport function isNewFlowRefValueSchema(value: any): value is NewFlowRefValueSchema {\n return (\n isObject(value) &&\n Object.keys(value).length === 2 &&\n (value as any).type === 'ref' &&\n Array.isArray((value as any).content)\n );\n}\n\nexport function formatLegacyRefToNewRef(value: LegacyFlowRefValueSchema) {\n const keyPath = value.content.split('.');\n\n if (keyPath[1] === 'outputs') {\n return {\n type: 'ref',\n content: [`${keyPath[0]}.${keyPath[1]}`, ...(keyPath.length > 2 ? keyPath.slice(2) : [])],\n };\n }\n\n return {\n type: 'ref',\n content: keyPath,\n };\n}\n\nexport function formatNewRefToLegacyRef(value: NewFlowRefValueSchema) {\n return {\n type: 'ref',\n content: value.content.join('.'),\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n FlowRendererComponentType,\n FlowRendererRegistry,\n usePlaygroundContainer,\n} from '@flowgram.ai/editor';\n\n/**\n * Creates a material component wrapper with dependency injection support\n *\n * This Higher-Order Component (HOC) implements a dynamic component replacement mechanism\n * for material components. It automatically checks if a custom renderer is registered\n * in the editor context, using the injected component if available, otherwise\n * falling back to the default component.\n *\n * @example\n * ```tsx\n * // 1.Create an injectable material component\n * const InjectVariableSelector = createInjectMaterial(VariableSelector)\n *\n * // 2. Register custom components in editor\n * // Configure in use-editor-props.tsx:\n * const editorProps = {\n * materials: {\n * components: {\n * [VariableSelector.renderKey]: YourCustomVariableSelector\n * }\n * }\n * }\n * ```\n *\n * @description\n * Data flow explanation:\n * - Register components to FlowRendererRegistry in use-editor-props\n * - InjectMaterial reads renderers from FlowRendererRegistry\n * - If registered renderer exists and type is REACT, use injected component\n * - If not exists or type mismatch, fallback to default component\n *\n * @param Component - Default React component\n * @param params - Optional parameters\n * @param params.renderKey - Custom render key name, highest priority\n * @returns Wrapper component with dependency injection support\n */\nexport function createInjectMaterial<Props>(\n Component: React.FC<Props> & { renderKey?: string },\n params?: {\n renderKey?: string;\n }\n): React.FC<Props> {\n const InjectComponent: React.FC<Props> = (props) => {\n const container = usePlaygroundContainer();\n\n // Check if renderer registry is bound in container\n if (!container?.isBound(FlowRendererRegistry)) {\n // If no registry, use default component directly\n return React.createElement(Component as (props?: any) => any, { ...props });\n }\n\n // Get renderer registry instance\n const rendererRegistry = container.get(FlowRendererRegistry);\n\n // Determine render key: prioritize param specified, then component renderKey, finally component name\n const renderKey = params?.renderKey || Component.renderKey || Component.name || '';\n\n // Get corresponding renderer from registry\n const renderer = rendererRegistry.tryToGetRendererComponent(renderKey);\n\n // Check if renderer exists and type is React component\n if (renderer?.type !== FlowRendererComponentType.REACT) {\n // If no suitable renderer found, fallback to default component\n return React.createElement(Component as (props?: any) => any, { ...props });\n }\n\n // Render using injected React component\n return React.createElement(renderer.renderer, {\n ...props,\n });\n };\n\n return InjectComponent;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isArray, isObject, isPlainObject, uniq } from 'lodash';\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { Scope } from '@flowgram.ai/editor';\n\nimport {\n IFlowConstantValue,\n IFlowRefValue,\n IFlowExpressionValue,\n IFlowTemplateValue,\n IFlowValue,\n IFlowConstantRefValue,\n FlowValueType,\n} from '@/typings';\n\nimport { constantSchema, refSchema, expressionSchema, templateSchema } from './schema';\n\nexport namespace FlowValueUtils {\n /**\n * Check if the value is a constant type\n */\n export function isConstant(value: any): value is IFlowConstantValue {\n return constantSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is a reference type\n */\n export function isRef(value: any): value is IFlowRefValue {\n return refSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is an expression type\n */\n export function isExpression(value: any): value is IFlowExpressionValue {\n return expressionSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is a template type\n */\n export function isTemplate(value: any): value is IFlowTemplateValue {\n return templateSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is either a constant or reference type\n */\n export function isConstantOrRef(value: any): value is IFlowConstantRefValue {\n return isConstant(value) || isRef(value);\n }\n\n /**\n * Check if the value is a valid flow value type\n */\n export function isFlowValue(value: any): value is IFlowValue {\n return isConstant(value) || isRef(value) || isExpression(value) || isTemplate(value);\n }\n\n /**\n * Traverse all flow values in the given value\n * @param value The value to traverse\n * @param options The options to traverse\n * @returns A generator of flow values\n */\n export function* traverse(\n value: any,\n options: {\n includeTypes?: FlowValueType[];\n path?: string;\n }\n ): Generator<{ value: IFlowValue; path: string }> {\n const { includeTypes = ['ref', 'template'], path = '' } = options;\n\n if (isPlainObject(value)) {\n if (isRef(value) && includeTypes.includes('ref')) {\n yield { value, path };\n return;\n }\n\n if (isTemplate(value) && includeTypes.includes('template')) {\n yield { value, path };\n return;\n }\n\n if (isExpression(value) && includeTypes.includes('expression')) {\n yield { value, path };\n return;\n }\n\n if (isConstant(value) && includeTypes.includes('constant')) {\n yield { value, path };\n return;\n }\n\n for (const [_key, _value] of Object.entries(value)) {\n yield* traverse(_value, { ...options, path: `${path}.${_key}` });\n }\n return;\n }\n\n if (isArray(value)) {\n for (const [_idx, _value] of value.entries()) {\n yield* traverse(_value, { ...options, path: `${path}[${_idx}]` });\n }\n return;\n }\n\n return;\n }\n\n /**\n * Get all key paths in the template value\n * @param value The template value\n * @returns A list of key paths\n */\n export function getTemplateKeyPaths(value: IFlowTemplateValue) {\n // find all keyPath wrapped in {{}}\n const keyPathReg = /\\{\\{([^\\}\\{]+)\\}\\}/g;\n return uniq(value.content?.match(keyPathReg) || []).map((_keyPath) =>\n _keyPath.slice(2, -2).split('.')\n );\n }\n\n /**\n * Infer the schema of the constant value\n * @param value\n * @returns\n */\n export function inferConstantJsonSchema(value: IFlowConstantValue): IJsonSchema | undefined {\n if (value?.schema) {\n return value.schema;\n }\n\n if (typeof value.content === 'string') {\n return {\n type: 'string',\n };\n }\n\n if (typeof value.content === 'number') {\n return {\n type: 'number',\n };\n }\n\n if (typeof value.content === 'boolean') {\n return {\n type: 'boolean',\n };\n }\n\n if (isObject(value.content)) {\n return {\n type: 'object',\n };\n }\n return undefined;\n }\n\n /**\n * Infer the schema of the flow value\n * @param values The flow value or object contains flow value\n * @param scope\n * @returns\n */\n export function inferJsonSchema(values: any, scope: Scope): IJsonSchema | undefined {\n if (isPlainObject(values)) {\n if (isConstant(values)) {\n return inferConstantJsonSchema(values);\n }\n\n if (isRef(values)) {\n const variable = scope.available.getByKeyPath(values?.content);\n const schema = variable?.type ? JsonSchemaUtils.astToSchema(variable?.type) : undefined;\n\n return schema;\n }\n\n if (isTemplate(values)) {\n return { type: 'string' };\n }\n\n return {\n type: 'object',\n properties: Object.keys(values).reduce((acc, key) => {\n const schema = inferJsonSchema((values as any)[key], scope);\n if (schema) {\n acc[key] = schema;\n }\n return acc;\n }, {} as Record<string, IJsonSchema>),\n };\n }\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport z from 'zod';\n\n// Shared extra schema for flow value types\nexport const extraSchema = z\n .object({\n index: z.number().optional(),\n })\n .optional();\n\nexport const constantSchema = z.object({\n type: z.literal('constant'),\n content: z.any().optional(),\n schema: z.any().optional(),\n extra: extraSchema,\n});\n\nexport const refSchema = z.object({\n type: z.literal('ref'),\n content: z.array(z.string()).optional(),\n extra: extraSchema,\n});\n\nexport const expressionSchema = z.object({\n type: z.literal('expression'),\n content: z.string().optional(),\n extra: extraSchema,\n});\n\nexport const templateSchema = z.object({\n type: z.literal('template'),\n content: z.string().optional(),\n extra: extraSchema,\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useCallback } from 'react';\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { ASTMatch, BaseVariableField, useAvailableVariables } from '@flowgram.ai/editor';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Icon } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\ntype VariableField = BaseVariableField<{\n icon?: string | JSX.Element;\n title?: string;\n disabled?: boolean;\n}>;\n\nexport function useVariableTree(params: {\n includeSchema?: IJsonSchema | IJsonSchema[];\n excludeSchema?: IJsonSchema | IJsonSchema[];\n customSkip?: (variable: VariableField) => boolean;\n}): TreeNodeData[] {\n const { includeSchema, excludeSchema, customSkip } = params;\n\n const typeManager = useTypeManager();\n const variables = useAvailableVariables();\n\n const getVariableTypeIcon = useCallback((variable: VariableField) => {\n if (variable.meta?.icon) {\n if (typeof variable.meta.icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={variable.meta.icon} />;\n }\n\n return variable.meta.icon;\n }\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldownObject: false });\n\n return <Icon size=\"small\" svg={typeManager.getDisplayIcon(schema || {})} />;\n }, []);\n\n const renderVariable = (\n variable: VariableField,\n parentFields: VariableField[] = []\n ): TreeNodeData | null => {\n let type = variable?.type;\n\n if (!type) {\n return null;\n }\n\n let children: TreeNodeData[] | undefined;\n\n if (ASTMatch.isObject(type)) {\n children = (type.properties || [])\n .map((_property) => renderVariable(_property as VariableField, [...parentFields, variable]))\n .filter(Boolean) as TreeNodeData[];\n }\n\n const keyPath = [...parentFields.map((_field) => _field.key), variable.key];\n const key = keyPath.join('.');\n\n const isSchemaInclude = includeSchema\n ? JsonSchemaUtils.isASTMatchSchema(type, includeSchema)\n : true;\n const isSchemaExclude = excludeSchema\n ? JsonSchemaUtils.isASTMatchSchema(type, excludeSchema)\n : false;\n const isCustomSkip = customSkip ? customSkip(variable) : false;\n\n // disabled in meta when created\n const isMetaDisabled = variable.meta?.disabled;\n\n const isSchemaMatch = isSchemaInclude && !isSchemaExclude && !isCustomSkip && !isMetaDisabled;\n\n // If not match, and no children, return null\n if (!isSchemaMatch && !children?.length) {\n return null;\n }\n\n return {\n key: key,\n label: variable.meta?.title || variable.key,\n value: key,\n keyPath,\n icon: getVariableTypeIcon(variable),\n children,\n disabled: !isSchemaMatch,\n rootMeta: parentFields[0]?.meta || variable.meta,\n isRoot: !parentFields?.length,\n };\n };\n\n return [...variables.slice(0).reverse()]\n .map((_variable) => renderVariable(_variable as VariableField))\n .filter(Boolean) as TreeNodeData[];\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\nimport React from 'react';\n\nimport {\n type IJsonSchema,\n JsonSchemaUtils,\n useTypeManager as useOriginTypeManager,\n TypePresetProvider as OriginTypePresetProvider,\n JsonSchemaTypeManager,\n type JsonSchemaBasicType,\n} from '@flowgram.ai/json-schema';\n\nimport { jsonSchemaTypePreset } from './type-definition';\nimport { type JsonSchemaTypeRegistry, type ConstantRendererProps } from './manager';\nimport { createTypePresetPlugin } from './create-type-preset-plugin';\n\nconst useTypeManager = () =>\n useOriginTypeManager() as JsonSchemaTypeManager<IJsonSchema, JsonSchemaTypeRegistry>;\n\nconst JsonSchemaTypePresetProvider = ({\n types = [],\n children,\n}: React.PropsWithChildren<{ types: JsonSchemaTypeRegistry[] }>) => (\n <OriginTypePresetProvider types={[...jsonSchemaTypePreset, ...types]}>\n {children}\n </OriginTypePresetProvider>\n);\n\nexport {\n createTypePresetPlugin,\n useTypeManager,\n JsonSchemaTypePresetProvider,\n IJsonSchema,\n JsonSchemaUtils,\n JsonSchemaTypeRegistry,\n ConstantRendererProps,\n JsonSchemaBasicType,\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { jsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { stringRegistry } from './string';\nimport { objectRegistry } from './object';\nimport { numberRegistry } from './number';\nimport { integerRegistry } from './integer';\nimport { booleanRegistry } from './boolean';\nimport { arrayRegistry } from './array';\n\nexport const jsonSchemaTypePreset = [\n stringRegistry,\n objectRegistry,\n numberRegistry,\n integerRegistry,\n booleanRegistry,\n arrayRegistry,\n];\n\njsonSchemaTypePreset.forEach((_type) => jsonSchemaTypeManager.register(_type));\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input, TextArea } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const stringRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'string',\n ConstantRenderer: (props) =>\n props?.enableMultiLineStr ? (\n <TextArea\n autosize\n rows={1}\n placeholder={I18n.t('Please Input String')}\n disabled={props.readonly}\n {...props}\n />\n ) : (\n <Input\n size=\"small\"\n placeholder={I18n.t('Please Input String')}\n disabled={props.readonly}\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { CodeEditorMini } from '@/components/code-editor-mini';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const objectRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'object',\n ConstantRenderer: (props) => (\n <CodeEditorMini\n value={props.value}\n onChange={(v) => props.onChange?.(v)}\n languageId=\"json\"\n placeholder={I18n.t('Please Input Object')}\n readonly={props.readonly}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled from 'styled-components';\n\nimport { CodeEditor, CodeEditorPropsType } from '@/components/code-editor';\n\nconst UIMini = styled.div`\n .ͼ1 .cm-content {\n padding: 0;\n }\n`;\n\nexport function CodeEditorMini(props: CodeEditorPropsType) {\n return (\n <UIMini>\n <CodeEditor\n {...props}\n options={{\n lineNumbersGutter: false,\n foldGutter: false,\n ...(props.options || {}),\n }}\n />\n </UIMini>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useRef } from 'react';\n\nimport {\n ActiveLinePlaceholder,\n createRenderer,\n EditorProvider,\n InferValues,\n} from '@coze-editor/editor/react';\nimport preset, { type EditorAPI } from '@coze-editor/editor/preset-code';\nimport { EditorView } from '@codemirror/view';\n\nimport { getSuffixByLanguageId } from './utils';\nimport { initTsWorker } from './language-features';\n\nimport './theme';\nimport './language-features';\n\nconst OriginCodeEditor = createRenderer(preset, [\n EditorView.theme({\n '&.cm-focused': {\n outline: 'none',\n },\n }),\n]);\n\ntype Preset = typeof preset;\ntype Options = Partial<InferValues<Preset[number]>>;\n\nexport interface CodeEditorPropsType extends React.PropsWithChildren<{}> {\n value?: string;\n onChange?: (value: string) => void;\n languageId: 'python' | 'typescript' | 'shell' | 'json';\n theme?: 'dark' | 'light';\n placeholder?: string;\n activeLinePlaceholder?: string;\n readonly?: boolean;\n options?: Options;\n}\n\nexport function CodeEditor({\n value,\n onChange,\n languageId = 'python',\n theme = 'light',\n children,\n placeholder,\n activeLinePlaceholder,\n options,\n readonly,\n}: CodeEditorPropsType) {\n const editorRef = useRef<EditorAPI | null>(null);\n\n useEffect(() => {\n if (languageId === 'typescript') {\n initTsWorker();\n }\n }, [languageId]);\n\n useEffect(() => {\n // listen to value change\n if (editorRef.current?.getValue() !== value) {\n editorRef.current?.setValue(String(value || ''));\n }\n }, [value]);\n\n return (\n <EditorProvider>\n <OriginCodeEditor\n defaultValue={value}\n options={{\n uri: `file:///untitled${getSuffixByLanguageId(languageId)}`,\n languageId,\n theme,\n placeholder,\n readOnly: readonly,\n editable: !readonly,\n ...(options || {}),\n }}\n didMount={(editor: EditorAPI) => {\n editorRef.current = editor;\n }}\n onChange={(e) => onChange?.(e.value)}\n >\n {activeLinePlaceholder && (\n <ActiveLinePlaceholder>{activeLinePlaceholder}</ActiveLinePlaceholder>\n )}\n {children}\n </OriginCodeEditor>\n </EditorProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nexport function getSuffixByLanguageId(languageId: string) {\n if (languageId === 'python') {\n return '.py';\n }\n if (languageId === 'typescript') {\n return '.ts';\n }\n if (languageId === 'shell') {\n return '.sh';\n }\n if (languageId === 'json') {\n return '.json';\n }\n return '';\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { languages } from '@coze-editor/editor/preset-code';\nimport { typescript } from '@coze-editor/editor/language-typescript';\nimport { shell } from '@coze-editor/editor/language-shell';\nimport { python } from '@coze-editor/editor/language-python';\nimport { json } from '@coze-editor/editor/language-json';\nimport { mixLanguages } from '@coze-editor/editor';\n\nlanguages.register('python', python);\nlanguages.register('shell', shell);\nlanguages.register('typescript', typescript);\n\nlanguages.register('json', {\n // mixLanguages is used to solve the problem that interpolation also uses parentheses, which causes incorrect highlighting\n language: mixLanguages({\n outerLanguage: json.language,\n }),\n languageService: json.languageService,\n});\n\nlet tsWorkerInit = false;\n\nexport const initTsWorker = () => {\n if (tsWorkerInit) {\n return;\n }\n tsWorkerInit = true;\n\n const tsWorker = new Worker(\n new URL(`@coze-editor/editor/language-typescript/worker`, import.meta.url),\n { type: 'module' }\n );\n typescript.languageService.initialize(tsWorker, {\n compilerOptions: {\n // eliminate Promise error\n lib: ['es2015', 'dom'],\n noImplicitAny: false,\n },\n });\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { themes } from '@coze-editor/editor/preset-code';\n\nimport { lightTheme } from './light';\nimport { darkTheme } from './dark';\n\nthemes.register('dark', darkTheme);\nthemes.register('light', lightTheme);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { createTheme, tags as t } from '@coze-editor/editor/preset-code';\nimport { type Extension } from '@codemirror/state';\n\nconst colors = {\n background: '#F7F7FC',\n // syntax\n comment: '#000A298A',\n key: '#00818C',\n string: '#D1009D',\n number: '#C74200',\n boolean: '#2B57D9',\n null: '#2B57D9',\n separator: '#0F1529D1',\n};\n\nexport const lightTheme: Extension = createTheme({\n variant: 'light',\n settings: {\n background: '#fff',\n foreground: '#000',\n caret: '#000',\n selection: '#d9d9d9',\n gutterBackground: '#f0f0f0',\n gutterForeground: '#666',\n gutterBorderColor: 'transparent',\n gutterBorderWidth: 0,\n lineHighlight: '#e1e1e180',\n bracketColors: ['#FFD700', '#DD99FF', '#78B0FF'],\n tooltip: {\n backgroundColor: '#f0f0f0',\n color: '#000',\n border: '1px solid #ccc',\n },\n link: {\n color: '#007bff',\n },\n completionItemHover: {\n backgroundColor: '#f0f0f0',\n },\n completionItemSelected: {\n backgroundColor: '#e0e0e0',\n },\n completionItemIcon: {\n color: '#333',\n },\n completionItemLabel: {\n color: '#333',\n },\n completionItemInfo: {\n color: '#333',\n },\n completionItemDetail: {\n color: '#666',\n },\n },\n styles: [\n // JSON\n {\n tag: t.comment,\n color: colors.comment,\n },\n {\n tag: [t.propertyName],\n color: colors.key,\n },\n {\n tag: [t.string],\n color: colors.string,\n },\n {\n tag: [t.number],\n color: colors.number,\n },\n {\n tag: [t.bool],\n color: colors.boolean,\n },\n {\n tag: [t.null],\n color: colors.null,\n },\n {\n tag: [t.separator],\n color: colors.separator,\n },\n\n // markdown\n {\n tag: [t.heading],\n color: '#3e76ef',\n },\n {\n tag: [t.processingInstruction],\n color: '#3e76ef',\n },\n\n // shell\n // curl\n {\n tag: [t.standard(t.variableName)],\n color: '#00804A',\n },\n // -X\n {\n tag: [t.attributeName],\n color: '#C74200',\n },\n // url in string (includes quotes), e.g. \"https://...\"\n {\n tag: [t.special(t.string)],\n color: '#2B57D9',\n },\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { createTheme, tags as t } from '@coze-editor/editor/preset-code';\nimport { type Extension } from '@codemirror/state';\n\nconst colors = {\n background: '#151B27',\n // syntax\n comment: '#FFFFFF63',\n key: '#39E5D7',\n string: '#FF94D2',\n number: '#FF9933',\n boolean: '#78B0FF',\n null: '#78B0FF',\n separator: '#FFFFFFC9',\n};\n\nexport const darkTheme: Extension = createTheme({\n variant: 'dark',\n settings: {\n background: colors.background,\n foreground: '#fff',\n caret: '#AEAFAD',\n selection: '#d9d9d942',\n gutterBackground: colors.background,\n gutterForeground: '#FFFFFF63',\n gutterBorderColor: 'transparent',\n gutterBorderWidth: 0,\n lineHighlight: '#272e3d36',\n bracketColors: ['#FFEF61', '#DD99FF', '#78B0FF'],\n tooltip: {\n backgroundColor: '#363D4D',\n color: '#fff',\n border: 'none',\n },\n link: {\n color: '#4daafc',\n },\n completionItemHover: {\n backgroundColor: '#FFFFFF0F',\n },\n completionItemSelected: {\n backgroundColor: '#FFFFFF17',\n },\n completionItemIcon: {\n color: '#FFFFFFC9',\n },\n completionItemLabel: {\n color: '#FFFFFFC9',\n },\n completionItemInfo: {\n color: '#FFFFFFC9',\n },\n completionItemDetail: {\n color: '#FFFFFF63',\n },\n },\n styles: [\n // json\n {\n tag: t.comment,\n color: colors.comment,\n },\n {\n tag: [t.propertyName],\n color: colors.key,\n },\n {\n tag: [t.string],\n color: colors.string,\n },\n {\n tag: [t.number],\n color: colors.number,\n },\n {\n tag: [t.bool],\n color: colors.boolean,\n },\n {\n tag: [t.null],\n color: colors.null,\n },\n {\n tag: [t.separator],\n color: colors.separator,\n },\n\n // markdown\n {\n tag: [t.heading],\n color: '#6b6bff',\n },\n {\n tag: [t.processingInstruction],\n color: '#6b6bff',\n },\n\n // shell\n // curl\n {\n tag: [t.standard(t.variableName)],\n color: '#3BEB84',\n },\n // -X\n {\n tag: [t.attributeName],\n color: '#FF9933',\n },\n // url in string (includes quotes), e.g. \"https://...\"\n {\n tag: [t.special(t.string)],\n color: '#78B0FF',\n },\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { InputNumber } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const numberRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'number',\n ConstantRenderer: (props) => (\n <InputNumber\n placeholder={I18n.t('Please Input Number')}\n size=\"small\"\n disabled={props.readonly}\n hideButtons\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { InputNumber } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const integerRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'integer',\n ConstantRenderer: (props) => (\n <InputNumber\n placeholder={I18n.t('Please Input Integer')}\n size=\"small\"\n disabled={props.readonly}\n precision={0}\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Select } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const booleanRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'boolean',\n ConstantRenderer: (props) => {\n const { value, onChange, ...rest } = props;\n return (\n <Select\n placeholder={I18n.t('Please Select Boolean')}\n size=\"small\"\n disabled={props.readonly}\n optionList={[\n { label: I18n.t('True'), value: 1 },\n { label: I18n.t('False'), value: 0 },\n ]}\n value={value ? 1 : 0}\n onChange={(value) => onChange?.(!!value)}\n {...rest}\n />\n );\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { CodeEditorMini } from '@/components/code-editor-mini';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const arrayRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'array',\n ConstantRenderer: (props) => (\n <CodeEditorMini\n value={props.value}\n languageId=\"json\"\n onChange={(v) => props.onChange?.(v)}\n placeholder={I18n.t('Please Input Array')}\n readonly={props.readonly}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseTypeManager,\n jsonSchemaContainerModule,\n JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { definePluginCreator } from '@flowgram.ai/editor';\n\nimport { jsonSchemaTypePreset } from './type-definition';\nimport { JsonSchemaTypeRegistry } from './manager';\n\nexport const createTypePresetPlugin = definePluginCreator<{\n types?: Partial<JsonSchemaTypeRegistry> & Pick<JsonSchemaTypeRegistry, 'type'>[];\n unregisterTypes?: string[];\n}>({\n onInit(ctx, opts) {\n const typeManager = ctx.get(BaseTypeManager) as JsonSchemaTypeManager;\n jsonSchemaTypePreset.forEach((_type) => typeManager.register(_type));\n\n opts.types?.forEach((_type) => typeManager.register(_type));\n opts.unregisterTypes?.forEach((_type) => typeManager.unregister(_type));\n },\n containerModules: [jsonSchemaContainerModule],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTMatch,\n definePluginCreator,\n type GlobalEventActionType,\n VariableEngine,\n} from '@flowgram.ai/editor';\n\nexport const createDisableDeclarationPlugin = definePluginCreator<void>({\n onInit(ctx) {\n const variableEngine = ctx.get(VariableEngine);\n\n const handleEvent = (action: GlobalEventActionType) => {\n if (ASTMatch.isVariableDeclaration(action.ast)) {\n if (!action.ast.meta?.disabled) {\n action.ast.updateMeta({\n ...(action.ast.meta || {}),\n disabled: true,\n });\n }\n }\n };\n\n variableEngine.onGlobalEvent('NewAST', handleEvent);\n variableEngine.onGlobalEvent('UpdateAST', handleEvent);\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\nimport { Tag, TreeSelect } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div<{ $inSelector?: boolean }>`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n ${({ $inSelector }) =>\n $inSelector &&\n css`\n min-width: 50%;\n `}\n`;\n\nexport const UITag = styled(Tag)`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0;\n height: 22px;\n }\n`;\n\nexport const UITreeSelect = styled(TreeSelect)<{ $error?: boolean }>`\n outline: ${({ $error }) => ($error ? '1px solid red' : 'none')};\n\n & .semi-tree-select-selection {\n padding: 0px;\n height: 22px;\n }\n\n & .semi-tree-select-selection-content {\n width: 100%;\n }\n\n & .semi-tree-select-selection-placeholder {\n padding-left: 10px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n white-space: nowrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Cascader, Icon, IconButton } from '@douyinfe/semi-ui';\n\nimport { createInjectMaterial } from '@/shared/inject-material';\nimport { useTypeManager } from '@/plugins';\n\nexport interface TypeSelectorProps {\n value?: Partial<IJsonSchema>;\n onChange?: (value?: Partial<IJsonSchema>) => void;\n readonly?: boolean;\n /**\n * @deprecated use readonly instead\n */\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nconst labelStyle: React.CSSProperties = { display: 'flex', alignItems: 'center', gap: 5 };\n\nexport const getTypeSelectValue = (value?: Partial<IJsonSchema>): string[] | undefined => {\n if (value?.type === 'array' && value?.items) {\n return [value.type, ...(getTypeSelectValue(value.items) || [])];\n }\n\n return value?.type ? [value.type] : undefined;\n};\n\nexport const parseTypeSelectValue = (value?: string[]): Partial<IJsonSchema> | undefined => {\n const [type, ...subTypes] = value || [];\n\n if (type === 'array') {\n return { type: 'array', items: parseTypeSelectValue(subTypes) };\n }\n\n return { type };\n};\n\nexport function TypeSelector(props: TypeSelectorProps) {\n const { value, onChange, readonly, disabled, style } = props;\n\n const selectValue = useMemo(() => getTypeSelectValue(value), [value]);\n\n const typeManager = useTypeManager();\n\n const icon = typeManager.getDisplayIcon(value || {});\n\n const options = useMemo(\n () =>\n typeManager.getTypeRegistriesWithParentType().map((_type) => {\n const isArray = _type.type === 'array';\n\n return {\n label: (\n <div style={labelStyle}>\n <Icon size=\"small\" svg={_type.icon} />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n children: isArray\n ? typeManager.getTypeRegistriesWithParentType('array').map((_type) => ({\n label: (\n <div style={labelStyle}>\n <Icon\n size=\"small\"\n svg={typeManager.getDisplayIcon({\n type: 'array',\n items: { type: _type.type },\n })}\n />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n const isDisabled = readonly || disabled;\n\n return (\n <Cascader\n disabled={isDisabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton\n size=\"small\"\n style={{\n ...(isDisabled ? { pointerEvents: 'none' } : {}),\n ...(style || {}),\n }}\n disabled={isDisabled}\n icon={icon}\n />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\n\nTypeSelector.renderKey = 'type-selector-render-key';\nexport const InjectTypeSelector = createInjectMaterial(TypeSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Checkbox, IconButton } from '@douyinfe/semi-ui';\nimport {\n IconExpand,\n IconShrink,\n IconPlus,\n IconChevronDown,\n IconChevronRight,\n IconMinus,\n} from '@douyinfe/semi-icons';\n\nimport { InjectTypeSelector } from '@/components/type-selector';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UITreeItems,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UIRequired,\n UIType,\n} from './styles';\nimport { UIName } from './styles';\nimport { DefaultValueWrapper, UIRow } from './styles';\nimport { usePropertiesEdit } from './hooks';\nimport { DefaultValue } from './default-value';\n\nconst DEFAULT = { type: 'object' };\n\nexport function JsonSchemaEditor(props: {\n value?: IJsonSchema;\n onChange?: (value: IJsonSchema) => void;\n config?: ConfigType;\n className?: string;\n readonly?: boolean;\n}) {\n const { value = DEFAULT, config = {}, onChange: onChangeProps, readonly } = props;\n const { propertyList, onAddProperty, onRemoveProperty, onEditProperty } = usePropertiesEdit(\n value,\n onChangeProps\n );\n\n return (\n <UIContainer className={props.className}>\n <UITreeItems>\n {propertyList.map((_property) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UITreeItems>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? I18n.t('Add')}\n </Button>\n </UIContainer>\n );\n}\n\nfunction PropertyEdit(props: {\n value?: PropertyValueType;\n config?: ConfigType;\n onChange?: (value: PropertyValueType) => void;\n onRemove?: () => void;\n readonly?: boolean;\n $isLast?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const { value, config, readonly, $level = 0, onChange: onChangeProps, onRemove, $isLast } = props;\n\n const [expand, setExpand] = useState(false);\n const [collapse, setCollapse] = useState(false);\n\n const { name, type, items, default: defaultValue, description, isPropertyRequired } = value || {};\n\n const typeSelectorValue = useMemo(() => ({ type, items }), [type, items]);\n\n const { propertyList, canAddField, onAddProperty, onRemoveProperty, onEditProperty } =\n usePropertiesEdit(value, onChangeProps);\n\n const onChange = (key: string, _value: any) => {\n onChangeProps?.({\n ...(value || {}),\n [key]: _value,\n });\n };\n\n const showCollapse = canAddField && propertyList.length > 0;\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={showCollapse}>\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? I18n.t('Input Variable Name')}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <InjectTypeSelector\n value={typeSelectorValue}\n readonly={readonly}\n onChange={(_value) => {\n onChangeProps?.({\n ...(value || {}),\n ..._value,\n });\n }}\n />\n </UIType>\n <UIRequired>\n <Checkbox\n disabled={readonly}\n checked={isPropertyRequired}\n onChange={(e) => onChange('isPropertyRequired', e.target.checked)}\n />\n </UIRequired>\n <UIActions>\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={expand ? <IconShrink size=\"small\" /> : <IconExpand size=\"small\" />}\n onClick={() => {\n setExpand((_expand) => !_expand);\n }}\n />\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n onAddProperty();\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus size=\"small\" />}\n onClick={onRemove}\n />\n </UIActions>\n </UIRow>\n {expand && (\n <UIExpandDetail>\n <UILabel>{config?.descTitle ?? I18n.t('Description')}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={\n config?.descPlaceholder ?? I18n.t('Help LLM to understand the property')\n }\n />\n {$level === 0 && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? I18n.t('Default Value')}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n placeholder={config?.defaultValuePlaceholder ?? I18n.t('Default Value')}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UITreeItemMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $level={$level + 1} // 传递递增的层级\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div`\n /* & .semi-input {\n background-color: #fff;\n border-radius: 6px;\n height: 24px;\n } */\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UIExpandDetail = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const UILabel = styled.div`\n font-size: 12px;\n color: #999;\n font-weight: 400;\n margin-bottom: 2px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIName = styled.div`\n flex-grow: 1;\n`;\n\nexport const UIType = styled.div``;\n\nexport const UIRequired = styled.div``;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n\nexport const DefaultValueWrapper = styled.div`\n margin: 0;\n`;\n\nexport const ConstantInputWrapper = styled.div`\n flex-grow: 1;\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { difference, omit } from 'lodash';\nimport { produce } from 'immer';\nimport { IJsonSchema, type JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n // Get drilldown properties (array.items.items.properties...)\n const drilldownSchema = typeManager.getPropertiesParent(value || {});\n const canAddField = typeManager.canAddField(value || {});\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const newNames = Object.entries(drilldownSchema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([key]) => key);\n\n const oldNames = _list.map((item) => item.name).filter(Boolean) as string[];\n const addNames = difference(newNames, oldNames);\n\n return _list\n .filter((item) => !item.name || newNames.includes(item.name))\n .map((item) => ({\n key: item.key,\n name: item.name,\n isPropertyRequired: drilldownSchema?.required?.includes(item.name || '') || false,\n ...(drilldownSchema?.properties?.[item.name || ''] || item || {}),\n }))\n .concat(\n addNames.map((_name) => ({\n key: genId(),\n name: _name,\n isPropertyRequired: drilldownSchema?.required?.includes(_name) || false,\n ...(drilldownSchema?.properties?.[_name] || {}),\n }))\n );\n });\n }, [drilldownSchema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\n changeVersion.current = changeVersion.current + 1;\n\n setPropertyList((_list) => {\n const next = updater(_list);\n\n // onChange to parent\n const nextProperties: Record<string, IJsonSchema> = {};\n const nextRequired: string[] = [];\n\n for (const _property of next) {\n if (!_property.name) {\n continue;\n }\n\n nextProperties[_property.name] = omit(_property, ['key', 'name', 'isPropertyRequired']);\n\n if (_property.isPropertyRequired) {\n nextRequired.push(_property.name);\n }\n }\n\n onChange?.(\n produce(value || {}, (draft) => {\n const propertiesParent = typeManager.getPropertiesParent(draft);\n\n if (propertiesParent) {\n propertiesParent.properties = nextProperties;\n propertiesParent.required = nextRequired;\n return;\n }\n })\n );\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n // set property list only, not trigger updatePropertyList\n setPropertyList((_list) => [\n ..._list,\n { key: genId(), name: '', type: 'string', extra: { index: _list.length + 1 } },\n ]);\n };\n\n const onRemoveProperty = (key: number) => {\n updatePropertyList((_list) => _list.filter((_property) => _property.key !== key));\n };\n\n const onEditProperty = (key: number, nextValue: PropertyValueType) => {\n updatePropertyList((_list) =>\n _list.map((_property) => (_property.key === key ? nextValue : _property))\n );\n };\n\n useEffect(() => {\n if (!canAddField) {\n setPropertyList([]);\n }\n }, [canAddField]);\n\n return {\n propertyList,\n canAddField,\n onAddProperty,\n onRemoveProperty,\n onEditProperty,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { ConstantInput } from '@/components/constant-input';\n\nimport { ConstantInputWrapper } from './styles';\n\n/**\n * Renders the corresponding default value input component based on different data types.\n * @param props - Component properties, including value, type, placeholder, onChange.\n * @returns Returns the input component of the corresponding type or null.\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n placeholder?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, onChange, placeholder } = props;\n\n return (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? I18n.t('Default value if parameter is not provided')}\n enableMultiLineStr\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React, { useMemo } from 'react';\n\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { PropsType, Strategy as ConstantInputStrategy } from './types';\n\nexport { ConstantInputStrategy };\n\nexport function ConstantInput(props: PropsType) {\n const { value, onChange, schema, strategies, fallbackRenderer, readonly, ...rest } = props;\n\n const typeManager = useTypeManager();\n\n const Renderer = useMemo(() => {\n const strategy = (strategies || []).find((_strategy) => _strategy.hit(schema));\n\n if (!strategy) {\n return typeManager.getTypeBySchema(schema)?.ConstantRenderer;\n }\n\n return strategy?.Renderer;\n }, [strategies, schema]);\n\n if (!Renderer) {\n if (fallbackRenderer) {\n return React.createElement(fallbackRenderer, {\n value,\n onChange,\n readonly,\n ...rest,\n });\n }\n return <Input size=\"small\" disabled placeholder=\"Unsupported type\" />;\n }\n\n return <Renderer value={value} onChange={onChange} readonly={readonly} {...rest} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '@/components/variable-selector';\n\nconst batchVariableSchema: IJsonSchema = {\n type: 'array',\n extra: { weak: true },\n};\n\nexport function BatchVariableSelector(props: VariableSelectorProps) {\n return (\n <PrivateScopeProvider>\n <VariableSelector {...props} includeSchema={batchVariableSchema} />\n </PrivateScopeProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n JsonSchemaUtils,\n IJsonSchema,\n useTypeManager,\n type JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowConstantValue } from '@/typings';\nimport { createInjectMaterial } from '@/shared';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { TypeSelector } from '@/components/type-selector';\nimport { ConstantInput, ConstantInputStrategy } from '@/components/constant-input';\n\nimport { UIContainer, UIMain, UITrigger, UIType } from './styles';\nimport { useIncludeSchema, useRefVariable, useSelectSchema } from './hooks';\n\ninterface PropsType {\n value?: IFlowConstantRefValue;\n onChange: (value?: IFlowConstantRefValue) => void;\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n schema?: IJsonSchema;\n constantProps?: {\n strategies?: ConstantInputStrategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\n}\n\nconst DEFAULT_VALUE: IFlowConstantValue = {\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n};\n\nexport function DynamicValueInput({\n value,\n onChange,\n readonly,\n style,\n schema: schemaFromProps,\n constantProps,\n}: PropsType) {\n const refVariable = useRefVariable(value);\n const [selectSchema, setSelectSchema] = useSelectSchema(schemaFromProps, constantProps, value);\n const includeSchema = useIncludeSchema(schemaFromProps);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const renderTypeSelector = () => {\n if (schemaFromProps) {\n return <TypeSelector value={schemaFromProps} readonly={true} />;\n }\n\n if (value?.type === 'ref') {\n const schema = refVariable?.type ? JsonSchemaUtils.astToSchema(refVariable?.type) : undefined;\n\n return <TypeSelector value={schema} readonly={true} />;\n }\n\n return (\n <TypeSelector\n value={selectSchema}\n onChange={(_v) => {\n setSelectSchema(_v || { type: 'string' });\n\n const schema = _v || { type: 'string' };\n let content = typeManager.getDefaultValue(schema);\n if (_v?.type === 'object') {\n content = '{}';\n }\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n onChange({\n type: 'constant',\n content,\n schema,\n });\n }}\n readonly={readonly}\n />\n );\n };\n\n const renderMain = () => {\n if (value?.type === 'ref') {\n // Display Variable Or Delete\n return (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n );\n }\n\n const constantSchema = schemaFromProps || selectSchema || { type: 'string' };\n\n return (\n <ConstantInput\n value={value?.content}\n onChange={(_v) => onChange({ type: 'constant', content: _v, schema: constantSchema })}\n schema={constantSchema || { type: 'string' }}\n readonly={readonly}\n fallbackRenderer={() => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n strategies={[...(constantProps?.strategies || [])]}\n />\n );\n };\n\n const renderTrigger = () => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.type === 'ref' ? value?.content : undefined}\n onChange={(_v) => onChange({ type: 'ref', content: _v })}\n includeSchema={includeSchema}\n readonly={readonly}\n triggerRender={() => (\n <IconButton disabled={readonly} size=\"small\" icon={<IconSetting size=\"small\" />} />\n )}\n />\n );\n\n return (\n <UIContainer style={style}>\n <UIType>{renderTypeSelector()}</UIType>\n <UIMain>{renderMain()}</UIMain>\n <UITrigger>{renderTrigger()}</UITrigger>\n </UIContainer>\n );\n}\n\nDynamicValueInput.renderKey = 'dynamic-value-input-render-key';\nexport const InjectDynamicValueInput = createInjectMaterial(DynamicValueInput);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n border-radius: 4px;\n border: 1px solid var(--semi-color-border);\n\n overflow: hidden;\n\n background-color: var(--semi-color-fill-0);\n`;\n\nexport const UIMain = styled.div`\n flex-grow: 1;\n overflow: hidden;\n min-width: 0;\n border-left: 1px solid var(--semi-color-border);\n border-right: 1px solid var(--semi-color-border);\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea {\n padding: 2px 6px;\n border: none;\n border-radius: 0;\n word-break: break-all;\n }\n`;\n\nexport const UIType = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '@/typings';\n\nexport function useRefVariable(value?: IFlowConstantRefValue) {\n const available = useScopeAvailable();\n const refVariable = useMemo(() => {\n if (value?.type === 'ref') {\n return available.getByKeyPath(value.content);\n }\n }, [value, available]);\n\n return refVariable;\n}\n\nexport function useSelectSchema(\n schemaFromProps?: IJsonSchema,\n constantProps?: {\n schema?: IJsonSchema;\n },\n value?: IFlowConstantRefValue\n) {\n let defaultSelectSchema = schemaFromProps || constantProps?.schema || { type: 'string' };\n if (value?.type === 'constant') {\n defaultSelectSchema = value?.schema || defaultSelectSchema;\n }\n\n const changeVersion = useRef(0);\n const effectVersion = useRef(0);\n\n const [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n useEffect(() => {\n effectVersion.current += 1;\n if (changeVersion.current === effectVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n if (value?.type === 'constant' && value?.schema) {\n setSelectSchema(value?.schema);\n return;\n }\n }, [value]);\n\n const setSelectSchemaWithVersionUpdate = (schema: IJsonSchema) => {\n setSelectSchema(schema);\n changeVersion.current += 1;\n };\n\n return [selectSchema, setSelectSchemaWithVersionUpdate] as const;\n}\n\nexport function useIncludeSchema(schemaFromProps?: IJsonSchema) {\n const includeSchema = useMemo(() => {\n if (!schemaFromProps) {\n return;\n }\n if (schemaFromProps?.type === 'number') {\n return [schemaFromProps, { type: 'integer' }];\n }\n return { ...schemaFromProps, extra: { ...schemaFromProps?.extra, weak: true } };\n }, [schemaFromProps]);\n\n return includeSchema;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { ConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function ConditionRow({\n style,\n value,\n onChange,\n readonly,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left, ruleConfig.rules);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>\n <InjectVariableSelector\n readonly={readonly}\n style={{ width: '100%' }}\n value={left?.content}\n onChange={(v) =>\n onChange({\n ...value,\n left: {\n type: 'ref',\n content: v,\n },\n })\n }\n />\n </UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nexport { type ConditionRowValueType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { JsonSchemaUtils, JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nimport { IRules } from '../types';\nimport { defaultRules } from '../constants';\n\nexport function useRule(left?: IFlowRefValue, userRules?: IRules) {\n const available = useScopeAvailable();\n\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const variable = useMemo(() => {\n if (!left) return undefined;\n return available.getByKeyPath(left.content);\n }, [available, left]);\n\n const rule = useMemo(() => {\n if (!variable) return undefined;\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldown: false });\n\n return rules[schema?.type as JsonSchemaBasicType];\n }, [variable?.type, rules]);\n\n return { rule };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IRules, Op, OpConfigs } from './types';\n\nexport const defaultRules: IRules = {\n string: {\n [Op.EQ]: 'string',\n [Op.NEQ]: 'string',\n [Op.CONTAINS]: 'string',\n [Op.NOT_CONTAINS]: 'string',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n number: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n integer: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n boolean: {\n [Op.EQ]: 'boolean',\n [Op.NEQ]: 'boolean',\n [Op.IS_TRUE]: null,\n [Op.IS_FALSE]: null,\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n object: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n array: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n [Op.CONTAINS]: 'array',\n [Op.NOT_CONTAINS]: 'array',\n [Op.EQ]: 'array',\n [Op.NEQ]: 'array',\n },\n map: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n};\n\nexport const defaultOpConfigs: OpConfigs = {\n [Op.EQ]: {\n label: 'Equal',\n abbreviation: '=',\n },\n [Op.NEQ]: {\n label: 'Not Equal',\n abbreviation: '≠',\n },\n [Op.GT]: {\n label: 'Greater Than',\n abbreviation: '>',\n },\n [Op.GTE]: {\n label: 'Greater Than or Equal',\n abbreviation: '>=',\n },\n [Op.LT]: {\n label: 'Less Than',\n abbreviation: '<',\n },\n [Op.LTE]: {\n label: 'Less Than or Equal',\n abbreviation: '<=',\n },\n [Op.IN]: {\n label: 'In',\n abbreviation: '∈',\n },\n [Op.NIN]: {\n label: 'Not In',\n abbreviation: '∉',\n },\n [Op.CONTAINS]: {\n label: 'Contains',\n abbreviation: '⊇',\n },\n [Op.NOT_CONTAINS]: {\n label: 'Not Contains',\n abbreviation: '⊉',\n },\n [Op.IS_EMPTY]: {\n label: 'Is Empty',\n abbreviation: '=',\n rightDisplay: 'Empty',\n },\n [Op.IS_NOT_EMPTY]: {\n label: 'Is Not Empty',\n abbreviation: '≠',\n rightDisplay: 'Empty',\n },\n [Op.IS_TRUE]: {\n label: 'Is True',\n abbreviation: '=',\n rightDisplay: 'True',\n },\n [Op.IS_FALSE]: {\n label: 'Is False',\n abbreviation: '=',\n rightDisplay: 'False',\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, OpConfigs } from '../types';\nimport { defaultOpConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { useObjectList } from '@/hooks';\nimport { InjectVariableSelector } from '@/components/variable-selector';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function BatchOutputs(props: PropsType) {\n const { readonly, style } = props;\n\n const { list, add, updateKey, updateValue, remove } = useObjectList(props);\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <Input\n style={{ width: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n />\n <InjectVariableSelector\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value?.content}\n onChange={(v) => updateValue(item.id, { type: 'ref', content: v })}\n />\n <Button\n disabled={readonly}\n icon={<IconDelete />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={() => add()}>\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { nanoid } from 'nanoid';\nimport { difference, get, isObject, set } from 'lodash';\n\nfunction genId() {\n return nanoid();\n}\n\ninterface ListItem<ValueType> {\n id: string;\n key?: string;\n value?: ValueType;\n}\n\ntype ObjectType<ValueType> = Record<string, ValueType | undefined>;\n\nexport function useObjectList<ValueType>({\n value,\n onChange,\n sortIndexKey,\n}: {\n value?: ObjectType<ValueType>;\n onChange: (value?: ObjectType<ValueType>) => void;\n sortIndexKey?: string | ((item: ValueType | undefined) => string);\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n const getSortIndex = (value?: ValueType) => {\n if (typeof sortIndexKey === 'function') {\n return get(value, sortIndexKey(value)) || 0;\n }\n return get(value, sortIndexKey || '') || 0;\n };\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => getSortIndex(a[1]) - getSortIndex(b[1]))\n .map(([key]) => key);\n\n const oldKeys = _prevList.map((item) => item.key).filter(Boolean) as string[];\n const addKeys = difference(newKeys, oldKeys);\n\n return _prevList\n .filter((item) => !item.key || newKeys.includes(item.key))\n .map((item) => ({\n id: item.id,\n key: item.key,\n value: item.key ? value?.[item.key!] : item.value,\n }))\n .concat(\n addKeys.map((_key) => ({\n id: genId(),\n key: _key,\n value: value?.[_key],\n }))\n );\n });\n }, [value]);\n\n const add = (defaultValue?: ValueType) => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n value: defaultValue,\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n value,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList\n .filter((item) => item.key)\n .map((item) => [item.key!, item.value])\n .map((_res, idx) => {\n const indexKey =\n typeof sortIndexKey === 'function'\n ? sortIndexKey(_res[1] as ValueType | undefined)\n : sortIndexKey;\n\n if (isObject(_res[1]) && indexKey) {\n set(_res[1], indexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n key,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n const remove = (itemId: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.filter((_item) => _item.id !== itemId);\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n return { list, add, updateKey, updateValue, remove };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useRef } from 'react';\n\nimport { Renderer, EditorProvider, ActiveLinePlaceholder, InferValues } from '@coze-editor/editor/react';\nimport preset, { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { PropsType } from './types';\nimport { UIContainer } from './styles';\nimport MarkdownHighlight from './extensions/markdown';\nimport LanguageSupport from './extensions/language-support';\nimport JinjaHighlight from './extensions/jinja';\n\ntype Preset = typeof preset;\ntype Options = Partial<InferValues<Preset[number]>>;\n\nexport interface PromptEditorPropsType extends PropsType {\n options?: Options;\n}\n\nexport function PromptEditor(props: PromptEditorPropsType) {\n const {\n value,\n onChange,\n readonly,\n placeholder,\n activeLinePlaceholder,\n style,\n hasError,\n children,\n disableMarkdownHighlight,\n options,\n } = props || {};\n\n const editorRef = useRef<EditorAPI | null>(null);\n\n useEffect(() => {\n // listen to value change\n if (editorRef.current?.getValue() !== value?.content) {\n editorRef.current?.setValue(String(value?.content || ''));\n }\n }, [value]);\n\n return (\n <UIContainer $hasError={hasError} style={style}>\n <EditorProvider>\n <Renderer\n didMount={(editor: EditorAPI) => {\n editorRef.current = editor;\n }}\n plugins={preset}\n defaultValue={String(value?.content)}\n options={{\n readOnly: readonly,\n editable: !readonly,\n placeholder,\n ...options\n }}\n onChange={(e) => {\n onChange({ type: 'template', content: e.value });\n }}\n />\n {activeLinePlaceholder && (\n <ActiveLinePlaceholder>{activeLinePlaceholder}</ActiveLinePlaceholder>\n )}\n {!disableMarkdownHighlight && <MarkdownHighlight />}\n <LanguageSupport />\n <JinjaHighlight />\n {children}\n </EditorProvider>\n </UIContainer>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const UIContainer = styled.div<{ $hasError?: boolean }>`\n background-color: var(--semi-color-fill-0);\n padding-left: 10px;\n padding-right: 6px;\n\n ${({ $hasError }) =>\n $hasError &&\n css`\n border: 1px solid var(--semi-color-danger-6);\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { astDecorator } from '@coze-editor/editor';\nimport { EditorView } from '@codemirror/view';\n\nfunction MarkdownHighlight() {\n const injector = useInjector();\n\n useLayoutEffect(\n () =>\n injector.inject([\n astDecorator.whole.of((cursor) => {\n // # heading\n if (cursor.name.startsWith('ATXHeading')) {\n return {\n type: 'className',\n className: 'heading',\n };\n }\n\n // *italic*\n if (cursor.name === 'Emphasis') {\n return {\n type: 'className',\n className: 'emphasis',\n };\n }\n\n // **bold**\n if (cursor.name === 'StrongEmphasis') {\n return {\n type: 'className',\n className: 'strong-emphasis',\n };\n }\n\n // -\n // 1.\n // >\n if (cursor.name === 'ListMark' || cursor.name === 'QuoteMark') {\n return {\n type: 'className',\n className: 'mark',\n };\n }\n }),\n EditorView.theme({\n '.heading': {\n color: '#00818C',\n fontWeight: 'bold',\n },\n '.emphasis': {\n fontStyle: 'italic',\n },\n '.strong-emphasis': {\n fontWeight: 'bold',\n },\n '.mark': {\n color: '#4E40E5',\n },\n }),\n ]),\n [injector]\n );\n\n return null;\n}\n\nexport default MarkdownHighlight;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { languageSupport } from '@coze-editor/editor/preset-prompt';\n\nfunction LanguageSupport() {\n const injector = useInjector();\n\n useLayoutEffect(() => injector.inject([languageSupport]), [injector]);\n\n return null;\n}\n\nexport default LanguageSupport;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { astDecorator } from '@coze-editor/editor';\nimport { EditorView } from '@codemirror/view';\n\nfunction JinjaHighlight() {\n const injector = useInjector();\n\n useLayoutEffect(\n () =>\n injector.inject([\n astDecorator.whole.of((cursor) => {\n if (cursor.name === 'JinjaStatementStart' || cursor.name === 'JinjaStatementEnd') {\n return {\n type: 'className',\n className: 'jinja-statement-bracket',\n };\n }\n\n if (cursor.name === 'JinjaComment') {\n return {\n type: 'className',\n className: 'jinja-comment',\n };\n }\n\n if (cursor.name === 'JinjaExpression') {\n return {\n type: 'className',\n className: 'jinja-expression',\n };\n }\n }),\n EditorView.theme({\n '.jinja-statement-bracket': {\n color: '#D1009D',\n },\n '.jinja-comment': {\n color: '#0607094D',\n },\n '.jinja-expression': {\n color: '#4E40E5',\n },\n }),\n ]),\n [injector]\n );\n\n return null;\n}\n\nexport default JinjaHighlight;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { PromptEditor, PromptEditorPropsType } from '@/components/prompt-editor';\n\nimport { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\n\nexport function PromptEditorWithVariables(props: PromptEditorPropsType) {\n return (\n <PromptEditor {...props}>\n <VariableTree />\n <VariableTagInject />\n </PromptEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover, Tree } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { useVariableTree } from '@/components/variable-selector';\n\nexport function VariableTree() {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n /**\n * When user input {{xxxx}}, {{{xxx}}}(more brackets if possible), replace all brackets with {{xxxx}}\n */\n let { from, to } = range;\n while (editor.$view.state.doc.sliceString(from - 1, from) === '{') {\n from--;\n }\n while (editor.$view.state.doc.sliceString(to, to + 1) === '}') {\n to++;\n }\n\n editor.replaceText({\n from,\n to,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n const treeData = useVariableTree({});\n\n return (\n <>\n <Mention triggerCharacters={['{', '{}', '@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <Tree\n treeData={treeData}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport ReactDOM from 'react-dom';\nimport React, { useLayoutEffect } from 'react';\n\nimport { isEqual, last } from 'lodash';\nimport {\n BaseVariableField,\n Disposable,\n DisposableCollection,\n Scope,\n useCurrentScope,\n} from '@flowgram.ai/editor';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconIssueStroked } from '@douyinfe/semi-icons';\nimport { useInjector } from '@coze-editor/editor/react';\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n MatchDecorator,\n ViewPlugin,\n WidgetType,\n} from '@codemirror/view';\n\nimport { UIPopoverContent, UIRootTitle, UITag, UIVarName } from '../styles';\n\nclass VariableTagWidget extends WidgetType {\n keyPath?: string[];\n\n toDispose = new DisposableCollection();\n\n scope: Scope;\n\n rootDOM?: HTMLSpanElement;\n\n constructor({ keyPath, scope }: { keyPath?: string[]; scope: Scope }) {\n super();\n\n this.keyPath = keyPath;\n this.scope = scope;\n }\n\n renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n renderReact(jsx: React.ReactElement) {\n // NOTICE: For React 19, upgrade to 'react-dom/client'\n ReactDOM.render(jsx, this.rootDOM!);\n }\n\n renderVariable(v?: BaseVariableField) {\n if (!v) {\n this.renderReact(\n <UITag prefixIcon={<IconIssueStroked />} color=\"amber\">\n Unknown\n </UITag>\n );\n return;\n }\n\n const rootField = last(v.parentFields) || v;\n const isRoot = v.parentFields.length === 0;\n\n const rootTitle = (\n <UIRootTitle>\n {rootField?.meta.title ? `${rootField.meta.title} ${isRoot ? '' : '-'} ` : ''}\n </UIRootTitle>\n );\n const rootIcon = this.renderIcon(rootField?.meta.icon);\n\n this.renderReact(\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{v?.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag prefixIcon={rootIcon}>\n {rootTitle}\n {!isRoot && <UIVarName>{v?.key}</UIVarName>}\n </UITag>\n </Popover>\n );\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('span');\n\n this.rootDOM = dom;\n\n this.toDispose.push(\n Disposable.create(() => {\n // NOTICE: For React 19, upgrade to 'react-dom/client'\n ReactDOM.unmountComponentAtNode(this.rootDOM!);\n })\n );\n\n this.toDispose.push(\n this.scope.available.trackByKeyPath(\n this.keyPath,\n (v) => {\n this.renderVariable(v);\n },\n { triggerOnInit: false }\n )\n );\n\n this.renderVariable(this.scope.available.getByKeyPath(this.keyPath));\n\n return dom;\n }\n\n eq(other: VariableTagWidget) {\n return isEqual(this.keyPath, other.keyPath);\n }\n\n ignoreEvent(): boolean {\n return false;\n }\n\n destroy(dom: HTMLElement): void {\n this.toDispose.dispose();\n }\n}\n\nexport function VariableTagInject() {\n const injector = useInjector();\n\n const scope = useCurrentScope();\n\n // 基于 {{var}} 的正则进行匹配,匹配后进行自定义渲染\n useLayoutEffect(() => {\n const atMatcher = new MatchDecorator({\n regexp: /\\{\\{([^\\}\\{]+)\\}\\}/g,\n decoration: (match) =>\n Decoration.replace({\n widget: new VariableTagWidget({\n keyPath: match[1]?.split('.') ?? [],\n scope,\n }),\n }),\n });\n\n return injector.inject([\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(private view: EditorView) {\n this.decorations = atMatcher.createDeco(view);\n }\n\n update() {\n this.decorations = atMatcher.createDeco(this.view);\n }\n },\n {\n decorations: (p) => p.decorations,\n provide(p) {\n return EditorView.atomicRanges.of(\n (view) => view.plugin(p)?.decorations ?? Decoration.none\n );\n },\n }\n ),\n ]);\n }, [injector]);\n\n return null;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const UITag = styled(Tag)`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n max-width: 300px;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0 5px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { PromptEditor, PromptEditorPropsType } from '@/components/prompt-editor';\n\nimport { InputsTree } from './extensions/inputs-tree';\n\ninterface PropsType extends PromptEditorPropsType {\n inputsValues: any;\n}\n\nexport function PromptEditorWithInputs({ inputsValues, ...restProps }: PropsType) {\n return (\n <PromptEditor {...restProps}>\n <InputsTree inputsValues={inputsValues} />\n </PromptEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { IFlowValue } from '@/typings';\n\nimport { InputsPicker } from '../inputs-picker';\n\nexport function InputsTree({ inputsValues }: { inputsValues: Record<string, IFlowValue> }) {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n /**\n * When user input {{xxxx}}, {{{xxx}}}(more brackets if possible), replace all brackets with {{xxxx}}\n */\n let { from, to } = range;\n while (editor.$view.state.doc.sliceString(from - 1, from) === '{') {\n from--;\n }\n while (editor.$view.state.doc.sliceString(to, to + 1) === '}') {\n to++;\n }\n\n editor.replaceText({\n ...range,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n return (\n <>\n <Mention triggerCharacters={['{', '{}', '@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <InputsPicker\n inputsValues={inputsValues}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject, last } from 'lodash';\nimport {\n type ArrayType,\n ASTMatch,\n type BaseType,\n type BaseVariableField,\n useScopeAvailable,\n} from '@flowgram.ai/editor';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Tree } from '@douyinfe/semi-ui';\n\nimport { FlowValueUtils } from '@/shared';\n\ntype VariableField = BaseVariableField<{ icon?: string | JSX.Element; title?: string }>;\n\nexport function InputsPicker({\n inputsValues,\n onSelect,\n}: {\n inputsValues: any;\n onSelect: (v: string) => void;\n}) {\n const available = useScopeAvailable();\n\n const getArrayDrilldown = (type: ArrayType, depth = 1): { type: BaseType; depth: number } => {\n if (ASTMatch.isArray(type.items)) {\n return getArrayDrilldown(type.items, depth + 1);\n }\n\n return { type: type.items, depth: depth };\n };\n\n const renderVariable = (variable: VariableField, keyPath: string[]): TreeNodeData => {\n let type = variable?.type;\n\n let children: TreeNodeData[] | undefined;\n\n if (ASTMatch.isObject(type)) {\n children = (type.properties || [])\n .map((_property) => renderVariable(_property as VariableField, [...keyPath, _property.key]))\n .filter(Boolean) as TreeNodeData[];\n }\n\n if (ASTMatch.isArray(type)) {\n const drilldown = getArrayDrilldown(type);\n\n if (ASTMatch.isObject(drilldown.type)) {\n children = (drilldown.type.properties || [])\n .map((_property) =>\n renderVariable(_property as VariableField, [\n ...keyPath,\n ...new Array(drilldown.depth).fill('[0]'),\n _property.key,\n ])\n )\n .filter(Boolean) as TreeNodeData[];\n }\n }\n\n const key = keyPath\n .map((_key, idx) => (_key === '[0]' || idx === 0 ? _key : `.${_key}`))\n .join('');\n\n return {\n key: key,\n label: last(keyPath),\n value: key,\n children,\n };\n };\n\n const getTreeData = (value: any, keyPath: string[]): TreeNodeData | undefined => {\n const currKey = keyPath.join('.');\n\n if (FlowValueUtils.isFlowValue(value)) {\n if (FlowValueUtils.isRef(value)) {\n const variable = available.getByKeyPath(value.content || []);\n if (variable) {\n return renderVariable(variable, keyPath);\n }\n }\n return {\n key: currKey,\n value: currKey,\n label: last(keyPath),\n };\n }\n\n if (isPlainObject(value)) {\n return {\n key: currKey,\n value: currKey,\n label: last(keyPath),\n children: Object.entries(value)\n .map(([key, value]) => getTreeData(value, [...keyPath, key])!)\n .filter(Boolean),\n };\n }\n };\n\n const treeData: TreeNodeData[] = useMemo(\n () =>\n Object.entries(inputsValues)\n .map(([key, value]) => getTreeData(value, [key])!)\n .filter(Boolean),\n []\n );\n\n return <Tree treeData={treeData} onSelect={(v) => onSelect(v)} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { transformerCreator } from '@coze-editor/editor/preset-code';\nimport { Text } from '@coze-editor/editor/language-json';\n\nimport { CodeEditor, type CodeEditorPropsType } from '@/components/code-editor';\n\nimport { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { I18n } from '@flowgram.ai/editor';\n\ntype Match = { match: string; range: [number, number] };\nfunction findAllMatches(inputString: string, regex: RegExp): Match[] {\n const globalRegex = new RegExp(\n regex,\n regex.flags.includes('g') ? regex.flags : regex.flags + 'g'\n );\n let match;\n const matches: Match[] = [];\n\n while ((match = globalRegex.exec(inputString)) !== null) {\n if (match.index === globalRegex.lastIndex) {\n globalRegex.lastIndex++;\n }\n matches.push({\n match: match[0],\n range: [match.index, match.index + match[0].length],\n });\n }\n\n return matches;\n}\n\nconst transformer = transformerCreator((text: Text) => {\n const originalSource = text.toString();\n const matches = findAllMatches(originalSource, /\\{\\{([^\\}]*)\\}\\}/g);\n\n if (matches.length > 0) {\n matches.forEach(({ range }) => {\n text.replaceRange(range[0], range[1], 'null');\n });\n }\n\n return text;\n});\n\nexport function JsonEditorWithVariables(props: Omit<CodeEditorPropsType, 'languageId'>) {\n return (\n <CodeEditor\n languageId=\"json\"\n activeLinePlaceholder={I18n.t(\"Press '@' to Select variable\")}\n {...props}\n options={{\n transformer,\n ...(props.options || {}),\n }}\n >\n <VariableTree />\n <VariableTagInject />\n </CodeEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover, Tree } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { useVariableTree } from '@/components/variable-selector';\n\nexport function VariableTree() {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n editor.replaceText({\n ...range,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n const treeData = useVariableTree({});\n\n return (\n <>\n <Mention triggerCharacters={['@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <Tree\n treeData={treeData}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useLayoutEffect } from 'react';\n\nimport { createRoot, Root } from 'react-dom/client';\nimport { isEqual, last } from 'lodash';\nimport {\n BaseVariableField,\n Disposable,\n DisposableCollection,\n Scope,\n useCurrentScope,\n} from '@flowgram.ai/editor';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconIssueStroked } from '@douyinfe/semi-icons';\nimport { useInjector } from '@coze-editor/editor/react';\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n MatchDecorator,\n ViewPlugin,\n WidgetType,\n} from '@codemirror/view';\n\nimport { UIPopoverContent, UIRootTitle, UITag, UIVarName } from '../styles';\n\nclass VariableTagWidget extends WidgetType {\n keyPath?: string[];\n\n toDispose = new DisposableCollection();\n\n scope: Scope;\n\n root: Root;\n\n constructor({ keyPath, scope }: { keyPath?: string[]; scope: Scope }) {\n super();\n\n this.keyPath = keyPath;\n this.scope = scope;\n }\n\n renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n renderVariable(v?: BaseVariableField) {\n if (!v) {\n this.root.render(\n <UITag prefixIcon={<IconIssueStroked />} color=\"amber\">\n Unknown\n </UITag>\n );\n return;\n }\n\n const rootField = last(v.parentFields);\n\n const rootTitle = (\n <UIRootTitle>{rootField?.meta.title ? `${rootField.meta.title} -` : ''}</UIRootTitle>\n );\n const rootIcon = this.renderIcon(rootField?.meta.icon);\n\n this.root.render(\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{v?.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag prefixIcon={rootIcon}>\n {rootTitle}\n <UIVarName>{v?.key}</UIVarName>\n </UITag>\n </Popover>\n );\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('span');\n\n this.root = createRoot(dom);\n\n this.toDispose.push(\n Disposable.create(() => {\n this.root.unmount();\n })\n );\n\n this.toDispose.push(\n this.scope.available.trackByKeyPath(\n this.keyPath,\n (v) => {\n this.renderVariable(v);\n },\n { triggerOnInit: false }\n )\n );\n\n this.renderVariable(this.scope.available.getByKeyPath(this.keyPath));\n\n return dom;\n }\n\n eq(other: VariableTagWidget) {\n return isEqual(this.keyPath, other.keyPath);\n }\n\n ignoreEvent(): boolean {\n return false;\n }\n\n destroy(dom: HTMLElement): void {\n this.toDispose.dispose();\n }\n}\n\nexport function VariableTagInject() {\n const injector = useInjector();\n\n const scope = useCurrentScope();\n\n // 基于 {{var}} 的正则进行匹配,匹配后进行自定义渲染\n useLayoutEffect(() => {\n const atMatcher = new MatchDecorator({\n regexp: /\\{\\{([^\\}\\{]+)\\}\\}/g,\n decoration: (match) =>\n Decoration.replace({\n widget: new VariableTagWidget({\n keyPath: match[1]?.split('.') ?? [],\n scope,\n }),\n }),\n });\n\n return injector.inject([\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(private view: EditorView) {\n this.decorations = atMatcher.createDeco(view);\n }\n\n update() {\n this.decorations = atMatcher.createDeco(this.view);\n }\n },\n {\n decorations: (p) => p.decorations,\n provide(p) {\n return EditorView.atomicRanges.of(\n (view) => view.plugin(p)?.decorations ?? Decoration.none\n );\n },\n }\n ),\n ]);\n }, [injector]);\n\n return null;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const UITag = styled(Tag)`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n max-width: 300px;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0 5px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowValue } from '@/typings';\nimport { useObjectList } from '@/hooks';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function InputsValues({\n value,\n onChange,\n style,\n readonly,\n constantProps,\n schema,\n hasError,\n}: PropsType) {\n const { list, updateKey, updateValue, remove, add } = useObjectList<IFlowValue | undefined>({\n value,\n onChange,\n sortIndexKey: 'extra.index',\n });\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value as IFlowConstantRefValue}\n onChange={(v) => updateValue(item.id, v)}\n schema={schema}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies: [...(constantProps?.strategies || [])],\n }}\n />\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() =>\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n })\n }\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { HorizontalLine, TreeItem, TreeLevel, TreeRow, TreeTitle } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n parentKey?: string;\n depth?: number;\n drilldown?: boolean;\n showIcon?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplaySchemaTree(props: Omit<PropsType, 'parentKey' | 'depth'>) {\n return <SchemaTree {...props} />;\n}\n\nfunction SchemaTree(props: PropsType) {\n const {\n value: schema = {},\n drilldown = true,\n depth = 0,\n showIcon = true,\n parentKey = '',\n } = props || {};\n\n const typeManager = useTypeManager();\n\n const config = typeManager.getTypeBySchema(schema);\n const title = typeManager.getComplexText(schema);\n const icon = typeManager?.getDisplayIcon(schema);\n let properties: IJsonSchema['properties'] =\n drilldown && config ? config.getTypeSchemaProperties(schema) : {};\n const childEntries = Object.entries(properties || {});\n\n return (\n <TreeItem depth={depth} key={parentKey || 'root'}>\n <TreeRow>\n {depth !== 0 && <HorizontalLine />}\n {showIcon &&\n icon &&\n React.cloneElement(icon, {\n className: 'tree-icon',\n })}\n <TreeTitle>\n {parentKey ? (\n <>\n {`${parentKey} (`}\n {title}\n {')'}\n </>\n ) : (\n title\n )}\n </TreeTitle>\n </TreeRow>\n {childEntries?.length ? (\n <TreeLevel>\n {childEntries.map(([key, value]) => (\n <SchemaTree key={key} {...props} parentKey={key} value={value} depth={depth + 1} />\n ))}\n </TreeLevel>\n ) : null}\n </TreeItem>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const TreeRow = styled.div`\n display: flex;\n align-items: center;\n\n .tree-icon {\n margin-right: 8px;\n width: 14px;\n height: 14px;\n }\n\n height: 27px;\n white-space: nowrap;\n`;\n\nexport const HorizontalLine = styled.div`\n position: relative;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &::after {\n top: 0px;\n right: 6px;\n width: 15px;\n height: 1px;\n }\n`;\n\nexport const TreeTitle = styled.div`\n // overflow: hidden;\n // text-overflow: ellipsis;\n`;\n\nexport const TreeLevel = styled.div`\n padding-left: 30px;\n position: relative;\n\n /* &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n top: 0px;\n bottom: 0px;\n left: -22px;\n width: 1px;\n } */\n`;\n\nexport const TreeItem = styled.div<{ depth: number }>`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &:not(:last-child)::before {\n width: 1px;\n top: 0;\n bottom: 0;\n left: -22px;\n }\n\n &:last-child::before {\n width: 1px;\n top: 0;\n height: 14px;\n left: -22px;\n }\n\n ${(props) =>\n props.depth === 0 &&\n css`\n &::before {\n width: 0px !important;\n }\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect } from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useCurrentScope, useRefresh } from '@flowgram.ai/editor';\n\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\nimport { DisplayOutputsWrapper } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n showIconInTree?: boolean;\n displayFromScope?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayOutputs({ value, showIconInTree, displayFromScope }: PropsType) {\n const scope = useCurrentScope();\n const refresh = useRefresh();\n\n useEffect(() => {\n if (!displayFromScope) {\n return () => null;\n }\n\n const disposable = scope.output.onListOrAnyVarChange(() => {\n refresh();\n });\n\n return () => {\n disposable.dispose();\n };\n }, [displayFromScope]);\n\n const properties: IJsonSchema['properties'] = displayFromScope\n ? scope.output.variables?.reduce((acm, curr) => {\n acm = {\n ...acm,\n ...(JsonSchemaUtils.astToSchema(curr.type)?.properties || {}),\n };\n return acm;\n }, {})\n : value?.properties || {};\n\n const childEntries = Object.entries(properties || {});\n\n return (\n <DisplayOutputsWrapper>\n {childEntries.map(([key, schema]) => (\n <DisplaySchemaTag\n key={key}\n title={key}\n value={schema}\n showIconInTree={showIconInTree}\n warning={!schema}\n />\n ))}\n </DisplayOutputsWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Popover } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\nimport { DisplaySchemaTree } from '@/components/display-schema-tree';\n\nimport { PopoverContent, StyledTag, TitleSpan } from './styles';\n\ninterface PropsType {\n title?: JSX.Element | string;\n value?: IJsonSchema;\n showIconInTree?: boolean;\n warning?: boolean;\n}\n\nexport function DisplaySchemaTag({ value = {}, showIconInTree, title, warning }: PropsType) {\n const typeManager = useTypeManager();\n const icon =\n typeManager?.getDisplayIcon(value) || typeManager.getDisplayIcon({ type: 'unknown' });\n\n return (\n <Popover\n content={\n <PopoverContent>\n <DisplaySchemaTree value={value} typeManager={typeManager} showIcon={showIconInTree} />\n </PopoverContent>\n }\n >\n <StyledTag color={warning ? 'amber' : 'white'}>\n {icon &&\n React.cloneElement(icon, {\n className: 'tag-icon',\n })}\n {title && <TitleSpan>{title}</TitleSpan>}\n </StyledTag>\n </Popover>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const PopoverContent = styled.div`\n padding: 10px;\n`;\n\nexport const StyledTag = styled(Tag)`\n padding: 4px;\n\n .tag-icon {\n width: 12px;\n height: 12px;\n }\n`;\n\nexport const TitleSpan = styled.span`\n display: inline-block;\n margin-left: 4px;\n margin-top: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayOutputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\ninterface PropsType {\n value?: IFlowValue;\n title?: JSX.Element | string;\n showIconInTree?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayFlowValue({ value, title, showIconInTree }: PropsType) {\n const available = useScopeAvailable();\n\n const variable = value?.type === 'ref' ? available.getByKeyPath(value?.content) : undefined;\n\n const schema = useMemo(() => {\n if (value?.type === 'ref') {\n return JsonSchemaUtils.astToSchema(variable?.type);\n }\n if (value?.type === 'template') {\n return { type: 'string' };\n }\n if (value?.type === 'constant') {\n return FlowValueUtils.inferConstantJsonSchema(value);\n }\n\n return { type: 'unknown' };\n }, [value, variable?.hash]);\n\n return (\n <DisplaySchemaTag\n title={title}\n value={schema}\n showIconInTree={showIconInTree}\n warning={value?.type === 'ref' && !variable}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\nimport { DisplayFlowValue } from '@/components/display-flow-value';\n\nimport { DisplayInputsWrapper } from './styles';\nimport { DisplaySchemaTag } from '../display-schema-tag';\n\ninterface PropsType {\n value?: any;\n showIconInTree?: boolean;\n}\n\nexport function DisplayInputsValues({ value, showIconInTree }: PropsType) {\n const childEntries = Object.entries(value || {});\n\n return (\n <DisplayInputsWrapper>\n {childEntries.map(([key, value]) => {\n if (FlowValueUtils.isFlowValue(value)) {\n return (\n <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n );\n }\n\n if (isPlainObject(value)) {\n return (\n <DisplayInputsValueAllInTag\n key={key}\n title={key}\n value={value}\n showIconInTree={showIconInTree}\n />\n );\n }\n\n return null;\n })}\n </DisplayInputsWrapper>\n );\n}\n\nexport function DisplayInputsValueAllInTag({\n value,\n title,\n showIconInTree,\n}: PropsType & {\n title: string;\n}) {\n const available = useScopeAvailable();\n\n const schema = useMemo(\n () => FlowValueUtils.inferJsonSchema(value, available.scope),\n [available.version, value]\n );\n\n return <DisplaySchemaTag title={title} value={schema} showIconInTree={showIconInTree} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayInputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { FieldArray, FieldArrayRenderProps } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { AssignRow, AssignValueType } from '@/components/assign-row';\n\ninterface AssignRowsProps {\n name: string;\n readonly?: boolean;\n}\n\nexport function AssignRows(props: AssignRowsProps) {\n const { name, readonly } = props;\n\n return (\n <FieldArray name={name}>\n {({ field }: FieldArrayRenderProps<AssignValueType | undefined>) => (\n <>\n {field.map((childField, index) => (\n <AssignRow\n key={childField.key}\n readonly={readonly}\n value={childField.value}\n onChange={(value) => {\n childField.onChange(value);\n }}\n onDelete={() => field.remove(index)}\n />\n ))}\n <div style={{ display: 'flex', gap: 5 }}>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'assign' })}\n >\n Assign\n </Button>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'declare' })}\n >\n Declaration\n </Button>\n </div>\n </>\n )}\n </FieldArray>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconMinus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue } from '@/typings';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { AssignRowProps } from './types';\nimport { BlurInput } from './components/blur-input';\n\nexport function AssignRow(props: AssignRowProps) {\n const {\n value = {\n operator: 'assign',\n },\n onChange,\n onDelete,\n readonly,\n } = props;\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: 5 }}>\n <div style={{ width: 150, minWidth: 150, maxWidth: 150 }}>\n {value?.operator === 'assign' ? (\n <InjectVariableSelector\n style={{ width: '100%', height: 26 }}\n value={value?.left?.content}\n config={{ placeholder: 'Select Left' }}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: { type: 'ref', content: v },\n })\n }\n />\n ) : (\n <BlurInput\n style={{ height: 26 }}\n size=\"small\"\n placeholder=\"Input Name\"\n value={value?.left}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: v,\n })\n }\n />\n )}\n </div>\n <div style={{ flexGrow: 1 }}>\n <InjectDynamicValueInput\n readonly={readonly}\n value={value?.right as IFlowConstantRefValue | undefined}\n onChange={(v) =>\n onChange?.({\n ...value,\n right: v,\n })\n }\n />\n </div>\n {onDelete && (\n <div>\n <IconButton\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus />}\n onClick={() => onDelete?.()}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { AssignValueType } from './types';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\nimport { PropsType } from './types';\nimport { UITreeItems } from './styles';\nimport { InputValueRow } from './row';\n\nexport function InputsValuesTree(props: PropsType) {\n const { value, onChange, readonly, hasError, constantProps } = props;\n\n const { list, updateKey, updateValue, remove, add } = useObjectList({\n value,\n onChange,\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n return (\n <div>\n <UITreeItems>\n {list.map((item) => (\n <InputValueRow\n key={item.id}\n keyName={item.key}\n value={item.value}\n onUpdateKey={(key) => updateKey(item.id, key)}\n onUpdateValue={(value) => updateValue(item.id, value)}\n onRemove={() => remove(item.id)}\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n />\n ))}\n </UITreeItems>\n <Button\n style={{ marginTop: 10, marginLeft: 16 }}\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n }}\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div``;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { IconButton, Input } from '@douyinfe/semi-ui';\nimport { IconChevronDown, IconChevronRight, IconDelete } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantValue } from '@/typings';\nimport { ConstantInputStrategy } from '@/components/constant-input';\n\nimport { PropsType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIRow,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UITreeItems,\n} from './styles';\nimport { useChildList } from './hooks/use-child-list';\nimport { InjectDynamicValueInput } from '../dynamic-value-input';\nimport { BlurInput } from '../blur-input';\n\nconst AddObjectChildStrategy: ConstantInputStrategy = {\n hit: (schema) => schema.type === 'object',\n Renderer: () => (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={I18n.t('Configure via child fields')}\n />\n ),\n};\n\nexport function InputValueRow(\n props: {\n keyName?: string;\n value?: any;\n onUpdateKey: (key: string) => void;\n onUpdateValue: (value: any) => void;\n onRemove?: () => void;\n $isLast?: boolean;\n $level?: number;\n } & Pick<PropsType, 'constantProps' | 'hasError' | 'readonly'>\n) {\n const {\n keyName,\n value,\n $level = 0,\n onUpdateKey,\n onUpdateValue,\n $isLast,\n onRemove,\n constantProps,\n hasError,\n readonly,\n } = props;\n const [collapse, setCollapse] = useState(false);\n\n const { canAddField, hasChildren, list, add, updateKey, updateValue, remove } = useChildList(\n value,\n onUpdateValue\n );\n\n const strategies = useMemo(\n () => [...(hasChildren ? [AddObjectChildStrategy] : []), ...(constantProps?.strategies || [])],\n [hasChildren, constantProps?.strategies]\n );\n\n const flowDisplayValue = useMemo(\n () =>\n hasChildren\n ? ({\n type: 'constant',\n schema: { type: 'object' },\n } as IFlowConstantValue)\n : value,\n [hasChildren, value]\n );\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={hasChildren}>\n {hasChildren && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={keyName}\n onChange={(v) => onUpdateKey?.(v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={flowDisplayValue}\n onChange={(v) => onUpdateValue(v)}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies,\n }}\n />\n <UIActions>\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => onRemove?.()}\n />\n </UIActions>\n </UIRow>\n </UITreeItemMain>\n {hasChildren && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {list.map((_item, index) => (\n <InputValueRow\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n key={_item.id}\n keyName={_item.key}\n value={_item.value}\n $level={$level + 1} // 传递递增的层级\n onUpdateValue={(_v) => {\n updateValue(_item.id, _v);\n }}\n onUpdateKey={(k) => {\n updateKey(_item.id, k);\n }}\n onRemove={() => {\n remove(_item.id);\n }}\n $isLast={index === list.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\ninterface ListItem {\n id: string;\n key?: string;\n value?: any;\n}\n\nexport function useChildList(\n value?: any,\n onChange?: (value: any) => void\n): {\n canAddField: boolean;\n hasChildren: boolean;\n list: ListItem[];\n add: (defaultValue?: any) => void;\n updateKey: (id: string, key: string) => void;\n updateValue: (id: string, value: any) => void;\n remove: (id: string) => void;\n} {\n const canAddField = useMemo(() => {\n if (!isPlainObject(value)) {\n return false;\n }\n\n if (FlowValueUtils.isFlowValue(value)) {\n // Constant Object Value Can Add child fields\n return FlowValueUtils.isConstant(value) && value?.schema?.type === 'object';\n }\n\n return true;\n }, [value]);\n\n const objectListValue = useMemo(() => {\n if (isPlainObject(value)) {\n if (FlowValueUtils.isFlowValue(value)) {\n return undefined;\n }\n return value;\n }\n return undefined;\n }, [value]);\n\n const { list, add, updateKey, updateValue, remove } = useObjectList<any>({\n value: objectListValue,\n onChange: (value) => {\n onChange?.(value);\n },\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n const hasChildren = useMemo(\n () => canAddField && (list.length > 0 || Object.keys(objectListValue || {}).length > 0),\n [canAddField, list.length, Object.keys(objectListValue || {}).length]\n );\n\n return {\n canAddField,\n hasChildren,\n list,\n add,\n updateKey,\n updateValue,\n remove,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchInputEffect: EffectOptions[] = createEffectFromVariableProvider({\n private: true,\n parse: (value: IFlowRefValue, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}_locals`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: [\n ASTFactory.createProperty({\n key: 'item',\n initializer: ASTFactory.createEnumerateExpression({\n enumerateFor: ASTFactory.createKeyPathExpression({\n keyPath: value.content || [],\n }),\n }),\n }),\n ASTFactory.createProperty({\n key: 'index',\n type: ASTFactory.createNumber(),\n }),\n ],\n }),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\n/**\n * Auto rename ref when form item's key is renamed\n *\n * Example:\n *\n * formMeta: {\n * effects: {\n * \"inputsValues\": autoRenameRefEffect,\n * }\n * }\n */\nexport const autoRenameRefEffect: EffectOptions[] = [\n {\n event: DataEvent.onValueInit,\n effect: ((params) => {\n const { context, form, name } = params;\n\n const renameService = context.node.getService(VariableFieldKeyRenameService);\n\n const disposable = renameService.onRename(({ before, after }) => {\n const beforeKeyPath = [\n ...before.parentFields.map((_field) => _field.key).reverse(),\n before.key,\n ];\n const afterKeyPath = [\n ...after.parentFields.map((_field) => _field.key).reverse(),\n after.key,\n ];\n\n // traverse rename refs inside form item 'name'\n traverseRef(name, form.getValueIn(name), (_drilldownName, _v) => {\n if (_v.type === 'ref') {\n // ref auto rename\n if (isKeyPathMatch(_v.content, beforeKeyPath)) {\n _v.content = [...afterKeyPath, ...(_v.content || [])?.slice(beforeKeyPath.length)];\n form.setValueIn(_drilldownName, _v);\n }\n } else if (_v.type === 'template') {\n // template auto rename\n const templateKeyPaths = FlowValueUtils.getTemplateKeyPaths(_v);\n let hasMatch = false;\n\n templateKeyPaths.forEach((_keyPath) => {\n if (isKeyPathMatch(_keyPath, beforeKeyPath)) {\n hasMatch = true;\n const nextKeyPath = [\n ...afterKeyPath,\n ...(_keyPath || [])?.slice(beforeKeyPath.length),\n ];\n _v.content = _v.content?.replace(\n `{{${_keyPath.join('.')}}`,\n `{{${nextKeyPath.join('.')}}`\n );\n }\n });\n\n if (hasMatch) {\n form.setValueIn(_drilldownName, { ..._v });\n }\n }\n });\n });\n\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n\n/**\n * If ref value's keyPath is the under as targetKeyPath\n * @param value\n * @param targetKeyPath\n * @returns\n */\nfunction isKeyPathMatch(keyPath: string[] = [], targetKeyPath: string[]) {\n return targetKeyPath.every((_key, index) => _key === keyPath[index]);\n}\n\n/**\n * Traverse value to find ref\n * @param value\n * @param options\n * @returns\n */\nfunction traverseRef(\n name: string,\n value: any,\n cb: (name: string, _v: IFlowRefValue | IFlowTemplateValue) => void\n) {\n for (const { value: _v, path } of FlowValueUtils.traverse(value, {\n includeTypes: ['ref', 'template'],\n path: name,\n })) {\n cb(path, _v as IFlowRefValue | IFlowTemplateValue);\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nexport const provideJsonSchemaOutputs: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: IJsonSchema, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title') || ctx.node.id,\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: JsonSchemaUtils.schemaToAST(value),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n FlowNodeRegistry,\n FlowNodeVariableData,\n} from '@flowgram.ai/editor';\n\nexport const syncVariableTitle: EffectOptions[] = [\n {\n event: DataEvent.onValueChange,\n effect: (({ value, context }) => {\n context.node.getData(FlowNodeVariableData).allScopes.forEach((_scope) => {\n _scope.output.variables.forEach((_var) => {\n _var.updateMeta({\n ...(_var.meta || {}),\n title: value || context.node.id,\n icon: context.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n });\n });\n });\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isEmpty } from 'lodash';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n getNodeScope,\n getNodePrivateScope,\n} from '@flowgram.ai/editor';\n\nexport const validateWhenVariableSync = ({\n scope,\n}: {\n scope?: 'private' | 'public';\n} = {}): EffectOptions[] => [\n {\n event: DataEvent.onValueInit,\n effect: (({ context, form }) => {\n const nodeScope =\n scope === 'private' ? getNodePrivateScope(context.node) : getNodeScope(context.node);\n\n const disposable = nodeScope.available.onListOrAnyVarChange(() => {\n if (!isEmpty(form.state.errors)) {\n form.validate();\n }\n });\n\n return () => disposable.dispose();\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseVariableField,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefValueChange(({ name, variable, form }) => {\n * const schema = JsonSchemaUtils.astToSchema(variable?.type);\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefValueChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { variable?: BaseVariableField }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath(\n value?.content || [],\n (v) => {\n cb({ ...params, variable: v });\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n BaseType,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefSchemaChange(({ name, schema, form }) => {\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefSchemaChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { schema?: IJsonSchema }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath<BaseType | undefined>(\n value?.content || [],\n (_type) => {\n cb({ ...params, schema: JsonSchemaUtils.astToSchema(_type) });\n },\n {\n selector: (_v) => _v?.type,\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodePrivateScope,\n getNodeScope,\n ScopeChainTransformService,\n type EffectOptions,\n type FormPluginCreator,\n FlowNodeScopeType,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchOutputsEffect: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: Record<string, IFlowRefValue>, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: Object.entries(value).map(([_key, value]) =>\n ASTFactory.createProperty({\n key: _key,\n initializer: ASTFactory.createWrapArrayExpression({\n wrapFor: ASTFactory.createKeyPathExpression({\n keyPath: value?.content || [],\n }),\n }),\n })\n ),\n }),\n }),\n ],\n});\n\n/**\n * Free Layout only right now\n */\nexport const createBatchOutputsFormPlugin: FormPluginCreator<{ outputKey: string }> =\n defineFormPluginCreator({\n name: 'batch-outputs-plugin',\n onSetupFormMeta({ mergeEffect }, { outputKey }) {\n mergeEffect({\n [outputKey]: provideBatchOutputsEffect,\n });\n },\n onInit(ctx, { outputKey }) {\n const chainTransformService = ctx.node.getService(ScopeChainTransformService);\n\n const batchNodeType = ctx.node.flowNodeType;\n\n const transformerId = `${batchNodeType}-outputs`;\n\n if (chainTransformService.hasTransformer(transformerId)) {\n return;\n }\n\n chainTransformService.registerTransformer(transformerId, {\n transformCovers: (covers, ctx) => {\n const node = ctx.scope.meta?.node;\n\n // Child Node's variable can cover parent\n if (node?.parent?.flowNodeType === batchNodeType) {\n return [...covers, getNodeScope(node.parent)];\n }\n\n return covers;\n },\n transformDeps(scopes, ctx) {\n const scopeMeta = ctx.scope.meta;\n\n if (scopeMeta?.type === FlowNodeScopeType.private) {\n return scopes;\n }\n\n const node = scopeMeta?.node;\n\n // Public of Loop Node depends on child Node\n if (node?.flowNodeType === batchNodeType) {\n // Get all child blocks\n const childBlocks = node.blocks;\n\n // public scope of all child blocks\n return [\n getNodePrivateScope(node),\n ...childBlocks.map((_childBlock) => getNodeScope(_childBlock)),\n ];\n }\n\n return scopes;\n },\n });\n },\n });\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { get, set } from 'lodash';\nimport { defineFormPluginCreator, getNodePrivateScope, getNodeScope } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\n\ninterface InputConfig {\n sourceKey: string;\n targetKey: string;\n scope?: 'private' | 'public';\n}\n\nexport const createInferInputsPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit }, { sourceKey, targetKey, scope }) {\n if (!sourceKey || !targetKey) {\n return;\n }\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n targetKey,\n FlowValueUtils.inferJsonSchema(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { set, uniqBy } from 'lodash';\nimport { JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowValue } from '@/typings';\n\ntype AssignValueType =\n | {\n operator: 'assign';\n left?: IFlowRefValue;\n right?: IFlowValue;\n }\n | {\n operator: 'declare';\n left?: string;\n right?: IFlowValue;\n };\n\ninterface InputConfig {\n assignKey: string;\n outputKey: string;\n}\n\nexport const createInferAssignPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit, mergeEffect }, { assignKey, outputKey }) {\n if (!assignKey || !outputKey) {\n return;\n }\n\n mergeEffect({\n [assignKey]: createEffectFromVariableProvider({\n parse: (value: AssignValueType[], ctx) => {\n const declareRows = uniqBy(\n value.filter((_v) => _v.operator === 'declare' && _v.left && _v.right),\n 'left'\n );\n\n return [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: declareRows.map((_v) =>\n ASTFactory.createProperty({\n key: _v.left as string,\n type:\n _v.right?.type === 'constant'\n ? JsonSchemaUtils.schemaToAST(_v.right?.schema || {})\n : undefined,\n initializer:\n _v.right?.type === 'ref'\n ? ASTFactory.createKeyPathExpression({\n keyPath: _v.right?.content || [],\n })\n : {},\n })\n ),\n }),\n }),\n ];\n },\n }),\n });\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n outputKey,\n JsonSchemaUtils.astToSchema(getNodeScope(ctx.node).output.variables?.[0]?.type)\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isNil } from 'lodash';\nimport { FeedbackLevel, FlowNodeEntity, getNodeScope } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\ninterface Context {\n node: FlowNodeEntity;\n required?: boolean;\n errorMessages?: {\n required?: string;\n unknownVariable?: string;\n };\n}\n\nexport function validateFlowValue(value: IFlowValue | undefined, ctx: Context) {\n const { node, required, errorMessages } = ctx;\n\n const {\n required: requiredMessage = 'Field is required',\n unknownVariable: unknownVariableMessage = 'Unknown Variable',\n } = errorMessages || {};\n\n if (required && (isNil(value) || isNil(value?.content) || value?.content === '')) {\n return {\n level: FeedbackLevel.Error,\n message: requiredMessage,\n };\n }\n\n if (value?.type === 'ref') {\n const variable = getNodeScope(node).available.getByKeyPath(value?.content || []);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n\n if (value?.type === 'template') {\n const allRefs = FlowValueUtils.getTemplateKeyPaths(value);\n\n for (const ref of allRefs) {\n const variable = getNodeScope(node).available.getByKeyPath(ref);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n }\n\n return undefined;\n}\n"],"mappings":";AAKA,OAAOA,WAAS,eAAe;AAG/B,SAAS,QAAAC,aAAY;AAGrB,SAAS,eAAe;AACxB,SAAS,wBAAwB,wBAAwB;;;ACPzD,SAAS,gBAAgB;AAyClB,SAAS,wBAAwB,OAAiB;AACvD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,2BAA2B,KAAK,GAAG;AACrC,aAAO,wBAAwB,KAAK;AAAA,IACtC;AAEA,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAKC,MAAK,MAAqB;AAAA,QACzD;AAAA,QACA,wBAAwBA,MAAK;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,uBAAuB;AAAA,EAC1C;AAEA,SAAO;AACT;AAgCO,SAAS,sBAAsB,OAAiB;AACrD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,wBAAwB,KAAK,GAAG;AAClC,aAAO,wBAAwB,KAAK;AAAA,IACtC;AAEA,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAKA,MAAK,MAAqB;AAAA,QACzD;AAAA,QACA,sBAAsBA,MAAK;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,qBAAqB;AAAA,EACxC;AAEA,SAAO;AACT;AAEO,SAAS,2BAA2B,OAA+C;AACxF,SACE,SAAS,KAAK,KACd,OAAO,KAAK,KAAK,EAAE,WAAW,KAC7B,MAAc,SAAS,SACxB,OAAQ,MAAc,YAAY;AAEtC;AAEO,SAAS,wBAAwB,OAA4C;AAClF,SACE,SAAS,KAAK,KACd,OAAO,KAAK,KAAK,EAAE,WAAW,KAC7B,MAAc,SAAS,SACxB,MAAM,QAAS,MAAc,OAAO;AAExC;AAEO,SAAS,wBAAwB,OAAiC;AACvE,QAAM,UAAU,MAAM,QAAQ,MAAM,GAAG;AAEvC,MAAI,QAAQ,CAAC,MAAM,WAAW;AAC5B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,GAAI,QAAQ,SAAS,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAE;AAAA,IAC1F;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAEO,SAAS,wBAAwB,OAA8B;AACpE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM,QAAQ,KAAK,GAAG;AAAA,EACjC;AACF;;;ACxJA,OAAO,WAAW;AAElB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAsCA,SAAS,qBACd,WACA,QAGiB;AACjB,QAAM,kBAAmC,CAAC,UAAU;AAClD,UAAM,YAAY,uBAAuB;AAGzC,QAAI,CAAC,WAAW,QAAQ,oBAAoB,GAAG;AAE7C,aAAO,MAAM,cAAc,WAAmC,EAAE,GAAG,MAAM,CAAC;AAAA,IAC5E;AAGA,UAAM,mBAAmB,UAAU,IAAI,oBAAoB;AAG3D,UAAM,YAAY,QAAQ,aAAa,UAAU,aAAa,UAAU,QAAQ;AAGhF,UAAM,WAAW,iBAAiB,0BAA0B,SAAS;AAGrE,QAAI,UAAU,SAAS,0BAA0B,OAAO;AAEtD,aAAO,MAAM,cAAc,WAAmC,EAAE,GAAG,MAAM,CAAC;AAAA,IAC5E;AAGA,WAAO,MAAM,cAAc,SAAS,UAAU;AAAA,MAC5C,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;ACjFA,SAAS,SAAS,YAAAC,WAAU,eAAe,YAAY;AACvD,SAAsB,uBAAuB;;;ACD7C,OAAO,OAAO;AAGP,IAAM,cAAc,EACxB,OAAO;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS;AAEL,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,SAAS,EAAE,IAAI,EAAE,SAAS;AAAA,EAC1B,QAAQ,EAAE,IAAI,EAAE,SAAS;AAAA,EACzB,OAAO;AACT,CAAC;AAEM,IAAM,YAAY,EAAE,OAAO;AAAA,EAChC,MAAM,EAAE,QAAQ,KAAK;AAAA,EACrB,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC,OAAO;AACT,CAAC;AAEM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,MAAM,EAAE,QAAQ,YAAY;AAAA,EAC5B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAO;AACT,CAAC;AAEM,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAO;AACT,CAAC;;;ADhBM,IAAU;AAAA,CAAV,CAAUC,oBAAV;AAIE,WAAS,WAAW,OAAyC;AAClE,WAAO,eAAe,UAAU,KAAK,EAAE;AAAA,EACzC;AAFO,EAAAA,gBAAS;AAOT,WAAS,MAAM,OAAoC;AACxD,WAAO,UAAU,UAAU,KAAK,EAAE;AAAA,EACpC;AAFO,EAAAA,gBAAS;AAOT,WAAS,aAAa,OAA2C;AACtE,WAAO,iBAAiB,UAAU,KAAK,EAAE;AAAA,EAC3C;AAFO,EAAAA,gBAAS;AAOT,WAAS,WAAW,OAAyC;AAClE,WAAO,eAAe,UAAU,KAAK,EAAE;AAAA,EACzC;AAFO,EAAAA,gBAAS;AAOT,WAAS,gBAAgB,OAA4C;AAC1E,WAAO,WAAW,KAAK,KAAK,MAAM,KAAK;AAAA,EACzC;AAFO,EAAAA,gBAAS;AAOT,WAAS,YAAY,OAAiC;AAC3D,WAAO,WAAW,KAAK,KAAK,MAAM,KAAK,KAAK,aAAa,KAAK,KAAK,WAAW,KAAK;AAAA,EACrF;AAFO,EAAAA,gBAAS;AAUT,YAAU,SACf,OACA,SAIgD;AAChD,UAAM,EAAE,eAAe,CAAC,OAAO,UAAU,GAAG,OAAO,GAAG,IAAI;AAE1D,QAAI,cAAc,KAAK,GAAG;AACxB,UAAI,MAAM,KAAK,KAAK,aAAa,SAAS,KAAK,GAAG;AAChD,cAAM,EAAE,OAAO,KAAK;AACpB;AAAA,MACF;AAEA,UAAI,WAAW,KAAK,KAAK,aAAa,SAAS,UAAU,GAAG;AAC1D,cAAM,EAAE,OAAO,KAAK;AACpB;AAAA,MACF;AAEA,UAAI,aAAa,KAAK,KAAK,aAAa,SAAS,YAAY,GAAG;AAC9D,cAAM,EAAE,OAAO,KAAK;AACpB;AAAA,MACF;AAEA,UAAI,WAAW,KAAK,KAAK,aAAa,SAAS,UAAU,GAAG;AAC1D,cAAM,EAAE,OAAO,KAAK;AACpB;AAAA,MACF;AAEA,iBAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,eAAO,SAAS,QAAQ,EAAE,GAAG,SAAS,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;AAAA,MACjE;AACA;AAAA,IACF;AAEA,QAAI,QAAQ,KAAK,GAAG;AAClB,iBAAW,CAAC,MAAM,MAAM,KAAK,MAAM,QAAQ,GAAG;AAC5C,eAAO,SAAS,QAAQ,EAAE,GAAG,SAAS,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC;AAAA,MAClE;AACA;AAAA,IACF;AAEA;AAAA,EACF;AA5CO,EAAAA,gBAAU;AAmDV,WAAS,oBAAoB,OAA2B;AAE7D,UAAM,aAAa;AACnB,WAAO,KAAK,MAAM,SAAS,MAAM,UAAU,KAAK,CAAC,CAAC,EAAE;AAAA,MAAI,CAAC,aACvD,SAAS,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG;AAAA,IACjC;AAAA,EACF;AANO,EAAAA,gBAAS;AAaT,WAAS,wBAAwB,OAAoD;AAC1F,QAAI,OAAO,QAAQ;AACjB,aAAO,MAAM;AAAA,IACf;AAEA,QAAI,OAAO,MAAM,YAAY,UAAU;AACrC,aAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF;AAEA,QAAI,OAAO,MAAM,YAAY,UAAU;AACrC,aAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF;AAEA,QAAI,OAAO,MAAM,YAAY,WAAW;AACtC,aAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF;AAEA,QAAIC,UAAS,MAAM,OAAO,GAAG;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO;AAAA,EACT;AA7BO,EAAAD,gBAAS;AAqCT,WAAS,gBAAgB,QAAa,OAAuC;AAClF,QAAI,cAAc,MAAM,GAAG;AACzB,UAAI,WAAW,MAAM,GAAG;AACtB,eAAO,wBAAwB,MAAM;AAAA,MACvC;AAEA,UAAI,MAAM,MAAM,GAAG;AACjB,cAAM,WAAW,MAAM,UAAU,aAAa,QAAQ,OAAO;AAC7D,cAAM,SAAS,UAAU,OAAO,gBAAgB,YAAY,UAAU,IAAI,IAAI;AAE9E,eAAO;AAAA,MACT;AAEA,UAAI,WAAW,MAAM,GAAG;AACtB,eAAO,EAAE,MAAM,SAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ;AACnD,gBAAM,SAAS,gBAAiB,OAAe,GAAG,GAAG,KAAK;AAC1D,cAAI,QAAQ;AACV,gBAAI,GAAG,IAAI;AAAA,UACb;AACA,iBAAO;AAAA,QACT,GAAG,CAAC,CAAgC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AA5BO,EAAAA,gBAAS;AAAA,GAtJD;;;AEhBjB,OAAOE,WAAS,mBAAmB;AAEnC,SAAsB,mBAAAC,wBAAuB;AAC7C,SAAS,YAAAC,WAA6B,6BAA6B;AAEnE,SAAS,YAAY;;;ACNrB,OAAOC,aAAW;AAElB;AAAA,EAEE,mBAAAC;AAAA,EACA,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,OAGjB;;;ACRP,SAAS,6BAA6B;;;ACCtC,OAAOC,YAAW;AAElB,SAAS,YAAY;AACrB,SAAS,OAAO,gBAAgB;AAIzB,IAAM,iBAAkD;AAAA,EAC7D,MAAM;AAAA,EACN,kBAAkB,CAAC,UACjB,OAAO,qBACL,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa,KAAK,EAAE,qBAAqB;AAAA,MACzC,UAAU,MAAM;AAAA,MACf,GAAG;AAAA;AAAA,EACN,IAEA,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAa,KAAK,EAAE,qBAAqB;AAAA,MACzC,UAAU,MAAM;AAAA,MACf,GAAG;AAAA;AAAA,EACN;AAEN;;;AC1BA,OAAOC,YAAW;AAElB,SAAS,QAAAC,aAAY;;;ACHrB,OAAOC,YAAW;AAElB,OAAO,YAAY;;;ACFnB,OAAOC,UAAS,WAAW,cAAc;AAEzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,OAAO,YAAgC;AACvC,SAAS,kBAAkB;;;ACTpB,SAAS,sBAAsB,YAAoB;AACxD,MAAI,eAAe,UAAU;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,eAAe,cAAc;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,eAAe,SAAS;AAC1B,WAAO;AAAA,EACT;AACA,MAAI,eAAe,QAAQ;AACzB,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACdA,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAE7B,UAAU,SAAS,UAAU,MAAM;AACnC,UAAU,SAAS,SAAS,KAAK;AACjC,UAAU,SAAS,cAAc,UAAU;AAE3C,UAAU,SAAS,QAAQ;AAAA;AAAA,EAEzB,UAAU,aAAa;AAAA,IACrB,eAAe,KAAK;AAAA,EACtB,CAAC;AAAA,EACD,iBAAiB,KAAK;AACxB,CAAC;AAED,IAAI,eAAe;AAEZ,IAAM,eAAe,MAAM;AAChC,MAAI,cAAc;AAChB;AAAA,EACF;AACA,iBAAe;AAEf,QAAM,WAAW,IAAI;AAAA,IACnB,IAAI,IAAI,kDAAkD,YAAY,GAAG;AAAA,IACzE,EAAE,MAAM,SAAS;AAAA,EACnB;AACA,aAAW,gBAAgB,WAAW,UAAU;AAAA,IAC9C,iBAAiB;AAAA;AAAA,MAEf,KAAK,CAAC,UAAU,KAAK;AAAA,MACrB,eAAe;AAAA,IACjB;AAAA,EACF,CAAC;AACH;;;ACtCA,SAAS,cAAc;;;ACAvB,SAAS,aAAa,QAAQ,SAAS;AAGvC,IAAM,SAAS;AAAA,EACb,YAAY;AAAA;AAAA,EAEZ,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AACb;AAEO,IAAM,aAAwB,YAAY;AAAA,EAC/C,SAAS;AAAA,EACT,UAAU;AAAA,IACR,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,eAAe,CAAC,WAAW,WAAW,SAAS;AAAA,IAC/C,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IACA,qBAAqB;AAAA,MACnB,iBAAiB;AAAA,IACnB;AAAA,IACA,wBAAwB;AAAA,MACtB,iBAAiB;AAAA,IACnB;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,qBAAqB;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,sBAAsB;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,QAAQ;AAAA;AAAA,IAEN;AAAA,MACE,KAAK,EAAE;AAAA,MACP,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,YAAY;AAAA,MACpB,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,MAAM;AAAA,MACd,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,MAAM;AAAA,MACd,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,IAAI;AAAA,MACZ,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,IAAI;AAAA,MACZ,OAAO,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,SAAS;AAAA,MACjB,OAAO,OAAO;AAAA,IAChB;AAAA;AAAA,IAGA;AAAA,MACE,KAAK,CAAC,EAAE,OAAO;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,KAAK,CAAC,EAAE,qBAAqB;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA;AAAA;AAAA,IAIA;AAAA,MACE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC;AAAA,MAChC,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,KAAK,CAAC,EAAE,aAAa;AAAA,MACrB,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;;;ACjHD,SAAS,eAAAC,cAAa,QAAQC,UAAS;AAGvC,IAAMC,UAAS;AAAA,EACb,YAAY;AAAA;AAAA,EAEZ,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AACb;AAEO,IAAM,YAAuBF,aAAY;AAAA,EAC9C,SAAS;AAAA,EACT,UAAU;AAAA,IACR,YAAYE,QAAO;AAAA,IACnB,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,kBAAkBA,QAAO;AAAA,IACzB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,eAAe,CAAC,WAAW,WAAW,SAAS;AAAA,IAC/C,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IACA,qBAAqB;AAAA,MACnB,iBAAiB;AAAA,IACnB;AAAA,IACA,wBAAwB;AAAA,MACtB,iBAAiB;AAAA,IACnB;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,qBAAqB;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,sBAAsB;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,QAAQ;AAAA;AAAA,IAEN;AAAA,MACE,KAAKD,GAAE;AAAA,MACP,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,YAAY;AAAA,MACpB,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,MAAM;AAAA,MACd,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,MAAM;AAAA,MACd,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,IAAI;AAAA,MACZ,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,IAAI;AAAA,MACZ,OAAOC,QAAO;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK,CAACD,GAAE,SAAS;AAAA,MACjB,OAAOC,QAAO;AAAA,IAChB;AAAA;AAAA,IAGA;AAAA,MACE,KAAK,CAACD,GAAE,OAAO;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,KAAK,CAACA,GAAE,qBAAqB;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA;AAAA;AAAA,IAIA;AAAA,MACE,KAAK,CAACA,GAAE,SAASA,GAAE,YAAY,CAAC;AAAA,MAChC,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,KAAK,CAACA,GAAE,aAAa;AAAA,MACrB,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,KAAK,CAACA,GAAE,QAAQA,GAAE,MAAM,CAAC;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;;;AF5GD,OAAO,SAAS,QAAQ,SAAS;AACjC,OAAO,SAAS,SAAS,UAAU;;;AHWnC,IAAM,mBAAmB,eAAe,QAAQ;AAAA,EAC9C,WAAW,MAAM;AAAA,IACf,gBAAgB;AAAA,MACd,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH,CAAC;AAgBM,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,YAAY,OAAyB,IAAI;AAE/C,YAAU,MAAM;AACd,QAAI,eAAe,cAAc;AAC/B,mBAAa;AAAA,IACf;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,YAAU,MAAM;AAEd,QAAI,UAAU,SAAS,SAAS,MAAM,OAAO;AAC3C,gBAAU,SAAS,SAAS,OAAO,SAAS,EAAE,CAAC;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,gBAAAE,OAAA,cAAC,sBACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,cAAc;AAAA,MACd,SAAS;AAAA,QACP,KAAK,mBAAmB,sBAAsB,UAAU,CAAC;AAAA,QACzD;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,UAAU,CAAC;AAAA,QACX,GAAI,WAAW,CAAC;AAAA,MAClB;AAAA,MACA,UAAU,CAAC,WAAsB;AAC/B,kBAAU,UAAU;AAAA,MACtB;AAAA,MACA,UAAU,CAAC,MAAM,WAAW,EAAE,KAAK;AAAA;AAAA,IAElC,yBACC,gBAAAA,OAAA,cAAC,6BAAuB,qBAAsB;AAAA,IAE/C;AAAA,EACH,CACF;AAEJ;;;ADpFA,IAAM,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,SAAS,eAAe,OAA4B;AACzD,SACE,gBAAAC,OAAA,cAAC,cACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,SAAS;AAAA,QACP,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ,GAAI,MAAM,WAAW,CAAC;AAAA,MACxB;AAAA;AAAA,EACF,CACF;AAEJ;;;ADhBO,IAAM,iBAAkD;AAAA,EAC7D,MAAM;AAAA,EACN,kBAAkB,CAAC,UACjB,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,MAAM,MAAM,WAAW,CAAC;AAAA,MACnC,YAAW;AAAA,MACX,aAAaC,MAAK,EAAE,qBAAqB;AAAA,MACzC,UAAU,MAAM;AAAA;AAAA,EAClB;AAEJ;;;AQnBA,OAAOC,YAAW;AAElB,SAAS,QAAAC,aAAY;AACrB,SAAS,mBAAmB;AAIrB,IAAM,iBAAkD;AAAA,EAC7D,MAAM;AAAA,EACN,kBAAkB,CAAC,UACjB,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAaC,MAAK,EAAE,qBAAqB;AAAA,MACzC,MAAK;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,aAAW;AAAA,MACV,GAAG;AAAA;AAAA,EACN;AAEJ;;;AClBA,OAAOC,YAAW;AAElB,SAAS,QAAAC,aAAY;AACrB,SAAS,eAAAC,oBAAmB;AAIrB,IAAM,kBAAmD;AAAA,EAC9D,MAAM;AAAA,EACN,kBAAkB,CAAC,UACjB,gBAAAF,OAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,aAAaD,MAAK,EAAE,sBAAsB;AAAA,MAC1C,MAAK;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,WAAW;AAAA,MACV,GAAG;AAAA;AAAA,EACN;AAEJ;;;AClBA,OAAOE,YAAW;AAElB,SAAS,QAAAC,aAAY;AACrB,SAAS,cAAc;AAIhB,IAAM,kBAAmD;AAAA,EAC9D,MAAM;AAAA,EACN,kBAAkB,CAAC,UAAU;AAC3B,UAAM,EAAE,OAAO,UAAU,GAAG,KAAK,IAAI;AACrC,WACE,gBAAAD,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,aAAaC,MAAK,EAAE,uBAAuB;AAAA,QAC3C,MAAK;AAAA,QACL,UAAU,MAAM;AAAA,QAChB,YAAY;AAAA,UACV,EAAE,OAAOA,MAAK,EAAE,MAAM,GAAG,OAAO,EAAE;AAAA,UAClC,EAAE,OAAOA,MAAK,EAAE,OAAO,GAAG,OAAO,EAAE;AAAA,QACrC;AAAA,QACA,OAAO,QAAQ,IAAI;AAAA,QACnB,UAAU,CAACC,WAAU,WAAW,CAAC,CAACA,MAAK;AAAA,QACtC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;;;AC1BA,OAAOC,YAAW;AAElB,SAAS,QAAAC,aAAY;AAMd,IAAM,gBAAiD;AAAA,EAC5D,MAAM;AAAA,EACN,kBAAkB,CAAC,UACjB,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,YAAW;AAAA,MACX,UAAU,CAAC,MAAM,MAAM,WAAW,CAAC;AAAA,MACnC,aAAaC,MAAK,EAAE,oBAAoB;AAAA,MACxC,UAAU,MAAM;AAAA;AAAA,EAClB;AAEJ;;;AbXO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,qBAAqB,QAAQ,CAAC,UAAU,sBAAsB,SAAS,KAAK,CAAC;;;AclB7E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,2BAA2B;AAK7B,IAAM,yBAAyB,oBAGnC;AAAA,EACD,OAAO,KAAK,MAAM;AAChB,UAAM,cAAc,IAAI,IAAI,eAAe;AAC3C,yBAAqB,QAAQ,CAAC,UAAU,YAAY,SAAS,KAAK,CAAC;AAEnE,SAAK,OAAO,QAAQ,CAAC,UAAU,YAAY,SAAS,KAAK,CAAC;AAC1D,SAAK,iBAAiB,QAAQ,CAAC,UAAU,YAAY,WAAW,KAAK,CAAC;AAAA,EACxE;AAAA,EACA,kBAAkB,CAAC,yBAAyB;AAC9C,CAAC;;;AfRD,IAAM,iBAAiB,MACrB,qBAAqB;AAEvB,IAAM,+BAA+B,CAAC;AAAA,EACpC,QAAQ,CAAC;AAAA,EACT;AACF,MACE,gBAAAC,QAAA,cAAC,4BAAyB,OAAO,CAAC,GAAG,sBAAsB,GAAG,KAAK,KAChE,QACH;;;AgBvBF;AAAA,EACE;AAAA,EACA,uBAAAC;AAAA,EAEA;AAAA,OACK;AAEA,IAAM,iCAAiCA,qBAA0B;AAAA,EACtE,OAAO,KAAK;AACV,UAAM,iBAAiB,IAAI,IAAI,cAAc;AAE7C,UAAM,cAAc,CAAC,WAAkC;AACrD,UAAI,SAAS,sBAAsB,OAAO,GAAG,GAAG;AAC9C,YAAI,CAAC,OAAO,IAAI,MAAM,UAAU;AAC9B,iBAAO,IAAI,WAAW;AAAA,YACpB,GAAI,OAAO,IAAI,QAAQ,CAAC;AAAA,YACxB,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,mBAAe,cAAc,UAAU,WAAW;AAClD,mBAAe,cAAc,aAAa,WAAW;AAAA,EACvD;AACF,CAAC;;;AjBVM,SAAS,gBAAgB,QAIb;AACjB,QAAM,EAAE,eAAe,eAAe,WAAW,IAAI;AAErD,QAAM,cAAc,eAAe;AACnC,QAAM,YAAY,sBAAsB;AAExC,QAAM,sBAAsB,YAAY,CAAC,aAA4B;AACnE,QAAI,SAAS,MAAM,MAAM;AACvB,UAAI,OAAO,SAAS,KAAK,SAAS,UAAU;AAC1C,eAAO,gBAAAC,QAAA,cAAC,SAAI,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,SAAS,KAAK,MAAM;AAAA,MACzF;AAEA,aAAO,SAAS,KAAK;AAAA,IACvB;AAEA,UAAM,SAASC,iBAAgB,YAAY,SAAS,MAAM,EAAE,iBAAiB,MAAM,CAAC;AAEpF,WAAO,gBAAAD,QAAA,cAAC,QAAK,MAAK,SAAQ,KAAK,YAAY,eAAe,UAAU,CAAC,CAAC,GAAG;AAAA,EAC3E,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAiB,CACrB,UACA,eAAgC,CAAC,MACT;AACxB,QAAI,OAAO,UAAU;AAErB,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,QAAI;AAEJ,QAAIE,UAAS,SAAS,IAAI,GAAG;AAC3B,kBAAY,KAAK,cAAc,CAAC,GAC7B,IAAI,CAAC,cAAc,eAAe,WAA4B,CAAC,GAAG,cAAc,QAAQ,CAAC,CAAC,EAC1F,OAAO,OAAO;AAAA,IACnB;AAEA,UAAM,UAAU,CAAC,GAAG,aAAa,IAAI,CAAC,WAAW,OAAO,GAAG,GAAG,SAAS,GAAG;AAC1E,UAAM,MAAM,QAAQ,KAAK,GAAG;AAE5B,UAAM,kBAAkB,gBACpBD,iBAAgB,iBAAiB,MAAM,aAAa,IACpD;AACJ,UAAM,kBAAkB,gBACpBA,iBAAgB,iBAAiB,MAAM,aAAa,IACpD;AACJ,UAAM,eAAe,aAAa,WAAW,QAAQ,IAAI;AAGzD,UAAM,iBAAiB,SAAS,MAAM;AAEtC,UAAM,gBAAgB,mBAAmB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AAG/E,QAAI,CAAC,iBAAiB,CAAC,UAAU,QAAQ;AACvC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS,MAAM,SAAS,SAAS;AAAA,MACxC,OAAO;AAAA,MACP;AAAA,MACA,MAAM,oBAAoB,QAAQ;AAAA,MAClC;AAAA,MACA,UAAU,CAAC;AAAA,MACX,UAAU,aAAa,CAAC,GAAG,QAAQ,SAAS;AAAA,MAC5C,QAAQ,CAAC,cAAc;AAAA,IACzB;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,UAAU,MAAM,CAAC,EAAE,QAAQ,CAAC,EACpC,IAAI,CAAC,cAAc,eAAe,SAA0B,CAAC,EAC7D,OAAO,OAAO;AACnB;;;AkB9FA,OAAOE,WAAU,WAAW;AAC5B,SAAS,KAAK,kBAAkB;AAEzB,IAAM,cAAcA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS3B,IAAM,YAAYA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAK5B,CAAC,EAAE,YAAY,MACf,eACA;AAAA;AAAA,KAEC;AAAA;AAGE,IAAM,QAAQA,QAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBxB,IAAM,eAAeA,QAAO,UAAU;AAAA,aAChC,CAAC,EAAE,OAAO,MAAO,SAAS,kBAAkB,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBzD,IAAM,mBAAmBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AvB1BhC,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA,SAAS,CAAC;AAAA,EACV;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AAC3B,QAAM,WAAW,gBAAgB,EAAE,eAAe,cAAc,CAAC;AAEjE,QAAM,YAAY,QAAQ,MAAM;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,OAAO,KAAK,GAAG;AAAA,EACxB,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,aAAa,CAAC,SAA+B;AACjD,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,gBAAAC,QAAA,cAAC,SAAI,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,MAAM;AAAA,IAC3E;AAEA,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,0BAA0B;AAAA,MAC1B,UAAU;AAAA,MACV;AAAA,MACA,MAAK;AAAA,MACL,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,MACR;AAAA,MACA,gBAAgB,WAAW,UAAU;AAAA,MACrC,UAAU,CAAC,GAAG,YAAY;AACxB,iBAAU,QAAyB,OAAmB;AAAA,MACxD;AAAA,MACA,oBAAoB,CAAC,YAA0B;AAC7C,YAAI,CAAC,SAAS,SAAS;AACrB,iBACE,gBAAAA,QAAA;AAAA,YAAC;AAAA;AAAA,cACC,YAAY,gBAAAA,QAAA,cAAC,sBAAiB;AAAA,cAC9B,OAAM;AAAA,cACN,UAAU,CAAC;AAAA,cACX,SAAS,MAAM,SAAS,MAAS;AAAA;AAAA,YAEhC,QAAQ,mBAAmB;AAAA,UAC9B;AAAA,QAEJ;AAEA,cAAM,WAAW,WAAW,QAAQ,UAAU,QAAQ,SAAS,IAAI;AAEnE,cAAM,YACJ,gBAAAA,QAAA,cAAC,mBACE,QAAQ,UAAU,QACf,GAAG,QAAQ,UAAU,KAAK,IAAI,QAAQ,SAAS,KAAK,GAAG,MACvD,IACN;AAGF,eACE,gBAAAA,QAAA,cAAC,aACC,gBAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,SACE,gBAAAA,QAAA,cAAC,wBACE,UACA,WACD,gBAAAA,QAAA,cAAC,iBAAW,QAAQ,QAAQ,MAAM,CAAC,EAAE,KAAK,GAAG,CAAE,CACjD;AAAA;AAAA,UAGF,gBAAAA,QAAA;AAAA,YAAC;AAAA;AAAA,cACC,YAAY;AAAA,cACZ,UAAU,CAAC;AAAA,cACX,SAAS,MAAM,SAAS,MAAS;AAAA;AAAA,YAEhC;AAAA,YACA,CAAC,QAAQ,UAAU,gBAAAA,QAAA,cAAC,aAAU,aAAW,QAAE,QAAQ,KAAM;AAAA,UAC5D;AAAA,QACF,CACF;AAAA,MAEJ;AAAA,MACA,WAAW;AAAA,MACX,WAAW,gBAAAA,QAAA,cAAC,0BAAuB,MAAK,SAAQ;AAAA,MAChD;AAAA,MACA,aAAa,QAAQ,eAAeC,MAAK,EAAE,iBAAiB;AAAA;AAAA,EAC9D,CACF;AAEJ;AAEA,iBAAiB,YAAY;AACtB,IAAM,yBAAyB,qBAAqB,gBAAgB;;;AwBvI3E,OAAOC,WAAS,WAAAC,gBAAe;AAG/B,SAAS,UAAU,QAAAC,OAAM,kBAAkB;AAgB3C,IAAM,aAAkC,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAE;AAEjF,IAAM,qBAAqB,CAAC,UAAuD;AACxF,MAAI,OAAO,SAAS,WAAW,OAAO,OAAO;AAC3C,WAAO,CAAC,MAAM,MAAM,GAAI,mBAAmB,MAAM,KAAK,KAAK,CAAC,CAAE;AAAA,EAChE;AAEA,SAAO,OAAO,OAAO,CAAC,MAAM,IAAI,IAAI;AACtC;AAEO,IAAM,uBAAuB,CAAC,UAAuD;AAC1F,QAAM,CAAC,MAAM,GAAG,QAAQ,IAAI,SAAS,CAAC;AAEtC,MAAI,SAAS,SAAS;AACpB,WAAO,EAAE,MAAM,SAAS,OAAO,qBAAqB,QAAQ,EAAE;AAAA,EAChE;AAEA,SAAO,EAAE,KAAK;AAChB;AAEO,SAAS,aAAa,OAA0B;AACrD,QAAM,EAAE,OAAO,UAAU,UAAU,UAAU,MAAM,IAAI;AAEvD,QAAM,cAAcC,SAAQ,MAAM,mBAAmB,KAAK,GAAG,CAAC,KAAK,CAAC;AAEpE,QAAM,cAAc,eAAe;AAEnC,QAAM,OAAO,YAAY,eAAe,SAAS,CAAC,CAAC;AAEnD,QAAM,UAAUA;AAAA,IACd,MACE,YAAY,gCAAgC,EAAE,IAAI,CAAC,UAAU;AAC3D,YAAMC,WAAU,MAAM,SAAS;AAE/B,aAAO;AAAA,QACL,OACE,gBAAAC,QAAA,cAAC,SAAI,OAAO,cACV,gBAAAA,QAAA,cAACC,OAAA,EAAK,MAAK,SAAQ,KAAK,MAAM,MAAM,GACnC,YAAY,gBAAgB,KAAK,GAAG,SAAS,MAAM,IACtD;AAAA,QAEF,OAAO,MAAM;AAAA,QACb,UAAUF,WACN,YAAY,gCAAgC,OAAO,EAAE,IAAI,CAACG,YAAW;AAAA,UACnE,OACE,gBAAAF,QAAA,cAAC,SAAI,OAAO,cACV,gBAAAA,QAAA;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,KAAK,YAAY,eAAe;AAAA,gBAC9B,MAAM;AAAA,gBACN,OAAO,EAAE,MAAMC,OAAM,KAAK;AAAA,cAC5B,CAAC;AAAA;AAAA,UACH,GACC,YAAY,gBAAgBA,MAAK,GAAG,SAASA,OAAM,IACtD;AAAA,UAEF,OAAOA,OAAM;AAAA,QACf,EAAE,IACF,CAAC;AAAA,MACP;AAAA,IACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,QAAM,aAAa,YAAY;AAE/B,SACE,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAe,MACb,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAO;AAAA,YACL,GAAI,aAAa,EAAE,eAAe,OAAO,IAAI,CAAC;AAAA,YAC9C,GAAI,SAAS,CAAC;AAAA,UAChB;AAAA,UACA,UAAU;AAAA,UACV;AAAA;AAAA,MACF;AAAA,MAEF,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU,CAACG,WAAU;AACnB,mBAAW,qBAAqBA,MAAiB,CAAC;AAAA,MACpD;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,YAAY;AAClB,IAAM,qBAAqB,qBAAqB,YAAY;;;AC/GnE,OAAOC,WAAS,WAAAC,UAAS,YAAAC,iBAAgB;AAGzC,SAAS,QAAAC,aAAY;AACrB,SAAS,QAAQ,UAAU,cAAAC,mBAAkB;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACZP,OAAOC,WAAS,aAAAC,YAAW,gBAAgB;AAE3C,OAAOC,YAA2B;AAE3B,SAAS,UAAU,OAAmB;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AAErC,EAAAD,WAAU,MAAM;AACd,aAAS,MAAM,KAAe;AAAA,EAChC,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,SACE,gBAAAD,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,UAAU,CAACC,WAAU;AACnB,iBAASA,MAAK;AAAA,MAChB;AAAA,MACA,QAAQ,CAAC,MAAM,MAAM,WAAW,OAAO,CAAC;AAAA;AAAA,EAC1C;AAEJ;;;ACrBA,OAAOC,aAAW;AAElB,OAAOC,WAAU,OAAAC,YAAW;AAC5B,OAAOC,WAAU;AAEV,IAAM,cAAcF,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ3B,IAAM,QAAQA,QAAO;AAAA;AAAA;AAAA;AAAA;AAMrB,IAAM,oBAAoBA,QAAO;AAAA;AAAA;AAAA;AAKjC,IAAM,iBAAiBA,QAAO;AAAA;AAAA;AAAA;AAK9B,IAAM,UAAUA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOvB,IAAM,cAAcA,QAAO;AAAA;AAAA;AAAA;AAAA,IAI9B,CAAC,EAAE,QAAQ,MACX,WACAC;AAAA;AAAA;AAAA,KAGC;AAAA;AAGE,IAAM,iBAAiBD,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IASjC,CAAC,EAAE,WAAW,SAAS,cAAc,MAAM;AAC3C,MAAI,SAAS,UAAU,SAAS;AAChC,MAAI,QAAQ,gBAAgB,SAAS;AAErC,SACE,aACAC;AAAA;AAAA;AAAA;AAAA,oBAIc,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAeP,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAOtB,CAAC;AAAA;AAGI,IAAM,kBAAkBD,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS/B,IAAM,iBAAiBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO9B,IAAM,gBAAgBA,QAAO;AAAA;AAAA;AAAA,IAGhC,CAAC,EAAE,UAAU,MACb,aACAC;AAAA;AAAA,KAEC;AAAA;AAGE,IAAM,SAASD,QAAO;AAAA;AAAA;AAItB,IAAM,SAASA,QAAO;AAEtB,IAAM,aAAaA,QAAO;AAE1B,IAAM,YAAYA,QAAO;AAAA;AAAA;AAIhC,IAAM,qBACJ,gBAAAD,QAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAU;AAAA,IACV,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA;AAAA,EAEN,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,UAAS;AAAA,MACT,GAAE;AAAA;AAAA,EACH;AAAA,EACD,gBAAAA,QAAA,cAAC,UAAK,GAAE,sZAAqZ;AAC/Z;AAGK,IAAM,kBAAkB,MAAM,gBAAAA,QAAA,cAACG,OAAA,EAAK,MAAK,SAAQ,KAAK,oBAAoB;AAE1E,IAAM,sBAAsBF,QAAO;AAAA;AAAA;AAInC,IAAM,uBAAuBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC1J3C,SAAS,aAAAG,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AAE5C,SAAS,YAAY,YAAY;AACjC,SAAS,eAAe;AACxB,SAAkD,kBAAAC,uBAAsB;AAIxE,IAAI,MAAM;AACV,SAAS,QAAQ;AACf,SAAO;AACT;AAEO,SAAS,kBACd,OACA,UACA;AACA,QAAM,cAAcA,gBAAe;AAGnC,QAAM,kBAAkB,YAAY,oBAAoB,SAAS,CAAC,CAAC;AACnE,QAAM,cAAc,YAAY,YAAY,SAAS,CAAC,CAAC;AAEvD,QAAM,CAAC,cAAc,eAAe,IAAID,UAA8B,CAAC,CAAC;AAExE,QAAM,gBAAgBD,QAAO,CAAC;AAC9B,QAAM,gBAAgBA,QAAO,CAAC;AAE9B,EAAAD,WAAU,MAAM;AACd,kBAAc,UAAU,cAAc,UAAU;AAChD,QAAI,cAAc,YAAY,cAAc,SAAS;AACnD;AAAA,IACF;AACA,kBAAc,UAAU,cAAc;AAGtC,oBAAgB,CAAC,UAAU;AACzB,YAAM,WAAW,OAAO,QAAQ,iBAAiB,cAAc,CAAC,CAAC,EAC9D,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,SAAS,EAAE,EACpE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AAErB,YAAM,WAAW,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,OAAO,OAAO;AAC9D,YAAM,WAAW,WAAW,UAAU,QAAQ;AAE9C,aAAO,MACJ,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,SAAS,SAAS,KAAK,IAAI,CAAC,EAC3D,IAAI,CAAC,UAAU;AAAA,QACd,KAAK,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,oBAAoB,iBAAiB,UAAU,SAAS,KAAK,QAAQ,EAAE,KAAK;AAAA,QAC5E,GAAI,iBAAiB,aAAa,KAAK,QAAQ,EAAE,KAAK,QAAQ,CAAC;AAAA,MACjE,EAAE,EACD;AAAA,QACC,SAAS,IAAI,CAAC,WAAW;AAAA,UACvB,KAAK,MAAM;AAAA,UACX,MAAM;AAAA,UACN,oBAAoB,iBAAiB,UAAU,SAAS,KAAK,KAAK;AAAA,UAClE,GAAI,iBAAiB,aAAa,KAAK,KAAK,CAAC;AAAA,QAC/C,EAAE;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACH,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,qBAAqB,CAAC,YAAgE;AAC1F,kBAAc,UAAU,cAAc,UAAU;AAEhD,oBAAgB,CAAC,UAAU;AACzB,YAAM,OAAO,QAAQ,KAAK;AAG1B,YAAM,iBAA8C,CAAC;AACrD,YAAM,eAAyB,CAAC;AAEhC,iBAAW,aAAa,MAAM;AAC5B,YAAI,CAAC,UAAU,MAAM;AACnB;AAAA,QACF;AAEA,uBAAe,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC,OAAO,QAAQ,oBAAoB,CAAC;AAEtF,YAAI,UAAU,oBAAoB;AAChC,uBAAa,KAAK,UAAU,IAAI;AAAA,QAClC;AAAA,MACF;AAEA;AAAA,QACE,QAAQ,SAAS,CAAC,GAAG,CAAC,UAAU;AAC9B,gBAAM,mBAAmB,YAAY,oBAAoB,KAAK;AAE9D,cAAI,kBAAkB;AACpB,6BAAiB,aAAa;AAC9B,6BAAiB,WAAW;AAC5B;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,MAAM;AAE1B,oBAAgB,CAAC,UAAU;AAAA,MACzB,GAAG;AAAA,MACH,EAAE,KAAK,MAAM,GAAG,MAAM,IAAI,MAAM,UAAU,OAAO,EAAE,OAAO,MAAM,SAAS,EAAE,EAAE;AAAA,IAC/E,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,QAAgB;AACxC,uBAAmB,CAAC,UAAU,MAAM,OAAO,CAAC,cAAc,UAAU,QAAQ,GAAG,CAAC;AAAA,EAClF;AAEA,QAAM,iBAAiB,CAAC,KAAa,cAAiC;AACpE;AAAA,MAAmB,CAAC,UAClB,MAAM,IAAI,CAAC,cAAe,UAAU,QAAQ,MAAM,YAAY,SAAU;AAAA,IAC1E;AAAA,EACF;AAEA,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,sBAAgB,CAAC,CAAC;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACpIA,OAAOI,aAAW;AAGlB,SAAS,QAAAC,aAAY;;;ACFrB,OAAOC,WAAS,WAAAC,gBAAe;AAE/B,SAAS,SAAAC,cAAa;AAQf,SAAS,cAAc,OAAkB;AAC9C,QAAM,EAAE,OAAO,UAAU,QAAQ,YAAY,kBAAkB,UAAU,GAAG,KAAK,IAAI;AAErF,QAAM,cAAc,eAAe;AAEnC,QAAMC,YAAWC,SAAQ,MAAM;AAC7B,UAAM,YAAY,cAAc,CAAC,GAAG,KAAK,CAAC,cAAc,UAAU,IAAI,MAAM,CAAC;AAE7E,QAAI,CAAC,UAAU;AACb,aAAO,YAAY,gBAAgB,MAAM,GAAG;AAAA,IAC9C;AAEA,WAAO,UAAU;AAAA,EACnB,GAAG,CAAC,YAAY,MAAM,CAAC;AAEvB,MAAI,CAACD,WAAU;AACb,QAAI,kBAAkB;AACpB,aAAOE,QAAM,cAAc,kBAAkB;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AACA,WAAO,gBAAAA,QAAA,cAACC,QAAA,EAAM,MAAK,SAAQ,UAAQ,MAAC,aAAY,oBAAmB;AAAA,EACrE;AAEA,SAAO,gBAAAD,QAAA,cAACF,WAAA,EAAS,OAAc,UAAoB,UAAqB,GAAG,MAAM;AACnF;;;ADzBO,SAAS,aAAa,OAK1B;AACD,QAAM,EAAE,OAAO,QAAQ,UAAU,YAAY,IAAI;AAEjD,SACE,gBAAAI,QAAA,cAAC,4BACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,UAAU,CAAC,OAAO,SAAS,EAAE;AAAA,MAC7B,QAAQ,UAAU,EAAE,MAAM,SAAS;AAAA,MACnC,aAAa,eAAeC,MAAK,EAAE,4CAA4C;AAAA,MAC/E,oBAAkB;AAAA;AAAA,EACpB,CACF;AAEJ;;;AJKA,IAAM,UAAU,EAAE,MAAM,SAAS;AAE1B,SAAS,iBAAiB,OAM9B;AACD,QAAM,EAAE,QAAQ,SAAS,SAAS,CAAC,GAAG,UAAU,eAAe,SAAS,IAAI;AAC5E,QAAM,EAAE,cAAc,eAAe,kBAAkB,eAAe,IAAI;AAAA,IACxE;AAAA,IACA;AAAA,EACF;AAEA,SACE,gBAAAC,QAAA,cAAC,eAAY,WAAW,MAAM,aAC5B,gBAAAA,QAAA,cAAC,mBACE,aAAa,IAAI,CAAC,cACjB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK,UAAU;AAAA,MACf,OAAO;AAAA,MACP;AAAA,MACA,UAAU,CAAC,OAAO;AAChB,uBAAe,UAAU,KAAM,EAAE;AAAA,MACnC;AAAA,MACA,UAAU,MAAM;AACd,yBAAiB,UAAU,GAAI;AAAA,MACjC;AAAA;AAAA,EACF,CACD,CACH,GACA,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO,EAAE,WAAW,IAAI,YAAY,GAAG;AAAA,MACvC,MAAM,gBAAAA,QAAA,cAAC,cAAS;AAAA,MAChB,SAAS;AAAA;AAAA,IAER,QAAQ,iBAAiBC,MAAK,EAAE,KAAK;AAAA,EACxC,CACF;AAEJ;AAEA,SAAS,aAAa,OAQnB;AACD,QAAM,EAAE,OAAO,QAAQ,UAAU,SAAS,GAAG,UAAU,eAAe,UAAU,QAAQ,IAAI;AAE5F,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAC1C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,KAAK;AAE9C,QAAM,EAAE,MAAM,MAAM,OAAO,SAAS,cAAc,aAAa,mBAAmB,IAAI,SAAS,CAAC;AAEhG,QAAM,oBAAoBC,SAAQ,OAAO,EAAE,MAAM,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC;AAExE,QAAM,EAAE,cAAc,aAAa,eAAe,kBAAkB,eAAe,IACjF,kBAAkB,OAAO,aAAa;AAExC,QAAM,WAAW,CAAC,KAAa,WAAgB;AAC7C,oBAAgB;AAAA,MACd,GAAI,SAAS,CAAC;AAAA,MACd,CAAC,GAAG,GAAG;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,eAAe,aAAa,SAAS;AAE1D,SACE,gBAAAH,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAAC,kBAAe,SAAkB,WAAW,SAAS,GAAG,eAAe,gBACrE,gBACC,gBAAAA,QAAA,cAAC,qBAAkB,SAAS,MAAM,YAAY,CAAC,cAAc,CAAC,SAAS,KACpE,WAAW,gBAAAA,QAAA,cAAC,mBAAgB,MAAK,SAAQ,IAAK,gBAAAA,QAAA,cAAC,oBAAiB,MAAK,SAAQ,CAChF,CAEJ,GACA,gBAAAA,QAAA,cAAC,uBACC,gBAAAA,QAAA,cAAC,sBACC,gBAAAA,QAAA,cAAC,aACC,gBAAAA,QAAA,cAAC,cACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,aAAa,QAAQ,eAAeC,MAAK,EAAE,qBAAqB;AAAA,MAChE,MAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,CAACG,WAAU,SAAS,QAAQA,MAAK;AAAA;AAAA,EAC7C,CACF,GACA,gBAAAJ,QAAA,cAAC,cACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,UAAU,CAAC,WAAW;AACpB,wBAAgB;AAAA,UACd,GAAI,SAAS,CAAC;AAAA,UACd,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AAAA;AAAA,EACF,CACF,GACA,gBAAAA,QAAA,cAAC,kBACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU,CAAC,MAAM,SAAS,sBAAsB,EAAE,OAAO,OAAO;AAAA;AAAA,EAClE,CACF,GACA,gBAAAA,QAAA,cAAC,iBACC,gBAAAA,QAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,SAAS,gBAAAL,QAAA,cAAC,cAAW,MAAK,SAAQ,IAAK,gBAAAA,QAAA,cAAC,cAAW,MAAK,SAAQ;AAAA,MACtE,SAAS,MAAM;AACb,kBAAU,CAAC,YAAY,CAAC,OAAO;AAAA,MACjC;AAAA;AAAA,EACF,GACC,eACC,gBAAAA,QAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAL,QAAA,cAAC,qBAAgB;AAAA,MACvB,SAAS,MAAM;AACb,sBAAc;AACd,oBAAY,IAAI;AAAA,MAClB;AAAA;AAAA,EACF,GAEF,gBAAAA,QAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAL,QAAA,cAAC,aAAU,MAAK,SAAQ;AAAA,MAC9B,SAAS;AAAA;AAAA,EACX,CACF,CACF,GACC,UACC,gBAAAA,QAAA,cAAC,sBACC,gBAAAA,QAAA,cAAC,eAAS,QAAQ,aAAaC,MAAK,EAAE,aAAa,CAAE,GACrD,gBAAAD,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,CAACI,WAAU,SAAS,eAAeA,MAAK;AAAA,MAClD,aACE,QAAQ,mBAAmBH,MAAK,EAAE,qCAAqC;AAAA;AAAA,EAE3E,GACC,WAAW,KACV,gBAAAD,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAAC,WAAQ,OAAO,EAAE,WAAW,GAAG,KAC7B,QAAQ,qBAAqBC,MAAK,EAAE,eAAe,CACtD,GACA,gBAAAD,QAAA,cAAC,2BACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa,QAAQ,2BAA2BC,MAAK,EAAE,eAAe;AAAA,MACtE,UAAU,CAACG,WAAU,SAAS,WAAWA,MAAK;AAAA;AAAA,EAChD,CACF,CACF,CAEJ,CAEJ,GACC,gBACC,gBAAAJ,QAAA,cAAC,iBAAc,WAAW,YACxB,gBAAAA,QAAA,cAAC,eAAY,SAAS,QACnB,aAAa,IAAI,CAAC,WAAW,UAC5B,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK,UAAU;AAAA,MACf,OAAO;AAAA,MACP;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB,UAAU,CAAC,OAAO;AAChB,uBAAe,UAAU,KAAM,EAAE;AAAA,MACnC;AAAA,MACA,UAAU,MAAM;AACd,yBAAiB,UAAU,GAAI;AAAA,MACjC;AAAA,MACA,SAAS,UAAU,aAAa,SAAS;AAAA;AAAA,EAC3C,CACD,CACH,CACF,CAEJ,CACF;AAEJ;;;AMhPA,OAAOM,aAAW;AAGlB,SAAS,4BAA4B;AAIrC,IAAM,sBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,OAAO,EAAE,MAAM,KAAK;AACtB;AAEO,SAAS,sBAAsB,OAA8B;AAClE,SACE,gBAAAC,QAAA,cAAC,4BACC,gBAAAA,QAAA,cAAC,oBAAkB,GAAG,OAAO,eAAe,qBAAqB,CACnE;AAEJ;;;AClBA,OAAOC,aAAW;AAElB;AAAA,EACE,mBAAAC;AAAA,EAEA,kBAAAC;AAAA,OAEK;AACP,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,mBAAmB;;;ACT5B,OAAOC,aAAY;AAEZ,IAAMC,eAAcD,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW3B,IAAM,SAASA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCtB,IAAME,UAASF,QAAO;AAAA;AAAA;AAAA;AAAA;AAMtB,IAAM,YAAYA,QAAO;AAAA;AAAA;AAAA;AAAA;;;ACpDhC,SAAS,aAAAG,YAAW,WAAAC,UAAS,UAAAC,SAAQ,YAAAC,iBAAgB;AAGrD,SAAS,yBAAyB;AAI3B,SAAS,eAAe,OAA+B;AAC5D,QAAM,YAAY,kBAAkB;AACpC,QAAM,cAAcF,SAAQ,MAAM;AAChC,QAAI,OAAO,SAAS,OAAO;AACzB,aAAO,UAAU,aAAa,MAAM,OAAO;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,SAAO;AACT;AAEO,SAAS,gBACd,iBACA,eAGA,OACA;AACA,MAAI,sBAAsB,mBAAmB,eAAe,UAAU,EAAE,MAAM,SAAS;AACvF,MAAI,OAAO,SAAS,YAAY;AAC9B,0BAAsB,OAAO,UAAU;AAAA,EACzC;AAEA,QAAM,gBAAgBC,QAAO,CAAC;AAC9B,QAAM,gBAAgBA,QAAO,CAAC;AAE9B,QAAM,CAAC,cAAc,eAAe,IAAIC,UAAS,mBAAmB;AAEpE,EAAAH,WAAU,MAAM;AACd,kBAAc,WAAW;AACzB,QAAI,cAAc,YAAY,cAAc,SAAS;AACnD;AAAA,IACF;AACA,kBAAc,UAAU,cAAc;AAEtC,QAAI,OAAO,SAAS,cAAc,OAAO,QAAQ;AAC/C,sBAAgB,OAAO,MAAM;AAC7B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,mCAAmC,CAAC,WAAwB;AAChE,oBAAgB,MAAM;AACtB,kBAAc,WAAW;AAAA,EAC3B;AAEA,SAAO,CAAC,cAAc,gCAAgC;AACxD;AAEO,SAAS,iBAAiB,iBAA+B;AAC9D,QAAM,gBAAgBC,SAAQ,MAAM;AAClC,QAAI,CAAC,iBAAiB;AACpB;AAAA,IACF;AACA,QAAI,iBAAiB,SAAS,UAAU;AACtC,aAAO,CAAC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAAA,IAC9C;AACA,WAAO,EAAE,GAAG,iBAAiB,OAAO,EAAE,GAAG,iBAAiB,OAAO,MAAM,KAAK,EAAE;AAAA,EAChF,GAAG,CAAC,eAAe,CAAC;AAEpB,SAAO;AACT;;;AFlCA,IAAM,gBAAoC;AAAA,EACxC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ,EAAE,MAAM,SAAS;AAC3B;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AACF,GAAc;AACZ,QAAM,cAAc,eAAe,KAAK;AACxC,QAAM,CAAC,cAAc,eAAe,IAAI,gBAAgB,iBAAiB,eAAe,KAAK;AAC7F,QAAM,gBAAgB,iBAAiB,eAAe;AAEtD,QAAM,cAAcG,gBAAe;AAEnC,QAAM,qBAAqB,MAAM;AAC/B,QAAI,iBAAiB;AACnB,aAAO,gBAAAC,QAAA,cAAC,gBAAa,OAAO,iBAAiB,UAAU,MAAM;AAAA,IAC/D;AAEA,QAAI,OAAO,SAAS,OAAO;AACzB,YAAM,SAAS,aAAa,OAAOC,iBAAgB,YAAY,aAAa,IAAI,IAAI;AAEpF,aAAO,gBAAAD,QAAA,cAAC,gBAAa,OAAO,QAAQ,UAAU,MAAM;AAAA,IACtD;AAEA,WACE,gBAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,OAAO;AAChB,0BAAgB,MAAM,EAAE,MAAM,SAAS,CAAC;AAExC,gBAAM,SAAS,MAAM,EAAE,MAAM,SAAS;AACtC,cAAI,UAAU,YAAY,gBAAgB,MAAM;AAChD,cAAI,IAAI,SAAS,UAAU;AACzB,sBAAU;AAAA,UACZ;AACA,cAAI,IAAI,SAAS,SAAS;AACxB,sBAAU;AAAA,UACZ;AAEA,mBAAS;AAAA,YACP,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,OAAO,SAAS,OAAO;AAEzB,aACE,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,OAAO,OAAO;AAAA,UACvB,OAAO,OAAO;AAAA,UACd,UAAU,CAAC,OAAO,SAAS,KAAK,EAAE,MAAM,OAAO,SAAS,GAAG,IAAI,aAAa;AAAA,UAC5E;AAAA,UACA;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,UAAME,kBAAiB,mBAAmB,gBAAgB,EAAE,MAAM,SAAS;AAE3E,WACE,gBAAAF,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,OAAO;AAAA,QACd,UAAU,CAAC,OAAO,SAAS,EAAE,MAAM,YAAY,SAAS,IAAI,QAAQE,gBAAe,CAAC;AAAA,QACpF,QAAQA,mBAAkB,EAAE,MAAM,SAAS;AAAA,QAC3C;AAAA,QACA,kBAAkB,MAChB,gBAAAF,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,OAAO,OAAO;AAAA,YACvB,UAAU,CAAC,OAAO,SAAS,KAAK,EAAE,MAAM,OAAO,SAAS,GAAG,IAAI,aAAa;AAAA,YAC5E;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QAED,GAAG;AAAA,QACJ,YAAY,CAAC,GAAI,eAAe,cAAc,CAAC,CAAE;AAAA;AAAA,IACnD;AAAA,EAEJ;AAEA,QAAM,gBAAgB,MACpB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,OAAO,OAAO,SAAS,QAAQ,OAAO,UAAU;AAAA,MAChD,UAAU,CAAC,OAAO,SAAS,EAAE,MAAM,OAAO,SAAS,GAAG,CAAC;AAAA,MACvD;AAAA,MACA;AAAA,MACA,eAAe,MACb,gBAAAA,QAAA,cAACG,aAAA,EAAW,UAAU,UAAU,MAAK,SAAQ,MAAM,gBAAAH,QAAA,cAAC,eAAY,MAAK,SAAQ,GAAI;AAAA;AAAA,EAErF;AAGF,SACE,gBAAAA,QAAA,cAACI,cAAA,EAAY,SACX,gBAAAJ,QAAA,cAACK,SAAA,MAAQ,mBAAmB,CAAE,GAC9B,gBAAAL,QAAA,cAAC,cAAQ,WAAW,CAAE,GACtB,gBAAAA,QAAA,cAAC,iBAAW,cAAc,CAAE,CAC9B;AAEJ;AAEA,kBAAkB,YAAY;AACvB,IAAM,0BAA0B,qBAAqB,iBAAiB;;;AGtJ7E,OAAOM,WAAS,WAAAC,gBAAe;AAE/B,SAAS,QAAAC,cAAY;AACrB,SAAS,SAAAC,cAAa;;;ACHtB,OAAOC,aAAY;AAEZ,IAAMC,eAAcD,QAAO;AAAA;AAAA;AAAA;AAAA;AAM3B,IAAM,aAAaA,QAAO;AAE1B,IAAM,SAASA,QAAO;AAAA;AAAA;AAItB,IAAM,UAAUA,QAAO;AAAA;AAAA;AAIvB,IAAM,WAAWA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AClB/B,SAAS,WAAAE,gBAAe;AAExB,SAAS,mBAAAC,wBAA4C;AACrD,SAAS,qBAAAC,0BAAyB;;;ACD3B,IAAM,eAAuB;AAAA,EAClC,QAAQ;AAAA,IACN,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,IACnB,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,EACrB;AAAA,EACA,QAAQ;AAAA,IACN,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,IACV,wBAAW,GAAG;AAAA,IACd,0BAAY,GAAG;AAAA,IACf,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,EACZ;AAAA,EACA,QAAQ;AAAA,IACN,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,IACL,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,IACnB,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,IACnB,cAAM,GAAG;AAAA,IACT,gBAAO,GAAG;AAAA,EACZ;AAAA,EACA,KAAK;AAAA,IACH,0BAAY,GAAG;AAAA,IACf,kCAAgB,GAAG;AAAA,EACrB;AACF;AAEO,IAAM,mBAA8B;AAAA,EACzC,cAAM,GAAG;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,gBAAO,GAAG;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,cAAM,GAAG;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,gBAAO,GAAG;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,cAAM,GAAG;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,gBAAO,GAAG;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,cAAM,GAAG;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,gBAAO,GAAG;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,0BAAY,GAAG;AAAA,IACb,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,kCAAgB,GAAG;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,0BAAY,GAAG;AAAA,IACb,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,kCAAgB,GAAG;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,wBAAW,GAAG;AAAA,IACZ,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,0BAAY,GAAG;AAAA,IACb,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AACF;;;AD9GO,SAAS,QAAQ,MAAsB,WAAoB;AAChE,QAAM,YAAYC,mBAAkB;AAEpC,QAAM,QAAQC,SAAQ,OAAO,EAAE,GAAG,cAAc,GAAI,aAAa,CAAC,EAAG,IAAI,CAAC,SAAS,CAAC;AAEpF,QAAM,WAAWA,SAAQ,MAAM;AAC7B,QAAI,CAAC,KAAM,QAAO;AAClB,WAAO,UAAU,aAAa,KAAK,OAAO;AAAA,EAC5C,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,QAAM,OAAOA,SAAQ,MAAM;AACzB,QAAI,CAAC,SAAU,QAAO;AAEtB,UAAM,SAASC,iBAAgB,YAAY,SAAS,MAAM,EAAE,WAAW,MAAM,CAAC;AAE9E,WAAO,MAAM,QAAQ,IAA2B;AAAA,EAClD,GAAG,CAAC,UAAU,MAAM,KAAK,CAAC;AAE1B,SAAO,EAAE,KAAK;AAChB;;;AE7BA,OAAOC,WAAS,WAAAC,gBAAe;AAE/B,SAAS,QAAAC,cAAY;AACrB,SAAS,UAAAC,SAAQ,UAAAC,eAAc;AAC/B,SAAS,0BAAAC,+BAA8B;AAahC,SAAS,MAAM,EAAE,MAAM,IAAI,UAAU,UAAU,QAAQ,GAAe;AAC3E,QAAM,UAAUC;AAAA,IACd,MACE,OAAO,KAAK,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS;AAAA,MACpC,GAAI,iBAAiB,GAAG,KAAK,CAAC;AAAA,MAC9B,GAAI,UAAU,GAAG,KAAK,CAAC;AAAA,MACvB,OAAO;AAAA,MACP,OAAOC,OAAK,EAAE,UAAU,GAAG,GAAG,SAAS,iBAAiB,GAAG,GAAG,KAAK;AAAA,IACrE,EAAE;AAAA,IACJ,CAAC,MAAM,OAAO;AAAA,EAChB;AAEA,QAAM,WAAWD,SAAQ,MAAM,iBAAiB,EAAY,GAAG,CAAC,EAAE,CAAC;AAEnE,QAAM,iBAAiB,MACrB,gBAAAE,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,QAAQ,GAAG;AAAA,MACpB,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,UAAU,CAAC,MAAM;AACf,iBAAS,CAAW;AAAA,MACtB;AAAA,MACA,eAAe,CAAC,EAAE,MAAM,MACtB,gBAAAD,QAAA,cAACE,SAAA,EAAO,MAAK,SAAQ,UAAU,CAAC,QAC7B,UAAU,gBAAgB,gBAAAF,QAAA,cAACG,yBAAA,EAAuB,MAAK,SAAQ,CAClE;AAAA;AAAA,EAEJ;AAGF,SAAO,EAAE,gBAAgB,SAAS;AACpC;;;AJ1BA,IAAM,oBAAoB;AAAA,EACxB,KAAK,CAAC;AAAA,EACN,OAAO,CAAC;AACV;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACf,GAAc;AACZ,QAAM,EAAE,MAAM,UAAU,MAAM,IAAI,SAAS,CAAC;AAC5C,QAAM,EAAE,KAAK,IAAI,QAAQ,MAAM,WAAW,KAAK;AAC/C,QAAM,EAAE,gBAAgB,SAAS,IAAI,MAAM;AAAA,IACzC;AAAA,IACA,IAAI;AAAA,IACJ,UAAU,CAAC,MAAM,SAAS,EAAE,GAAG,OAAO,UAAU,EAAE,CAAC;AAAA,IACnD;AAAA,IACA,SAAS,WAAW;AAAA,EACtB,CAAC;AAED,QAAM,eAAeC,SAAQ,MAAM;AACjC,UAAM,aAA4B,OAAO,YAAY,EAAE,KAAK;AAC5D,WAAO,aAAa,EAAE,MAAM,YAAY,OAAO,EAAE,MAAM,KAAK,EAAE,IAAI;AAAA,EACpE,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,SACE,gBAAAC,QAAA,cAACC,cAAA,EAAY,SACX,gBAAAD,QAAA,cAAC,kBAAY,eAAe,CAAE,GAC9B,gBAAAA,QAAA,cAAC,gBACC,gBAAAA,QAAA,cAAC,cACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,EAAE,OAAO,OAAO;AAAA,MACvB,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,MACT,SAAS;AAAA,QACP,GAAG;AAAA,QACH,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA;AAAA,EAEL,CACF,GACA,gBAAAA,QAAA,cAAC,eACE,eACC,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,YAAY,CAAC;AAAA,MACvB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,MAAM,SAAS,EAAE,GAAG,OAAO,OAAO,EAAE,CAAC;AAAA;AAAA,EAClD,IAEA,gBAAAA,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAQ;AAAA,MACR,OAAO,EAAE,eAAe,OAAO;AAAA,MAC/B,OAAO,UAAU,gBAAgBC,OAAK,EAAE,OAAO;AAAA;AAAA,EACjD,CAEJ,CACF,CACF;AAEJ;;;AK3FA,OAAOC,aAAW;AAElB,SAAS,QAAAC,cAAY;AACrB,SAAS,UAAAC,SAAQ,SAAAC,cAAa;AAC9B,SAAS,YAAY,YAAAC,iBAAgB;;;ACJrC,SAAS,aAAAC,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AAE5C,SAAS,cAAc;AACvB,SAAS,cAAAC,aAAY,KAAK,YAAAC,WAAU,WAAW;AAE/C,SAASC,SAAQ;AACf,SAAO,OAAO;AAChB;AAUO,SAAS,cAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,MAAM,OAAO,IAAIH,UAAgC,CAAC,CAAC;AAE1D,QAAM,gBAAgBD,QAAO,CAAC;AAC9B,QAAM,gBAAgBA,QAAO,CAAC;AAE9B,QAAM,eAAe,CAACK,WAAsB;AAC1C,QAAI,OAAO,iBAAiB,YAAY;AACtC,aAAO,IAAIA,QAAO,aAAaA,MAAK,CAAC,KAAK;AAAA,IAC5C;AACA,WAAO,IAAIA,QAAO,gBAAgB,EAAE,KAAK;AAAA,EAC3C;AAEA,EAAAN,WAAU,MAAM;AACd,kBAAc,UAAU,cAAc,UAAU;AAChD,QAAI,cAAc,YAAY,cAAc,SAAS;AACnD;AAAA,IACF;AACA,kBAAc,UAAU,cAAc;AAEtC,YAAQ,CAAC,cAAc;AACrB,YAAM,UAAU,OAAO,QAAQ,SAAS,CAAC,CAAC,EACvC,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,EACtD,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AAErB,YAAM,UAAU,UAAU,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,OAAO,OAAO;AAChE,YAAM,UAAUG,YAAW,SAAS,OAAO;AAE3C,aAAO,UACJ,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,QAAQ,SAAS,KAAK,GAAG,CAAC,EACxD,IAAI,CAAC,UAAU;AAAA,QACd,IAAI,KAAK;AAAA,QACT,KAAK,KAAK;AAAA,QACV,OAAO,KAAK,MAAM,QAAQ,KAAK,GAAI,IAAI,KAAK;AAAA,MAC9C,EAAE,EACD;AAAA,QACC,QAAQ,IAAI,CAAC,UAAU;AAAA,UACrB,IAAIE,OAAM;AAAA,UACV,KAAK;AAAA,UACL,OAAO,QAAQ,IAAI;AAAA,QACrB,EAAE;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,MAAM,CAAC,iBAA6B;AACxC,YAAQ,CAAC,aAAa;AAAA,MACpB,GAAG;AAAA,MACH;AAAA,QACE,IAAIA,OAAM;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,CAAC,QAAgBC,WAAqB;AACxD,kBAAc,UAAU,cAAc,UAAU;AAEhD,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,SAAS,IAAI,CAAC,UAAU;AACvC,YAAI,MAAM,OAAO,QAAQ;AACvB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAAA;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAED;AAAA,QACE,OAAO;AAAA,UACL,SACG,OAAO,CAAC,SAAS,KAAK,GAAG,EACzB,IAAI,CAAC,SAAS,CAAC,KAAK,KAAM,KAAK,KAAK,CAAC,EACrC,IAAI,CAAC,MAAM,QAAQ;AAClB,kBAAM,WACJ,OAAO,iBAAiB,aACpB,aAAa,KAAK,CAAC,CAA0B,IAC7C;AAEN,gBAAIF,UAAS,KAAK,CAAC,CAAC,KAAK,UAAU;AACjC,kBAAI,KAAK,CAAC,GAAG,UAAU,GAAG;AAAA,YAC5B;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACL;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,YAAY,CAAC,QAAgB,QAAgB;AACjD,kBAAc,UAAU,cAAc,UAAU;AAEhD,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,SAAS,IAAI,CAAC,UAAU;AACvC,YAAI,MAAM,OAAO,QAAQ;AACvB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAED;AAAA,QACE,OAAO;AAAA,UACL,SAAS,OAAO,CAAC,SAAS,KAAK,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,KAAM,KAAK,KAAK,CAAC;AAAA,QAC3E;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,CAAC,WAAmB;AACjC,kBAAc,UAAU,cAAc,UAAU;AAEhD,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,SAAS,OAAO,CAAC,UAAU,MAAM,OAAO,MAAM;AAE/D;AAAA,QACE,OAAO;AAAA,UACL,SAAS,OAAO,CAAC,SAAS,KAAK,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,KAAM,KAAK,KAAK,CAAC;AAAA,QAC3E;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,MAAM,KAAK,WAAW,aAAa,OAAO;AACrD;;;AC9JA,OAAOG,aAAY;AAEZ,IAAM,SAASA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOtB,IAAMC,SAAQD,QAAO;AAAA;AAAA;AAAA;AAAA;;;AFGrB,SAAS,aAAa,OAAkB;AAC7C,QAAM,EAAE,UAAU,MAAM,IAAI;AAE5B,QAAM,EAAE,MAAM,KAAK,WAAW,aAAa,OAAO,IAAI,cAAc,KAAK;AAEzE,SACE,gBAAAE,QAAA,cAAC,aACC,gBAAAA,QAAA,cAAC,UAAO,SACL,KAAK,IAAI,CAAC,SACT,gBAAAA,QAAA,cAACC,QAAA,EAAM,KAAK,KAAK,MACf,gBAAAD,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,OAAO,IAAI;AAAA,MACpB,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,UAAU,CAAC,MAAM,UAAU,KAAK,IAAI,CAAC;AAAA;AAAA,EACvC,GACA,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,UAAU,EAAE;AAAA,MACrB;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB,UAAU,CAAC,MAAM,YAAY,KAAK,IAAI,EAAE,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA;AAAA,EACnE,GACA,gBAAAA,QAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAM,gBAAAH,QAAA,cAAC,gBAAW;AAAA,MAClB,MAAK;AAAA,MACL,SAAS,MAAM,OAAO,KAAK,EAAE;AAAA;AAAA,EAC/B,CACF,CACD,CACH,GACA,gBAAAA,QAAA,cAACG,SAAA,EAAO,UAAU,UAAU,MAAM,gBAAAH,QAAA,cAACI,WAAA,IAAS,GAAI,MAAK,SAAQ,SAAS,MAAM,IAAI,KAC7EC,OAAK,EAAE,KAAK,CACf,CACF;AAEJ;;;AGjDA,OAAOC,WAAS,aAAAC,YAAW,UAAAC,eAAc;AAEzC,SAAS,UAAU,kBAAAC,iBAAgB,yBAAAC,8BAA0C;AAC7E,OAAOC,aAA2B;;;ACHlC,OAAOC,WAAU,OAAAC,YAAW;AAErB,IAAMC,eAAcF,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAK9B,CAAC,EAAE,UAAU,MACb,aACAC;AAAA;AAAA,KAEC;AAAA;;;ACXL,SAAS,uBAAuB;AAEhC,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,cAAAE,mBAAkB;AAE3B,SAAS,oBAAoB;AAC3B,QAAM,WAAW,YAAY;AAE7B;AAAA,IACE,MACE,SAAS,OAAO;AAAA,MACd,aAAa,MAAM,GAAG,CAAC,WAAW;AAEhC,YAAI,OAAO,KAAK,WAAW,YAAY,GAAG;AACxC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAGA,YAAI,OAAO,SAAS,YAAY;AAC9B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAGA,YAAI,OAAO,SAAS,kBAAkB;AACpC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAKA,YAAI,OAAO,SAAS,cAAc,OAAO,SAAS,aAAa;AAC7D,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACDA,YAAW,MAAM;AAAA,QACf,YAAY;AAAA,UACV,OAAO;AAAA,UACP,YAAY;AAAA,QACd;AAAA,QACA,aAAa;AAAA,UACX,WAAW;AAAA,QACb;AAAA,QACA,oBAAoB;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,QACA,SAAS;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IACH,CAAC,QAAQ;AAAA,EACX;AAEA,SAAO;AACT;AAEA,IAAO,mBAAQ;;;ACrEf,SAAS,mBAAAC,wBAAuB;AAEhC,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,uBAAuB;AAEhC,SAAS,kBAAkB;AACzB,QAAM,WAAWA,aAAY;AAE7B,EAAAD,iBAAgB,MAAM,SAAS,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEpE,SAAO;AACT;AAEA,IAAO,2BAAQ;;;ACbf,SAAS,mBAAAE,wBAAuB;AAEhC,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,cAAAC,mBAAkB;AAE3B,SAAS,iBAAiB;AACxB,QAAM,WAAWF,aAAY;AAE7B,EAAAD;AAAA,IACE,MACE,SAAS,OAAO;AAAA,MACdE,cAAa,MAAM,GAAG,CAAC,WAAW;AAChC,YAAI,OAAO,SAAS,yBAAyB,OAAO,SAAS,qBAAqB;AAChF,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAEA,YAAI,OAAO,SAAS,gBAAgB;AAClC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAEA,YAAI,OAAO,SAAS,mBAAmB;AACrC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACDC,YAAW,MAAM;AAAA,QACf,4BAA4B;AAAA,UAC1B,OAAO;AAAA,QACT;AAAA,QACA,kBAAkB;AAAA,UAChB,OAAO;AAAA,QACT;AAAA,QACA,qBAAqB;AAAA,UACnB,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IACH,CAAC,QAAQ;AAAA,EACX;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ;;;AJlCR,SAAS,aAAa,OAA8B;AACzD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,SAAS,CAAC;AAEd,QAAM,YAAYC,QAAyB,IAAI;AAE/C,EAAAC,WAAU,MAAM;AAEd,QAAI,UAAU,SAAS,SAAS,MAAM,OAAO,SAAS;AACpD,gBAAU,SAAS,SAAS,OAAO,OAAO,WAAW,EAAE,CAAC;AAAA,IAC1D;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,gBAAAC,QAAA,cAACC,cAAA,EAAY,WAAW,UAAU,SAChC,gBAAAD,QAAA,cAACE,iBAAA,MACC,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC,WAAsB;AAC/B,kBAAU,UAAU;AAAA,MACtB;AAAA,MACA,SAASG;AAAA,MACT,cAAc,OAAO,OAAO,OAAO;AAAA,MACnC,SAAS;AAAA,QACP,UAAU;AAAA,QACV,UAAU,CAAC;AAAA,QACX;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACA,UAAU,CAAC,MAAM;AACf,iBAAS,EAAE,MAAM,YAAY,SAAS,EAAE,MAAM,CAAC;AAAA,MACjD;AAAA;AAAA,EACF,GACC,yBACC,gBAAAH,QAAA,cAACI,wBAAA,MAAuB,qBAAsB,GAE/C,CAAC,4BAA4B,gBAAAJ,QAAA,cAAC,sBAAkB,GACjD,gBAAAA,QAAA,cAAC,8BAAgB,GACjB,gBAAAA,QAAA,cAAC,mBAAe,GACf,QACH,CACF;AAEJ;;;AKtEA,OAAOK,aAAW;;;ACAlB,OAAOC,WAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE3C,SAAS,WAAAC,UAAS,YAAY;AAC9B;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKA,SAAS,eAAe;AAC7B,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,EAAE;AACvC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,EAAE;AAC3C,QAAM,SAAS,UAAqB;AAEpC,WAAS,OAAO,cAAsB;AACpC,UAAM,QAAQ,8BAA8B,OAAO,MAAM,KAAK;AAE9D,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAKA,QAAI,EAAE,MAAM,GAAG,IAAI;AACnB,WAAO,OAAO,MAAM,MAAM,IAAI,YAAY,OAAO,GAAG,IAAI,MAAM,KAAK;AACjE;AAAA,IACF;AACA,WAAO,OAAO,MAAM,MAAM,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK;AAC7D;AAAA,IACF;AAEA,WAAO,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA,MAAM,OAAO,eAAe;AAAA,IAC9B,CAAC;AAED,eAAW,KAAK;AAAA,EAClB;AAEA,WAAS,iBAAiB,GAA2B;AACnD,gBAAY,EAAE,MAAM,UAAU,KAAK,IAAI;AACvC,eAAW,EAAE,KAAK;AAAA,EACpB;AAEA,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,QAAM,WAAW,gBAAgB,CAAC,CAAC;AAEnC,SACE,gBAAAC,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAAC,WAAQ,mBAAmB,CAAC,KAAK,MAAM,GAAG,GAAG,cAAc,kBAAkB,GAE9E,gBAAAA,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,UAAU;AAAA,MACV,SACE,gBAAAD,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,IAAI,KACvB,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,CAAC,MAAM;AACf,mBAAO,CAAC;AAAA,UACV;AAAA;AAAA,MACF,CACF;AAAA;AAAA,IAIF,gBAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QAEA,UAAU,MAAM,UAAU,OAAO,KAAK,OAAO,CAAC,CAAC;AAAA;AAAA,IACjD;AAAA,EACF,CACF;AAEJ;;;ACzFA,OAAO,cAAc;AACrB,OAAOE,WAAS,mBAAAC,wBAAuB;AAEvC,SAAS,SAAS,YAAY;AAC9B;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP,SAAS,WAAAC,gBAAe;AACxB,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,eAAAC,oBAAmB;AAC5B;AAAA,EACE;AAAA,EAEA,cAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACrBP,OAAOC,aAAY;AACnB,SAAS,OAAAC,YAAW;AAEb,IAAMC,eAAcF,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS3B,IAAMG,aAAYH,QAAO;AAAA;AAAA;AAAA;AAAA;AAMzB,IAAMI,SAAQJ,QAAOC,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAexB,IAAMI,oBAAmBL,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;;;ADRvC,IAAM,oBAAN,cAAgC,WAAW;AAAA,EASzC,YAAY,EAAE,SAAS,MAAM,GAAyC;AACpE,UAAM;AAPR,qBAAY,IAAI,qBAAqB;AAarC,sBAAa,CAAC,SAA+B;AAC3C,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,gBAAAM,QAAA,cAAC,SAAI,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,MAAM;AAAA,MAC3E;AAEA,aAAO;AAAA,IACT;AAVE,SAAK,UAAU;AACf,SAAK,QAAQ;AAAA,EACf;AAAA,EAUA,YAAY,KAAyB;AAEnC,aAAS,OAAO,KAAK,KAAK,OAAQ;AAAA,EACpC;AAAA,EAEA,eAAe,GAAuB;AACpC,QAAI,CAAC,GAAG;AACN,WAAK;AAAA,QACH,gBAAAA,QAAA,cAACC,QAAA,EAAM,YAAY,gBAAAD,QAAA,cAACE,mBAAA,IAAiB,GAAI,OAAM,WAAQ,SAEvD;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,EAAE,YAAY,KAAK;AAC1C,UAAM,SAAS,EAAE,aAAa,WAAW;AAEzC,UAAM,YACJ,gBAAAF,QAAA,cAACG,cAAA,MACE,WAAW,KAAK,QAAQ,GAAG,UAAU,KAAK,KAAK,IAAI,SAAS,KAAK,GAAG,MAAM,EAC7E;AAEF,UAAM,WAAW,KAAK,WAAW,WAAW,KAAK,IAAI;AAErD,SAAK;AAAA,MACH,gBAAAH,QAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,SACE,gBAAAJ,QAAA,cAACK,mBAAA,MACE,UACA,WACD,gBAAAL,QAAA,cAACM,YAAA,MAAW,GAAG,QAAQ,MAAM,CAAC,EAAE,KAAK,GAAG,CAAE,CAC5C;AAAA;AAAA,QAGF,gBAAAN,QAAA,cAACC,QAAA,EAAM,YAAY,YAChB,WACA,CAAC,UAAU,gBAAAD,QAAA,cAACM,YAAA,MAAW,GAAG,GAAI,CACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MAA+B;AACnC,UAAM,MAAM,SAAS,cAAc,MAAM;AAEzC,SAAK,UAAU;AAEf,SAAK,UAAU;AAAA,MACb,WAAW,OAAO,MAAM;AAEtB,iBAAS,uBAAuB,KAAK,OAAQ;AAAA,MAC/C,CAAC;AAAA,IACH;AAEA,SAAK,UAAU;AAAA,MACb,KAAK,MAAM,UAAU;AAAA,QACnB,KAAK;AAAA,QACL,CAAC,MAAM;AACL,eAAK,eAAe,CAAC;AAAA,QACvB;AAAA,QACA,EAAE,eAAe,MAAM;AAAA,MACzB;AAAA,IACF;AAEA,SAAK,eAAe,KAAK,MAAM,UAAU,aAAa,KAAK,OAAO,CAAC;AAEnE,WAAO;AAAA,EACT;AAAA,EAEA,GAAG,OAA0B;AAC3B,WAAO,QAAQ,KAAK,SAAS,MAAM,OAAO;AAAA,EAC5C;AAAA,EAEA,cAAuB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,KAAwB;AAC9B,SAAK,UAAU,QAAQ;AAAA,EACzB;AACF;AAEO,SAAS,oBAAoB;AAClC,QAAM,WAAWC,aAAY;AAE7B,QAAM,QAAQ,gBAAgB;AAG9B,EAAAC,iBAAgB,MAAM;AACpB,UAAM,YAAY,IAAI,eAAe;AAAA,MACnC,QAAQ;AAAA,MACR,YAAY,CAAC,UACX,WAAW,QAAQ;AAAA,QACjB,QAAQ,IAAI,kBAAkB;AAAA,UAC5B,SAAS,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACL,CAAC;AAED,WAAO,SAAS,OAAO;AAAA,MACrB,WAAW;AAAA,QACT,MAAM;AAAA,UAGJ,YAAoB,MAAkB;AAAlB;AAClB,iBAAK,cAAc,UAAU,WAAW,IAAI;AAAA,UAC9C;AAAA,UAEA,SAAS;AACP,iBAAK,cAAc,UAAU,WAAW,KAAK,IAAI;AAAA,UACnD;AAAA,QACF;AAAA,QACA;AAAA,UACE,aAAa,CAAC,MAAM,EAAE;AAAA,UACtB,QAAQ,GAAG;AACT,mBAAOC,YAAW,aAAa;AAAA,cAC7B,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,eAAe,WAAW;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AACT;;;AFzKO,SAAS,0BAA0B,OAA8B;AACtE,SACE,gBAAAC,QAAA,cAAC,gBAAc,GAAG,SAChB,gBAAAA,QAAA,cAAC,kBAAa,GACd,gBAAAA,QAAA,cAAC,uBAAkB,CACrB;AAEJ;;;AIdA,OAAOC,aAAW;;;ACAlB,OAAOC,WAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE3C,SAAS,WAAAC,gBAAe;AACxB;AAAA,EACE,WAAAC;AAAA,EAEA,iCAAAC;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;;;ACTP,OAAOC,WAAS,WAAAC,gBAAe;AAE/B,SAAS,iBAAAC,gBAAe,QAAAC,aAAY;AACpC;AAAA,EAEE,YAAAC;AAAA,EAGA,qBAAAC;AAAA,OACK;AAEP,SAAS,QAAAC,aAAY;AAMd,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,QAAM,YAAYC,mBAAkB;AAEpC,QAAM,oBAAoB,CAAC,MAAiB,QAAQ,MAAyC;AAC3F,QAAIC,UAAS,QAAQ,KAAK,KAAK,GAAG;AAChC,aAAO,kBAAkB,KAAK,OAAO,QAAQ,CAAC;AAAA,IAChD;AAEA,WAAO,EAAE,MAAM,KAAK,OAAO,MAAa;AAAA,EAC1C;AAEA,QAAM,iBAAiB,CAAC,UAAyB,YAAoC;AACnF,QAAI,OAAO,UAAU;AAErB,QAAI;AAEJ,QAAIA,UAAS,SAAS,IAAI,GAAG;AAC3B,kBAAY,KAAK,cAAc,CAAC,GAC7B,IAAI,CAAC,cAAc,eAAe,WAA4B,CAAC,GAAG,SAAS,UAAU,GAAG,CAAC,CAAC,EAC1F,OAAO,OAAO;AAAA,IACnB;AAEA,QAAIA,UAAS,QAAQ,IAAI,GAAG;AAC1B,YAAM,YAAY,kBAAkB,IAAI;AAExC,UAAIA,UAAS,SAAS,UAAU,IAAI,GAAG;AACrC,oBAAY,UAAU,KAAK,cAAc,CAAC,GACvC;AAAA,UAAI,CAAC,cACJ,eAAe,WAA4B;AAAA,YACzC,GAAG;AAAA,YACH,GAAG,IAAI,MAAM,UAAU,KAAK,EAAE,KAAK,KAAK;AAAA,YACxC,UAAU;AAAA,UACZ,CAAC;AAAA,QACH,EACC,OAAO,OAAO;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,MAAM,QACT,IAAI,CAAC,MAAM,QAAS,SAAS,SAAS,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAG,EACpE,KAAK,EAAE;AAEV,WAAO;AAAA,MACL;AAAA,MACA,OAAOC,MAAK,OAAO;AAAA,MACnB,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,OAAY,YAAgD;AAC/E,UAAM,UAAU,QAAQ,KAAK,GAAG;AAEhC,QAAI,eAAe,YAAY,KAAK,GAAG;AACrC,UAAI,eAAe,MAAM,KAAK,GAAG;AAC/B,cAAM,WAAW,UAAU,aAAa,MAAM,WAAW,CAAC,CAAC;AAC3D,YAAI,UAAU;AACZ,iBAAO,eAAe,UAAU,OAAO;AAAA,QACzC;AAAA,MACF;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAOA,MAAK,OAAO;AAAA,MACrB;AAAA,IACF;AAEA,QAAIC,eAAc,KAAK,GAAG;AACxB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAOD,MAAK,OAAO;AAAA,QACnB,UAAU,OAAO,QAAQ,KAAK,EAC3B,IAAI,CAAC,CAAC,KAAKE,MAAK,MAAM,YAAYA,QAAO,CAAC,GAAG,SAAS,GAAG,CAAC,CAAE,EAC5D,OAAO,OAAO;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAA2BC;AAAA,IAC/B,MACE,OAAO,QAAQ,YAAY,EACxB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,YAAY,OAAO,CAAC,GAAG,CAAC,CAAE,EAChD,OAAO,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,SAAO,gBAAAC,QAAA,cAACC,OAAA,EAAK,UAAoB,UAAU,CAAC,MAAM,SAAS,CAAC,GAAG;AACjE;;;AD/FO,SAAS,WAAW,EAAE,aAAa,GAAiD;AACzF,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,EAAE;AACvC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,EAAE;AAC3C,QAAM,SAASC,WAAqB;AAEpC,WAAS,OAAO,cAAsB;AACpC,UAAM,QAAQC,+BAA8B,OAAO,MAAM,KAAK;AAE9D,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAKA,QAAI,EAAE,MAAM,GAAG,IAAI;AACnB,WAAO,OAAO,MAAM,MAAM,IAAI,YAAY,OAAO,GAAG,IAAI,MAAM,KAAK;AACjE;AAAA,IACF;AACA,WAAO,OAAO,MAAM,MAAM,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK;AAC7D;AAAA,IACF;AAEA,WAAO,YAAY;AAAA,MACjB,GAAG;AAAA,MACH,MAAM,OAAO,eAAe;AAAA,IAC9B,CAAC;AAED,eAAW,KAAK;AAAA,EAClB;AAEA,WAAS,iBAAiB,GAA2B;AACnD,gBAAY,EAAE,MAAM,UAAU,KAAK,IAAI;AACvC,eAAW,EAAE,KAAK;AAAA,EACpB;AAEA,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,SACE,gBAAAC,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACC,UAAA,EAAQ,mBAAmB,CAAC,KAAK,MAAM,GAAG,GAAG,cAAc,kBAAkB,GAE9E,gBAAAD,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,UAAU;AAAA,MACV,SACE,gBAAAF,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,IAAI,KACvB,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,CAAC,MAAM;AACf,mBAAO,CAAC;AAAA,UACV;AAAA;AAAA,MACF,CACF;AAAA;AAAA,IAIF,gBAAAA,QAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACC;AAAA,QAEA,UAAU,MAAM,UAAU,OAAO,KAAK,OAAO,CAAC,CAAC;AAAA;AAAA,IACjD;AAAA,EACF,CACF;AAEJ;;;AD9EO,SAAS,uBAAuB,EAAE,cAAc,GAAG,UAAU,GAAc;AAChF,SACE,gBAAAC,QAAA,cAAC,gBAAc,GAAG,aAChB,gBAAAA,QAAA,cAAC,cAAW,cAA4B,CAC1C;AAEJ;;;AGhBA,OAAOC,aAAW;AAElB,SAAS,0BAA0B;;;ACFnC,OAAOC,WAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE3C,SAAS,WAAAC,UAAS,QAAAC,aAAY;AAC9B;AAAA,EACE,WAAAC;AAAA,EAEA,iCAAAC;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AAKA,SAASC,gBAAe;AAC7B,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,EAAE;AACvC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,EAAE;AAC3C,QAAM,SAASC,WAAqB;AAEpC,WAAS,OAAO,cAAsB;AACpC,UAAM,QAAQC,+BAA8B,OAAO,MAAM,KAAK;AAE9D,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,WAAO,YAAY;AAAA,MACjB,GAAG;AAAA,MACH,MAAM,OAAO,eAAe;AAAA,IAC9B,CAAC;AAED,eAAW,KAAK;AAAA,EAClB;AAEA,WAAS,iBAAiB,GAA2B;AACnD,gBAAY,EAAE,MAAM,UAAU,KAAK,IAAI;AACvC,eAAW,EAAE,KAAK;AAAA,EACpB;AAEA,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,QAAM,WAAW,gBAAgB,CAAC,CAAC;AAEnC,SACE,gBAAAC,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACC,UAAA,EAAQ,mBAAmB,CAAC,GAAG,GAAG,cAAc,kBAAkB,GAEnE,gBAAAD,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,UAAU;AAAA,MACV,SACE,gBAAAF,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,IAAI,KACvB,gBAAAA,QAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACC;AAAA,UACA,UAAU,CAAC,MAAM;AACf,mBAAO,CAAC;AAAA,UACV;AAAA;AAAA,MACF,CACF;AAAA;AAAA,IAIF,gBAAAH,QAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC;AAAA,QAEA,UAAU,MAAM,UAAU,OAAO,KAAK,OAAO,CAAC,CAAC;AAAA;AAAA,IACjD;AAAA,EACF,CACF;AAEJ;;;AC7EA,OAAOC,WAAS,mBAAAC,wBAAuB;AAEvC,SAAS,kBAAwB;AACjC,SAAS,WAAAC,UAAS,QAAAC,aAAY;AAC9B;AAAA,EAEE,cAAAC;AAAA,EACA,wBAAAC;AAAA,EAEA,mBAAAC;AAAA,OACK;AACP,SAAS,WAAAC,gBAAe;AACxB,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,eAAAC,oBAAmB;AAC5B;AAAA,EACE,cAAAC;AAAA,EAEA,cAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,OACK;;;ACrBP,OAAOC,aAAY;AACnB,SAAS,OAAAC,YAAW;AAEb,IAAMC,eAAcF,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS3B,IAAMG,aAAYH,QAAO;AAAA;AAAA;AAAA;AAAA;AAMzB,IAAMI,SAAQJ,QAAOC,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAexB,IAAMI,oBAAmBL,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;;;ADRvC,IAAMM,qBAAN,cAAgCC,YAAW;AAAA,EASzC,YAAY,EAAE,SAAS,MAAM,GAAyC;AACpE,UAAM;AAPR,qBAAY,IAAIC,sBAAqB;AAarC,sBAAa,CAAC,SAA+B;AAC3C,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,gBAAAC,QAAA,cAAC,SAAI,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,MAAM;AAAA,MAC3E;AAEA,aAAO;AAAA,IACT;AAVE,SAAK,UAAU;AACf,SAAK,QAAQ;AAAA,EACf;AAAA,EAUA,eAAe,GAAuB;AACpC,QAAI,CAAC,GAAG;AACN,WAAK,KAAK;AAAA,QACR,gBAAAA,QAAA,cAACC,QAAA,EAAM,YAAY,gBAAAD,QAAA,cAACE,mBAAA,IAAiB,GAAI,OAAM,WAAQ,SAEvD;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,YAAYC,MAAK,EAAE,YAAY;AAErC,UAAM,YACJ,gBAAAH,QAAA,cAACI,cAAA,MAAa,WAAW,KAAK,QAAQ,GAAG,UAAU,KAAK,KAAK,OAAO,EAAG;AAEzE,UAAM,WAAW,KAAK,WAAW,WAAW,KAAK,IAAI;AAErD,SAAK,KAAK;AAAA,MACR,gBAAAJ,QAAA;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,SACE,gBAAAL,QAAA,cAACM,mBAAA,MACE,UACA,WACD,gBAAAN,QAAA,cAACO,YAAA,MAAW,GAAG,QAAQ,MAAM,CAAC,EAAE,KAAK,GAAG,CAAE,CAC5C;AAAA;AAAA,QAGF,gBAAAP,QAAA,cAACC,QAAA,EAAM,YAAY,YAChB,WACD,gBAAAD,QAAA,cAACO,YAAA,MAAW,GAAG,GAAI,CACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MAA+B;AACnC,UAAM,MAAM,SAAS,cAAc,MAAM;AAEzC,SAAK,OAAO,WAAW,GAAG;AAE1B,SAAK,UAAU;AAAA,MACbC,YAAW,OAAO,MAAM;AACtB,aAAK,KAAK,QAAQ;AAAA,MACpB,CAAC;AAAA,IACH;AAEA,SAAK,UAAU;AAAA,MACb,KAAK,MAAM,UAAU;AAAA,QACnB,KAAK;AAAA,QACL,CAAC,MAAM;AACL,eAAK,eAAe,CAAC;AAAA,QACvB;AAAA,QACA,EAAE,eAAe,MAAM;AAAA,MACzB;AAAA,IACF;AAEA,SAAK,eAAe,KAAK,MAAM,UAAU,aAAa,KAAK,OAAO,CAAC;AAEnE,WAAO;AAAA,EACT;AAAA,EAEA,GAAG,OAA0B;AAC3B,WAAOC,SAAQ,KAAK,SAAS,MAAM,OAAO;AAAA,EAC5C;AAAA,EAEA,cAAuB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,KAAwB;AAC9B,SAAK,UAAU,QAAQ;AAAA,EACzB;AACF;AAEO,SAASC,qBAAoB;AAClC,QAAM,WAAWC,aAAY;AAE7B,QAAM,QAAQC,iBAAgB;AAG9B,EAAAC,iBAAgB,MAAM;AACpB,UAAM,YAAY,IAAIC,gBAAe;AAAA,MACnC,QAAQ;AAAA,MACR,YAAY,CAAC,UACXC,YAAW,QAAQ;AAAA,QACjB,QAAQ,IAAIlB,mBAAkB;AAAA,UAC5B,SAAS,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACL,CAAC;AAED,WAAO,SAAS,OAAO;AAAA,MACrBmB,YAAW;AAAA,QACT,MAAM;AAAA,UAGJ,YAAoB,MAAkB;AAAlB;AAClB,iBAAK,cAAc,UAAU,WAAW,IAAI;AAAA,UAC9C;AAAA,UAEA,SAAS;AACP,iBAAK,cAAc,UAAU,WAAW,KAAK,IAAI;AAAA,UACnD;AAAA,QACF;AAAA,QACA;AAAA,UACE,aAAa,CAAC,MAAM,EAAE;AAAA,UACtB,QAAQ,GAAG;AACT,mBAAOC,YAAW,aAAa;AAAA,cAC7B,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,eAAeF,YAAW;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AACT;;;AF9JA,SAAS,QAAAG,cAAY;AAGrB,SAAS,eAAe,aAAqB,OAAwB;AACnE,QAAM,cAAc,IAAI;AAAA,IACtB;AAAA,IACA,MAAM,MAAM,SAAS,GAAG,IAAI,MAAM,QAAQ,MAAM,QAAQ;AAAA,EAC1D;AACA,MAAI;AACJ,QAAM,UAAmB,CAAC;AAE1B,UAAQ,QAAQ,YAAY,KAAK,WAAW,OAAO,MAAM;AACvD,QAAI,MAAM,UAAU,YAAY,WAAW;AACzC,kBAAY;AAAA,IACd;AACA,YAAQ,KAAK;AAAA,MACX,OAAO,MAAM,CAAC;AAAA,MACd,OAAO,CAAC,MAAM,OAAO,MAAM,QAAQ,MAAM,CAAC,EAAE,MAAM;AAAA,IACpD,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,IAAM,cAAc,mBAAmB,CAAC,SAAe;AACrD,QAAM,iBAAiB,KAAK,SAAS;AACrC,QAAM,UAAU,eAAe,gBAAgB,mBAAmB;AAElE,MAAI,QAAQ,SAAS,GAAG;AACtB,YAAQ,QAAQ,CAAC,EAAE,MAAM,MAAM;AAC7B,WAAK,aAAa,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM;AAAA,IAC9C,CAAC;AAAA,EACH;AAEA,SAAO;AACT,CAAC;AAEM,SAAS,wBAAwB,OAAgD;AACtF,SACE,gBAAAC,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,uBAAuBD,OAAK,EAAE,8BAA8B;AAAA,MAC3D,GAAG;AAAA,MACJ,SAAS;AAAA,QACP;AAAA,QACA,GAAI,MAAM,WAAW,CAAC;AAAA,MACxB;AAAA;AAAA,IAEA,gBAAAC,QAAA,cAACC,eAAA,IAAa;AAAA,IACd,gBAAAD,QAAA,cAACE,oBAAA,IAAkB;AAAA,EACrB;AAEJ;;;AI7DA,OAAOC,aAAW;AAElB,SAAS,QAAAC,cAAY;AACrB,SAAS,UAAAC,SAAQ,cAAAC,mBAAkB;AACnC,SAAS,cAAAC,aAAY,YAAAC,iBAAgB;;;ACJrC,OAAOC,cAAY;AAEZ,IAAMC,UAASD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOtB,IAAME,SAAQF,SAAO;AAAA;AAAA;AAAA;AAAA;;;ADKrB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAc;AACZ,QAAM,EAAE,MAAM,WAAW,aAAa,QAAQ,IAAI,IAAI,cAAsC;AAAA,IAC1F;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AAED,SACE,gBAAAG,QAAA,cAAC,aACC,gBAAAA,QAAA,cAACC,SAAA,EAAO,SACL,KAAK,IAAI,CAAC,SACT,gBAAAD,QAAA,cAACE,QAAA,EAAM,KAAK,KAAK,MACf,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,OAAO,KAAK,UAAU,KAAK,UAAU,IAAI;AAAA,MAClD,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,UAAU,CAAC,MAAM,UAAU,KAAK,IAAI,CAAC;AAAA,MACrC,aAAaG,OAAK,EAAE,WAAW;AAAA;AAAA,EACjC,GACA,gBAAAH,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,UAAU,EAAE;AAAA,MACrB;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,UAAU,CAAC,MAAM,YAAY,KAAK,IAAI,CAAC;AAAA,MACvC;AAAA,MACA;AAAA,MACA,eAAe;AAAA,QACb,GAAG;AAAA,QACH,YAAY,CAAC,GAAI,eAAe,cAAc,CAAC,CAAE;AAAA,MACnD;AAAA;AAAA,EACF,GACA,gBAAAA,QAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAM,gBAAAJ,QAAA,cAACK,aAAA,EAAW,MAAK,SAAQ;AAAA,MAC/B,MAAK;AAAA,MACL,SAAS,MAAM,OAAO,KAAK,EAAE;AAAA;AAAA,EAC/B,CACF,CACD,CACH,GACA,gBAAAL,QAAA;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAM,gBAAAN,QAAA,cAACO,WAAA,IAAS;AAAA,MAChB,MAAK;AAAA,MACL,SAAS,MACP,IAAI;AAAA,QACF,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,EAAE,MAAM,SAAS;AAAA,MAC3B,CAAC;AAAA;AAAA,IAGFJ,OAAK,EAAE,KAAK;AAAA,EACf,CACF;AAEJ;;;AEhFA,OAAOK,aAAW;;;ACAlB,OAAOC,YAAU,OAAAC,YAAW;AAErB,IAAM,UAAUD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcvB,IAAM,iBAAiBA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB9B,IAAM,YAAYA,SAAO;AAAA;AAAA;AAAA;AAKzB,IAAM,YAAYA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAezB,IAAM,WAAWA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuB3B,CAAC,UACD,MAAM,UAAU,KAChBC;AAAA;AAAA;AAAA;AAAA,KAIC;AAAA;;;ADlEE,SAAS,kBAAkB,OAA+C;AAC/E,SAAO,gBAAAC,QAAA,cAAC,cAAY,GAAG,OAAO;AAChC;AAEA,SAAS,WAAW,OAAkB;AACpC,QAAM;AAAA,IACJ,OAAO,SAAS,CAAC;AAAA,IACjB,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,EACd,IAAI,SAAS,CAAC;AAEd,QAAM,cAAc,eAAe;AAEnC,QAAM,SAAS,YAAY,gBAAgB,MAAM;AACjD,QAAM,QAAQ,YAAY,eAAe,MAAM;AAC/C,QAAM,OAAO,aAAa,eAAe,MAAM;AAC/C,MAAI,aACF,aAAa,SAAS,OAAO,wBAAwB,MAAM,IAAI,CAAC;AAClE,QAAM,eAAe,OAAO,QAAQ,cAAc,CAAC,CAAC;AAEpD,SACE,gBAAAA,QAAA,cAAC,YAAS,OAAc,KAAK,aAAa,UACxC,gBAAAA,QAAA,cAAC,eACE,UAAU,KAAK,gBAAAA,QAAA,cAAC,oBAAe,GAC/B,YACC,QACAA,QAAM,aAAa,MAAM;AAAA,IACvB,WAAW;AAAA,EACb,CAAC,GACH,gBAAAA,QAAA,cAAC,iBACE,YACC,gBAAAA,QAAA,cAAAA,QAAA,gBACG,GAAG,SAAS,MACZ,OACA,GACH,IAEA,KAEJ,CACF,GACC,cAAc,SACb,gBAAAA,QAAA,cAAC,iBACE,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK,MAC5B,gBAAAA,QAAA,cAAC,cAAW,KAAW,GAAG,OAAO,WAAW,KAAK,OAAc,OAAO,QAAQ,GAAG,CAClF,CACH,IACE,IACN;AAEJ;;;AErEA,OAAOC,WAAS,aAAAC,mBAAiB;AAEjC,SAA6C,mBAAAC,wBAAuB;AACpE,SAAS,mBAAAC,kBAAiB,kBAAkB;;;ACH5C,OAAOC,aAAW;AAGlB,SAAS,WAAAC,gBAAe;;;ACHxB,OAAOC,cAAY;AACnB,SAAS,OAAAC,YAAW;AAEb,IAAM,iBAAiBD,SAAO;AAAA;AAAA;AAI9B,IAAM,YAAYA,SAAOC,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS5B,IAAM,YAAYD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ADCzB,SAAS,iBAAiB,EAAE,QAAQ,CAAC,GAAG,gBAAgB,OAAO,QAAQ,GAAc;AAC1F,QAAM,cAAc,eAAe;AACnC,QAAM,OACJ,aAAa,eAAe,KAAK,KAAK,YAAY,eAAe,EAAE,MAAM,UAAU,CAAC;AAEtF,SACE,gBAAAE,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SACE,gBAAAD,QAAA,cAAC,sBACC,gBAAAA,QAAA,cAAC,qBAAkB,OAAc,aAA0B,UAAU,gBAAgB,CACvF;AAAA;AAAA,IAGF,gBAAAA,QAAA,cAAC,aAAU,OAAO,UAAU,UAAU,WACnC,QACCA,QAAM,aAAa,MAAM;AAAA,MACvB,WAAW;AAAA,IACb,CAAC,GACF,SAAS,gBAAAA,QAAA,cAAC,iBAAW,KAAM,CAC9B;AAAA,EACF;AAEJ;;;AEvCA,OAAOE,cAAY;AAEZ,IAAM,wBAAwBA,SAAO;AAAA;AAAA;AAAA;AAAA;;;AHcrC,SAAS,eAAe,EAAE,OAAO,gBAAgB,iBAAiB,GAAc;AACrF,QAAM,QAAQC,iBAAgB;AAC9B,QAAM,UAAU,WAAW;AAE3B,EAAAC,YAAU,MAAM;AACd,QAAI,CAAC,kBAAkB;AACrB,aAAO,MAAM;AAAA,IACf;AAEA,UAAM,aAAa,MAAM,OAAO,qBAAqB,MAAM;AACzD,cAAQ;AAAA,IACV,CAAC;AAED,WAAO,MAAM;AACX,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,aAAwC,mBAC1C,MAAM,OAAO,WAAW,OAAO,CAAC,KAAK,SAAS;AAC5C,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAIC,iBAAgB,YAAY,KAAK,IAAI,GAAG,cAAc,CAAC;AAAA,IAC7D;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC,IACL,OAAO,cAAc,CAAC;AAE1B,QAAM,eAAe,OAAO,QAAQ,cAAc,CAAC,CAAC;AAEpD,SACE,gBAAAC,QAAA,cAAC,6BACE,aAAa,IAAI,CAAC,CAAC,KAAK,MAAM,MAC7B,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,MACA,SAAS,CAAC;AAAA;AAAA,EACZ,CACD,CACH;AAEJ;;;AI3DA,OAAOC,WAAS,WAAAC,iBAAe;AAE/B,SAAgC,mBAAAC,wBAAuB;AACvD,SAAS,qBAAAC,0BAAyB;AAa3B,SAAS,iBAAiB,EAAE,OAAO,OAAO,eAAe,GAAc;AAC5E,QAAM,YAAYC,mBAAkB;AAEpC,QAAM,WAAW,OAAO,SAAS,QAAQ,UAAU,aAAa,OAAO,OAAO,IAAI;AAElF,QAAM,SAASC,UAAQ,MAAM;AAC3B,QAAI,OAAO,SAAS,OAAO;AACzB,aAAOC,iBAAgB,YAAY,UAAU,IAAI;AAAA,IACnD;AACA,QAAI,OAAO,SAAS,YAAY;AAC9B,aAAO,EAAE,MAAM,SAAS;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,YAAY;AAC9B,aAAO,eAAe,wBAAwB,KAAK;AAAA,IACrD;AAEA,WAAO,EAAE,MAAM,UAAU;AAAA,EAC3B,GAAG,CAAC,OAAO,UAAU,IAAI,CAAC;AAE1B,SACE,gBAAAC,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,SAAS,OAAO,SAAS,SAAS,CAAC;AAAA;AAAA,EACrC;AAEJ;;;AC3CA,OAAOC,WAAS,WAAAC,iBAAe;AAE/B,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,qBAAAC,0BAAyB;;;ACHlC,OAAOC,cAAY;AAEZ,IAAM,uBAAuBA,SAAO;AAAA;AAAA;AAAA;AAAA;;;ADcpC,SAAS,oBAAoB,EAAE,OAAO,eAAe,GAAc;AACxE,QAAM,eAAe,OAAO,QAAQ,SAAS,CAAC,CAAC;AAE/C,SACE,gBAAAC,QAAA,cAAC,4BACE,aAAa,IAAI,CAAC,CAAC,KAAKC,MAAK,MAAM;AAClC,QAAI,eAAe,YAAYA,MAAK,GAAG;AACrC,aACE,gBAAAD,QAAA,cAAC,oBAAiB,KAAU,OAAO,KAAK,OAAOC,QAAO,gBAAgC;AAAA,IAE1F;AAEA,QAAIC,eAAcD,MAAK,GAAG;AACxB,aACE,gBAAAD,QAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO;AAAA,UACP,OAAOC;AAAA,UACP;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT,CAAC,CACH;AAEJ;AAEO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAEG;AACD,QAAM,YAAYE,mBAAkB;AAEpC,QAAM,SAASC;AAAA,IACb,MAAM,eAAe,gBAAgB,OAAO,UAAU,KAAK;AAAA,IAC3D,CAAC,UAAU,SAAS,KAAK;AAAA,EAC3B;AAEA,SAAO,gBAAAJ,QAAA,cAAC,oBAAiB,OAAc,OAAO,QAAQ,gBAAgC;AACxF;;;AE5DA,OAAOK,aAAW;AAElB,SAAS,kBAAyC;AAClD,SAAS,UAAAC,eAAc;AACvB,SAAS,YAAAC,iBAAgB;;;ACJzB,OAAOC,aAAW;AAElB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,aAAAC,kBAAiB;;;ACH1B,OAAOC,WAAS,aAAAC,aAAW,YAAAC,iBAAgB;AAE3C,OAAOC,YAA2B;AAE3B,SAASC,WAAU,OAAmB;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAIF,UAAS,EAAE;AAErC,EAAAD,YAAU,MAAM;AACd,aAAS,MAAM,KAAe;AAAA,EAChC,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,SACE,gBAAAD,QAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,UAAU,CAACE,WAAU;AACnB,iBAASA,MAAK;AAAA,MAChB;AAAA,MACA,QAAQ,CAAC,MAAM,MAAM,WAAW,OAAO,CAAC;AAAA;AAAA,EAC1C;AAEJ;;;ADTO,SAAS,UAAU,OAAuB;AAC/C,QAAM;AAAA,IACJ,QAAQ;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE,gBAAAC,QAAA,cAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAE,KAC1D,gBAAAA,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,KAAK,UAAU,KAAK,UAAU,IAAI,KACpD,OAAO,aAAa,WACnB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,OAAO,QAAQ,QAAQ,GAAG;AAAA,MACnC,OAAO,OAAO,MAAM;AAAA,MACpB,QAAQ,EAAE,aAAa,cAAc;AAAA,MACrC,UAAU,CAAC,MACT,WAAW;AAAA,QACT,GAAG;AAAA,QACH,MAAM,EAAE,MAAM,OAAO,SAAS,EAAE;AAAA,MAClC,CAAC;AAAA;AAAA,EAEL,IAEA,gBAAAA,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,QAAQ,GAAG;AAAA,MACpB,MAAK;AAAA,MACL,aAAY;AAAA,MACZ,OAAO,OAAO;AAAA,MACd,UAAU,CAAC,MACT,WAAW;AAAA,QACT,GAAG;AAAA,QACH,MAAM;AAAA,MACR,CAAC;AAAA;AAAA,EAEL,CAEJ,GACA,gBAAAD,QAAA,cAAC,SAAI,OAAO,EAAE,UAAU,EAAE,KACxB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,OAAO;AAAA,MACd,UAAU,CAAC,MACT,WAAW;AAAA,QACT,GAAG;AAAA,QACH,OAAO;AAAA,MACT,CAAC;AAAA;AAAA,EAEL,CACF,GACC,YACC,gBAAAA,QAAA,cAAC,aACC,gBAAAA,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAF,QAAA,cAACG,YAAA,IAAU;AAAA,MACjB,SAAS,MAAM,WAAW;AAAA;AAAA,EAC5B,CACF,CAEJ;AAEJ;;;AD/DO,SAAS,WAAW,OAAwB;AACjD,QAAM,EAAE,MAAM,SAAS,IAAI;AAE3B,SACE,gBAAAC,QAAA,cAAC,cAAW,QACT,CAAC,EAAE,MAAM,MACR,gBAAAA,QAAA,cAAAA,QAAA,gBACG,MAAM,IAAI,CAAC,YAAY,UACtB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,WAAW;AAAA,MAChB;AAAA,MACA,OAAO,WAAW;AAAA,MAClB,UAAU,CAAC,UAAU;AACnB,mBAAW,SAAS,KAAK;AAAA,MAC3B;AAAA,MACA,UAAU,MAAM,MAAM,OAAO,KAAK;AAAA;AAAA,EACpC,CACD,GACD,gBAAAA,QAAA,cAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,EAAE,KACpC,gBAAAA,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAD,QAAA,cAACE,WAAA,IAAS;AAAA,MAChB,SAAS,MAAM,MAAM,OAAO,EAAE,UAAU,SAAS,CAAC;AAAA;AAAA,IACnD;AAAA,EAED,GACA,gBAAAF,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAD,QAAA,cAACE,WAAA,IAAS;AAAA,MAChB,SAAS,MAAM,MAAM,OAAO,EAAE,UAAU,UAAU,CAAC;AAAA;AAAA,IACpD;AAAA,EAED,CACF,CACF,CAEJ;AAEJ;;;AGrDA,OAAOC,aAAW;AAElB,SAAS,QAAAC,cAAY;AACrB,SAAS,UAAAC,eAAc;AACvB,SAAS,YAAAC,iBAAgB;;;ACJzB,OAAOC,aAAW;AAElB,OAAOC,YAAU,OAAAC,YAAW;AAC5B,OAAOC,WAAU;AAEV,IAAMC,eAAcH,SAAO;AAE3B,IAAMI,SAAQJ,SAAO;AAAA;AAAA;AAAA;AAAA;AAMrB,IAAMK,qBAAoBL,SAAO;AAAA;AAAA;AAAA;AAKjC,IAAMM,eAAcN,SAAO;AAAA;AAAA;AAAA;AAAA,IAI9B,CAAC,EAAE,QAAQ,MACX,WACAC;AAAA;AAAA;AAAA,KAGC;AAAA;AAGE,IAAMM,kBAAiBP,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IASjC,CAAC,EAAE,WAAW,SAAS,cAAc,MAAM;AAC3C,MAAI,SAAS,UAAU,SAAS;AAChC,MAAI,QAAQ,gBAAgB,SAAS;AAErC,SACE,aACAC;AAAA;AAAA;AAAA;AAAA,oBAIc,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAeP,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAOtB,CAAC;AAAA;AAGI,IAAMO,mBAAkBR,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS/B,IAAMS,kBAAiBT,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO9B,IAAMU,iBAAgBV,SAAO;AAAA;AAAA;AAAA,IAGhC,CAAC,EAAE,UAAU,MACb,aACAC;AAAA;AAAA,KAEC;AAAA;AAGE,IAAMU,aAAYX,SAAO;AAAA;AAAA;AAIhC,IAAMY,sBACJ,gBAAAb,QAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAU;AAAA,IACV,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA;AAAA,EAEN,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,UAAS;AAAA,MACT,GAAE;AAAA;AAAA,EACH;AAAA,EACD,gBAAAA,QAAA,cAAC,UAAK,GAAE,sZAAqZ;AAC/Z;AAGK,IAAMc,mBAAkB,MAAM,gBAAAd,QAAA,cAACG,OAAA,EAAK,MAAK,SAAQ,KAAKU,qBAAoB;;;AC1HjF,OAAOE,WAAS,WAAAC,WAAS,YAAAC,kBAAgB;AAEzC,SAAS,QAAAC,cAAY;AACrB,SAAS,cAAAC,aAAY,SAAAC,cAAa;AAClC,SAAS,mBAAAC,kBAAiB,oBAAAC,mBAAkB,cAAAC,mBAAkB;;;ACJ9D,SAAS,WAAAC,iBAAe;AAExB,SAAS,iBAAAC,sBAAqB;AAWvB,SAAS,aACd,OACA,UASA;AACA,QAAM,cAAcC,UAAQ,MAAM;AAChC,QAAI,CAACC,eAAc,KAAK,GAAG;AACzB,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,YAAY,KAAK,GAAG;AAErC,aAAO,eAAe,WAAW,KAAK,KAAK,OAAO,QAAQ,SAAS;AAAA,IACrE;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,kBAAkBD,UAAQ,MAAM;AACpC,QAAIC,eAAc,KAAK,GAAG;AACxB,UAAI,eAAe,YAAY,KAAK,GAAG;AACrC,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,EAAE,MAAM,KAAK,WAAW,aAAa,OAAO,IAAI,cAAmB;AAAA,IACvE,OAAO;AAAA,IACP,UAAU,CAACC,WAAU;AACnB,iBAAWA,MAAK;AAAA,IAClB;AAAA,IACA,cAAc,CAACA,WAAW,eAAe,YAAYA,MAAK,IAAI,gBAAgB;AAAA,EAChF,CAAC;AAED,QAAM,cAAcF;AAAA,IAClB,MAAM,gBAAgB,KAAK,SAAS,KAAK,OAAO,KAAK,mBAAmB,CAAC,CAAC,EAAE,SAAS;AAAA,IACrF,CAAC,aAAa,KAAK,QAAQ,OAAO,KAAK,mBAAmB,CAAC,CAAC,EAAE,MAAM;AAAA,EACtE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AD7CA,IAAM,yBAAgD;AAAA,EACpD,KAAK,CAAC,WAAW,OAAO,SAAS;AAAA,EACjC,UAAU,MACR,gBAAAG,QAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAQ;AAAA,MACR,OAAO,EAAE,eAAe,OAAO;AAAA,MAC/B,OAAOC,OAAK,EAAE,4BAA4B;AAAA;AAAA,EAC5C;AAEJ;AAEO,SAAS,cACd,OASA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,UAAU,WAAW,IAAIC,WAAS,KAAK;AAE9C,QAAM,EAAE,aAAa,aAAa,MAAM,KAAK,WAAW,aAAa,OAAO,IAAI;AAAA,IAC9E;AAAA,IACA;AAAA,EACF;AAEA,QAAM,aAAaC;AAAA,IACjB,MAAM,CAAC,GAAI,cAAc,CAAC,sBAAsB,IAAI,CAAC,GAAI,GAAI,eAAe,cAAc,CAAC,CAAE;AAAA,IAC7F,CAAC,aAAa,eAAe,UAAU;AAAA,EACzC;AAEA,QAAM,mBAAmBA;AAAA,IACvB,MACE,cACK;AAAA,MACC,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,SAAS;AAAA,IAC3B,IACA;AAAA,IACN,CAAC,aAAa,KAAK;AAAA,EACrB;AAEA,SACE,gBAAAJ,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAACK,iBAAA,EAAe,SAAkB,WAAW,SAAS,GAAG,eAAe,eACrE,eACC,gBAAAL,QAAA,cAACM,oBAAA,EAAkB,SAAS,MAAM,YAAY,CAAC,cAAc,CAAC,SAAS,KACpE,WAAW,gBAAAN,QAAA,cAACO,kBAAA,EAAgB,MAAK,SAAQ,IAAK,gBAAAP,QAAA,cAACQ,mBAAA,EAAiB,MAAK,SAAQ,CAChF,CAEJ,GACA,gBAAAR,QAAA,cAACS,kBAAA,MACC,gBAAAT,QAAA,cAACU,iBAAA,MACC,gBAAAV,QAAA,cAACW,QAAA,MACC,gBAAAX,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,OAAO,KAAK,UAAU,KAAK,UAAU,IAAI;AAAA,MAClD,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,CAAC;AAAA,MAChC,aAAaE,OAAK,EAAE,WAAW;AAAA;AAAA,EACjC,GACA,gBAAAF,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,UAAU,EAAE;AAAA,MACrB;AAAA,MACA,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,CAAC;AAAA,MAChC;AAAA,MACA,eAAe;AAAA,QACb,GAAG;AAAA,QACH;AAAA,MACF;AAAA;AAAA,EACF,GACA,gBAAAA,QAAA,cAACY,YAAA,MACE,eACC,gBAAAZ,QAAA;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAM,gBAAAb,QAAA,cAACc,kBAAA,IAAgB;AAAA,MACvB,SAAS,MAAM;AACb,YAAI;AAAA,UACF,MAAM;AAAA,UACN,SAAS;AAAA,UACT,QAAQ,EAAE,MAAM,SAAS;AAAA,QAC3B,CAAC;AACD,oBAAY,IAAI;AAAA,MAClB;AAAA;AAAA,EACF,GAEF,gBAAAd,QAAA;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAM,gBAAAb,QAAA,cAACe,aAAA,EAAW,MAAK,SAAQ;AAAA,MAC/B,MAAK;AAAA,MACL,SAAS,MAAM,WAAW;AAAA;AAAA,EAC5B,CACF,CACF,CACF,GACC,eACC,gBAAAf,QAAA,cAACgB,gBAAA,EAAc,WAAW,YACxB,gBAAAhB,QAAA,cAACiB,cAAA,EAAY,SAAS,QACnB,KAAK,IAAI,CAAC,OAAO,UAChB,gBAAAjB,QAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,MAAM;AAAA,MACX,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,QAAQ,SAAS;AAAA,MACjB,eAAe,CAAC,OAAO;AACrB,oBAAY,MAAM,IAAI,EAAE;AAAA,MAC1B;AAAA,MACA,aAAa,CAAC,MAAM;AAClB,kBAAU,MAAM,IAAI,CAAC;AAAA,MACvB;AAAA,MACA,UAAU,MAAM;AACd,eAAO,MAAM,EAAE;AAAA,MACjB;AAAA,MACA,SAAS,UAAU,KAAK,SAAS;AAAA;AAAA,EACnC,CACD,CACH,CACF,CAEJ,CACF;AAEJ;;;AF9JO,SAAS,iBAAiB,OAAkB;AACjD,QAAM,EAAE,OAAO,UAAU,UAAU,UAAU,cAAc,IAAI;AAE/D,QAAM,EAAE,MAAM,WAAW,aAAa,QAAQ,IAAI,IAAI,cAAc;AAAA,IAClE;AAAA,IACA;AAAA,IACA,cAAc,CAACkB,WAAW,eAAe,YAAYA,MAAK,IAAI,gBAAgB;AAAA,EAChF,CAAC;AAED,SACE,gBAAAC,QAAA,cAAC,aACC,gBAAAA,QAAA,cAACC,cAAA,MACE,KAAK,IAAI,CAAC,SACT,gBAAAD,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,KAAK;AAAA,MACV,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,aAAa,CAAC,QAAQ,UAAU,KAAK,IAAI,GAAG;AAAA,MAC5C,eAAe,CAACD,WAAU,YAAY,KAAK,IAAIA,MAAK;AAAA,MACpD,UAAU,MAAM,OAAO,KAAK,EAAE;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF,CACD,CACH,GACA,gBAAAC,QAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,WAAW,IAAI,YAAY,GAAG;AAAA,MACvC,UAAU;AAAA,MACV,MAAM,gBAAAF,QAAA,cAACG,WAAA,IAAS;AAAA,MAChB,MAAK;AAAA,MACL,SAAS,MAAM;AACb,YAAI;AAAA,UACF,MAAM;AAAA,UACN,SAAS;AAAA,UACT,QAAQ,EAAE,MAAM,SAAS;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA;AAAA,IAECC,OAAK,EAAE,KAAK;AAAA,EACf,CACF;AAEJ;;;AIxDA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAIA,IAAM,0BAA2C,iCAAiC;AAAA,EACvF,SAAS;AAAA,EACT,OAAO,CAAC,OAAsB,QAAQ;AAAA,IACpC,WAAW,0BAA0B;AAAA,MACnC,KAAK,GAAG,IAAI,KAAK,EAAE;AAAA,MACnB,MAAM;AAAA,QACJ,OAAO,YAAY,IAAI,IAAI,GAAG,WAAW,OAAO;AAAA,QAChD,MAAM,IAAI,KAAK,gBAAkC,EAAE,MAAM;AAAA,MAC3D;AAAA,MACA,MAAM,WAAW,aAAa;AAAA,QAC5B,YAAY;AAAA,UACV,WAAW,eAAe;AAAA,YACxB,KAAK;AAAA,YACL,aAAa,WAAW,0BAA0B;AAAA,cAChD,cAAc,WAAW,wBAAwB;AAAA,gBAC/C,SAAS,MAAM,WAAW,CAAC;AAAA,cAC7B,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAAA,UACD,WAAW,eAAe;AAAA,YACxB,KAAK;AAAA,YACL,MAAM,WAAW,aAAa;AAAA,UAChC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;;;ACrCD;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AAgBA,IAAM,sBAAuC;AAAA,EAClD;AAAA,IACE,OAAO,UAAU;AAAA,IACjB,QAAS,CAAC,WAAW;AACnB,YAAM,EAAE,SAAS,MAAM,KAAK,IAAI;AAEhC,YAAM,gBAAgB,QAAQ,KAAK,WAAW,6BAA6B;AAE3E,YAAM,aAAa,cAAc,SAAS,CAAC,EAAE,QAAQ,MAAM,MAAM;AAC/D,cAAM,gBAAgB;AAAA,UACpB,GAAG,OAAO,aAAa,IAAI,CAAC,WAAW,OAAO,GAAG,EAAE,QAAQ;AAAA,UAC3D,OAAO;AAAA,QACT;AACA,cAAM,eAAe;AAAA,UACnB,GAAG,MAAM,aAAa,IAAI,CAAC,WAAW,OAAO,GAAG,EAAE,QAAQ;AAAA,UAC1D,MAAM;AAAA,QACR;AAGA,oBAAY,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,gBAAgB,OAAO;AAC/D,cAAI,GAAG,SAAS,OAAO;AAErB,gBAAI,eAAe,GAAG,SAAS,aAAa,GAAG;AAC7C,iBAAG,UAAU,CAAC,GAAG,cAAc,IAAI,GAAG,WAAW,CAAC,IAAI,MAAM,cAAc,MAAM,CAAC;AACjF,mBAAK,WAAW,gBAAgB,EAAE;AAAA,YACpC;AAAA,UACF,WAAW,GAAG,SAAS,YAAY;AAEjC,kBAAM,mBAAmB,eAAe,oBAAoB,EAAE;AAC9D,gBAAI,WAAW;AAEf,6BAAiB,QAAQ,CAAC,aAAa;AACrC,kBAAI,eAAe,UAAU,aAAa,GAAG;AAC3C,2BAAW;AACX,sBAAM,cAAc;AAAA,kBAClB,GAAG;AAAA,kBACH,IAAI,YAAY,CAAC,IAAI,MAAM,cAAc,MAAM;AAAA,gBACjD;AACA,mBAAG,UAAU,GAAG,SAAS;AAAA,kBACvB,KAAK,SAAS,KAAK,GAAG,CAAC;AAAA,kBACvB,KAAK,YAAY,KAAK,GAAG,CAAC;AAAA,gBAC5B;AAAA,cACF;AAAA,YACF,CAAC;AAED,gBAAI,UAAU;AACZ,mBAAK,WAAW,gBAAgB,EAAE,GAAG,GAAG,CAAC;AAAA,YAC3C;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,aAAO,MAAM;AACX,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACF;AAQA,SAAS,eAAe,UAAoB,CAAC,GAAG,eAAyB;AACvE,SAAO,cAAc,MAAM,CAAC,MAAM,UAAU,SAAS,QAAQ,KAAK,CAAC;AACrE;AAQA,SAAS,YACP,MACA,OACA,IACA;AACA,aAAW,EAAE,OAAO,IAAI,KAAK,KAAK,eAAe,SAAS,OAAO;AAAA,IAC/D,cAAc,CAAC,OAAO,UAAU;AAAA,IAChC,MAAM;AAAA,EACR,CAAC,GAAG;AACF,OAAG,MAAM,EAAwC;AAAA,EACnD;AACF;;;AC3GA,SAAS,mBAAAC,wBAAoC;AAC7C;AAAA,EACE,cAAAC;AAAA,EAGA,oCAAAC;AAAA,EACA,eAAAC;AAAA,OACK;AAEA,IAAM,2BAA4CD,kCAAiC;AAAA,EACxF,OAAO,CAAC,OAAoB,QAAQ;AAAA,IAClCD,YAAW,0BAA0B;AAAA,MACnC,KAAK,GAAG,IAAI,KAAK,EAAE;AAAA,MACnB,MAAM;AAAA,QACJ,OAAOE,aAAY,IAAI,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,KAAK;AAAA,QAC9D,MAAM,IAAI,KAAK,gBAAkC,EAAE,MAAM;AAAA,MAC3D;AAAA,MACA,MAAMH,iBAAgB,YAAY,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AACF,CAAC;;;ACpBD;AAAA,EACE,aAAAI;AAAA,EAIA;AAAA,OACK;AAEA,IAAM,oBAAqC;AAAA,EAChD;AAAA,IACE,OAAOA,WAAU;AAAA,IACjB,QAAS,CAAC,EAAE,OAAO,QAAQ,MAAM;AAC/B,cAAQ,KAAK,QAAQ,oBAAoB,EAAE,UAAU,QAAQ,CAAC,WAAW;AACvE,eAAO,OAAO,UAAU,QAAQ,CAAC,SAAS;AACxC,eAAK,WAAW;AAAA,YACd,GAAI,KAAK,QAAQ,CAAC;AAAA,YAClB,OAAO,SAAS,QAAQ,KAAK;AAAA,YAC7B,MAAM,QAAQ,KAAK,gBAAkC,EAAE,MAAM;AAAA,UAC/D,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACvBA,SAAS,eAAe;AACxB;AAAA,EACE,aAAAC;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAEA,IAAM,2BAA2B,CAAC;AAAA,EACvC;AACF,IAEI,CAAC,MAAuB;AAAA,EAC1B;AAAA,IACE,OAAOA,WAAU;AAAA,IACjB,QAAS,CAAC,EAAE,SAAS,KAAK,MAAM;AAC9B,YAAM,YACJ,UAAU,YAAY,oBAAoB,QAAQ,IAAI,IAAI,aAAa,QAAQ,IAAI;AAErF,YAAM,aAAa,UAAU,UAAU,qBAAqB,MAAM;AAChE,YAAI,CAAC,QAAQ,KAAK,MAAM,MAAM,GAAG;AAC/B,eAAK,SAAS;AAAA,QAChB;AAAA,MACF,CAAC;AAED,aAAO,MAAM,WAAW,QAAQ;AAAA,IAClC;AAAA,EACF;AACF;;;AC7BA;AAAA,EAEE,aAAAC;AAAA,EAIA,gBAAAC;AAAA,OACK;AAiBA,IAAM,uBAAuB,CAClC,OACoB;AAAA,EACpB;AAAA,IACE,OAAOD,WAAU;AAAA,IACjB,QAAS,CAAC,WAAW;AACnB,YAAM,EAAE,SAAS,MAAM,IAAI;AAE3B,UAAI,OAAO,SAAS,OAAO;AACzB,eAAO,MAAM;AAAA,MACf;AAEA,YAAM,aAAaC,cAAa,QAAQ,IAAI,EAAE,UAAU;AAAA,QACtD,OAAO,WAAW,CAAC;AAAA,QACnB,CAAC,MAAM;AACL,aAAG,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC;AAAA,QAC/B;AAAA,MACF;AACA,aAAO,MAAM;AACX,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACF;;;AC/CA,SAAsB,mBAAAC,wBAAuB;AAC7C;AAAA,EAEE,aAAAC;AAAA,EAIA,gBAAAC;AAAA,OACK;AAgBA,IAAM,wBAAwB,CACnC,OACoB;AAAA,EACpB;AAAA,IACE,OAAOD,WAAU;AAAA,IACjB,QAAS,CAAC,WAAW;AACnB,YAAM,EAAE,SAAS,MAAM,IAAI;AAE3B,UAAI,OAAO,SAAS,OAAO;AACzB,eAAO,MAAM;AAAA,MACf;AAEA,YAAM,aAAaC,cAAa,QAAQ,IAAI,EAAE,UAAU;AAAA,QACtD,OAAO,WAAW,CAAC;AAAA,QACnB,CAAC,UAAU;AACT,aAAG,EAAE,GAAG,QAAQ,QAAQF,iBAAgB,YAAY,KAAK,EAAE,CAAC;AAAA,QAC9D;AAAA,QACA;AAAA,UACE,UAAU,CAAC,OAAO,IAAI;AAAA,QACxB;AAAA,MACF;AACA,aAAO,MAAM;AACX,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACF;;;AClDA;AAAA,EACE,cAAAG;AAAA,EACA,oCAAAC;AAAA,EACA;AAAA,EAEA,eAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AAIA,IAAM,4BAA6CH,kCAAiC;AAAA,EACzF,OAAO,CAAC,OAAsC,QAAQ;AAAA,IACpDD,YAAW,0BAA0B;AAAA,MACnC,KAAK,GAAG,IAAI,KAAK,EAAE;AAAA,MACnB,MAAM;AAAA,QACJ,OAAOE,aAAY,IAAI,IAAI,GAAG,WAAW,OAAO;AAAA,QAChD,MAAM,IAAI,KAAK,gBAAkC,EAAE,MAAM;AAAA,MAC3D;AAAA,MACA,MAAMF,YAAW,aAAa;AAAA,QAC5B,YAAY,OAAO,QAAQ,KAAK,EAAE;AAAA,UAAI,CAAC,CAAC,MAAMK,MAAK,MACjDL,YAAW,eAAe;AAAA,YACxB,KAAK;AAAA,YACL,aAAaA,YAAW,0BAA0B;AAAA,cAChD,SAASA,YAAW,wBAAwB;AAAA,gBAC1C,SAASK,QAAO,WAAW,CAAC;AAAA,cAC9B,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;AAKM,IAAM,+BACX,wBAAwB;AAAA,EACtB,MAAM;AAAA,EACN,gBAAgB,EAAE,YAAY,GAAG,EAAE,UAAU,GAAG;AAC9C,gBAAY;AAAA,MACV,CAAC,SAAS,GAAG;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,OAAO,KAAK,EAAE,UAAU,GAAG;AACzB,UAAM,wBAAwB,IAAI,KAAK,WAAW,0BAA0B;AAE5E,UAAM,gBAAgB,IAAI,KAAK;AAE/B,UAAM,gBAAgB,GAAG,aAAa;AAEtC,QAAI,sBAAsB,eAAe,aAAa,GAAG;AACvD;AAAA,IACF;AAEA,0BAAsB,oBAAoB,eAAe;AAAA,MACvD,iBAAiB,CAAC,QAAQC,SAAQ;AAChC,cAAM,OAAOA,KAAI,MAAM,MAAM;AAG7B,YAAI,MAAM,QAAQ,iBAAiB,eAAe;AAChD,iBAAO,CAAC,GAAG,QAAQF,cAAa,KAAK,MAAM,CAAC;AAAA,QAC9C;AAEA,eAAO;AAAA,MACT;AAAA,MACA,cAAc,QAAQE,MAAK;AACzB,cAAM,YAAYA,KAAI,MAAM;AAE5B,YAAI,WAAW,SAAS,kBAAkB,SAAS;AACjD,iBAAO;AAAA,QACT;AAEA,cAAM,OAAO,WAAW;AAGxB,YAAI,MAAM,iBAAiB,eAAe;AAExC,gBAAM,cAAc,KAAK;AAGzB,iBAAO;AAAA,YACLH,qBAAoB,IAAI;AAAA,YACxB,GAAG,YAAY,IAAI,CAAC,gBAAgBC,cAAa,WAAW,CAAC;AAAA,UAC/D;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACF,CAAC;;;AClGH,SAAS,OAAAG,MAAK,OAAAC,YAAW;AACzB,SAAS,2BAAAC,0BAAyB,uBAAAC,sBAAqB,gBAAAC,qBAAoB;AAUpE,IAAM,0BAA0BC,yBAAqC;AAAA,EAC1E,gBAAgB,EAAE,kBAAkB,GAAG,EAAE,WAAW,WAAW,MAAM,GAAG;AACtE,QAAI,CAAC,aAAa,CAAC,WAAW;AAC5B;AAAA,IACF;AAEA,sBAAkB,CAAC,UAAU,QAAQ;AACnC,MAAAC;AAAA,QACE;AAAA,QACA;AAAA,QACA,eAAe;AAAA,UACbC,KAAI,UAAU,SAAS;AAAA,UACvB,UAAU,YAAYC,qBAAoB,IAAI,IAAI,IAAIC,cAAa,IAAI,IAAI;AAAA,QAC7E;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF,CAAC;;;AC9BD,SAAS,OAAAC,MAAK,cAAc;AAC5B,SAAS,mBAAAC,yBAAuB;AAChC;AAAA,EACE,cAAAC;AAAA,EACA,oCAAAC;AAAA,EACA,2BAAAC;AAAA,EAEA,eAAAC;AAAA,EACA,gBAAAC;AAAA,OACK;AAqBA,IAAM,0BAA0BF,yBAAqC;AAAA,EAC1E,gBAAgB,EAAE,mBAAmB,YAAY,GAAG,EAAE,WAAW,UAAU,GAAG;AAC5E,QAAI,CAAC,aAAa,CAAC,WAAW;AAC5B;AAAA,IACF;AAEA,gBAAY;AAAA,MACV,CAAC,SAAS,GAAGD,kCAAiC;AAAA,QAC5C,OAAO,CAAC,OAA0B,QAAQ;AACxC,gBAAM,cAAc;AAAA,YAClB,MAAM,OAAO,CAAC,OAAO,GAAG,aAAa,aAAa,GAAG,QAAQ,GAAG,KAAK;AAAA,YACrE;AAAA,UACF;AAEA,iBAAO;AAAA,YACLD,YAAW,0BAA0B;AAAA,cACnC,KAAK,GAAG,IAAI,KAAK,EAAE;AAAA,cACnB,MAAM;AAAA,gBACJ,OAAOG,aAAY,IAAI,IAAI,GAAG,WAAW,OAAO;AAAA,gBAChD,MAAM,IAAI,KAAK,gBAAkC,EAAE,MAAM;AAAA,cAC3D;AAAA,cACA,MAAMH,YAAW,aAAa;AAAA,gBAC5B,YAAY,YAAY;AAAA,kBAAI,CAAC,OAC3BA,YAAW,eAAe;AAAA,oBACxB,KAAK,GAAG;AAAA,oBACR,MACE,GAAG,OAAO,SAAS,aACfD,kBAAgB,YAAY,GAAG,OAAO,UAAU,CAAC,CAAC,IAClD;AAAA,oBACN,aACE,GAAG,OAAO,SAAS,QACfC,YAAW,wBAAwB;AAAA,sBACjC,SAAS,GAAG,OAAO,WAAW,CAAC;AAAA,oBACjC,CAAC,IACD,CAAC;AAAA,kBACT,CAAC;AAAA,gBACH;AAAA,cACF,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,sBAAkB,CAAC,UAAU,QAAQ;AACnC,MAAAF;AAAA,QACE;AAAA,QACA;AAAA,QACAC,kBAAgB,YAAYK,cAAa,IAAI,IAAI,EAAE,OAAO,YAAY,CAAC,GAAG,IAAI;AAAA,MAChF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF,CAAC;;;ACpFD,SAAS,aAAa;AACtB,SAAS,eAA+B,gBAAAC,qBAAoB;AAcrD,SAAS,kBAAkB,OAA+B,KAAc;AAC7E,QAAM,EAAE,MAAM,UAAU,cAAc,IAAI;AAE1C,QAAM;AAAA,IACJ,UAAU,kBAAkB;AAAA,IAC5B,iBAAiB,yBAAyB;AAAA,EAC5C,IAAI,iBAAiB,CAAC;AAEtB,MAAI,aAAa,MAAM,KAAK,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,YAAY,KAAK;AAChF,WAAO;AAAA,MACL,OAAO,cAAc;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,OAAO;AACzB,UAAM,WAAWC,cAAa,IAAI,EAAE,UAAU,aAAa,OAAO,WAAW,CAAC,CAAC;AAC/E,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,QACL,OAAO,cAAc;AAAA,QACrB,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,YAAY;AAC9B,UAAM,UAAU,eAAe,oBAAoB,KAAK;AAExD,eAAW,OAAO,SAAS;AACzB,YAAM,WAAWA,cAAa,IAAI,EAAE,UAAU,aAAa,GAAG;AAC9D,UAAI,CAAC,UAAU;AACb,eAAO;AAAA,UACL,OAAO,cAAc;AAAA,UACrB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":["React","I18n","value","isObject","FlowValueUtils","isObject","React","JsonSchemaUtils","ASTMatch","React","JsonSchemaUtils","React","React","I18n","React","React","createTheme","t","colors","React","React","React","I18n","React","I18n","React","I18n","InputNumber","React","I18n","value","React","I18n","React","I18n","React","definePluginCreator","React","JsonSchemaUtils","ASTMatch","styled","React","I18n","React","useMemo","Icon","useMemo","isArray","React","Icon","_type","value","React","useMemo","useState","I18n","IconButton","React","useEffect","Input","value","React","styled","css","Icon","useEffect","useRef","useState","useTypeManager","React","I18n","React","useMemo","Input","Renderer","useMemo","React","Input","React","I18n","React","I18n","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","useTypeManager","IconButton","styled","UIContainer","UIType","useEffect","useMemo","useRef","useState","useTypeManager","React","JsonSchemaUtils","constantSchema","IconButton","UIContainer","UIType","React","useMemo","I18n","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","I18n","Button","Select","IconChevronDownStroked","useMemo","I18n","React","Select","Button","IconChevronDownStroked","useMemo","React","UIContainer","Input","I18n","React","I18n","Button","Input","IconPlus","useEffect","useRef","useState","difference","isObject","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","I18n","React","useEffect","useRef","EditorProvider","ActiveLinePlaceholder","preset","styled","css","UIContainer","EditorView","useLayoutEffect","useInjector","useLayoutEffect","useInjector","astDecorator","EditorView","useRef","useEffect","React","UIContainer","EditorProvider","preset","ActiveLinePlaceholder","React","React","useEffect","useState","Popover","useState","useEffect","React","Popover","React","useLayoutEffect","Popover","IconIssueStroked","useInjector","EditorView","styled","Tag","UIRootTitle","UIVarName","UITag","UIPopoverContent","React","UITag","IconIssueStroked","UIRootTitle","Popover","UIPopoverContent","UIVarName","useInjector","useLayoutEffect","EditorView","React","React","React","useEffect","useState","Popover","Mention","getCurrentMentionReplaceRange","useEditor","PositionMirror","React","useMemo","isPlainObject","last","ASTMatch","useScopeAvailable","Tree","useScopeAvailable","ASTMatch","last","isPlainObject","value","useMemo","React","Tree","useState","useEditor","getCurrentMentionReplaceRange","useEffect","React","Mention","Popover","PositionMirror","React","React","React","useEffect","useState","Popover","Tree","Mention","getCurrentMentionReplaceRange","useEditor","PositionMirror","VariableTree","useState","useEditor","getCurrentMentionReplaceRange","useEffect","React","Mention","Popover","Tree","PositionMirror","React","useLayoutEffect","isEqual","last","Disposable","DisposableCollection","useCurrentScope","Popover","IconIssueStroked","useInjector","Decoration","EditorView","MatchDecorator","ViewPlugin","WidgetType","styled","Tag","UIRootTitle","UIVarName","UITag","UIPopoverContent","VariableTagWidget","WidgetType","DisposableCollection","React","UITag","IconIssueStroked","last","UIRootTitle","Popover","UIPopoverContent","UIVarName","Disposable","isEqual","VariableTagInject","useInjector","useCurrentScope","useLayoutEffect","MatchDecorator","Decoration","ViewPlugin","EditorView","I18n","React","VariableTree","VariableTagInject","React","I18n","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","UIRows","UIRow","I18n","IconButton","IconDelete","Button","IconPlus","React","styled","css","React","React","useEffect","JsonSchemaUtils","useCurrentScope","React","Popover","styled","Tag","React","Popover","styled","useCurrentScope","useEffect","JsonSchemaUtils","React","React","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","React","useMemo","isPlainObject","useScopeAvailable","styled","React","value","isPlainObject","useScopeAvailable","useMemo","React","Button","IconPlus","React","IconButton","IconMinus","React","useEffect","useState","Input","BlurInput","value","React","BlurInput","IconButton","IconMinus","React","Button","IconPlus","React","I18n","Button","IconPlus","React","styled","css","Icon","UIContainer","UIRow","UICollapseTrigger","UITreeItems","UITreeItemLeft","UITreeItemRight","UITreeItemMain","UICollapsible","UIActions","iconAddChildrenSvg","IconAddChildren","React","useMemo","useState","I18n","IconButton","Input","IconChevronDown","IconChevronRight","IconDelete","useMemo","isPlainObject","useMemo","isPlainObject","value","React","Input","I18n","useState","useMemo","UITreeItemLeft","UICollapseTrigger","IconChevronDown","IconChevronRight","UITreeItemRight","UITreeItemMain","UIRow","UIActions","IconButton","IconAddChildren","IconDelete","UICollapsible","UITreeItems","value","React","UITreeItems","Button","IconPlus","I18n","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","DataEvent","DataEvent","getNodeScope","JsonSchemaUtils","DataEvent","getNodeScope","ASTFactory","createEffectFromVariableProvider","getNodeForm","getNodePrivateScope","getNodeScope","value","ctx","get","set","defineFormPluginCreator","getNodePrivateScope","getNodeScope","defineFormPluginCreator","set","get","getNodePrivateScope","getNodeScope","set","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","defineFormPluginCreator","getNodeForm","getNodeScope","getNodeScope","getNodeScope"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/variable-selector/index.tsx","../../src/shared/format-legacy-refs/index.ts","../../src/shared/inject-material/index.tsx","../../src/shared/flow-value/utils.ts","../../src/shared/flow-value/schema.ts","../../src/shared/polyfill-create-root/index.tsx","../../src/components/variable-selector/use-variable-tree.tsx","../../src/plugins/json-schema-preset/index.tsx","../../src/plugins/json-schema-preset/type-definition/index.tsx","../../src/plugins/json-schema-preset/type-definition/string.tsx","../../src/plugins/json-schema-preset/type-definition/object.tsx","../../src/components/code-editor-mini/index.tsx","../../src/components/code-editor/index.tsx","../../src/components/code-editor/utils.ts","../../src/components/code-editor/language-features.ts","../../src/components/code-editor/theme/index.ts","../../src/components/code-editor/theme/light.ts","../../src/components/code-editor/theme/dark.ts","../../src/plugins/json-schema-preset/type-definition/number.tsx","../../src/plugins/json-schema-preset/type-definition/integer.tsx","../../src/plugins/json-schema-preset/type-definition/boolean.tsx","../../src/plugins/json-schema-preset/type-definition/array.tsx","../../src/plugins/json-schema-preset/create-type-preset-plugin.tsx","../../src/plugins/disable-declaration-plugin/create-disable-declaration-plugin.ts","../../src/components/variable-selector/styles.tsx","../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/index.tsx","../../src/components/blur-input/index.tsx","../../src/components/json-schema-editor/styles.tsx","../../src/components/json-schema-editor/hooks.tsx","../../src/components/json-schema-editor/default-value.tsx","../../src/components/constant-input/index.tsx","../../src/components/batch-variable-selector/index.tsx","../../src/components/dynamic-value-input/index.tsx","../../src/components/dynamic-value-input/styles.tsx","../../src/components/dynamic-value-input/hooks.ts","../../src/components/condition-row/index.tsx","../../src/components/condition-row/styles.tsx","../../src/components/condition-row/hooks/useRule.ts","../../src/components/condition-row/constants.ts","../../src/components/condition-row/hooks/useOp.tsx","../../src/components/batch-outputs/index.tsx","../../src/hooks/use-object-list/index.tsx","../../src/components/batch-outputs/styles.tsx","../../src/components/prompt-editor/index.tsx","../../src/components/prompt-editor/styles.tsx","../../src/components/prompt-editor/extensions/markdown.tsx","../../src/components/prompt-editor/extensions/language-support.tsx","../../src/components/prompt-editor/extensions/jinja.tsx","../../src/components/prompt-editor-with-variables/index.tsx","../../src/components/prompt-editor-with-variables/extensions/variable-tree.tsx","../../src/components/prompt-editor-with-variables/extensions/variable-tag.tsx","../../src/components/prompt-editor-with-variables/styles.tsx","../../src/components/prompt-editor-with-inputs/index.tsx","../../src/components/prompt-editor-with-inputs/extensions/inputs-tree.tsx","../../src/components/prompt-editor-with-inputs/inputs-picker.tsx","../../src/components/json-editor-with-variables/index.tsx","../../src/components/json-editor-with-variables/extensions/variable-tree.tsx","../../src/components/json-editor-with-variables/extensions/variable-tag.tsx","../../src/components/json-editor-with-variables/styles.tsx","../../src/components/inputs-values/index.tsx","../../src/components/inputs-values/styles.tsx","../../src/components/display-schema-tree/index.tsx","../../src/components/display-schema-tree/styles.tsx","../../src/components/display-outputs/index.tsx","../../src/components/display-schema-tag/index.tsx","../../src/components/display-schema-tag/styles.ts","../../src/components/display-outputs/styles.ts","../../src/components/display-flow-value/index.tsx","../../src/components/display-inputs-values/index.tsx","../../src/components/display-inputs-values/styles.ts","../../src/components/assign-rows/index.tsx","../../src/components/assign-row/index.tsx","../../src/components/assign-row/components/blur-input.tsx","../../src/components/inputs-values-tree/index.tsx","../../src/components/inputs-values-tree/styles.tsx","../../src/components/inputs-values-tree/row.tsx","../../src/components/inputs-values-tree/hooks/use-child-list.tsx","../../src/effects/provide-batch-input/index.ts","../../src/effects/auto-rename-ref/index.ts","../../src/effects/provide-json-schema-outputs/index.ts","../../src/effects/sync-variable-title/index.ts","../../src/effects/validate-when-variable-sync/index.ts","../../src/effects/listen-ref-value-change/index.ts","../../src/effects/listen-ref-schema-change/index.ts","../../src/form-plugins/batch-outputs-plugin/index.ts","../../src/form-plugins/infer-inputs-plugin/index.ts","../../src/form-plugins/infer-assign-plugin/index.ts","../../src/validate/validate-flow-value/index.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { TriggerRenderProps } from '@douyinfe/semi-ui/lib/es/treeSelect';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked, IconIssueStroked } from '@douyinfe/semi-icons';\n\nimport { createInjectMaterial } from '@/shared';\n\nimport { useVariableTree } from './use-variable-tree';\nimport { UIPopoverContent, UIRootTitle, UITag, UITreeSelect, UIVarName } from './styles';\n\nexport interface VariableSelectorProps {\n value?: string[];\n config?: {\n placeholder?: string;\n notFoundContent?: string;\n };\n onChange: (value?: string[]) => void;\n includeSchema?: IJsonSchema | IJsonSchema[];\n excludeSchema?: IJsonSchema | IJsonSchema[];\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n triggerRender?: (props: TriggerRenderProps) => React.ReactNode;\n}\n\nexport { useVariableTree };\n\nexport const VariableSelector = ({\n value,\n config = {},\n onChange,\n style,\n readonly = false,\n includeSchema,\n excludeSchema,\n hasError,\n triggerRender,\n}: VariableSelectorProps) => {\n const treeData = useVariableTree({ includeSchema, excludeSchema });\n\n const treeValue = useMemo(() => {\n if (typeof value === 'string') {\n console.warn(\n 'The Value of VariableSelector is a string, it should be an ARRAY. \\n',\n 'Please check the value of VariableSelector \\n'\n );\n return value;\n }\n return value?.join('.');\n }, [value]);\n\n const renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n return (\n <>\n <UITreeSelect\n dropdownMatchSelectWidth={false}\n disabled={readonly}\n treeData={treeData}\n size=\"small\"\n value={treeValue}\n clearIcon={null}\n $error={hasError}\n style={style}\n validateStatus={hasError ? 'error' : undefined}\n onChange={(_, _config) => {\n onChange((_config as TreeNodeData).keyPath as string[]);\n }}\n renderSelectedItem={(_option: TreeNodeData) => {\n if (!_option?.keyPath) {\n return (\n <UITag\n prefixIcon={<IconIssueStroked />}\n color=\"amber\"\n closable={!readonly}\n onClose={() => onChange(undefined)}\n >\n {config?.notFoundContent ?? 'Undefined'}\n </UITag>\n );\n }\n\n const rootIcon = renderIcon(_option.rootMeta?.icon || _option?.icon);\n\n const rootTitle = (\n <UIRootTitle>\n {_option.rootMeta?.title\n ? `${_option.rootMeta?.title} ${_option.isRoot ? '' : '-'} `\n : null}\n </UIRootTitle>\n );\n\n return (\n <div>\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{_option.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag\n prefixIcon={rootIcon}\n closable={!readonly}\n onClose={() => onChange(undefined)}\n >\n {rootTitle}\n {!_option.isRoot && <UIVarName $inSelector>{_option.label}</UIVarName>}\n </UITag>\n </Popover>\n </div>\n );\n }}\n showClear={false}\n arrowIcon={<IconChevronDownStroked size=\"small\" />}\n triggerRender={triggerRender}\n placeholder={config?.placeholder ?? I18n.t('Select Variable')}\n />\n </>\n );\n};\n\nVariableSelector.renderKey = 'variable-selector-render-key';\nexport const InjectVariableSelector = createInjectMaterial(VariableSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isObject } from 'lodash';\n\ninterface LegacyFlowRefValueSchema {\n type: 'ref';\n content: string;\n}\n\ninterface NewFlowRefValueSchema {\n type: 'ref';\n content: string[];\n}\n\n/**\n * In flowgram 0.2.0, for introducing Loop variable functionality,\n * the FlowRefValueSchema type definition is updated:\n *\n * interface LegacyFlowRefValueSchema {\n * type: 'ref';\n * content: string;\n * }\n *\n * interface NewFlowRefValueSchema {\n * type: 'ref';\n * content: string[];\n * }\n *\n *\n * For making sure backend json will not be changed, we provide format legacy ref utils for updating the formData\n *\n * How to use:\n *\n * 1. Call formatLegacyRefOnSubmit on the formData before submitting\n * 2. Call formatLegacyRefOnInit on the formData after submitting\n *\n * Example:\n * import { formatLegacyRefOnSubmit, formatLegacyRefOnInit } from '@flowgram.ai/form-materials';\n * formMeta: {\n * formatOnSubmit: (data) => formatLegacyRefOnSubmit(data),\n * formatOnInit: (data) => formatLegacyRefOnInit(data),\n * }\n */\nexport function formatLegacyRefOnSubmit(value: any): any {\n if (isObject(value)) {\n if (isLegacyFlowRefValueSchema(value)) {\n return formatLegacyRefToNewRef(value);\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, value]: [string, any]) => [\n key,\n formatLegacyRefOnSubmit(value),\n ])\n );\n }\n\n if (Array.isArray(value)) {\n return value.map(formatLegacyRefOnSubmit);\n }\n\n return value;\n}\n\n/**\n * In flowgram 0.2.0, for introducing Loop variable functionality,\n * the FlowRefValueSchema type definition is updated:\n *\n * interface LegacyFlowRefValueSchema {\n * type: 'ref';\n * content: string;\n * }\n *\n * interface NewFlowRefValueSchema {\n * type: 'ref';\n * content: string[];\n * }\n *\n *\n * For making sure backend json will not be changed, we provide format legacy ref utils for updating the formData\n *\n * How to use:\n *\n * 1. Call formatLegacyRefOnSubmit on the formData before submitting\n * 2. Call formatLegacyRefOnInit on the formData after submitting\n *\n * Example:\n * import { formatLegacyRefOnSubmit, formatLegacyRefOnInit } from '@flowgram.ai/form-materials';\n *\n * formMeta: {\n * formatOnSubmit: (data) => formatLegacyRefOnSubmit(data),\n * formatOnInit: (data) => formatLegacyRefOnInit(data),\n * }\n */\nexport function formatLegacyRefOnInit(value: any): any {\n if (isObject(value)) {\n if (isNewFlowRefValueSchema(value)) {\n return formatNewRefToLegacyRef(value);\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, value]: [string, any]) => [\n key,\n formatLegacyRefOnInit(value),\n ])\n );\n }\n\n if (Array.isArray(value)) {\n return value.map(formatLegacyRefOnInit);\n }\n\n return value;\n}\n\nexport function isLegacyFlowRefValueSchema(value: any): value is LegacyFlowRefValueSchema {\n return (\n isObject(value) &&\n Object.keys(value).length === 2 &&\n (value as any).type === 'ref' &&\n typeof (value as any).content === 'string'\n );\n}\n\nexport function isNewFlowRefValueSchema(value: any): value is NewFlowRefValueSchema {\n return (\n isObject(value) &&\n Object.keys(value).length === 2 &&\n (value as any).type === 'ref' &&\n Array.isArray((value as any).content)\n );\n}\n\nexport function formatLegacyRefToNewRef(value: LegacyFlowRefValueSchema) {\n const keyPath = value.content.split('.');\n\n if (keyPath[1] === 'outputs') {\n return {\n type: 'ref',\n content: [`${keyPath[0]}.${keyPath[1]}`, ...(keyPath.length > 2 ? keyPath.slice(2) : [])],\n };\n }\n\n return {\n type: 'ref',\n content: keyPath,\n };\n}\n\nexport function formatNewRefToLegacyRef(value: NewFlowRefValueSchema) {\n return {\n type: 'ref',\n content: value.content.join('.'),\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n FlowRendererComponentType,\n FlowRendererRegistry,\n usePlaygroundContainer,\n} from '@flowgram.ai/editor';\n\n/**\n * Creates a material component wrapper with dependency injection support\n *\n * This Higher-Order Component (HOC) implements a dynamic component replacement mechanism\n * for material components. It automatically checks if a custom renderer is registered\n * in the editor context, using the injected component if available, otherwise\n * falling back to the default component.\n *\n * @example\n * ```tsx\n * // 1.Create an injectable material component\n * const InjectVariableSelector = createInjectMaterial(VariableSelector)\n *\n * // 2. Register custom components in editor\n * // Configure in use-editor-props.tsx:\n * const editorProps = {\n * materials: {\n * components: {\n * [VariableSelector.renderKey]: YourCustomVariableSelector\n * }\n * }\n * }\n * ```\n *\n * @description\n * Data flow explanation:\n * - Register components to FlowRendererRegistry in use-editor-props\n * - InjectMaterial reads renderers from FlowRendererRegistry\n * - If registered renderer exists and type is REACT, use injected component\n * - If not exists or type mismatch, fallback to default component\n *\n * @param Component - Default React component\n * @param params - Optional parameters\n * @param params.renderKey - Custom render key name, highest priority\n * @returns Wrapper component with dependency injection support\n */\nexport function createInjectMaterial<Props>(\n Component: React.FC<Props> & { renderKey?: string },\n params?: {\n renderKey?: string;\n }\n): React.FC<Props> {\n const InjectComponent: React.FC<Props> = (props) => {\n const container = usePlaygroundContainer();\n\n // Check if renderer registry is bound in container\n if (!container?.isBound(FlowRendererRegistry)) {\n // If no registry, use default component directly\n return React.createElement(Component as (props?: any) => any, { ...props });\n }\n\n // Get renderer registry instance\n const rendererRegistry = container.get(FlowRendererRegistry);\n\n // Determine render key: prioritize param specified, then component renderKey, finally component name\n const renderKey = params?.renderKey || Component.renderKey || Component.name || '';\n\n // Get corresponding renderer from registry\n const renderer = rendererRegistry.tryToGetRendererComponent(renderKey);\n\n // Check if renderer exists and type is React component\n if (renderer?.type !== FlowRendererComponentType.REACT) {\n // If no suitable renderer found, fallback to default component\n return React.createElement(Component as (props?: any) => any, { ...props });\n }\n\n // Render using injected React component\n return React.createElement(renderer.renderer, {\n ...props,\n });\n };\n\n return InjectComponent;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isArray, isObject, isPlainObject, uniq } from 'lodash';\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { Scope } from '@flowgram.ai/editor';\n\nimport {\n IFlowConstantValue,\n IFlowRefValue,\n IFlowExpressionValue,\n IFlowTemplateValue,\n IFlowValue,\n IFlowConstantRefValue,\n FlowValueType,\n} from '@/typings';\n\nimport { constantSchema, refSchema, expressionSchema, templateSchema } from './schema';\n\nexport namespace FlowValueUtils {\n /**\n * Check if the value is a constant type\n */\n export function isConstant(value: any): value is IFlowConstantValue {\n return constantSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is a reference type\n */\n export function isRef(value: any): value is IFlowRefValue {\n return refSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is an expression type\n */\n export function isExpression(value: any): value is IFlowExpressionValue {\n return expressionSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is a template type\n */\n export function isTemplate(value: any): value is IFlowTemplateValue {\n return templateSchema.safeParse(value).success;\n }\n\n /**\n * Check if the value is either a constant or reference type\n */\n export function isConstantOrRef(value: any): value is IFlowConstantRefValue {\n return isConstant(value) || isRef(value);\n }\n\n /**\n * Check if the value is a valid flow value type\n */\n export function isFlowValue(value: any): value is IFlowValue {\n return isConstant(value) || isRef(value) || isExpression(value) || isTemplate(value);\n }\n\n /**\n * Traverse all flow values in the given value\n * @param value The value to traverse\n * @param options The options to traverse\n * @returns A generator of flow values\n */\n export function* traverse(\n value: any,\n options: {\n includeTypes?: FlowValueType[];\n path?: string;\n }\n ): Generator<{ value: IFlowValue; path: string }> {\n const { includeTypes = ['ref', 'template'], path = '' } = options;\n\n if (isPlainObject(value)) {\n if (isRef(value) && includeTypes.includes('ref')) {\n yield { value, path };\n return;\n }\n\n if (isTemplate(value) && includeTypes.includes('template')) {\n yield { value, path };\n return;\n }\n\n if (isExpression(value) && includeTypes.includes('expression')) {\n yield { value, path };\n return;\n }\n\n if (isConstant(value) && includeTypes.includes('constant')) {\n yield { value, path };\n return;\n }\n\n for (const [_key, _value] of Object.entries(value)) {\n yield* traverse(_value, { ...options, path: `${path}.${_key}` });\n }\n return;\n }\n\n if (isArray(value)) {\n for (const [_idx, _value] of value.entries()) {\n yield* traverse(_value, { ...options, path: `${path}[${_idx}]` });\n }\n return;\n }\n\n return;\n }\n\n /**\n * Get all key paths in the template value\n * @param value The template value\n * @returns A list of key paths\n */\n export function getTemplateKeyPaths(value: IFlowTemplateValue) {\n // find all keyPath wrapped in {{}}\n const keyPathReg = /\\{\\{([^\\}\\{]+)\\}\\}/g;\n return uniq(value.content?.match(keyPathReg) || []).map((_keyPath) =>\n _keyPath.slice(2, -2).split('.')\n );\n }\n\n /**\n * Infer the schema of the constant value\n * @param value\n * @returns\n */\n export function inferConstantJsonSchema(value: IFlowConstantValue): IJsonSchema | undefined {\n if (value?.schema) {\n return value.schema;\n }\n\n if (typeof value.content === 'string') {\n return {\n type: 'string',\n };\n }\n\n if (typeof value.content === 'number') {\n return {\n type: 'number',\n };\n }\n\n if (typeof value.content === 'boolean') {\n return {\n type: 'boolean',\n };\n }\n\n if (isObject(value.content)) {\n return {\n type: 'object',\n };\n }\n return undefined;\n }\n\n /**\n * Infer the schema of the flow value\n * @param values The flow value or object contains flow value\n * @param scope\n * @returns\n */\n export function inferJsonSchema(values: any, scope: Scope): IJsonSchema | undefined {\n if (isPlainObject(values)) {\n if (isConstant(values)) {\n return inferConstantJsonSchema(values);\n }\n\n if (isRef(values)) {\n const variable = scope.available.getByKeyPath(values?.content);\n const schema = variable?.type ? JsonSchemaUtils.astToSchema(variable?.type) : undefined;\n\n return schema;\n }\n\n if (isTemplate(values)) {\n return { type: 'string' };\n }\n\n return {\n type: 'object',\n properties: Object.keys(values).reduce((acc, key) => {\n const schema = inferJsonSchema((values as any)[key], scope);\n if (schema) {\n acc[key] = schema;\n }\n return acc;\n }, {} as Record<string, IJsonSchema>),\n };\n }\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport z from 'zod';\n\n// Shared extra schema for flow value types\nexport const extraSchema = z\n .object({\n index: z.number().optional(),\n })\n .optional();\n\nexport const constantSchema = z.object({\n type: z.literal('constant'),\n content: z.any().optional(),\n schema: z.any().optional(),\n extra: extraSchema,\n});\n\nexport const refSchema = z.object({\n type: z.literal('ref'),\n content: z.array(z.string()).optional(),\n extra: extraSchema,\n});\n\nexport const expressionSchema = z.object({\n type: z.literal('expression'),\n content: z.string().optional(),\n extra: extraSchema,\n});\n\nexport const templateSchema = z.object({\n type: z.literal('template'),\n content: z.string().optional(),\n extra: extraSchema,\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport * as ReactDOM from 'react-dom';\n\nexport interface IPolyfillRoot {\n render(children: React.ReactNode): void;\n unmount(): void;\n}\n\n/**\n * React 18 polyfill\n * @param dom\n * @returns\n */\nlet unstableCreateRoot = (dom: HTMLElement): IPolyfillRoot => ({\n render(children: JSX.Element) {\n ReactDOM.render(children, dom);\n },\n unmount() {\n ReactDOM.unmountComponentAtNode(dom);\n },\n});\n\nexport function polyfillCreateRoot(dom: HTMLElement): IPolyfillRoot {\n return unstableCreateRoot(dom);\n}\n\nexport function unstableSetCreateRoot(createRoot: (dom: HTMLElement) => IPolyfillRoot) {\n unstableCreateRoot = createRoot;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useCallback } from 'react';\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { ASTMatch, BaseVariableField, useAvailableVariables } from '@flowgram.ai/editor';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Icon } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\ntype VariableField = BaseVariableField<{\n icon?: string | JSX.Element;\n title?: string;\n disabled?: boolean;\n}>;\n\nexport function useVariableTree(params: {\n includeSchema?: IJsonSchema | IJsonSchema[];\n excludeSchema?: IJsonSchema | IJsonSchema[];\n customSkip?: (variable: VariableField) => boolean;\n}): TreeNodeData[] {\n const { includeSchema, excludeSchema, customSkip } = params;\n\n const typeManager = useTypeManager();\n const variables = useAvailableVariables();\n\n const getVariableTypeIcon = useCallback((variable: VariableField) => {\n if (variable.meta?.icon) {\n if (typeof variable.meta.icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={variable.meta.icon} />;\n }\n\n return variable.meta.icon;\n }\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldownObject: false });\n\n return <Icon size=\"small\" svg={typeManager.getDisplayIcon(schema || {})} />;\n }, []);\n\n const renderVariable = (\n variable: VariableField,\n parentFields: VariableField[] = []\n ): TreeNodeData | null => {\n let type = variable?.type;\n\n if (!type) {\n return null;\n }\n\n let children: TreeNodeData[] | undefined;\n\n if (ASTMatch.isObject(type)) {\n children = (type.properties || [])\n .map((_property) => renderVariable(_property as VariableField, [...parentFields, variable]))\n .filter(Boolean) as TreeNodeData[];\n }\n\n const keyPath = [...parentFields.map((_field) => _field.key), variable.key];\n const key = keyPath.join('.');\n\n const isSchemaInclude = includeSchema\n ? JsonSchemaUtils.isASTMatchSchema(type, includeSchema)\n : true;\n const isSchemaExclude = excludeSchema\n ? JsonSchemaUtils.isASTMatchSchema(type, excludeSchema)\n : false;\n const isCustomSkip = customSkip ? customSkip(variable) : false;\n\n // disabled in meta when created\n const isMetaDisabled = variable.meta?.disabled;\n\n const isSchemaMatch = isSchemaInclude && !isSchemaExclude && !isCustomSkip && !isMetaDisabled;\n\n // If not match, and no children, return null\n if (!isSchemaMatch && !children?.length) {\n return null;\n }\n\n return {\n key: key,\n label: variable.meta?.title || variable.key,\n value: key,\n keyPath,\n icon: getVariableTypeIcon(variable),\n children,\n disabled: !isSchemaMatch,\n rootMeta: parentFields[0]?.meta || variable.meta,\n isRoot: !parentFields?.length,\n };\n };\n\n return [...variables.slice(0).reverse()]\n .map((_variable) => renderVariable(_variable as VariableField))\n .filter(Boolean) as TreeNodeData[];\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\nimport React from 'react';\n\nimport {\n type IJsonSchema,\n JsonSchemaUtils,\n useTypeManager as useOriginTypeManager,\n TypePresetProvider as OriginTypePresetProvider,\n JsonSchemaTypeManager,\n type JsonSchemaBasicType,\n} from '@flowgram.ai/json-schema';\n\nimport { jsonSchemaTypePreset } from './type-definition';\nimport { type JsonSchemaTypeRegistry, type ConstantRendererProps } from './manager';\nimport { createTypePresetPlugin } from './create-type-preset-plugin';\n\nconst useTypeManager = () =>\n useOriginTypeManager() as JsonSchemaTypeManager<IJsonSchema, JsonSchemaTypeRegistry>;\n\nconst JsonSchemaTypePresetProvider = ({\n types = [],\n children,\n}: React.PropsWithChildren<{ types: JsonSchemaTypeRegistry[] }>) => (\n <OriginTypePresetProvider types={[...jsonSchemaTypePreset, ...types]}>\n {children}\n </OriginTypePresetProvider>\n);\n\nexport {\n createTypePresetPlugin,\n useTypeManager,\n JsonSchemaTypePresetProvider,\n IJsonSchema,\n JsonSchemaUtils,\n JsonSchemaTypeRegistry,\n ConstantRendererProps,\n JsonSchemaBasicType,\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { jsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { stringRegistry } from './string';\nimport { objectRegistry } from './object';\nimport { numberRegistry } from './number';\nimport { integerRegistry } from './integer';\nimport { booleanRegistry } from './boolean';\nimport { arrayRegistry } from './array';\n\nexport const jsonSchemaTypePreset = [\n stringRegistry,\n objectRegistry,\n numberRegistry,\n integerRegistry,\n booleanRegistry,\n arrayRegistry,\n];\n\njsonSchemaTypePreset.forEach((_type) => jsonSchemaTypeManager.register(_type));\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input, TextArea } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const stringRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'string',\n ConstantRenderer: (props) =>\n props?.enableMultiLineStr ? (\n <TextArea\n autosize\n rows={1}\n placeholder={I18n.t('Please Input String')}\n disabled={props.readonly}\n {...props}\n />\n ) : (\n <Input\n size=\"small\"\n placeholder={I18n.t('Please Input String')}\n disabled={props.readonly}\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { CodeEditorMini } from '@/components/code-editor-mini';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const objectRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'object',\n ConstantRenderer: (props) => (\n <CodeEditorMini\n value={props.value}\n onChange={(v) => props.onChange?.(v)}\n languageId=\"json\"\n placeholder={I18n.t('Please Input Object')}\n readonly={props.readonly}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled from 'styled-components';\n\nimport { CodeEditor, CodeEditorPropsType } from '@/components/code-editor';\n\nconst UIMini = styled.div`\n .ͼ1 .cm-content {\n padding: 0;\n }\n`;\n\nexport function CodeEditorMini(props: CodeEditorPropsType) {\n return (\n <UIMini>\n <CodeEditor\n {...props}\n options={{\n lineNumbersGutter: false,\n foldGutter: false,\n ...(props.options || {}),\n }}\n />\n </UIMini>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useRef } from 'react';\n\nimport {\n ActiveLinePlaceholder,\n createRenderer,\n EditorProvider,\n InferValues,\n} from '@coze-editor/editor/react';\nimport preset, { type EditorAPI } from '@coze-editor/editor/preset-code';\nimport { EditorView } from '@codemirror/view';\n\nimport { getSuffixByLanguageId } from './utils';\nimport { initTsWorker } from './language-features';\n\nimport './theme';\nimport './language-features';\n\nconst OriginCodeEditor = createRenderer(preset, [\n EditorView.theme({\n '&.cm-focused': {\n outline: 'none',\n },\n }),\n]);\n\ntype Preset = typeof preset;\ntype Options = Partial<InferValues<Preset[number]>>;\n\nexport interface CodeEditorPropsType extends React.PropsWithChildren<{}> {\n value?: string;\n onChange?: (value: string) => void;\n languageId: 'python' | 'typescript' | 'shell' | 'json';\n theme?: 'dark' | 'light';\n placeholder?: string;\n activeLinePlaceholder?: string;\n readonly?: boolean;\n options?: Options;\n}\n\nexport function CodeEditor({\n value,\n onChange,\n languageId = 'python',\n theme = 'light',\n children,\n placeholder,\n activeLinePlaceholder,\n options,\n readonly,\n}: CodeEditorPropsType) {\n const editorRef = useRef<EditorAPI | null>(null);\n\n useEffect(() => {\n if (languageId === 'typescript') {\n initTsWorker();\n }\n }, [languageId]);\n\n useEffect(() => {\n // listen to value change\n if (editorRef.current?.getValue() !== value) {\n editorRef.current?.setValue(String(value || ''));\n }\n }, [value]);\n\n return (\n <EditorProvider>\n <OriginCodeEditor\n defaultValue={value}\n options={{\n uri: `file:///untitled${getSuffixByLanguageId(languageId)}`,\n languageId,\n theme,\n placeholder,\n readOnly: readonly,\n editable: !readonly,\n ...(options || {}),\n }}\n didMount={(editor: EditorAPI) => {\n editorRef.current = editor;\n }}\n onChange={(e) => onChange?.(e.value)}\n >\n {activeLinePlaceholder && (\n <ActiveLinePlaceholder>{activeLinePlaceholder}</ActiveLinePlaceholder>\n )}\n {children}\n </OriginCodeEditor>\n </EditorProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nexport function getSuffixByLanguageId(languageId: string) {\n if (languageId === 'python') {\n return '.py';\n }\n if (languageId === 'typescript') {\n return '.ts';\n }\n if (languageId === 'shell') {\n return '.sh';\n }\n if (languageId === 'json') {\n return '.json';\n }\n return '';\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { languages } from '@coze-editor/editor/preset-code';\nimport { typescript } from '@coze-editor/editor/language-typescript';\nimport { shell } from '@coze-editor/editor/language-shell';\nimport { python } from '@coze-editor/editor/language-python';\nimport { json } from '@coze-editor/editor/language-json';\nimport { mixLanguages } from '@coze-editor/editor';\n\nlanguages.register('python', python);\nlanguages.register('shell', shell);\nlanguages.register('typescript', typescript);\n\nlanguages.register('json', {\n // mixLanguages is used to solve the problem that interpolation also uses parentheses, which causes incorrect highlighting\n language: mixLanguages({\n outerLanguage: json.language,\n }),\n languageService: json.languageService,\n});\n\nlet tsWorkerInit = false;\n\nexport const initTsWorker = () => {\n if (tsWorkerInit) {\n return;\n }\n tsWorkerInit = true;\n\n const tsWorker = new Worker(\n new URL(`@coze-editor/editor/language-typescript/worker`, import.meta.url),\n { type: 'module' }\n );\n typescript.languageService.initialize(tsWorker, {\n compilerOptions: {\n // eliminate Promise error\n lib: ['es2015', 'dom'],\n noImplicitAny: false,\n },\n });\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { themes } from '@coze-editor/editor/preset-code';\n\nimport { lightTheme } from './light';\nimport { darkTheme } from './dark';\n\nthemes.register('dark', darkTheme);\nthemes.register('light', lightTheme);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { createTheme, tags as t } from '@coze-editor/editor/preset-code';\nimport { type Extension } from '@codemirror/state';\n\nconst colors = {\n background: '#FFFFFF',\n comment: '#6B7280',\n key: '#2563EB',\n variable: '#DC2626',\n string: '#059669',\n number: '#EA580C',\n boolean: '#7C3AED',\n null: '#7C3AED',\n separator: '#374151',\n};\n\nexport const lightTheme: Extension = createTheme({\n variant: 'light',\n settings: {\n background: '#FFFFFF',\n foreground: '#1F2937',\n caret: '#2563EB',\n selection: '#E5E7EB',\n gutterBackground: '#F9FAFB',\n gutterForeground: '#6B7280',\n gutterBorderColor: 'transparent',\n gutterBorderWidth: 0,\n lineHighlight: '#F3F4F680',\n bracketColors: ['#F59E0B', '#8B5CF6', '#06B6D4'],\n tooltip: {\n backgroundColor: '#FFFFFF',\n color: '#1F2937',\n border: '1px solid #E5E7EB',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n },\n link: {\n color: '#2563EB',\n },\n completionItemHover: {\n backgroundColor: '#F3F4F6',\n },\n completionItemSelected: {\n backgroundColor: '#E5E7EB',\n },\n completionItemIcon: {\n color: '#4B5563',\n },\n completionItemLabel: {\n color: '#1F2937',\n },\n completionItemInfo: {\n color: '#4B5563',\n },\n completionItemDetail: {\n color: '#6B7280',\n },\n },\n styles: [\n // JSON\n {\n tag: t.comment,\n color: colors.comment,\n },\n {\n tag: [t.propertyName],\n color: colors.key,\n },\n {\n tag: [t.variableName],\n color: colors.variable,\n },\n\n {\n tag: [t.string],\n color: colors.string,\n },\n {\n tag: [t.number],\n color: colors.number,\n },\n {\n tag: [t.bool],\n color: colors.boolean,\n },\n {\n tag: [t.null],\n color: colors.null,\n },\n {\n tag: [t.separator],\n color: colors.separator,\n },\n\n // markdown\n {\n tag: [t.heading],\n color: '#2563EB',\n },\n {\n tag: [t.processingInstruction],\n color: '#2563EB',\n },\n\n // js\n {\n tag: [t.definitionKeyword],\n color: '#9333EA',\n },\n {\n tag: [t.modifier],\n color: '#9333EA',\n },\n {\n tag: [t.controlKeyword],\n color: '#9333EA',\n },\n {\n tag: [t.operatorKeyword],\n color: '#9333EA',\n },\n\n // shell\n // curl\n {\n tag: [t.standard(t.variableName)],\n color: '#059669',\n },\n // -X\n {\n tag: [t.attributeName],\n color: '#EA580C',\n },\n // url in string (includes quotes), e.g. \"https://...\"\n {\n tag: [t.special(t.string)],\n color: '#2563EB',\n },\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { createTheme, tags as t } from '@coze-editor/editor/preset-code';\nimport { type Extension } from '@codemirror/state';\n\nconst colors = {\n background: '#0D1117',\n // syntax - 现代化暗色主题配色\n comment: '#8B949E',\n key: '#7DD3FC',\n variable: '#F472B6',\n string: '#34D399',\n number: '#FBBF24',\n boolean: '#A78BFA',\n null: '#A78BFA',\n separator: '#E6EDF3',\n};\n\nexport const darkTheme: Extension = createTheme({\n variant: 'dark',\n settings: {\n background: colors.background,\n foreground: '#E6EDF3',\n caret: '#7DD3FC',\n selection: '#264F7833',\n gutterBackground: colors.background,\n gutterForeground: '#6E7681',\n gutterBorderColor: 'transparent',\n gutterBorderWidth: 0,\n lineHighlight: '#21262D',\n bracketColors: ['#FBBF24', '#A78BFA', '#7DD3FC'],\n tooltip: {\n backgroundColor: '#21262D',\n color: '#E6EDF3',\n border: '1px solid #30363D',\n },\n link: {\n color: '#58A6FF',\n },\n completionItemHover: {\n backgroundColor: '#21262D',\n },\n completionItemSelected: {\n backgroundColor: '#1F6EEB',\n },\n completionItemIcon: {\n color: '#8B949E',\n },\n completionItemLabel: {\n color: '#E6EDF3',\n },\n completionItemInfo: {\n color: '#8B949E',\n },\n completionItemDetail: {\n color: '#6E7681',\n },\n },\n styles: [\n // json\n {\n tag: t.comment,\n color: colors.comment,\n },\n {\n tag: [t.propertyName],\n color: colors.key,\n },\n {\n tag: [t.string],\n color: colors.string,\n },\n {\n tag: [t.number],\n color: colors.number,\n },\n {\n tag: [t.bool],\n color: colors.boolean,\n },\n {\n tag: [t.null],\n color: colors.null,\n },\n {\n tag: [t.separator],\n color: colors.separator,\n },\n\n // js\n {\n tag: [t.definitionKeyword],\n color: '#C084FC',\n },\n {\n tag: [t.modifier],\n color: '#C084FC',\n },\n {\n tag: [t.controlKeyword],\n color: '#C084FC',\n },\n {\n tag: [t.operatorKeyword],\n color: '#C084FC',\n },\n\n // markdown\n {\n tag: [t.heading],\n color: '#7DD3FC',\n },\n {\n tag: [t.processingInstruction],\n color: '#7DD3FC',\n },\n\n // shell\n // curl\n {\n tag: [t.standard(t.variableName)],\n color: '#34D399',\n },\n // -X\n {\n tag: [t.attributeName],\n color: '#FBBF24',\n },\n // url in string (includes quotes), e.g. \"https://...\"\n {\n tag: [t.special(t.string)],\n color: '#7DD3FC',\n },\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { InputNumber } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const numberRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'number',\n ConstantRenderer: (props) => (\n <InputNumber\n placeholder={I18n.t('Please Input Number')}\n size=\"small\"\n disabled={props.readonly}\n hideButtons\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { InputNumber } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const integerRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'integer',\n ConstantRenderer: (props) => (\n <InputNumber\n placeholder={I18n.t('Please Input Integer')}\n size=\"small\"\n disabled={props.readonly}\n precision={0}\n {...props}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Select } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const booleanRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'boolean',\n ConstantRenderer: (props) => {\n const { value, onChange, ...rest } = props;\n return (\n <Select\n placeholder={I18n.t('Please Select Boolean')}\n size=\"small\"\n disabled={props.readonly}\n optionList={[\n { label: I18n.t('True'), value: 1 },\n { label: I18n.t('False'), value: 0 },\n ]}\n value={value ? 1 : 0}\n onChange={(value) => onChange?.(!!value)}\n {...rest}\n />\n );\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { CodeEditorMini } from '@/components/code-editor-mini';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const arrayRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'array',\n ConstantRenderer: (props) => (\n <CodeEditorMini\n value={props.value}\n languageId=\"json\"\n onChange={(v) => props.onChange?.(v)}\n placeholder={I18n.t('Please Input Array')}\n readonly={props.readonly}\n />\n ),\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseTypeManager,\n jsonSchemaContainerModule,\n JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { definePluginCreator } from '@flowgram.ai/editor';\n\nimport { jsonSchemaTypePreset } from './type-definition';\nimport { JsonSchemaTypeRegistry } from './manager';\n\nexport const createTypePresetPlugin = definePluginCreator<{\n types?: Partial<JsonSchemaTypeRegistry> & Pick<JsonSchemaTypeRegistry, 'type'>[];\n unregisterTypes?: string[];\n}>({\n onInit(ctx, opts) {\n const typeManager = ctx.get(BaseTypeManager) as JsonSchemaTypeManager;\n jsonSchemaTypePreset.forEach((_type) => typeManager.register(_type));\n\n opts.types?.forEach((_type) => typeManager.register(_type));\n opts.unregisterTypes?.forEach((_type) => typeManager.unregister(_type));\n },\n containerModules: [jsonSchemaContainerModule],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTMatch,\n definePluginCreator,\n type GlobalEventActionType,\n VariableEngine,\n} from '@flowgram.ai/editor';\n\nexport const createDisableDeclarationPlugin = definePluginCreator<void>({\n onInit(ctx) {\n const variableEngine = ctx.get(VariableEngine);\n\n const handleEvent = (action: GlobalEventActionType) => {\n if (ASTMatch.isVariableDeclaration(action.ast)) {\n if (!action.ast.meta?.disabled) {\n action.ast.updateMeta({\n ...(action.ast.meta || {}),\n disabled: true,\n });\n }\n }\n };\n\n variableEngine.onGlobalEvent('NewAST', handleEvent);\n variableEngine.onGlobalEvent('UpdateAST', handleEvent);\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\nimport { Tag, TreeSelect } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div<{ $inSelector?: boolean }>`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n ${({ $inSelector }) =>\n $inSelector &&\n css`\n min-width: 50%;\n `}\n`;\n\nexport const UITag = styled(Tag)`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0;\n height: 22px;\n }\n`;\n\nexport const UITreeSelect = styled(TreeSelect)<{ $error?: boolean }>`\n outline: ${({ $error }) => ($error ? '1px solid red' : 'none')};\n\n & .semi-tree-select-selection {\n padding: 0px;\n height: 22px;\n }\n\n & .semi-tree-select-selection-content {\n width: 100%;\n }\n\n & .semi-tree-select-selection-placeholder {\n padding-left: 10px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n white-space: nowrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Cascader, Icon, IconButton } from '@douyinfe/semi-ui';\n\nimport { createInjectMaterial } from '@/shared/inject-material';\nimport { useTypeManager } from '@/plugins';\n\nexport interface TypeSelectorProps {\n value?: Partial<IJsonSchema>;\n onChange?: (value?: Partial<IJsonSchema>) => void;\n readonly?: boolean;\n /**\n * @deprecated use readonly instead\n */\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nconst labelStyle: React.CSSProperties = { display: 'flex', alignItems: 'center', gap: 5 };\n\nexport const getTypeSelectValue = (value?: Partial<IJsonSchema>): string[] | undefined => {\n if (value?.type === 'array' && value?.items) {\n return [value.type, ...(getTypeSelectValue(value.items) || [])];\n }\n\n return value?.type ? [value.type] : undefined;\n};\n\nexport const parseTypeSelectValue = (value?: string[]): Partial<IJsonSchema> | undefined => {\n const [type, ...subTypes] = value || [];\n\n if (type === 'array') {\n return { type: 'array', items: parseTypeSelectValue(subTypes) };\n }\n\n return { type };\n};\n\nexport function TypeSelector(props: TypeSelectorProps) {\n const { value, onChange, readonly, disabled, style } = props;\n\n const selectValue = useMemo(() => getTypeSelectValue(value), [value]);\n\n const typeManager = useTypeManager();\n\n const icon = typeManager.getDisplayIcon(value || {});\n\n const options = useMemo(\n () =>\n typeManager.getTypeRegistriesWithParentType().map((_type) => {\n const isArray = _type.type === 'array';\n\n return {\n label: (\n <div style={labelStyle}>\n <Icon size=\"small\" svg={_type.icon} />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n children: isArray\n ? typeManager.getTypeRegistriesWithParentType('array').map((_type) => ({\n label: (\n <div style={labelStyle}>\n <Icon\n size=\"small\"\n svg={typeManager.getDisplayIcon({\n type: 'array',\n items: { type: _type.type },\n })}\n />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n const isDisabled = readonly || disabled;\n\n return (\n <Cascader\n disabled={isDisabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton\n size=\"small\"\n style={{\n ...(isDisabled ? { pointerEvents: 'none' } : {}),\n ...(style || {}),\n }}\n disabled={isDisabled}\n icon={icon}\n />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\n\nTypeSelector.renderKey = 'type-selector-render-key';\nexport const InjectTypeSelector = createInjectMaterial(TypeSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Checkbox, IconButton } from '@douyinfe/semi-ui';\nimport {\n IconExpand,\n IconShrink,\n IconPlus,\n IconChevronDown,\n IconChevronRight,\n IconMinus,\n} from '@douyinfe/semi-icons';\n\nimport { InjectTypeSelector } from '@/components/type-selector';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UITreeItems,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UIRequired,\n UIType,\n} from './styles';\nimport { UIName } from './styles';\nimport { DefaultValueWrapper, UIRow } from './styles';\nimport { usePropertiesEdit } from './hooks';\nimport { DefaultValue } from './default-value';\n\nconst DEFAULT = { type: 'object' };\n\nexport function JsonSchemaEditor(props: {\n value?: IJsonSchema;\n onChange?: (value: IJsonSchema) => void;\n config?: ConfigType;\n className?: string;\n readonly?: boolean;\n}) {\n const { value = DEFAULT, config = {}, onChange: onChangeProps, readonly } = props;\n const { propertyList, onAddProperty, onRemoveProperty, onEditProperty } = usePropertiesEdit(\n value,\n onChangeProps\n );\n\n return (\n <UIContainer className={props.className}>\n <UITreeItems>\n {propertyList.map((_property) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UITreeItems>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? I18n.t('Add')}\n </Button>\n </UIContainer>\n );\n}\n\nfunction PropertyEdit(props: {\n value?: PropertyValueType;\n config?: ConfigType;\n onChange?: (value: PropertyValueType) => void;\n onRemove?: () => void;\n readonly?: boolean;\n $isLast?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const { value, config, readonly, $level = 0, onChange: onChangeProps, onRemove, $isLast } = props;\n\n const [expand, setExpand] = useState(false);\n const [collapse, setCollapse] = useState(false);\n\n const { name, type, items, default: defaultValue, description, isPropertyRequired } = value || {};\n\n const typeSelectorValue = useMemo(() => ({ type, items }), [type, items]);\n\n const { propertyList, canAddField, onAddProperty, onRemoveProperty, onEditProperty } =\n usePropertiesEdit(value, onChangeProps);\n\n const onChange = (key: string, _value: any) => {\n onChangeProps?.({\n ...(value || {}),\n [key]: _value,\n });\n };\n\n const showCollapse = canAddField && propertyList.length > 0;\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={showCollapse}>\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? I18n.t('Input Variable Name')}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <InjectTypeSelector\n value={typeSelectorValue}\n readonly={readonly}\n onChange={(_value) => {\n onChangeProps?.({\n ...(value || {}),\n ..._value,\n });\n }}\n />\n </UIType>\n <UIRequired>\n <Checkbox\n disabled={readonly}\n checked={isPropertyRequired}\n onChange={(e) => onChange('isPropertyRequired', e.target.checked)}\n />\n </UIRequired>\n <UIActions>\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={expand ? <IconShrink size=\"small\" /> : <IconExpand size=\"small\" />}\n onClick={() => {\n setExpand((_expand) => !_expand);\n }}\n />\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n onAddProperty();\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus size=\"small\" />}\n onClick={onRemove}\n />\n </UIActions>\n </UIRow>\n {expand && (\n <UIExpandDetail>\n <UILabel>{config?.descTitle ?? I18n.t('Description')}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={\n config?.descPlaceholder ?? I18n.t('Help LLM to understand the property')\n }\n />\n {$level === 0 && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? I18n.t('Default Value')}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n placeholder={config?.defaultValuePlaceholder ?? I18n.t('Default Value')}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UITreeItemMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $level={$level + 1} // 传递递增的层级\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div`\n /* & .semi-input {\n background-color: #fff;\n border-radius: 6px;\n height: 24px;\n } */\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UIExpandDetail = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const UILabel = styled.div`\n font-size: 12px;\n color: #999;\n font-weight: 400;\n margin-bottom: 2px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIName = styled.div`\n flex-grow: 1;\n`;\n\nexport const UIType = styled.div``;\n\nexport const UIRequired = styled.div``;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n\nexport const DefaultValueWrapper = styled.div`\n margin: 0;\n`;\n\nexport const ConstantInputWrapper = styled.div`\n flex-grow: 1;\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { difference, omit } from 'lodash';\nimport { produce } from 'immer';\nimport { IJsonSchema, type JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n // Get drilldown properties (array.items.items.properties...)\n const drilldownSchema = typeManager.getPropertiesParent(value || {});\n const canAddField = typeManager.canAddField(value || {});\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const newNames = Object.entries(drilldownSchema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([key]) => key);\n\n const oldNames = _list.map((item) => item.name).filter(Boolean) as string[];\n const addNames = difference(newNames, oldNames);\n\n return _list\n .filter((item) => !item.name || newNames.includes(item.name))\n .map((item) => ({\n key: item.key,\n name: item.name,\n isPropertyRequired: drilldownSchema?.required?.includes(item.name || '') || false,\n ...(drilldownSchema?.properties?.[item.name || ''] || item || {}),\n }))\n .concat(\n addNames.map((_name) => ({\n key: genId(),\n name: _name,\n isPropertyRequired: drilldownSchema?.required?.includes(_name) || false,\n ...(drilldownSchema?.properties?.[_name] || {}),\n }))\n );\n });\n }, [drilldownSchema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\n changeVersion.current = changeVersion.current + 1;\n\n setPropertyList((_list) => {\n const next = updater(_list);\n\n // onChange to parent\n const nextProperties: Record<string, IJsonSchema> = {};\n const nextRequired: string[] = [];\n\n for (const _property of next) {\n if (!_property.name) {\n continue;\n }\n\n nextProperties[_property.name] = omit(_property, ['key', 'name', 'isPropertyRequired']);\n\n if (_property.isPropertyRequired) {\n nextRequired.push(_property.name);\n }\n }\n\n onChange?.(\n produce(value || {}, (draft) => {\n const propertiesParent = typeManager.getPropertiesParent(draft);\n\n if (propertiesParent) {\n propertiesParent.properties = nextProperties;\n propertiesParent.required = nextRequired;\n return;\n }\n })\n );\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n // set property list only, not trigger updatePropertyList\n setPropertyList((_list) => [\n ..._list,\n { key: genId(), name: '', type: 'string', extra: { index: _list.length + 1 } },\n ]);\n };\n\n const onRemoveProperty = (key: number) => {\n updatePropertyList((_list) => _list.filter((_property) => _property.key !== key));\n };\n\n const onEditProperty = (key: number, nextValue: PropertyValueType) => {\n updatePropertyList((_list) =>\n _list.map((_property) => (_property.key === key ? nextValue : _property))\n );\n };\n\n useEffect(() => {\n if (!canAddField) {\n setPropertyList([]);\n }\n }, [canAddField]);\n\n return {\n propertyList,\n canAddField,\n onAddProperty,\n onRemoveProperty,\n onEditProperty,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { ConstantInput } from '@/components/constant-input';\n\nimport { ConstantInputWrapper } from './styles';\n\n/**\n * Renders the corresponding default value input component based on different data types.\n * @param props - Component properties, including value, type, placeholder, onChange.\n * @returns Returns the input component of the corresponding type or null.\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n placeholder?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, onChange, placeholder } = props;\n\n return (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? I18n.t('Default value if parameter is not provided')}\n enableMultiLineStr\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React, { useMemo } from 'react';\n\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { PropsType, Strategy as ConstantInputStrategy } from './types';\n\nexport { ConstantInputStrategy };\n\nexport function ConstantInput(props: PropsType) {\n const { value, onChange, schema, strategies, fallbackRenderer, readonly, ...rest } = props;\n\n const typeManager = useTypeManager();\n\n const Renderer = useMemo(() => {\n const strategy = (strategies || []).find((_strategy) => _strategy.hit(schema));\n\n if (!strategy) {\n return typeManager.getTypeBySchema(schema)?.ConstantRenderer;\n }\n\n return strategy?.Renderer;\n }, [strategies, schema]);\n\n if (!Renderer) {\n if (fallbackRenderer) {\n return React.createElement(fallbackRenderer, {\n value,\n onChange,\n readonly,\n ...rest,\n });\n }\n return <Input size=\"small\" disabled placeholder=\"Unsupported type\" />;\n }\n\n return <Renderer value={value} onChange={onChange} readonly={readonly} {...rest} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '@/components/variable-selector';\n\nconst batchVariableSchema: IJsonSchema = {\n type: 'array',\n extra: { weak: true },\n};\n\nexport function BatchVariableSelector(props: VariableSelectorProps) {\n return (\n <PrivateScopeProvider>\n <VariableSelector {...props} includeSchema={batchVariableSchema} />\n </PrivateScopeProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n JsonSchemaUtils,\n IJsonSchema,\n useTypeManager,\n type JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowConstantValue } from '@/typings';\nimport { createInjectMaterial } from '@/shared';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { TypeSelector } from '@/components/type-selector';\nimport { ConstantInput, ConstantInputStrategy } from '@/components/constant-input';\n\nimport { UIContainer, UIMain, UITrigger, UIType } from './styles';\nimport { useIncludeSchema, useRefVariable, useSelectSchema } from './hooks';\n\ninterface PropsType {\n value?: IFlowConstantRefValue;\n onChange: (value?: IFlowConstantRefValue) => void;\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n schema?: IJsonSchema;\n constantProps?: {\n strategies?: ConstantInputStrategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\n}\n\nconst DEFAULT_VALUE: IFlowConstantValue = {\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n};\n\nexport function DynamicValueInput({\n value,\n onChange,\n readonly,\n style,\n schema: schemaFromProps,\n constantProps,\n}: PropsType) {\n const refVariable = useRefVariable(value);\n const [selectSchema, setSelectSchema] = useSelectSchema(schemaFromProps, constantProps, value);\n const includeSchema = useIncludeSchema(schemaFromProps);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const renderTypeSelector = () => {\n if (schemaFromProps) {\n return <TypeSelector value={schemaFromProps} readonly={true} />;\n }\n\n if (value?.type === 'ref') {\n const schema = refVariable?.type ? JsonSchemaUtils.astToSchema(refVariable?.type) : undefined;\n\n return <TypeSelector value={schema} readonly={true} />;\n }\n\n return (\n <TypeSelector\n value={selectSchema}\n onChange={(_v) => {\n setSelectSchema(_v || { type: 'string' });\n\n const schema = _v || { type: 'string' };\n let content = typeManager.getDefaultValue(schema);\n if (_v?.type === 'object') {\n content = '{}';\n }\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n onChange({\n type: 'constant',\n content,\n schema,\n });\n }}\n readonly={readonly}\n />\n );\n };\n\n const renderMain = () => {\n if (value?.type === 'ref') {\n // Display Variable Or Delete\n return (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n );\n }\n\n const constantSchema = schemaFromProps || selectSchema || { type: 'string' };\n\n return (\n <ConstantInput\n value={value?.content}\n onChange={(_v) => onChange({ type: 'constant', content: _v, schema: constantSchema })}\n schema={constantSchema || { type: 'string' }}\n readonly={readonly}\n fallbackRenderer={() => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n strategies={[...(constantProps?.strategies || [])]}\n />\n );\n };\n\n const renderTrigger = () => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.type === 'ref' ? value?.content : undefined}\n onChange={(_v) => onChange({ type: 'ref', content: _v })}\n includeSchema={includeSchema}\n readonly={readonly}\n triggerRender={() => (\n <IconButton disabled={readonly} size=\"small\" icon={<IconSetting size=\"small\" />} />\n )}\n />\n );\n\n return (\n <UIContainer style={style}>\n <UIType>{renderTypeSelector()}</UIType>\n <UIMain>{renderMain()}</UIMain>\n <UITrigger>{renderTrigger()}</UITrigger>\n </UIContainer>\n );\n}\n\nDynamicValueInput.renderKey = 'dynamic-value-input-render-key';\nexport const InjectDynamicValueInput = createInjectMaterial(DynamicValueInput);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n border-radius: 4px;\n border: 1px solid var(--semi-color-border);\n\n overflow: hidden;\n\n background-color: var(--semi-color-fill-0);\n`;\n\nexport const UIMain = styled.div`\n flex-grow: 1;\n overflow: hidden;\n min-width: 0;\n border-left: 1px solid var(--semi-color-border);\n border-right: 1px solid var(--semi-color-border);\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea {\n padding: 2px 6px;\n border: none;\n border-radius: 0;\n word-break: break-all;\n }\n`;\n\nexport const UIType = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '@/typings';\n\nexport function useRefVariable(value?: IFlowConstantRefValue) {\n const available = useScopeAvailable();\n const refVariable = useMemo(() => {\n if (value?.type === 'ref') {\n return available.getByKeyPath(value.content);\n }\n }, [value, available]);\n\n return refVariable;\n}\n\nexport function useSelectSchema(\n schemaFromProps?: IJsonSchema,\n constantProps?: {\n schema?: IJsonSchema;\n },\n value?: IFlowConstantRefValue\n) {\n let defaultSelectSchema = schemaFromProps || constantProps?.schema || { type: 'string' };\n if (value?.type === 'constant') {\n defaultSelectSchema = value?.schema || defaultSelectSchema;\n }\n\n const changeVersion = useRef(0);\n const effectVersion = useRef(0);\n\n const [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n useEffect(() => {\n effectVersion.current += 1;\n if (changeVersion.current === effectVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n if (value?.type === 'constant' && value?.schema) {\n setSelectSchema(value?.schema);\n return;\n }\n }, [value]);\n\n const setSelectSchemaWithVersionUpdate = (schema: IJsonSchema) => {\n setSelectSchema(schema);\n changeVersion.current += 1;\n };\n\n return [selectSchema, setSelectSchemaWithVersionUpdate] as const;\n}\n\nexport function useIncludeSchema(schemaFromProps?: IJsonSchema) {\n const includeSchema = useMemo(() => {\n if (!schemaFromProps) {\n return;\n }\n if (schemaFromProps?.type === 'number') {\n return [schemaFromProps, { type: 'integer' }];\n }\n return { ...schemaFromProps, extra: { ...schemaFromProps?.extra, weak: true } };\n }, [schemaFromProps]);\n\n return includeSchema;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { ConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function ConditionRow({\n style,\n value,\n onChange,\n readonly,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left, ruleConfig.rules);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>\n <InjectVariableSelector\n readonly={readonly}\n style={{ width: '100%' }}\n value={left?.content}\n onChange={(v) =>\n onChange({\n ...value,\n left: {\n type: 'ref',\n content: v,\n },\n })\n }\n />\n </UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nexport { type ConditionRowValueType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { JsonSchemaUtils, JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nimport { IRules } from '../types';\nimport { defaultRules } from '../constants';\n\nexport function useRule(left?: IFlowRefValue, userRules?: IRules) {\n const available = useScopeAvailable();\n\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const variable = useMemo(() => {\n if (!left) return undefined;\n return available.getByKeyPath(left.content);\n }, [available, left]);\n\n const rule = useMemo(() => {\n if (!variable) return undefined;\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldown: false });\n\n return rules[schema?.type as JsonSchemaBasicType];\n }, [variable?.type, rules]);\n\n return { rule };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IRules, Op, OpConfigs } from './types';\n\nexport const defaultRules: IRules = {\n string: {\n [Op.EQ]: 'string',\n [Op.NEQ]: 'string',\n [Op.CONTAINS]: 'string',\n [Op.NOT_CONTAINS]: 'string',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n number: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n integer: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n boolean: {\n [Op.EQ]: 'boolean',\n [Op.NEQ]: 'boolean',\n [Op.IS_TRUE]: null,\n [Op.IS_FALSE]: null,\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n object: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n array: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n [Op.CONTAINS]: 'array',\n [Op.NOT_CONTAINS]: 'array',\n [Op.EQ]: 'array',\n [Op.NEQ]: 'array',\n },\n map: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n};\n\nexport const defaultOpConfigs: OpConfigs = {\n [Op.EQ]: {\n label: 'Equal',\n abbreviation: '=',\n },\n [Op.NEQ]: {\n label: 'Not Equal',\n abbreviation: '≠',\n },\n [Op.GT]: {\n label: 'Greater Than',\n abbreviation: '>',\n },\n [Op.GTE]: {\n label: 'Greater Than or Equal',\n abbreviation: '>=',\n },\n [Op.LT]: {\n label: 'Less Than',\n abbreviation: '<',\n },\n [Op.LTE]: {\n label: 'Less Than or Equal',\n abbreviation: '<=',\n },\n [Op.IN]: {\n label: 'In',\n abbreviation: '∈',\n },\n [Op.NIN]: {\n label: 'Not In',\n abbreviation: '∉',\n },\n [Op.CONTAINS]: {\n label: 'Contains',\n abbreviation: '⊇',\n },\n [Op.NOT_CONTAINS]: {\n label: 'Not Contains',\n abbreviation: '⊉',\n },\n [Op.IS_EMPTY]: {\n label: 'Is Empty',\n abbreviation: '=',\n rightDisplay: 'Empty',\n },\n [Op.IS_NOT_EMPTY]: {\n label: 'Is Not Empty',\n abbreviation: '≠',\n rightDisplay: 'Empty',\n },\n [Op.IS_TRUE]: {\n label: 'Is True',\n abbreviation: '=',\n rightDisplay: 'True',\n },\n [Op.IS_FALSE]: {\n label: 'Is False',\n abbreviation: '=',\n rightDisplay: 'False',\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, OpConfigs } from '../types';\nimport { defaultOpConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { useObjectList } from '@/hooks';\nimport { InjectVariableSelector } from '@/components/variable-selector';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function BatchOutputs(props: PropsType) {\n const { readonly, style } = props;\n\n const { list, add, updateKey, updateValue, remove } = useObjectList(props);\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <Input\n style={{ width: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n />\n <InjectVariableSelector\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value?.content}\n onChange={(v) => updateValue(item.id, { type: 'ref', content: v })}\n />\n <Button\n disabled={readonly}\n icon={<IconDelete />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={() => add()}>\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { nanoid } from 'nanoid';\nimport { difference, get, isObject, set } from 'lodash';\n\nfunction genId() {\n return nanoid();\n}\n\ninterface ListItem<ValueType> {\n id: string;\n key?: string;\n value?: ValueType;\n}\n\ntype ObjectType<ValueType> = Record<string, ValueType | undefined>;\n\nexport function useObjectList<ValueType>({\n value,\n onChange,\n sortIndexKey,\n}: {\n value?: ObjectType<ValueType>;\n onChange: (value?: ObjectType<ValueType>) => void;\n sortIndexKey?: string | ((item: ValueType | undefined) => string);\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n const getSortIndex = (value?: ValueType) => {\n if (typeof sortIndexKey === 'function') {\n return get(value, sortIndexKey(value)) || 0;\n }\n return get(value, sortIndexKey || '') || 0;\n };\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => getSortIndex(a[1]) - getSortIndex(b[1]))\n .map(([key]) => key);\n\n const oldKeys = _prevList.map((item) => item.key).filter(Boolean) as string[];\n const addKeys = difference(newKeys, oldKeys);\n\n return _prevList\n .filter((item) => !item.key || newKeys.includes(item.key))\n .map((item) => ({\n id: item.id,\n key: item.key,\n value: item.key ? value?.[item.key!] : item.value,\n }))\n .concat(\n addKeys.map((_key) => ({\n id: genId(),\n key: _key,\n value: value?.[_key],\n }))\n );\n });\n }, [value]);\n\n const add = (defaultValue?: ValueType) => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n value: defaultValue,\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n value,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList\n .filter((item) => item.key)\n .map((item) => [item.key!, item.value])\n .map((_res, idx) => {\n const indexKey =\n typeof sortIndexKey === 'function'\n ? sortIndexKey(_res[1] as ValueType | undefined)\n : sortIndexKey;\n\n if (isObject(_res[1]) && indexKey) {\n set(_res[1], indexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n key,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n const remove = (itemId: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.filter((_item) => _item.id !== itemId);\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n return { list, add, updateKey, updateValue, remove };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useRef } from 'react';\n\nimport { Renderer, EditorProvider, ActiveLinePlaceholder, InferValues } from '@coze-editor/editor/react';\nimport preset, { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { PropsType } from './types';\nimport { UIContainer } from './styles';\nimport MarkdownHighlight from './extensions/markdown';\nimport LanguageSupport from './extensions/language-support';\nimport JinjaHighlight from './extensions/jinja';\n\ntype Preset = typeof preset;\ntype Options = Partial<InferValues<Preset[number]>>;\n\nexport interface PromptEditorPropsType extends PropsType {\n options?: Options;\n}\n\nexport function PromptEditor(props: PromptEditorPropsType) {\n const {\n value,\n onChange,\n readonly,\n placeholder,\n activeLinePlaceholder,\n style,\n hasError,\n children,\n disableMarkdownHighlight,\n options,\n } = props || {};\n\n const editorRef = useRef<EditorAPI | null>(null);\n\n useEffect(() => {\n // listen to value change\n if (editorRef.current?.getValue() !== value?.content) {\n editorRef.current?.setValue(String(value?.content || ''));\n }\n }, [value]);\n\n return (\n <UIContainer $hasError={hasError} style={style}>\n <EditorProvider>\n <Renderer\n didMount={(editor: EditorAPI) => {\n editorRef.current = editor;\n }}\n plugins={preset}\n defaultValue={String(value?.content)}\n options={{\n readOnly: readonly,\n editable: !readonly,\n placeholder,\n ...options\n }}\n onChange={(e) => {\n onChange({ type: 'template', content: e.value });\n }}\n />\n {activeLinePlaceholder && (\n <ActiveLinePlaceholder>{activeLinePlaceholder}</ActiveLinePlaceholder>\n )}\n {!disableMarkdownHighlight && <MarkdownHighlight />}\n <LanguageSupport />\n <JinjaHighlight />\n {children}\n </EditorProvider>\n </UIContainer>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const UIContainer = styled.div<{ $hasError?: boolean }>`\n background-color: var(--semi-color-fill-0);\n padding-left: 10px;\n padding-right: 6px;\n\n ${({ $hasError }) =>\n $hasError &&\n css`\n border: 1px solid var(--semi-color-danger-6);\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { astDecorator } from '@coze-editor/editor';\nimport { EditorView } from '@codemirror/view';\n\nfunction MarkdownHighlight() {\n const injector = useInjector();\n\n useLayoutEffect(\n () =>\n injector.inject([\n astDecorator.whole.of((cursor) => {\n // # heading\n if (cursor.name.startsWith('ATXHeading')) {\n return {\n type: 'className',\n className: 'heading',\n };\n }\n\n // *italic*\n if (cursor.name === 'Emphasis') {\n return {\n type: 'className',\n className: 'emphasis',\n };\n }\n\n // **bold**\n if (cursor.name === 'StrongEmphasis') {\n return {\n type: 'className',\n className: 'strong-emphasis',\n };\n }\n\n // -\n // 1.\n // >\n if (cursor.name === 'ListMark' || cursor.name === 'QuoteMark') {\n return {\n type: 'className',\n className: 'mark',\n };\n }\n }),\n EditorView.theme({\n '.heading': {\n color: '#00818C',\n fontWeight: 'bold',\n },\n '.emphasis': {\n fontStyle: 'italic',\n },\n '.strong-emphasis': {\n fontWeight: 'bold',\n },\n '.mark': {\n color: '#4E40E5',\n },\n }),\n ]),\n [injector]\n );\n\n return null;\n}\n\nexport default MarkdownHighlight;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { languageSupport } from '@coze-editor/editor/preset-prompt';\n\nfunction LanguageSupport() {\n const injector = useInjector();\n\n useLayoutEffect(() => injector.inject([languageSupport]), [injector]);\n\n return null;\n}\n\nexport default LanguageSupport;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useLayoutEffect } from 'react';\n\nimport { useInjector } from '@coze-editor/editor/react';\nimport { astDecorator } from '@coze-editor/editor';\nimport { EditorView } from '@codemirror/view';\n\nfunction JinjaHighlight() {\n const injector = useInjector();\n\n useLayoutEffect(\n () =>\n injector.inject([\n astDecorator.whole.of((cursor) => {\n if (cursor.name === 'JinjaStatementStart' || cursor.name === 'JinjaStatementEnd') {\n return {\n type: 'className',\n className: 'jinja-statement-bracket',\n };\n }\n\n if (cursor.name === 'JinjaComment') {\n return {\n type: 'className',\n className: 'jinja-comment',\n };\n }\n\n if (cursor.name === 'JinjaExpression') {\n return {\n type: 'className',\n className: 'jinja-expression',\n };\n }\n }),\n EditorView.theme({\n '.jinja-statement-bracket': {\n color: '#D1009D',\n },\n '.jinja-comment': {\n color: '#0607094D',\n },\n '.jinja-expression': {\n color: '#4E40E5',\n },\n }),\n ]),\n [injector]\n );\n\n return null;\n}\n\nexport default JinjaHighlight;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { PromptEditor, PromptEditorPropsType } from '@/components/prompt-editor';\n\nimport { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\n\nexport function PromptEditorWithVariables(props: PromptEditorPropsType) {\n return (\n <PromptEditor {...props}>\n <VariableTree />\n <VariableTagInject />\n </PromptEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover, Tree } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { useVariableTree } from '@/components/variable-selector';\n\nexport function VariableTree() {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n /**\n * When user input {{xxxx}}, {{{xxx}}}(more brackets if possible), replace all brackets with {{xxxx}}\n */\n let { from, to } = range;\n while (editor.$view.state.doc.sliceString(from - 1, from) === '{') {\n from--;\n }\n while (editor.$view.state.doc.sliceString(to, to + 1) === '}') {\n to++;\n }\n\n editor.replaceText({\n from,\n to,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n const treeData = useVariableTree({});\n\n return (\n <>\n <Mention triggerCharacters={['{', '{}', '@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <Tree\n treeData={treeData}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useLayoutEffect } from 'react';\n\nimport { isEqual, last } from 'lodash';\nimport {\n BaseVariableField,\n Disposable,\n DisposableCollection,\n Scope,\n useCurrentScope,\n} from '@flowgram.ai/editor';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconIssueStroked } from '@douyinfe/semi-icons';\nimport { useInjector } from '@coze-editor/editor/react';\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n MatchDecorator,\n ViewPlugin,\n WidgetType,\n} from '@codemirror/view';\n\nimport { IPolyfillRoot, polyfillCreateRoot } from '@/shared';\n\nimport { UIPopoverContent, UIRootTitle, UITag, UIVarName } from '../styles';\n\nclass VariableTagWidget extends WidgetType {\n keyPath?: string[];\n\n toDispose = new DisposableCollection();\n\n scope: Scope;\n\n root: IPolyfillRoot;\n\n constructor({ keyPath, scope }: { keyPath?: string[]; scope: Scope }) {\n super();\n\n this.keyPath = keyPath;\n this.scope = scope;\n }\n\n renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n renderVariable(v?: BaseVariableField) {\n if (!v) {\n this.root.render(\n <UITag prefixIcon={<IconIssueStroked />} color=\"amber\">\n Unknown\n </UITag>\n );\n return;\n }\n\n const rootField = last(v.parentFields);\n\n const rootTitle = (\n <UIRootTitle>{rootField?.meta.title ? `${rootField.meta.title} -` : ''}</UIRootTitle>\n );\n const rootIcon = this.renderIcon(rootField?.meta.icon);\n\n this.root.render(\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{v?.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag prefixIcon={rootIcon}>\n {rootTitle}\n <UIVarName>{v?.key}</UIVarName>\n </UITag>\n </Popover>\n );\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('span');\n\n this.root = polyfillCreateRoot(dom);\n\n this.toDispose.push(\n Disposable.create(() => {\n this.root.unmount();\n })\n );\n\n this.toDispose.push(\n this.scope.available.trackByKeyPath(\n this.keyPath,\n (v) => {\n this.renderVariable(v);\n },\n { triggerOnInit: false }\n )\n );\n\n this.renderVariable(this.scope.available.getByKeyPath(this.keyPath));\n\n return dom;\n }\n\n eq(other: VariableTagWidget) {\n return isEqual(this.keyPath, other.keyPath);\n }\n\n ignoreEvent(): boolean {\n return false;\n }\n\n destroy(dom: HTMLElement): void {\n this.toDispose.dispose();\n }\n}\n\nexport function VariableTagInject() {\n const injector = useInjector();\n\n const scope = useCurrentScope();\n\n // 基于 {{var}} 的正则进行匹配,匹配后进行自定义渲染\n useLayoutEffect(() => {\n const atMatcher = new MatchDecorator({\n regexp: /\\{\\{([^\\}\\{]+)\\}\\}/g,\n decoration: (match) =>\n Decoration.replace({\n widget: new VariableTagWidget({\n keyPath: match[1]?.split('.') ?? [],\n scope,\n }),\n }),\n });\n\n return injector.inject([\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(private view: EditorView) {\n this.decorations = atMatcher.createDeco(view);\n }\n\n update() {\n this.decorations = atMatcher.createDeco(this.view);\n }\n },\n {\n decorations: (p) => p.decorations,\n provide(p) {\n return EditorView.atomicRanges.of(\n (view) => view.plugin(p)?.decorations ?? Decoration.none\n );\n },\n }\n ),\n ]);\n }, [injector]);\n\n return null;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const UITag = styled(Tag)`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n max-width: 300px;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0 5px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { PromptEditor, PromptEditorPropsType } from '@/components/prompt-editor';\n\nimport { InputsTree } from './extensions/inputs-tree';\n\ninterface PropsType extends PromptEditorPropsType {\n inputsValues: any;\n}\n\nexport function PromptEditorWithInputs({ inputsValues, ...restProps }: PropsType) {\n return (\n <PromptEditor {...restProps}>\n <InputsTree inputsValues={inputsValues} />\n </PromptEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { IFlowValue } from '@/typings';\n\nimport { InputsPicker } from '../inputs-picker';\n\nexport function InputsTree({ inputsValues }: { inputsValues: Record<string, IFlowValue> }) {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n /**\n * When user input {{xxxx}}, {{{xxx}}}(more brackets if possible), replace all brackets with {{xxxx}}\n */\n let { from, to } = range;\n while (editor.$view.state.doc.sliceString(from - 1, from) === '{') {\n from--;\n }\n while (editor.$view.state.doc.sliceString(to, to + 1) === '}') {\n to++;\n }\n\n editor.replaceText({\n ...range,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n return (\n <>\n <Mention triggerCharacters={['{', '{}', '@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <InputsPicker\n inputsValues={inputsValues}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject, last } from 'lodash';\nimport {\n type ArrayType,\n ASTMatch,\n type BaseType,\n type BaseVariableField,\n useScopeAvailable,\n} from '@flowgram.ai/editor';\nimport { TreeNodeData } from '@douyinfe/semi-ui/lib/es/tree';\nimport { Tree } from '@douyinfe/semi-ui';\n\nimport { FlowValueUtils } from '@/shared';\n\ntype VariableField = BaseVariableField<{ icon?: string | JSX.Element; title?: string }>;\n\nexport function InputsPicker({\n inputsValues,\n onSelect,\n}: {\n inputsValues: any;\n onSelect: (v: string) => void;\n}) {\n const available = useScopeAvailable();\n\n const getArrayDrilldown = (type: ArrayType, depth = 1): { type: BaseType; depth: number } => {\n if (ASTMatch.isArray(type.items)) {\n return getArrayDrilldown(type.items, depth + 1);\n }\n\n return { type: type.items, depth: depth };\n };\n\n const renderVariable = (variable: VariableField, keyPath: string[]): TreeNodeData => {\n let type = variable?.type;\n\n let children: TreeNodeData[] | undefined;\n\n if (ASTMatch.isObject(type)) {\n children = (type.properties || [])\n .map((_property) => renderVariable(_property as VariableField, [...keyPath, _property.key]))\n .filter(Boolean) as TreeNodeData[];\n }\n\n if (ASTMatch.isArray(type)) {\n const drilldown = getArrayDrilldown(type);\n\n if (ASTMatch.isObject(drilldown.type)) {\n children = (drilldown.type.properties || [])\n .map((_property) =>\n renderVariable(_property as VariableField, [\n ...keyPath,\n ...new Array(drilldown.depth).fill('[0]'),\n _property.key,\n ])\n )\n .filter(Boolean) as TreeNodeData[];\n }\n }\n\n const key = keyPath\n .map((_key, idx) => (_key === '[0]' || idx === 0 ? _key : `.${_key}`))\n .join('');\n\n return {\n key: key,\n label: last(keyPath),\n value: key,\n children,\n };\n };\n\n const getTreeData = (value: any, keyPath: string[]): TreeNodeData | undefined => {\n const currKey = keyPath.join('.');\n\n if (FlowValueUtils.isFlowValue(value)) {\n if (FlowValueUtils.isRef(value)) {\n const variable = available.getByKeyPath(value.content || []);\n if (variable) {\n return renderVariable(variable, keyPath);\n }\n }\n return {\n key: currKey,\n value: currKey,\n label: last(keyPath),\n };\n }\n\n if (isPlainObject(value)) {\n return {\n key: currKey,\n value: currKey,\n label: last(keyPath),\n children: Object.entries(value)\n .map(([key, value]) => getTreeData(value, [...keyPath, key])!)\n .filter(Boolean),\n };\n }\n };\n\n const treeData: TreeNodeData[] = useMemo(\n () =>\n Object.entries(inputsValues)\n .map(([key, value]) => getTreeData(value, [key])!)\n .filter(Boolean),\n []\n );\n\n return <Tree treeData={treeData} onSelect={(v) => onSelect(v)} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { transformerCreator } from '@coze-editor/editor/preset-code';\nimport { Text } from '@coze-editor/editor/language-json';\n\nimport { CodeEditor, type CodeEditorPropsType } from '@/components/code-editor';\n\nimport { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { I18n } from '@flowgram.ai/editor';\n\ntype Match = { match: string; range: [number, number] };\nfunction findAllMatches(inputString: string, regex: RegExp): Match[] {\n const globalRegex = new RegExp(\n regex,\n regex.flags.includes('g') ? regex.flags : regex.flags + 'g'\n );\n let match;\n const matches: Match[] = [];\n\n while ((match = globalRegex.exec(inputString)) !== null) {\n if (match.index === globalRegex.lastIndex) {\n globalRegex.lastIndex++;\n }\n matches.push({\n match: match[0],\n range: [match.index, match.index + match[0].length],\n });\n }\n\n return matches;\n}\n\nconst transformer = transformerCreator((text: Text) => {\n const originalSource = text.toString();\n const matches = findAllMatches(originalSource, /\\{\\{([^\\}]*)\\}\\}/g);\n\n if (matches.length > 0) {\n matches.forEach(({ range }) => {\n text.replaceRange(range[0], range[1], 'null');\n });\n }\n\n return text;\n});\n\nexport function JsonEditorWithVariables(props: Omit<CodeEditorPropsType, 'languageId'>) {\n return (\n <CodeEditor\n languageId=\"json\"\n activeLinePlaceholder={I18n.t(\"Press '@' to Select variable\")}\n {...props}\n options={{\n transformer,\n ...(props.options || {}),\n }}\n >\n <VariableTree />\n <VariableTagInject />\n </CodeEditor>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Popover, Tree } from '@douyinfe/semi-ui';\nimport {\n Mention,\n MentionOpenChangeEvent,\n getCurrentMentionReplaceRange,\n useEditor,\n PositionMirror,\n} from '@coze-editor/editor/react';\nimport { EditorAPI } from '@coze-editor/editor/preset-prompt';\n\nimport { useVariableTree } from '@/components/variable-selector';\n\nexport function VariableTree() {\n const [posKey, setPosKey] = useState('');\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState(-1);\n const editor = useEditor<EditorAPI>();\n\n function insert(variablePath: string) {\n const range = getCurrentMentionReplaceRange(editor.$view.state);\n\n if (!range) {\n return;\n }\n\n editor.replaceText({\n ...range,\n text: '{{' + variablePath + '}}',\n });\n\n setVisible(false);\n }\n\n function handleOpenChange(e: MentionOpenChangeEvent) {\n setPosition(e.state.selection.main.head);\n setVisible(e.value);\n }\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n }, [editor, visible]);\n\n const treeData = useVariableTree({});\n\n return (\n <>\n <Mention triggerCharacters={['@']} onOpenChange={handleOpenChange} />\n\n <Popover\n visible={visible}\n trigger=\"custom\"\n position=\"topLeft\"\n rePosKey={posKey}\n content={\n <div style={{ width: 300 }}>\n <Tree\n treeData={treeData}\n onSelect={(v) => {\n insert(v);\n }}\n />\n </div>\n }\n >\n {/* PositionMirror allows the Popover to appear at the specified cursor position */}\n <PositionMirror\n position={position}\n // When Doc scroll, update position\n onChange={() => setPosKey(String(Math.random()))}\n />\n </Popover>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useLayoutEffect } from 'react';\n\nimport { isEqual, last } from 'lodash';\nimport {\n BaseVariableField,\n Disposable,\n DisposableCollection,\n Scope,\n useCurrentScope,\n} from '@flowgram.ai/editor';\nimport { Popover } from '@douyinfe/semi-ui';\nimport { IconIssueStroked } from '@douyinfe/semi-icons';\nimport { useInjector } from '@coze-editor/editor/react';\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n MatchDecorator,\n ViewPlugin,\n WidgetType,\n} from '@codemirror/view';\n\nimport { IPolyfillRoot, polyfillCreateRoot } from '@/shared';\n\nimport { UIPopoverContent, UIRootTitle, UITag, UIVarName } from '../styles';\n\nclass VariableTagWidget extends WidgetType {\n keyPath?: string[];\n\n toDispose = new DisposableCollection();\n\n scope: Scope;\n\n root: IPolyfillRoot;\n\n constructor({ keyPath, scope }: { keyPath?: string[]; scope: Scope }) {\n super();\n\n this.keyPath = keyPath;\n this.scope = scope;\n }\n\n renderIcon = (icon: string | JSX.Element) => {\n if (typeof icon === 'string') {\n return <img style={{ marginRight: 8 }} width={12} height={12} src={icon} />;\n }\n\n return icon;\n };\n\n renderVariable(v?: BaseVariableField) {\n if (!v) {\n this.root.render(\n <UITag prefixIcon={<IconIssueStroked />} color=\"amber\">\n Unknown\n </UITag>\n );\n return;\n }\n\n const rootField = last(v.parentFields);\n\n const rootTitle = (\n <UIRootTitle>{rootField?.meta.title ? `${rootField.meta.title} -` : ''}</UIRootTitle>\n );\n const rootIcon = this.renderIcon(rootField?.meta.icon);\n\n this.root.render(\n <Popover\n content={\n <UIPopoverContent>\n {rootIcon}\n {rootTitle}\n <UIVarName>{v?.keyPath.slice(1).join('.')}</UIVarName>\n </UIPopoverContent>\n }\n >\n <UITag prefixIcon={rootIcon}>\n {rootTitle}\n <UIVarName>{v?.key}</UIVarName>\n </UITag>\n </Popover>\n );\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('span');\n\n this.root = polyfillCreateRoot(dom);\n\n this.toDispose.push(\n Disposable.create(() => {\n this.root.unmount();\n })\n );\n\n this.toDispose.push(\n this.scope.available.trackByKeyPath(\n this.keyPath,\n (v) => {\n this.renderVariable(v);\n },\n { triggerOnInit: false }\n )\n );\n\n this.renderVariable(this.scope.available.getByKeyPath(this.keyPath));\n\n return dom;\n }\n\n eq(other: VariableTagWidget) {\n return isEqual(this.keyPath, other.keyPath);\n }\n\n ignoreEvent(): boolean {\n return false;\n }\n\n destroy(dom: HTMLElement): void {\n this.toDispose.dispose();\n }\n}\n\nexport function VariableTagInject() {\n const injector = useInjector();\n\n const scope = useCurrentScope();\n\n // 基于 {{var}} 的正则进行匹配,匹配后进行自定义渲染\n useLayoutEffect(() => {\n const atMatcher = new MatchDecorator({\n regexp: /\\{\\{([^\\}\\{]+)\\}\\}/g,\n decoration: (match) =>\n Decoration.replace({\n widget: new VariableTagWidget({\n keyPath: match[1]?.split('.') ?? [],\n scope,\n }),\n }),\n });\n\n return injector.inject([\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(private view: EditorView) {\n this.decorations = atMatcher.createDeco(view);\n }\n\n update() {\n this.decorations = atMatcher.createDeco(this.view);\n }\n },\n {\n decorations: (p) => p.decorations,\n provide(p) {\n return EditorView.atomicRanges.of(\n (view) => view.plugin(p)?.decorations ?? Decoration.none\n );\n },\n }\n ),\n ]);\n }, [injector]);\n\n return null;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const UIRootTitle = styled.div`\n margin-right: 4px;\n min-width: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--semi-color-text-2);\n`;\n\nexport const UIVarName = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const UITag = styled(Tag)`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n max-width: 300px;\n\n & .semi-tag-content-center {\n justify-content: flex-start;\n }\n\n &.semi-tag {\n margin: 0 5px;\n }\n`;\n\nexport const UIPopoverContent = styled.div`\n padding: 10px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowValue } from '@/typings';\nimport { useObjectList } from '@/hooks';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function InputsValues({\n value,\n onChange,\n style,\n readonly,\n constantProps,\n schema,\n hasError,\n}: PropsType) {\n const { list, updateKey, updateValue, remove, add } = useObjectList<IFlowValue | undefined>({\n value,\n onChange,\n sortIndexKey: 'extra.index',\n });\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value as IFlowConstantRefValue}\n onChange={(v) => updateValue(item.id, v)}\n schema={schema}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies: [...(constantProps?.strategies || [])],\n }}\n />\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() =>\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n })\n }\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { HorizontalLine, TreeItem, TreeLevel, TreeRow, TreeTitle } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n parentKey?: string;\n depth?: number;\n drilldown?: boolean;\n showIcon?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplaySchemaTree(props: Omit<PropsType, 'parentKey' | 'depth'>) {\n return <SchemaTree {...props} />;\n}\n\nfunction SchemaTree(props: PropsType) {\n const {\n value: schema = {},\n drilldown = true,\n depth = 0,\n showIcon = true,\n parentKey = '',\n } = props || {};\n\n const typeManager = useTypeManager();\n\n const config = typeManager.getTypeBySchema(schema);\n const title = typeManager.getComplexText(schema);\n const icon = typeManager?.getDisplayIcon(schema);\n let properties: IJsonSchema['properties'] =\n drilldown && config ? config.getTypeSchemaProperties(schema) : {};\n const childEntries = Object.entries(properties || {});\n\n return (\n <TreeItem depth={depth} key={parentKey || 'root'}>\n <TreeRow>\n {depth !== 0 && <HorizontalLine />}\n {showIcon &&\n icon &&\n React.cloneElement(icon, {\n className: 'tree-icon',\n })}\n <TreeTitle>\n {parentKey ? (\n <>\n {`${parentKey} (`}\n {title}\n {')'}\n </>\n ) : (\n title\n )}\n </TreeTitle>\n </TreeRow>\n {childEntries?.length ? (\n <TreeLevel>\n {childEntries.map(([key, value]) => (\n <SchemaTree key={key} {...props} parentKey={key} value={value} depth={depth + 1} />\n ))}\n </TreeLevel>\n ) : null}\n </TreeItem>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const TreeRow = styled.div`\n display: flex;\n align-items: center;\n\n .tree-icon {\n margin-right: 8px;\n width: 14px;\n height: 14px;\n }\n\n height: 27px;\n white-space: nowrap;\n`;\n\nexport const HorizontalLine = styled.div`\n position: relative;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &::after {\n top: 0px;\n right: 6px;\n width: 15px;\n height: 1px;\n }\n`;\n\nexport const TreeTitle = styled.div`\n // overflow: hidden;\n // text-overflow: ellipsis;\n`;\n\nexport const TreeLevel = styled.div`\n padding-left: 30px;\n position: relative;\n\n /* &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n top: 0px;\n bottom: 0px;\n left: -22px;\n width: 1px;\n } */\n`;\n\nexport const TreeItem = styled.div<{ depth: number }>`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &:not(:last-child)::before {\n width: 1px;\n top: 0;\n bottom: 0;\n left: -22px;\n }\n\n &:last-child::before {\n width: 1px;\n top: 0;\n height: 14px;\n left: -22px;\n }\n\n ${(props) =>\n props.depth === 0 &&\n css`\n &::before {\n width: 0px !important;\n }\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect } from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useCurrentScope, useRefresh } from '@flowgram.ai/editor';\n\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\nimport { DisplayOutputsWrapper } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n showIconInTree?: boolean;\n displayFromScope?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayOutputs({ value, showIconInTree, displayFromScope }: PropsType) {\n const scope = useCurrentScope();\n const refresh = useRefresh();\n\n useEffect(() => {\n if (!displayFromScope) {\n return () => null;\n }\n\n const disposable = scope.output.onListOrAnyVarChange(() => {\n refresh();\n });\n\n return () => {\n disposable.dispose();\n };\n }, [displayFromScope]);\n\n const properties: IJsonSchema['properties'] = displayFromScope\n ? scope.output.variables?.reduce((acm, curr) => {\n acm = {\n ...acm,\n ...(JsonSchemaUtils.astToSchema(curr.type)?.properties || {}),\n };\n return acm;\n }, {})\n : value?.properties || {};\n\n const childEntries = Object.entries(properties || {});\n\n return (\n <DisplayOutputsWrapper>\n {childEntries.map(([key, schema]) => (\n <DisplaySchemaTag\n key={key}\n title={key}\n value={schema}\n showIconInTree={showIconInTree}\n warning={!schema}\n />\n ))}\n </DisplayOutputsWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Popover } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\nimport { DisplaySchemaTree } from '@/components/display-schema-tree';\n\nimport { PopoverContent, StyledTag, TitleSpan } from './styles';\n\ninterface PropsType {\n title?: JSX.Element | string;\n value?: IJsonSchema;\n showIconInTree?: boolean;\n warning?: boolean;\n}\n\nexport function DisplaySchemaTag({ value = {}, showIconInTree, title, warning }: PropsType) {\n const typeManager = useTypeManager();\n const icon =\n typeManager?.getDisplayIcon(value) || typeManager.getDisplayIcon({ type: 'unknown' });\n\n return (\n <Popover\n content={\n <PopoverContent>\n <DisplaySchemaTree value={value} typeManager={typeManager} showIcon={showIconInTree} />\n </PopoverContent>\n }\n >\n <StyledTag color={warning ? 'amber' : 'white'}>\n {icon &&\n React.cloneElement(icon, {\n className: 'tag-icon',\n })}\n {title && <TitleSpan>{title}</TitleSpan>}\n </StyledTag>\n </Popover>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const PopoverContent = styled.div`\n padding: 10px;\n`;\n\nexport const StyledTag = styled(Tag)`\n padding: 4px;\n\n .tag-icon {\n width: 12px;\n height: 12px;\n }\n`;\n\nexport const TitleSpan = styled.span`\n display: inline-block;\n margin-left: 4px;\n margin-top: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayOutputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\ninterface PropsType {\n value?: IFlowValue;\n title?: JSX.Element | string;\n showIconInTree?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayFlowValue({ value, title, showIconInTree }: PropsType) {\n const available = useScopeAvailable();\n\n const variable = value?.type === 'ref' ? available.getByKeyPath(value?.content) : undefined;\n\n const schema = useMemo(() => {\n if (value?.type === 'ref') {\n return JsonSchemaUtils.astToSchema(variable?.type);\n }\n if (value?.type === 'template') {\n return { type: 'string' };\n }\n if (value?.type === 'constant') {\n return FlowValueUtils.inferConstantJsonSchema(value);\n }\n\n return { type: 'unknown' };\n }, [value, variable?.hash]);\n\n return (\n <DisplaySchemaTag\n title={title}\n value={schema}\n showIconInTree={showIconInTree}\n warning={value?.type === 'ref' && !variable}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\nimport { DisplayFlowValue } from '@/components/display-flow-value';\n\nimport { DisplayInputsWrapper } from './styles';\nimport { DisplaySchemaTag } from '../display-schema-tag';\n\ninterface PropsType {\n value?: any;\n showIconInTree?: boolean;\n}\n\nexport function DisplayInputsValues({ value, showIconInTree }: PropsType) {\n const childEntries = Object.entries(value || {});\n\n return (\n <DisplayInputsWrapper>\n {childEntries.map(([key, value]) => {\n if (FlowValueUtils.isFlowValue(value)) {\n return (\n <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n );\n }\n\n if (isPlainObject(value)) {\n return (\n <DisplayInputsValueAllInTag\n key={key}\n title={key}\n value={value}\n showIconInTree={showIconInTree}\n />\n );\n }\n\n return null;\n })}\n </DisplayInputsWrapper>\n );\n}\n\nexport function DisplayInputsValueAllInTag({\n value,\n title,\n showIconInTree,\n}: PropsType & {\n title: string;\n}) {\n const available = useScopeAvailable();\n\n const schema = useMemo(\n () => FlowValueUtils.inferJsonSchema(value, available.scope),\n [available.version, value]\n );\n\n return <DisplaySchemaTag title={title} value={schema} showIconInTree={showIconInTree} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayInputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { FieldArray, FieldArrayRenderProps } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { AssignRow, AssignValueType } from '@/components/assign-row';\n\ninterface AssignRowsProps {\n name: string;\n readonly?: boolean;\n}\n\nexport function AssignRows(props: AssignRowsProps) {\n const { name, readonly } = props;\n\n return (\n <FieldArray name={name}>\n {({ field }: FieldArrayRenderProps<AssignValueType | undefined>) => (\n <>\n {field.map((childField, index) => (\n <AssignRow\n key={childField.key}\n readonly={readonly}\n value={childField.value}\n onChange={(value) => {\n childField.onChange(value);\n }}\n onDelete={() => field.remove(index)}\n />\n ))}\n <div style={{ display: 'flex', gap: 5 }}>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'assign' })}\n >\n Assign\n </Button>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'declare' })}\n >\n Declaration\n </Button>\n </div>\n </>\n )}\n </FieldArray>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconMinus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue } from '@/typings';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { AssignRowProps } from './types';\nimport { BlurInput } from './components/blur-input';\n\nexport function AssignRow(props: AssignRowProps) {\n const {\n value = {\n operator: 'assign',\n },\n onChange,\n onDelete,\n readonly,\n } = props;\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: 5 }}>\n <div style={{ width: 150, minWidth: 150, maxWidth: 150 }}>\n {value?.operator === 'assign' ? (\n <InjectVariableSelector\n style={{ width: '100%', height: 26 }}\n value={value?.left?.content}\n config={{ placeholder: 'Select Left' }}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: { type: 'ref', content: v },\n })\n }\n />\n ) : (\n <BlurInput\n style={{ height: 26 }}\n size=\"small\"\n placeholder=\"Input Name\"\n value={value?.left}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: v,\n })\n }\n />\n )}\n </div>\n <div style={{ flexGrow: 1 }}>\n <InjectDynamicValueInput\n readonly={readonly}\n value={value?.right as IFlowConstantRefValue | undefined}\n onChange={(v) =>\n onChange?.({\n ...value,\n right: v,\n })\n }\n />\n </div>\n {onDelete && (\n <div>\n <IconButton\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus />}\n onClick={() => onDelete?.()}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { AssignValueType } from './types';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\nimport { PropsType } from './types';\nimport { UITreeItems } from './styles';\nimport { InputValueRow } from './row';\n\nexport function InputsValuesTree(props: PropsType) {\n const { value, onChange, readonly, hasError, constantProps } = props;\n\n const { list, updateKey, updateValue, remove, add } = useObjectList({\n value,\n onChange,\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n return (\n <div>\n <UITreeItems>\n {list.map((item) => (\n <InputValueRow\n key={item.id}\n keyName={item.key}\n value={item.value}\n onUpdateKey={(key) => updateKey(item.id, key)}\n onUpdateValue={(value) => updateValue(item.id, value)}\n onRemove={() => remove(item.id)}\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n />\n ))}\n </UITreeItems>\n <Button\n style={{ marginTop: 10, marginLeft: 16 }}\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n }}\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div``;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { IconButton, Input } from '@douyinfe/semi-ui';\nimport { IconChevronDown, IconChevronRight, IconDelete } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantValue } from '@/typings';\nimport { ConstantInputStrategy } from '@/components/constant-input';\n\nimport { PropsType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIRow,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UITreeItems,\n} from './styles';\nimport { useChildList } from './hooks/use-child-list';\nimport { InjectDynamicValueInput } from '../dynamic-value-input';\nimport { BlurInput } from '../blur-input';\n\nconst AddObjectChildStrategy: ConstantInputStrategy = {\n hit: (schema) => schema.type === 'object',\n Renderer: () => (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={I18n.t('Configure via child fields')}\n />\n ),\n};\n\nexport function InputValueRow(\n props: {\n keyName?: string;\n value?: any;\n onUpdateKey: (key: string) => void;\n onUpdateValue: (value: any) => void;\n onRemove?: () => void;\n $isLast?: boolean;\n $level?: number;\n } & Pick<PropsType, 'constantProps' | 'hasError' | 'readonly'>\n) {\n const {\n keyName,\n value,\n $level = 0,\n onUpdateKey,\n onUpdateValue,\n $isLast,\n onRemove,\n constantProps,\n hasError,\n readonly,\n } = props;\n const [collapse, setCollapse] = useState(false);\n\n const { canAddField, hasChildren, list, add, updateKey, updateValue, remove } = useChildList(\n value,\n onUpdateValue\n );\n\n const strategies = useMemo(\n () => [...(hasChildren ? [AddObjectChildStrategy] : []), ...(constantProps?.strategies || [])],\n [hasChildren, constantProps?.strategies]\n );\n\n const flowDisplayValue = useMemo(\n () =>\n hasChildren\n ? ({\n type: 'constant',\n schema: { type: 'object' },\n } as IFlowConstantValue)\n : value,\n [hasChildren, value]\n );\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={hasChildren}>\n {hasChildren && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={keyName}\n onChange={(v) => onUpdateKey?.(v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={flowDisplayValue}\n onChange={(v) => onUpdateValue(v)}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies,\n }}\n />\n <UIActions>\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => onRemove?.()}\n />\n </UIActions>\n </UIRow>\n </UITreeItemMain>\n {hasChildren && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {list.map((_item, index) => (\n <InputValueRow\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n key={_item.id}\n keyName={_item.key}\n value={_item.value}\n $level={$level + 1} // 传递递增的层级\n onUpdateValue={(_v) => {\n updateValue(_item.id, _v);\n }}\n onUpdateKey={(k) => {\n updateKey(_item.id, k);\n }}\n onRemove={() => {\n remove(_item.id);\n }}\n $isLast={index === list.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\ninterface ListItem {\n id: string;\n key?: string;\n value?: any;\n}\n\nexport function useChildList(\n value?: any,\n onChange?: (value: any) => void\n): {\n canAddField: boolean;\n hasChildren: boolean;\n list: ListItem[];\n add: (defaultValue?: any) => void;\n updateKey: (id: string, key: string) => void;\n updateValue: (id: string, value: any) => void;\n remove: (id: string) => void;\n} {\n const canAddField = useMemo(() => {\n if (!isPlainObject(value)) {\n return false;\n }\n\n if (FlowValueUtils.isFlowValue(value)) {\n // Constant Object Value Can Add child fields\n return FlowValueUtils.isConstant(value) && value?.schema?.type === 'object';\n }\n\n return true;\n }, [value]);\n\n const objectListValue = useMemo(() => {\n if (isPlainObject(value)) {\n if (FlowValueUtils.isFlowValue(value)) {\n return undefined;\n }\n return value;\n }\n return undefined;\n }, [value]);\n\n const { list, add, updateKey, updateValue, remove } = useObjectList<any>({\n value: objectListValue,\n onChange: (value) => {\n onChange?.(value);\n },\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n const hasChildren = useMemo(\n () => canAddField && (list.length > 0 || Object.keys(objectListValue || {}).length > 0),\n [canAddField, list.length, Object.keys(objectListValue || {}).length]\n );\n\n return {\n canAddField,\n hasChildren,\n list,\n add,\n updateKey,\n updateValue,\n remove,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchInputEffect: EffectOptions[] = createEffectFromVariableProvider({\n private: true,\n parse: (value: IFlowRefValue, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}_locals`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: [\n ASTFactory.createProperty({\n key: 'item',\n initializer: ASTFactory.createEnumerateExpression({\n enumerateFor: ASTFactory.createKeyPathExpression({\n keyPath: value.content || [],\n }),\n }),\n }),\n ASTFactory.createProperty({\n key: 'index',\n type: ASTFactory.createNumber(),\n }),\n ],\n }),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\n/**\n * Auto rename ref when form item's key is renamed\n *\n * Example:\n *\n * formMeta: {\n * effects: {\n * \"inputsValues\": autoRenameRefEffect,\n * }\n * }\n */\nexport const autoRenameRefEffect: EffectOptions[] = [\n {\n event: DataEvent.onValueInit,\n effect: ((params) => {\n const { context, form, name } = params;\n\n const renameService = context.node.getService(VariableFieldKeyRenameService);\n\n const disposable = renameService.onRename(({ before, after }) => {\n const beforeKeyPath = [\n ...before.parentFields.map((_field) => _field.key).reverse(),\n before.key,\n ];\n const afterKeyPath = [\n ...after.parentFields.map((_field) => _field.key).reverse(),\n after.key,\n ];\n\n // traverse rename refs inside form item 'name'\n traverseRef(name, form.getValueIn(name), (_drilldownName, _v) => {\n if (_v.type === 'ref') {\n // ref auto rename\n if (isKeyPathMatch(_v.content, beforeKeyPath)) {\n _v.content = [...afterKeyPath, ...(_v.content || [])?.slice(beforeKeyPath.length)];\n form.setValueIn(_drilldownName, _v);\n }\n } else if (_v.type === 'template') {\n // template auto rename\n const templateKeyPaths = FlowValueUtils.getTemplateKeyPaths(_v);\n let hasMatch = false;\n\n templateKeyPaths.forEach((_keyPath) => {\n if (isKeyPathMatch(_keyPath, beforeKeyPath)) {\n hasMatch = true;\n const nextKeyPath = [\n ...afterKeyPath,\n ...(_keyPath || [])?.slice(beforeKeyPath.length),\n ];\n _v.content = _v.content?.replace(\n `{{${_keyPath.join('.')}}`,\n `{{${nextKeyPath.join('.')}}`\n );\n }\n });\n\n if (hasMatch) {\n form.setValueIn(_drilldownName, { ..._v });\n }\n }\n });\n });\n\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n\n/**\n * If ref value's keyPath is the under as targetKeyPath\n * @param value\n * @param targetKeyPath\n * @returns\n */\nfunction isKeyPathMatch(keyPath: string[] = [], targetKeyPath: string[]) {\n return targetKeyPath.every((_key, index) => _key === keyPath[index]);\n}\n\n/**\n * Traverse value to find ref\n * @param value\n * @param options\n * @returns\n */\nfunction traverseRef(\n name: string,\n value: any,\n cb: (name: string, _v: IFlowRefValue | IFlowTemplateValue) => void\n) {\n for (const { value: _v, path } of FlowValueUtils.traverse(value, {\n includeTypes: ['ref', 'template'],\n path: name,\n })) {\n cb(path, _v as IFlowRefValue | IFlowTemplateValue);\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nexport const provideJsonSchemaOutputs: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: IJsonSchema, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title') || ctx.node.id,\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: JsonSchemaUtils.schemaToAST(value),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n FlowNodeRegistry,\n FlowNodeVariableData,\n} from '@flowgram.ai/editor';\n\nexport const syncVariableTitle: EffectOptions[] = [\n {\n event: DataEvent.onValueChange,\n effect: (({ value, context }) => {\n context.node.getData(FlowNodeVariableData).allScopes.forEach((_scope) => {\n _scope.output.variables.forEach((_var) => {\n _var.updateMeta({\n ...(_var.meta || {}),\n title: value || context.node.id,\n icon: context.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n });\n });\n });\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isEmpty } from 'lodash';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n getNodeScope,\n getNodePrivateScope,\n} from '@flowgram.ai/editor';\n\nexport const validateWhenVariableSync = ({\n scope,\n}: {\n scope?: 'private' | 'public';\n} = {}): EffectOptions[] => [\n {\n event: DataEvent.onValueInit,\n effect: (({ context, form }) => {\n const nodeScope =\n scope === 'private' ? getNodePrivateScope(context.node) : getNodeScope(context.node);\n\n const disposable = nodeScope.available.onListOrAnyVarChange(() => {\n if (!isEmpty(form.state.errors)) {\n form.validate();\n }\n });\n\n return () => disposable.dispose();\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseVariableField,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefValueChange(({ name, variable, form }) => {\n * const schema = JsonSchemaUtils.astToSchema(variable?.type);\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefValueChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { variable?: BaseVariableField }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath(\n value?.content || [],\n (v) => {\n cb({ ...params, variable: v });\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n BaseType,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefSchemaChange(({ name, schema, form }) => {\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefSchemaChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { schema?: IJsonSchema }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath<BaseType | undefined>(\n value?.content || [],\n (_type) => {\n cb({ ...params, schema: JsonSchemaUtils.astToSchema(_type) });\n },\n {\n selector: (_v) => _v?.type,\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodePrivateScope,\n getNodeScope,\n ScopeChainTransformService,\n type EffectOptions,\n type FormPluginCreator,\n FlowNodeScopeType,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchOutputsEffect: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: Record<string, IFlowRefValue>, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: Object.entries(value).map(([_key, value]) =>\n ASTFactory.createProperty({\n key: _key,\n initializer: ASTFactory.createWrapArrayExpression({\n wrapFor: ASTFactory.createKeyPathExpression({\n keyPath: value?.content || [],\n }),\n }),\n })\n ),\n }),\n }),\n ],\n});\n\n/**\n * Free Layout only right now\n */\nexport const createBatchOutputsFormPlugin: FormPluginCreator<{ outputKey: string }> =\n defineFormPluginCreator({\n name: 'batch-outputs-plugin',\n onSetupFormMeta({ mergeEffect }, { outputKey }) {\n mergeEffect({\n [outputKey]: provideBatchOutputsEffect,\n });\n },\n onInit(ctx, { outputKey }) {\n const chainTransformService = ctx.node.getService(ScopeChainTransformService);\n\n const batchNodeType = ctx.node.flowNodeType;\n\n const transformerId = `${batchNodeType}-outputs`;\n\n if (chainTransformService.hasTransformer(transformerId)) {\n return;\n }\n\n chainTransformService.registerTransformer(transformerId, {\n transformCovers: (covers, ctx) => {\n const node = ctx.scope.meta?.node;\n\n // Child Node's variable can cover parent\n if (node?.parent?.flowNodeType === batchNodeType) {\n return [...covers, getNodeScope(node.parent)];\n }\n\n return covers;\n },\n transformDeps(scopes, ctx) {\n const scopeMeta = ctx.scope.meta;\n\n if (scopeMeta?.type === FlowNodeScopeType.private) {\n return scopes;\n }\n\n const node = scopeMeta?.node;\n\n // Public of Loop Node depends on child Node\n if (node?.flowNodeType === batchNodeType) {\n // Get all child blocks\n const childBlocks = node.blocks;\n\n // public scope of all child blocks\n return [\n getNodePrivateScope(node),\n ...childBlocks.map((_childBlock) => getNodeScope(_childBlock)),\n ];\n }\n\n return scopes;\n },\n });\n },\n });\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { get, set } from 'lodash';\nimport { defineFormPluginCreator, getNodePrivateScope, getNodeScope } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\n\ninterface InputConfig {\n sourceKey: string;\n targetKey: string;\n scope?: 'private' | 'public';\n}\n\nexport const createInferInputsPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit }, { sourceKey, targetKey, scope }) {\n if (!sourceKey || !targetKey) {\n return;\n }\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n targetKey,\n FlowValueUtils.inferJsonSchema(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { set, uniqBy } from 'lodash';\nimport { JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowValue } from '@/typings';\n\ntype AssignValueType =\n | {\n operator: 'assign';\n left?: IFlowRefValue;\n right?: IFlowValue;\n }\n | {\n operator: 'declare';\n left?: string;\n right?: IFlowValue;\n };\n\ninterface InputConfig {\n assignKey: string;\n outputKey: string;\n}\n\nexport const createInferAssignPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit, mergeEffect }, { assignKey, outputKey }) {\n if (!assignKey || !outputKey) {\n return;\n }\n\n mergeEffect({\n [assignKey]: createEffectFromVariableProvider({\n parse: (value: AssignValueType[], ctx) => {\n const declareRows = uniqBy(\n value.filter((_v) => _v.operator === 'declare' && _v.left && _v.right),\n 'left'\n );\n\n return [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: declareRows.map((_v) =>\n ASTFactory.createProperty({\n key: _v.left as string,\n type:\n _v.right?.type === 'constant'\n ? JsonSchemaUtils.schemaToAST(_v.right?.schema || {})\n : undefined,\n initializer:\n _v.right?.type === 'ref'\n ? ASTFactory.createKeyPathExpression({\n keyPath: _v.right?.content || [],\n })\n : {},\n })\n ),\n }),\n }),\n ];\n },\n }),\n });\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n outputKey,\n JsonSchemaUtils.astToSchema(getNodeScope(ctx.node).output.variables?.[0]?.type)\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isNil } from 'lodash';\nimport { FeedbackLevel, FlowNodeEntity, getNodeScope } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\ninterface Context {\n node: FlowNodeEntity;\n required?: boolean;\n errorMessages?: {\n required?: string;\n unknownVariable?: string;\n };\n}\n\nexport function validateFlowValue(value: IFlowValue | undefined, ctx: Context) {\n const { node, required, errorMessages } = ctx;\n\n const {\n required: requiredMessage = 'Field is required',\n unknownVariable: unknownVariableMessage = 'Unknown Variable',\n } = errorMessages || {};\n\n if (required && (isNil(value) || isNil(value?.content) || value?.content === '')) {\n return {\n level: FeedbackLevel.Error,\n message: requiredMessage,\n };\n }\n\n if (value?.type === 'ref') {\n const variable = getNodeScope(node).available.getByKeyPath(value?.content || []);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n\n if (value?.type === 'template') {\n const allRefs = FlowValueUtils.getTemplateKeyPaths(value);\n\n for (const ref of allRefs) {\n const variable = getNodeScope(node).available.getByKeyPath(ref);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["React","I18n","value","isObject","FlowValueUtils","isObject","React","JsonSchemaUtils","ASTMatch","React","JsonSchemaUtils","React","React","I18n","React","React","createTheme","t","colors","React","React","React","I18n","React","I18n","React","I18n","InputNumber","React","I18n","value","React","I18n","React","I18n","React","definePluginCreator","React","JsonSchemaUtils","ASTMatch","styled","React","I18n","React","useMemo","Icon","useMemo","isArray","React","Icon","_type","value","React","useMemo","useState","I18n","IconButton","React","useEffect","Input","value","React","styled","css","Icon","useEffect","useRef","useState","useTypeManager","React","I18n","React","useMemo","Input","Renderer","useMemo","React","Input","React","I18n","React","I18n","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","useTypeManager","IconButton","styled","UIContainer","UIType","useEffect","useMemo","useRef","useState","useTypeManager","React","JsonSchemaUtils","constantSchema","IconButton","UIContainer","UIType","React","useMemo","I18n","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","I18n","Button","Select","IconChevronDownStroked","useMemo","I18n","React","Select","Button","IconChevronDownStroked","useMemo","React","UIContainer","Input","I18n","React","I18n","Button","Input","IconPlus","useEffect","useRef","useState","difference","isObject","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","I18n","React","useEffect","useRef","EditorProvider","ActiveLinePlaceholder","preset","styled","css","UIContainer","EditorView","useLayoutEffect","useInjector","useLayoutEffect","useInjector","astDecorator","EditorView","useRef","useEffect","React","UIContainer","EditorProvider","preset","ActiveLinePlaceholder","React","React","useEffect","useState","Popover","useState","useEffect","React","Popover","React","useLayoutEffect","Popover","IconIssueStroked","useInjector","EditorView","styled","Tag","UIRootTitle","UIVarName","UITag","UIPopoverContent","React","UITag","IconIssueStroked","UIRootTitle","Popover","UIPopoverContent","UIVarName","useInjector","useLayoutEffect","EditorView","React","React","React","useEffect","useState","Popover","Mention","getCurrentMentionReplaceRange","useEditor","PositionMirror","React","useMemo","isPlainObject","last","ASTMatch","useScopeAvailable","Tree","useScopeAvailable","ASTMatch","last","isPlainObject","value","useMemo","React","Tree","useState","useEditor","getCurrentMentionReplaceRange","useEffect","React","Mention","Popover","PositionMirror","React","React","React","useEffect","useState","Popover","Tree","Mention","getCurrentMentionReplaceRange","useEditor","PositionMirror","VariableTree","useState","useEditor","getCurrentMentionReplaceRange","useEffect","React","Mention","Popover","Tree","PositionMirror","React","useLayoutEffect","isEqual","last","Disposable","DisposableCollection","useCurrentScope","Popover","IconIssueStroked","useInjector","Decoration","EditorView","MatchDecorator","ViewPlugin","WidgetType","styled","Tag","UIRootTitle","UIVarName","UITag","UIPopoverContent","VariableTagWidget","WidgetType","DisposableCollection","React","UITag","IconIssueStroked","last","UIRootTitle","Popover","UIPopoverContent","UIVarName","Disposable","isEqual","VariableTagInject","useInjector","useCurrentScope","useLayoutEffect","MatchDecorator","Decoration","ViewPlugin","EditorView","I18n","React","VariableTree","VariableTagInject","React","I18n","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","UIRows","UIRow","I18n","IconButton","IconDelete","Button","IconPlus","React","styled","css","React","React","useEffect","JsonSchemaUtils","useCurrentScope","React","Popover","styled","Tag","React","Popover","styled","useCurrentScope","useEffect","JsonSchemaUtils","React","React","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","React","useMemo","isPlainObject","useScopeAvailable","styled","React","value","isPlainObject","useScopeAvailable","useMemo","React","Button","IconPlus","React","IconButton","IconMinus","React","useEffect","useState","Input","BlurInput","value","React","BlurInput","IconButton","IconMinus","React","Button","IconPlus","React","I18n","Button","IconPlus","React","styled","css","Icon","UIContainer","UIRow","UICollapseTrigger","UITreeItems","UITreeItemLeft","UITreeItemRight","UITreeItemMain","UICollapsible","UIActions","iconAddChildrenSvg","IconAddChildren","React","useMemo","useState","I18n","IconButton","Input","IconChevronDown","IconChevronRight","IconDelete","useMemo","isPlainObject","useMemo","isPlainObject","value","React","Input","I18n","useState","useMemo","UITreeItemLeft","UICollapseTrigger","IconChevronDown","IconChevronRight","UITreeItemRight","UITreeItemMain","UIRow","UIActions","IconButton","IconAddChildren","IconDelete","UICollapsible","UITreeItems","value","React","UITreeItems","Button","IconPlus","I18n","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","DataEvent","DataEvent","getNodeScope","JsonSchemaUtils","DataEvent","getNodeScope","ASTFactory","createEffectFromVariableProvider","getNodeForm","getNodePrivateScope","getNodeScope","value","ctx","get","set","defineFormPluginCreator","getNodePrivateScope","getNodeScope","defineFormPluginCreator","set","get","getNodePrivateScope","getNodeScope","set","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","defineFormPluginCreator","getNodeForm","getNodeScope","getNodeScope","getNodeScope"]}
|