@flowgram.ai/form-materials 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/esm/chunk-6OZSB6PD.js +10 -0
  2. package/dist/esm/chunk-6OZSB6PD.js.map +1 -0
  3. package/dist/esm/chunk-G4HQ7OSI.js +440 -0
  4. package/dist/esm/chunk-G4HQ7OSI.js.map +1 -0
  5. package/dist/esm/chunk-QIJ4QVB2.js +271 -0
  6. package/dist/esm/chunk-QIJ4QVB2.js.map +1 -0
  7. package/dist/esm/editor-6UMULJYB.js +180 -0
  8. package/dist/esm/editor-6UMULJYB.js.map +1 -0
  9. package/dist/esm/editor-E2BQTPCD.js +388 -0
  10. package/dist/esm/editor-E2BQTPCD.js.map +1 -0
  11. package/dist/esm/editor-H2R7JJLO.js +282 -0
  12. package/dist/esm/editor-H2R7JJLO.js.map +1 -0
  13. package/dist/esm/editor-JX42GFAZ.js +249 -0
  14. package/dist/esm/editor-JX42GFAZ.js.map +1 -0
  15. package/dist/esm/editor-YMNCDGUR.js +167 -0
  16. package/dist/esm/editor-YMNCDGUR.js.map +1 -0
  17. package/dist/esm/index.js +1388 -3029
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/index.d.mts +144 -51
  20. package/dist/index.d.ts +144 -51
  21. package/dist/index.js +3511 -2759
  22. package/dist/index.js.map +1 -1
  23. package/package.json +6 -6
  24. package/src/components/code-editor/editor.tsx +96 -0
  25. package/src/components/code-editor/index.tsx +5 -89
  26. package/src/components/code-editor/theme/dark.ts +49 -30
  27. package/src/components/code-editor/theme/light.ts +56 -32
  28. package/src/components/code-editor-mini/index.tsx +2 -2
  29. package/src/components/condition-row/index.tsx +4 -0
  30. package/src/components/db-condition-row/hooks/use-left.tsx +66 -0
  31. package/src/components/db-condition-row/hooks/use-op.tsx +59 -0
  32. package/src/components/db-condition-row/index.tsx +93 -0
  33. package/src/components/db-condition-row/styles.tsx +43 -0
  34. package/src/components/db-condition-row/types.ts +34 -0
  35. package/src/components/index.ts +1 -0
  36. package/src/components/json-editor-with-variables/editor.tsx +69 -0
  37. package/src/components/json-editor-with-variables/extensions/variable-tag.tsx +4 -3
  38. package/src/components/json-editor-with-variables/index.tsx +5 -60
  39. package/src/components/prompt-editor/editor.tsx +81 -0
  40. package/src/components/prompt-editor/index.tsx +5 -69
  41. package/src/components/prompt-editor-with-inputs/editor.tsx +25 -0
  42. package/src/components/prompt-editor-with-inputs/index.tsx +5 -15
  43. package/src/components/prompt-editor-with-variables/editor.tsx +22 -0
  44. package/src/components/prompt-editor-with-variables/extensions/variable-tag.tsx +10 -18
  45. package/src/components/prompt-editor-with-variables/index.tsx +5 -13
  46. package/src/shared/index.ts +1 -0
  47. package/src/shared/polyfill-create-root/index.tsx +33 -0
@@ -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":"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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"]}
1
+ {"version":3,"sources":["../../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/db-condition-row/index.tsx","../../src/components/db-condition-row/styles.tsx","../../src/components/db-condition-row/hooks/use-op.tsx","../../src/components/db-condition-row/hooks/use-left.tsx","../../src/components/batch-outputs/index.tsx","../../src/hooks/use-object-list/index.tsx","../../src/components/batch-outputs/styles.tsx","../../src/components/prompt-editor-with-variables/index.tsx","../../src/components/prompt-editor-with-inputs/index.tsx","../../src/components/json-editor-with-variables/index.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 { 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';\nimport { defaultOpConfigs, defaultRules } from './constants';\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\nConditionRow.defaultRules = defaultRules;\nConditionRow.defaultOpConfigs = defaultOpConfigs;\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, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { DBConditionOptionType, DBConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useOp } from './hooks/use-op';\nimport { useLeft } from './hooks/use-left';\n\ninterface PropTypes {\n value?: DBConditionRowValueType;\n onChange: (value?: DBConditionRowValueType) => void;\n style?: React.CSSProperties;\n options?: DBConditionOptionType[];\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function DBConditionRow({\n style,\n value,\n onChange,\n readonly,\n options,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n\n const { rule, renderDBOptionSelect } = useLeft({\n left,\n options,\n onChange: (leftKey) => onChange({ ...value, left: leftKey }),\n readonly,\n userRules: ruleConfig.rules,\n });\n\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>{renderDBOptionSelect()}</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 DBConditionRowValueType, type DBConditionOptionType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Select } from '@douyinfe/semi-ui';\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\nexport const UIOptionLabel = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const UISelect = styled(Select)`\n & .semi-select-selection {\n margin-left: 5px;\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 { ConditionRow } from '@/components';\n\nimport { IRule, OpConfigs } from '../types';\n\nconst defaultOpConfigs = ConditionRow.defaultOpConfigs;\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 { useMemo } from 'react';\nimport React from 'react';\n\nimport { JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\nimport { Icon } from '@douyinfe/semi-ui';\n\nimport { ConditionRow } from '@/components';\n\nimport { DBConditionOptionType, IRules } from '../types';\nimport { UIOptionLabel, UISelect } from '../styles';\n\nconst defaultRules = ConditionRow.defaultRules;\n\ninterface HookParams {\n left?: string;\n options?: DBConditionOptionType[];\n userRules?: IRules;\n readonly?: boolean;\n onChange: (leftKey: string) => void;\n}\n\nexport function useLeft({ left, options, userRules, readonly, onChange }: HookParams) {\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const rule = useMemo(() => {\n if (!left) return undefined;\n\n const option = options?.find((item) => item.value === left);\n\n if (!option?.schema?.type) {\n return undefined;\n }\n\n return rules[option.schema.type];\n }, [left, options, rules]);\n\n const renderDBOptionSelect = () => (\n <UISelect\n disabled={readonly}\n size=\"small\"\n style={{ width: '100%' }}\n value={left}\n onChange={(v) => onChange(v as string)}\n optionList={\n options?.map((item) => ({\n label: (\n <UIOptionLabel>\n <Icon size=\"small\" svg={typeManager.getDisplayIcon(item.schema)} />\n {item.label}\n </UIOptionLabel>\n ),\n value: item.value,\n })) || []\n }\n />\n );\n\n return { rule, renderDBOptionSelect };\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 { lazy } from 'react';\n\nexport const PromptEditorWithVariables = lazy(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithVariables }))\n);\n\nexport type { PromptEditorWithVariablesProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazy } from 'react';\n\nexport const PromptEditorWithInputs = lazy(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithInputs }))\n);\n\nexport type { PromptEditorWithInputsProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazy } from 'react';\n\nexport const JsonEditorWithVariables = lazy(() =>\n import('./editor').then((module) => ({ default: module.JsonEditorWithVariables }))\n);\n\nexport type { JsonEditorWithVariablesProps } from './editor';\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":["_type","value","React","useMemo","useState","I18n","IconButton","React","value","React","Icon","useEffect","useState","useTypeManager","React","React","useMemo","Input","useMemo","React","Input","React","React","I18n","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","useTypeManager","IconButton","styled","UIContainer","UIType","useEffect","useMemo","useRef","useState","useTypeManager","React","JsonSchemaUtils","IconButton","UIContainer","UIType","React","useMemo","I18n","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","I18n","Button","useMemo","I18n","React","Button","useMemo","React","UIContainer","Input","I18n","React","useMemo","I18n","Input","styled","Select","UIContainer","UIOperator","UILeft","UIRight","UIValues","React","useMemo","I18n","Button","Select","IconChevronDownStroked","defaultOpConfigs","useOp","useMemo","I18n","React","Select","Button","IconChevronDownStroked","useMemo","React","useTypeManager","Icon","defaultRules","useMemo","useTypeManager","React","Icon","defaultRuleConfig","useOp","useMemo","React","UIContainer","UIOperator","UIValues","UILeft","UIRight","Input","I18n","React","I18n","Button","Input","IconPlus","useEffect","useRef","useState","difference","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","I18n","lazy","lazy","React","I18n","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","UIRows","UIRow","I18n","IconButton","IconDelete","Button","IconPlus","React","styled","css","React","React","useEffect","JsonSchemaUtils","React","styled","React","styled","useEffect","JsonSchemaUtils","React","React","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","React","useMemo","useScopeAvailable","styled","React","value","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"]}