@flowgram.ai/form-materials 0.4.6 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/esm/{chunk-6OZSB6PD.js → chunk-727SU246.js} +6 -3
  2. package/dist/esm/chunk-727SU246.js.map +1 -0
  3. package/dist/esm/{chunk-QIJ4QVB2.js → chunk-DEZUEMUM.js} +17 -4
  4. package/dist/esm/chunk-DEZUEMUM.js.map +1 -0
  5. package/dist/esm/{chunk-G4HQ7OSI.js → chunk-MFDEE4HB.js} +5 -5
  6. package/dist/esm/chunk-MFDEE4HB.js.map +1 -0
  7. package/dist/esm/{editor-H2R7JJLO.js → editor-2YHACGQ2.js} +4 -4
  8. package/dist/esm/editor-2YHACGQ2.js.map +1 -0
  9. package/dist/esm/{editor-JX42GFAZ.js → editor-G63XGWH2.js} +5 -5
  10. package/dist/esm/editor-G63XGWH2.js.map +1 -0
  11. package/dist/esm/{editor-YMNCDGUR.js → editor-OXPGKPF5.js} +4 -4
  12. package/dist/esm/editor-OXPGKPF5.js.map +1 -0
  13. package/dist/esm/index.js +24 -23
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/index.d.mts +10 -2
  16. package/dist/index.d.ts +10 -2
  17. package/dist/index.js +336 -313
  18. package/dist/index.js.map +1 -1
  19. package/package.json +7 -7
  20. package/src/components/code-editor/index.tsx +2 -2
  21. package/src/components/display-inputs-values/index.tsx +1 -1
  22. package/src/components/dynamic-value-input/hooks.ts +1 -1
  23. package/src/components/inputs-values-tree/hooks/use-child-list.tsx +1 -1
  24. package/src/components/json-editor-with-variables/extensions/variable-tag.tsx +1 -1
  25. package/src/components/json-editor-with-variables/index.tsx +2 -2
  26. package/src/components/json-schema-editor/hooks.tsx +1 -1
  27. package/src/components/prompt-editor/index.tsx +2 -2
  28. package/src/components/prompt-editor-with-inputs/index.tsx +2 -2
  29. package/src/components/prompt-editor-with-inputs/inputs-picker.tsx +1 -1
  30. package/src/components/prompt-editor-with-variables/extensions/variable-tag.tsx +1 -1
  31. package/src/components/prompt-editor-with-variables/index.tsx +2 -2
  32. package/src/effects/validate-when-variable-sync/index.ts +1 -1
  33. package/src/form-plugins/infer-assign-plugin/index.ts +1 -1
  34. package/src/form-plugins/infer-inputs-plugin/index.ts +1 -1
  35. package/src/hooks/use-object-list/index.tsx +1 -1
  36. package/src/shared/flow-value/utils.ts +1 -1
  37. package/src/shared/format-legacy-refs/index.ts +1 -1
  38. package/src/shared/index.ts +1 -0
  39. package/src/shared/lazy-suspense/index.tsx +28 -0
  40. package/src/validate/validate-flow-value/index.tsx +1 -1
  41. package/dist/esm/chunk-6OZSB6PD.js.map +0 -1
  42. package/dist/esm/chunk-G4HQ7OSI.js.map +0 -1
  43. package/dist/esm/chunk-QIJ4QVB2.js.map +0 -1
  44. package/dist/esm/editor-H2R7JJLO.js.map +0 -1
  45. package/dist/esm/editor-JX42GFAZ.js.map +0 -1
  46. package/dist/esm/editor-YMNCDGUR.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/index.tsx","../../src/components/blur-input/index.tsx","../../src/components/json-schema-editor/styles.tsx","../../src/components/json-schema-editor/hooks.tsx","../../src/components/json-schema-editor/default-value.tsx","../../src/components/constant-input/index.tsx","../../src/components/batch-variable-selector/index.tsx","../../src/components/dynamic-value-input/index.tsx","../../src/components/dynamic-value-input/styles.tsx","../../src/components/dynamic-value-input/hooks.ts","../../src/components/condition-row/index.tsx","../../src/components/condition-row/styles.tsx","../../src/components/condition-row/hooks/useRule.ts","../../src/components/condition-row/constants.ts","../../src/components/condition-row/hooks/useOp.tsx","../../src/components/db-condition-row/index.tsx","../../src/components/db-condition-row/styles.tsx","../../src/components/db-condition-row/hooks/use-op.tsx","../../src/components/db-condition-row/hooks/use-left.tsx","../../src/components/batch-outputs/index.tsx","../../src/hooks/use-object-list/index.tsx","../../src/components/batch-outputs/styles.tsx","../../src/components/prompt-editor-with-variables/index.tsx","../../src/components/prompt-editor-with-inputs/index.tsx","../../src/components/json-editor-with-variables/index.tsx","../../src/components/inputs-values/index.tsx","../../src/components/inputs-values/styles.tsx","../../src/components/display-schema-tree/index.tsx","../../src/components/display-schema-tree/styles.tsx","../../src/components/display-outputs/index.tsx","../../src/components/display-schema-tag/index.tsx","../../src/components/display-schema-tag/styles.ts","../../src/components/display-outputs/styles.ts","../../src/components/display-flow-value/index.tsx","../../src/components/display-inputs-values/index.tsx","../../src/components/display-inputs-values/styles.ts","../../src/components/assign-rows/index.tsx","../../src/components/assign-row/index.tsx","../../src/components/assign-row/components/blur-input.tsx","../../src/components/inputs-values-tree/index.tsx","../../src/components/inputs-values-tree/styles.tsx","../../src/components/inputs-values-tree/row.tsx","../../src/components/inputs-values-tree/hooks/use-child-list.tsx","../../src/effects/provide-batch-input/index.ts","../../src/effects/auto-rename-ref/index.ts","../../src/effects/provide-json-schema-outputs/index.ts","../../src/effects/sync-variable-title/index.ts","../../src/effects/validate-when-variable-sync/index.ts","../../src/effects/listen-ref-value-change/index.ts","../../src/effects/listen-ref-schema-change/index.ts","../../src/form-plugins/batch-outputs-plugin/index.ts","../../src/form-plugins/infer-inputs-plugin/index.ts","../../src/form-plugins/infer-assign-plugin/index.ts","../../src/validate/validate-flow-value/index.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Cascader, Icon, IconButton } from '@douyinfe/semi-ui';\n\nimport { createInjectMaterial } from '@/shared/inject-material';\nimport { useTypeManager } from '@/plugins';\n\nexport interface TypeSelectorProps {\n value?: Partial<IJsonSchema>;\n onChange?: (value?: Partial<IJsonSchema>) => void;\n readonly?: boolean;\n /**\n * @deprecated use readonly instead\n */\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nconst labelStyle: React.CSSProperties = { display: 'flex', alignItems: 'center', gap: 5 };\n\nexport const getTypeSelectValue = (value?: Partial<IJsonSchema>): string[] | undefined => {\n if (value?.type === 'array' && value?.items) {\n return [value.type, ...(getTypeSelectValue(value.items) || [])];\n }\n\n return value?.type ? [value.type] : undefined;\n};\n\nexport const parseTypeSelectValue = (value?: string[]): Partial<IJsonSchema> | undefined => {\n const [type, ...subTypes] = value || [];\n\n if (type === 'array') {\n return { type: 'array', items: parseTypeSelectValue(subTypes) };\n }\n\n return { type };\n};\n\nexport function TypeSelector(props: TypeSelectorProps) {\n const { value, onChange, readonly, disabled, style } = props;\n\n const selectValue = useMemo(() => getTypeSelectValue(value), [value]);\n\n const typeManager = useTypeManager();\n\n const icon = typeManager.getDisplayIcon(value || {});\n\n const options = useMemo(\n () =>\n typeManager.getTypeRegistriesWithParentType().map((_type) => {\n const isArray = _type.type === 'array';\n\n return {\n label: (\n <div style={labelStyle}>\n <Icon size=\"small\" svg={_type.icon} />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n children: isArray\n ? typeManager.getTypeRegistriesWithParentType('array').map((_type) => ({\n label: (\n <div style={labelStyle}>\n <Icon\n size=\"small\"\n svg={typeManager.getDisplayIcon({\n type: 'array',\n items: { type: _type.type },\n })}\n />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n const isDisabled = readonly || disabled;\n\n return (\n <Cascader\n disabled={isDisabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton\n size=\"small\"\n style={{\n ...(isDisabled ? { pointerEvents: 'none' } : {}),\n ...(style || {}),\n }}\n disabled={isDisabled}\n icon={icon}\n />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\n\nTypeSelector.renderKey = 'type-selector-render-key';\nexport const InjectTypeSelector = createInjectMaterial(TypeSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Checkbox, IconButton } from '@douyinfe/semi-ui';\nimport {\n IconExpand,\n IconShrink,\n IconPlus,\n IconChevronDown,\n IconChevronRight,\n IconMinus,\n} from '@douyinfe/semi-icons';\n\nimport { InjectTypeSelector } from '@/components/type-selector';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UITreeItems,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UIRequired,\n UIType,\n} from './styles';\nimport { UIName } from './styles';\nimport { DefaultValueWrapper, UIRow } from './styles';\nimport { usePropertiesEdit } from './hooks';\nimport { DefaultValue } from './default-value';\n\nconst DEFAULT = { type: 'object' };\n\nexport function JsonSchemaEditor(props: {\n value?: IJsonSchema;\n onChange?: (value: IJsonSchema) => void;\n config?: ConfigType;\n className?: string;\n readonly?: boolean;\n}) {\n const { value = DEFAULT, config = {}, onChange: onChangeProps, readonly } = props;\n const { propertyList, onAddProperty, onRemoveProperty, onEditProperty } = usePropertiesEdit(\n value,\n onChangeProps\n );\n\n return (\n <UIContainer className={props.className}>\n <UITreeItems>\n {propertyList.map((_property) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UITreeItems>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? I18n.t('Add')}\n </Button>\n </UIContainer>\n );\n}\n\nfunction PropertyEdit(props: {\n value?: PropertyValueType;\n config?: ConfigType;\n onChange?: (value: PropertyValueType) => void;\n onRemove?: () => void;\n readonly?: boolean;\n $isLast?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const { value, config, readonly, $level = 0, onChange: onChangeProps, onRemove, $isLast } = props;\n\n const [expand, setExpand] = useState(false);\n const [collapse, setCollapse] = useState(false);\n\n const { name, type, items, default: defaultValue, description, isPropertyRequired } = value || {};\n\n const typeSelectorValue = useMemo(() => ({ type, items }), [type, items]);\n\n const { propertyList, canAddField, onAddProperty, onRemoveProperty, onEditProperty } =\n usePropertiesEdit(value, onChangeProps);\n\n const onChange = (key: string, _value: any) => {\n onChangeProps?.({\n ...(value || {}),\n [key]: _value,\n });\n };\n\n const showCollapse = canAddField && propertyList.length > 0;\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={showCollapse}>\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? I18n.t('Input Variable Name')}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <InjectTypeSelector\n value={typeSelectorValue}\n readonly={readonly}\n onChange={(_value) => {\n onChangeProps?.({\n ...(value || {}),\n ..._value,\n });\n }}\n />\n </UIType>\n <UIRequired>\n <Checkbox\n disabled={readonly}\n checked={isPropertyRequired}\n onChange={(e) => onChange('isPropertyRequired', e.target.checked)}\n />\n </UIRequired>\n <UIActions>\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={expand ? <IconShrink size=\"small\" /> : <IconExpand size=\"small\" />}\n onClick={() => {\n setExpand((_expand) => !_expand);\n }}\n />\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n onAddProperty();\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus size=\"small\" />}\n onClick={onRemove}\n />\n </UIActions>\n </UIRow>\n {expand && (\n <UIExpandDetail>\n <UILabel>{config?.descTitle ?? I18n.t('Description')}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={\n config?.descPlaceholder ?? I18n.t('Help LLM to understand the property')\n }\n />\n {$level === 0 && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? I18n.t('Default Value')}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n placeholder={config?.defaultValuePlaceholder ?? I18n.t('Default Value')}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UITreeItemMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $level={$level + 1} // 传递递增的层级\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div`\n /* & .semi-input {\n background-color: #fff;\n border-radius: 6px;\n height: 24px;\n } */\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UIExpandDetail = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const UILabel = styled.div`\n font-size: 12px;\n color: #999;\n font-weight: 400;\n margin-bottom: 2px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIName = styled.div`\n flex-grow: 1;\n`;\n\nexport const UIType = styled.div``;\n\nexport const UIRequired = styled.div``;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n\nexport const DefaultValueWrapper = styled.div`\n margin: 0;\n`;\n\nexport const ConstantInputWrapper = styled.div`\n flex-grow: 1;\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { difference, omit } from 'lodash';\nimport { produce } from 'immer';\nimport { IJsonSchema, type JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n // Get drilldown properties (array.items.items.properties...)\n const drilldownSchema = typeManager.getPropertiesParent(value || {});\n const canAddField = typeManager.canAddField(value || {});\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const newNames = Object.entries(drilldownSchema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([key]) => key);\n\n const oldNames = _list.map((item) => item.name).filter(Boolean) as string[];\n const addNames = difference(newNames, oldNames);\n\n return _list\n .filter((item) => !item.name || newNames.includes(item.name))\n .map((item) => ({\n key: item.key,\n name: item.name,\n isPropertyRequired: drilldownSchema?.required?.includes(item.name || '') || false,\n ...(drilldownSchema?.properties?.[item.name || ''] || item || {}),\n }))\n .concat(\n addNames.map((_name) => ({\n key: genId(),\n name: _name,\n isPropertyRequired: drilldownSchema?.required?.includes(_name) || false,\n ...(drilldownSchema?.properties?.[_name] || {}),\n }))\n );\n });\n }, [drilldownSchema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\n changeVersion.current = changeVersion.current + 1;\n\n setPropertyList((_list) => {\n const next = updater(_list);\n\n // onChange to parent\n const nextProperties: Record<string, IJsonSchema> = {};\n const nextRequired: string[] = [];\n\n for (const _property of next) {\n if (!_property.name) {\n continue;\n }\n\n nextProperties[_property.name] = omit(_property, ['key', 'name', 'isPropertyRequired']);\n\n if (_property.isPropertyRequired) {\n nextRequired.push(_property.name);\n }\n }\n\n onChange?.(\n produce(value || {}, (draft) => {\n const propertiesParent = typeManager.getPropertiesParent(draft);\n\n if (propertiesParent) {\n propertiesParent.properties = nextProperties;\n propertiesParent.required = nextRequired;\n return;\n }\n })\n );\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n // set property list only, not trigger updatePropertyList\n setPropertyList((_list) => [\n ..._list,\n { key: genId(), name: '', type: 'string', extra: { index: _list.length + 1 } },\n ]);\n };\n\n const onRemoveProperty = (key: number) => {\n updatePropertyList((_list) => _list.filter((_property) => _property.key !== key));\n };\n\n const onEditProperty = (key: number, nextValue: PropertyValueType) => {\n updatePropertyList((_list) =>\n _list.map((_property) => (_property.key === key ? nextValue : _property))\n );\n };\n\n useEffect(() => {\n if (!canAddField) {\n setPropertyList([]);\n }\n }, [canAddField]);\n\n return {\n propertyList,\n canAddField,\n onAddProperty,\n onRemoveProperty,\n onEditProperty,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { ConstantInput } from '@/components/constant-input';\n\nimport { ConstantInputWrapper } from './styles';\n\n/**\n * Renders the corresponding default value input component based on different data types.\n * @param props - Component properties, including value, type, placeholder, onChange.\n * @returns Returns the input component of the corresponding type or null.\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n placeholder?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, onChange, placeholder } = props;\n\n return (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? I18n.t('Default value if parameter is not provided')}\n enableMultiLineStr\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React, { useMemo } from 'react';\n\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { PropsType, Strategy as ConstantInputStrategy } from './types';\n\nexport { ConstantInputStrategy };\n\nexport function ConstantInput(props: PropsType) {\n const { value, onChange, schema, strategies, fallbackRenderer, readonly, ...rest } = props;\n\n const typeManager = useTypeManager();\n\n const Renderer = useMemo(() => {\n const strategy = (strategies || []).find((_strategy) => _strategy.hit(schema));\n\n if (!strategy) {\n return typeManager.getTypeBySchema(schema)?.ConstantRenderer;\n }\n\n return strategy?.Renderer;\n }, [strategies, schema]);\n\n if (!Renderer) {\n if (fallbackRenderer) {\n return React.createElement(fallbackRenderer, {\n value,\n onChange,\n readonly,\n ...rest,\n });\n }\n return <Input size=\"small\" disabled placeholder=\"Unsupported type\" />;\n }\n\n return <Renderer value={value} onChange={onChange} readonly={readonly} {...rest} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '@/components/variable-selector';\n\nconst batchVariableSchema: IJsonSchema = {\n type: 'array',\n extra: { weak: true },\n};\n\nexport function BatchVariableSelector(props: VariableSelectorProps) {\n return (\n <PrivateScopeProvider>\n <VariableSelector {...props} includeSchema={batchVariableSchema} />\n </PrivateScopeProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n JsonSchemaUtils,\n IJsonSchema,\n useTypeManager,\n type JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowConstantValue } from '@/typings';\nimport { createInjectMaterial } from '@/shared';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { TypeSelector } from '@/components/type-selector';\nimport { ConstantInput, ConstantInputStrategy } from '@/components/constant-input';\n\nimport { UIContainer, UIMain, UITrigger, UIType } from './styles';\nimport { useIncludeSchema, useRefVariable, useSelectSchema } from './hooks';\n\ninterface PropsType {\n value?: IFlowConstantRefValue;\n onChange: (value?: IFlowConstantRefValue) => void;\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n schema?: IJsonSchema;\n constantProps?: {\n strategies?: ConstantInputStrategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\n}\n\nconst DEFAULT_VALUE: IFlowConstantValue = {\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n};\n\nexport function DynamicValueInput({\n value,\n onChange,\n readonly,\n style,\n schema: schemaFromProps,\n constantProps,\n}: PropsType) {\n const refVariable = useRefVariable(value);\n const [selectSchema, setSelectSchema] = useSelectSchema(schemaFromProps, constantProps, value);\n const includeSchema = useIncludeSchema(schemaFromProps);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const renderTypeSelector = () => {\n if (schemaFromProps) {\n return <TypeSelector value={schemaFromProps} readonly={true} />;\n }\n\n if (value?.type === 'ref') {\n const schema = refVariable?.type ? JsonSchemaUtils.astToSchema(refVariable?.type) : undefined;\n\n return <TypeSelector value={schema} readonly={true} />;\n }\n\n return (\n <TypeSelector\n value={selectSchema}\n onChange={(_v) => {\n setSelectSchema(_v || { type: 'string' });\n\n const schema = _v || { type: 'string' };\n let content = typeManager.getDefaultValue(schema);\n if (_v?.type === 'object') {\n content = '{}';\n }\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n onChange({\n type: 'constant',\n content,\n schema,\n });\n }}\n readonly={readonly}\n />\n );\n };\n\n const renderMain = () => {\n if (value?.type === 'ref') {\n // Display Variable Or Delete\n return (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n );\n }\n\n const constantSchema = schemaFromProps || selectSchema || { type: 'string' };\n\n return (\n <ConstantInput\n value={value?.content}\n onChange={(_v) => onChange({ type: 'constant', content: _v, schema: constantSchema })}\n schema={constantSchema || { type: 'string' }}\n readonly={readonly}\n fallbackRenderer={() => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n strategies={[...(constantProps?.strategies || [])]}\n />\n );\n };\n\n const renderTrigger = () => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.type === 'ref' ? value?.content : undefined}\n onChange={(_v) => onChange({ type: 'ref', content: _v })}\n includeSchema={includeSchema}\n readonly={readonly}\n triggerRender={() => (\n <IconButton disabled={readonly} size=\"small\" icon={<IconSetting size=\"small\" />} />\n )}\n />\n );\n\n return (\n <UIContainer style={style}>\n <UIType>{renderTypeSelector()}</UIType>\n <UIMain>{renderMain()}</UIMain>\n <UITrigger>{renderTrigger()}</UITrigger>\n </UIContainer>\n );\n}\n\nDynamicValueInput.renderKey = 'dynamic-value-input-render-key';\nexport const InjectDynamicValueInput = createInjectMaterial(DynamicValueInput);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n border-radius: 4px;\n border: 1px solid var(--semi-color-border);\n\n overflow: hidden;\n\n background-color: var(--semi-color-fill-0);\n`;\n\nexport const UIMain = styled.div`\n flex-grow: 1;\n overflow: hidden;\n min-width: 0;\n border-left: 1px solid var(--semi-color-border);\n border-right: 1px solid var(--semi-color-border);\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea {\n padding: 2px 6px;\n border: none;\n border-radius: 0;\n word-break: break-all;\n }\n`;\n\nexport const UIType = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '@/typings';\n\nexport function useRefVariable(value?: IFlowConstantRefValue) {\n const available = useScopeAvailable();\n const refVariable = useMemo(() => {\n if (value?.type === 'ref') {\n return available.getByKeyPath(value.content);\n }\n }, [value, available]);\n\n return refVariable;\n}\n\nexport function useSelectSchema(\n schemaFromProps?: IJsonSchema,\n constantProps?: {\n schema?: IJsonSchema;\n },\n value?: IFlowConstantRefValue\n) {\n let defaultSelectSchema = schemaFromProps || constantProps?.schema || { type: 'string' };\n if (value?.type === 'constant') {\n defaultSelectSchema = value?.schema || defaultSelectSchema;\n }\n\n const changeVersion = useRef(0);\n const effectVersion = useRef(0);\n\n const [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n useEffect(() => {\n effectVersion.current += 1;\n if (changeVersion.current === effectVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n if (value?.type === 'constant' && value?.schema) {\n setSelectSchema(value?.schema);\n return;\n }\n }, [value]);\n\n const setSelectSchemaWithVersionUpdate = (schema: IJsonSchema) => {\n setSelectSchema(schema);\n changeVersion.current += 1;\n };\n\n return [selectSchema, setSelectSchemaWithVersionUpdate] as const;\n}\n\nexport function useIncludeSchema(schemaFromProps?: IJsonSchema) {\n const includeSchema = useMemo(() => {\n if (!schemaFromProps) {\n return;\n }\n if (schemaFromProps?.type === 'number') {\n return [schemaFromProps, { type: 'integer' }];\n }\n return { ...schemaFromProps, extra: { ...schemaFromProps?.extra, weak: true } };\n }, [schemaFromProps]);\n\n return includeSchema;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { ConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\nimport { defaultOpConfigs, defaultRules } from './constants';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function ConditionRow({\n style,\n value,\n onChange,\n readonly,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left, ruleConfig.rules);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>\n <InjectVariableSelector\n readonly={readonly}\n style={{ width: '100%' }}\n value={left?.content}\n onChange={(v) =>\n onChange({\n ...value,\n left: {\n type: 'ref',\n content: v,\n },\n })\n }\n />\n </UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nConditionRow.defaultRules = defaultRules;\nConditionRow.defaultOpConfigs = defaultOpConfigs;\n\nexport { type ConditionRowValueType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { JsonSchemaUtils, JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nimport { IRules } from '../types';\nimport { defaultRules } from '../constants';\n\nexport function useRule(left?: IFlowRefValue, userRules?: IRules) {\n const available = useScopeAvailable();\n\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const variable = useMemo(() => {\n if (!left) return undefined;\n return available.getByKeyPath(left.content);\n }, [available, left]);\n\n const rule = useMemo(() => {\n if (!variable) return undefined;\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldown: false });\n\n return rules[schema?.type as JsonSchemaBasicType];\n }, [variable?.type, rules]);\n\n return { rule };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IRules, Op, OpConfigs } from './types';\n\nexport const defaultRules: IRules = {\n string: {\n [Op.EQ]: 'string',\n [Op.NEQ]: 'string',\n [Op.CONTAINS]: 'string',\n [Op.NOT_CONTAINS]: 'string',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n number: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n integer: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n boolean: {\n [Op.EQ]: 'boolean',\n [Op.NEQ]: 'boolean',\n [Op.IS_TRUE]: null,\n [Op.IS_FALSE]: null,\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n object: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n array: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n [Op.CONTAINS]: 'array',\n [Op.NOT_CONTAINS]: 'array',\n [Op.EQ]: 'array',\n [Op.NEQ]: 'array',\n },\n map: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n};\n\nexport const defaultOpConfigs: OpConfigs = {\n [Op.EQ]: {\n label: 'Equal',\n abbreviation: '=',\n },\n [Op.NEQ]: {\n label: 'Not Equal',\n abbreviation: '≠',\n },\n [Op.GT]: {\n label: 'Greater Than',\n abbreviation: '>',\n },\n [Op.GTE]: {\n label: 'Greater Than or Equal',\n abbreviation: '>=',\n },\n [Op.LT]: {\n label: 'Less Than',\n abbreviation: '<',\n },\n [Op.LTE]: {\n label: 'Less Than or Equal',\n abbreviation: '<=',\n },\n [Op.IN]: {\n label: 'In',\n abbreviation: '∈',\n },\n [Op.NIN]: {\n label: 'Not In',\n abbreviation: '∉',\n },\n [Op.CONTAINS]: {\n label: 'Contains',\n abbreviation: '⊇',\n },\n [Op.NOT_CONTAINS]: {\n label: 'Not Contains',\n abbreviation: '⊉',\n },\n [Op.IS_EMPTY]: {\n label: 'Is Empty',\n abbreviation: '=',\n rightDisplay: 'Empty',\n },\n [Op.IS_NOT_EMPTY]: {\n label: 'Is Not Empty',\n abbreviation: '≠',\n rightDisplay: 'Empty',\n },\n [Op.IS_TRUE]: {\n label: 'Is True',\n abbreviation: '=',\n rightDisplay: 'True',\n },\n [Op.IS_FALSE]: {\n label: 'Is False',\n abbreviation: '=',\n rightDisplay: 'False',\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, OpConfigs } from '../types';\nimport { defaultOpConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { DBConditionOptionType, DBConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useOp } from './hooks/use-op';\nimport { useLeft } from './hooks/use-left';\n\ninterface PropTypes {\n value?: DBConditionRowValueType;\n onChange: (value?: DBConditionRowValueType) => void;\n style?: React.CSSProperties;\n options?: DBConditionOptionType[];\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function DBConditionRow({\n style,\n value,\n onChange,\n readonly,\n options,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n\n const { rule, renderDBOptionSelect } = useLeft({\n left,\n options,\n onChange: (leftKey) => onChange({ ...value, left: leftKey }),\n readonly,\n userRules: ruleConfig.rules,\n });\n\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>{renderDBOptionSelect()}</UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nexport { type DBConditionRowValueType, type DBConditionOptionType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Select } from '@douyinfe/semi-ui';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOptionLabel = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const UISelect = styled(Select)`\n & .semi-select-selection {\n margin-left: 5px;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { ConditionRow } from '@/components';\n\nimport { IRule, OpConfigs } from '../types';\n\nconst defaultOpConfigs = ConditionRow.defaultOpConfigs;\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\nimport React from 'react';\n\nimport { JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\nimport { Icon } from '@douyinfe/semi-ui';\n\nimport { ConditionRow } from '@/components';\n\nimport { DBConditionOptionType, IRules } from '../types';\nimport { UIOptionLabel, UISelect } from '../styles';\n\nconst defaultRules = ConditionRow.defaultRules;\n\ninterface HookParams {\n left?: string;\n options?: DBConditionOptionType[];\n userRules?: IRules;\n readonly?: boolean;\n onChange: (leftKey: string) => void;\n}\n\nexport function useLeft({ left, options, userRules, readonly, onChange }: HookParams) {\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const rule = useMemo(() => {\n if (!left) return undefined;\n\n const option = options?.find((item) => item.value === left);\n\n if (!option?.schema?.type) {\n return undefined;\n }\n\n return rules[option.schema.type];\n }, [left, options, rules]);\n\n const renderDBOptionSelect = () => (\n <UISelect\n disabled={readonly}\n size=\"small\"\n style={{ width: '100%' }}\n value={left}\n onChange={(v) => onChange(v as string)}\n optionList={\n options?.map((item) => ({\n label: (\n <UIOptionLabel>\n <Icon size=\"small\" svg={typeManager.getDisplayIcon(item.schema)} />\n {item.label}\n </UIOptionLabel>\n ),\n value: item.value,\n })) || []\n }\n />\n );\n\n return { rule, renderDBOptionSelect };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { useObjectList } from '@/hooks';\nimport { InjectVariableSelector } from '@/components/variable-selector';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function BatchOutputs(props: PropsType) {\n const { readonly, style } = props;\n\n const { list, add, updateKey, updateValue, remove } = useObjectList(props);\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <Input\n style={{ width: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n />\n <InjectVariableSelector\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value?.content}\n onChange={(v) => updateValue(item.id, { type: 'ref', content: v })}\n />\n <Button\n disabled={readonly}\n icon={<IconDelete />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={() => add()}>\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { nanoid } from 'nanoid';\nimport { difference, get, isObject, set } from 'lodash';\n\nfunction genId() {\n return nanoid();\n}\n\ninterface ListItem<ValueType> {\n id: string;\n key?: string;\n value?: ValueType;\n}\n\ntype ObjectType<ValueType> = Record<string, ValueType | undefined>;\n\nexport function useObjectList<ValueType>({\n value,\n onChange,\n sortIndexKey,\n}: {\n value?: ObjectType<ValueType>;\n onChange: (value?: ObjectType<ValueType>) => void;\n sortIndexKey?: string | ((item: ValueType | undefined) => string);\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n const getSortIndex = (value?: ValueType) => {\n if (typeof sortIndexKey === 'function') {\n return get(value, sortIndexKey(value)) || 0;\n }\n return get(value, sortIndexKey || '') || 0;\n };\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => getSortIndex(a[1]) - getSortIndex(b[1]))\n .map(([key]) => key);\n\n const oldKeys = _prevList.map((item) => item.key).filter(Boolean) as string[];\n const addKeys = difference(newKeys, oldKeys);\n\n return _prevList\n .filter((item) => !item.key || newKeys.includes(item.key))\n .map((item) => ({\n id: item.id,\n key: item.key,\n value: item.key ? value?.[item.key!] : item.value,\n }))\n .concat(\n addKeys.map((_key) => ({\n id: genId(),\n key: _key,\n value: value?.[_key],\n }))\n );\n });\n }, [value]);\n\n const add = (defaultValue?: ValueType) => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n value: defaultValue,\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n value,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList\n .filter((item) => item.key)\n .map((item) => [item.key!, item.value])\n .map((_res, idx) => {\n const indexKey =\n typeof sortIndexKey === 'function'\n ? sortIndexKey(_res[1] as ValueType | undefined)\n : sortIndexKey;\n\n if (isObject(_res[1]) && indexKey) {\n set(_res[1], indexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n key,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n const remove = (itemId: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.filter((_item) => _item.id !== itemId);\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n return { list, add, updateKey, updateValue, remove };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazy } from 'react';\n\nexport const PromptEditorWithVariables = lazy(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithVariables }))\n);\n\nexport type { PromptEditorWithVariablesProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazy } from 'react';\n\nexport const PromptEditorWithInputs = lazy(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithInputs }))\n);\n\nexport type { PromptEditorWithInputsProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazy } from 'react';\n\nexport const JsonEditorWithVariables = lazy(() =>\n import('./editor').then((module) => ({ default: module.JsonEditorWithVariables }))\n);\n\nexport type { JsonEditorWithVariablesProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowValue } from '@/typings';\nimport { useObjectList } from '@/hooks';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function InputsValues({\n value,\n onChange,\n style,\n readonly,\n constantProps,\n schema,\n hasError,\n}: PropsType) {\n const { list, updateKey, updateValue, remove, add } = useObjectList<IFlowValue | undefined>({\n value,\n onChange,\n sortIndexKey: 'extra.index',\n });\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value as IFlowConstantRefValue}\n onChange={(v) => updateValue(item.id, v)}\n schema={schema}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies: [...(constantProps?.strategies || [])],\n }}\n />\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() =>\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n })\n }\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { HorizontalLine, TreeItem, TreeLevel, TreeRow, TreeTitle } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n parentKey?: string;\n depth?: number;\n drilldown?: boolean;\n showIcon?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplaySchemaTree(props: Omit<PropsType, 'parentKey' | 'depth'>) {\n return <SchemaTree {...props} />;\n}\n\nfunction SchemaTree(props: PropsType) {\n const {\n value: schema = {},\n drilldown = true,\n depth = 0,\n showIcon = true,\n parentKey = '',\n } = props || {};\n\n const typeManager = useTypeManager();\n\n const config = typeManager.getTypeBySchema(schema);\n const title = typeManager.getComplexText(schema);\n const icon = typeManager?.getDisplayIcon(schema);\n let properties: IJsonSchema['properties'] =\n drilldown && config ? config.getTypeSchemaProperties(schema) : {};\n const childEntries = Object.entries(properties || {});\n\n return (\n <TreeItem depth={depth} key={parentKey || 'root'}>\n <TreeRow>\n {depth !== 0 && <HorizontalLine />}\n {showIcon &&\n icon &&\n React.cloneElement(icon, {\n className: 'tree-icon',\n })}\n <TreeTitle>\n {parentKey ? (\n <>\n {`${parentKey} (`}\n {title}\n {')'}\n </>\n ) : (\n title\n )}\n </TreeTitle>\n </TreeRow>\n {childEntries?.length ? (\n <TreeLevel>\n {childEntries.map(([key, value]) => (\n <SchemaTree key={key} {...props} parentKey={key} value={value} depth={depth + 1} />\n ))}\n </TreeLevel>\n ) : null}\n </TreeItem>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const TreeRow = styled.div`\n display: flex;\n align-items: center;\n\n .tree-icon {\n margin-right: 8px;\n width: 14px;\n height: 14px;\n }\n\n height: 27px;\n white-space: nowrap;\n`;\n\nexport const HorizontalLine = styled.div`\n position: relative;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &::after {\n top: 0px;\n right: 6px;\n width: 15px;\n height: 1px;\n }\n`;\n\nexport const TreeTitle = styled.div`\n // overflow: hidden;\n // text-overflow: ellipsis;\n`;\n\nexport const TreeLevel = styled.div`\n padding-left: 30px;\n position: relative;\n\n /* &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n top: 0px;\n bottom: 0px;\n left: -22px;\n width: 1px;\n } */\n`;\n\nexport const TreeItem = styled.div<{ depth: number }>`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &:not(:last-child)::before {\n width: 1px;\n top: 0;\n bottom: 0;\n left: -22px;\n }\n\n &:last-child::before {\n width: 1px;\n top: 0;\n height: 14px;\n left: -22px;\n }\n\n ${(props) =>\n props.depth === 0 &&\n css`\n &::before {\n width: 0px !important;\n }\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect } from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useCurrentScope, useRefresh } from '@flowgram.ai/editor';\n\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\nimport { DisplayOutputsWrapper } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n showIconInTree?: boolean;\n displayFromScope?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayOutputs({ value, showIconInTree, displayFromScope }: PropsType) {\n const scope = useCurrentScope();\n const refresh = useRefresh();\n\n useEffect(() => {\n if (!displayFromScope) {\n return () => null;\n }\n\n const disposable = scope.output.onListOrAnyVarChange(() => {\n refresh();\n });\n\n return () => {\n disposable.dispose();\n };\n }, [displayFromScope]);\n\n const properties: IJsonSchema['properties'] = displayFromScope\n ? scope.output.variables?.reduce((acm, curr) => {\n acm = {\n ...acm,\n ...(JsonSchemaUtils.astToSchema(curr.type)?.properties || {}),\n };\n return acm;\n }, {})\n : value?.properties || {};\n\n const childEntries = Object.entries(properties || {});\n\n return (\n <DisplayOutputsWrapper>\n {childEntries.map(([key, schema]) => (\n <DisplaySchemaTag\n key={key}\n title={key}\n value={schema}\n showIconInTree={showIconInTree}\n warning={!schema}\n />\n ))}\n </DisplayOutputsWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Popover } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\nimport { DisplaySchemaTree } from '@/components/display-schema-tree';\n\nimport { PopoverContent, StyledTag, TitleSpan } from './styles';\n\ninterface PropsType {\n title?: JSX.Element | string;\n value?: IJsonSchema;\n showIconInTree?: boolean;\n warning?: boolean;\n}\n\nexport function DisplaySchemaTag({ value = {}, showIconInTree, title, warning }: PropsType) {\n const typeManager = useTypeManager();\n const icon =\n typeManager?.getDisplayIcon(value) || typeManager.getDisplayIcon({ type: 'unknown' });\n\n return (\n <Popover\n content={\n <PopoverContent>\n <DisplaySchemaTree value={value} typeManager={typeManager} showIcon={showIconInTree} />\n </PopoverContent>\n }\n >\n <StyledTag color={warning ? 'amber' : 'white'}>\n {icon &&\n React.cloneElement(icon, {\n className: 'tag-icon',\n })}\n {title && <TitleSpan>{title}</TitleSpan>}\n </StyledTag>\n </Popover>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const PopoverContent = styled.div`\n padding: 10px;\n`;\n\nexport const StyledTag = styled(Tag)`\n padding: 4px;\n\n .tag-icon {\n width: 12px;\n height: 12px;\n }\n`;\n\nexport const TitleSpan = styled.span`\n display: inline-block;\n margin-left: 4px;\n margin-top: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayOutputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\ninterface PropsType {\n value?: IFlowValue;\n title?: JSX.Element | string;\n showIconInTree?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayFlowValue({ value, title, showIconInTree }: PropsType) {\n const available = useScopeAvailable();\n\n const variable = value?.type === 'ref' ? available.getByKeyPath(value?.content) : undefined;\n\n const schema = useMemo(() => {\n if (value?.type === 'ref') {\n return JsonSchemaUtils.astToSchema(variable?.type);\n }\n if (value?.type === 'template') {\n return { type: 'string' };\n }\n if (value?.type === 'constant') {\n return FlowValueUtils.inferConstantJsonSchema(value);\n }\n\n return { type: 'unknown' };\n }, [value, variable?.hash]);\n\n return (\n <DisplaySchemaTag\n title={title}\n value={schema}\n showIconInTree={showIconInTree}\n warning={value?.type === 'ref' && !variable}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\nimport { DisplayFlowValue } from '@/components/display-flow-value';\n\nimport { DisplayInputsWrapper } from './styles';\nimport { DisplaySchemaTag } from '../display-schema-tag';\n\ninterface PropsType {\n value?: any;\n showIconInTree?: boolean;\n}\n\nexport function DisplayInputsValues({ value, showIconInTree }: PropsType) {\n const childEntries = Object.entries(value || {});\n\n return (\n <DisplayInputsWrapper>\n {childEntries.map(([key, value]) => {\n if (FlowValueUtils.isFlowValue(value)) {\n return (\n <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n );\n }\n\n if (isPlainObject(value)) {\n return (\n <DisplayInputsValueAllInTag\n key={key}\n title={key}\n value={value}\n showIconInTree={showIconInTree}\n />\n );\n }\n\n return null;\n })}\n </DisplayInputsWrapper>\n );\n}\n\nexport function DisplayInputsValueAllInTag({\n value,\n title,\n showIconInTree,\n}: PropsType & {\n title: string;\n}) {\n const available = useScopeAvailable();\n\n const schema = useMemo(\n () => FlowValueUtils.inferJsonSchema(value, available.scope),\n [available.version, value]\n );\n\n return <DisplaySchemaTag title={title} value={schema} showIconInTree={showIconInTree} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayInputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { FieldArray, FieldArrayRenderProps } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { AssignRow, AssignValueType } from '@/components/assign-row';\n\ninterface AssignRowsProps {\n name: string;\n readonly?: boolean;\n}\n\nexport function AssignRows(props: AssignRowsProps) {\n const { name, readonly } = props;\n\n return (\n <FieldArray name={name}>\n {({ field }: FieldArrayRenderProps<AssignValueType | undefined>) => (\n <>\n {field.map((childField, index) => (\n <AssignRow\n key={childField.key}\n readonly={readonly}\n value={childField.value}\n onChange={(value) => {\n childField.onChange(value);\n }}\n onDelete={() => field.remove(index)}\n />\n ))}\n <div style={{ display: 'flex', gap: 5 }}>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'assign' })}\n >\n Assign\n </Button>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'declare' })}\n >\n Declaration\n </Button>\n </div>\n </>\n )}\n </FieldArray>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconMinus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue } from '@/typings';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { AssignRowProps } from './types';\nimport { BlurInput } from './components/blur-input';\n\nexport function AssignRow(props: AssignRowProps) {\n const {\n value = {\n operator: 'assign',\n },\n onChange,\n onDelete,\n readonly,\n } = props;\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: 5 }}>\n <div style={{ width: 150, minWidth: 150, maxWidth: 150 }}>\n {value?.operator === 'assign' ? (\n <InjectVariableSelector\n style={{ width: '100%', height: 26 }}\n value={value?.left?.content}\n config={{ placeholder: 'Select Left' }}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: { type: 'ref', content: v },\n })\n }\n />\n ) : (\n <BlurInput\n style={{ height: 26 }}\n size=\"small\"\n placeholder=\"Input Name\"\n value={value?.left}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: v,\n })\n }\n />\n )}\n </div>\n <div style={{ flexGrow: 1 }}>\n <InjectDynamicValueInput\n readonly={readonly}\n value={value?.right as IFlowConstantRefValue | undefined}\n onChange={(v) =>\n onChange?.({\n ...value,\n right: v,\n })\n }\n />\n </div>\n {onDelete && (\n <div>\n <IconButton\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus />}\n onClick={() => onDelete?.()}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { AssignValueType } from './types';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\nimport { PropsType } from './types';\nimport { UITreeItems } from './styles';\nimport { InputValueRow } from './row';\n\nexport function InputsValuesTree(props: PropsType) {\n const { value, onChange, readonly, hasError, constantProps } = props;\n\n const { list, updateKey, updateValue, remove, add } = useObjectList({\n value,\n onChange,\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n return (\n <div>\n <UITreeItems>\n {list.map((item) => (\n <InputValueRow\n key={item.id}\n keyName={item.key}\n value={item.value}\n onUpdateKey={(key) => updateKey(item.id, key)}\n onUpdateValue={(value) => updateValue(item.id, value)}\n onRemove={() => remove(item.id)}\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n />\n ))}\n </UITreeItems>\n <Button\n style={{ marginTop: 10, marginLeft: 16 }}\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n }}\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div``;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { IconButton, Input } from '@douyinfe/semi-ui';\nimport { IconChevronDown, IconChevronRight, IconDelete } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantValue } from '@/typings';\nimport { ConstantInputStrategy } from '@/components/constant-input';\n\nimport { PropsType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIRow,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UITreeItems,\n} from './styles';\nimport { useChildList } from './hooks/use-child-list';\nimport { InjectDynamicValueInput } from '../dynamic-value-input';\nimport { BlurInput } from '../blur-input';\n\nconst AddObjectChildStrategy: ConstantInputStrategy = {\n hit: (schema) => schema.type === 'object',\n Renderer: () => (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={I18n.t('Configure via child fields')}\n />\n ),\n};\n\nexport function InputValueRow(\n props: {\n keyName?: string;\n value?: any;\n onUpdateKey: (key: string) => void;\n onUpdateValue: (value: any) => void;\n onRemove?: () => void;\n $isLast?: boolean;\n $level?: number;\n } & Pick<PropsType, 'constantProps' | 'hasError' | 'readonly'>\n) {\n const {\n keyName,\n value,\n $level = 0,\n onUpdateKey,\n onUpdateValue,\n $isLast,\n onRemove,\n constantProps,\n hasError,\n readonly,\n } = props;\n const [collapse, setCollapse] = useState(false);\n\n const { canAddField, hasChildren, list, add, updateKey, updateValue, remove } = useChildList(\n value,\n onUpdateValue\n );\n\n const strategies = useMemo(\n () => [...(hasChildren ? [AddObjectChildStrategy] : []), ...(constantProps?.strategies || [])],\n [hasChildren, constantProps?.strategies]\n );\n\n const flowDisplayValue = useMemo(\n () =>\n hasChildren\n ? ({\n type: 'constant',\n schema: { type: 'object' },\n } as IFlowConstantValue)\n : value,\n [hasChildren, value]\n );\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={hasChildren}>\n {hasChildren && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={keyName}\n onChange={(v) => onUpdateKey?.(v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={flowDisplayValue}\n onChange={(v) => onUpdateValue(v)}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies,\n }}\n />\n <UIActions>\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => onRemove?.()}\n />\n </UIActions>\n </UIRow>\n </UITreeItemMain>\n {hasChildren && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {list.map((_item, index) => (\n <InputValueRow\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n key={_item.id}\n keyName={_item.key}\n value={_item.value}\n $level={$level + 1} // 传递递增的层级\n onUpdateValue={(_v) => {\n updateValue(_item.id, _v);\n }}\n onUpdateKey={(k) => {\n updateKey(_item.id, k);\n }}\n onRemove={() => {\n remove(_item.id);\n }}\n $isLast={index === list.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\ninterface ListItem {\n id: string;\n key?: string;\n value?: any;\n}\n\nexport function useChildList(\n value?: any,\n onChange?: (value: any) => void\n): {\n canAddField: boolean;\n hasChildren: boolean;\n list: ListItem[];\n add: (defaultValue?: any) => void;\n updateKey: (id: string, key: string) => void;\n updateValue: (id: string, value: any) => void;\n remove: (id: string) => void;\n} {\n const canAddField = useMemo(() => {\n if (!isPlainObject(value)) {\n return false;\n }\n\n if (FlowValueUtils.isFlowValue(value)) {\n // Constant Object Value Can Add child fields\n return FlowValueUtils.isConstant(value) && value?.schema?.type === 'object';\n }\n\n return true;\n }, [value]);\n\n const objectListValue = useMemo(() => {\n if (isPlainObject(value)) {\n if (FlowValueUtils.isFlowValue(value)) {\n return undefined;\n }\n return value;\n }\n return undefined;\n }, [value]);\n\n const { list, add, updateKey, updateValue, remove } = useObjectList<any>({\n value: objectListValue,\n onChange: (value) => {\n onChange?.(value);\n },\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n const hasChildren = useMemo(\n () => canAddField && (list.length > 0 || Object.keys(objectListValue || {}).length > 0),\n [canAddField, list.length, Object.keys(objectListValue || {}).length]\n );\n\n return {\n canAddField,\n hasChildren,\n list,\n add,\n updateKey,\n updateValue,\n remove,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchInputEffect: EffectOptions[] = createEffectFromVariableProvider({\n private: true,\n parse: (value: IFlowRefValue, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}_locals`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: [\n ASTFactory.createProperty({\n key: 'item',\n initializer: ASTFactory.createEnumerateExpression({\n enumerateFor: ASTFactory.createKeyPathExpression({\n keyPath: value.content || [],\n }),\n }),\n }),\n ASTFactory.createProperty({\n key: 'index',\n type: ASTFactory.createNumber(),\n }),\n ],\n }),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\n/**\n * Auto rename ref when form item's key is renamed\n *\n * Example:\n *\n * formMeta: {\n * effects: {\n * \"inputsValues\": autoRenameRefEffect,\n * }\n * }\n */\nexport const autoRenameRefEffect: EffectOptions[] = [\n {\n event: DataEvent.onValueInit,\n effect: ((params) => {\n const { context, form, name } = params;\n\n const renameService = context.node.getService(VariableFieldKeyRenameService);\n\n const disposable = renameService.onRename(({ before, after }) => {\n const beforeKeyPath = [\n ...before.parentFields.map((_field) => _field.key).reverse(),\n before.key,\n ];\n const afterKeyPath = [\n ...after.parentFields.map((_field) => _field.key).reverse(),\n after.key,\n ];\n\n // traverse rename refs inside form item 'name'\n traverseRef(name, form.getValueIn(name), (_drilldownName, _v) => {\n if (_v.type === 'ref') {\n // ref auto rename\n if (isKeyPathMatch(_v.content, beforeKeyPath)) {\n _v.content = [...afterKeyPath, ...(_v.content || [])?.slice(beforeKeyPath.length)];\n form.setValueIn(_drilldownName, _v);\n }\n } else if (_v.type === 'template') {\n // template auto rename\n const templateKeyPaths = FlowValueUtils.getTemplateKeyPaths(_v);\n let hasMatch = false;\n\n templateKeyPaths.forEach((_keyPath) => {\n if (isKeyPathMatch(_keyPath, beforeKeyPath)) {\n hasMatch = true;\n const nextKeyPath = [\n ...afterKeyPath,\n ...(_keyPath || [])?.slice(beforeKeyPath.length),\n ];\n _v.content = _v.content?.replace(\n `{{${_keyPath.join('.')}}`,\n `{{${nextKeyPath.join('.')}}`\n );\n }\n });\n\n if (hasMatch) {\n form.setValueIn(_drilldownName, { ..._v });\n }\n }\n });\n });\n\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n\n/**\n * If ref value's keyPath is the under as targetKeyPath\n * @param value\n * @param targetKeyPath\n * @returns\n */\nfunction isKeyPathMatch(keyPath: string[] = [], targetKeyPath: string[]) {\n return targetKeyPath.every((_key, index) => _key === keyPath[index]);\n}\n\n/**\n * Traverse value to find ref\n * @param value\n * @param options\n * @returns\n */\nfunction traverseRef(\n name: string,\n value: any,\n cb: (name: string, _v: IFlowRefValue | IFlowTemplateValue) => void\n) {\n for (const { value: _v, path } of FlowValueUtils.traverse(value, {\n includeTypes: ['ref', 'template'],\n path: name,\n })) {\n cb(path, _v as IFlowRefValue | IFlowTemplateValue);\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nexport const provideJsonSchemaOutputs: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: IJsonSchema, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title') || ctx.node.id,\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: JsonSchemaUtils.schemaToAST(value),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n FlowNodeRegistry,\n FlowNodeVariableData,\n} from '@flowgram.ai/editor';\n\nexport const syncVariableTitle: EffectOptions[] = [\n {\n event: DataEvent.onValueChange,\n effect: (({ value, context }) => {\n context.node.getData(FlowNodeVariableData).allScopes.forEach((_scope) => {\n _scope.output.variables.forEach((_var) => {\n _var.updateMeta({\n ...(_var.meta || {}),\n title: value || context.node.id,\n icon: context.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n });\n });\n });\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isEmpty } from 'lodash';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n getNodeScope,\n getNodePrivateScope,\n} from '@flowgram.ai/editor';\n\nexport const validateWhenVariableSync = ({\n scope,\n}: {\n scope?: 'private' | 'public';\n} = {}): EffectOptions[] => [\n {\n event: DataEvent.onValueInit,\n effect: (({ context, form }) => {\n const nodeScope =\n scope === 'private' ? getNodePrivateScope(context.node) : getNodeScope(context.node);\n\n const disposable = nodeScope.available.onListOrAnyVarChange(() => {\n if (!isEmpty(form.state.errors)) {\n form.validate();\n }\n });\n\n return () => disposable.dispose();\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseVariableField,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefValueChange(({ name, variable, form }) => {\n * const schema = JsonSchemaUtils.astToSchema(variable?.type);\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefValueChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { variable?: BaseVariableField }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath(\n value?.content || [],\n (v) => {\n cb({ ...params, variable: v });\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n BaseType,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefSchemaChange(({ name, schema, form }) => {\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefSchemaChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { schema?: IJsonSchema }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath<BaseType | undefined>(\n value?.content || [],\n (_type) => {\n cb({ ...params, schema: JsonSchemaUtils.astToSchema(_type) });\n },\n {\n selector: (_v) => _v?.type,\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodePrivateScope,\n getNodeScope,\n ScopeChainTransformService,\n type EffectOptions,\n type FormPluginCreator,\n FlowNodeScopeType,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchOutputsEffect: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: Record<string, IFlowRefValue>, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: Object.entries(value).map(([_key, value]) =>\n ASTFactory.createProperty({\n key: _key,\n initializer: ASTFactory.createWrapArrayExpression({\n wrapFor: ASTFactory.createKeyPathExpression({\n keyPath: value?.content || [],\n }),\n }),\n })\n ),\n }),\n }),\n ],\n});\n\n/**\n * Free Layout only right now\n */\nexport const createBatchOutputsFormPlugin: FormPluginCreator<{ outputKey: string }> =\n defineFormPluginCreator({\n name: 'batch-outputs-plugin',\n onSetupFormMeta({ mergeEffect }, { outputKey }) {\n mergeEffect({\n [outputKey]: provideBatchOutputsEffect,\n });\n },\n onInit(ctx, { outputKey }) {\n const chainTransformService = ctx.node.getService(ScopeChainTransformService);\n\n const batchNodeType = ctx.node.flowNodeType;\n\n const transformerId = `${batchNodeType}-outputs`;\n\n if (chainTransformService.hasTransformer(transformerId)) {\n return;\n }\n\n chainTransformService.registerTransformer(transformerId, {\n transformCovers: (covers, ctx) => {\n const node = ctx.scope.meta?.node;\n\n // Child Node's variable can cover parent\n if (node?.parent?.flowNodeType === batchNodeType) {\n return [...covers, getNodeScope(node.parent)];\n }\n\n return covers;\n },\n transformDeps(scopes, ctx) {\n const scopeMeta = ctx.scope.meta;\n\n if (scopeMeta?.type === FlowNodeScopeType.private) {\n return scopes;\n }\n\n const node = scopeMeta?.node;\n\n // Public of Loop Node depends on child Node\n if (node?.flowNodeType === batchNodeType) {\n // Get all child blocks\n const childBlocks = node.blocks;\n\n // public scope of all child blocks\n return [\n getNodePrivateScope(node),\n ...childBlocks.map((_childBlock) => getNodeScope(_childBlock)),\n ];\n }\n\n return scopes;\n },\n });\n },\n });\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { get, set } from 'lodash';\nimport { defineFormPluginCreator, getNodePrivateScope, getNodeScope } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\n\ninterface InputConfig {\n sourceKey: string;\n targetKey: string;\n scope?: 'private' | 'public';\n}\n\nexport const createInferInputsPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit }, { sourceKey, targetKey, scope }) {\n if (!sourceKey || !targetKey) {\n return;\n }\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n targetKey,\n FlowValueUtils.inferJsonSchema(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { set, uniqBy } from 'lodash';\nimport { JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowValue } from '@/typings';\n\ntype AssignValueType =\n | {\n operator: 'assign';\n left?: IFlowRefValue;\n right?: IFlowValue;\n }\n | {\n operator: 'declare';\n left?: string;\n right?: IFlowValue;\n };\n\ninterface InputConfig {\n assignKey: string;\n outputKey: string;\n}\n\nexport const createInferAssignPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit, mergeEffect }, { assignKey, outputKey }) {\n if (!assignKey || !outputKey) {\n return;\n }\n\n mergeEffect({\n [assignKey]: createEffectFromVariableProvider({\n parse: (value: AssignValueType[], ctx) => {\n const declareRows = uniqBy(\n value.filter((_v) => _v.operator === 'declare' && _v.left && _v.right),\n 'left'\n );\n\n return [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: declareRows.map((_v) =>\n ASTFactory.createProperty({\n key: _v.left as string,\n type:\n _v.right?.type === 'constant'\n ? JsonSchemaUtils.schemaToAST(_v.right?.schema || {})\n : undefined,\n initializer:\n _v.right?.type === 'ref'\n ? ASTFactory.createKeyPathExpression({\n keyPath: _v.right?.content || [],\n })\n : {},\n })\n ),\n }),\n }),\n ];\n },\n }),\n });\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n outputKey,\n JsonSchemaUtils.astToSchema(getNodeScope(ctx.node).output.variables?.[0]?.type)\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isNil } from 'lodash';\nimport { FeedbackLevel, FlowNodeEntity, getNodeScope } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\ninterface Context {\n node: FlowNodeEntity;\n required?: boolean;\n errorMessages?: {\n required?: string;\n unknownVariable?: string;\n };\n}\n\nexport function validateFlowValue(value: IFlowValue | undefined, ctx: Context) {\n const { node, required, errorMessages } = ctx;\n\n const {\n required: requiredMessage = 'Field is required',\n unknownVariable: unknownVariableMessage = 'Unknown Variable',\n } = errorMessages || {};\n\n if (required && (isNil(value) || isNil(value?.content) || value?.content === '')) {\n return {\n level: FeedbackLevel.Error,\n message: requiredMessage,\n };\n }\n\n if (value?.type === 'ref') {\n const variable = getNodeScope(node).available.getByKeyPath(value?.content || []);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n\n if (value?.type === 'template') {\n const allRefs = FlowValueUtils.getTemplateKeyPaths(value);\n\n for (const ref of allRefs) {\n const variable = getNodeScope(node).available.getByKeyPath(ref);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["_type","value","React","useMemo","useState","I18n","IconButton","React","value","React","Icon","useEffect","useState","useTypeManager","React","React","useMemo","Input","useMemo","React","Input","React","React","I18n","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","useTypeManager","IconButton","styled","UIContainer","UIType","useEffect","useMemo","useRef","useState","useTypeManager","React","JsonSchemaUtils","IconButton","UIContainer","UIType","React","useMemo","I18n","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","I18n","Button","useMemo","I18n","React","Button","useMemo","React","UIContainer","Input","I18n","React","useMemo","I18n","Input","styled","Select","UIContainer","UIOperator","UILeft","UIRight","UIValues","React","useMemo","I18n","Button","Select","IconChevronDownStroked","defaultOpConfigs","useOp","useMemo","I18n","React","Select","Button","IconChevronDownStroked","useMemo","React","useTypeManager","Icon","defaultRules","useMemo","useTypeManager","React","Icon","defaultRuleConfig","useOp","useMemo","React","UIContainer","UIOperator","UIValues","UILeft","UIRight","Input","I18n","React","I18n","Button","Input","IconPlus","useEffect","useRef","useState","difference","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","I18n","lazy","lazy","React","I18n","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","UIRows","UIRow","I18n","IconButton","IconDelete","Button","IconPlus","React","styled","css","React","React","useEffect","JsonSchemaUtils","React","styled","React","styled","useEffect","JsonSchemaUtils","React","React","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","React","useMemo","useScopeAvailable","styled","React","value","useScopeAvailable","useMemo","React","Button","IconPlus","React","IconButton","IconMinus","React","useEffect","useState","Input","BlurInput","value","React","BlurInput","IconButton","IconMinus","React","Button","IconPlus","React","I18n","Button","IconPlus","React","styled","css","Icon","UIContainer","UIRow","UICollapseTrigger","UITreeItems","UITreeItemLeft","UITreeItemRight","UITreeItemMain","UICollapsible","UIActions","iconAddChildrenSvg","IconAddChildren","React","useMemo","useState","I18n","IconButton","Input","IconChevronDown","IconChevronRight","IconDelete","useMemo","isPlainObject","useMemo","isPlainObject","value","React","Input","I18n","useState","useMemo","UITreeItemLeft","UICollapseTrigger","IconChevronDown","IconChevronRight","UITreeItemRight","UITreeItemMain","UIRow","UIActions","IconButton","IconAddChildren","IconDelete","UICollapsible","UITreeItems","value","React","UITreeItems","Button","IconPlus","I18n","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","DataEvent","DataEvent","getNodeScope","JsonSchemaUtils","DataEvent","getNodeScope","ASTFactory","createEffectFromVariableProvider","getNodeForm","getNodePrivateScope","getNodeScope","value","ctx","get","set","defineFormPluginCreator","getNodePrivateScope","getNodeScope","defineFormPluginCreator","set","get","getNodePrivateScope","getNodeScope","set","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","defineFormPluginCreator","getNodeForm","getNodeScope","getNodeScope","getNodeScope"]}
1
+ {"version":3,"sources":["../../src/components/type-selector/index.tsx","../../src/components/json-schema-editor/index.tsx","../../src/components/blur-input/index.tsx","../../src/components/json-schema-editor/styles.tsx","../../src/components/json-schema-editor/hooks.tsx","../../src/components/json-schema-editor/default-value.tsx","../../src/components/constant-input/index.tsx","../../src/components/batch-variable-selector/index.tsx","../../src/components/dynamic-value-input/index.tsx","../../src/components/dynamic-value-input/styles.tsx","../../src/components/dynamic-value-input/hooks.ts","../../src/components/condition-row/index.tsx","../../src/components/condition-row/styles.tsx","../../src/components/condition-row/hooks/useRule.ts","../../src/components/condition-row/constants.ts","../../src/components/condition-row/hooks/useOp.tsx","../../src/components/db-condition-row/index.tsx","../../src/components/db-condition-row/styles.tsx","../../src/components/db-condition-row/hooks/use-op.tsx","../../src/components/db-condition-row/hooks/use-left.tsx","../../src/components/batch-outputs/index.tsx","../../src/hooks/use-object-list/index.tsx","../../src/components/batch-outputs/styles.tsx","../../src/components/prompt-editor-with-variables/index.tsx","../../src/components/prompt-editor-with-inputs/index.tsx","../../src/components/json-editor-with-variables/index.tsx","../../src/components/inputs-values/index.tsx","../../src/components/inputs-values/styles.tsx","../../src/components/display-schema-tree/index.tsx","../../src/components/display-schema-tree/styles.tsx","../../src/components/display-outputs/index.tsx","../../src/components/display-schema-tag/index.tsx","../../src/components/display-schema-tag/styles.ts","../../src/components/display-outputs/styles.ts","../../src/components/display-flow-value/index.tsx","../../src/components/display-inputs-values/index.tsx","../../src/components/display-inputs-values/styles.ts","../../src/components/assign-rows/index.tsx","../../src/components/assign-row/index.tsx","../../src/components/assign-row/components/blur-input.tsx","../../src/components/inputs-values-tree/index.tsx","../../src/components/inputs-values-tree/styles.tsx","../../src/components/inputs-values-tree/row.tsx","../../src/components/inputs-values-tree/hooks/use-child-list.tsx","../../src/effects/provide-batch-input/index.ts","../../src/effects/auto-rename-ref/index.ts","../../src/effects/provide-json-schema-outputs/index.ts","../../src/effects/sync-variable-title/index.ts","../../src/effects/validate-when-variable-sync/index.ts","../../src/effects/listen-ref-value-change/index.ts","../../src/effects/listen-ref-schema-change/index.ts","../../src/form-plugins/batch-outputs-plugin/index.ts","../../src/form-plugins/infer-inputs-plugin/index.ts","../../src/form-plugins/infer-assign-plugin/index.ts","../../src/validate/validate-flow-value/index.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Cascader, Icon, IconButton } from '@douyinfe/semi-ui';\n\nimport { createInjectMaterial } from '@/shared/inject-material';\nimport { useTypeManager } from '@/plugins';\n\nexport interface TypeSelectorProps {\n value?: Partial<IJsonSchema>;\n onChange?: (value?: Partial<IJsonSchema>) => void;\n readonly?: boolean;\n /**\n * @deprecated use readonly instead\n */\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nconst labelStyle: React.CSSProperties = { display: 'flex', alignItems: 'center', gap: 5 };\n\nexport const getTypeSelectValue = (value?: Partial<IJsonSchema>): string[] | undefined => {\n if (value?.type === 'array' && value?.items) {\n return [value.type, ...(getTypeSelectValue(value.items) || [])];\n }\n\n return value?.type ? [value.type] : undefined;\n};\n\nexport const parseTypeSelectValue = (value?: string[]): Partial<IJsonSchema> | undefined => {\n const [type, ...subTypes] = value || [];\n\n if (type === 'array') {\n return { type: 'array', items: parseTypeSelectValue(subTypes) };\n }\n\n return { type };\n};\n\nexport function TypeSelector(props: TypeSelectorProps) {\n const { value, onChange, readonly, disabled, style } = props;\n\n const selectValue = useMemo(() => getTypeSelectValue(value), [value]);\n\n const typeManager = useTypeManager();\n\n const icon = typeManager.getDisplayIcon(value || {});\n\n const options = useMemo(\n () =>\n typeManager.getTypeRegistriesWithParentType().map((_type) => {\n const isArray = _type.type === 'array';\n\n return {\n label: (\n <div style={labelStyle}>\n <Icon size=\"small\" svg={_type.icon} />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n children: isArray\n ? typeManager.getTypeRegistriesWithParentType('array').map((_type) => ({\n label: (\n <div style={labelStyle}>\n <Icon\n size=\"small\"\n svg={typeManager.getDisplayIcon({\n type: 'array',\n items: { type: _type.type },\n })}\n />\n {typeManager.getTypeBySchema(_type)?.label || _type.type}\n </div>\n ),\n value: _type.type,\n }))\n : [],\n };\n }),\n []\n );\n\n const isDisabled = readonly || disabled;\n\n return (\n <Cascader\n disabled={isDisabled}\n size=\"small\"\n triggerRender={() => (\n <IconButton\n size=\"small\"\n style={{\n ...(isDisabled ? { pointerEvents: 'none' } : {}),\n ...(style || {}),\n }}\n disabled={isDisabled}\n icon={icon}\n />\n )}\n treeData={options}\n value={selectValue}\n leafOnly={true}\n onChange={(value) => {\n onChange?.(parseTypeSelectValue(value as string[]));\n }}\n />\n );\n}\n\nTypeSelector.renderKey = 'type-selector-render-key';\nexport const InjectTypeSelector = createInjectMaterial(TypeSelector);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Checkbox, IconButton } from '@douyinfe/semi-ui';\nimport {\n IconExpand,\n IconShrink,\n IconPlus,\n IconChevronDown,\n IconChevronRight,\n IconMinus,\n} from '@douyinfe/semi-icons';\n\nimport { InjectTypeSelector } from '@/components/type-selector';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { ConfigType, PropertyValueType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIContainer,\n UIExpandDetail,\n UILabel,\n UITreeItems,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UIRequired,\n UIType,\n} from './styles';\nimport { UIName } from './styles';\nimport { DefaultValueWrapper, UIRow } from './styles';\nimport { usePropertiesEdit } from './hooks';\nimport { DefaultValue } from './default-value';\n\nconst DEFAULT = { type: 'object' };\n\nexport function JsonSchemaEditor(props: {\n value?: IJsonSchema;\n onChange?: (value: IJsonSchema) => void;\n config?: ConfigType;\n className?: string;\n readonly?: boolean;\n}) {\n const { value = DEFAULT, config = {}, onChange: onChangeProps, readonly } = props;\n const { propertyList, onAddProperty, onRemoveProperty, onEditProperty } = usePropertiesEdit(\n value,\n onChangeProps\n );\n\n return (\n <UIContainer className={props.className}>\n <UITreeItems>\n {propertyList.map((_property) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n />\n ))}\n </UITreeItems>\n <Button\n disabled={readonly}\n size=\"small\"\n style={{ marginTop: 10, marginLeft: 16 }}\n icon={<IconPlus />}\n onClick={onAddProperty}\n >\n {config?.addButtonText ?? I18n.t('Add')}\n </Button>\n </UIContainer>\n );\n}\n\nfunction PropertyEdit(props: {\n value?: PropertyValueType;\n config?: ConfigType;\n onChange?: (value: PropertyValueType) => void;\n onRemove?: () => void;\n readonly?: boolean;\n $isLast?: boolean;\n $level?: number; // 添加层级属性\n}) {\n const { value, config, readonly, $level = 0, onChange: onChangeProps, onRemove, $isLast } = props;\n\n const [expand, setExpand] = useState(false);\n const [collapse, setCollapse] = useState(false);\n\n const { name, type, items, default: defaultValue, description, isPropertyRequired } = value || {};\n\n const typeSelectorValue = useMemo(() => ({ type, items }), [type, items]);\n\n const { propertyList, canAddField, onAddProperty, onRemoveProperty, onEditProperty } =\n usePropertiesEdit(value, onChangeProps);\n\n const onChange = (key: string, _value: any) => {\n onChangeProps?.({\n ...(value || {}),\n [key]: _value,\n });\n };\n\n const showCollapse = canAddField && propertyList.length > 0;\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={showCollapse}>\n {showCollapse && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <UIName>\n <BlurInput\n disabled={readonly}\n placeholder={config?.placeholder ?? I18n.t('Input Variable Name')}\n size=\"small\"\n value={name}\n onChange={(value) => onChange('name', value)}\n />\n </UIName>\n <UIType>\n <InjectTypeSelector\n value={typeSelectorValue}\n readonly={readonly}\n onChange={(_value) => {\n onChangeProps?.({\n ...(value || {}),\n ..._value,\n });\n }}\n />\n </UIType>\n <UIRequired>\n <Checkbox\n disabled={readonly}\n checked={isPropertyRequired}\n onChange={(e) => onChange('isPropertyRequired', e.target.checked)}\n />\n </UIRequired>\n <UIActions>\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={expand ? <IconShrink size=\"small\" /> : <IconExpand size=\"small\" />}\n onClick={() => {\n setExpand((_expand) => !_expand);\n }}\n />\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n onAddProperty();\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus size=\"small\" />}\n onClick={onRemove}\n />\n </UIActions>\n </UIRow>\n {expand && (\n <UIExpandDetail>\n <UILabel>{config?.descTitle ?? I18n.t('Description')}</UILabel>\n <BlurInput\n disabled={readonly}\n size=\"small\"\n value={description}\n onChange={(value) => onChange('description', value)}\n placeholder={\n config?.descPlaceholder ?? I18n.t('Help LLM to understand the property')\n }\n />\n {$level === 0 && (\n <>\n <UILabel style={{ marginTop: 10 }}>\n {config?.defaultValueTitle ?? I18n.t('Default Value')}\n </UILabel>\n <DefaultValueWrapper>\n <DefaultValue\n value={defaultValue}\n schema={value}\n placeholder={config?.defaultValuePlaceholder ?? I18n.t('Default Value')}\n onChange={(value) => onChange('default', value)}\n />\n </DefaultValueWrapper>\n </>\n )}\n </UIExpandDetail>\n )}\n </UITreeItemMain>\n {showCollapse && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {propertyList.map((_property, index) => (\n <PropertyEdit\n readonly={readonly}\n key={_property.key}\n value={_property}\n config={config}\n $level={$level + 1} // 传递递增的层级\n onChange={(_v) => {\n onEditProperty(_property.key!, _v);\n }}\n onRemove={() => {\n onRemoveProperty(_property.key!);\n }}\n $isLast={index === propertyList.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div`\n /* & .semi-input {\n background-color: #fff;\n border-radius: 6px;\n height: 24px;\n } */\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UIExpandDetail = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const UILabel = styled.div`\n font-size: 12px;\n color: #999;\n font-weight: 400;\n margin-bottom: 2px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIName = styled.div`\n flex-grow: 1;\n`;\n\nexport const UIType = styled.div``;\n\nexport const UIRequired = styled.div``;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n\nexport const DefaultValueWrapper = styled.div`\n margin: 0;\n`;\n\nexport const ConstantInputWrapper = styled.div`\n flex-grow: 1;\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { difference, omit } from 'lodash-es';\nimport { produce } from 'immer';\nimport { IJsonSchema, type JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\n\nimport { PropertyValueType } from './types';\n\nlet _id = 0;\nfunction genId() {\n return _id++;\n}\n\nexport function usePropertiesEdit(\n value?: PropertyValueType,\n onChange?: (value: PropertyValueType) => void\n) {\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n // Get drilldown properties (array.items.items.properties...)\n const drilldownSchema = typeManager.getPropertiesParent(value || {});\n const canAddField = typeManager.canAddField(value || {});\n\n const [propertyList, setPropertyList] = useState<PropertyValueType[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n // If the value is changed, update the property list\n setPropertyList((_list) => {\n const newNames = Object.entries(drilldownSchema?.properties || {})\n .sort(([, a], [, b]) => (a.extra?.index ?? 0) - (b.extra?.index ?? 0))\n .map(([key]) => key);\n\n const oldNames = _list.map((item) => item.name).filter(Boolean) as string[];\n const addNames = difference(newNames, oldNames);\n\n return _list\n .filter((item) => !item.name || newNames.includes(item.name))\n .map((item) => ({\n key: item.key,\n name: item.name,\n isPropertyRequired: drilldownSchema?.required?.includes(item.name || '') || false,\n ...(drilldownSchema?.properties?.[item.name || ''] || item || {}),\n }))\n .concat(\n addNames.map((_name) => ({\n key: genId(),\n name: _name,\n isPropertyRequired: drilldownSchema?.required?.includes(_name) || false,\n ...(drilldownSchema?.properties?.[_name] || {}),\n }))\n );\n });\n }, [drilldownSchema]);\n\n const updatePropertyList = (updater: (list: PropertyValueType[]) => PropertyValueType[]) => {\n changeVersion.current = changeVersion.current + 1;\n\n setPropertyList((_list) => {\n const next = updater(_list);\n\n // onChange to parent\n const nextProperties: Record<string, IJsonSchema> = {};\n const nextRequired: string[] = [];\n\n for (const _property of next) {\n if (!_property.name) {\n continue;\n }\n\n nextProperties[_property.name] = omit(_property, ['key', 'name', 'isPropertyRequired']);\n\n if (_property.isPropertyRequired) {\n nextRequired.push(_property.name);\n }\n }\n\n onChange?.(\n produce(value || {}, (draft) => {\n const propertiesParent = typeManager.getPropertiesParent(draft);\n\n if (propertiesParent) {\n propertiesParent.properties = nextProperties;\n propertiesParent.required = nextRequired;\n return;\n }\n })\n );\n\n return next;\n });\n };\n\n const onAddProperty = () => {\n // set property list only, not trigger updatePropertyList\n setPropertyList((_list) => [\n ..._list,\n { key: genId(), name: '', type: 'string', extra: { index: _list.length + 1 } },\n ]);\n };\n\n const onRemoveProperty = (key: number) => {\n updatePropertyList((_list) => _list.filter((_property) => _property.key !== key));\n };\n\n const onEditProperty = (key: number, nextValue: PropertyValueType) => {\n updatePropertyList((_list) =>\n _list.map((_property) => (_property.key === key ? nextValue : _property))\n );\n };\n\n useEffect(() => {\n if (!canAddField) {\n setPropertyList([]);\n }\n }, [canAddField]);\n\n return {\n propertyList,\n canAddField,\n onAddProperty,\n onRemoveProperty,\n onEditProperty,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { I18n } from '@flowgram.ai/editor';\n\nimport { ConstantInput } from '@/components/constant-input';\n\nimport { ConstantInputWrapper } from './styles';\n\n/**\n * Renders the corresponding default value input component based on different data types.\n * @param props - Component properties, including value, type, placeholder, onChange.\n * @returns Returns the input component of the corresponding type or null.\n */\nexport function DefaultValue(props: {\n value: any;\n schema?: IJsonSchema;\n placeholder?: string;\n onChange: (value: any) => void;\n}) {\n const { value, schema, onChange, placeholder } = props;\n\n return (\n <ConstantInputWrapper>\n <ConstantInput\n value={value}\n onChange={(_v) => onChange(_v)}\n schema={schema || { type: 'string' }}\n placeholder={placeholder ?? I18n.t('Default value if parameter is not provided')}\n enableMultiLineStr\n />\n </ConstantInputWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\n/* eslint-disable react/prop-types */\nimport React, { useMemo } from 'react';\n\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { PropsType, Strategy as ConstantInputStrategy } from './types';\n\nexport { ConstantInputStrategy };\n\nexport function ConstantInput(props: PropsType) {\n const { value, onChange, schema, strategies, fallbackRenderer, readonly, ...rest } = props;\n\n const typeManager = useTypeManager();\n\n const Renderer = useMemo(() => {\n const strategy = (strategies || []).find((_strategy) => _strategy.hit(schema));\n\n if (!strategy) {\n return typeManager.getTypeBySchema(schema)?.ConstantRenderer;\n }\n\n return strategy?.Renderer;\n }, [strategies, schema]);\n\n if (!Renderer) {\n if (fallbackRenderer) {\n return React.createElement(fallbackRenderer, {\n value,\n onChange,\n readonly,\n ...rest,\n });\n }\n return <Input size=\"small\" disabled placeholder=\"Unsupported type\" />;\n }\n\n return <Renderer value={value} onChange={onChange} readonly={readonly} {...rest} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { PrivateScopeProvider } from '@flowgram.ai/editor';\n\nimport { VariableSelector, VariableSelectorProps } from '@/components/variable-selector';\n\nconst batchVariableSchema: IJsonSchema = {\n type: 'array',\n extra: { weak: true },\n};\n\nexport function BatchVariableSelector(props: VariableSelectorProps) {\n return (\n <PrivateScopeProvider>\n <VariableSelector {...props} includeSchema={batchVariableSchema} />\n </PrivateScopeProvider>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport {\n JsonSchemaUtils,\n IJsonSchema,\n useTypeManager,\n type JsonSchemaTypeManager,\n} from '@flowgram.ai/json-schema';\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconSetting } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowConstantValue } from '@/typings';\nimport { createInjectMaterial } from '@/shared';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { TypeSelector } from '@/components/type-selector';\nimport { ConstantInput, ConstantInputStrategy } from '@/components/constant-input';\n\nimport { UIContainer, UIMain, UITrigger, UIType } from './styles';\nimport { useIncludeSchema, useRefVariable, useSelectSchema } from './hooks';\n\ninterface PropsType {\n value?: IFlowConstantRefValue;\n onChange: (value?: IFlowConstantRefValue) => void;\n readonly?: boolean;\n hasError?: boolean;\n style?: React.CSSProperties;\n schema?: IJsonSchema;\n constantProps?: {\n strategies?: ConstantInputStrategy[];\n schema?: IJsonSchema; // set schema of constant input only\n [key: string]: any;\n };\n}\n\nconst DEFAULT_VALUE: IFlowConstantValue = {\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n};\n\nexport function DynamicValueInput({\n value,\n onChange,\n readonly,\n style,\n schema: schemaFromProps,\n constantProps,\n}: PropsType) {\n const refVariable = useRefVariable(value);\n const [selectSchema, setSelectSchema] = useSelectSchema(schemaFromProps, constantProps, value);\n const includeSchema = useIncludeSchema(schemaFromProps);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const renderTypeSelector = () => {\n if (schemaFromProps) {\n return <TypeSelector value={schemaFromProps} readonly={true} />;\n }\n\n if (value?.type === 'ref') {\n const schema = refVariable?.type ? JsonSchemaUtils.astToSchema(refVariable?.type) : undefined;\n\n return <TypeSelector value={schema} readonly={true} />;\n }\n\n return (\n <TypeSelector\n value={selectSchema}\n onChange={(_v) => {\n setSelectSchema(_v || { type: 'string' });\n\n const schema = _v || { type: 'string' };\n let content = typeManager.getDefaultValue(schema);\n if (_v?.type === 'object') {\n content = '{}';\n }\n if (_v?.type === 'array') {\n content = '[]';\n }\n\n onChange({\n type: 'constant',\n content,\n schema,\n });\n }}\n readonly={readonly}\n />\n );\n };\n\n const renderMain = () => {\n if (value?.type === 'ref') {\n // Display Variable Or Delete\n return (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.content}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n );\n }\n\n const constantSchema = schemaFromProps || selectSchema || { type: 'string' };\n\n return (\n <ConstantInput\n value={value?.content}\n onChange={(_v) => onChange({ type: 'constant', content: _v, schema: constantSchema })}\n schema={constantSchema || { type: 'string' }}\n readonly={readonly}\n fallbackRenderer={() => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n onChange={(_v) => onChange(_v ? { type: 'ref', content: _v } : DEFAULT_VALUE)}\n includeSchema={includeSchema}\n readonly={readonly}\n />\n )}\n {...constantProps}\n strategies={[...(constantProps?.strategies || [])]}\n />\n );\n };\n\n const renderTrigger = () => (\n <InjectVariableSelector\n style={{ width: '100%' }}\n value={value?.type === 'ref' ? value?.content : undefined}\n onChange={(_v) => onChange({ type: 'ref', content: _v })}\n includeSchema={includeSchema}\n readonly={readonly}\n triggerRender={() => (\n <IconButton disabled={readonly} size=\"small\" icon={<IconSetting size=\"small\" />} />\n )}\n />\n );\n\n return (\n <UIContainer style={style}>\n <UIType>{renderTypeSelector()}</UIType>\n <UIMain>{renderMain()}</UIMain>\n <UITrigger>{renderTrigger()}</UITrigger>\n </UIContainer>\n );\n}\n\nDynamicValueInput.renderKey = 'dynamic-value-input-render-key';\nexport const InjectDynamicValueInput = createInjectMaterial(DynamicValueInput);\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n border-radius: 4px;\n border: 1px solid var(--semi-color-border);\n\n overflow: hidden;\n\n background-color: var(--semi-color-fill-0);\n`;\n\nexport const UIMain = styled.div`\n flex-grow: 1;\n overflow: hidden;\n min-width: 0;\n border-left: 1px solid var(--semi-color-border);\n border-right: 1px solid var(--semi-color-border);\n\n & .semi-tree-select,\n & .semi-input-number,\n & .semi-select {\n width: 100%;\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea-wrapper {\n border: none;\n border-radius: 0;\n }\n\n & .semi-input-textarea {\n padding: 2px 6px;\n border: none;\n border-radius: 0;\n word-break: break-all;\n }\n`;\n\nexport const UIType = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n\nexport const UITrigger = styled.div`\n & .semi-button {\n border-radius: 0;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowConstantRefValue } from '@/typings';\n\nexport function useRefVariable(value?: IFlowConstantRefValue) {\n const available = useScopeAvailable();\n const refVariable = useMemo(() => {\n if (value?.type === 'ref') {\n return available.getByKeyPath(value.content);\n }\n }, [value, available]);\n\n return refVariable;\n}\n\nexport function useSelectSchema(\n schemaFromProps?: IJsonSchema,\n constantProps?: {\n schema?: IJsonSchema;\n },\n value?: IFlowConstantRefValue\n) {\n let defaultSelectSchema = schemaFromProps || constantProps?.schema || { type: 'string' };\n if (value?.type === 'constant') {\n defaultSelectSchema = value?.schema || defaultSelectSchema;\n }\n\n const changeVersion = useRef(0);\n const effectVersion = useRef(0);\n\n const [selectSchema, setSelectSchema] = useState(defaultSelectSchema);\n\n useEffect(() => {\n effectVersion.current += 1;\n if (changeVersion.current === effectVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n if (value?.type === 'constant' && value?.schema) {\n setSelectSchema(value?.schema);\n return;\n }\n }, [value]);\n\n const setSelectSchemaWithVersionUpdate = (schema: IJsonSchema) => {\n setSelectSchema(schema);\n changeVersion.current += 1;\n };\n\n return [selectSchema, setSelectSchemaWithVersionUpdate] as const;\n}\n\nexport function useIncludeSchema(schemaFromProps?: IJsonSchema) {\n const includeSchema = useMemo(() => {\n if (!schemaFromProps) {\n return;\n }\n if (schemaFromProps?.type === 'number') {\n return [schemaFromProps, { type: 'integer' }];\n }\n return { ...schemaFromProps, extra: { weak: true, ...schemaFromProps?.extra } };\n }, [schemaFromProps]);\n\n return includeSchema;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { ConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useRule } from './hooks/useRule';\nimport { useOp } from './hooks/useOp';\nimport { defaultOpConfigs, defaultRules } from './constants';\n\ninterface PropTypes {\n value?: ConditionRowValueType;\n onChange: (value?: ConditionRowValueType) => void;\n style?: React.CSSProperties;\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function ConditionRow({\n style,\n value,\n onChange,\n readonly,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n const { rule } = useRule(left, ruleConfig.rules);\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>\n <InjectVariableSelector\n readonly={readonly}\n style={{ width: '100%' }}\n value={left?.content}\n onChange={(v) =>\n onChange({\n ...value,\n left: {\n type: 'ref',\n content: v,\n },\n })\n }\n />\n </UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nConditionRow.defaultRules = defaultRules;\nConditionRow.defaultOpConfigs = defaultOpConfigs;\n\nexport { type ConditionRowValueType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { JsonSchemaUtils, JsonSchemaBasicType } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nimport { IRules } from '../types';\nimport { defaultRules } from '../constants';\n\nexport function useRule(left?: IFlowRefValue, userRules?: IRules) {\n const available = useScopeAvailable();\n\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const variable = useMemo(() => {\n if (!left) return undefined;\n return available.getByKeyPath(left.content);\n }, [available, left]);\n\n const rule = useMemo(() => {\n if (!variable) return undefined;\n\n const schema = JsonSchemaUtils.astToSchema(variable.type, { drilldown: false });\n\n return rules[schema?.type as JsonSchemaBasicType];\n }, [variable?.type, rules]);\n\n return { rule };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IRules, Op, OpConfigs } from './types';\n\nexport const defaultRules: IRules = {\n string: {\n [Op.EQ]: 'string',\n [Op.NEQ]: 'string',\n [Op.CONTAINS]: 'string',\n [Op.NOT_CONTAINS]: 'string',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n number: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n integer: {\n [Op.EQ]: 'number',\n [Op.NEQ]: 'number',\n [Op.GT]: 'number',\n [Op.GTE]: 'number',\n [Op.LT]: 'number',\n [Op.LTE]: 'number',\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n boolean: {\n [Op.EQ]: 'boolean',\n [Op.NEQ]: 'boolean',\n [Op.IS_TRUE]: null,\n [Op.IS_FALSE]: null,\n [Op.IN]: 'array',\n [Op.NIN]: 'array',\n },\n object: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n array: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n [Op.CONTAINS]: 'array',\n [Op.NOT_CONTAINS]: 'array',\n [Op.EQ]: 'array',\n [Op.NEQ]: 'array',\n },\n map: {\n [Op.IS_EMPTY]: null,\n [Op.IS_NOT_EMPTY]: null,\n },\n};\n\nexport const defaultOpConfigs: OpConfigs = {\n [Op.EQ]: {\n label: 'Equal',\n abbreviation: '=',\n },\n [Op.NEQ]: {\n label: 'Not Equal',\n abbreviation: '≠',\n },\n [Op.GT]: {\n label: 'Greater Than',\n abbreviation: '>',\n },\n [Op.GTE]: {\n label: 'Greater Than or Equal',\n abbreviation: '>=',\n },\n [Op.LT]: {\n label: 'Less Than',\n abbreviation: '<',\n },\n [Op.LTE]: {\n label: 'Less Than or Equal',\n abbreviation: '<=',\n },\n [Op.IN]: {\n label: 'In',\n abbreviation: '∈',\n },\n [Op.NIN]: {\n label: 'Not In',\n abbreviation: '∉',\n },\n [Op.CONTAINS]: {\n label: 'Contains',\n abbreviation: '⊇',\n },\n [Op.NOT_CONTAINS]: {\n label: 'Not Contains',\n abbreviation: '⊉',\n },\n [Op.IS_EMPTY]: {\n label: 'Is Empty',\n abbreviation: '=',\n rightDisplay: 'Empty',\n },\n [Op.IS_NOT_EMPTY]: {\n label: 'Is Not Empty',\n abbreviation: '≠',\n rightDisplay: 'Empty',\n },\n [Op.IS_TRUE]: {\n label: 'Is True',\n abbreviation: '=',\n rightDisplay: 'True',\n },\n [Op.IS_FALSE]: {\n label: 'Is False',\n abbreviation: '=',\n rightDisplay: 'False',\n },\n};\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { IRule, OpConfigs } from '../types';\nimport { defaultOpConfigs } from '../constants';\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Input } from '@douyinfe/semi-ui';\n\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { DBConditionOptionType, DBConditionRowValueType, IRules, OpConfigs } from './types';\nimport { UIContainer, UILeft, UIOperator, UIRight, UIValues } from './styles';\nimport { useOp } from './hooks/use-op';\nimport { useLeft } from './hooks/use-left';\n\ninterface PropTypes {\n value?: DBConditionRowValueType;\n onChange: (value?: DBConditionRowValueType) => void;\n style?: React.CSSProperties;\n options?: DBConditionOptionType[];\n readonly?: boolean;\n ruleConfig?: {\n ops?: OpConfigs;\n rules?: IRules;\n };\n}\n\nconst defaultRuleConfig = {\n ops: {},\n rules: {},\n};\n\nexport function DBConditionRow({\n style,\n value,\n onChange,\n readonly,\n options,\n ruleConfig = defaultRuleConfig,\n}: PropTypes) {\n const { left, operator, right } = value || {};\n\n const { rule, renderDBOptionSelect } = useLeft({\n left,\n options,\n onChange: (leftKey) => onChange({ ...value, left: leftKey }),\n readonly,\n userRules: ruleConfig.rules,\n });\n\n const { renderOpSelect, opConfig } = useOp({\n rule,\n op: operator,\n onChange: (v) => onChange({ ...value, operator: v }),\n readonly,\n userOps: ruleConfig.ops,\n });\n\n const targetSchema = useMemo(() => {\n const targetType: string | null = rule?.[operator || ''] || null;\n return targetType ? { type: targetType, extra: { weak: true } } : null;\n }, [rule, opConfig]);\n\n return (\n <UIContainer style={style}>\n <UIOperator>{renderOpSelect()}</UIOperator>\n <UIValues>\n <UILeft>{renderDBOptionSelect()}</UILeft>\n <UIRight>\n {targetSchema ? (\n <InjectDynamicValueInput\n readonly={readonly || !rule}\n value={right}\n schema={targetSchema}\n onChange={(v) => onChange({ ...value, right: v })}\n />\n ) : (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={opConfig?.rightDisplay || I18n.t('Empty')}\n />\n )}\n </UIRight>\n </UIValues>\n </UIContainer>\n );\n}\n\nexport { type DBConditionRowValueType, type DBConditionOptionType };\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Select } from '@douyinfe/semi-ui';\n\nexport const UIContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOperator = styled.div``;\n\nexport const UILeft = styled.div`\n width: 100%;\n`;\n\nexport const UIRight = styled.div`\n width: 100%;\n`;\n\nexport const UIValues = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n`;\n\nexport const UIOptionLabel = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const UISelect = styled(Select)`\n & .semi-select-selection {\n margin-left: 5px;\n }\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Select } from '@douyinfe/semi-ui';\nimport { IconChevronDownStroked } from '@douyinfe/semi-icons';\n\nimport { ConditionRow } from '@/components';\n\nimport { IRule, OpConfigs } from '../types';\n\nconst defaultOpConfigs = ConditionRow.defaultOpConfigs;\n\ninterface HookParams {\n rule?: IRule;\n op?: string;\n onChange: (op: string) => void;\n readonly?: boolean;\n userOps?: OpConfigs;\n}\n\nexport function useOp({ rule, op, onChange, readonly, userOps }: HookParams) {\n const options = useMemo(\n () =>\n Object.keys(rule || {}).map((_op) => ({\n ...(defaultOpConfigs[_op] || {}),\n ...(userOps?.[_op] || {}),\n value: _op,\n label: I18n.t(userOps?.[_op]?.label || defaultOpConfigs[_op]?.label),\n })),\n [rule, userOps]\n );\n\n const opConfig = useMemo(() => defaultOpConfigs[op as string], [op]);\n\n const renderOpSelect = () => (\n <Select\n style={{ height: 22 }}\n disabled={readonly}\n size=\"small\"\n value={op}\n optionList={options}\n onChange={(v) => {\n onChange(v as string);\n }}\n triggerRender={({ value }) => (\n <Button size=\"small\" disabled={!rule}>\n {opConfig?.abbreviation || <IconChevronDownStroked size=\"small\" />}\n </Button>\n )}\n />\n );\n\n return { renderOpSelect, opConfig };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\nimport React from 'react';\n\nimport { JsonSchemaTypeManager, useTypeManager } from '@flowgram.ai/json-schema';\nimport { Icon } from '@douyinfe/semi-ui';\n\nimport { ConditionRow } from '@/components';\n\nimport { DBConditionOptionType, IRules } from '../types';\nimport { UIOptionLabel, UISelect } from '../styles';\n\nconst defaultRules = ConditionRow.defaultRules;\n\ninterface HookParams {\n left?: string;\n options?: DBConditionOptionType[];\n userRules?: IRules;\n readonly?: boolean;\n onChange: (leftKey: string) => void;\n}\n\nexport function useLeft({ left, options, userRules, readonly, onChange }: HookParams) {\n const rules = useMemo(() => ({ ...defaultRules, ...(userRules || {}) }), [userRules]);\n\n const typeManager = useTypeManager() as JsonSchemaTypeManager;\n\n const rule = useMemo(() => {\n if (!left) return undefined;\n\n const option = options?.find((item) => item.value === left);\n\n if (!option?.schema?.type) {\n return undefined;\n }\n\n return rules[option.schema.type];\n }, [left, options, rules]);\n\n const renderDBOptionSelect = () => (\n <UISelect\n disabled={readonly}\n size=\"small\"\n style={{ width: '100%' }}\n value={left}\n onChange={(v) => onChange(v as string)}\n optionList={\n options?.map((item) => ({\n label: (\n <UIOptionLabel>\n <Icon size=\"small\" svg={typeManager.getDisplayIcon(item.schema)} />\n {item.label}\n </UIOptionLabel>\n ),\n value: item.value,\n })) || []\n }\n />\n );\n\n return { rule, renderDBOptionSelect };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, Input } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { useObjectList } from '@/hooks';\nimport { InjectVariableSelector } from '@/components/variable-selector';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function BatchOutputs(props: PropsType) {\n const { readonly, style } = props;\n\n const { list, add, updateKey, updateValue, remove } = useObjectList(props);\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <Input\n style={{ width: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n />\n <InjectVariableSelector\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value?.content}\n onChange={(v) => updateValue(item.id, { type: 'ref', content: v })}\n />\n <Button\n disabled={readonly}\n icon={<IconDelete />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button disabled={readonly} icon={<IconPlus />} size=\"small\" onClick={() => add()}>\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { nanoid } from 'nanoid';\nimport { difference, get, isObject, set } from 'lodash-es';\n\nfunction genId() {\n return nanoid();\n}\n\ninterface ListItem<ValueType> {\n id: string;\n key?: string;\n value?: ValueType;\n}\n\ntype ObjectType<ValueType> = Record<string, ValueType | undefined>;\n\nexport function useObjectList<ValueType>({\n value,\n onChange,\n sortIndexKey,\n}: {\n value?: ObjectType<ValueType>;\n onChange: (value?: ObjectType<ValueType>) => void;\n sortIndexKey?: string | ((item: ValueType | undefined) => string);\n}) {\n const [list, setList] = useState<ListItem<ValueType>[]>([]);\n\n const effectVersion = useRef(0);\n const changeVersion = useRef(0);\n\n const getSortIndex = (value?: ValueType) => {\n if (typeof sortIndexKey === 'function') {\n return get(value, sortIndexKey(value)) || 0;\n }\n return get(value, sortIndexKey || '') || 0;\n };\n\n useEffect(() => {\n effectVersion.current = effectVersion.current + 1;\n if (effectVersion.current === changeVersion.current) {\n return;\n }\n effectVersion.current = changeVersion.current;\n\n setList((_prevList) => {\n const newKeys = Object.entries(value || {})\n .sort((a, b) => getSortIndex(a[1]) - getSortIndex(b[1]))\n .map(([key]) => key);\n\n const oldKeys = _prevList.map((item) => item.key).filter(Boolean) as string[];\n const addKeys = difference(newKeys, oldKeys);\n\n return _prevList\n .filter((item) => !item.key || newKeys.includes(item.key))\n .map((item) => ({\n id: item.id,\n key: item.key,\n value: item.key ? value?.[item.key!] : item.value,\n }))\n .concat(\n addKeys.map((_key) => ({\n id: genId(),\n key: _key,\n value: value?.[_key],\n }))\n );\n });\n }, [value]);\n\n const add = (defaultValue?: ValueType) => {\n setList((prevList) => [\n ...prevList,\n {\n id: genId(),\n value: defaultValue,\n },\n ]);\n };\n\n const updateValue = (itemId: string, value: ValueType) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n value,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList\n .filter((item) => item.key)\n .map((item) => [item.key!, item.value])\n .map((_res, idx) => {\n const indexKey =\n typeof sortIndexKey === 'function'\n ? sortIndexKey(_res[1] as ValueType | undefined)\n : sortIndexKey;\n\n if (isObject(_res[1]) && indexKey) {\n set(_res[1], indexKey, idx);\n }\n return _res;\n })\n )\n );\n\n return nextList;\n });\n };\n\n const updateKey = (itemId: string, key: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.map((_item) => {\n if (_item.id === itemId) {\n return {\n ..._item,\n key,\n };\n }\n return _item;\n });\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n const remove = (itemId: string) => {\n changeVersion.current = changeVersion.current + 1;\n\n setList((prevList) => {\n const nextList = prevList.filter((_item) => _item.id !== itemId);\n\n onChange(\n Object.fromEntries(\n nextList.filter((item) => item.key).map((item) => [item.key!, item.value])\n )\n );\n\n return nextList;\n });\n };\n\n return { list, add, updateKey, updateValue, remove };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazySuspense } from '@/shared';\n\nexport const PromptEditorWithVariables = lazySuspense(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithVariables }))\n);\n\nexport type { PromptEditorWithVariablesProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazySuspense } from '@/shared';\n\nexport const PromptEditorWithInputs = lazySuspense(() =>\n import('./editor').then((module) => ({ default: module.PromptEditorWithInputs }))\n);\n\nexport type { PromptEditorWithInputsProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { lazySuspense } from '@/shared';\n\nexport const JsonEditorWithVariables = lazySuspense(() =>\n import('./editor').then((module) => ({ default: module.JsonEditorWithVariables }))\n);\n\nexport type { JsonEditorWithVariablesProps } from './editor';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button, IconButton } from '@douyinfe/semi-ui';\nimport { IconDelete, IconPlus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue, IFlowValue } from '@/typings';\nimport { useObjectList } from '@/hooks';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\nimport { BlurInput } from '@/components/blur-input';\n\nimport { PropsType } from './types';\nimport { UIRow, UIRows } from './styles';\n\nexport function InputsValues({\n value,\n onChange,\n style,\n readonly,\n constantProps,\n schema,\n hasError,\n}: PropsType) {\n const { list, updateKey, updateValue, remove, add } = useObjectList<IFlowValue | undefined>({\n value,\n onChange,\n sortIndexKey: 'extra.index',\n });\n\n return (\n <div>\n <UIRows style={style}>\n {list.map((item) => (\n <UIRow key={item.id}>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={item.key}\n onChange={(v) => updateKey(item.id, v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={item.value as IFlowConstantRefValue}\n onChange={(v) => updateValue(item.id, v)}\n schema={schema}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies: [...(constantProps?.strategies || [])],\n }}\n />\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => remove(item.id)}\n />\n </UIRow>\n ))}\n </UIRows>\n <Button\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() =>\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n })\n }\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const UIRows = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-bottom: 10px;\n`;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager } from '@flowgram.ai/json-schema';\n\nimport { useTypeManager } from '@/plugins';\n\nimport { HorizontalLine, TreeItem, TreeLevel, TreeRow, TreeTitle } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n parentKey?: string;\n depth?: number;\n drilldown?: boolean;\n showIcon?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplaySchemaTree(props: Omit<PropsType, 'parentKey' | 'depth'>) {\n return <SchemaTree {...props} />;\n}\n\nfunction SchemaTree(props: PropsType) {\n const {\n value: schema = {},\n drilldown = true,\n depth = 0,\n showIcon = true,\n parentKey = '',\n } = props || {};\n\n const typeManager = useTypeManager();\n\n const config = typeManager.getTypeBySchema(schema);\n const title = typeManager.getComplexText(schema);\n const icon = typeManager?.getDisplayIcon(schema);\n let properties: IJsonSchema['properties'] =\n drilldown && config ? config.getTypeSchemaProperties(schema) : {};\n const childEntries = Object.entries(properties || {});\n\n return (\n <TreeItem depth={depth} key={parentKey || 'root'}>\n <TreeRow>\n {depth !== 0 && <HorizontalLine />}\n {showIcon &&\n icon &&\n React.cloneElement(icon, {\n className: 'tree-icon',\n })}\n <TreeTitle>\n {parentKey ? (\n <>\n {`${parentKey} (`}\n {title}\n {')'}\n </>\n ) : (\n title\n )}\n </TreeTitle>\n </TreeRow>\n {childEntries?.length ? (\n <TreeLevel>\n {childEntries.map(([key, value]) => (\n <SchemaTree key={key} {...props} parentKey={key} value={value} depth={depth + 1} />\n ))}\n </TreeLevel>\n ) : null}\n </TreeItem>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled, { css } from 'styled-components';\n\nexport const TreeRow = styled.div`\n display: flex;\n align-items: center;\n\n .tree-icon {\n margin-right: 8px;\n width: 14px;\n height: 14px;\n }\n\n height: 27px;\n white-space: nowrap;\n`;\n\nexport const HorizontalLine = styled.div`\n position: relative;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &::after {\n top: 0px;\n right: 6px;\n width: 15px;\n height: 1px;\n }\n`;\n\nexport const TreeTitle = styled.div`\n // overflow: hidden;\n // text-overflow: ellipsis;\n`;\n\nexport const TreeLevel = styled.div`\n padding-left: 30px;\n position: relative;\n\n /* &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n top: 0px;\n bottom: 0px;\n left: -22px;\n width: 1px;\n } */\n`;\n\nexport const TreeItem = styled.div<{ depth: number }>`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n background-color: var(--semi-color-text-3);\n }\n\n &:not(:last-child)::before {\n width: 1px;\n top: 0;\n bottom: 0;\n left: -22px;\n }\n\n &:last-child::before {\n width: 1px;\n top: 0;\n height: 14px;\n left: -22px;\n }\n\n ${(props) =>\n props.depth === 0 &&\n css`\n &::before {\n width: 0px !important;\n }\n `}\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect } from 'react';\n\nimport { IJsonSchema, JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useCurrentScope, useRefresh } from '@flowgram.ai/editor';\n\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\nimport { DisplayOutputsWrapper } from './styles';\n\ninterface PropsType {\n value?: IJsonSchema;\n showIconInTree?: boolean;\n displayFromScope?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayOutputs({ value, showIconInTree, displayFromScope }: PropsType) {\n const scope = useCurrentScope();\n const refresh = useRefresh();\n\n useEffect(() => {\n if (!displayFromScope) {\n return () => null;\n }\n\n const disposable = scope.output.onListOrAnyVarChange(() => {\n refresh();\n });\n\n return () => {\n disposable.dispose();\n };\n }, [displayFromScope]);\n\n const properties: IJsonSchema['properties'] = displayFromScope\n ? scope.output.variables?.reduce((acm, curr) => {\n acm = {\n ...acm,\n ...(JsonSchemaUtils.astToSchema(curr.type)?.properties || {}),\n };\n return acm;\n }, {})\n : value?.properties || {};\n\n const childEntries = Object.entries(properties || {});\n\n return (\n <DisplayOutputsWrapper>\n {childEntries.map(([key, schema]) => (\n <DisplaySchemaTag\n key={key}\n title={key}\n value={schema}\n showIconInTree={showIconInTree}\n warning={!schema}\n />\n ))}\n </DisplayOutputsWrapper>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IJsonSchema } from '@flowgram.ai/json-schema';\nimport { Popover } from '@douyinfe/semi-ui';\n\nimport { useTypeManager } from '@/plugins';\nimport { DisplaySchemaTree } from '@/components/display-schema-tree';\n\nimport { PopoverContent, StyledTag, TitleSpan } from './styles';\n\ninterface PropsType {\n title?: JSX.Element | string;\n value?: IJsonSchema;\n showIconInTree?: boolean;\n warning?: boolean;\n}\n\nexport function DisplaySchemaTag({ value = {}, showIconInTree, title, warning }: PropsType) {\n const typeManager = useTypeManager();\n const icon =\n typeManager?.getDisplayIcon(value) || typeManager.getDisplayIcon({ type: 'unknown' });\n\n return (\n <Popover\n content={\n <PopoverContent>\n <DisplaySchemaTree value={value} typeManager={typeManager} showIcon={showIconInTree} />\n </PopoverContent>\n }\n >\n <StyledTag color={warning ? 'amber' : 'white'}>\n {icon &&\n React.cloneElement(icon, {\n className: 'tag-icon',\n })}\n {title && <TitleSpan>{title}</TitleSpan>}\n </StyledTag>\n </Popover>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\nimport { Tag } from '@douyinfe/semi-ui';\n\nexport const PopoverContent = styled.div`\n padding: 10px;\n`;\n\nexport const StyledTag = styled(Tag)`\n padding: 4px;\n\n .tag-icon {\n width: 12px;\n height: 12px;\n }\n`;\n\nexport const TitleSpan = styled.span`\n display: inline-block;\n margin-left: 4px;\n margin-top: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayOutputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { JsonSchemaTypeManager, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\nimport { DisplaySchemaTag } from '@/components/display-schema-tag';\n\ninterface PropsType {\n value?: IFlowValue;\n title?: JSX.Element | string;\n showIconInTree?: boolean;\n typeManager?: JsonSchemaTypeManager;\n}\n\nexport function DisplayFlowValue({ value, title, showIconInTree }: PropsType) {\n const available = useScopeAvailable();\n\n const variable = value?.type === 'ref' ? available.getByKeyPath(value?.content) : undefined;\n\n const schema = useMemo(() => {\n if (value?.type === 'ref') {\n return JsonSchemaUtils.astToSchema(variable?.type);\n }\n if (value?.type === 'template') {\n return { type: 'string' };\n }\n if (value?.type === 'constant') {\n return FlowValueUtils.inferConstantJsonSchema(value);\n }\n\n return { type: 'unknown' };\n }, [value, variable?.hash]);\n\n return (\n <DisplaySchemaTag\n title={title}\n value={schema}\n showIconInTree={showIconInTree}\n warning={value?.type === 'ref' && !variable}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash-es';\nimport { useScopeAvailable } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\nimport { DisplayFlowValue } from '@/components/display-flow-value';\n\nimport { DisplayInputsWrapper } from './styles';\nimport { DisplaySchemaTag } from '../display-schema-tag';\n\ninterface PropsType {\n value?: any;\n showIconInTree?: boolean;\n}\n\nexport function DisplayInputsValues({ value, showIconInTree }: PropsType) {\n const childEntries = Object.entries(value || {});\n\n return (\n <DisplayInputsWrapper>\n {childEntries.map(([key, value]) => {\n if (FlowValueUtils.isFlowValue(value)) {\n return (\n <DisplayFlowValue key={key} title={key} value={value} showIconInTree={showIconInTree} />\n );\n }\n\n if (isPlainObject(value)) {\n return (\n <DisplayInputsValueAllInTag\n key={key}\n title={key}\n value={value}\n showIconInTree={showIconInTree}\n />\n );\n }\n\n return null;\n })}\n </DisplayInputsWrapper>\n );\n}\n\nexport function DisplayInputsValueAllInTag({\n value,\n title,\n showIconInTree,\n}: PropsType & {\n title: string;\n}) {\n const available = useScopeAvailable();\n\n const schema = useMemo(\n () => FlowValueUtils.inferJsonSchema(value, available.scope),\n [available.version, value]\n );\n\n return <DisplaySchemaTag title={title} value={schema} showIconInTree={showIconInTree} />;\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport styled from 'styled-components';\n\nexport const DisplayInputsWrapper = styled.div`\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n`;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { FieldArray, FieldArrayRenderProps } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { AssignRow, AssignValueType } from '@/components/assign-row';\n\ninterface AssignRowsProps {\n name: string;\n readonly?: boolean;\n}\n\nexport function AssignRows(props: AssignRowsProps) {\n const { name, readonly } = props;\n\n return (\n <FieldArray name={name}>\n {({ field }: FieldArrayRenderProps<AssignValueType | undefined>) => (\n <>\n {field.map((childField, index) => (\n <AssignRow\n key={childField.key}\n readonly={readonly}\n value={childField.value}\n onChange={(value) => {\n childField.onChange(value);\n }}\n onDelete={() => field.remove(index)}\n />\n ))}\n <div style={{ display: 'flex', gap: 5 }}>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'assign' })}\n >\n Assign\n </Button>\n <Button\n size=\"small\"\n theme=\"borderless\"\n icon={<IconPlus />}\n onClick={() => field.append({ operator: 'declare' })}\n >\n Declaration\n </Button>\n </div>\n </>\n )}\n </FieldArray>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { IconButton } from '@douyinfe/semi-ui';\nimport { IconMinus } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantRefValue } from '@/typings';\nimport { InjectVariableSelector } from '@/components/variable-selector';\nimport { InjectDynamicValueInput } from '@/components/dynamic-value-input';\n\nimport { AssignRowProps } from './types';\nimport { BlurInput } from './components/blur-input';\n\nexport function AssignRow(props: AssignRowProps) {\n const {\n value = {\n operator: 'assign',\n },\n onChange,\n onDelete,\n readonly,\n } = props;\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: 5 }}>\n <div style={{ width: 150, minWidth: 150, maxWidth: 150 }}>\n {value?.operator === 'assign' ? (\n <InjectVariableSelector\n style={{ width: '100%', height: 26 }}\n value={value?.left?.content}\n config={{ placeholder: 'Select Left' }}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: { type: 'ref', content: v },\n })\n }\n />\n ) : (\n <BlurInput\n style={{ height: 26 }}\n size=\"small\"\n placeholder=\"Input Name\"\n value={value?.left}\n onChange={(v) =>\n onChange?.({\n ...value,\n left: v,\n })\n }\n />\n )}\n </div>\n <div style={{ flexGrow: 1 }}>\n <InjectDynamicValueInput\n readonly={readonly}\n value={value?.right as IFlowConstantRefValue | undefined}\n onChange={(v) =>\n onChange?.({\n ...value,\n right: v,\n })\n }\n />\n </div>\n {onDelete && (\n <div>\n <IconButton\n size=\"small\"\n theme=\"borderless\"\n icon={<IconMinus />}\n onClick={() => onDelete?.()}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport { AssignValueType } from './types';\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useEffect, useState } from 'react';\n\nimport Input, { InputProps } from '@douyinfe/semi-ui/lib/es/input';\n\nexport function BlurInput(props: InputProps) {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(props.value as string);\n }, [props.value]);\n\n return (\n <Input\n {...props}\n value={value}\n onChange={(value) => {\n setValue(value);\n }}\n onBlur={(e) => props.onChange?.(value, e)}\n />\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { Button } from '@douyinfe/semi-ui';\nimport { IconPlus } from '@douyinfe/semi-icons';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\nimport { PropsType } from './types';\nimport { UITreeItems } from './styles';\nimport { InputValueRow } from './row';\n\nexport function InputsValuesTree(props: PropsType) {\n const { value, onChange, readonly, hasError, constantProps } = props;\n\n const { list, updateKey, updateValue, remove, add } = useObjectList({\n value,\n onChange,\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n return (\n <div>\n <UITreeItems>\n {list.map((item) => (\n <InputValueRow\n key={item.id}\n keyName={item.key}\n value={item.value}\n onUpdateKey={(key) => updateKey(item.id, key)}\n onUpdateValue={(value) => updateValue(item.id, value)}\n onRemove={() => remove(item.id)}\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n />\n ))}\n </UITreeItems>\n <Button\n style={{ marginTop: 10, marginLeft: 16 }}\n disabled={readonly}\n icon={<IconPlus />}\n size=\"small\"\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n }}\n >\n {I18n.t('Add')}\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\n\nimport styled, { css } from 'styled-components';\nimport Icon from '@douyinfe/semi-icons';\n\nexport const UIContainer = styled.div``;\n\nexport const UIRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 5px;\n`;\n\nexport const UICollapseTrigger = styled.div`\n cursor: pointer;\n margin-right: 5px;\n`;\n\nexport const UITreeItems = styled.div<{ $shrink?: boolean }>`\n display: grid;\n grid-template-columns: auto 1fr;\n\n ${({ $shrink }) =>\n $shrink &&\n css`\n padding-left: 3px;\n margin-top: 10px;\n `}\n`;\n\nexport const UITreeItemLeft = styled.div<{\n $isLast?: boolean;\n $showLine?: boolean;\n $showCollapse?: boolean;\n}>`\n grid-column: 1;\n position: relative;\n width: 16px;\n\n ${({ $showLine, $isLast, $showCollapse }) => {\n let height = $isLast ? '24px' : '100%';\n let width = $showCollapse ? '12px' : '30px';\n\n return (\n $showLine &&\n css`\n &::before {\n /* 竖线 */\n content: '';\n height: ${height};\n position: absolute;\n left: -14px;\n top: -16px;\n width: 1px;\n background: #d9d9d9;\n display: block;\n }\n\n &::after {\n /* 横线 */\n content: '';\n position: absolute;\n left: -14px; // 横线起点和竖线对齐\n top: 8px; // 跟随你的行高调整\n width: ${width}; // 横线长度\n height: 1px;\n background: #d9d9d9;\n display: block;\n }\n `\n );\n }}\n`;\n\nexport const UITreeItemRight = styled.div`\n grid-column: 2;\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nexport const UITreeItemMain = styled.div<{}>`\n display: flex;\n flex-direction: column;\n gap: 10px;\n position: relative;\n`;\n\nexport const UICollapsible = styled.div<{ $collapse?: boolean }>`\n display: none;\n\n ${({ $collapse }) =>\n $collapse &&\n css`\n display: block;\n `}\n`;\n\nexport const UIActions = styled.div`\n white-space: nowrap;\n`;\n\nconst iconAddChildrenSvg = (\n <svg\n className=\"icon-icon icon-icon-coz_add_node \"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 6.49988C11 8.64148 9.50397 10.4337 7.49995 10.8884V15.4998C7.49995 16.0521 7.94767 16.4998 8.49995 16.4998H11.208C11.0742 16.8061 11 17.1443 11 17.4998C11 17.8554 11.0742 18.1936 11.208 18.4998H8.49995C6.8431 18.4998 5.49995 17.1567 5.49995 15.4998V10.8884C3.49599 10.4336 2 8.64145 2 6.49988C2 4.0146 4.01472 1.99988 6.5 1.99988C8.98528 1.99988 11 4.0146 11 6.49988ZM6.5 8.99988C7.88071 8.99988 9 7.88059 9 6.49988C9 5.11917 7.88071 3.99988 6.5 3.99988C5.11929 3.99988 4 5.11917 4 6.49988C4 7.88059 5.11929 8.99988 6.5 8.99988Z\"\n ></path>\n <path d=\"M17.5 12.4999C18.0523 12.4999 18.5 12.9476 18.5 13.4999V16.4999H21.5C22.0523 16.4999 22.5 16.9476 22.5 17.4999C22.5 18.0522 22.0523 18.4999 21.5 18.4999H18.5V21.4999C18.5 22.0522 18.0523 22.4999 17.5 22.4999C16.9477 22.4999 16.5 22.0522 16.5 21.4999V18.4999H13.5C12.9477 18.4999 12.5 18.0522 12.5 17.4999C12.5 16.9476 12.9477 16.4999 13.5 16.4999H16.5V13.4999C16.5 12.9476 16.9477 12.4999 17.5 12.4999Z\"></path>\n </svg>\n);\n\nexport const IconAddChildren = () => <Icon size=\"small\" svg={iconAddChildrenSvg} />;\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport { I18n } from '@flowgram.ai/editor';\nimport { IconButton, Input } from '@douyinfe/semi-ui';\nimport { IconChevronDown, IconChevronRight, IconDelete } from '@douyinfe/semi-icons';\n\nimport { IFlowConstantValue } from '@/typings';\nimport { ConstantInputStrategy } from '@/components/constant-input';\n\nimport { PropsType } from './types';\nimport {\n IconAddChildren,\n UIActions,\n UICollapseTrigger,\n UICollapsible,\n UIRow,\n UITreeItemLeft,\n UITreeItemMain,\n UITreeItemRight,\n UITreeItems,\n} from './styles';\nimport { useChildList } from './hooks/use-child-list';\nimport { InjectDynamicValueInput } from '../dynamic-value-input';\nimport { BlurInput } from '../blur-input';\n\nconst AddObjectChildStrategy: ConstantInputStrategy = {\n hit: (schema) => schema.type === 'object',\n Renderer: () => (\n <Input\n size=\"small\"\n disabled\n style={{ pointerEvents: 'none' }}\n value={I18n.t('Configure via child fields')}\n />\n ),\n};\n\nexport function InputValueRow(\n props: {\n keyName?: string;\n value?: any;\n onUpdateKey: (key: string) => void;\n onUpdateValue: (value: any) => void;\n onRemove?: () => void;\n $isLast?: boolean;\n $level?: number;\n } & Pick<PropsType, 'constantProps' | 'hasError' | 'readonly'>\n) {\n const {\n keyName,\n value,\n $level = 0,\n onUpdateKey,\n onUpdateValue,\n $isLast,\n onRemove,\n constantProps,\n hasError,\n readonly,\n } = props;\n const [collapse, setCollapse] = useState(false);\n\n const { canAddField, hasChildren, list, add, updateKey, updateValue, remove } = useChildList(\n value,\n onUpdateValue\n );\n\n const strategies = useMemo(\n () => [...(hasChildren ? [AddObjectChildStrategy] : []), ...(constantProps?.strategies || [])],\n [hasChildren, constantProps?.strategies]\n );\n\n const flowDisplayValue = useMemo(\n () =>\n hasChildren\n ? ({\n type: 'constant',\n schema: { type: 'object' },\n } as IFlowConstantValue)\n : value,\n [hasChildren, value]\n );\n\n return (\n <>\n <UITreeItemLeft $isLast={$isLast} $showLine={$level > 0} $showCollapse={hasChildren}>\n {hasChildren && (\n <UICollapseTrigger onClick={() => setCollapse((_collapse) => !_collapse)}>\n {collapse ? <IconChevronDown size=\"small\" /> : <IconChevronRight size=\"small\" />}\n </UICollapseTrigger>\n )}\n </UITreeItemLeft>\n <UITreeItemRight>\n <UITreeItemMain>\n <UIRow>\n <BlurInput\n style={{ width: 100, minWidth: 100, maxWidth: 100 }}\n disabled={readonly}\n size=\"small\"\n value={keyName}\n onChange={(v) => onUpdateKey?.(v)}\n placeholder={I18n.t('Input Key')}\n />\n <InjectDynamicValueInput\n style={{ flexGrow: 1 }}\n readonly={readonly}\n value={flowDisplayValue}\n onChange={(v) => onUpdateValue(v)}\n hasError={hasError}\n constantProps={{\n ...constantProps,\n strategies,\n }}\n />\n <UIActions>\n {canAddField && (\n <IconButton\n disabled={readonly}\n size=\"small\"\n theme=\"borderless\"\n icon={<IconAddChildren />}\n onClick={() => {\n add({\n type: 'constant',\n content: '',\n schema: { type: 'string' },\n });\n setCollapse(true);\n }}\n />\n )}\n <IconButton\n disabled={readonly}\n theme=\"borderless\"\n icon={<IconDelete size=\"small\" />}\n size=\"small\"\n onClick={() => onRemove?.()}\n />\n </UIActions>\n </UIRow>\n </UITreeItemMain>\n {hasChildren && (\n <UICollapsible $collapse={collapse}>\n <UITreeItems $shrink={true}>\n {list.map((_item, index) => (\n <InputValueRow\n readonly={readonly}\n hasError={hasError}\n constantProps={constantProps}\n key={_item.id}\n keyName={_item.key}\n value={_item.value}\n $level={$level + 1} // 传递递增的层级\n onUpdateValue={(_v) => {\n updateValue(_item.id, _v);\n }}\n onUpdateKey={(k) => {\n updateKey(_item.id, k);\n }}\n onRemove={() => {\n remove(_item.id);\n }}\n $isLast={index === list.length - 1}\n />\n ))}\n </UITreeItems>\n </UICollapsible>\n )}\n </UITreeItemRight>\n </>\n );\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { useMemo } from 'react';\n\nimport { isPlainObject } from 'lodash-es';\n\nimport { FlowValueUtils } from '@/shared';\nimport { useObjectList } from '@/hooks';\n\ninterface ListItem {\n id: string;\n key?: string;\n value?: any;\n}\n\nexport function useChildList(\n value?: any,\n onChange?: (value: any) => void\n): {\n canAddField: boolean;\n hasChildren: boolean;\n list: ListItem[];\n add: (defaultValue?: any) => void;\n updateKey: (id: string, key: string) => void;\n updateValue: (id: string, value: any) => void;\n remove: (id: string) => void;\n} {\n const canAddField = useMemo(() => {\n if (!isPlainObject(value)) {\n return false;\n }\n\n if (FlowValueUtils.isFlowValue(value)) {\n // Constant Object Value Can Add child fields\n return FlowValueUtils.isConstant(value) && value?.schema?.type === 'object';\n }\n\n return true;\n }, [value]);\n\n const objectListValue = useMemo(() => {\n if (isPlainObject(value)) {\n if (FlowValueUtils.isFlowValue(value)) {\n return undefined;\n }\n return value;\n }\n return undefined;\n }, [value]);\n\n const { list, add, updateKey, updateValue, remove } = useObjectList<any>({\n value: objectListValue,\n onChange: (value) => {\n onChange?.(value);\n },\n sortIndexKey: (value) => (FlowValueUtils.isFlowValue(value) ? 'extra.index' : ''),\n });\n\n const hasChildren = useMemo(\n () => canAddField && (list.length > 0 || Object.keys(objectListValue || {}).length > 0),\n [canAddField, list.length, Object.keys(objectListValue || {}).length]\n );\n\n return {\n canAddField,\n hasChildren,\n list,\n add,\n updateKey,\n updateValue,\n remove,\n };\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchInputEffect: EffectOptions[] = createEffectFromVariableProvider({\n private: true,\n parse: (value: IFlowRefValue, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}_locals`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: [\n ASTFactory.createProperty({\n key: 'item',\n initializer: ASTFactory.createEnumerateExpression({\n enumerateFor: ASTFactory.createKeyPathExpression({\n keyPath: value.content || [],\n }),\n }),\n }),\n ASTFactory.createProperty({\n key: 'index',\n type: ASTFactory.createNumber(),\n }),\n ],\n }),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n VariableFieldKeyRenameService,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowTemplateValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\n/**\n * Auto rename ref when form item's key is renamed\n *\n * Example:\n *\n * formMeta: {\n * effects: {\n * \"inputsValues\": autoRenameRefEffect,\n * }\n * }\n */\nexport const autoRenameRefEffect: EffectOptions[] = [\n {\n event: DataEvent.onValueInit,\n effect: ((params) => {\n const { context, form, name } = params;\n\n const renameService = context.node.getService(VariableFieldKeyRenameService);\n\n const disposable = renameService.onRename(({ before, after }) => {\n const beforeKeyPath = [\n ...before.parentFields.map((_field) => _field.key).reverse(),\n before.key,\n ];\n const afterKeyPath = [\n ...after.parentFields.map((_field) => _field.key).reverse(),\n after.key,\n ];\n\n // traverse rename refs inside form item 'name'\n traverseRef(name, form.getValueIn(name), (_drilldownName, _v) => {\n if (_v.type === 'ref') {\n // ref auto rename\n if (isKeyPathMatch(_v.content, beforeKeyPath)) {\n _v.content = [...afterKeyPath, ...(_v.content || [])?.slice(beforeKeyPath.length)];\n form.setValueIn(_drilldownName, _v);\n }\n } else if (_v.type === 'template') {\n // template auto rename\n const templateKeyPaths = FlowValueUtils.getTemplateKeyPaths(_v);\n let hasMatch = false;\n\n templateKeyPaths.forEach((_keyPath) => {\n if (isKeyPathMatch(_keyPath, beforeKeyPath)) {\n hasMatch = true;\n const nextKeyPath = [\n ...afterKeyPath,\n ...(_keyPath || [])?.slice(beforeKeyPath.length),\n ];\n _v.content = _v.content?.replace(\n `{{${_keyPath.join('.')}}`,\n `{{${nextKeyPath.join('.')}}`\n );\n }\n });\n\n if (hasMatch) {\n form.setValueIn(_drilldownName, { ..._v });\n }\n }\n });\n });\n\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n\n/**\n * If ref value's keyPath is the under as targetKeyPath\n * @param value\n * @param targetKeyPath\n * @returns\n */\nfunction isKeyPathMatch(keyPath: string[] = [], targetKeyPath: string[]) {\n return targetKeyPath.every((_key, index) => _key === keyPath[index]);\n}\n\n/**\n * Traverse value to find ref\n * @param value\n * @param options\n * @returns\n */\nfunction traverseRef(\n name: string,\n value: any,\n cb: (name: string, _v: IFlowRefValue | IFlowTemplateValue) => void\n) {\n for (const { value: _v, path } of FlowValueUtils.traverse(value, {\n includeTypes: ['ref', 'template'],\n path: name,\n })) {\n cb(path, _v as IFlowRefValue | IFlowTemplateValue);\n }\n}\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { JsonSchemaUtils, IJsonSchema } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n EffectOptions,\n FlowNodeRegistry,\n createEffectFromVariableProvider,\n getNodeForm,\n} from '@flowgram.ai/editor';\n\nexport const provideJsonSchemaOutputs: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: IJsonSchema, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title') || ctx.node.id,\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: JsonSchemaUtils.schemaToAST(value),\n }),\n ],\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n FlowNodeRegistry,\n FlowNodeVariableData,\n} from '@flowgram.ai/editor';\n\nexport const syncVariableTitle: EffectOptions[] = [\n {\n event: DataEvent.onValueChange,\n effect: (({ value, context }) => {\n context.node.getData(FlowNodeVariableData).allScopes.forEach((_scope) => {\n _scope.output.variables.forEach((_var) => {\n _var.updateMeta({\n ...(_var.meta || {}),\n title: value || context.node.id,\n icon: context.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n });\n });\n });\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isEmpty } from 'lodash-es';\nimport {\n DataEvent,\n Effect,\n EffectOptions,\n getNodeScope,\n getNodePrivateScope,\n} from '@flowgram.ai/editor';\n\nexport const validateWhenVariableSync = ({\n scope,\n}: {\n scope?: 'private' | 'public';\n} = {}): EffectOptions[] => [\n {\n event: DataEvent.onValueInit,\n effect: (({ context, form }) => {\n const nodeScope =\n scope === 'private' ? getNodePrivateScope(context.node) : getNodeScope(context.node);\n\n const disposable = nodeScope.available.onListOrAnyVarChange(() => {\n if (!isEmpty(form.state.errors)) {\n form.validate();\n }\n });\n\n return () => disposable.dispose();\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n BaseVariableField,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefValueChange(({ name, variable, form }) => {\n * const schema = JsonSchemaUtils.astToSchema(variable?.type);\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefValueChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { variable?: BaseVariableField }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath(\n value?.content || [],\n (v) => {\n cb({ ...params, variable: v });\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n BaseType,\n DataEvent,\n Effect,\n EffectFuncProps,\n EffectOptions,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\n/**\n * Example:\n * const formMeta = {\n * effect: {\n * 'inputsValues.*': listenRefSchemaChange(({ name, schema, form }) => {\n * form.setValueIn(`${name}.schema`, schema);\n * })\n * }\n * }\n * @param cb\n * @returns\n */\nexport const listenRefSchemaChange = (\n cb: (props: EffectFuncProps<IFlowRefValue> & { schema?: IJsonSchema }) => void\n): EffectOptions[] => [\n {\n event: DataEvent.onValueInitOrChange,\n effect: ((params) => {\n const { context, value } = params;\n\n if (value?.type !== 'ref') {\n return () => null;\n }\n\n const disposable = getNodeScope(context.node).available.trackByKeyPath<BaseType | undefined>(\n value?.content || [],\n (_type) => {\n cb({ ...params, schema: JsonSchemaUtils.astToSchema(_type) });\n },\n {\n selector: (_v) => _v?.type,\n }\n );\n return () => {\n disposable.dispose();\n };\n }) as Effect,\n },\n];\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodePrivateScope,\n getNodeScope,\n ScopeChainTransformService,\n type EffectOptions,\n type FormPluginCreator,\n FlowNodeScopeType,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue } from '@/typings';\n\nexport const provideBatchOutputsEffect: EffectOptions[] = createEffectFromVariableProvider({\n parse: (value: Record<string, IFlowRefValue>, ctx) => [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: Object.entries(value).map(([_key, value]) =>\n ASTFactory.createProperty({\n key: _key,\n initializer: ASTFactory.createWrapArrayExpression({\n wrapFor: ASTFactory.createKeyPathExpression({\n keyPath: value?.content || [],\n }),\n }),\n })\n ),\n }),\n }),\n ],\n});\n\n/**\n * Free Layout only right now\n */\nexport const createBatchOutputsFormPlugin: FormPluginCreator<{ outputKey: string }> =\n defineFormPluginCreator({\n name: 'batch-outputs-plugin',\n onSetupFormMeta({ mergeEffect }, { outputKey }) {\n mergeEffect({\n [outputKey]: provideBatchOutputsEffect,\n });\n },\n onInit(ctx, { outputKey }) {\n const chainTransformService = ctx.node.getService(ScopeChainTransformService);\n\n const batchNodeType = ctx.node.flowNodeType;\n\n const transformerId = `${batchNodeType}-outputs`;\n\n if (chainTransformService.hasTransformer(transformerId)) {\n return;\n }\n\n chainTransformService.registerTransformer(transformerId, {\n transformCovers: (covers, ctx) => {\n const node = ctx.scope.meta?.node;\n\n // Child Node's variable can cover parent\n if (node?.parent?.flowNodeType === batchNodeType) {\n return [...covers, getNodeScope(node.parent)];\n }\n\n return covers;\n },\n transformDeps(scopes, ctx) {\n const scopeMeta = ctx.scope.meta;\n\n if (scopeMeta?.type === FlowNodeScopeType.private) {\n return scopes;\n }\n\n const node = scopeMeta?.node;\n\n // Public of Loop Node depends on child Node\n if (node?.flowNodeType === batchNodeType) {\n // Get all child blocks\n const childBlocks = node.blocks;\n\n // public scope of all child blocks\n return [\n getNodePrivateScope(node),\n ...childBlocks.map((_childBlock) => getNodeScope(_childBlock)),\n ];\n }\n\n return scopes;\n },\n });\n },\n });\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { get, set } from 'lodash-es';\nimport { defineFormPluginCreator, getNodePrivateScope, getNodeScope } from '@flowgram.ai/editor';\n\nimport { FlowValueUtils } from '@/shared';\n\ninterface InputConfig {\n sourceKey: string;\n targetKey: string;\n scope?: 'private' | 'public';\n}\n\nexport const createInferInputsPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit }, { sourceKey, targetKey, scope }) {\n if (!sourceKey || !targetKey) {\n return;\n }\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n targetKey,\n FlowValueUtils.inferJsonSchema(\n get(formData, sourceKey),\n scope === 'private' ? getNodePrivateScope(ctx.node) : getNodeScope(ctx.node)\n )\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { set, uniqBy } from 'lodash-es';\nimport { JsonSchemaUtils } from '@flowgram.ai/json-schema';\nimport {\n ASTFactory,\n createEffectFromVariableProvider,\n defineFormPluginCreator,\n FlowNodeRegistry,\n getNodeForm,\n getNodeScope,\n} from '@flowgram.ai/editor';\n\nimport { IFlowRefValue, IFlowValue } from '@/typings';\n\ntype AssignValueType =\n | {\n operator: 'assign';\n left?: IFlowRefValue;\n right?: IFlowValue;\n }\n | {\n operator: 'declare';\n left?: string;\n right?: IFlowValue;\n };\n\ninterface InputConfig {\n assignKey: string;\n outputKey: string;\n}\n\nexport const createInferAssignPlugin = defineFormPluginCreator<InputConfig>({\n onSetupFormMeta({ addFormatOnSubmit, mergeEffect }, { assignKey, outputKey }) {\n if (!assignKey || !outputKey) {\n return;\n }\n\n mergeEffect({\n [assignKey]: createEffectFromVariableProvider({\n parse: (value: AssignValueType[], ctx) => {\n const declareRows = uniqBy(\n value.filter((_v) => _v.operator === 'declare' && _v.left && _v.right),\n 'left'\n );\n\n return [\n ASTFactory.createVariableDeclaration({\n key: `${ctx.node.id}`,\n meta: {\n title: getNodeForm(ctx.node)?.getValueIn('title'),\n icon: ctx.node.getNodeRegistry<FlowNodeRegistry>().info?.icon,\n },\n type: ASTFactory.createObject({\n properties: declareRows.map((_v) =>\n ASTFactory.createProperty({\n key: _v.left as string,\n type:\n _v.right?.type === 'constant'\n ? JsonSchemaUtils.schemaToAST(_v.right?.schema || {})\n : undefined,\n initializer:\n _v.right?.type === 'ref'\n ? ASTFactory.createKeyPathExpression({\n keyPath: _v.right?.content || [],\n })\n : {},\n })\n ),\n }),\n }),\n ];\n },\n }),\n });\n\n addFormatOnSubmit((formData, ctx) => {\n set(\n formData,\n outputKey,\n JsonSchemaUtils.astToSchema(getNodeScope(ctx.node).output.variables?.[0]?.type)\n );\n\n return formData;\n });\n },\n});\n","/**\n * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\n * SPDX-License-Identifier: MIT\n */\n\nimport { isNil } from 'lodash-es';\nimport { FeedbackLevel, FlowNodeEntity, getNodeScope } from '@flowgram.ai/editor';\n\nimport { IFlowValue } from '@/typings';\nimport { FlowValueUtils } from '@/shared';\n\ninterface Context {\n node: FlowNodeEntity;\n required?: boolean;\n errorMessages?: {\n required?: string;\n unknownVariable?: string;\n };\n}\n\nexport function validateFlowValue(value: IFlowValue | undefined, ctx: Context) {\n const { node, required, errorMessages } = ctx;\n\n const {\n required: requiredMessage = 'Field is required',\n unknownVariable: unknownVariableMessage = 'Unknown Variable',\n } = errorMessages || {};\n\n if (required && (isNil(value) || isNil(value?.content) || value?.content === '')) {\n return {\n level: FeedbackLevel.Error,\n message: requiredMessage,\n };\n }\n\n if (value?.type === 'ref') {\n const variable = getNodeScope(node).available.getByKeyPath(value?.content || []);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n\n if (value?.type === 'template') {\n const allRefs = FlowValueUtils.getTemplateKeyPaths(value);\n\n for (const ref of allRefs) {\n const variable = getNodeScope(node).available.getByKeyPath(ref);\n if (!variable) {\n return {\n level: FeedbackLevel.Error,\n message: unknownVariableMessage,\n };\n }\n }\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["_type","value","React","useMemo","useState","I18n","IconButton","React","value","React","Icon","useEffect","useState","useTypeManager","React","React","useMemo","Input","useMemo","React","Input","React","React","I18n","useState","useMemo","value","IconButton","React","React","React","JsonSchemaUtils","useTypeManager","IconButton","styled","UIContainer","UIType","useEffect","useMemo","useRef","useState","useTypeManager","React","JsonSchemaUtils","IconButton","UIContainer","UIType","React","useMemo","I18n","Input","styled","UIContainer","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","useMemo","I18n","Button","useMemo","I18n","React","Button","useMemo","React","UIContainer","Input","I18n","React","useMemo","I18n","Input","styled","Select","UIContainer","UIOperator","UILeft","UIRight","UIValues","React","useMemo","I18n","Button","Select","IconChevronDownStroked","defaultOpConfigs","useOp","useMemo","I18n","React","Select","Button","IconChevronDownStroked","useMemo","React","useTypeManager","Icon","defaultRules","useMemo","useTypeManager","React","Icon","defaultRuleConfig","useOp","useMemo","React","UIContainer","UIOperator","UIValues","UILeft","UIRight","Input","I18n","React","I18n","Button","Input","IconPlus","useEffect","useRef","useState","difference","genId","value","styled","UIRow","React","UIRow","Input","Button","IconPlus","I18n","React","I18n","Button","IconButton","IconDelete","IconPlus","styled","UIRows","UIRow","React","UIRows","UIRow","I18n","IconButton","IconDelete","Button","IconPlus","React","styled","css","React","React","useEffect","JsonSchemaUtils","React","styled","React","styled","useEffect","JsonSchemaUtils","React","React","useMemo","JsonSchemaUtils","useScopeAvailable","useScopeAvailable","useMemo","JsonSchemaUtils","React","React","useMemo","useScopeAvailable","styled","React","value","useScopeAvailable","useMemo","React","Button","IconPlus","React","IconButton","IconMinus","React","useEffect","useState","Input","BlurInput","value","React","BlurInput","IconButton","IconMinus","React","Button","IconPlus","React","I18n","Button","IconPlus","React","styled","css","Icon","UIContainer","UIRow","UICollapseTrigger","UITreeItems","UITreeItemLeft","UITreeItemRight","UITreeItemMain","UICollapsible","UIActions","iconAddChildrenSvg","IconAddChildren","React","useMemo","useState","I18n","IconButton","Input","IconChevronDown","IconChevronRight","IconDelete","useMemo","isPlainObject","useMemo","isPlainObject","value","React","Input","I18n","useState","useMemo","UITreeItemLeft","UICollapseTrigger","IconChevronDown","IconChevronRight","UITreeItemRight","UITreeItemMain","UIRow","UIActions","IconButton","IconAddChildren","IconDelete","UICollapsible","UITreeItems","value","React","UITreeItems","Button","IconPlus","I18n","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","getNodeForm","DataEvent","DataEvent","DataEvent","getNodeScope","JsonSchemaUtils","DataEvent","getNodeScope","ASTFactory","createEffectFromVariableProvider","getNodeForm","getNodePrivateScope","getNodeScope","value","ctx","get","set","defineFormPluginCreator","getNodePrivateScope","getNodeScope","defineFormPluginCreator","set","get","getNodePrivateScope","getNodeScope","set","JsonSchemaUtils","ASTFactory","createEffectFromVariableProvider","defineFormPluginCreator","getNodeForm","getNodeScope","getNodeScope","getNodeScope"]}