@uipath/apollo-react 4.11.0 → 4.12.1-pr556.9394355

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 (170) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +26 -7
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +26 -7
  4. package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +2 -2
  5. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +8 -1
  6. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  7. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +2 -2
  8. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +1 -0
  9. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  10. package/dist/canvas/components/BaseNode/BaseNode.cjs +8 -3
  11. package/dist/canvas/components/BaseNode/BaseNode.d.ts +2 -1
  12. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  13. package/dist/canvas/components/BaseNode/BaseNode.js +5 -3
  14. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +115 -34
  15. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +4 -2
  16. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
  17. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +117 -36
  18. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.cjs +48 -1
  19. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts +4 -0
  20. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts.map +1 -1
  21. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.js +36 -1
  22. package/dist/canvas/components/ButtonHandle/SmartHandle.cjs +1 -1
  23. package/dist/canvas/components/ButtonHandle/SmartHandle.js +1 -1
  24. package/dist/canvas/components/Edges/SequenceEdge.cjs +3 -2
  25. package/dist/canvas/components/Edges/SequenceEdge.d.ts +11 -2
  26. package/dist/canvas/components/Edges/SequenceEdge.d.ts.map +1 -1
  27. package/dist/canvas/components/Edges/SequenceEdge.js +4 -3
  28. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +20 -10
  29. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts +2 -0
  30. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  31. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +21 -11
  32. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.cjs +5 -8
  33. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.d.ts.map +1 -1
  34. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.js +5 -8
  35. package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +80 -0
  36. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
  37. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
  38. package/dist/canvas/components/LoopNode/LoopCanvasNode.js +46 -0
  39. package/dist/canvas/components/LoopNode/LoopNode.cjs +440 -0
  40. package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +77 -0
  41. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +12 -0
  42. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
  43. package/dist/canvas/components/LoopNode/LoopNode.constants.js +13 -0
  44. package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
  45. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
  46. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +110 -0
  47. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +19 -0
  48. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
  49. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +70 -0
  50. package/dist/canvas/components/LoopNode/LoopNode.js +406 -0
  51. package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
  52. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +16 -0
  53. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
  54. package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
  55. package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +81 -0
  56. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +8 -0
  57. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
  58. package/dist/canvas/components/LoopNode/LoopNodePreview.js +44 -0
  59. package/dist/canvas/components/LoopNode/index.cjs +72 -0
  60. package/dist/canvas/components/LoopNode/index.d.ts +4 -0
  61. package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
  62. package/dist/canvas/components/LoopNode/index.js +3 -0
  63. package/dist/canvas/components/StageNode/DraggableTask.cjs +3 -17
  64. package/dist/canvas/components/StageNode/DraggableTask.d.ts.map +1 -1
  65. package/dist/canvas/components/StageNode/DraggableTask.js +3 -17
  66. package/dist/canvas/components/StageNode/EventDrivenTask.cjs +80 -0
  67. package/dist/canvas/components/StageNode/EventDrivenTask.d.ts +13 -0
  68. package/dist/canvas/components/StageNode/EventDrivenTask.d.ts.map +1 -0
  69. package/dist/canvas/components/StageNode/EventDrivenTask.js +46 -0
  70. package/dist/canvas/components/StageNode/StageNode.cjs +29 -581
  71. package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
  72. package/dist/canvas/components/StageNode/StageNode.js +28 -580
  73. package/dist/canvas/components/StageNode/StageNode.styles.cjs +12 -12
  74. package/dist/canvas/components/StageNode/StageNode.styles.d.ts +3 -3
  75. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  76. package/dist/canvas/components/StageNode/StageNode.styles.js +4 -4
  77. package/dist/canvas/components/StageNode/StageNode.types.d.ts +11 -0
  78. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  79. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.cjs +98 -0
  80. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.d.ts +13 -0
  81. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.d.ts.map +1 -0
  82. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.js +64 -0
  83. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.cjs +129 -0
  84. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.d.ts +12 -0
  85. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.d.ts.map +1 -0
  86. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.js +95 -0
  87. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.cjs +97 -0
  88. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.d.ts +13 -0
  89. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.d.ts.map +1 -0
  90. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.js +63 -0
  91. package/dist/canvas/components/StageNode/StageNodeHandles.cjs +119 -0
  92. package/dist/canvas/components/StageNode/StageNodeHandles.d.ts +8 -0
  93. package/dist/canvas/components/StageNode/StageNodeHandles.d.ts.map +1 -0
  94. package/dist/canvas/components/StageNode/StageNodeHandles.js +85 -0
  95. package/dist/canvas/components/StageNode/StageNodeHeader.cjs +245 -0
  96. package/dist/canvas/components/StageNode/StageNodeHeader.d.ts +9 -0
  97. package/dist/canvas/components/StageNode/StageNodeHeader.d.ts.map +1 -0
  98. package/dist/canvas/components/StageNode/StageNodeHeader.js +211 -0
  99. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.cjs +176 -0
  100. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.d.ts +16 -0
  101. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.d.ts.map +1 -0
  102. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.js +142 -0
  103. package/dist/canvas/components/StageNode/StageTaskEntryConditionIcon.cjs +57 -0
  104. package/dist/canvas/components/StageNode/StageTaskEntryConditionIcon.d.ts +5 -0
  105. package/dist/canvas/components/StageNode/StageTaskEntryConditionIcon.d.ts.map +1 -0
  106. package/dist/canvas/components/StageNode/StageTaskEntryConditionIcon.js +23 -0
  107. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.cjs +117 -0
  108. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts +18 -0
  109. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts.map +1 -0
  110. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.js +83 -0
  111. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.cjs +87 -0
  112. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts +22 -0
  113. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts.map +1 -0
  114. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.js +53 -0
  115. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +20 -18
  116. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts +2 -1
  117. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  118. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +21 -19
  119. package/dist/canvas/components/Toolbox/ListView.cjs +3 -2
  120. package/dist/canvas/components/Toolbox/ListView.d.ts +1 -0
  121. package/dist/canvas/components/Toolbox/ListView.d.ts.map +1 -1
  122. package/dist/canvas/components/Toolbox/ListView.js +3 -2
  123. package/dist/canvas/components/Toolbox/Toolbox.cjs +38 -9
  124. package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
  125. package/dist/canvas/components/Toolbox/Toolbox.js +38 -9
  126. package/dist/canvas/components/index.cjs +27 -20
  127. package/dist/canvas/components/index.d.ts +1 -0
  128. package/dist/canvas/components/index.d.ts.map +1 -1
  129. package/dist/canvas/components/index.js +1 -0
  130. package/dist/canvas/core/NodeTypeRegistry.cjs +41 -23
  131. package/dist/canvas/core/NodeTypeRegistry.d.ts +8 -4
  132. package/dist/canvas/core/NodeTypeRegistry.d.ts.map +1 -1
  133. package/dist/canvas/core/NodeTypeRegistry.js +41 -23
  134. package/dist/canvas/core/useNodeTypeRegistry.cjs +4 -3
  135. package/dist/canvas/core/useNodeTypeRegistry.d.ts +1 -1
  136. package/dist/canvas/core/useNodeTypeRegistry.d.ts.map +1 -1
  137. package/dist/canvas/core/useNodeTypeRegistry.js +4 -3
  138. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +4 -3
  139. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  140. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +4 -3
  141. package/dist/canvas/hooks/usePreviewNode.cjs +4 -2
  142. package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
  143. package/dist/canvas/hooks/usePreviewNode.js +4 -2
  144. package/dist/canvas/schema/node-definition/handle.cjs +10 -2
  145. package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
  146. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  147. package/dist/canvas/schema/node-definition/handle.js +6 -1
  148. package/dist/canvas/schema/node-definition/index.cjs +4 -1
  149. package/dist/canvas/schema/node-definition/index.d.ts +3 -3
  150. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  151. package/dist/canvas/schema/node-definition/index.js +2 -2
  152. package/dist/canvas/schema/node-definition/node-manifest.d.ts +4 -0
  153. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  154. package/dist/canvas/storybook-utils/manifests/index.d.ts +1 -0
  155. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  156. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  157. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  158. package/dist/canvas/utils/createPreviewGraph.cjs +94 -0
  159. package/dist/canvas/utils/createPreviewGraph.d.ts +24 -0
  160. package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
  161. package/dist/canvas/utils/createPreviewGraph.js +51 -0
  162. package/dist/canvas/utils/createPreviewNode.cjs +29 -13
  163. package/dist/canvas/utils/createPreviewNode.d.ts +5 -1
  164. package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
  165. package/dist/canvas/utils/createPreviewNode.js +23 -13
  166. package/dist/canvas/utils/index.cjs +33 -26
  167. package/dist/canvas/utils/index.d.ts +2 -1
  168. package/dist/canvas/utils/index.d.ts.map +1 -1
  169. package/dist/canvas/utils/index.js +2 -1
  170. package/package.json +2 -2
@@ -0,0 +1,406 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { NodeResizeControl, useStore, useUpdateNodeInternals } from "../../xyflow/react.js";
3
+ import { cn } from "@uipath/apollo-wind";
4
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { useOptionalNodeTypeRegistry } from "../../core/index.js";
6
+ import { useElementValidationStatus, useNodeExecutionState } from "../../hooks/index.js";
7
+ import { resolveAdornments } from "../../utils/adornment-resolver.js";
8
+ import { getOppositePosition } from "../../utils/createPreviewNode.js";
9
+ import { CanvasIcon } from "../../utils/icon-registry.js";
10
+ import { resolveDisplay, resolveHandles } from "../../utils/manifest-resolver.js";
11
+ import { resolveToolbar } from "../../utils/toolbar-resolver.js";
12
+ import { useBaseCanvasMode } from "../BaseCanvas/BaseCanvasModeProvider.js";
13
+ import { useConnectedHandles } from "../BaseCanvas/ConnectedHandlesContext.js";
14
+ import { useSelectionState } from "../BaseCanvas/SelectionStateContext.js";
15
+ import { selectIsConnecting } from "../BaseNode/BaseNode.js";
16
+ import { BaseBadgeSlot } from "../BaseNode/BaseNodeBadgeSlot.js";
17
+ import { getStatusBorder } from "../BaseNode/BaseNodeContainer.js";
18
+ import { MissingManifestNode } from "../BaseNode/BaseNodeMissingManifest.js";
19
+ import { ButtonHandles } from "../ButtonHandle/index.js";
20
+ import { NodeToolbar } from "../Toolbar/index.js";
21
+ import { DEFAULT_LOOP_FRAME_BACKGROUND, DEFAULT_LOOP_FRAME_BORDER, DEFAULT_LOOP_HEADER_HEIGHT_PX, DEFAULT_LOOP_ICON, DEFAULT_LOOP_MIN_HEIGHT, DEFAULT_LOOP_MIN_WIDTH, DEFAULT_LOOP_NODE_TYPE, DEFAULT_LOOP_SHELL_BACKGROUND, DEFAULT_LOOP_TITLE, LOOP_FRAME_INSET_PX, LOOP_SHELL_RADIUS_PX } from "./LoopNode.constants.js";
22
+ import { getLoopBodyCenter, partitionLoopHandleGroups } from "./LoopNode.helpers.js";
23
+ const EMPTY_DATA = {};
24
+ const ENABLE_LOOP_HANDLE_ACTION_BUTTON = (_event)=>{};
25
+ const RESIZE_CONTROLS = [
26
+ {
27
+ position: 'top-left',
28
+ cursor: 'nwse-resize',
29
+ indicatorClassName: 'top-[-5px] left-[-5px]'
30
+ },
31
+ {
32
+ position: 'top-right',
33
+ cursor: 'nesw-resize',
34
+ indicatorClassName: 'top-[-5px] right-[-5px]'
35
+ },
36
+ {
37
+ position: 'bottom-left',
38
+ cursor: 'nesw-resize',
39
+ indicatorClassName: 'bottom-[-5px] left-[-5px]'
40
+ },
41
+ {
42
+ position: 'bottom-right',
43
+ cursor: 'nwse-resize',
44
+ indicatorClassName: 'bottom-[-5px] right-[-5px]'
45
+ }
46
+ ];
47
+ const RESIZE_CONTROL_STYLE = {
48
+ background: 'transparent',
49
+ border: 'none',
50
+ zIndex: 100
51
+ };
52
+ const ADORNMENT_SLOT_POSITIONS = [
53
+ 'topLeft',
54
+ 'topRight',
55
+ 'bottomLeft',
56
+ 'bottomRight'
57
+ ];
58
+ const ADORNMENT_SLOT_SHAPES = {
59
+ topLeft: 'top-left',
60
+ topRight: 'top-right',
61
+ bottomLeft: 'bottom-left',
62
+ bottomRight: 'bottom-right'
63
+ };
64
+ function resolveInteractionState(dragging, selected, isHovered) {
65
+ if (dragging) return 'drag';
66
+ if (selected) return 'selected';
67
+ if (isHovered) return 'hover';
68
+ return 'default';
69
+ }
70
+ function LoopNodeComponent(props) {
71
+ const { id, type = DEFAULT_LOOP_NODE_TYPE, data, selected = false, dragging = false, width = 0, height = 0, onAddChild, onResize: onResizeCallback } = props;
72
+ const updateNodeInternals = useUpdateNodeInternals();
73
+ const nodeTypeRegistry = useOptionalNodeTypeRegistry();
74
+ const headerRef = useRef(null);
75
+ const [isHovered, setIsHovered] = useState(false);
76
+ const resolvedData = data ?? EMPTY_DATA;
77
+ const nodeVersion = 'string' == typeof resolvedData.version ? resolvedData.version : void 0;
78
+ const suggestionType = resolvedData.suggestionType;
79
+ const manifest = useMemo(()=>nodeTypeRegistry?.getManifest(type, nodeVersion), [
80
+ nodeTypeRegistry,
81
+ type,
82
+ nodeVersion
83
+ ]);
84
+ const { mode } = useBaseCanvasMode();
85
+ const connectedHandleIds = useConnectedHandles(id);
86
+ const { multipleNodesSelected } = useSelectionState();
87
+ const isConnecting = useStore(selectIsConnecting);
88
+ const needsChildCheck = 'design' === mode && !!onAddChild;
89
+ const hasChildNodes = useStore(useCallback((state)=>!needsChildCheck || state.nodes.some((node)=>node.parentId === id), [
90
+ id,
91
+ needsChildCheck
92
+ ]));
93
+ const executionState = useNodeExecutionState(id);
94
+ const validationState = useElementValidationStatus(id);
95
+ const statusContext = useMemo(()=>({
96
+ nodeId: id,
97
+ executionState,
98
+ validationState,
99
+ isConnecting,
100
+ isSelected: selected,
101
+ isDragging: dragging,
102
+ mode
103
+ }), [
104
+ dragging,
105
+ executionState,
106
+ id,
107
+ isConnecting,
108
+ mode,
109
+ selected,
110
+ validationState
111
+ ]);
112
+ const executionStatus = 'string' == typeof executionState ? executionState : executionState?.status;
113
+ const display = useMemo(()=>resolveDisplay(manifest?.display, {
114
+ ...resolvedData,
115
+ nodeId: id
116
+ }), [
117
+ manifest?.display,
118
+ id,
119
+ resolvedData
120
+ ]);
121
+ const displayTitle = display.label ?? DEFAULT_LOOP_TITLE;
122
+ const minWidth = DEFAULT_LOOP_MIN_WIDTH;
123
+ const minHeight = DEFAULT_LOOP_MIN_HEIGHT;
124
+ const headerIcon = useMemo(()=>/*#__PURE__*/ jsx(CanvasIcon, {
125
+ icon: display.icon ?? DEFAULT_LOOP_ICON,
126
+ size: 16
127
+ }), [
128
+ display.icon
129
+ ]);
130
+ const toolbarConfig = useMemo(()=>manifest ? resolveToolbar(manifest, statusContext, data) : void 0, [
131
+ data,
132
+ manifest,
133
+ statusContext
134
+ ]);
135
+ const adornments = useMemo(()=>resolveAdornments(statusContext), [
136
+ statusContext
137
+ ]);
138
+ const resolvedHandleGroups = useMemo(()=>manifest ? resolveHandles(manifest.handleConfiguration, resolvedData) : [], [
139
+ manifest,
140
+ resolvedData
141
+ ]);
142
+ const { outer: outerHandleGroups, inner: innerHandleGroups } = useMemo(()=>partitionLoopHandleGroups(resolvedHandleGroups), [
143
+ resolvedHandleGroups
144
+ ]);
145
+ useEffect(()=>{
146
+ const frameId = requestAnimationFrame(()=>{
147
+ updateNodeInternals(id);
148
+ });
149
+ return ()=>{
150
+ cancelAnimationFrame(frameId);
151
+ };
152
+ }, [
153
+ id,
154
+ innerHandleGroups,
155
+ outerHandleGroups,
156
+ updateNodeInternals,
157
+ width,
158
+ height
159
+ ]);
160
+ const handleResize = useCallback((_event, params)=>{
161
+ onResizeCallback?.({
162
+ width: params.width,
163
+ height: params.height
164
+ });
165
+ }, [
166
+ onResizeCallback
167
+ ]);
168
+ const handleEmptyClick = useCallback(()=>{
169
+ const measuredHeaderHeight = headerRef.current?.getBoundingClientRect().height ?? 0;
170
+ const headerHeight = Math.max(measuredHeaderHeight, DEFAULT_LOOP_HEADER_HEIGHT_PX);
171
+ onAddChild?.({
172
+ position: getLoopBodyCenter({
173
+ width,
174
+ height,
175
+ headerHeight
176
+ }),
177
+ near: 'mid'
178
+ });
179
+ }, [
180
+ height,
181
+ onAddChild,
182
+ width
183
+ ]);
184
+ const handleMouseEnter = useCallback(()=>setIsHovered(true), []);
185
+ const handleMouseLeave = useCallback(()=>setIsHovered(false), []);
186
+ const shouldShowHandles = isConnecting || selected || isHovered;
187
+ const showHandleAddButtons = 'design' === mode && !multipleNodesSelected && !isConnecting;
188
+ const showResizeControls = selected && !dragging && 'design' === mode;
189
+ const showEmptyStateButton = 'design' === mode && !hasChildNodes && !!onAddChild;
190
+ const interactionState = resolveInteractionState(dragging, selected, isHovered);
191
+ if (!manifest) return /*#__PURE__*/ jsx("div", {
192
+ className: "relative",
193
+ style: {
194
+ width,
195
+ height,
196
+ minWidth,
197
+ minHeight
198
+ },
199
+ onMouseEnter: handleMouseEnter,
200
+ onMouseLeave: handleMouseLeave,
201
+ children: /*#__PURE__*/ jsx(MissingManifestNode, {
202
+ type: type,
203
+ isSelected: selected,
204
+ isHovered: isHovered,
205
+ interactionState: interactionState
206
+ })
207
+ });
208
+ return /*#__PURE__*/ jsxs("div", {
209
+ "data-loop-container": true,
210
+ "data-selected": selected ? 'true' : 'false',
211
+ "data-execution-status": executionStatus,
212
+ "data-interaction-state": interactionState,
213
+ "data-suggestion-type": suggestionType,
214
+ "data-validation-status": validationState?.validationStatus,
215
+ "aria-busy": resolvedData.loading || void 0,
216
+ className: cn('group/loop-shell relative flex h-full w-full flex-col overflow-visible border bg-surface-overlay', 'transition-[border-color,box-shadow,opacity] shadow-(--canvas-node-shadow-rest)', 'border-border-subtle', getStatusBorder(suggestionType ?? validationState?.validationStatus ?? executionStatus), isHovered && 'shadow-(--canvas-node-shadow-hover) border-border-hover', selected && 'outline outline-foreground-accent-muted', 'drag' === interactionState && 'cursor-grabbing shadow-(--canvas-node-shadow-lifted)'),
217
+ style: {
218
+ width,
219
+ height,
220
+ minWidth,
221
+ minHeight,
222
+ borderRadius: LOOP_SHELL_RADIUS_PX,
223
+ background: display.background ?? DEFAULT_LOOP_SHELL_BACKGROUND
224
+ },
225
+ onMouseEnter: handleMouseEnter,
226
+ onMouseLeave: handleMouseLeave,
227
+ children: [
228
+ ADORNMENT_SLOT_POSITIONS.map((slot)=>adornments?.[slot] ? /*#__PURE__*/ jsx(BaseBadgeSlot, {
229
+ position: ADORNMENT_SLOT_SHAPES[slot],
230
+ shape: "rectangle",
231
+ children: adornments[slot]
232
+ }, slot) : null),
233
+ /*#__PURE__*/ jsx(ResizeCornerIndicators, {
234
+ selected: showResizeControls
235
+ }),
236
+ showResizeControls ? RESIZE_CONTROLS.map(({ position, cursor })=>/*#__PURE__*/ jsx(NodeResizeControl, {
237
+ style: RESIZE_CONTROL_STYLE,
238
+ position: position,
239
+ minWidth: minWidth,
240
+ minHeight: minHeight,
241
+ onResize: handleResize,
242
+ children: /*#__PURE__*/ jsx("div", {
243
+ className: "absolute bottom-0 right-0 h-5 w-5 pointer-events-auto",
244
+ style: {
245
+ cursor
246
+ }
247
+ })
248
+ }, position)) : null,
249
+ /*#__PURE__*/ jsx(Header, {
250
+ headerRef: headerRef,
251
+ title: displayTitle,
252
+ icon: headerIcon,
253
+ loading: !!resolvedData.loading
254
+ }),
255
+ /*#__PURE__*/ jsx(BodyFrame, {
256
+ isEmpty: showEmptyStateButton,
257
+ isLoading: !!resolvedData.loading,
258
+ onAddChild: handleEmptyClick
259
+ }),
260
+ toolbarConfig && /*#__PURE__*/ jsx(NodeToolbar, {
261
+ nodeId: id,
262
+ config: toolbarConfig,
263
+ expanded: selected,
264
+ hidden: dragging || multipleNodesSelected
265
+ }),
266
+ [
267
+ [
268
+ 'outer',
269
+ outerHandleGroups
270
+ ],
271
+ [
272
+ 'inner',
273
+ innerHandleGroups
274
+ ]
275
+ ].map(([variant, groups])=>/*#__PURE__*/ jsx(HandleGroups, {
276
+ nodeId: id,
277
+ groups: groups,
278
+ variant: variant,
279
+ selected: selected,
280
+ hovered: isHovered,
281
+ shouldShowHandles: shouldShowHandles,
282
+ showAddButton: showHandleAddButtons,
283
+ showNotches: shouldShowHandles,
284
+ nodeWidth: width,
285
+ nodeHeight: height,
286
+ connectedHandleIds: connectedHandleIds
287
+ }, variant))
288
+ ]
289
+ });
290
+ }
291
+ const LoopNode = /*#__PURE__*/ memo(LoopNodeComponent);
292
+ function Header({ headerRef, title, icon, loading }) {
293
+ const titleContent = loading ? /*#__PURE__*/ jsx("div", {
294
+ className: "h-5 w-28 animate-pulse rounded bg-(--canvas-background-overlay)"
295
+ }) : /*#__PURE__*/ jsx("span", {
296
+ className: "truncate text-[14px] font-semibold tracking-[-0.15px]",
297
+ children: title
298
+ });
299
+ let iconContent = null;
300
+ if (loading) iconContent = /*#__PURE__*/ jsx("div", {
301
+ className: "h-4 w-4 shrink-0 animate-pulse rounded bg-(--canvas-background-overlay)"
302
+ });
303
+ else if (icon) iconContent = /*#__PURE__*/ jsx("span", {
304
+ className: "shrink-0 text-foreground",
305
+ "aria-hidden": true,
306
+ children: icon
307
+ });
308
+ return /*#__PURE__*/ jsx("div", {
309
+ ref: headerRef,
310
+ className: "flex shrink-0 items-center justify-between gap-2.5 pl-4.5 pr-5 pt-3.5 text-foreground cursor-grab active:cursor-grabbing",
311
+ "data-testid": "loop-node-header",
312
+ children: /*#__PURE__*/ jsxs("div", {
313
+ className: "flex min-w-0 items-center gap-2",
314
+ children: [
315
+ iconContent,
316
+ titleContent
317
+ ]
318
+ })
319
+ });
320
+ }
321
+ function EmptyState({ onAddChild }) {
322
+ return /*#__PURE__*/ jsx("button", {
323
+ type: "button",
324
+ onClick: onAddChild,
325
+ "aria-label": "Add node to loop",
326
+ className: cn('nodrag nopan', 'pointer-events-auto flex h-8 w-8 items-center justify-center rounded-xl', 'border border-border bg-surface-overlay text-foreground', 'shadow-[0_4px_24px_rgba(0,0,0,0.25)]', 'transition-colors', 'hover:bg-surface-hover hover:border-brand'),
327
+ children: /*#__PURE__*/ jsx(CanvasIcon, {
328
+ icon: "plus",
329
+ size: 14
330
+ })
331
+ });
332
+ }
333
+ function BodyFrame({ isEmpty, isLoading, onAddChild }) {
334
+ return /*#__PURE__*/ jsxs("div", {
335
+ "data-testid": "loop-body-frame",
336
+ "data-empty": isEmpty ? 'true' : 'false',
337
+ className: cn('relative flex flex-1 rounded-[26px] border border-dashed', 'pointer-events-none', isEmpty && 'items-center justify-center'),
338
+ style: {
339
+ margin: LOOP_FRAME_INSET_PX,
340
+ background: DEFAULT_LOOP_FRAME_BACKGROUND,
341
+ borderColor: DEFAULT_LOOP_FRAME_BORDER
342
+ },
343
+ children: [
344
+ isLoading ? /*#__PURE__*/ jsx("div", {
345
+ className: "m-6 h-14 w-full animate-pulse rounded-[18px] bg-(--canvas-background-overlay)"
346
+ }) : null,
347
+ isEmpty ? /*#__PURE__*/ jsx(EmptyState, {
348
+ onAddChild: onAddChild
349
+ }) : null
350
+ ]
351
+ });
352
+ }
353
+ function ResizeCornerIndicators({ selected }) {
354
+ return /*#__PURE__*/ jsx(Fragment, {
355
+ children: RESIZE_CONTROLS.map(({ position, indicatorClassName })=>/*#__PURE__*/ jsx("div", {
356
+ "aria-hidden": true,
357
+ className: cn('pointer-events-none absolute h-1.5 w-1.5 rounded-[1px] border border-brand bg-background transition-opacity', indicatorClassName, selected ? 'opacity-100' : 'opacity-0')
358
+ }, position))
359
+ });
360
+ }
361
+ function HandleGroups({ nodeId, variant, groups, selected, hovered, shouldShowHandles, showAddButton, showNotches, nodeWidth, nodeHeight, connectedHandleIds }) {
362
+ if (0 === groups.length) return null;
363
+ return /*#__PURE__*/ jsx(Fragment, {
364
+ children: groups.map((group, groupIndex)=>/*#__PURE__*/ jsx(HandleGroup, {
365
+ nodeId: nodeId,
366
+ variant: variant,
367
+ group: group,
368
+ selected: selected,
369
+ hovered: hovered,
370
+ shouldShowHandles: shouldShowHandles,
371
+ showAddButton: showAddButton,
372
+ showNotches: showNotches,
373
+ nodeWidth: nodeWidth,
374
+ nodeHeight: nodeHeight,
375
+ connectedHandleIds: connectedHandleIds
376
+ }, `${variant}:${group.position}:${groupIndex}`))
377
+ });
378
+ }
379
+ function HandleGroup({ nodeId, variant, group, selected, hovered, shouldShowHandles, showAddButton, showNotches, nodeWidth, nodeHeight, connectedHandleIds }) {
380
+ const groupVisible = shouldShowHandles && (group.visible ?? true);
381
+ const enhancedHandles = useMemo(()=>group.handles.map((handle)=>({
382
+ ...handle,
383
+ showHandle: connectedHandleIds.has(handle.id) || groupVisible,
384
+ showButton: 'inner' === variant && 'source' === handle.type ? false : handle.showButton,
385
+ onAction: handle.onAction ?? ('inner' !== variant && 'source' === handle.type && handle.showButton ? ENABLE_LOOP_HANDLE_ACTION_BUTTON : void 0)
386
+ })), [
387
+ group.handles,
388
+ connectedHandleIds,
389
+ groupVisible,
390
+ variant
391
+ ]);
392
+ return /*#__PURE__*/ jsx(ButtonHandles, {
393
+ nodeId: nodeId,
394
+ handles: enhancedHandles,
395
+ position: group.position,
396
+ connectionPosition: 'inner' === variant ? getOppositePosition(group.position) : group.position,
397
+ selected: selected,
398
+ hovered: hovered,
399
+ showAddButton: showAddButton,
400
+ showNotches: showNotches,
401
+ customPositionAndOffsets: group.customPositionAndOffsets,
402
+ nodeWidth: nodeWidth,
403
+ nodeHeight: nodeHeight
404
+ });
405
+ }
406
+ export { LoopNode };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.r = (exports1)=>{
5
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
+ value: 'Module'
7
+ });
8
+ Object.defineProperty(exports1, '__esModule', {
9
+ value: true
10
+ });
11
+ };
12
+ })();
13
+ var __webpack_exports__ = {};
14
+ __webpack_require__.r(__webpack_exports__);
15
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
+ Object.defineProperty(exports, '__esModule', {
17
+ value: true
18
+ });
@@ -0,0 +1,16 @@
1
+ import type { Node, NodeProps } from '../../xyflow/react.ts';
2
+ import type { XYPosition } from '../../xyflow/system.ts';
3
+ import type { BaseNodeData } from '../BaseNode';
4
+ export interface LoopNodeAddChildContext {
5
+ position: XYPosition;
6
+ near: 'start' | 'end' | 'mid';
7
+ }
8
+ export type LoopNodeData = BaseNodeData;
9
+ export interface LoopNodeProps extends NodeProps<Node<LoopNodeData>> {
10
+ onAddChild?: (ctx: LoopNodeAddChildContext) => void;
11
+ onResize?: (size: {
12
+ width: number;
13
+ height: number;
14
+ }) => void;
15
+ }
16
+ //# sourceMappingURL=LoopNode.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC;AAExC,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9D"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ applyHandleActionAddPreview: ()=>applyHandleActionAddPreview,
28
+ createCenteredLoopPreview: ()=>createCenteredLoopPreview
29
+ });
30
+ const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
31
+ const external_constants_cjs_namespaceObject = require("../../constants.cjs");
32
+ const createPreviewGraph_cjs_namespaceObject = require("../../utils/createPreviewGraph.cjs");
33
+ const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
34
+ const NodeUtils_cjs_namespaceObject = require("../../utils/NodeUtils.cjs");
35
+ const createAddNodePreview_cjs_namespaceObject = require("../AddNodePanel/createAddNodePreview.cjs");
36
+ const external_LoopNode_constants_cjs_namespaceObject = require("./LoopNode.constants.cjs");
37
+ const external_LoopNode_helpers_cjs_namespaceObject = require("./LoopNode.helpers.cjs");
38
+ const LOOP_START_HANDLE_ID = 'start';
39
+ const LOOP_CONTINUE_HANDLE_ID = 'continue';
40
+ function createCenteredLoopPreview(loopId, reactFlowInstance, centerPosition) {
41
+ const loopNode = reactFlowInstance.getNode(loopId);
42
+ if (!isLoopNode(loopNode)) return null;
43
+ const allNodes = reactFlowInstance.getNodes();
44
+ const loopAbsolutePosition = (0, NodeUtils_cjs_namespaceObject.getAbsolutePosition)(loopNode, allNodes);
45
+ const relativeCenter = centerPosition ?? (0, external_LoopNode_helpers_cjs_namespaceObject.getLoopRelativeBodyCenter)(loopNode);
46
+ const snappedCenter = {
47
+ x: (0, NodeUtils_cjs_namespaceObject.snapToGrid)(loopAbsolutePosition.x + relativeCenter.x),
48
+ y: (0, NodeUtils_cjs_namespaceObject.snapToGrid)(loopAbsolutePosition.y + relativeCenter.y)
49
+ };
50
+ const preview = (0, createPreviewNode_cjs_namespaceObject.createPreviewNode)(loopId, LOOP_START_HANDLE_ID, reactFlowInstance, snappedCenter, void 0, 'source', void 0, react_cjs_namespaceObject.Position.Right, [], 'center');
51
+ if (!preview) return null;
52
+ return (0, createPreviewGraph_cjs_namespaceObject.createPreviewGraph)({
53
+ preview,
54
+ target: loopId,
55
+ targetHandleId: LOOP_CONTINUE_HANDLE_ID,
56
+ reactFlowInstance,
57
+ containerId: loopId,
58
+ trailingEdgeId: `${external_constants_cjs_namespaceObject.PREVIEW_NODE_ID}-${loopId}-${LOOP_CONTINUE_HANDLE_ID}`,
59
+ trailingEdgeStyle: createPreviewGraph_cjs_namespaceObject.PREVIEW_EDGE_STYLE
60
+ });
61
+ }
62
+ function applyHandleActionAddPreview(event, reactFlowInstance, ignoredNodeTypes = []) {
63
+ if (event.handleId === LOOP_START_HANDLE_ID && isLoopNode(reactFlowInstance.getNode(event.nodeId))) {
64
+ const preview = createCenteredLoopPreview(event.nodeId, reactFlowInstance);
65
+ if (preview) (0, createPreviewNode_cjs_namespaceObject.applyPreviewGraphToReactFlow)(preview, reactFlowInstance);
66
+ return;
67
+ }
68
+ (0, createAddNodePreview_cjs_namespaceObject.createAddNodePreview)(event.nodeId, event.handleId, reactFlowInstance, event.position, 'input' === event.handleType ? 'target' : 'source', ignoredNodeTypes);
69
+ }
70
+ function isLoopNode(node) {
71
+ return node?.type === external_LoopNode_constants_cjs_namespaceObject.DEFAULT_LOOP_NODE_TYPE;
72
+ }
73
+ exports.applyHandleActionAddPreview = __webpack_exports__.applyHandleActionAddPreview;
74
+ exports.createCenteredLoopPreview = __webpack_exports__.createCenteredLoopPreview;
75
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
76
+ "applyHandleActionAddPreview",
77
+ "createCenteredLoopPreview"
78
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
79
+ Object.defineProperty(exports, '__esModule', {
80
+ value: true
81
+ });
@@ -0,0 +1,8 @@
1
+ import { type ReactFlowInstance } from '../../xyflow/react.ts';
2
+ import type { CanvasHandleActionEvent } from '../../utils/CanvasEventBus';
3
+ export declare function createCenteredLoopPreview(loopId: string, reactFlowInstance: ReactFlowInstance, centerPosition?: {
4
+ x: number;
5
+ y: number;
6
+ }): import("../..").PreviewGraph | null;
7
+ export declare function applyHandleActionAddPreview(event: CanvasHandleActionEvent, reactFlowInstance: ReactFlowInstance, ignoredNodeTypes?: string[]): void;
8
+ //# sourceMappingURL=LoopNodePreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAW1E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,uCAoC1C;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,uBAAuB,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,GAAE,MAAM,EAAO,QAqBhC"}
@@ -0,0 +1,44 @@
1
+ import { Position } from "../../xyflow/react.js";
2
+ import { PREVIEW_NODE_ID } from "../../constants.js";
3
+ import { PREVIEW_EDGE_STYLE, createPreviewGraph } from "../../utils/createPreviewGraph.js";
4
+ import { applyPreviewGraphToReactFlow, createPreviewNode } from "../../utils/createPreviewNode.js";
5
+ import { getAbsolutePosition, snapToGrid } from "../../utils/NodeUtils.js";
6
+ import { createAddNodePreview } from "../AddNodePanel/createAddNodePreview.js";
7
+ import { DEFAULT_LOOP_NODE_TYPE } from "./LoopNode.constants.js";
8
+ import { getLoopRelativeBodyCenter } from "./LoopNode.helpers.js";
9
+ const LOOP_START_HANDLE_ID = 'start';
10
+ const LOOP_CONTINUE_HANDLE_ID = 'continue';
11
+ function createCenteredLoopPreview(loopId, reactFlowInstance, centerPosition) {
12
+ const loopNode = reactFlowInstance.getNode(loopId);
13
+ if (!isLoopNode(loopNode)) return null;
14
+ const allNodes = reactFlowInstance.getNodes();
15
+ const loopAbsolutePosition = getAbsolutePosition(loopNode, allNodes);
16
+ const relativeCenter = centerPosition ?? getLoopRelativeBodyCenter(loopNode);
17
+ const snappedCenter = {
18
+ x: snapToGrid(loopAbsolutePosition.x + relativeCenter.x),
19
+ y: snapToGrid(loopAbsolutePosition.y + relativeCenter.y)
20
+ };
21
+ const preview = createPreviewNode(loopId, LOOP_START_HANDLE_ID, reactFlowInstance, snappedCenter, void 0, 'source', void 0, Position.Right, [], 'center');
22
+ if (!preview) return null;
23
+ return createPreviewGraph({
24
+ preview,
25
+ target: loopId,
26
+ targetHandleId: LOOP_CONTINUE_HANDLE_ID,
27
+ reactFlowInstance,
28
+ containerId: loopId,
29
+ trailingEdgeId: `${PREVIEW_NODE_ID}-${loopId}-${LOOP_CONTINUE_HANDLE_ID}`,
30
+ trailingEdgeStyle: PREVIEW_EDGE_STYLE
31
+ });
32
+ }
33
+ function applyHandleActionAddPreview(event, reactFlowInstance, ignoredNodeTypes = []) {
34
+ if (event.handleId === LOOP_START_HANDLE_ID && isLoopNode(reactFlowInstance.getNode(event.nodeId))) {
35
+ const preview = createCenteredLoopPreview(event.nodeId, reactFlowInstance);
36
+ if (preview) applyPreviewGraphToReactFlow(preview, reactFlowInstance);
37
+ return;
38
+ }
39
+ createAddNodePreview(event.nodeId, event.handleId, reactFlowInstance, event.position, 'input' === event.handleType ? 'target' : 'source', ignoredNodeTypes);
40
+ }
41
+ function isLoopNode(node) {
42
+ return node?.type === DEFAULT_LOOP_NODE_TYPE;
43
+ }
44
+ export { applyHandleActionAddPreview, createCenteredLoopPreview };
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "./LoopCanvasNode" (module) {
4
+ module.exports = require("./LoopCanvasNode.cjs");
5
+ },
6
+ "./LoopNode?d3ac" (module) {
7
+ module.exports = require("./LoopNode.cjs");
8
+ },
9
+ "./LoopNode.types" (module) {
10
+ module.exports = require("./LoopNode.types.cjs");
11
+ }
12
+ };
13
+ var __webpack_module_cache__ = {};
14
+ function __webpack_require__(moduleId) {
15
+ var cachedModule = __webpack_module_cache__[moduleId];
16
+ if (void 0 !== cachedModule) return cachedModule.exports;
17
+ var module = __webpack_module_cache__[moduleId] = {
18
+ exports: {}
19
+ };
20
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
21
+ return module.exports;
22
+ }
23
+ (()=>{
24
+ __webpack_require__.n = (module)=>{
25
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
26
+ __webpack_require__.d(getter, {
27
+ a: getter
28
+ });
29
+ return getter;
30
+ };
31
+ })();
32
+ (()=>{
33
+ __webpack_require__.d = (exports1, definition)=>{
34
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
35
+ enumerable: true,
36
+ get: definition[key]
37
+ });
38
+ };
39
+ })();
40
+ (()=>{
41
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
42
+ })();
43
+ (()=>{
44
+ __webpack_require__.r = (exports1)=>{
45
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
46
+ value: 'Module'
47
+ });
48
+ Object.defineProperty(exports1, '__esModule', {
49
+ value: true
50
+ });
51
+ };
52
+ })();
53
+ var __webpack_exports__ = {};
54
+ (()=>{
55
+ __webpack_require__.r(__webpack_exports__);
56
+ var _LoopCanvasNode__rspack_import_0 = __webpack_require__("./LoopCanvasNode");
57
+ var __rspack_reexport = {};
58
+ for(const __rspack_import_key in _LoopCanvasNode__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_LoopCanvasNode__rspack_import_0[__rspack_import_key];
59
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
60
+ var _LoopNode__rspack_import_1 = __webpack_require__("./LoopNode?d3ac");
61
+ var __rspack_reexport = {};
62
+ for(const __rspack_import_key in _LoopNode__rspack_import_1)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_LoopNode__rspack_import_1[__rspack_import_key];
63
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
64
+ var _LoopNode_types__rspack_import_2 = __webpack_require__("./LoopNode.types");
65
+ var __rspack_reexport = {};
66
+ for(const __rspack_import_key in _LoopNode_types__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_LoopNode_types__rspack_import_2[__rspack_import_key];
67
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
68
+ })();
69
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
70
+ Object.defineProperty(exports, '__esModule', {
71
+ value: true
72
+ });
@@ -0,0 +1,4 @@
1
+ export * from './LoopCanvasNode';
2
+ export * from './LoopNode';
3
+ export * from './LoopNode.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}