@flowgram.ai/form-materials 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/materials.ts +10 -1
- package/dist/esm/index.js +388 -98
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +173 -90
- package/dist/index.d.ts +173 -90
- package/dist/index.js +453 -171
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/components/assign-row/components/blur-input.tsx +27 -0
- package/src/components/assign-row/config.json +11 -0
- package/src/components/assign-row/index.tsx +84 -0
- package/src/components/assign-row/types.ts +25 -0
- package/src/components/assign-rows/config.json +11 -0
- package/src/components/assign-rows/index.tsx +59 -0
- package/src/components/condition-row/constants.ts +4 -0
- package/src/components/constant-input/config.json +1 -1
- package/src/components/constant-input/index.tsx +1 -1
- package/src/components/constant-input/types.ts +1 -1
- package/src/components/display-outputs/index.tsx +7 -1
- package/src/components/display-schema-tag/index.tsx +1 -1
- package/src/components/display-schema-tree/config.json +1 -1
- package/src/components/display-schema-tree/index.tsx +1 -1
- package/src/components/index.ts +2 -0
- package/src/components/json-schema-editor/config.json +1 -1
- package/src/components/type-selector/index.tsx +1 -1
- package/src/components/variable-selector/index.tsx +1 -1
- package/src/components/variable-selector/use-variable-tree.tsx +1 -1
- package/src/effects/index.ts +1 -0
- package/src/effects/validate-when-variable-sync/config.json +5 -0
- package/src/effects/validate-when-variable-sync/index.ts +35 -0
- package/src/form-plugins/index.ts +1 -0
- package/src/form-plugins/infer-assign-plugin/config.json +7 -0
- package/src/form-plugins/infer-assign-plugin/index.ts +90 -0
- package/src/index.ts +2 -0
- package/src/plugins/disable-declaration-plugin/config.json +5 -0
- package/src/plugins/disable-declaration-plugin/create-disable-declaration-plugin.ts +31 -0
- package/src/plugins/disable-declaration-plugin/index.tsx +6 -0
- package/src/plugins/index.ts +7 -0
- package/src/{shared → plugins}/json-schema-preset/create-type-preset-plugin.tsx +4 -2
- package/src/{shared → plugins}/json-schema-preset/type-definition/array.tsx +2 -1
- package/src/{shared → plugins}/json-schema-preset/type-definition/object.tsx +2 -1
- package/src/shared/index.ts +0 -1
- package/src/validate/index.tsx +6 -0
- package/src/validate/validate-flow-value/config.json +7 -0
- package/src/validate/validate-flow-value/index.tsx +73 -0
- /package/src/{shared → plugins}/json-schema-preset/config.json +0 -0
- /package/src/{shared → plugins}/json-schema-preset/index.tsx +0 -0
- /package/src/{shared → plugins}/json-schema-preset/manager.ts +0 -0
- /package/src/{shared → plugins}/json-schema-preset/type-definition/boolean.tsx +0 -0
- /package/src/{shared → plugins}/json-schema-preset/type-definition/index.tsx +0 -0
- /package/src/{shared → plugins}/json-schema-preset/type-definition/integer.tsx +0 -0
- /package/src/{shared → plugins}/json-schema-preset/type-definition/number.tsx +0 -0
- /package/src/{shared → plugins}/json-schema-preset/type-definition/string.tsx +0 -0
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/variable-selector/index.tsx","../../src/components/variable-selector/use-variable-tree.tsx","../../src/shared/format-legacy-refs/index.ts","../../src/shared/json-schema-preset/index.tsx","../../src/shared/json-schema-preset/type-definition/index.tsx","../../src/shared/json-schema-preset/type-definition/string.tsx","../../src/shared/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/shared/json-schema-preset/type-definition/number.tsx","../../src/shared/json-schema-preset/type-definition/integer.tsx","../../src/shared/json-schema-preset/type-definition/boolean.tsx","../../src/shared/json-schema-preset/type-definition/array.tsx","../../src/shared/json-schema-preset/create-type-preset-plugin.tsx","../../src/components/variable-selector/styles.tsx","../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/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/json-schema-editor/utils.ts","../../src/components/constant-input/index.tsx","../../src/components/json-schema-editor/components/blur-input.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/inputs-values/components/blur-input.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/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/form-plugins/batch-outputs-plugin/index.ts","../../src/form-plugins/infer-inputs-plugin/index.ts"],"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 { 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 { useVariableTree } from './use-variable-tree';\nimport { UIPopoverContent, UIRootTitle, UITag, UITreeSelect, UIVarName } from './styles';\n\ninterface PropTypes {\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 type VariableSelectorProps = PropTypes;\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}: PropTypes) => {\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 ?? 'Select Variable...'}\n />\n </>\n );\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 '../../shared';\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 */\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 */\nimport React from 'react';\n\nimport {\n type IJsonSchema,\n JsonSchemaUtils,\n useTypeManager as useOriginTypeManager,\n TypePresetProvider as OriginTypePresetProvider,\n JsonSchemaTypeManager,\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};\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 { Input } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const stringRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'string',\n ConstantRenderer: (props) => (\n <Input placeholder=\"Please Input String\" size=\"small\" disabled={props.readonly} {...props} />\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 { type JsonSchemaTypeRegistry } from '../manager';\nimport { CodeEditorMini } from '../../../components/code-editor-mini';\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=\"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 '../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 { 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=\"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 { 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=\"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 { 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=\"Please Select Boolean\"\n size=\"small\"\n disabled={props.readonly}\n optionList={[\n { label: 'True', value: 1 },\n { label: '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 { type JsonSchemaTypeRegistry } from '../manager';\nimport { CodeEditorMini } from '../../../components/code-editor-mini';\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=\"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: JsonSchemaTypeRegistry[];\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 },\n containerModules: [jsonSchemaContainerModule],\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 { useTypeManager } from '../../shared';\n\ninterface PropTypes {\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\nconst firstUppercase = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\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: PropTypes) {\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 {firstUppercase(_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 {firstUppercase(_type.type)}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n return (\n <Cascader\n disabled={readonly || disabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton size=\"small\" style={style} disabled={readonly || disabled} icon={icon} />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\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 { 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 { TypeSelector } from '../type-selector';\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UIProperties,\n UIPropertyLeft,\n UIPropertyMain,\n UIPropertyRight,\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';\nimport { BlurInput } from './components/blur-input';\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 = { type: 'object' }, 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 <UIProperties>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $index={index}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UIProperties>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? '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 $index?: number;\n $isFirst?: boolean;\n $parentExpand?: boolean;\n $parentType?: string;\n $showLine?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const {\n value,\n config,\n readonly,\n $level = 0,\n onChange: onChangeProps,\n onRemove,\n $index,\n $isFirst,\n $isLast,\n $parentExpand = false,\n $parentType = '',\n $showLine,\n } = 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, isDrilldownObject, 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 = isDrilldownObject && propertyList.length > 0;\n\n return (\n <>\n <UIPropertyLeft\n type={type}\n $index={$index}\n $isFirst={$isFirst}\n $isLast={$isLast}\n $showLine={$showLine}\n $isExpand={expand}\n $parentExpand={$parentExpand}\n $parentType={$parentType}\n >\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UIPropertyLeft>\n <UIPropertyRight>\n <UIPropertyMain\n $showCollapse={showCollapse}\n $collapse={collapse}\n $expand={expand}\n type={type}\n >\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? 'Input Variable Name'}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <TypeSelector\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 {isDrilldownObject && (\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 ?? 'Description'}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={config?.descPlaceholder ?? 'Help LLM to understand the property'}\n />\n {$level === 0 && type && type !== 'array' && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? 'Default Value'}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n type={type}\n placeholder={config?.defaultValuePlaceholder}\n jsonFormatText={config?.jsonFormatText}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UIPropertyMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UIProperties $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 $parentExpand={expand}\n $parentType={type}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n $isFirst={index === 0}\n $index={index}\n $showLine={true}\n />\n ))}\n </UIProperties>\n </UICollapsible>\n )}\n </UIPropertyRight>\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 UIProperties = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 10px;\n margin-top: 10px;\n `}\n`;\n\nexport const UIPropertyLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $isExpand?: boolean;\n type?: string;\n $isFirst?: boolean;\n $index?: number;\n $parentExpand?: boolean;\n $parentType?: string;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $parentType }) => {\n let height = '100%';\n if ($parentType && $isLast) {\n height = '24px';\n }\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -22px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -22px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: 18px; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UIPropertyRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UIPropertyMain = styled.div<{\n $expand?: boolean;\n type?: string;\n $collapse?: boolean;\n $showCollapse?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n\n ${({ $expand, type, $collapse, $showCollapse }) => {\n const beforeElement = `\n &::before {\n /* 竖线 */\n content: '';\n height: 100%;\n position: absolute;\n left: -12px;\n top: 18px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }`;\n\n return (\n $expand &&\n css`\n background-color: #f5f5f5;\n padding: 10px;\n border-radius: 4px;\n\n ${$showCollapse &&\n $collapse &&\n (type === 'array' || type === 'object') &&\n css`\n ${beforeElement}\n `}\n `\n );\n }}\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 JSONViewerWrapper = styled.div`\n padding: 0 0 24px;\n &:first-child {\n margin-top: 0px;\n }\n`;\n\nexport const JSONHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--semi-color-fill-0);\n border-radius: 6px 6px 0 0;\n height: 36px;\n padding: 0 8px 0 12px;\n`;\n\nexport const JSONHeaderLeft = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const JSONHeaderRight = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\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, useMemo, useRef, useState } from 'react';\n\nimport { omit } from 'lodash';\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nfunction getDrilldownSchema(\n value?: PropertyValueType,\n path?: (keyof PropertyValueType)[]\n): { schema?: PropertyValueType | null; path?: (keyof PropertyValueType)[] } {\n if (!value) {\n return {};\n }\n\n if (value.type === 'array' && value.items) {\n return getDrilldownSchema(value.items, [...(path || []), 'items']);\n }\n\n return { schema: value, path };\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n // Get drilldown (array.items.items...)\n const drilldown = useMemo(() => getDrilldownSchema(value), [value, value?.type, value?.items]);\n\n const isDrilldownObject = drilldown.schema?.type === 'object';\n\n // Generate Init Property List\n const initPropertyList = useMemo(\n () =>\n isDrilldownObject\n ? Object.entries(drilldown.schema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(\n ([name, _value], index) =>\n ({\n key: genId(),\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n extra: {\n ...(_value.extra || {}),\n index,\n },\n } as PropertyValueType)\n )\n : [],\n [isDrilldownObject]\n );\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>(initPropertyList);\n\n const mountRef = useRef(false);\n\n useEffect(() => {\n // If initRef is true, it means the component has been mounted\n if (mountRef.current) {\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const nameMap = new Map<string, PropertyValueType>();\n\n for (const _property of _list) {\n if (_property.name) {\n nameMap.set(_property.name, _property);\n }\n }\n return Object.entries(drilldown.schema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([name, _value]) => {\n const _property = nameMap.get(name);\n if (_property) {\n return {\n key: _property.key,\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n };\n }\n return {\n key: genId(),\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n };\n });\n });\n }\n mountRef.current = true;\n }, [drilldown.schema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\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 let drilldownSchema = value || {};\n if (drilldown.path) {\n drilldownSchema = drilldown.path.reduce((acc, key) => acc[key], value || {});\n }\n drilldownSchema.properties = nextProperties;\n drilldownSchema.required = nextRequired;\n\n onChange?.(value || {});\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n updatePropertyList((_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 (!isDrilldownObject) {\n setPropertyList([]);\n }\n }, [isDrilldownObject]);\n\n return {\n propertyList,\n isDrilldownObject,\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, { useRef, useState, useCallback } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { IconButton, JsonViewer, Tooltip } from '@douyinfe/semi-ui';\nimport { IconBrackets } from '@douyinfe/semi-icons';\n\nimport { getValueType } from './utils';\nimport {\n ConstantInputWrapper,\n JSONHeader,\n JSONHeaderLeft,\n JSONHeaderRight,\n JSONViewerWrapper,\n} from './styles';\nimport { ConstantInput } from '../constant-input';\n\n/**\n * 根据不同的数据类型渲染对应的默认值输入组件。\n * @param props - 组件属性,包括 value, type, placeholder, onChange。\n * @returns 返回对应类型的输入组件或 null。\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n name?: string;\n type?: string;\n placeholder?: string;\n jsonFormatText?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, type, onChange, placeholder, jsonFormatText } = props;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const JsonViewerRef = useRef<JsonViewer>(null);\n\n // 为 JsonViewer 添加状态管理\n const [internalJsonValue, setInternalJsonValue] = useState<string>(\n getValueType(value) === 'string' ? value : ''\n );\n\n // 使用 useCallback 创建稳定的回调函数\n const handleJsonChange = useCallback((val: string) => {\n // 只在值真正改变时才更新状态\n if (val !== internalJsonValue) {\n setInternalJsonValue(val);\n }\n }, []);\n\n // 处理编辑完成事件\n const handleEditComplete = useCallback(() => {\n // 只有当存在key,编辑完成时才触发父组件的 onChange\n onChange(internalJsonValue);\n // 确保在更新后移除焦点\n requestAnimationFrame(() => {\n // JsonViewerRef.current?.format();\n wrapperRef.current?.blur();\n });\n setJsonReadOnly(true);\n }, [internalJsonValue, onChange]);\n\n const [jsonReadOnly, setJsonReadOnly] = useState<boolean>(true);\n\n const handleFormatJson = useCallback(() => {\n try {\n const parsed = JSON.parse(internalJsonValue);\n const formatted = JSON.stringify(parsed, null, 4);\n setInternalJsonValue(formatted);\n onChange(formatted);\n } catch (error) {\n console.error('Invalid JSON:', error);\n }\n }, [internalJsonValue, onChange]);\n\n return type === 'object' ? (\n <>\n <JSONHeader>\n <JSONHeaderLeft>json</JSONHeaderLeft>\n <JSONHeaderRight>\n <Tooltip content={jsonFormatText ?? 'Format'}>\n <IconButton\n icon={<IconBrackets style={{ color: 'var(--semi-color-primary)' }} />}\n size=\"small\"\n type=\"tertiary\"\n theme=\"borderless\"\n onClick={handleFormatJson}\n />\n </Tooltip>\n </JSONHeaderRight>\n </JSONHeader>\n\n <JSONViewerWrapper\n ref={wrapperRef}\n tabIndex={-1}\n onBlur={(e) => {\n if (wrapperRef.current && !wrapperRef.current?.contains(e.relatedTarget as Node)) {\n handleEditComplete();\n }\n }}\n onClick={(e: React.MouseEvent) => {\n setJsonReadOnly(false);\n }}\n >\n <JsonViewer\n ref={JsonViewerRef}\n value={getValueType(value) === 'string' ? value : ''}\n height={120}\n width=\"100%\"\n showSearch={false}\n options={{\n readOnly: jsonReadOnly,\n formatOptions: { tabSize: 4, insertSpaces: true, eol: '\\n' },\n }}\n style={{\n padding: 0,\n }}\n onChange={handleJsonChange}\n />\n </JSONViewerWrapper>\n </>\n ) : (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? 'Default value if parameter is not provided'}\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * Return the corresponding string description according to the type of the input value.根据输入值的类型返回对应的字符串描述。\n * @param value - 需要判断类型的值。The value whose type needs to be judged.\n * @returns 返回值的类型字符串 The type string of the return value('string', 'integer', 'number', 'boolean', 'object', 'array', 'other')。\n */\nexport function getValueType(value: any): string {\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n } else if (type === 'number') {\n return Number.isInteger(value) ? 'integer' : 'number';\n } else if (type === 'boolean') {\n return 'boolean';\n } else if (type === 'object') {\n if (value === null) {\n return 'other';\n }\n return Array.isArray(value) ? 'array' : 'object';\n } else {\n // undefined, function, symbol, bigint etc.\n return 'other';\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 '../../shared';\nimport { PropsType } from './types';\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, { 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 { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '../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 { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { VariableSelector } from '../variable-selector';\nimport { TypeSelector } from '../type-selector';\nimport { Strategy } from '../constant-input/types';\nimport { ConstantInput } from '../constant-input';\nimport { IFlowConstantRefValue } from '../../typings/flow-value';\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?: Strategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\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 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 let content;\n\n if (_v?.type === 'object') {\n content = '{}';\n }\n\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n if (_v?.type === 'boolean') {\n content = false;\n }\n\n onChange({\n type: 'constant',\n content,\n schema: _v || { type: 'string' },\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 <VariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : undefined)}\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 strategies={[...(constantProps?.strategies || [])]}\n fallbackRenderer={() => (\n <VariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : undefined)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n />\n );\n };\n\n const renderTrigger = () => (\n <VariableSelector\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","/**\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\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\nexport const UIType = styled.div`\n border-right: 1px solid #e5e5e5;\n\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n border-left: 1px solid #e5e5e5;\n\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 { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '../../typings/flow-value';\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 [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n return [selectSchema, setSelectSchema] 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 { JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { ConditionRowValueType, Op } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\nimport { VariableSelector } from '../variable-selector';\nimport { DynamicValueInput } from '../dynamic-value-input';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n}\n\nexport function ConditionRow({ style, value, onChange, readonly }: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: JsonSchemaBasicType | null = rule?.[operator as Op] || 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 <VariableSelector\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 <DynamicValueInput\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 || '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 { rules } from '../constants';\nimport { IFlowRefValue } from '../../../typings';\n\nexport function useRule(left?: IFlowRefValue) {\n const available = useScopeAvailable();\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]);\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 rules: 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 },\n map: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n};\n\nexport const opConfigs: 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 { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, Op } from '../types';\nimport { opConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: Op;\n onChange: (op: Op) => void;\n readonly?: boolean;\n}\n\nexport function useOp({ rule, op, onChange, readonly }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(opConfigs[_op as Op] || {}),\n value: _op,\n })),\n [rule]\n );\n\n const opConfig = useMemo(() => opConfigs[op as Op], [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 Op);\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 { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { PropsType } from './types';\nimport { VariableSelector } from '../variable-selector';\nimport { useObjectList } from '../../hooks';\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 <VariableSelector\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 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, 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;\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n useEffect(() => {\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => get(a[1], sortIndexKey || 0) - get(b[1], sortIndexKey || 0))\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 = () => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\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 if (isObject(_res[1]) && sortIndexKey) {\n set(_res[1], sortIndexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\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 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 } 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\nexport type PromptEditorPropsType = PropsType;\n\nexport function PromptEditor(props: PropsType) {\n const {\n value,\n onChange,\n readonly,\n placeholder,\n activeLinePlaceholder,\n style,\n hasError,\n children,\n disableMarkdownHighlight,\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 }}\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 { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { PromptEditor, PromptEditorPropsType } from '../prompt-editor';\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 '../../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 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 { InputsTree } from './extensions/inputs-tree';\nimport { PromptEditor, PromptEditorPropsType } from '../prompt-editor';\nimport { IFlowValue } from '../../typings';\n\ninterface PropsType extends PromptEditorPropsType {\n inputsValues: Record<string, IFlowValue>;\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 { InputsPicker } from '../inputs-picker';\nimport { IFlowValue } from '../../../typings';\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 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 { 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 { IFlowValue } from '../../typings';\n\ntype VariableField = BaseVariableField<{ icon?: string | JSX.Element; title?: string }>;\n\nexport function InputsPicker({\n inputsValues,\n onSelect,\n}: {\n inputsValues: Record<string, IFlowValue>;\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 treeData: TreeNodeData[] = useMemo(\n () =>\n Object.entries(inputsValues).map(([key, value]) => {\n if (value?.type === 'ref') {\n const variable = available.getByKeyPath(value.content || []);\n\n if (variable) {\n return renderVariable(variable, [key]);\n }\n }\n\n return {\n key,\n value: key,\n label: key,\n };\n }),\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 { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { CodeEditor, type CodeEditorPropsType } from '../code-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=\"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 '../../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 { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { PropsType } from './types';\nimport { DynamicValueInput } from '../dynamic-value-input';\nimport { IFlowConstantRefValue, IFlowValue } from '../../typings';\nimport { useObjectList } from '../../hooks';\nimport { UIRow, UIRows } from './styles';\nimport { BlurInput } from './components/blur-input';\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=\"Input Key\"\n />\n <DynamicValueInput\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 disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={add}>\n 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: 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, 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 { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '../../shared';\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 '../display-schema-tag';\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 key={key} title={key} value={schema} showIconInTree={showIconInTree} />\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 { DisplaySchemaTree } from '../display-schema-tree';\nimport { useTypeManager } from '../../shared';\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 { DisplaySchemaTag } from '../display-schema-tag';\nimport { IFlowValue } from '../../typings';\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 if (value?.schema) {\n return value?.schema;\n }\n if (typeof value?.content === 'string') {\n return { type: 'string' };\n }\n if (typeof value?.content === 'number') {\n return { type: 'number' };\n }\n if (typeof value?.content === 'boolean') {\n return { type: 'boolean' };\n }\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 from 'react';\n\nimport { DisplayFlowValue } from '../display-flow-value';\nimport { IFlowValue } from '../../typings';\nimport { DisplayInputsWrapper } from './styles';\n\ninterface PropsType {\n value?: Record<string, IFlowValue | undefined>;\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 <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n ))}\n </DisplayInputsWrapper>\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 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 {\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 { isArray, isObject, uniq } from 'lodash';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '../../typings';\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 = 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 * get template key paths\n * @param value\n * @returns\n */\nfunction 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 * If value is ref\n * @param value\n * @returns\n */\nfunction isRef(value: any): value is IFlowRefValue {\n return (\n value?.type === 'ref' && Array.isArray(value?.content) && typeof value?.content[0] === 'string'\n );\n}\n\nfunction isTemplate(value: any): value is IFlowTemplateValue {\n return value?.type === 'template' && typeof value?.content === 'string';\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 if (isObject(value)) {\n if (isRef(value)) {\n cb(name, value);\n return;\n }\n\n if (isTemplate(value)) {\n cb(name, value);\n return;\n }\n\n Object.entries(value).forEach(([_key, _value]) => {\n traverseRef(`${name}.${_key}`, _value, cb);\n });\n return;\n }\n\n if (isArray(value)) {\n value.forEach((_value, idx) => {\n traverseRef(`${name}[${idx}]`, _value, cb);\n });\n return;\n }\n\n return;\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 {\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 { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n defineFormPluginCreator,\n getNodePrivateScope,\n getNodeScope,\n Scope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowConstantValue, IFlowRefValue, IFlowTemplateValue } from '../../typings';\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 infer(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n\nfunction isRef(value: any): value is IFlowRefValue {\n return (\n value?.type === 'ref' && Array.isArray(value?.content) && typeof value?.content[0] === 'string'\n );\n}\n\nfunction isTemplate(value: any): value is IFlowTemplateValue {\n return value?.type === 'template' && typeof value?.content === 'string';\n}\n\nfunction isConstant(value: any): value is IFlowConstantValue {\n return value?.type === 'constant' && typeof value?.content !== 'undefined';\n}\n\nconst infer = (values: any, scope: Scope): IJsonSchema | undefined => {\n if (typeof values === 'object') {\n if (isConstant(values)) {\n if (values?.schema) {\n return values.schema;\n }\n\n if (typeof values.content === 'string') {\n return {\n type: 'string',\n };\n }\n\n if (typeof values.content === 'number') {\n return {\n type: 'number',\n };\n }\n\n if (typeof values.content === 'boolean') {\n return {\n type: 'boolean',\n };\n }\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 {\n type: 'string',\n };\n }\n\n return {\n type: 'object',\n properties: Object.keys(values).reduce((acc, key) => {\n const schema = infer(values[key], scope);\n if (schema) {\n acc[key] = schema;\n }\n return acc;\n }, {} as Record<string, IJsonSchema>),\n };\n }\n};\n"],"mappings":"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","names":["React","React","JsonSchemaUtils","value","React","React","React","React","createTheme","t","colors","React","React","React","React","React","InputNumber","React","value","React","React","React","React","JsonSchemaUtils","styled","React","React","useMemo","Icon","useMemo","isArray","React","Icon","_type","value","React","useMemo","useState","IconButton","React","styled","css","Icon","useEffect","useMemo","useRef","React","useRef","useState","useCallback","IconButton","React","useMemo","Input","Renderer","useMemo","React","Input","useRef","useState","useCallback","React","IconButton","React","useEffect","useState","Input","value","React","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","IconButton","styled","UIContainer","UIType","useMemo","useState","React","JsonSchemaUtils","IconButton","UIContainer","UIType","React","useMemo","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","Button","Select","IconChevronDownStroked","useMemo","React","Select","Button","IconChevronDownStroked","useMemo","React","UIContainer","Input","React","Button","Input","IconPlus","useEffect","useState","isObject","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","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","last","ASTMatch","useScopeAvailable","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","React","VariableTree","VariableTagInject","React","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","useEffect","useState","Input","BlurInput","value","React","UIRows","UIRow","BlurInput","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","styled","React","value","isObject","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","ASTFactory","createEffectFromVariableProvider","getNodeForm","value","ctx","get","set","JsonSchemaUtils","defineFormPluginCreator","getNodePrivateScope","getNodeScope","isRef","isTemplate"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/variable-selector/index.tsx","../../src/components/variable-selector/use-variable-tree.tsx","../../src/plugins/json-schema-preset/index.tsx","../../src/plugins/json-schema-preset/type-definition/index.tsx","../../src/plugins/json-schema-preset/type-definition/string.tsx","../../src/plugins/json-schema-preset/type-definition/object.tsx","../../src/components/code-editor-mini/index.tsx","../../src/components/code-editor/index.tsx","../../src/components/code-editor/utils.ts","../../src/components/code-editor/language-features.ts","../../src/components/code-editor/theme/index.ts","../../src/components/code-editor/theme/light.ts","../../src/components/code-editor/theme/dark.ts","../../src/plugins/json-schema-preset/type-definition/number.tsx","../../src/plugins/json-schema-preset/type-definition/integer.tsx","../../src/plugins/json-schema-preset/type-definition/boolean.tsx","../../src/plugins/json-schema-preset/type-definition/array.tsx","../../src/plugins/json-schema-preset/create-type-preset-plugin.tsx","../../src/plugins/disable-declaration-plugin/create-disable-declaration-plugin.ts","../../src/components/variable-selector/styles.tsx","../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/index.tsx","../../src/components/json-schema-editor/styles.tsx","../../src/components/json-schema-editor/hooks.tsx","../../src/components/json-schema-editor/default-value.tsx","../../src/components/json-schema-editor/utils.ts","../../src/components/constant-input/index.tsx","../../src/components/json-schema-editor/components/blur-input.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/inputs-values/components/blur-input.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/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/shared/format-legacy-refs/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 { 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 { useVariableTree } from './use-variable-tree';\nimport { UIPopoverContent, UIRootTitle, UITag, UITreeSelect, UIVarName } from './styles';\n\ninterface PropTypes {\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 type VariableSelectorProps = PropTypes;\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}: PropTypes) => {\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 ?? 'Select Variable'}\n />\n </>\n );\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} 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};\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 { Input } from '@douyinfe/semi-ui';\n\nimport { type JsonSchemaTypeRegistry } from '../manager';\n\nexport const stringRegistry: Partial<JsonSchemaTypeRegistry> = {\n type: 'string',\n ConstantRenderer: (props) => (\n <Input placeholder=\"Please Input String\" size=\"small\" disabled={props.readonly} {...props} />\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 { 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=\"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 '../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 { 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=\"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 { 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=\"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 { 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=\"Please Select Boolean\"\n size=\"small\"\n disabled={props.readonly}\n optionList={[\n { label: 'True', value: 1 },\n { label: '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 { 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=\"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 { useTypeManager } from '../../plugins';\n\ninterface PropTypes {\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\nconst firstUppercase = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\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: PropTypes) {\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 {firstUppercase(_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 {firstUppercase(_type.type)}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n return (\n <Cascader\n disabled={readonly || disabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton size=\"small\" style={style} disabled={readonly || disabled} icon={icon} />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\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 { 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 { TypeSelector } from '../type-selector';\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UIProperties,\n UIPropertyLeft,\n UIPropertyMain,\n UIPropertyRight,\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';\nimport { BlurInput } from './components/blur-input';\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 = { type: 'object' }, 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 <UIProperties>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $index={index}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UIProperties>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? '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 $index?: number;\n $isFirst?: boolean;\n $parentExpand?: boolean;\n $parentType?: string;\n $showLine?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const {\n value,\n config,\n readonly,\n $level = 0,\n onChange: onChangeProps,\n onRemove,\n $index,\n $isFirst,\n $isLast,\n $parentExpand = false,\n $parentType = '',\n $showLine,\n } = 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, isDrilldownObject, 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 = isDrilldownObject && propertyList.length > 0;\n\n return (\n <>\n <UIPropertyLeft\n type={type}\n $index={$index}\n $isFirst={$isFirst}\n $isLast={$isLast}\n $showLine={$showLine}\n $isExpand={expand}\n $parentExpand={$parentExpand}\n $parentType={$parentType}\n >\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UIPropertyLeft>\n <UIPropertyRight>\n <UIPropertyMain\n $showCollapse={showCollapse}\n $collapse={collapse}\n $expand={expand}\n type={type}\n >\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? 'Input Variable Name'}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <TypeSelector\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 {isDrilldownObject && (\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 ?? 'Description'}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={config?.descPlaceholder ?? 'Help LLM to understand the property'}\n />\n {$level === 0 && type && type !== 'array' && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? 'Default Value'}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n type={type}\n placeholder={config?.defaultValuePlaceholder}\n jsonFormatText={config?.jsonFormatText}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UIPropertyMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UIProperties $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 $parentExpand={expand}\n $parentType={type}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n $isFirst={index === 0}\n $index={index}\n $showLine={true}\n />\n ))}\n </UIProperties>\n </UICollapsible>\n )}\n </UIPropertyRight>\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 UIProperties = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 10px;\n margin-top: 10px;\n `}\n`;\n\nexport const UIPropertyLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $isExpand?: boolean;\n type?: string;\n $isFirst?: boolean;\n $index?: number;\n $parentExpand?: boolean;\n $parentType?: string;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $parentType }) => {\n let height = '100%';\n if ($parentType && $isLast) {\n height = '24px';\n }\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -22px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -22px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: 18px; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UIPropertyRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UIPropertyMain = styled.div<{\n $expand?: boolean;\n type?: string;\n $collapse?: boolean;\n $showCollapse?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n\n ${({ $expand, type, $collapse, $showCollapse }) => {\n const beforeElement = `\n &::before {\n /* 竖线 */\n content: '';\n height: 100%;\n position: absolute;\n left: -12px;\n top: 18px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }`;\n\n return (\n $expand &&\n css`\n background-color: #f5f5f5;\n padding: 10px;\n border-radius: 4px;\n\n ${$showCollapse &&\n $collapse &&\n (type === 'array' || type === 'object') &&\n css`\n ${beforeElement}\n `}\n `\n );\n }}\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 JSONViewerWrapper = styled.div`\n padding: 0 0 24px;\n &:first-child {\n margin-top: 0px;\n }\n`;\n\nexport const JSONHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--semi-color-fill-0);\n border-radius: 6px 6px 0 0;\n height: 36px;\n padding: 0 8px 0 12px;\n`;\n\nexport const JSONHeaderLeft = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const JSONHeaderRight = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\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, useMemo, useRef, useState } from 'react';\n\nimport { omit } from 'lodash';\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nfunction getDrilldownSchema(\n value?: PropertyValueType,\n path?: (keyof PropertyValueType)[]\n): { schema?: PropertyValueType | null; path?: (keyof PropertyValueType)[] } {\n if (!value) {\n return {};\n }\n\n if (value.type === 'array' && value.items) {\n return getDrilldownSchema(value.items, [...(path || []), 'items']);\n }\n\n return { schema: value, path };\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n // Get drilldown (array.items.items...)\n const drilldown = useMemo(() => getDrilldownSchema(value), [value, value?.type, value?.items]);\n\n const isDrilldownObject = drilldown.schema?.type === 'object';\n\n // Generate Init Property List\n const initPropertyList = useMemo(\n () =>\n isDrilldownObject\n ? Object.entries(drilldown.schema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(\n ([name, _value], index) =>\n ({\n key: genId(),\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n extra: {\n ...(_value.extra || {}),\n index,\n },\n } as PropertyValueType)\n )\n : [],\n [isDrilldownObject]\n );\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>(initPropertyList);\n\n const mountRef = useRef(false);\n\n useEffect(() => {\n // If initRef is true, it means the component has been mounted\n if (mountRef.current) {\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const nameMap = new Map<string, PropertyValueType>();\n\n for (const _property of _list) {\n if (_property.name) {\n nameMap.set(_property.name, _property);\n }\n }\n return Object.entries(drilldown.schema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([name, _value]) => {\n const _property = nameMap.get(name);\n if (_property) {\n return {\n key: _property.key,\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n };\n }\n return {\n key: genId(),\n name,\n isPropertyRequired: drilldown.schema?.required?.includes(name) || false,\n ..._value,\n };\n });\n });\n }\n mountRef.current = true;\n }, [drilldown.schema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\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 let drilldownSchema = value || {};\n if (drilldown.path) {\n drilldownSchema = drilldown.path.reduce((acc, key) => acc[key], value || {});\n }\n drilldownSchema.properties = nextProperties;\n drilldownSchema.required = nextRequired;\n\n onChange?.(value || {});\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n updatePropertyList((_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 (!isDrilldownObject) {\n setPropertyList([]);\n }\n }, [isDrilldownObject]);\n\n return {\n propertyList,\n isDrilldownObject,\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, { useRef, useState, useCallback } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { IconButton, JsonViewer, Tooltip } from '@douyinfe/semi-ui';\nimport { IconBrackets } from '@douyinfe/semi-icons';\n\nimport { getValueType } from './utils';\nimport {\n ConstantInputWrapper,\n JSONHeader,\n JSONHeaderLeft,\n JSONHeaderRight,\n JSONViewerWrapper,\n} from './styles';\nimport { ConstantInput } from '../constant-input';\n\n/**\n * 根据不同的数据类型渲染对应的默认值输入组件。\n * @param props - 组件属性,包括 value, type, placeholder, onChange。\n * @returns 返回对应类型的输入组件或 null。\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n name?: string;\n type?: string;\n placeholder?: string;\n jsonFormatText?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, type, onChange, placeholder, jsonFormatText } = props;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const JsonViewerRef = useRef<JsonViewer>(null);\n\n // 为 JsonViewer 添加状态管理\n const [internalJsonValue, setInternalJsonValue] = useState<string>(\n getValueType(value) === 'string' ? value : ''\n );\n\n // 使用 useCallback 创建稳定的回调函数\n const handleJsonChange = useCallback((val: string) => {\n // 只在值真正改变时才更新状态\n if (val !== internalJsonValue) {\n setInternalJsonValue(val);\n }\n }, []);\n\n // 处理编辑完成事件\n const handleEditComplete = useCallback(() => {\n // 只有当存在key,编辑完成时才触发父组件的 onChange\n onChange(internalJsonValue);\n // 确保在更新后移除焦点\n requestAnimationFrame(() => {\n // JsonViewerRef.current?.format();\n wrapperRef.current?.blur();\n });\n setJsonReadOnly(true);\n }, [internalJsonValue, onChange]);\n\n const [jsonReadOnly, setJsonReadOnly] = useState<boolean>(true);\n\n const handleFormatJson = useCallback(() => {\n try {\n const parsed = JSON.parse(internalJsonValue);\n const formatted = JSON.stringify(parsed, null, 4);\n setInternalJsonValue(formatted);\n onChange(formatted);\n } catch (error) {\n console.error('Invalid JSON:', error);\n }\n }, [internalJsonValue, onChange]);\n\n return type === 'object' ? (\n <>\n <JSONHeader>\n <JSONHeaderLeft>json</JSONHeaderLeft>\n <JSONHeaderRight>\n <Tooltip content={jsonFormatText ?? 'Format'}>\n <IconButton\n icon={<IconBrackets style={{ color: 'var(--semi-color-primary)' }} />}\n size=\"small\"\n type=\"tertiary\"\n theme=\"borderless\"\n onClick={handleFormatJson}\n />\n </Tooltip>\n </JSONHeaderRight>\n </JSONHeader>\n\n <JSONViewerWrapper\n ref={wrapperRef}\n tabIndex={-1}\n onBlur={(e) => {\n if (wrapperRef.current && !wrapperRef.current?.contains(e.relatedTarget as Node)) {\n handleEditComplete();\n }\n }}\n onClick={(e: React.MouseEvent) => {\n setJsonReadOnly(false);\n }}\n >\n <JsonViewer\n ref={JsonViewerRef}\n value={getValueType(value) === 'string' ? value : ''}\n height={120}\n width=\"100%\"\n showSearch={false}\n options={{\n readOnly: jsonReadOnly,\n formatOptions: { tabSize: 4, insertSpaces: true, eol: '\\n' },\n }}\n style={{\n padding: 0,\n }}\n onChange={handleJsonChange}\n />\n </JSONViewerWrapper>\n </>\n ) : (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? 'Default value if parameter is not provided'}\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * Return the corresponding string description according to the type of the input value.根据输入值的类型返回对应的字符串描述。\n * @param value - 需要判断类型的值。The value whose type needs to be judged.\n * @returns 返回值的类型字符串 The type string of the return value('string', 'integer', 'number', 'boolean', 'object', 'array', 'other')。\n */\nexport function getValueType(value: any): string {\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n } else if (type === 'number') {\n return Number.isInteger(value) ? 'integer' : 'number';\n } else if (type === 'boolean') {\n return 'boolean';\n } else if (type === 'object') {\n if (value === null) {\n return 'other';\n }\n return Array.isArray(value) ? 'array' : 'object';\n } else {\n // undefined, function, symbol, bigint etc.\n return 'other';\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';\nimport { PropsType } from './types';\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, { 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 { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '../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 { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { VariableSelector } from '../variable-selector';\nimport { TypeSelector } from '../type-selector';\nimport { Strategy } from '../constant-input/types';\nimport { ConstantInput } from '../constant-input';\nimport { IFlowConstantRefValue } from '../../typings/flow-value';\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?: Strategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\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 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 let content;\n\n if (_v?.type === 'object') {\n content = '{}';\n }\n\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n if (_v?.type === 'boolean') {\n content = false;\n }\n\n onChange({\n type: 'constant',\n content,\n schema: _v || { type: 'string' },\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 <VariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : undefined)}\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 strategies={[...(constantProps?.strategies || [])]}\n fallbackRenderer={() => (\n <VariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : undefined)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n />\n );\n };\n\n const renderTrigger = () => (\n <VariableSelector\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","/**\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\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\nexport const UIType = styled.div`\n border-right: 1px solid #e5e5e5;\n\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n border-left: 1px solid #e5e5e5;\n\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 { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '../../typings/flow-value';\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 [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n return [selectSchema, setSelectSchema] 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 { JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { ConditionRowValueType, Op } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\nimport { VariableSelector } from '../variable-selector';\nimport { DynamicValueInput } from '../dynamic-value-input';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n}\n\nexport function ConditionRow({ style, value, onChange, readonly }: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: JsonSchemaBasicType | null = rule?.[operator as Op] || 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 <VariableSelector\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 <DynamicValueInput\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 || '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 { rules } from '../constants';\nimport { IFlowRefValue } from '../../../typings';\n\nexport function useRule(left?: IFlowRefValue) {\n const available = useScopeAvailable();\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]);\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 rules: 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 opConfigs: 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 { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, Op } from '../types';\nimport { opConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: Op;\n onChange: (op: Op) => void;\n readonly?: boolean;\n}\n\nexport function useOp({ rule, op, onChange, readonly }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(opConfigs[_op as Op] || {}),\n value: _op,\n })),\n [rule]\n );\n\n const opConfig = useMemo(() => opConfigs[op as Op], [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 Op);\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 { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { PropsType } from './types';\nimport { VariableSelector } from '../variable-selector';\nimport { useObjectList } from '../../hooks';\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 <VariableSelector\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 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, 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;\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n useEffect(() => {\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => get(a[1], sortIndexKey || 0) - get(b[1], sortIndexKey || 0))\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 = () => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\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 if (isObject(_res[1]) && sortIndexKey) {\n set(_res[1], sortIndexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\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 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 } 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\nexport type PromptEditorPropsType = PropsType;\n\nexport function PromptEditor(props: PropsType) {\n const {\n value,\n onChange,\n readonly,\n placeholder,\n activeLinePlaceholder,\n style,\n hasError,\n children,\n disableMarkdownHighlight,\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 }}\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 { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { PromptEditor, PromptEditorPropsType } from '../prompt-editor';\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 '../../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 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 { InputsTree } from './extensions/inputs-tree';\nimport { PromptEditor, PromptEditorPropsType } from '../prompt-editor';\nimport { IFlowValue } from '../../typings';\n\ninterface PropsType extends PromptEditorPropsType {\n inputsValues: Record<string, IFlowValue>;\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 { InputsPicker } from '../inputs-picker';\nimport { IFlowValue } from '../../../typings';\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 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 { 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 { IFlowValue } from '../../typings';\n\ntype VariableField = BaseVariableField<{ icon?: string | JSX.Element; title?: string }>;\n\nexport function InputsPicker({\n inputsValues,\n onSelect,\n}: {\n inputsValues: Record<string, IFlowValue>;\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 treeData: TreeNodeData[] = useMemo(\n () =>\n Object.entries(inputsValues).map(([key, value]) => {\n if (value?.type === 'ref') {\n const variable = available.getByKeyPath(value.content || []);\n\n if (variable) {\n return renderVariable(variable, [key]);\n }\n }\n\n return {\n key,\n value: key,\n label: key,\n };\n }),\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 { VariableTree } from './extensions/variable-tree';\nimport { VariableTagInject } from './extensions/variable-tag';\nimport { CodeEditor, type CodeEditorPropsType } from '../code-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=\"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 '../../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 { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { PropsType } from './types';\nimport { DynamicValueInput } from '../dynamic-value-input';\nimport { IFlowConstantRefValue, IFlowValue } from '../../typings';\nimport { useObjectList } from '../../hooks';\nimport { UIRow, UIRows } from './styles';\nimport { BlurInput } from './components/blur-input';\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=\"Input Key\"\n />\n <DynamicValueInput\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 disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={add}>\n 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: 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, 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 { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '../../plugins';\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 '../display-schema-tag';\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 { DisplaySchemaTree } from '../display-schema-tree';\nimport { useTypeManager } from '../../plugins';\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 { DisplaySchemaTag } from '../display-schema-tag';\nimport { IFlowValue } from '../../typings';\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 if (value?.schema) {\n return value?.schema;\n }\n if (typeof value?.content === 'string') {\n return { type: 'string' };\n }\n if (typeof value?.content === 'number') {\n return { type: 'number' };\n }\n if (typeof value?.content === 'boolean') {\n return { type: 'boolean' };\n }\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 from 'react';\n\nimport { DisplayFlowValue } from '../display-flow-value';\nimport { IFlowValue } from '../../typings';\nimport { DisplayInputsWrapper } from './styles';\n\ninterface PropsType {\n value?: Record<string, IFlowValue | undefined>;\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 <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n ))}\n </DisplayInputsWrapper>\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 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 '../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';\n\nimport { AssignRowProps } from './types';\nimport { BlurInput } from './components/blur-input';\nimport { VariableSelector } from '../variable-selector';\nimport { DynamicValueInput } from '../dynamic-value-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 <VariableSelector\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 <DynamicValueInput\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 {\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 { isArray, isObject, uniq } from 'lodash';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '../../typings';\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 = 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 * get template key paths\n * @param value\n * @returns\n */\nfunction 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 * If value is ref\n * @param value\n * @returns\n */\nfunction isRef(value: any): value is IFlowRefValue {\n return (\n value?.type === 'ref' && Array.isArray(value?.content) && typeof value?.content[0] === 'string'\n );\n}\n\nfunction isTemplate(value: any): value is IFlowTemplateValue {\n return value?.type === 'template' && typeof value?.content === 'string';\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 if (isObject(value)) {\n if (isRef(value)) {\n cb(name, value);\n return;\n }\n\n if (isTemplate(value)) {\n cb(name, value);\n return;\n }\n\n Object.entries(value).forEach(([_key, _value]) => {\n traverseRef(`${name}.${_key}`, _value, cb);\n });\n return;\n }\n\n if (isArray(value)) {\n value.forEach((_value, idx) => {\n traverseRef(`${name}[${idx}]`, _value, cb);\n });\n return;\n }\n\n return;\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 { 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 {\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 { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n defineFormPluginCreator,\n getNodePrivateScope,\n getNodeScope,\n Scope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowConstantValue, IFlowRefValue, IFlowTemplateValue } from '../../typings';\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 infer(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n\nfunction isRef(value: any): value is IFlowRefValue {\n return (\n value?.type === 'ref' && Array.isArray(value?.content) && typeof value?.content[0] === 'string'\n );\n}\n\nfunction isTemplate(value: any): value is IFlowTemplateValue {\n return value?.type === 'template' && typeof value?.content === 'string';\n}\n\nfunction isConstant(value: any): value is IFlowConstantValue {\n return value?.type === 'constant' && typeof value?.content !== 'undefined';\n}\n\nconst infer = (values: any, scope: Scope): IJsonSchema | undefined => {\n if (typeof values === 'object') {\n if (isConstant(values)) {\n if (values?.schema) {\n return values.schema;\n }\n\n if (typeof values.content === 'string') {\n return {\n type: 'string',\n };\n }\n\n if (typeof values.content === 'number') {\n return {\n type: 'number',\n };\n }\n\n if (typeof values.content === 'boolean') {\n return {\n type: 'boolean',\n };\n }\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 {\n type: 'string',\n };\n }\n\n return {\n type: 'object',\n properties: Object.keys(values).reduce((acc, key) => {\n const schema = infer(values[key], scope);\n if (schema) {\n acc[key] = schema;\n }\n return acc;\n }, {} as Record<string, IJsonSchema>),\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, uniq } from 'lodash';\nimport { FeedbackLevel, FlowNodeEntity, getNodeScope } from '@flowgram.ai/editor';\n\nimport { IFlowTemplateValue, IFlowValue } from '@/typings';\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 = 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\n/**\n * get template key paths\n * @param value\n * @returns\n */\nfunction 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"],"mappings":"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","names":["React","React","JsonSchemaUtils","ASTMatch","React","React","React","React","createTheme","t","colors","React","React","React","React","React","InputNumber","React","value","React","React","React","definePluginCreator","React","JsonSchemaUtils","ASTMatch","styled","React","React","useMemo","Icon","useMemo","isArray","React","Icon","_type","value","React","useMemo","useState","IconButton","React","styled","css","Icon","useEffect","useMemo","useRef","React","useRef","useState","useCallback","IconButton","React","useMemo","Input","Renderer","useMemo","React","Input","useRef","useState","useCallback","React","IconButton","React","useEffect","useState","Input","value","React","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","IconButton","styled","UIContainer","UIType","useMemo","useState","React","JsonSchemaUtils","IconButton","UIContainer","UIType","React","useMemo","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","Button","Select","IconChevronDownStroked","useMemo","React","Select","Button","IconChevronDownStroked","useMemo","React","UIContainer","Input","React","Button","Input","IconPlus","useEffect","useState","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","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","last","ASTMatch","useScopeAvailable","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","React","VariableTree","VariableTagInject","React","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","useEffect","useState","Input","BlurInput","value","React","UIRows","UIRow","BlurInput","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","styled","React","value","React","Button","IconPlus","React","IconButton","IconMinus","React","useEffect","useState","Input","BlurInput","value","React","BlurInput","IconButton","IconMinus","React","Button","IconPlus","isObject","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","DataEvent","isObject","value","ASTFactory","createEffectFromVariableProvider","getNodeForm","getNodePrivateScope","getNodeScope","value","ctx","get","set","JsonSchemaUtils","defineFormPluginCreator","getNodePrivateScope","getNodeScope","isRef","isTemplate","set","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","defineFormPluginCreator","getNodeForm","getNodeScope","uniq","getNodeScope","getTemplateKeyPaths"]}
|