@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.
Files changed (176) hide show
  1. package/README.zh-CN.md +67 -0
  2. package/dist/components/base-node/index.d.ts +27 -0
  3. package/dist/components/base-node/index.js +320 -0
  4. package/dist/components/base-node/index.less +258 -0
  5. package/dist/components/branch-title-header/index.d.ts +12 -0
  6. package/dist/components/branch-title-header/index.js +176 -0
  7. package/dist/components/branch-title-header/index.less +28 -0
  8. package/dist/components/check-list-btn/index.d.ts +4 -0
  9. package/dist/components/check-list-btn/index.js +144 -0
  10. package/dist/components/check-list-btn/index.less +113 -0
  11. package/dist/components/code-input/index.d.ts +24 -0
  12. package/dist/components/code-input/index.js +356 -0
  13. package/dist/components/code-input/index.less +87 -0
  14. package/dist/components/condition-item/index.d.ts +13 -0
  15. package/dist/components/condition-item/index.js +185 -0
  16. package/dist/components/condition-item/index.less +23 -0
  17. package/dist/components/custom-connection-line/index.d.ts +4 -0
  18. package/dist/components/custom-connection-line/index.js +28 -0
  19. package/dist/components/custom-handle/source-handle.d.ts +10 -0
  20. package/dist/components/custom-handle/source-handle.js +45 -0
  21. package/dist/components/custom-handle/target-handle.d.ts +6 -0
  22. package/dist/components/custom-handle/target-handle.js +21 -0
  23. package/dist/components/custom-inputs-control/index.d.ts +56 -0
  24. package/dist/components/custom-inputs-control/index.js +366 -0
  25. package/dist/components/custom-inputs-control/index.less +28 -0
  26. package/dist/components/custom-outputs-form/index.d.ts +24 -0
  27. package/dist/components/custom-outputs-form/index.js +346 -0
  28. package/dist/components/custom-outputs-form/index.less +51 -0
  29. package/dist/components/drag-panel/index.d.ts +10 -0
  30. package/dist/components/drag-panel/index.js +79 -0
  31. package/dist/components/drag-panel/index.less +23 -0
  32. package/dist/components/draggable-with-handle/index.d.ts +13 -0
  33. package/dist/components/draggable-with-handle/index.js +81 -0
  34. package/dist/components/draggable-with-handle/index.less +23 -0
  35. package/dist/components/flow-aside/index.d.ts +4 -0
  36. package/dist/components/flow-aside/index.js +62 -0
  37. package/dist/components/flow-aside/index.less +84 -0
  38. package/dist/components/flow-base-edge/index.d.ts +5 -0
  39. package/dist/components/flow-base-edge/index.js +226 -0
  40. package/dist/components/flow-base-edge/index.less +28 -0
  41. package/dist/components/flow-base-edge/linear-gradient-svg.d.ts +21 -0
  42. package/dist/components/flow-base-edge/linear-gradient-svg.js +32 -0
  43. package/dist/components/flow-icon/index.d.ts +9 -0
  44. package/dist/components/flow-icon/index.js +30 -0
  45. package/dist/components/flow-icon/index.less +20 -0
  46. package/dist/components/flow-mini-map/index.d.ts +4 -0
  47. package/dist/components/flow-mini-map/index.js +26 -0
  48. package/dist/components/flow-mini-map/index.less +22 -0
  49. package/dist/components/flow-panel/config-panel.d.ts +15 -0
  50. package/dist/components/flow-panel/config-panel.js +303 -0
  51. package/dist/components/flow-panel/index.d.ts +7 -0
  52. package/dist/components/flow-panel/index.js +7 -0
  53. package/dist/components/flow-panel/index.less +85 -0
  54. package/dist/components/flow-panel/panel-container.d.ts +12 -0
  55. package/dist/components/flow-panel/panel-container.js +25 -0
  56. package/dist/components/flow-tools/add-node-btn.d.ts +3 -0
  57. package/dist/components/flow-tools/add-node-btn.js +26 -0
  58. package/dist/components/flow-tools/history-btn.d.ts +3 -0
  59. package/dist/components/flow-tools/history-btn.js +59 -0
  60. package/dist/components/flow-tools/index.d.ts +4 -0
  61. package/dist/components/flow-tools/index.js +29 -0
  62. package/dist/components/flow-tools/index.less +82 -0
  63. package/dist/components/flow-tools/layout-btn.d.ts +3 -0
  64. package/dist/components/flow-tools/layout-btn.js +27 -0
  65. package/dist/components/flow-tools/mini-map-btn.d.ts +3 -0
  66. package/dist/components/flow-tools/mini-map-btn.js +32 -0
  67. package/dist/components/flow-tools/scale-btn.d.ts +3 -0
  68. package/dist/components/flow-tools/scale-btn.js +101 -0
  69. package/dist/components/flow-tools/short-key-btn.d.ts +3 -0
  70. package/dist/components/flow-tools/short-key-btn.js +38 -0
  71. package/dist/components/flow-tools/short-key-content.d.ts +4 -0
  72. package/dist/components/flow-tools/short-key-content.js +153 -0
  73. package/dist/components/flow-tools/short-key-content.less +38 -0
  74. package/dist/components/flow-tools/touch-mode-btn.d.ts +3 -0
  75. package/dist/components/flow-tools/touch-mode-btn.js +89 -0
  76. package/dist/components/input-text-area/index.d.ts +16 -0
  77. package/dist/components/input-text-area/index.js +74 -0
  78. package/dist/components/input-text-area/index.less +30 -0
  79. package/dist/components/judge-form/index.d.ts +13 -0
  80. package/dist/components/judge-form/index.js +182 -0
  81. package/dist/components/judge-form/index.less +11 -0
  82. package/dist/components/node-menu/index.d.ts +35 -0
  83. package/dist/components/node-menu/index.js +266 -0
  84. package/dist/components/node-menu/index.less +79 -0
  85. package/dist/components/node-resizer/index.d.ts +11 -0
  86. package/dist/components/node-resizer/index.js +46 -0
  87. package/dist/components/node-resizer/index.less +12 -0
  88. package/dist/components/node-result-panel/index.d.ts +9 -0
  89. package/dist/components/node-result-panel/index.js +155 -0
  90. package/dist/components/node-result-panel/index.less +132 -0
  91. package/dist/components/node-tree/index.d.ts +4 -0
  92. package/dist/components/node-tree/index.js +213 -0
  93. package/dist/components/node-tree/index.less +51 -0
  94. package/dist/components/output-params-tree/index.d.ts +10 -0
  95. package/dist/components/output-params-tree/index.js +34 -0
  96. package/dist/components/output-params-tree/index.less +27 -0
  97. package/dist/components/script-code-mirror/index.d.ts +14 -0
  98. package/dist/components/script-code-mirror/index.js +162 -0
  99. package/dist/components/script-code-mirror/index.less +11 -0
  100. package/dist/components/script-edit-modal/index.d.ts +30 -0
  101. package/dist/components/script-edit-modal/index.js +84 -0
  102. package/dist/components/script-edit-modal/index.less +24 -0
  103. package/dist/components/select-with-desc/index.d.ts +5 -0
  104. package/dist/components/select-with-desc/index.js +20 -0
  105. package/dist/components/select-with-desc/index.less +11 -0
  106. package/dist/components/task-status/index.d.ts +4 -0
  107. package/dist/components/task-status/index.js +209 -0
  108. package/dist/components/task-status/index.less +65 -0
  109. package/dist/components/var-input-text-area/index.d.ts +17 -0
  110. package/dist/components/var-input-text-area/index.js +211 -0
  111. package/dist/components/var-input-text-area/index.less +64 -0
  112. package/dist/components/var-type-prefix/index.d.ts +17 -0
  113. package/dist/components/var-type-prefix/index.js +21 -0
  114. package/dist/components/variable-input/index.d.ts +24 -0
  115. package/dist/components/variable-input/index.js +163 -0
  116. package/dist/components/variable-input/index.less +13 -0
  117. package/dist/components/variable-tree-select/index.d.ts +33 -0
  118. package/dist/components/variable-tree-select/index.js +160 -0
  119. package/dist/components/variable-tree-select/index.less +61 -0
  120. package/dist/constant/index.d.ts +61 -0
  121. package/dist/constant/index.js +515 -0
  122. package/dist/flow/animate.css +5 -0
  123. package/dist/flow/context.d.ts +12 -0
  124. package/dist/flow/context.js +44 -0
  125. package/dist/flow/index.d.ts +13 -0
  126. package/dist/flow/index.js +162 -0
  127. package/dist/flow/index.less +72 -0
  128. package/dist/hooks/index.d.ts +10 -0
  129. package/dist/hooks/index.js +10 -0
  130. package/dist/hooks/use-edges-interaction.d.ts +11 -0
  131. package/dist/hooks/use-edges-interaction.js +125 -0
  132. package/dist/hooks/use-flow-debug-interaction.d.ts +5 -0
  133. package/dist/hooks/use-flow-debug-interaction.js +23 -0
  134. package/dist/hooks/use-flow-interaction.d.ts +12 -0
  135. package/dist/hooks/use-flow-interaction.js +173 -0
  136. package/dist/hooks/use-flow-key-press.d.ts +1 -0
  137. package/dist/hooks/use-flow-key-press.js +32 -0
  138. package/dist/hooks/use-flow-save.d.ts +5 -0
  139. package/dist/hooks/use-flow-save.js +47 -0
  140. package/dist/hooks/use-flow-view-port.d.ts +7 -0
  141. package/dist/hooks/use-flow-view-port.js +46 -0
  142. package/dist/hooks/use-history.d.ts +21 -0
  143. package/dist/hooks/use-history.js +80 -0
  144. package/dist/hooks/use-nodes-interaction.d.ts +34 -0
  145. package/dist/hooks/use-nodes-interaction.js +777 -0
  146. package/dist/hooks/use-nodes-output-params.d.ts +31 -0
  147. package/dist/hooks/use-nodes-output-params.js +300 -0
  148. package/dist/hooks/use-nodes-update.d.ts +9 -0
  149. package/dist/hooks/use-nodes-update.js +38 -0
  150. package/dist/hooks/use-work-flow.d.ts +4 -0
  151. package/dist/hooks/use-work-flow.js +21 -0
  152. package/dist/i18n/i18n.d.ts +62 -0
  153. package/dist/i18n/i18n.js +111 -0
  154. package/dist/i18n/index.d.ts +3 -0
  155. package/dist/i18n/index.js +12 -0
  156. package/dist/i18n/locales/en-us.json +327 -0
  157. package/dist/i18n/locales/ja-jp.json +300 -0
  158. package/dist/i18n/locales/zh-cn.json +327 -0
  159. package/dist/index.css +1 -0
  160. package/dist/index.d.ts +47 -0
  161. package/dist/index.js +47 -0
  162. package/dist/index.less +1 -0
  163. package/dist/store/index.d.ts +70 -0
  164. package/dist/store/index.js +146 -0
  165. package/dist/tailwind.css +28 -0
  166. package/dist/types/work-flow.d.ts +188 -0
  167. package/dist/types/work-flow.js +1 -0
  168. package/dist/utils/default-values.d.ts +2 -0
  169. package/dist/utils/default-values.js +16 -0
  170. package/dist/utils/index.d.ts +39 -0
  171. package/dist/utils/index.js +273 -0
  172. package/dist/utils/unique-id.d.ts +2 -0
  173. package/dist/utils/unique-id.js +39 -0
  174. package/dist/utils/work-flow.d.ts +17 -0
  175. package/dist/utils/work-flow.js +44 -0
  176. 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,10 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ handleId: string;
4
+ nodeType: string;
5
+ nodeId: string;
6
+ className?: string;
7
+ parentId?: string;
8
+ }
9
+ export default function SourceHandle(props: IProps): React.JSX.Element;
10
+ export {};
@@ -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,6 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ handleId: string;
4
+ }
5
+ export default function TargetHandle(props: IProps): React.JSX.Element;
6
+ export {};
@@ -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>;