@aloudata/ink-flow 1.0.26 → 1.0.28

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 (245) hide show
  1. package/dist/components/A11yDescriptions/index.js +29 -0
  2. package/dist/components/A11yDescriptions/index.js.map +1 -0
  3. package/dist/components/BatchProvider/index.js +86 -0
  4. package/dist/components/BatchProvider/index.js.map +1 -0
  5. package/dist/components/BatchProvider/types.js +2 -0
  6. package/dist/components/BatchProvider/types.js.map +1 -0
  7. package/dist/components/BatchProvider/useQueue.js +56 -0
  8. package/dist/components/BatchProvider/useQueue.js.map +1 -0
  9. package/dist/components/ConnectionLine/index.js +62 -0
  10. package/dist/components/ConnectionLine/index.js.map +1 -0
  11. package/dist/components/EdgeLabelRenderer/index.js +12 -0
  12. package/dist/components/EdgeLabelRenderer/index.js.map +1 -0
  13. package/dist/components/EdgeWrapper/EdgeUpdateAnchors.js +68 -0
  14. package/dist/components/EdgeWrapper/EdgeUpdateAnchors.js.map +1 -0
  15. package/dist/components/EdgeWrapper/index.js +159 -0
  16. package/dist/components/EdgeWrapper/index.js.map +1 -0
  17. package/dist/components/EdgeWrapper/utils.js +17 -0
  18. package/dist/components/EdgeWrapper/utils.js.map +1 -0
  19. package/dist/components/Edges/BaseEdge.js +9 -0
  20. package/dist/components/Edges/BaseEdge.js.map +1 -0
  21. package/dist/components/Edges/BezierEdge.js +28 -0
  22. package/dist/components/Edges/BezierEdge.js.map +1 -0
  23. package/dist/components/Edges/EdgeAnchor.js +23 -0
  24. package/dist/components/Edges/EdgeAnchor.js.map +1 -0
  25. package/dist/components/Edges/EdgeText.js +31 -0
  26. package/dist/components/Edges/EdgeText.js.map +1 -0
  27. package/dist/components/Edges/SimpleBezierEdge.js +68 -0
  28. package/dist/components/Edges/SimpleBezierEdge.js.map +1 -0
  29. package/dist/components/Edges/SmoothStepEdge.js +29 -0
  30. package/dist/components/Edges/SmoothStepEdge.js.map +1 -0
  31. package/dist/components/Edges/StepEdge.js +18 -0
  32. package/dist/components/Edges/StepEdge.js.map +1 -0
  33. package/dist/components/Edges/StraightEdge.js +24 -0
  34. package/dist/components/Edges/StraightEdge.js.map +1 -0
  35. package/dist/components/Edges/index.js +9 -0
  36. package/dist/components/Edges/index.js.map +1 -0
  37. package/dist/components/Handle/index.d.ts.map +1 -1
  38. package/dist/components/Handle/index.js +179 -0
  39. package/dist/components/Handle/index.js.map +1 -0
  40. package/dist/components/InkFlowProvider/index.js +21 -0
  41. package/dist/components/InkFlowProvider/index.js.map +1 -0
  42. package/dist/components/NodeWrapper/index.js +150 -0
  43. package/dist/components/NodeWrapper/index.js.map +1 -0
  44. package/dist/components/NodeWrapper/useNodeObserver.js +54 -0
  45. package/dist/components/NodeWrapper/useNodeObserver.js.map +1 -0
  46. package/dist/components/NodeWrapper/utils.js +30 -0
  47. package/dist/components/NodeWrapper/utils.js.map +1 -0
  48. package/dist/components/Nodes/DefaultNode.js +8 -0
  49. package/dist/components/Nodes/DefaultNode.js.map +1 -0
  50. package/dist/components/Nodes/GroupNode.js +4 -0
  51. package/dist/components/Nodes/GroupNode.js.map +1 -0
  52. package/dist/components/Nodes/InputNode.js +8 -0
  53. package/dist/components/Nodes/InputNode.js.map +1 -0
  54. package/dist/components/Nodes/OutputNode.js +8 -0
  55. package/dist/components/Nodes/OutputNode.js.map +1 -0
  56. package/dist/components/Nodes/utils.js +23 -0
  57. package/dist/components/Nodes/utils.js.map +1 -0
  58. package/dist/components/Panel/index.js +11 -0
  59. package/dist/components/Panel/index.js.map +1 -0
  60. package/dist/components/StoreUpdater/index.js +169 -0
  61. package/dist/components/StoreUpdater/index.js.map +1 -0
  62. package/dist/components/UserSelection/index.js +20 -0
  63. package/dist/components/UserSelection/index.js.map +1 -0
  64. package/dist/constants/layout.js +5 -0
  65. package/dist/constants/layout.js.map +1 -0
  66. package/dist/container/EdgeRenderer/MarkerDefinitions.js +37 -0
  67. package/dist/container/EdgeRenderer/MarkerDefinitions.js.map +1 -0
  68. package/dist/container/EdgeRenderer/MarkerSymbols.js +38 -0
  69. package/dist/container/EdgeRenderer/MarkerSymbols.js.map +1 -0
  70. package/dist/container/EdgeRenderer/index.js +25 -0
  71. package/dist/container/EdgeRenderer/index.js.map +1 -0
  72. package/dist/container/FlowRenderer/index.js +29 -0
  73. package/dist/container/FlowRenderer/index.js.map +1 -0
  74. package/dist/container/GraphView/index.js +14 -0
  75. package/dist/container/GraphView/index.js.map +1 -0
  76. package/dist/container/InkFlow/Wrapper.js +13 -0
  77. package/dist/container/InkFlow/Wrapper.js.map +1 -0
  78. package/dist/container/InkFlow/index.d.ts.map +1 -1
  79. package/dist/container/InkFlow/index.js +22 -0
  80. package/dist/container/InkFlow/index.js.map +1 -0
  81. package/dist/container/InkFlow/init-values.js +11 -0
  82. package/dist/container/InkFlow/init-values.js.map +1 -0
  83. package/dist/container/NodeRenderer/index.js +29 -0
  84. package/dist/container/NodeRenderer/index.js.map +1 -0
  85. package/dist/container/NodeRenderer/useResizeObserver.js +29 -0
  86. package/dist/container/NodeRenderer/useResizeObserver.js.map +1 -0
  87. package/dist/container/Pane/index.js +207 -0
  88. package/dist/container/Pane/index.js.map +1 -0
  89. package/dist/container/Viewport/index.d.ts.map +1 -1
  90. package/dist/container/Viewport/index.js +11 -0
  91. package/dist/container/Viewport/index.js.map +1 -0
  92. package/dist/container/ZoomPane/index.js +108 -0
  93. package/dist/container/ZoomPane/index.js.map +1 -0
  94. package/dist/contexts/NodeIdContext.js +10 -0
  95. package/dist/contexts/NodeIdContext.js.map +1 -0
  96. package/dist/contexts/StoreContext.js +5 -0
  97. package/dist/contexts/StoreContext.js.map +1 -0
  98. package/dist/hooks/index.d.ts +2 -0
  99. package/dist/hooks/index.d.ts.map +1 -1
  100. package/dist/hooks/index.js +7 -0
  101. package/dist/hooks/index.js.map +1 -0
  102. package/dist/hooks/useConnection.js +47 -0
  103. package/dist/hooks/useConnection.js.map +1 -0
  104. package/dist/hooks/useDrag.js +56 -0
  105. package/dist/hooks/useDrag.js.map +1 -0
  106. package/dist/hooks/useEdgesState.js +6 -0
  107. package/dist/hooks/useEdgesState.js.map +1 -0
  108. package/dist/hooks/useGlobalKeyHandler.js +34 -0
  109. package/dist/hooks/useGlobalKeyHandler.js.map +1 -0
  110. package/dist/hooks/useInkFlow.js +185 -0
  111. package/dist/hooks/useInkFlow.js.map +1 -0
  112. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  113. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  114. package/dist/hooks/useIsomorphicLayoutEffect.js +4 -0
  115. package/dist/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  116. package/dist/hooks/useKeyPress.js +117 -0
  117. package/dist/hooks/useKeyPress.js.map +1 -0
  118. package/dist/hooks/useMoveSelectedNodes.js +65 -0
  119. package/dist/hooks/useMoveSelectedNodes.js.map +1 -0
  120. package/dist/hooks/useNodeInView.d.ts +10 -0
  121. package/dist/hooks/useNodeInView.d.ts.map +1 -0
  122. package/dist/hooks/useNodeInView.js +41 -0
  123. package/dist/hooks/useNodeInView.js.map +1 -0
  124. package/dist/hooks/useNodesInView.d.ts +12 -0
  125. package/dist/hooks/useNodesInView.d.ts.map +1 -0
  126. package/dist/hooks/useNodesInView.js +52 -0
  127. package/dist/hooks/useNodesInView.js.map +1 -0
  128. package/dist/hooks/useNodesState.js +6 -0
  129. package/dist/hooks/useNodesState.js.map +1 -0
  130. package/dist/hooks/useResizeHandler.js +38 -0
  131. package/dist/hooks/useResizeHandler.js.map +1 -0
  132. package/dist/hooks/useStore.js +37 -0
  133. package/dist/hooks/useStore.js.map +1 -0
  134. package/dist/hooks/useViewportHelper.js +149 -0
  135. package/dist/hooks/useViewportHelper.js.map +1 -0
  136. package/dist/hooks/useVisibleEdgeIds.js +50 -0
  137. package/dist/hooks/useVisibleEdgeIds.js.map +1 -0
  138. package/dist/hooks/useVisibleNodeIds.js +21 -0
  139. package/dist/hooks/useVisibleNodeIds.js.map +1 -0
  140. package/dist/index.js +18 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/plugins/Background/Background.js +49 -0
  143. package/dist/plugins/Background/Background.js.map +1 -0
  144. package/dist/plugins/Background/Patterns.js +11 -0
  145. package/dist/plugins/Background/Patterns.js.map +1 -0
  146. package/dist/plugins/Background/index.js +3 -0
  147. package/dist/plugins/Background/index.js.map +1 -0
  148. package/dist/plugins/Background/types.js +7 -0
  149. package/dist/plugins/Background/types.js.map +1 -0
  150. package/dist/plugins/Controls/ControlButton.js +7 -0
  151. package/dist/plugins/Controls/ControlButton.js.map +1 -0
  152. package/dist/plugins/Controls/Controls.js +49 -0
  153. package/dist/plugins/Controls/Controls.js.map +1 -0
  154. package/dist/plugins/Controls/Icons/FitView.js +5 -0
  155. package/dist/plugins/Controls/Icons/FitView.js.map +1 -0
  156. package/dist/plugins/Controls/Icons/Lock.js +5 -0
  157. package/dist/plugins/Controls/Icons/Lock.js.map +1 -0
  158. package/dist/plugins/Controls/Icons/Minus.js +5 -0
  159. package/dist/plugins/Controls/Icons/Minus.js.map +1 -0
  160. package/dist/plugins/Controls/Icons/Plus.js +5 -0
  161. package/dist/plugins/Controls/Icons/Plus.js.map +1 -0
  162. package/dist/plugins/Controls/Icons/Unlock.js +5 -0
  163. package/dist/plugins/Controls/Icons/Unlock.js.map +1 -0
  164. package/dist/plugins/Controls/index.js +3 -0
  165. package/dist/plugins/Controls/index.js.map +1 -0
  166. package/dist/plugins/Controls/types.js +2 -0
  167. package/dist/plugins/Controls/types.js.map +1 -0
  168. package/dist/plugins/NodeResizer/NodeResizeControl.js +166 -0
  169. package/dist/plugins/NodeResizer/NodeResizeControl.js.map +1 -0
  170. package/dist/plugins/NodeResizer/NodeResizer.js +35 -0
  171. package/dist/plugins/NodeResizer/NodeResizer.js.map +1 -0
  172. package/dist/plugins/NodeResizer/index.js +4 -0
  173. package/dist/plugins/NodeResizer/index.js.map +1 -0
  174. package/dist/plugins/NodeResizer/types.js +2 -0
  175. package/dist/plugins/NodeResizer/types.js.map +1 -0
  176. package/dist/plugins/index.js +4 -0
  177. package/dist/plugins/index.js.map +1 -0
  178. package/dist/store/index.d.ts.map +1 -1
  179. package/dist/store/index.js +384 -0
  180. package/dist/store/index.js.map +1 -0
  181. package/dist/store/initialState.d.ts.map +1 -1
  182. package/dist/store/initialState.js +84 -0
  183. package/dist/store/initialState.js.map +1 -0
  184. package/dist/styles/utils.js +8 -0
  185. package/dist/styles/utils.js.map +1 -0
  186. package/dist/types/edges.js +2 -0
  187. package/dist/types/edges.js.map +1 -0
  188. package/dist/types/general.js +2 -0
  189. package/dist/types/general.js.map +1 -0
  190. package/dist/types/index.js +7 -0
  191. package/dist/types/index.js.map +1 -0
  192. package/dist/types/instance.js +2 -0
  193. package/dist/types/instance.js.map +1 -0
  194. package/dist/types/layout.js +2 -0
  195. package/dist/types/layout.js.map +1 -0
  196. package/dist/types/nodes.js +2 -0
  197. package/dist/types/nodes.js.map +1 -0
  198. package/dist/types/props.js +2 -0
  199. package/dist/types/props.js.map +1 -0
  200. package/dist/types/store.js +2 -0
  201. package/dist/types/store.js.map +1 -0
  202. package/dist/types/utils/types.js +2 -0
  203. package/dist/types/utils/types.js.map +1 -0
  204. package/dist/utils/changes.js +213 -0
  205. package/dist/utils/changes.js.map +1 -0
  206. package/dist/utils/dom.d.ts.map +1 -1
  207. package/dist/utils/dom.js +38 -0
  208. package/dist/utils/dom.js.map +1 -0
  209. package/dist/utils/edges/bezier-edge.js +96 -0
  210. package/dist/utils/edges/bezier-edge.js.map +1 -0
  211. package/dist/utils/edges/general.d.ts.map +1 -1
  212. package/dist/utils/edges/general.js +108 -0
  213. package/dist/utils/edges/general.js.map +1 -0
  214. package/dist/utils/edges/index.js +6 -0
  215. package/dist/utils/edges/index.js.map +1 -0
  216. package/dist/utils/edges/positions.js +101 -0
  217. package/dist/utils/edges/positions.js.map +1 -0
  218. package/dist/utils/edges/smoothstep-edge.js +222 -0
  219. package/dist/utils/edges/smoothstep-edge.js.map +1 -0
  220. package/dist/utils/edges/straight-edge.js +32 -0
  221. package/dist/utils/edges/straight-edge.js.map +1 -0
  222. package/dist/utils/general.d.ts +7 -0
  223. package/dist/utils/general.d.ts.map +1 -1
  224. package/dist/utils/general.js +228 -0
  225. package/dist/utils/general.js.map +1 -0
  226. package/dist/utils/graph.d.ts.map +1 -1
  227. package/dist/utils/graph.js +368 -0
  228. package/dist/utils/graph.js.map +1 -0
  229. package/dist/utils/layout.js +142 -0
  230. package/dist/utils/layout.js.map +1 -0
  231. package/dist/utils/marker.js +35 -0
  232. package/dist/utils/marker.js.map +1 -0
  233. package/dist/utils/node.js +42 -0
  234. package/dist/utils/node.js.map +1 -0
  235. package/dist/utils/positions.js +101 -0
  236. package/dist/utils/positions.js.map +1 -0
  237. package/dist/utils/store.d.ts.map +1 -1
  238. package/dist/utils/store.js +162 -0
  239. package/dist/utils/store.js.map +1 -0
  240. package/package.json +2 -2
  241. package/dist/index.cjs.js +0 -25
  242. package/dist/index.cjs.js.map +0 -1
  243. package/dist/index.esm.js +0 -25
  244. package/dist/index.esm.js.map +0 -1
  245. package/dist/style.css +0 -814
@@ -0,0 +1,368 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { errorMessages, } from '@aloudata/ink-core';
3
+ import { boxToRect, clampPosition, getBoundsOfBoxes, getOverlappingArea, nodeToRect, pointToRendererPoint, getViewportForBounds, isCoordinateExtent, getNodeDimensions, nodeToBox, } from './general';
4
+ /**
5
+ * Test whether an object is useable as an Edge
6
+ * @public
7
+ * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true
8
+ * @param element - The element to test
9
+ * @returns A boolean indicating whether the element is an Edge
10
+ */
11
+ export var isEdgeBase = function (element) {
12
+ return 'id' in element && 'source' in element && 'target' in element;
13
+ };
14
+ /**
15
+ * Test whether an object is useable as a Node
16
+ * @public
17
+ * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true
18
+ * @param element - The element to test
19
+ * @returns A boolean indicating whether the element is an Node
20
+ */
21
+ export var isNodeBase = function (element) {
22
+ return 'id' in element &&
23
+ 'position' in element &&
24
+ !('source' in element) &&
25
+ !('target' in element);
26
+ };
27
+ export var isInternalNodeBase = function (element) {
28
+ return 'id' in element &&
29
+ 'internals' in element &&
30
+ !('source' in element) &&
31
+ !('target' in element);
32
+ };
33
+ /**
34
+ * Pass in a node, and get connected nodes where edge.source === node.id
35
+ * @public
36
+ * @param node - The node to get the connected nodes from
37
+ * @param nodes - The array of all nodes
38
+ * @param edges - The array of all edges
39
+ * @returns An array of nodes that are connected over eges where the source is the given node
40
+ */
41
+ export var getOutgoers = function (node, nodes, edges) {
42
+ if (!node.id) {
43
+ return [];
44
+ }
45
+ var outgoerIds = new Set();
46
+ edges.forEach(function (edge) {
47
+ if (edge.source === node.id) {
48
+ outgoerIds.add(edge.target);
49
+ }
50
+ });
51
+ return nodes.filter(function (n) { return outgoerIds.has(n.id); });
52
+ };
53
+ /**
54
+ * Pass in a node, and get connected nodes where edge.target === node.id
55
+ * @public
56
+ * @param node - The node to get the connected nodes from
57
+ * @param nodes - The array of all nodes
58
+ * @param edges - The array of all edges
59
+ * @returns An array of nodes that are connected over eges where the target is the given node
60
+ */
61
+ export var getIncomers = function (node, nodes, edges) {
62
+ if (!node.id) {
63
+ return [];
64
+ }
65
+ var incomersIds = new Set();
66
+ edges.forEach(function (edge) {
67
+ if (edge.target === node.id) {
68
+ incomersIds.add(edge.source);
69
+ }
70
+ });
71
+ return nodes.filter(function (n) { return incomersIds.has(n.id); });
72
+ };
73
+ export var getNodePositionWithOrigin = function (node, nodeOrigin) {
74
+ if (nodeOrigin === void 0) { nodeOrigin = [0, 0]; }
75
+ var _a = getNodeDimensions(node), width = _a.width, height = _a.height;
76
+ var positionAbsolute = 'internals' in node ? node.internals.positionAbsolute : node.position;
77
+ var origin = node.origin || nodeOrigin;
78
+ var offsetX = width * origin[0];
79
+ var offsetY = height * origin[1];
80
+ return {
81
+ position: {
82
+ x: node.position.x - offsetX,
83
+ y: node.position.y - offsetY,
84
+ },
85
+ positionAbsolute: {
86
+ x: positionAbsolute.x - offsetX,
87
+ y: positionAbsolute.y - offsetY,
88
+ },
89
+ };
90
+ };
91
+ /**
92
+ * Determines a bounding box that contains all given nodes in an array
93
+ * @public
94
+ * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.
95
+ * @param nodes - Nodes to calculate the bounds for
96
+ * @param params.nodeOrigin - Origin of the nodes: [0, 0] - top left, [0.5, 0.5] - center
97
+ * @returns Bounding box enclosing all nodes
98
+ */
99
+ export var getNodesBounds = function (nodes, params) {
100
+ if (params === void 0) { params = { nodeOrigin: [0, 0] }; }
101
+ if (nodes.length === 0) {
102
+ return { x: 0, y: 0, width: 0, height: 0 };
103
+ }
104
+ var box = nodes.reduce(function (currBox, node) {
105
+ var nodeBox = nodeToBox(node, params.nodeOrigin);
106
+ return getBoundsOfBoxes(currBox, nodeBox);
107
+ }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity });
108
+ return boxToRect(box);
109
+ };
110
+ /**
111
+ * Determines a bounding box that contains all given nodes in an array
112
+ * @internal
113
+ */
114
+ export var getInternalNodesBounds = function (nodeLookup, params) {
115
+ if (params === void 0) { params = {
116
+ nodeOrigin: [0, 0],
117
+ }; }
118
+ if (nodeLookup.size === 0) {
119
+ return { x: 0, y: 0, width: 0, height: 0 };
120
+ }
121
+ var box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };
122
+ nodeLookup.forEach(function (node) {
123
+ if (params.filter == undefined || params.filter(node)) {
124
+ var nodeBox = nodeToBox(node, params.nodeOrigin);
125
+ box = getBoundsOfBoxes(box, nodeBox);
126
+ }
127
+ });
128
+ return boxToRect(box);
129
+ };
130
+ export var getNodesInside = function (nodes, rect, _a, partially,
131
+ // set excludeNonSelectableNodes if you want to pay attention to the nodes "selectable" attribute
132
+ excludeNonSelectableNodes) {
133
+ var e_1, _b;
134
+ var _c, _d, _e, _f, _g, _h;
135
+ var _j = _a === void 0 ? [0, 0, 1] : _a, _k = __read(_j, 3), tx = _k[0], ty = _k[1], tScale = _k[2];
136
+ if (partially === void 0) { partially = false; }
137
+ if (excludeNonSelectableNodes === void 0) { excludeNonSelectableNodes = false; }
138
+ var paneRect = __assign(__assign({}, pointToRendererPoint(rect, [tx, ty, tScale])), { width: rect.width / tScale, height: rect.height / tScale });
139
+ var visibleNodes = [];
140
+ try {
141
+ for (var _l = __values(nodes.values()), _m = _l.next(); !_m.done; _m = _l.next()) {
142
+ var node = _m.value;
143
+ var measured = node.measured, _o = node.selectable, selectable = _o === void 0 ? true : _o, _p = node.hidden, hidden = _p === void 0 ? false : _p;
144
+ if ((excludeNonSelectableNodes && !selectable) || hidden) {
145
+ continue;
146
+ }
147
+ var width = (_e = (_d = (_c = measured.width) !== null && _c !== void 0 ? _c : node.width) !== null && _d !== void 0 ? _d : node.initialWidth) !== null && _e !== void 0 ? _e : null;
148
+ var height = (_h = (_g = (_f = measured.height) !== null && _f !== void 0 ? _f : node.height) !== null && _g !== void 0 ? _g : node.initialHeight) !== null && _h !== void 0 ? _h : null;
149
+ var overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));
150
+ var area = (width !== null && width !== void 0 ? width : 0) * (height !== null && height !== void 0 ? height : 0);
151
+ var partiallyVisible = partially && overlappingArea > 0;
152
+ var forceInitialRender = !node.internals.handleBounds;
153
+ var isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area;
154
+ if (isVisible || node.dragging) {
155
+ visibleNodes.push(node);
156
+ }
157
+ }
158
+ }
159
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
160
+ finally {
161
+ try {
162
+ if (_m && !_m.done && (_b = _l.return)) _b.call(_l);
163
+ }
164
+ finally { if (e_1) throw e_1.error; }
165
+ }
166
+ return visibleNodes;
167
+ };
168
+ /**
169
+ * Get all connecting edges for a given set of nodes
170
+ * @param nodes - Nodes you want to get the connected edges for
171
+ * @param edges - All edges
172
+ * @returns Array of edges that connect any of the given nodes with each other
173
+ */
174
+ export var getConnectedEdges = function (nodes, edges) {
175
+ var nodeIds = new Set();
176
+ nodes.forEach(function (node) {
177
+ nodeIds.add(node.id);
178
+ });
179
+ return edges.filter(function (edge) { return nodeIds.has(edge.source) || nodeIds.has(edge.target); });
180
+ };
181
+ export function fitView(_a, options_1) {
182
+ return __awaiter(this, arguments, void 0, function (_b, options) {
183
+ var bounds, viewport;
184
+ var _c, _d, _e;
185
+ var nodes = _b.nodes, width = _b.width, height = _b.height, panZoom = _b.panZoom, minZoom = _b.minZoom, maxZoom = _b.maxZoom;
186
+ return __generator(this, function (_f) {
187
+ switch (_f.label) {
188
+ case 0:
189
+ if (nodes.size === 0) {
190
+ return [2 /*return*/, Promise.resolve(false)];
191
+ }
192
+ bounds = getInternalNodesBounds(nodes);
193
+ viewport = getViewportForBounds(bounds, width, height, (_c = options === null || options === void 0 ? void 0 : options.minZoom) !== null && _c !== void 0 ? _c : minZoom, (_d = options === null || options === void 0 ? void 0 : options.maxZoom) !== null && _d !== void 0 ? _d : maxZoom, (_e = options === null || options === void 0 ? void 0 : options.padding) !== null && _e !== void 0 ? _e : 0.1);
194
+ return [4 /*yield*/, panZoom.setViewport(viewport, { duration: options === null || options === void 0 ? void 0 : options.duration })];
195
+ case 1:
196
+ _f.sent();
197
+ return [2 /*return*/, Promise.resolve(true)];
198
+ }
199
+ });
200
+ });
201
+ }
202
+ /**
203
+ * This function clamps the passed extend by the node's width and height.
204
+ * This is needed to prevent the node from being dragged outside of its extent.
205
+ *
206
+ * @param node
207
+ * @param extent
208
+ * @returns
209
+ */
210
+ function clampNodeExtent(node, extent) {
211
+ var _a, _b, _c, _d;
212
+ if (!extent || extent === 'parent') {
213
+ return extent;
214
+ }
215
+ return [
216
+ extent[0],
217
+ [
218
+ extent[1][0] - ((_b = (_a = node.measured) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0),
219
+ extent[1][1] - ((_d = (_c = node.measured) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 0),
220
+ ],
221
+ ];
222
+ }
223
+ /**
224
+ * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.
225
+ *
226
+ * @internal
227
+ * @returns position, positionAbsolute
228
+ */
229
+ export function calculateNodePosition(_a) {
230
+ var nodeId = _a.nodeId, nextPosition = _a.nextPosition, nodeLookup = _a.nodeLookup, _b = _a.nodeOrigin, nodeOrigin = _b === void 0 ? [0, 0] : _b, nodeExtent = _a.nodeExtent, onError = _a.onError;
231
+ var node = nodeLookup.get(nodeId);
232
+ var parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;
233
+ var _c = parentNode
234
+ ? getNodePositionWithOrigin(parentNode, parentNode.origin || nodeOrigin)
235
+ .positionAbsolute
236
+ : { x: 0, y: 0 }, parentX = _c.x, parentY = _c.y;
237
+ var currentExtent = clampNodeExtent(node, node.extent || nodeExtent);
238
+ if (node.extent === 'parent' && !node.expandParent) {
239
+ if (!parentNode) {
240
+ onError === null || onError === void 0 ? void 0 : onError('005', errorMessages['error005']());
241
+ }
242
+ else {
243
+ var nodeWidth = node.measured.width;
244
+ var nodeHeight = node.measured.height;
245
+ var parentWidth = parentNode.measured.width;
246
+ var parentHeight = parentNode.measured.height;
247
+ if (nodeWidth && nodeHeight && parentWidth && parentHeight) {
248
+ var currNodeOrigin = node.origin || nodeOrigin;
249
+ var extentX = parentX + nodeWidth * currNodeOrigin[0];
250
+ var extentY = parentY + nodeHeight * currNodeOrigin[1];
251
+ currentExtent = [
252
+ [extentX, extentY],
253
+ [
254
+ extentX + parentWidth - nodeWidth,
255
+ extentY + parentHeight - nodeHeight,
256
+ ],
257
+ ];
258
+ }
259
+ }
260
+ }
261
+ else if (parentNode && isCoordinateExtent(node.extent)) {
262
+ currentExtent = [
263
+ [node.extent[0][0] + parentX, node.extent[0][1] + parentY],
264
+ [node.extent[1][0] + parentX, node.extent[1][1] + parentY],
265
+ ];
266
+ }
267
+ var positionAbsolute = isCoordinateExtent(currentExtent)
268
+ ? clampPosition(nextPosition, currentExtent)
269
+ : nextPosition;
270
+ return {
271
+ position: {
272
+ x: positionAbsolute.x - parentX,
273
+ y: positionAbsolute.y - parentY,
274
+ },
275
+ positionAbsolute: positionAbsolute,
276
+ };
277
+ }
278
+ /**
279
+ * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted
280
+ * @internal
281
+ * @param param.nodesToRemove - The nodes to remove
282
+ * @param param.edgesToRemove - The edges to remove
283
+ * @param param.nodes - All nodes
284
+ * @param param.edges - All edges
285
+ * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted
286
+ * @returns nodes: nodes that can be deleted, edges: edges that can be deleted
287
+ */
288
+ export function getElementsToRemove(_a) {
289
+ return __awaiter(this, arguments, void 0, function (_b) {
290
+ var nodeIds, matchingNodes, _loop_1, nodes_1, nodes_1_1, node, edgeIds, deletableEdges, connectedEdges, matchingEdges, _loop_2, deletableEdges_1, deletableEdges_1_1, edge, onBeforeDeleteResult;
291
+ var e_2, _c, e_3, _d;
292
+ var _e = _b.nodesToRemove, nodesToRemove = _e === void 0 ? [] : _e, _f = _b.edgesToRemove, edgesToRemove = _f === void 0 ? [] : _f, nodes = _b.nodes, edges = _b.edges, onBeforeDelete = _b.onBeforeDelete;
293
+ return __generator(this, function (_g) {
294
+ switch (_g.label) {
295
+ case 0:
296
+ nodeIds = new Set(nodesToRemove.map(function (node) { return node.id; }));
297
+ matchingNodes = [];
298
+ _loop_1 = function (node) {
299
+ if (node.deletable === false) {
300
+ return "continue";
301
+ }
302
+ var isIncluded = nodeIds.has(node.id);
303
+ var parentHit = !isIncluded &&
304
+ node.parentId &&
305
+ matchingNodes.find(function (n) { return n.id === node.parentId; });
306
+ if (isIncluded || parentHit) {
307
+ matchingNodes.push(node);
308
+ }
309
+ };
310
+ try {
311
+ for (nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {
312
+ node = nodes_1_1.value;
313
+ _loop_1(node);
314
+ }
315
+ }
316
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
317
+ finally {
318
+ try {
319
+ if (nodes_1_1 && !nodes_1_1.done && (_c = nodes_1.return)) _c.call(nodes_1);
320
+ }
321
+ finally { if (e_2) throw e_2.error; }
322
+ }
323
+ edgeIds = new Set(edgesToRemove.map(function (edge) { return edge.id; }));
324
+ deletableEdges = edges.filter(function (edge) { return edge.deletable !== false; });
325
+ connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);
326
+ matchingEdges = connectedEdges;
327
+ _loop_2 = function (edge) {
328
+ var isIncluded = edgeIds.has(edge.id);
329
+ if (isIncluded && !matchingEdges.find(function (e) { return e.id === edge.id; })) {
330
+ matchingEdges.push(edge);
331
+ }
332
+ };
333
+ try {
334
+ for (deletableEdges_1 = __values(deletableEdges), deletableEdges_1_1 = deletableEdges_1.next(); !deletableEdges_1_1.done; deletableEdges_1_1 = deletableEdges_1.next()) {
335
+ edge = deletableEdges_1_1.value;
336
+ _loop_2(edge);
337
+ }
338
+ }
339
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
340
+ finally {
341
+ try {
342
+ if (deletableEdges_1_1 && !deletableEdges_1_1.done && (_d = deletableEdges_1.return)) _d.call(deletableEdges_1);
343
+ }
344
+ finally { if (e_3) throw e_3.error; }
345
+ }
346
+ if (!onBeforeDelete) {
347
+ return [2 /*return*/, {
348
+ edges: matchingEdges,
349
+ nodes: matchingNodes,
350
+ }];
351
+ }
352
+ return [4 /*yield*/, onBeforeDelete({
353
+ nodes: matchingNodes,
354
+ edges: matchingEdges,
355
+ })];
356
+ case 1:
357
+ onBeforeDeleteResult = _g.sent();
358
+ if (typeof onBeforeDeleteResult === 'boolean') {
359
+ return [2 /*return*/, onBeforeDeleteResult
360
+ ? { edges: matchingEdges, nodes: matchingNodes }
361
+ : { edges: [], nodes: [] }];
362
+ }
363
+ return [2 /*return*/, onBeforeDeleteResult];
364
+ }
365
+ });
366
+ });
367
+ }
368
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { builtinLayoutTypes } from '../constants/layout';
2
+ import { setCenterByBBox, setCenterById } from './node';
3
+ import _ from 'lodash';
4
+ import { DEFAULT_LAYOUT_CONFIG } from '../container/InkFlow/init-values';
5
+ import { getNodePositionWithOrigin } from './graph';
6
+ import { getNodeDimensions } from './general';
7
+ export function layout(_a) {
8
+ var layoutTypes = _a.layoutTypes, _b = _a.layoutConfig, layoutConfig = _b === void 0 ? DEFAULT_LAYOUT_CONFIG : _b, edges = _a.edges, nodeOrigin = _a.nodeOrigin, nodes = _a.nodes, container = _a.container;
9
+ var layoutFn = layoutTypes[layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.type] || builtinLayoutTypes[layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.type];
10
+ if (!canLayout(nodes) || !layoutFn) {
11
+ return { nodes: nodes, edges: edges, layoutComplete: false };
12
+ }
13
+ return execLayout({
14
+ layoutConfig: layoutConfig,
15
+ container: container,
16
+ nodeOrigin: nodeOrigin,
17
+ nodes: nodes,
18
+ layoutFn: layoutFn,
19
+ edges: edges,
20
+ });
21
+ }
22
+ export function canLayout(nodes) {
23
+ return nodes.every(function (item) { var _a, _b; return ((_a = item.measured) === null || _a === void 0 ? void 0 : _a.width) && ((_b = item.measured) === null || _b === void 0 ? void 0 : _b.height); });
24
+ }
25
+ export function getNeedLayout(changes) {
26
+ return changes.some(function (change) {
27
+ return ['dimensions', 'remove', 'add', 'replace'].includes(change.type);
28
+ });
29
+ }
30
+ export function execLayout(_a) {
31
+ var _b = _a.layoutConfig, layoutConfig = _b === void 0 ? DEFAULT_LAYOUT_CONFIG : _b, edges = _a.edges, nodeOrigin = _a.nodeOrigin, nodes = _a.nodes, container = _a.container, layoutFn = _a.layoutFn;
32
+ var newNodes = _.cloneDeep(nodes);
33
+ newNodes.forEach(function (node) {
34
+ if (node.data) {
35
+ node.data.width = node.measured.width;
36
+ node.data.height = node.measured.height;
37
+ }
38
+ });
39
+ var _c = layoutFn(newNodes, edges, __assign({ nodeOrigin: nodeOrigin, width: container.width, height: container.height }, layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.options)), hasLayoutNodes = _c.nodes, hasLayoutEdges = _c.edges;
40
+ return { nodes: hasLayoutNodes, edges: hasLayoutEdges, layoutComplete: true };
41
+ }
42
+ export function setCenter(_a) {
43
+ var centerConfig = _a.centerConfig, width = _a.width, height = _a.height, transform = _a.transform, panZoom = _a.panZoom, nodeOrigin = _a.nodeOrigin, nodes = _a.nodes;
44
+ if (!centerConfig || !panZoom) {
45
+ return;
46
+ }
47
+ var centerNode = nodes.find(function (item) { return item.id === centerConfig.centerNodeId; });
48
+ if (centerNode) {
49
+ setCenterById({
50
+ node: centerNode,
51
+ width: width,
52
+ height: height,
53
+ panZoom: panZoom,
54
+ nodeOrigin: nodeOrigin,
55
+ zoom: transform[2],
56
+ });
57
+ return true;
58
+ }
59
+ if (centerConfig.centerByBBox) {
60
+ setCenterByBBox({
61
+ nodes: nodes,
62
+ width: width,
63
+ height: height,
64
+ panZoom: panZoom,
65
+ nodeOrigin: nodeOrigin,
66
+ zoom: transform[2],
67
+ });
68
+ }
69
+ return true;
70
+ }
71
+ /**
72
+ * 根据布局方向和offset设置进行偏移
73
+ * @param
74
+ * @returns
75
+ */
76
+ export function setViewportOffsetByLayoutDir(_a) {
77
+ var offsetConfig = _a.offsetConfig, width = _a.width, height = _a.height, panZoom = _a.panZoom, nodeOrigin = _a.nodeOrigin, nodes = _a.nodes, layoutDirection = _a.layoutDirection;
78
+ var node = nodes.find(function (item) { return item.id === (offsetConfig === null || offsetConfig === void 0 ? void 0 : offsetConfig.nodeId); });
79
+ if (!layoutDirection || !node)
80
+ return false;
81
+ var nodePosition = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;
82
+ var nodeSize = getNodeDimensions(node);
83
+ var viewportCenter = {
84
+ x: width / 2,
85
+ y: height / 2,
86
+ };
87
+ var offset = {
88
+ x: 0,
89
+ y: 0,
90
+ };
91
+ switch (layoutDirection) {
92
+ case 'BT': {
93
+ offset = {
94
+ x: viewportCenter.x - nodePosition.x - nodeSize.width / 2,
95
+ y: height - nodePosition.y - offsetConfig.offset - nodeSize.height,
96
+ };
97
+ break;
98
+ }
99
+ case 'LR': {
100
+ offset = {
101
+ x: offsetConfig.offset - nodePosition.x,
102
+ y: viewportCenter.y - nodePosition.y - nodeSize.height / 2,
103
+ };
104
+ break;
105
+ }
106
+ case 'RL': {
107
+ offset = {
108
+ x: width - nodePosition.x - offsetConfig.offset - nodeSize.width,
109
+ y: viewportCenter.y - nodePosition.y - nodeSize.height / 2,
110
+ };
111
+ break;
112
+ }
113
+ default: {
114
+ offset = {
115
+ x: viewportCenter.x - nodePosition.x - nodeSize.width / 2,
116
+ y: offsetConfig.offset - nodePosition.y,
117
+ };
118
+ break;
119
+ }
120
+ }
121
+ panZoom.setViewport({
122
+ x: offset.x,
123
+ y: offset.y,
124
+ zoom: 1,
125
+ });
126
+ return true;
127
+ }
128
+ /** 按照指定位置将画布进行偏移 */
129
+ export function setViewportOffsetByNode(_a) {
130
+ var position = _a.position, targetPosition = _a.targetPosition, panZoom = _a.panZoom, transform = _a.transform;
131
+ var zoom = transform[2];
132
+ var offset = {
133
+ x: (targetPosition.x - position.x) * zoom,
134
+ y: (targetPosition.y - position.y) * zoom,
135
+ };
136
+ panZoom.setViewport({
137
+ x: transform[0] + offset.x,
138
+ y: transform[1] + offset.y,
139
+ zoom: zoom,
140
+ });
141
+ }
142
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/utils/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export function getMarkerId(marker, id) {
2
+ if (!marker) {
3
+ return '';
4
+ }
5
+ if (typeof marker === 'string') {
6
+ return marker;
7
+ }
8
+ var idPrefix = id ? "".concat(id, "__") : '';
9
+ return "".concat(idPrefix).concat(Object.keys(marker)
10
+ .sort()
11
+ .map(function (key) { return "".concat(key, "=").concat(marker[key]); })
12
+ .join('&'));
13
+ }
14
+ export function createMarkerIds(edges, _a) {
15
+ var id = _a.id, defaultColor = _a.defaultColor, defaultMarkerStart = _a.defaultMarkerStart, defaultMarkerEnd = _a.defaultMarkerEnd;
16
+ var ids = new Set();
17
+ return edges
18
+ .reduce(function (markers, edge) {
19
+ [
20
+ edge.markerStart || defaultMarkerStart,
21
+ edge.markerEnd || defaultMarkerEnd,
22
+ ].forEach(function (marker) {
23
+ if (marker && typeof marker === 'object') {
24
+ var markerId = getMarkerId(marker, id);
25
+ if (!ids.has(markerId)) {
26
+ markers.push(__assign({ id: markerId, color: marker.color || defaultColor }, marker));
27
+ ids.add(markerId);
28
+ }
29
+ }
30
+ });
31
+ return markers;
32
+ }, [])
33
+ .sort(function (a, b) { return a.id.localeCompare(b.id); });
34
+ }
35
+ //# sourceMappingURL=marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/utils/marker.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,WAAW,CACzB,MAAkC,EAClC,EAAkB;IAElB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,UAAG,EAAE,OAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAErC,OAAO,UAAG,QAAQ,SAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACrC,IAAI,EAAE;SACN,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,UAAG,GAAG,cAAI,MAAM,CAAC,GAAuB,CAAC,CAAE,EAA3C,CAA2C,CAAC;SACzD,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAiB,EACjB,EAUC;QATC,EAAE,QAAA,EACF,YAAY,kBAAA,EACZ,kBAAkB,wBAAA,EAClB,gBAAgB,sBAAA;IAQlB,IAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,OAAO,KAAK;SACT,MAAM,CAAgB,UAAC,OAAO,EAAE,IAAI;QACnC;YACE,IAAI,CAAC,WAAW,IAAI,kBAAkB;YACtC,IAAI,CAAC,SAAS,IAAI,gBAAgB;SACnC,CAAC,OAAO,CAAC,UAAC,MAAM;YACf,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,YACV,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,YAAY,IAChC,MAAM,EACT,CAAC;oBACH,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC;SACL,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAxB,CAAwB,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { getNodeDimensions } from './general';
2
+ import { getNodesBounds } from './graph';
3
+ import { getNodePositionWithOrigin } from './store';
4
+ export function setCenterByBBox(_a) {
5
+ var nodes = _a.nodes, nodeOrigin = _a.nodeOrigin, height = _a.height, width = _a.width, _b = _a.zoom, zoom = _b === void 0 ? 1 : _b, panZoom = _a.panZoom;
6
+ var bounds = getNodesBounds(nodes, { nodeOrigin: nodeOrigin });
7
+ var offset = {
8
+ x: bounds.x + bounds.width / 2,
9
+ y: bounds.y + bounds.height / 2,
10
+ };
11
+ var center = {
12
+ x: width / 2 - offset.x * zoom,
13
+ y: height / 2 - offset.y * zoom,
14
+ };
15
+ panZoom.setViewport({
16
+ x: center.x,
17
+ y: center.y,
18
+ zoom: zoom,
19
+ });
20
+ }
21
+ export function setCenterById(_a) {
22
+ var node = _a.node, height = _a.height, width = _a.width, _b = _a.zoom, zoom = _b === void 0 ? 1 : _b, panZoom = _a.panZoom, nodeOrigin = _a.nodeOrigin;
23
+ var dimension = getNodeDimensions(node);
24
+ var nodePosition = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;
25
+ var offset = {
26
+ x: nodePosition.x + dimension.width / 2,
27
+ y: nodePosition.y + dimension.height / 2,
28
+ };
29
+ var center = {
30
+ x: width / 2 - offset.x * zoom,
31
+ y: height / 2 - offset.y * zoom,
32
+ };
33
+ panZoom.setViewport({
34
+ x: center.x,
35
+ y: center.y,
36
+ zoom: zoom,
37
+ });
38
+ }
39
+ export function checkNodeHasPosition(nodes) {
40
+ return nodes.every(function (node) { return !!node.position; });
41
+ }
42
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/utils/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,UAAU,eAAe,CAAwB,EActD;QAbC,KAAK,WAAA,EACL,UAAU,gBAAA,EACV,MAAM,YAAA,EACN,KAAK,WAAA,EACL,YAAQ,EAAR,IAAI,mBAAG,CAAC,KAAA,EACR,OAAO,aAAA;IASP,IAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;IACrD,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;QAC9B,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;KAChC,CAAC;IAEF,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;QAC9B,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;KAChC,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,IAAI,MAAA;KACL,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAwB,EAcpD;QAbC,IAAI,UAAA,EACJ,MAAM,YAAA,EACN,KAAK,WAAA,EACL,YAAQ,EAAR,IAAI,mBAAG,CAAC,KAAA,EACR,OAAO,aAAA,EACP,UAAU,gBAAA;IASV,IAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAM,YAAY,GAAG,yBAAyB,CAC5C,IAAI,EACJ,UAAU,CACX,CAAC,gBAAgB,CAAC;IAEnB,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC;QACvC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;KACzC,CAAC;IAEF,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;QAC9B,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;KAChC,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,IAAI,MAAA;KACL,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAwB,KAAiB;IAC3E,OAAO,KAAK,CAAC,KAAK,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAf,CAAe,CAAC,CAAC;AAChD,CAAC"}