@agentscope-ai/flow 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.zh-CN.md +67 -0
- package/dist/components/base-node/index.d.ts +27 -0
- package/dist/components/base-node/index.js +320 -0
- package/dist/components/base-node/index.less +258 -0
- package/dist/components/branch-title-header/index.d.ts +12 -0
- package/dist/components/branch-title-header/index.js +176 -0
- package/dist/components/branch-title-header/index.less +28 -0
- package/dist/components/check-list-btn/index.d.ts +4 -0
- package/dist/components/check-list-btn/index.js +144 -0
- package/dist/components/check-list-btn/index.less +113 -0
- package/dist/components/code-input/index.d.ts +24 -0
- package/dist/components/code-input/index.js +356 -0
- package/dist/components/code-input/index.less +87 -0
- package/dist/components/condition-item/index.d.ts +13 -0
- package/dist/components/condition-item/index.js +185 -0
- package/dist/components/condition-item/index.less +23 -0
- package/dist/components/custom-connection-line/index.d.ts +4 -0
- package/dist/components/custom-connection-line/index.js +28 -0
- package/dist/components/custom-handle/source-handle.d.ts +10 -0
- package/dist/components/custom-handle/source-handle.js +45 -0
- package/dist/components/custom-handle/target-handle.d.ts +6 -0
- package/dist/components/custom-handle/target-handle.js +21 -0
- package/dist/components/custom-inputs-control/index.d.ts +56 -0
- package/dist/components/custom-inputs-control/index.js +366 -0
- package/dist/components/custom-inputs-control/index.less +28 -0
- package/dist/components/custom-outputs-form/index.d.ts +24 -0
- package/dist/components/custom-outputs-form/index.js +346 -0
- package/dist/components/custom-outputs-form/index.less +51 -0
- package/dist/components/drag-panel/index.d.ts +10 -0
- package/dist/components/drag-panel/index.js +79 -0
- package/dist/components/drag-panel/index.less +23 -0
- package/dist/components/draggable-with-handle/index.d.ts +13 -0
- package/dist/components/draggable-with-handle/index.js +81 -0
- package/dist/components/draggable-with-handle/index.less +23 -0
- package/dist/components/flow-aside/index.d.ts +4 -0
- package/dist/components/flow-aside/index.js +62 -0
- package/dist/components/flow-aside/index.less +84 -0
- package/dist/components/flow-base-edge/index.d.ts +5 -0
- package/dist/components/flow-base-edge/index.js +226 -0
- package/dist/components/flow-base-edge/index.less +28 -0
- package/dist/components/flow-base-edge/linear-gradient-svg.d.ts +21 -0
- package/dist/components/flow-base-edge/linear-gradient-svg.js +32 -0
- package/dist/components/flow-icon/index.d.ts +9 -0
- package/dist/components/flow-icon/index.js +30 -0
- package/dist/components/flow-icon/index.less +20 -0
- package/dist/components/flow-mini-map/index.d.ts +4 -0
- package/dist/components/flow-mini-map/index.js +26 -0
- package/dist/components/flow-mini-map/index.less +22 -0
- package/dist/components/flow-panel/config-panel.d.ts +15 -0
- package/dist/components/flow-panel/config-panel.js +303 -0
- package/dist/components/flow-panel/index.d.ts +7 -0
- package/dist/components/flow-panel/index.js +7 -0
- package/dist/components/flow-panel/index.less +85 -0
- package/dist/components/flow-panel/panel-container.d.ts +12 -0
- package/dist/components/flow-panel/panel-container.js +25 -0
- package/dist/components/flow-tools/add-node-btn.d.ts +3 -0
- package/dist/components/flow-tools/add-node-btn.js +26 -0
- package/dist/components/flow-tools/history-btn.d.ts +3 -0
- package/dist/components/flow-tools/history-btn.js +59 -0
- package/dist/components/flow-tools/index.d.ts +4 -0
- package/dist/components/flow-tools/index.js +29 -0
- package/dist/components/flow-tools/index.less +82 -0
- package/dist/components/flow-tools/layout-btn.d.ts +3 -0
- package/dist/components/flow-tools/layout-btn.js +27 -0
- package/dist/components/flow-tools/mini-map-btn.d.ts +3 -0
- package/dist/components/flow-tools/mini-map-btn.js +32 -0
- package/dist/components/flow-tools/scale-btn.d.ts +3 -0
- package/dist/components/flow-tools/scale-btn.js +101 -0
- package/dist/components/flow-tools/short-key-btn.d.ts +3 -0
- package/dist/components/flow-tools/short-key-btn.js +38 -0
- package/dist/components/flow-tools/short-key-content.d.ts +4 -0
- package/dist/components/flow-tools/short-key-content.js +153 -0
- package/dist/components/flow-tools/short-key-content.less +38 -0
- package/dist/components/flow-tools/touch-mode-btn.d.ts +3 -0
- package/dist/components/flow-tools/touch-mode-btn.js +89 -0
- package/dist/components/input-text-area/index.d.ts +16 -0
- package/dist/components/input-text-area/index.js +74 -0
- package/dist/components/input-text-area/index.less +30 -0
- package/dist/components/judge-form/index.d.ts +13 -0
- package/dist/components/judge-form/index.js +182 -0
- package/dist/components/judge-form/index.less +11 -0
- package/dist/components/node-menu/index.d.ts +35 -0
- package/dist/components/node-menu/index.js +266 -0
- package/dist/components/node-menu/index.less +79 -0
- package/dist/components/node-resizer/index.d.ts +11 -0
- package/dist/components/node-resizer/index.js +46 -0
- package/dist/components/node-resizer/index.less +12 -0
- package/dist/components/node-result-panel/index.d.ts +9 -0
- package/dist/components/node-result-panel/index.js +155 -0
- package/dist/components/node-result-panel/index.less +132 -0
- package/dist/components/node-tree/index.d.ts +4 -0
- package/dist/components/node-tree/index.js +213 -0
- package/dist/components/node-tree/index.less +51 -0
- package/dist/components/output-params-tree/index.d.ts +10 -0
- package/dist/components/output-params-tree/index.js +34 -0
- package/dist/components/output-params-tree/index.less +27 -0
- package/dist/components/script-code-mirror/index.d.ts +14 -0
- package/dist/components/script-code-mirror/index.js +162 -0
- package/dist/components/script-code-mirror/index.less +11 -0
- package/dist/components/script-edit-modal/index.d.ts +30 -0
- package/dist/components/script-edit-modal/index.js +84 -0
- package/dist/components/script-edit-modal/index.less +24 -0
- package/dist/components/select-with-desc/index.d.ts +5 -0
- package/dist/components/select-with-desc/index.js +20 -0
- package/dist/components/select-with-desc/index.less +11 -0
- package/dist/components/task-status/index.d.ts +4 -0
- package/dist/components/task-status/index.js +209 -0
- package/dist/components/task-status/index.less +65 -0
- package/dist/components/var-input-text-area/index.d.ts +17 -0
- package/dist/components/var-input-text-area/index.js +211 -0
- package/dist/components/var-input-text-area/index.less +64 -0
- package/dist/components/var-type-prefix/index.d.ts +17 -0
- package/dist/components/var-type-prefix/index.js +21 -0
- package/dist/components/variable-input/index.d.ts +24 -0
- package/dist/components/variable-input/index.js +163 -0
- package/dist/components/variable-input/index.less +13 -0
- package/dist/components/variable-tree-select/index.d.ts +33 -0
- package/dist/components/variable-tree-select/index.js +160 -0
- package/dist/components/variable-tree-select/index.less +61 -0
- package/dist/constant/index.d.ts +61 -0
- package/dist/constant/index.js +515 -0
- package/dist/flow/animate.css +5 -0
- package/dist/flow/context.d.ts +12 -0
- package/dist/flow/context.js +44 -0
- package/dist/flow/index.d.ts +13 -0
- package/dist/flow/index.js +162 -0
- package/dist/flow/index.less +72 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/use-edges-interaction.d.ts +11 -0
- package/dist/hooks/use-edges-interaction.js +125 -0
- package/dist/hooks/use-flow-debug-interaction.d.ts +5 -0
- package/dist/hooks/use-flow-debug-interaction.js +23 -0
- package/dist/hooks/use-flow-interaction.d.ts +12 -0
- package/dist/hooks/use-flow-interaction.js +173 -0
- package/dist/hooks/use-flow-key-press.d.ts +1 -0
- package/dist/hooks/use-flow-key-press.js +32 -0
- package/dist/hooks/use-flow-save.d.ts +5 -0
- package/dist/hooks/use-flow-save.js +47 -0
- package/dist/hooks/use-flow-view-port.d.ts +7 -0
- package/dist/hooks/use-flow-view-port.js +46 -0
- package/dist/hooks/use-history.d.ts +21 -0
- package/dist/hooks/use-history.js +80 -0
- package/dist/hooks/use-nodes-interaction.d.ts +34 -0
- package/dist/hooks/use-nodes-interaction.js +777 -0
- package/dist/hooks/use-nodes-output-params.d.ts +31 -0
- package/dist/hooks/use-nodes-output-params.js +300 -0
- package/dist/hooks/use-nodes-update.d.ts +9 -0
- package/dist/hooks/use-nodes-update.js +38 -0
- package/dist/hooks/use-work-flow.d.ts +4 -0
- package/dist/hooks/use-work-flow.js +21 -0
- package/dist/i18n/i18n.d.ts +62 -0
- package/dist/i18n/i18n.js +111 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.js +12 -0
- package/dist/i18n/locales/en-us.json +327 -0
- package/dist/i18n/locales/ja-jp.json +300 -0
- package/dist/i18n/locales/zh-cn.json +327 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.js +47 -0
- package/dist/index.less +1 -0
- package/dist/store/index.d.ts +70 -0
- package/dist/store/index.js +146 -0
- package/dist/tailwind.css +28 -0
- package/dist/types/work-flow.d.ts +188 -0
- package/dist/types/work-flow.js +1 -0
- package/dist/utils/default-values.d.ts +2 -0
- package/dist/utils/default-values.js +16 -0
- package/dist/utils/index.d.ts +39 -0
- package/dist/utils/index.js +273 -0
- package/dist/utils/unique-id.d.ts +2 -0
- package/dist/utils/unique-id.js +39 -0
- package/dist/utils/work-flow.d.ts +17 -0
- package/dist/utils/work-flow.js +44 -0
- package/package.json +78 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getCommonConfig } from '@agentscope-ai/design';
|
|
2
|
+
import React, { memo } from 'react';
|
|
3
|
+
export default /*#__PURE__*/memo(function (_ref) {
|
|
4
|
+
var fromX = _ref.fromX,
|
|
5
|
+
fromY = _ref.fromY,
|
|
6
|
+
toX = _ref.toX,
|
|
7
|
+
toY = _ref.toY;
|
|
8
|
+
var controlPoint1X = fromX + (toX - fromX) * 0.5;
|
|
9
|
+
var controlPoint1Y = fromY;
|
|
10
|
+
var controlPoint2X = fromX + (toX - fromX) * 0.5;
|
|
11
|
+
var controlPoint2Y = toY;
|
|
12
|
+
var _getCommonConfig = getCommonConfig(),
|
|
13
|
+
antPrefix = _getCommonConfig.antPrefix;
|
|
14
|
+
return /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("path", {
|
|
15
|
+
fill: "none",
|
|
16
|
+
stroke: "var(--".concat(antPrefix, "-color-primary)"),
|
|
17
|
+
strokeWidth: 1.5,
|
|
18
|
+
className: "animated",
|
|
19
|
+
d: "M".concat(fromX, ",").concat(fromY, " C ").concat(controlPoint1X, " ").concat(controlPoint1Y, " ").concat(controlPoint2X, " ").concat(controlPoint2Y, " ").concat(toX, ",").concat(toY)
|
|
20
|
+
}), /*#__PURE__*/React.createElement("circle", {
|
|
21
|
+
cx: toX,
|
|
22
|
+
cy: toY,
|
|
23
|
+
fill: "var(--".concat(antPrefix, "-color-bg-base)"),
|
|
24
|
+
r: 3,
|
|
25
|
+
stroke: "var(--".concat(antPrefix, "-color-primary)"),
|
|
26
|
+
strokeWidth: 1.5
|
|
27
|
+
}));
|
|
28
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useNodesInteraction } from "../../hooks";
|
|
8
|
+
import { SparkPlusLine } from '@agentscope-ai/icons';
|
|
9
|
+
import { Handle, Position } from '@xyflow/react';
|
|
10
|
+
import React, { useState } from 'react';
|
|
11
|
+
import { PopoverNodeMenu } from "../node-menu";
|
|
12
|
+
export default function SourceHandle(props) {
|
|
13
|
+
var _useState = useState(false),
|
|
14
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
15
|
+
open = _useState2[0],
|
|
16
|
+
setOpen = _useState2[1];
|
|
17
|
+
var _useNodesInteraction = useNodesInteraction(),
|
|
18
|
+
handleSelectNode = _useNodesInteraction.handleSelectNode;
|
|
19
|
+
return /*#__PURE__*/React.createElement(PopoverNodeMenu, {
|
|
20
|
+
source: {
|
|
21
|
+
id: props.nodeId,
|
|
22
|
+
type: props.nodeType,
|
|
23
|
+
handleId: props.handleId
|
|
24
|
+
},
|
|
25
|
+
parentId: props.parentId,
|
|
26
|
+
onOpenChange: function onOpenChange(val) {
|
|
27
|
+
if (val) {
|
|
28
|
+
handleSelectNode(props.nodeId);
|
|
29
|
+
}
|
|
30
|
+
setOpen(val);
|
|
31
|
+
}
|
|
32
|
+
}, /*#__PURE__*/React.createElement(Handle, {
|
|
33
|
+
onClick: function onClick(e) {
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
},
|
|
37
|
+
className: "spark-flow-source-handle flex-center ".concat(open ? 'spark-flow-source-handle-open' : '', " ").concat(props.className),
|
|
38
|
+
type: "source",
|
|
39
|
+
position: Position.Right,
|
|
40
|
+
id: props.handleId
|
|
41
|
+
}, /*#__PURE__*/React.createElement(SparkPlusLine, {
|
|
42
|
+
size: 14,
|
|
43
|
+
className: "spark-flow-source-handle-add-btn"
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Handle, Position, useConnection } from '@xyflow/react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export default function TargetHandle(props) {
|
|
4
|
+
var _useConnection = useConnection(),
|
|
5
|
+
fromNode = _useConnection.fromNode;
|
|
6
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, !fromNode ? false : fromNode.id !== props.handleId && /*#__PURE__*/React.createElement(Handle, {
|
|
7
|
+
className: 'spark-flow-target-handle-full',
|
|
8
|
+
type: "target",
|
|
9
|
+
id: props.handleId,
|
|
10
|
+
position: Position.Left
|
|
11
|
+
}), /*#__PURE__*/React.createElement(Handle, {
|
|
12
|
+
className: "spark-flow-target-handle",
|
|
13
|
+
type: "target",
|
|
14
|
+
position: Position.Left,
|
|
15
|
+
id: props.handleId,
|
|
16
|
+
onClick: function onClick(event) {
|
|
17
|
+
event.stopPropagation();
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
}
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { INodeDataInputParamItem, IValueType } from "../../types/work-flow";
|
|
2
|
+
import { SelectProps } from '@agentscope-ai/design';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { IVarTreeItem } from '../variable-tree-select';
|
|
5
|
+
import './index.less';
|
|
6
|
+
export interface ICustomInputsControlProps {
|
|
7
|
+
value?: INodeDataInputParamItem[];
|
|
8
|
+
onChange: (value: INodeDataInputParamItem[]) => void;
|
|
9
|
+
variableList?: IVarTreeItem[];
|
|
10
|
+
disabledValueFrom?: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
disabledKey?: boolean;
|
|
13
|
+
typeSwitchDisabled?: boolean;
|
|
14
|
+
enabledTypes?: IValueType[];
|
|
15
|
+
disabledTypes?: IValueType[];
|
|
16
|
+
defaultType?: IValueType;
|
|
17
|
+
hideAdd?: boolean;
|
|
18
|
+
hideDelete?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface IVariableFormCompProps {
|
|
21
|
+
data: Omit<INodeDataInputParamItem, 'key'>;
|
|
22
|
+
onChange: (val: Partial<INodeDataInputParamItem>) => void;
|
|
23
|
+
variableList?: IVarTreeItem[];
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
typeSwitchDisabled?: boolean;
|
|
26
|
+
isCompact?: boolean;
|
|
27
|
+
enabledTypes?: IValueType[];
|
|
28
|
+
disabledTypes?: IValueType[];
|
|
29
|
+
}
|
|
30
|
+
export declare const variableLabelRender: ({ value, nodeInfo, hiddenType, }: {
|
|
31
|
+
value: Omit<INodeDataInputParamItem, 'key'>;
|
|
32
|
+
nodeInfo?: {
|
|
33
|
+
nodeName: string;
|
|
34
|
+
variableKey: string;
|
|
35
|
+
nodeType: string;
|
|
36
|
+
} | undefined;
|
|
37
|
+
hiddenType?: boolean | undefined;
|
|
38
|
+
}) => React.JSX.Element | null;
|
|
39
|
+
export declare const VariableSelector: React.MemoExoticComponent<(props: {
|
|
40
|
+
value: Omit<INodeDataInputParamItem, 'key'>;
|
|
41
|
+
onChange: (val: Partial<INodeDataInputParamItem>) => void;
|
|
42
|
+
variableList?: IVarTreeItem[] | undefined;
|
|
43
|
+
prefix?: SelectProps['prefix'];
|
|
44
|
+
variant?: SelectProps['variant'];
|
|
45
|
+
disabled?: boolean | undefined;
|
|
46
|
+
enabledTypes?: IValueType[] | undefined;
|
|
47
|
+
disabledTypes?: IValueType[] | undefined;
|
|
48
|
+
}) => React.JSX.Element>;
|
|
49
|
+
export declare const VariableFormComp: React.MemoExoticComponent<(props: IVariableFormCompProps) => React.JSX.Element | undefined>;
|
|
50
|
+
export declare const variableFromLabelRender: (value: string) => React.JSX.Element | null;
|
|
51
|
+
export declare const VALUE_FROM_OPTIONS: {
|
|
52
|
+
label: React.JSX.Element;
|
|
53
|
+
value: string;
|
|
54
|
+
}[];
|
|
55
|
+
declare const _default: React.NamedExoticComponent<ICustomInputsControlProps>;
|
|
56
|
+
export default _default;
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
|
+
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
|
|
6
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
15
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
|
+
import $i18n from "../../i18n";
|
|
17
|
+
import { extractVariables, matchVariableFromVarItem } from "../../utils";
|
|
18
|
+
import { Button, getCommonConfig, Input, Select } from '@agentscope-ai/design';
|
|
19
|
+
import { SparkClearLine, SparkDeleteLine, SparkEditLine, SparkPlusLine, SparkQuotationLine } from '@agentscope-ai/icons';
|
|
20
|
+
import { theme, Typography } from 'antd';
|
|
21
|
+
import classNames from 'classnames';
|
|
22
|
+
import React, { memo, useCallback, useMemo } from 'react';
|
|
23
|
+
import FlowIcon from "../flow-icon";
|
|
24
|
+
import VariableInput, { VariableBaseInput } from "../variable-input";
|
|
25
|
+
import VariableTreeSelect from "../variable-tree-select";
|
|
26
|
+
import VarTypePrefix, { typeAbbr } from "../var-type-prefix";
|
|
27
|
+
import "./index.less";
|
|
28
|
+
export var variableLabelRender = function variableLabelRender(_ref) {
|
|
29
|
+
var value = _ref.value,
|
|
30
|
+
nodeInfo = _ref.nodeInfo,
|
|
31
|
+
hiddenType = _ref.hiddenType;
|
|
32
|
+
if (!!value && !nodeInfo) {
|
|
33
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, $i18n.get({
|
|
34
|
+
id: 'spark-flow.components.VarInputTextArea.index.invalidVariable',
|
|
35
|
+
dm: '无效变量'
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
if (value.value_from !== 'refer' || !value.value || !nodeInfo) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
42
|
+
className: "spark-flow-var-label flex text-[12px] items-center gap-[2px]"
|
|
43
|
+
}, /*#__PURE__*/React.createElement(FlowIcon, {
|
|
44
|
+
noWidth: true,
|
|
45
|
+
nodeType: nodeInfo.nodeType,
|
|
46
|
+
showBg: false
|
|
47
|
+
}), /*#__PURE__*/React.createElement(Typography.Text, {
|
|
48
|
+
ellipsis: {
|
|
49
|
+
tooltip: nodeInfo.nodeName
|
|
50
|
+
},
|
|
51
|
+
style: {
|
|
52
|
+
maxWidth: '35%'
|
|
53
|
+
}
|
|
54
|
+
}, nodeInfo.nodeName), /*#__PURE__*/React.createElement(Typography.Text, {
|
|
55
|
+
ellipsis: {
|
|
56
|
+
tooltip: nodeInfo.variableKey
|
|
57
|
+
},
|
|
58
|
+
className: "spark-flow-var-name"
|
|
59
|
+
}, "/".concat(nodeInfo.variableKey)), !hiddenType && /*#__PURE__*/React.createElement("span", {
|
|
60
|
+
className: "spark-flow-var-type"
|
|
61
|
+
}, "[".concat(typeAbbr[value.type], "]")));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 标记指定类型的变量为禁用状态,但子变量不受影响
|
|
66
|
+
* @param items 变量列表
|
|
67
|
+
* @param enabledTypes 支持的类型,白名单策略
|
|
68
|
+
* @param disabledTypes 要禁用的类型列表,黑名单策略
|
|
69
|
+
* @returns 标记后的变量列表
|
|
70
|
+
*/
|
|
71
|
+
var markDisabledVarItems = function markDisabledVarItems(items, enabledTypes, disabledTypes) {
|
|
72
|
+
// 如果既没有白名单也没有黑名单,不做任何标记
|
|
73
|
+
if ((!enabledTypes || !enabledTypes.length) && (!disabledTypes || !disabledTypes.length)) {
|
|
74
|
+
return items;
|
|
75
|
+
}
|
|
76
|
+
return items.map(function (item) {
|
|
77
|
+
var isDisabled = false;
|
|
78
|
+
|
|
79
|
+
// 白名单优先:如果设置了enabledTypes,只有在白名单中的类型才可用
|
|
80
|
+
if (enabledTypes && enabledTypes.length > 0) {
|
|
81
|
+
isDisabled = !enabledTypes.includes(item.type);
|
|
82
|
+
}
|
|
83
|
+
// 黑名单策略:如果没有设置enabledTypes,使用disabledTypes
|
|
84
|
+
else if (disabledTypes && disabledTypes.length > 0) {
|
|
85
|
+
isDisabled = disabledTypes.includes(item.type);
|
|
86
|
+
}
|
|
87
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
88
|
+
disabled: isDisabled,
|
|
89
|
+
// 递归处理子变量,子变量不继承父变量的禁用状态
|
|
90
|
+
children: item.children ? markDisabledVarItems(item.children, enabledTypes, disabledTypes) : undefined
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* 标记变量树列表中禁用类型的变量
|
|
97
|
+
*/
|
|
98
|
+
var markDisabledVarTreeItems = function markDisabledVarTreeItems(treeItems, enabledTypes, disabledTypes) {
|
|
99
|
+
if ((!enabledTypes || !enabledTypes.length) && (!disabledTypes || !disabledTypes.length)) {
|
|
100
|
+
return treeItems;
|
|
101
|
+
}
|
|
102
|
+
return treeItems.map(function (node) {
|
|
103
|
+
return _objectSpread(_objectSpread({}, node), {}, {
|
|
104
|
+
children: markDisabledVarItems(node.children, enabledTypes, disabledTypes)
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
export var VariableSelector = /*#__PURE__*/memo(function (props) {
|
|
109
|
+
var markedVariableList = useMemo(function () {
|
|
110
|
+
if (!props.variableList || (!props.enabledTypes || !props.enabledTypes.length) && (!props.disabledTypes || !props.disabledTypes.length)) {
|
|
111
|
+
return props.variableList;
|
|
112
|
+
}
|
|
113
|
+
return markDisabledVarTreeItems(props.variableList, props.enabledTypes, props.disabledTypes);
|
|
114
|
+
}, [props.variableList, props.enabledTypes, props.disabledTypes]);
|
|
115
|
+
var nodeInfo = useMemo(function () {
|
|
116
|
+
if (!props.value.value) return;
|
|
117
|
+
var finalValue = extractVariables(props.value.value.replace(/[\[\]]/g, ''))[0];
|
|
118
|
+
var list = finalValue === null || finalValue === void 0 ? void 0 : finalValue.split('.');
|
|
119
|
+
if (!(list !== null && list !== void 0 && list.length)) return;
|
|
120
|
+
var _list = _toArray(list),
|
|
121
|
+
nodeId = _list[0],
|
|
122
|
+
variableKeyList = _list.slice(1);
|
|
123
|
+
var targetNode = markedVariableList === null || markedVariableList === void 0 ? void 0 : markedVariableList.find(function (node) {
|
|
124
|
+
return node.nodeId === nodeId;
|
|
125
|
+
});
|
|
126
|
+
if (!targetNode) return;
|
|
127
|
+
var targetVar = matchVariableFromVarItem(props.value.value, targetNode.children || []);
|
|
128
|
+
if (!targetVar) return;
|
|
129
|
+
return {
|
|
130
|
+
nodeName: targetNode.label,
|
|
131
|
+
variableKey: variableKeyList.join('.'),
|
|
132
|
+
nodeType: targetNode.nodeType
|
|
133
|
+
};
|
|
134
|
+
}, [props.value, markedVariableList]);
|
|
135
|
+
return /*#__PURE__*/React.createElement(VariableTreeSelect, {
|
|
136
|
+
onChange: function onChange(val) {
|
|
137
|
+
props.onChange({
|
|
138
|
+
value: val.value,
|
|
139
|
+
type: val.type
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
disabled: props.disabled,
|
|
143
|
+
options: markedVariableList
|
|
144
|
+
}, /*#__PURE__*/React.createElement(Select, {
|
|
145
|
+
disabled: props.disabled,
|
|
146
|
+
placeholder: $i18n.get({
|
|
147
|
+
id: 'spark-flow.components.CustomInputsControl.index.selectVariable',
|
|
148
|
+
dm: '请选择变量'
|
|
149
|
+
}),
|
|
150
|
+
labelRender: function labelRender() {
|
|
151
|
+
return variableLabelRender({
|
|
152
|
+
value: props.value,
|
|
153
|
+
nodeInfo: nodeInfo,
|
|
154
|
+
hiddenType: !!props.prefix
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
className: classNames('w-full', 'spark-flow-variable-select'),
|
|
158
|
+
open: false,
|
|
159
|
+
value: !props.value.value ? undefined : props.value.value,
|
|
160
|
+
prefix: props.prefix ? /*#__PURE__*/React.createElement(VarTypePrefix, {
|
|
161
|
+
prefix: props.prefix
|
|
162
|
+
}) : undefined,
|
|
163
|
+
variant: props.variant
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
166
|
+
export var VariableFormComp = /*#__PURE__*/memo(function (props) {
|
|
167
|
+
if (props.data.value_from === 'clear') return /*#__PURE__*/React.createElement(Input, {
|
|
168
|
+
className: "flex-1",
|
|
169
|
+
disabled: true,
|
|
170
|
+
placeholder: $i18n.get({
|
|
171
|
+
id: 'spark-flow.components.CustomInputsControl.index.noInputNeeded',
|
|
172
|
+
dm: '不需要输入值'
|
|
173
|
+
})
|
|
174
|
+
});
|
|
175
|
+
if (props.data.value_from === 'refer') return /*#__PURE__*/React.createElement(VariableSelector, {
|
|
176
|
+
disabled: props.disabled,
|
|
177
|
+
value: props.data,
|
|
178
|
+
onChange: props.onChange,
|
|
179
|
+
variableList: props.variableList,
|
|
180
|
+
enabledTypes: props.enabledTypes,
|
|
181
|
+
disabledTypes: props.disabledTypes
|
|
182
|
+
});
|
|
183
|
+
if (props.data.value_from === 'input') {
|
|
184
|
+
if (props.typeSwitchDisabled) {
|
|
185
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
186
|
+
className: "flex-1"
|
|
187
|
+
}, /*#__PURE__*/React.createElement(VariableBaseInput, {
|
|
188
|
+
isCompact: props.isCompact,
|
|
189
|
+
disabled: props.disabled,
|
|
190
|
+
value: props.data.value,
|
|
191
|
+
type: props.data.type,
|
|
192
|
+
onChange: props.onChange,
|
|
193
|
+
prefix: props.data.type
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
return /*#__PURE__*/React.createElement(VariableInput, {
|
|
197
|
+
enabledTypes: props.enabledTypes,
|
|
198
|
+
disabledTypes: props.disabledTypes,
|
|
199
|
+
disabled: props.disabled,
|
|
200
|
+
value: props.data.value,
|
|
201
|
+
type: props.data.type,
|
|
202
|
+
onChange: props.onChange
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
export var variableFromLabelRender = function variableFromLabelRender(value) {
|
|
207
|
+
if (value === 'refer') return /*#__PURE__*/React.createElement(SparkQuotationLine, {
|
|
208
|
+
size: 16
|
|
209
|
+
});
|
|
210
|
+
if (value === 'input') return /*#__PURE__*/React.createElement(SparkEditLine, {
|
|
211
|
+
size: 16
|
|
212
|
+
});
|
|
213
|
+
if (value === 'clear') return /*#__PURE__*/React.createElement(SparkClearLine, {
|
|
214
|
+
size: 16
|
|
215
|
+
});
|
|
216
|
+
return null;
|
|
217
|
+
};
|
|
218
|
+
export var VALUE_FROM_OPTIONS = [{
|
|
219
|
+
label: /*#__PURE__*/React.createElement("div", {
|
|
220
|
+
className: "flex items-center gap-[8px]"
|
|
221
|
+
}, /*#__PURE__*/React.createElement(SparkQuotationLine, {
|
|
222
|
+
size: 16
|
|
223
|
+
}), $i18n.get({
|
|
224
|
+
id: 'spark-flow.components.CustomInputsControl.index.reference',
|
|
225
|
+
dm: '引用'
|
|
226
|
+
})),
|
|
227
|
+
value: 'refer'
|
|
228
|
+
}, {
|
|
229
|
+
label: /*#__PURE__*/React.createElement("div", {
|
|
230
|
+
className: "flex items-center gap-[8px]"
|
|
231
|
+
}, /*#__PURE__*/React.createElement(SparkEditLine, {
|
|
232
|
+
size: 16
|
|
233
|
+
}), $i18n.get({
|
|
234
|
+
id: 'spark-flow.components.CustomInputsControl.index.input',
|
|
235
|
+
dm: '输入'
|
|
236
|
+
})),
|
|
237
|
+
value: 'input'
|
|
238
|
+
}];
|
|
239
|
+
export default /*#__PURE__*/memo(function CustomInputsControl(props) {
|
|
240
|
+
var _props$value = props.value,
|
|
241
|
+
value = _props$value === void 0 ? [] : _props$value;
|
|
242
|
+
var _theme$useToken = theme.useToken(),
|
|
243
|
+
token = _theme$useToken.token;
|
|
244
|
+
var changeRowValue = useCallback(function (ind, payload) {
|
|
245
|
+
var newVal = value.map(function (item, index) {
|
|
246
|
+
if (index === ind) {
|
|
247
|
+
if (payload.value_from === 'input' && !payload.type) {
|
|
248
|
+
payload.type = 'String';
|
|
249
|
+
}
|
|
250
|
+
return _objectSpread(_objectSpread({}, item), payload);
|
|
251
|
+
}
|
|
252
|
+
return item;
|
|
253
|
+
});
|
|
254
|
+
props.onChange(newVal);
|
|
255
|
+
}, [props.onChange, value]);
|
|
256
|
+
var handleAddVar = useCallback(function () {
|
|
257
|
+
props.onChange([].concat(_toConsumableArray(value), [{
|
|
258
|
+
key: '',
|
|
259
|
+
value_from: 'refer',
|
|
260
|
+
type: props.defaultType || 'String'
|
|
261
|
+
}]));
|
|
262
|
+
}, [props.defaultType, props.onChange, value]);
|
|
263
|
+
var removeVariable = useCallback(function (index) {
|
|
264
|
+
props.onChange(value.filter(function (_, i) {
|
|
265
|
+
return i !== index;
|
|
266
|
+
}));
|
|
267
|
+
}, [props.onChange, value]);
|
|
268
|
+
var _getCommonConfig = getCommonConfig(),
|
|
269
|
+
antPrefix = _getCommonConfig.antPrefix;
|
|
270
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
271
|
+
className: "spark-flow-inputs-form-label flex gap-[8px]"
|
|
272
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
273
|
+
style: {
|
|
274
|
+
width: props.disabledValueFrom ? 146 : 84
|
|
275
|
+
}
|
|
276
|
+
}, $i18n.get({
|
|
277
|
+
id: 'spark-flow.components.CustomInputsControl.index.variableName',
|
|
278
|
+
dm: '变量名'
|
|
279
|
+
})), !props.disabledValueFrom && /*#__PURE__*/React.createElement("div", {
|
|
280
|
+
style: {
|
|
281
|
+
width: 60
|
|
282
|
+
}
|
|
283
|
+
}, $i18n.get({
|
|
284
|
+
id: 'spark-flow.components.CustomInputsControl.index.referenceType',
|
|
285
|
+
dm: '引用方式'
|
|
286
|
+
})), /*#__PURE__*/React.createElement("div", null, $i18n.get({
|
|
287
|
+
id: 'spark-flow.components.CustomInputsControl.index.value',
|
|
288
|
+
dm: '值'
|
|
289
|
+
}))), value.map(function (item, index) {
|
|
290
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
291
|
+
key: index,
|
|
292
|
+
className: "spark-flow-inputs-form-item flex gap-[8px] items-stretch w-full"
|
|
293
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
294
|
+
style: {
|
|
295
|
+
width: props.disabledValueFrom ? 146 : 84
|
|
296
|
+
},
|
|
297
|
+
className: "flex-shrink-0",
|
|
298
|
+
value: item.key,
|
|
299
|
+
placeholder: $i18n.get({
|
|
300
|
+
id: 'spark-flow.components.CustomInputsControl.index.enterVariableName',
|
|
301
|
+
dm: '请输入变量名'
|
|
302
|
+
}),
|
|
303
|
+
onChange: function onChange(e) {
|
|
304
|
+
return changeRowValue(index, {
|
|
305
|
+
key: e.target.value
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
disabled: props.disabled || props.disabledKey,
|
|
309
|
+
suffix: item.required ? /*#__PURE__*/React.createElement("span", {
|
|
310
|
+
className: "text-[14px]",
|
|
311
|
+
style: {
|
|
312
|
+
color: token.colorError
|
|
313
|
+
}
|
|
314
|
+
}, "*") : null
|
|
315
|
+
}), !props.disabledValueFrom && /*#__PURE__*/React.createElement(Select, {
|
|
316
|
+
style: {
|
|
317
|
+
width: 60
|
|
318
|
+
},
|
|
319
|
+
className: "flex-shrink-0 spark-flow-variable-from-select",
|
|
320
|
+
value: item.value_from,
|
|
321
|
+
onChange: function onChange(val) {
|
|
322
|
+
return changeRowValue(index, {
|
|
323
|
+
value_from: val,
|
|
324
|
+
value: void 0
|
|
325
|
+
});
|
|
326
|
+
},
|
|
327
|
+
disabled: props.disabled,
|
|
328
|
+
options: VALUE_FROM_OPTIONS,
|
|
329
|
+
labelRender: function labelRender(props) {
|
|
330
|
+
return variableFromLabelRender(props.value);
|
|
331
|
+
},
|
|
332
|
+
popupMatchSelectWidth: false
|
|
333
|
+
}), /*#__PURE__*/React.createElement(VariableFormComp, {
|
|
334
|
+
onChange: function onChange(payload) {
|
|
335
|
+
return changeRowValue(index, payload);
|
|
336
|
+
},
|
|
337
|
+
data: item,
|
|
338
|
+
disabled: props.disabled,
|
|
339
|
+
variableList: props.variableList,
|
|
340
|
+
typeSwitchDisabled: props.typeSwitchDisabled,
|
|
341
|
+
enabledTypes: props.enabledTypes,
|
|
342
|
+
disabledTypes: props.disabledTypes
|
|
343
|
+
}), !props.hideDelete && /*#__PURE__*/React.createElement(SparkDeleteLine, {
|
|
344
|
+
onClick: function onClick() {
|
|
345
|
+
if (props.disabled) return;
|
|
346
|
+
removeVariable(index);
|
|
347
|
+
},
|
|
348
|
+
className: props.disabled ? 'spark-flow-disabled-icon-btn' : '',
|
|
349
|
+
style: {
|
|
350
|
+
color: "var(--".concat(antPrefix, "-color-text-tertiary)"),
|
|
351
|
+
cursor: props.disabled ? 'not-allowed' : 'pointer'
|
|
352
|
+
},
|
|
353
|
+
size: 16
|
|
354
|
+
}));
|
|
355
|
+
}), !props.hideAdd && /*#__PURE__*/React.createElement(Button, {
|
|
356
|
+
className: "spark-flow-text-btn self-start",
|
|
357
|
+
icon: /*#__PURE__*/React.createElement(SparkPlusLine, null),
|
|
358
|
+
type: "link",
|
|
359
|
+
size: "small",
|
|
360
|
+
onClick: handleAddVar,
|
|
361
|
+
disabled: props.disabled
|
|
362
|
+
}, $i18n.get({
|
|
363
|
+
id: 'spark-flow.components.CustomInputsControl.index.addVariable',
|
|
364
|
+
dm: '添加变量'
|
|
365
|
+
})));
|
|
366
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
@import '../../index.less';
|
|
2
|
+
.spark-flow-variable-select {
|
|
3
|
+
.@{ant-prefix}-popover-content {
|
|
4
|
+
max-height: 300px;
|
|
5
|
+
overflow-y: auto;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
.spark-flow-variable-from-select {
|
|
9
|
+
height: auto !important;
|
|
10
|
+
|
|
11
|
+
.@{ant-prefix}-select-selection-item {
|
|
12
|
+
height: 30px;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.spark-flow-var-label {
|
|
17
|
+
.spark-flow-var-name {
|
|
18
|
+
font-weight: 500;
|
|
19
|
+
flex: 1;
|
|
20
|
+
width: 1px;
|
|
21
|
+
color: e('var(--@{ant-prefix}-color-primary)');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.spark-flow-var-type {
|
|
26
|
+
color: e('var(--@{ant-prefix}-color-text-tertiary)');
|
|
27
|
+
font-family: Menlo, monospace;
|
|
28
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { INodeDataOutputParamItem, IValueType } from "../../types/work-flow";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import './index.less';
|
|
4
|
+
export interface IVariableTypeSelectProps {
|
|
5
|
+
handleChange: (type: IValueType) => void;
|
|
6
|
+
type?: IValueType;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
style?: React.CSSProperties;
|
|
9
|
+
isMini?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
enabledTypes?: (IValueType | 'Array')[];
|
|
12
|
+
disabledTypes?: (IValueType | 'Array')[];
|
|
13
|
+
}
|
|
14
|
+
export declare const VariableTypeSelect: React.MemoExoticComponent<(props: IVariableTypeSelectProps) => React.JSX.Element>;
|
|
15
|
+
export interface ICustomOutputsFormProps {
|
|
16
|
+
value?: INodeDataOutputParamItem[];
|
|
17
|
+
onChange?: (params: INodeDataOutputParamItem[]) => void;
|
|
18
|
+
readyOnly?: boolean | boolean[] | string[][];
|
|
19
|
+
isRoot?: boolean;
|
|
20
|
+
enabledTypes?: (IValueType | 'Array')[];
|
|
21
|
+
disabledTypes?: (IValueType | 'Array')[];
|
|
22
|
+
}
|
|
23
|
+
export declare const CustomOutputsForm: React.NamedExoticComponent<ICustomOutputsFormProps>;
|
|
24
|
+
export declare const CustomOutputsFormWrap: React.NamedExoticComponent<ICustomOutputsFormProps>;
|