@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,117 @@
1
+ import { useState, useEffect, useRef, useMemo } from 'react';
2
+ import { isInputDOMNode } from '../utils/dom';
3
+ var defaultDoc = typeof document !== 'undefined' ? document : null;
4
+ /**
5
+ * Hook for handling key events.
6
+ *
7
+ * @public
8
+ * @param param.keyCode - The key code (string or array of strings) to use
9
+ * @param param.options - Options
10
+ * @returns boolean
11
+ */
12
+ export function useKeyPress(
13
+ // the keycode can be a string 'a' or an array of strings ['a', 'a+d']
14
+ // a string means a single key 'a' or a combination when '+' is used 'a+d'
15
+ // an array means different possibilites. Explainer: ['a', 'd+s'] here the
16
+ // user can use the single key 'a' or the combination 'd' + 's'
17
+ keyCode, options) {
18
+ if (keyCode === void 0) { keyCode = null; }
19
+ if (options === void 0) { options = {
20
+ target: defaultDoc,
21
+ actInsideInputWithModifier: true,
22
+ }; }
23
+ var _a = __read(useState(false), 2), keyPressed = _a[0], setKeyPressed = _a[1];
24
+ // we need to remember if a modifier key is pressed in order to track it
25
+ var modifierPressed = useRef(false);
26
+ // we need to remember the pressed keys in order to support combinations
27
+ var pressedKeys = useRef(new Set([]));
28
+ // keyCodes = array with single keys [['a']] or key combinations [['a', 's']]
29
+ // keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']
30
+ // used to check if we store event.code or event.key. When the code is in the list of keysToWatch
31
+ // we use the code otherwise the key. Explainer: When you press the left "command" key, the code is "MetaLeft"
32
+ // and the key is "Meta". We want users to be able to pass keys and codes so we assume that the key is meant when
33
+ // we can't find it in the list of keysToWatch.
34
+ var _b = __read(useMemo(function () {
35
+ if (keyCode !== null) {
36
+ var keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];
37
+ var keys = keyCodeArr
38
+ .filter(function (kc) { return typeof kc === 'string'; })
39
+ .map(function (kc) { return kc.split('+'); });
40
+ var keysFlat = keys.reduce(function (res, item) { return res.concat.apply(res, __spreadArray([], __read(item), false)); }, []);
41
+ return [keys, keysFlat];
42
+ }
43
+ return [[], []];
44
+ }, [keyCode]), 2), keyCodes = _b[0], keysToWatch = _b[1];
45
+ useEffect(function () {
46
+ var target = (options === null || options === void 0 ? void 0 : options.target) || defaultDoc;
47
+ if (keyCode !== null) {
48
+ var downHandler_1 = function (event) {
49
+ modifierPressed.current =
50
+ event.ctrlKey || event.metaKey || event.shiftKey;
51
+ var preventAction = (!modifierPressed.current ||
52
+ (modifierPressed.current && !options.actInsideInputWithModifier)) &&
53
+ isInputDOMNode(event);
54
+ if (preventAction) {
55
+ return false;
56
+ }
57
+ var keyOrCode = useKeyOrCode(event.code, keysToWatch);
58
+ pressedKeys.current.add(event[keyOrCode]);
59
+ if (isMatchingKey(keyCodes, pressedKeys.current, false)) {
60
+ event.preventDefault();
61
+ setKeyPressed(true);
62
+ }
63
+ };
64
+ var upHandler_1 = function (event) {
65
+ var preventAction = (!modifierPressed.current ||
66
+ (modifierPressed.current && !options.actInsideInputWithModifier)) &&
67
+ isInputDOMNode(event);
68
+ if (preventAction) {
69
+ return false;
70
+ }
71
+ var keyOrCode = useKeyOrCode(event.code, keysToWatch);
72
+ if (isMatchingKey(keyCodes, pressedKeys.current, true)) {
73
+ setKeyPressed(false);
74
+ pressedKeys.current.clear();
75
+ }
76
+ else {
77
+ pressedKeys.current.delete(event[keyOrCode]);
78
+ }
79
+ // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key
80
+ if (event.key === 'Meta') {
81
+ pressedKeys.current.clear();
82
+ }
83
+ modifierPressed.current = false;
84
+ };
85
+ var resetHandler_1 = function () {
86
+ pressedKeys.current.clear();
87
+ setKeyPressed(false);
88
+ };
89
+ target === null || target === void 0 ? void 0 : target.addEventListener('keydown', downHandler_1);
90
+ target === null || target === void 0 ? void 0 : target.addEventListener('keyup', upHandler_1);
91
+ window.addEventListener('blur', resetHandler_1);
92
+ window.addEventListener('contextmenu', resetHandler_1);
93
+ return function () {
94
+ target === null || target === void 0 ? void 0 : target.removeEventListener('keydown', downHandler_1);
95
+ target === null || target === void 0 ? void 0 : target.removeEventListener('keyup', upHandler_1);
96
+ window.removeEventListener('blur', resetHandler_1);
97
+ window.removeEventListener('contextmenu', resetHandler_1);
98
+ };
99
+ }
100
+ }, [keyCode, setKeyPressed]);
101
+ return keyPressed;
102
+ }
103
+ // utils
104
+ function isMatchingKey(keyCodes, pressedKeys, isUp) {
105
+ return (keyCodes
106
+ // we only want to compare same sizes of keyCode definitions
107
+ // and pressed keys. When the user specified 'Meta' as a key somewhere
108
+ // this would also be truthy without this filter when user presses 'Meta' + 'r'
109
+ .filter(function (keys) { return isUp || keys.length === pressedKeys.size; })
110
+ // since we want to support multiple possibilities only one of the
111
+ // combinations need to be part of the pressed keys
112
+ .some(function (keys) { return keys.every(function (k) { return pressedKeys.has(k); }); }));
113
+ }
114
+ function useKeyOrCode(eventCode, keysToWatch) {
115
+ return keysToWatch.includes(eventCode) ? 'code' : 'key';
116
+ }
117
+ //# sourceMappingURL=useKeyPress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyPress.js","sourceRoot":"","sources":["../../src/hooks/useKeyPress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { useCallback } from 'react';
2
+ import { useStoreApi } from './useStore';
3
+ import { snapPosition } from '../utils/general';
4
+ import { calculateNodePosition } from '../utils/graph';
5
+ var selectedAndDraggable = function (nodesDraggable) { return function (n) {
6
+ return n.selected &&
7
+ (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));
8
+ }; };
9
+ /**
10
+ * Hook for updating node positions by passing a direction and factor
11
+ *
12
+ * @internal
13
+ * @returns function for updating node positions
14
+ */
15
+ export function useMoveSelectedNodes() {
16
+ var store = useStoreApi();
17
+ var moveSelectedNodes = useCallback(function (params) {
18
+ var e_1, _a;
19
+ var _b = store.getState(), nodeExtent = _b.nodeExtent, snapToGrid = _b.snapToGrid, snapGrid = _b.snapGrid, nodesDraggable = _b.nodesDraggable, onError = _b.onError, updateNodePositions = _b.updateNodePositions, nodeLookup = _b.nodeLookup, nodeOrigin = _b.nodeOrigin;
20
+ var nodeUpdates = new Map();
21
+ var isSelected = selectedAndDraggable(nodesDraggable);
22
+ // by default a node moves 5px on each key press
23
+ // if snap grid is enabled, we use that for the velocity
24
+ var xVelo = snapToGrid ? snapGrid[0] : 5;
25
+ var yVelo = snapToGrid ? snapGrid[1] : 5;
26
+ var xDiff = params.direction.x * xVelo * params.factor;
27
+ var yDiff = params.direction.y * yVelo * params.factor;
28
+ try {
29
+ for (var nodeLookup_1 = __values(nodeLookup), nodeLookup_1_1 = nodeLookup_1.next(); !nodeLookup_1_1.done; nodeLookup_1_1 = nodeLookup_1.next()) {
30
+ var _c = __read(nodeLookup_1_1.value, 2), node = _c[1];
31
+ if (!isSelected(node)) {
32
+ continue;
33
+ }
34
+ var nextPosition = {
35
+ x: node.internals.positionAbsolute.x + xDiff,
36
+ y: node.internals.positionAbsolute.y + yDiff,
37
+ };
38
+ if (snapToGrid) {
39
+ nextPosition = snapPosition(nextPosition, snapGrid);
40
+ }
41
+ var _d = calculateNodePosition({
42
+ nodeId: node.id,
43
+ nextPosition: nextPosition,
44
+ nodeLookup: nodeLookup,
45
+ nodeExtent: nodeExtent,
46
+ nodeOrigin: nodeOrigin,
47
+ onError: onError,
48
+ }), position = _d.position, positionAbsolute = _d.positionAbsolute;
49
+ node.position = position;
50
+ node.internals.positionAbsolute = positionAbsolute;
51
+ nodeUpdates.set(node.id, node);
52
+ }
53
+ }
54
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
55
+ finally {
56
+ try {
57
+ if (nodeLookup_1_1 && !nodeLookup_1_1.done && (_a = nodeLookup_1.return)) _a.call(nodeLookup_1);
58
+ }
59
+ finally { if (e_1) throw e_1.error; }
60
+ }
61
+ updateNodePositions(nodeUpdates);
62
+ }, []);
63
+ return moveSelectedNodes;
64
+ }
65
+ //# sourceMappingURL=useMoveSelectedNodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMoveSelectedNodes.js","sourceRoot":"","sources":["../../src/hooks/useMoveSelectedNodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,IAAM,oBAAoB,GAAG,UAAC,cAAuB,IAAK,OAAA,UAAC,CAAO;IAChE,OAAA,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC;AADvE,CACuE,EAFf,CAEe,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAE5B,IAAM,iBAAiB,GAAG,WAAW,CACnC,UAAC,MAAiD;;QAC1C,IAAA,KASF,KAAK,CAAC,QAAQ,EAAE,EARlB,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,cAAc,oBAAA,EACd,OAAO,aAAA,EACP,mBAAmB,yBAAA,EACnB,UAAU,gBAAA,EACV,UAAU,gBACQ,CAAC;QACrB,IAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAM,UAAU,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAExD,gDAAgD;QAChD,wDAAwD;QACxD,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,IAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QACzD,IAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;;YAEzD,KAAuB,IAAA,eAAA,SAAA,UAAU,CAAA,sCAAA,8DAAE,CAAC;gBAAzB,IAAA,KAAA,+BAAQ,EAAL,IAAI,QAAA;gBAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,IAAI,YAAY,GAAG;oBACjB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK;oBAC5C,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK;iBAC7C,CAAC;gBAEF,IAAI,UAAU,EAAE,CAAC;oBACf,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACtD,CAAC;gBAEK,IAAA,KAAiC,qBAAqB,CAAC;oBAC3D,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,YAAY,cAAA;oBACZ,UAAU,YAAA;oBACV,UAAU,YAAA;oBACV,UAAU,YAAA;oBACV,OAAO,SAAA;iBACR,CAAC,EAPM,QAAQ,cAAA,EAAE,gBAAgB,sBAOhC,CAAC;gBAEH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAEnD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;;;;;;;;;QAED,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hook for checking if a specific node is visible in the viewport.
3
+ *
4
+ * @public
5
+ * @param nodeId - The id of the node to check visibility for
6
+ * @returns boolean indicating if the node is visible in the viewport
7
+ *
8
+ */
9
+ export declare function useNodeInView(nodeId: string): boolean;
10
+ //# sourceMappingURL=useNodeInView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodeInView.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodeInView.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAsCrD"}
@@ -0,0 +1,41 @@
1
+ import { useCallback } from 'react';
2
+ import { useStore } from './useStore';
3
+ import { isNodeInViewport, pointToRendererPoint, } from '../utils/general';
4
+ /**
5
+ * Hook for checking if a specific node is visible in the viewport.
6
+ *
7
+ * @public
8
+ * @param nodeId - The id of the node to check visibility for
9
+ * @returns boolean indicating if the node is visible in the viewport
10
+ *
11
+ */
12
+ export function useNodeInView(nodeId) {
13
+ var isInView = useStore(useCallback(function (s) {
14
+ if (!s.width || !s.height) {
15
+ return false;
16
+ }
17
+ if (s.autoLayout && !s.layoutComplete) {
18
+ return false;
19
+ }
20
+ var node = s.nodeLookup.get(nodeId);
21
+ if (!node) {
22
+ return false;
23
+ }
24
+ // Calculate viewport rect in renderer coordinates
25
+ var _a = __read(s.transform, 3), tx = _a[0], ty = _a[1], tScale = _a[2];
26
+ var paneOrigin = pointToRendererPoint({ x: 0, y: 0 }, [
27
+ tx,
28
+ ty,
29
+ tScale,
30
+ ]);
31
+ var paneRect = {
32
+ x: paneOrigin.x,
33
+ y: paneOrigin.y,
34
+ width: s.width / tScale,
35
+ height: s.height / tScale,
36
+ };
37
+ return isNodeInViewport(node, paneRect);
38
+ }, [nodeId]));
39
+ return isInView;
40
+ }
41
+ //# sourceMappingURL=useNodeInView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodeInView.js","sourceRoot":"","sources":["../../src/hooks/useNodeInView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAM,QAAQ,GAAG,QAAQ,CACvB,WAAW,CACT,UAAC,CAAe;QACd,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kDAAkD;QAC5C,IAAA,KAAA,OAAmB,CAAC,CAAC,SAAS,IAAA,EAA7B,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,MAAM,QAAe,CAAC;QACrC,IAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACtD,EAAE;YACF,EAAE;YACF,MAAM;SACP,CAAC,CAAC;QACH,IAAM,QAAQ,GAAG;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM;SAC1B,CAAC;QAEF,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Node } from '../types';
2
+ /**
3
+ * Hook for getting nodes that are currently visible in the viewport.
4
+ * Unlike getNodesInside, this hook does NOT force initial render visibility,
5
+ * making it suitable for lazy loading scenarios.
6
+ *
7
+ * @public
8
+ * @returns array of visible nodes
9
+ *
10
+ */
11
+ export declare function useNodesInView<NodeType extends Node = Node>(): NodeType[];
12
+ //# sourceMappingURL=useNodesInView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodesInView.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesInView.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,UAAU,CAAC;AAGnD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,CAsCzE"}
@@ -0,0 +1,52 @@
1
+ import { useCallback } from 'react';
2
+ import { shallow } from 'zustand/shallow';
3
+ import { useStore } from './useStore';
4
+ import { isNodeInViewport, pointToRendererPoint } from '../utils/general';
5
+ /**
6
+ * Hook for getting nodes that are currently visible in the viewport.
7
+ * Unlike getNodesInside, this hook does NOT force initial render visibility,
8
+ * making it suitable for lazy loading scenarios.
9
+ *
10
+ * @public
11
+ * @returns array of visible nodes
12
+ *
13
+ */
14
+ export function useNodesInView() {
15
+ var visibleNodes = useStore(useCallback(function (s) {
16
+ var e_1, _a;
17
+ if (!s.width || !s.height) {
18
+ return [];
19
+ }
20
+ // 如果开启了自动布局,须等待布局完成
21
+ if (s.autoLayout && !s.layoutComplete) {
22
+ return [];
23
+ }
24
+ var _b = __read(s.transform, 3), tx = _b[0], ty = _b[1], tScale = _b[2];
25
+ var paneOrigin = pointToRendererPoint({ x: 0, y: 0 }, [tx, ty, tScale]);
26
+ var paneRect = {
27
+ x: paneOrigin.x,
28
+ y: paneOrigin.y,
29
+ width: s.width / tScale,
30
+ height: s.height / tScale,
31
+ };
32
+ var result = [];
33
+ try {
34
+ for (var _c = __values(s.nodeLookup.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
35
+ var node = _d.value;
36
+ if (isNodeInViewport(node, paneRect)) {
37
+ result.push(node.internals.userNode);
38
+ }
39
+ }
40
+ }
41
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
42
+ finally {
43
+ try {
44
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
45
+ }
46
+ finally { if (e_1) throw e_1.error; }
47
+ }
48
+ return result;
49
+ }, []), shallow);
50
+ return visibleNodes;
51
+ }
52
+ //# sourceMappingURL=useNodesInView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodesInView.js","sourceRoot":"","sources":["../../src/hooks/useNodesInView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAM,YAAY,GAAG,QAAQ,CAC3B,WAAW,CACT,UAAC,CAAe;;QACd,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAgB,CAAC;QAC1B,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;YACtC,OAAO,EAAgB,CAAC;QAC1B,CAAC;QAEK,IAAA,KAAA,OAAmB,CAAC,CAAC,SAAS,IAAA,EAA7B,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,MAAM,QAAe,CAAC;QACrC,IAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAM,QAAQ,GAAG;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM;SAC1B,CAAC;QAEF,IAAM,MAAM,GAAe,EAAE,CAAC;;YAE9B,KAAmB,IAAA,KAAA,SAAA,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA,gBAAA,4BAAE,CAAC;gBAAtC,IAAM,IAAI,WAAA;gBACb,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAoB,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;;;;;;;;;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAE,CACH,EACD,OAAO,CACR,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { useState } from 'react';
2
+ export function useNodesState(initialNodes) {
3
+ var _a = __read(useState(initialNodes), 2), nodes = _a[0], setNodes = _a[1];
4
+ return [nodes, setNodes];
5
+ }
6
+ //# sourceMappingURL=useNodesState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodesState.js","sourceRoot":"","sources":["../../src/hooks/useNodesState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsC,MAAM,OAAO,CAAC;AAGrE,MAAM,UAAU,aAAa,CAC3B,YAAwB;IAElB,IAAA,KAAA,OAAoB,QAAQ,CAAC,YAAY,CAAC,IAAA,EAAzC,KAAK,QAAA,EAAE,QAAQ,QAA0B,CAAC;IAEjD,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { useEffect } from 'react';
2
+ import { useStoreApi } from '../hooks/useStore';
3
+ import { getDimensions } from '../utils/dom';
4
+ import { errorMessages } from '@aloudata/ink-core';
5
+ /**
6
+ * Hook for handling resize events.
7
+ *
8
+ * @internal
9
+ */
10
+ export function useResizeHandler(domNode) {
11
+ var store = useStoreApi();
12
+ useEffect(function () {
13
+ var updateDimensions = function () {
14
+ var _a, _b;
15
+ if (!domNode.current) {
16
+ return false;
17
+ }
18
+ var size = getDimensions(domNode.current);
19
+ if (size.height === 0 || size.width === 0) {
20
+ (_b = (_a = store.getState()).onError) === null || _b === void 0 ? void 0 : _b.call(_a, '004', errorMessages['error004']());
21
+ }
22
+ store.setState({ width: size.width || 500, height: size.height || 500 });
23
+ };
24
+ if (domNode.current) {
25
+ updateDimensions();
26
+ window.addEventListener('resize', updateDimensions);
27
+ var resizeObserver_1 = new ResizeObserver(function () { return updateDimensions(); });
28
+ resizeObserver_1.observe(domNode.current);
29
+ return function () {
30
+ window.removeEventListener('resize', updateDimensions);
31
+ if (resizeObserver_1 && domNode.current) {
32
+ resizeObserver_1.unobserve(domNode.current);
33
+ }
34
+ };
35
+ }
36
+ }, []);
37
+ }
38
+ //# sourceMappingURL=useResizeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResizeHandler.js","sourceRoot":"","sources":["../../src/hooks/useResizeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgD;IAEhD,IAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAE5B,SAAS,CAAC;QACR,IAAM,gBAAgB,GAAG;;YACvB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,OAAQ,CAAC,CAAC;YAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAA,MAAA,KAAK,CAAC,QAAQ,EAAE,EAAC,OAAO,mDAAG,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC;QAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,gBAAgB,EAAE,CAAC;YACnB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAEpD,IAAM,gBAAc,GAAG,IAAI,cAAc,CAAC,cAAM,OAAA,gBAAgB,EAAE,EAAlB,CAAkB,CAAC,CAAC;YACpE,gBAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAExC,OAAO;gBACL,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAEvD,IAAI,gBAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACtC,gBAAc,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { useContext, useMemo } from 'react';
2
+ import { useStoreWithEqualityFn as useZustandStore, } from 'zustand/traditional';
3
+ import StoreContext from '../contexts/StoreContext';
4
+ import { errorMessages } from '@aloudata/ink-core';
5
+ var zustandErrorMessage = errorMessages['error001']();
6
+ /**
7
+ * Hook for accessing the internal store. Should only be used in rare cases.
8
+ *
9
+ * @public
10
+ * @param selector
11
+ * @param equalityFn
12
+ * @returns The selected state slice
13
+ *
14
+ * @example
15
+ * const nodes = useStore((state: InkFlowState<MyNodeType>) => state.nodes);
16
+ *
17
+ */
18
+ function useStore(selector, equalityFn) {
19
+ var store = useContext(StoreContext);
20
+ if (store === null) {
21
+ throw new Error(zustandErrorMessage);
22
+ }
23
+ return useZustandStore(store, selector, equalityFn);
24
+ }
25
+ function useStoreApi() {
26
+ var store = useContext(StoreContext);
27
+ if (store === null) {
28
+ throw new Error(zustandErrorMessage);
29
+ }
30
+ return useMemo(function () { return ({
31
+ getState: store.getState,
32
+ setState: store.setState,
33
+ subscribe: store.subscribe,
34
+ }); }, [store]);
35
+ }
36
+ export { useStore, useStoreApi };
37
+ //# sourceMappingURL=useStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStore.js","sourceRoot":"","sources":["../../src/hooks/useStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAEL,sBAAsB,IAAI,eAAe,GAC1C,MAAM,qBAAqB,CAAC;AAI7B,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,IAAM,mBAAmB,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,SAAS,QAAQ,CACf,QAA6C,EAC7C,UAAsD;IAEtD,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,WAAW;IAIlB,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAE7B,CAAC;IAET,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,OAAO,CACZ,cAAM,OAAA,CAAC;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,EAJI,CAIJ,EACF,CAAC,KAAK,CAAC,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,149 @@
1
+ import { useMemo } from 'react';
2
+ import { useStoreApi } from '../hooks/useStore';
3
+ import { getViewportForBounds, pointToRendererPoint, rendererPointToPoint, } from '../utils/general';
4
+ import { fitView } from '../utils/graph';
5
+ import { getDimensions, getFitViewNodes, } from '@aloudata/ink-core';
6
+ /**
7
+ * Hook for getting viewport helper functions.
8
+ *
9
+ * @internal
10
+ * @returns viewport helper functions
11
+ */
12
+ var useViewportHelper = function () {
13
+ var store = useStoreApi();
14
+ return useMemo(function () {
15
+ return {
16
+ zoomIn: function (options) {
17
+ var panZoom = store.getState().panZoom;
18
+ return panZoom
19
+ ? panZoom.scaleBy(1.2, { duration: options === null || options === void 0 ? void 0 : options.duration })
20
+ : Promise.resolve(false);
21
+ },
22
+ zoomOut: function (options) {
23
+ var panZoom = store.getState().panZoom;
24
+ return panZoom
25
+ ? panZoom.scaleBy(1 / 1.2, { duration: options === null || options === void 0 ? void 0 : options.duration })
26
+ : Promise.resolve(false);
27
+ },
28
+ zoomTo: function (zoomLevel, options) {
29
+ var panZoom = store.getState().panZoom;
30
+ return panZoom
31
+ ? panZoom.scaleTo(zoomLevel, { duration: options === null || options === void 0 ? void 0 : options.duration })
32
+ : Promise.resolve(false);
33
+ },
34
+ getZoom: function () { return store.getState().transform[2]; },
35
+ setViewport: function (viewport, options) { return __awaiter(void 0, void 0, void 0, function () {
36
+ var _a, _b, tX, tY, tZoom, panZoom;
37
+ var _c, _d, _e;
38
+ return __generator(this, function (_f) {
39
+ switch (_f.label) {
40
+ case 0:
41
+ _a = store.getState(), _b = __read(_a.transform, 3), tX = _b[0], tY = _b[1], tZoom = _b[2], panZoom = _a.panZoom;
42
+ if (!panZoom) {
43
+ return [2 /*return*/, Promise.resolve(false)];
44
+ }
45
+ return [4 /*yield*/, panZoom.setViewport({
46
+ x: (_c = viewport.x) !== null && _c !== void 0 ? _c : tX,
47
+ y: (_d = viewport.y) !== null && _d !== void 0 ? _d : tY,
48
+ zoom: (_e = viewport.zoom) !== null && _e !== void 0 ? _e : tZoom,
49
+ }, { duration: options === null || options === void 0 ? void 0 : options.duration })];
50
+ case 1:
51
+ _f.sent();
52
+ return [2 /*return*/, Promise.resolve(true)];
53
+ }
54
+ });
55
+ }); },
56
+ getViewport: function () {
57
+ var _a = __read(store.getState().transform, 3), x = _a[0], y = _a[1], zoom = _a[2];
58
+ return { x: x, y: y, zoom: zoom };
59
+ },
60
+ fitView: function (options) {
61
+ var _a = store.getState(), nodeLookup = _a.nodeLookup, minZoom = _a.minZoom, maxZoom = _a.maxZoom, panZoom = _a.panZoom, domNode = _a.domNode;
62
+ if (!panZoom || !domNode) {
63
+ return Promise.resolve(false);
64
+ }
65
+ var fitViewNodes = getFitViewNodes(nodeLookup, options);
66
+ var _b = getDimensions(domNode), width = _b.width, height = _b.height;
67
+ return fitView({
68
+ nodes: fitViewNodes,
69
+ width: width,
70
+ height: height,
71
+ minZoom: minZoom,
72
+ maxZoom: maxZoom,
73
+ panZoom: panZoom,
74
+ }, options);
75
+ },
76
+ setCenter: function (x, y, options) { return __awaiter(void 0, void 0, void 0, function () {
77
+ var _a, width, height, maxZoom, panZoom, nextZoom, centerX, centerY;
78
+ return __generator(this, function (_b) {
79
+ switch (_b.label) {
80
+ case 0:
81
+ _a = store.getState(), width = _a.width, height = _a.height, maxZoom = _a.maxZoom, panZoom = _a.panZoom;
82
+ nextZoom = typeof (options === null || options === void 0 ? void 0 : options.zoom) !== 'undefined' ? options.zoom : maxZoom;
83
+ centerX = width / 2 - x * nextZoom;
84
+ centerY = height / 2 - y * nextZoom;
85
+ if (!panZoom) {
86
+ return [2 /*return*/, Promise.resolve(false)];
87
+ }
88
+ return [4 /*yield*/, panZoom.setViewport({
89
+ x: centerX,
90
+ y: centerY,
91
+ zoom: nextZoom,
92
+ }, { duration: options === null || options === void 0 ? void 0 : options.duration })];
93
+ case 1:
94
+ _b.sent();
95
+ return [2 /*return*/, Promise.resolve(true)];
96
+ }
97
+ });
98
+ }); },
99
+ fitBounds: function (bounds, options) { return __awaiter(void 0, void 0, void 0, function () {
100
+ var _a, width, height, minZoom, maxZoom, panZoom, viewport;
101
+ var _b;
102
+ return __generator(this, function (_c) {
103
+ switch (_c.label) {
104
+ case 0:
105
+ _a = store.getState(), width = _a.width, height = _a.height, minZoom = _a.minZoom, maxZoom = _a.maxZoom, panZoom = _a.panZoom;
106
+ viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, (_b = options === null || options === void 0 ? void 0 : options.padding) !== null && _b !== void 0 ? _b : 0.1);
107
+ if (!panZoom) {
108
+ return [2 /*return*/, Promise.resolve(false)];
109
+ }
110
+ return [4 /*yield*/, panZoom.setViewport(viewport, { duration: options === null || options === void 0 ? void 0 : options.duration })];
111
+ case 1:
112
+ _c.sent();
113
+ return [2 /*return*/, Promise.resolve(true)];
114
+ }
115
+ });
116
+ }); },
117
+ screenToFlowPosition: function (clientPosition, options) {
118
+ var _a, _b;
119
+ if (options === void 0) { options = {}; }
120
+ var _c = store.getState(), transform = _c.transform, snapGrid = _c.snapGrid, snapToGrid = _c.snapToGrid, domNode = _c.domNode;
121
+ if (!domNode) {
122
+ return clientPosition;
123
+ }
124
+ var _d = domNode.getBoundingClientRect(), domX = _d.x, domY = _d.y;
125
+ var correctedPosition = {
126
+ x: clientPosition.x - domX,
127
+ y: clientPosition.y - domY,
128
+ };
129
+ var _snapGrid = (_a = options.snapGrid) !== null && _a !== void 0 ? _a : snapGrid;
130
+ var _snapToGrid = (_b = options.snapToGrid) !== null && _b !== void 0 ? _b : snapToGrid;
131
+ return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid);
132
+ },
133
+ flowToScreenPosition: function (flowPosition) {
134
+ var _a = store.getState(), transform = _a.transform, domNode = _a.domNode;
135
+ if (!domNode) {
136
+ return flowPosition;
137
+ }
138
+ var _b = domNode.getBoundingClientRect(), domX = _b.x, domY = _b.y;
139
+ var rendererPosition = rendererPointToPoint(flowPosition, transform);
140
+ return {
141
+ x: rendererPosition.x + domX,
142
+ y: rendererPosition.y + domY,
143
+ };
144
+ },
145
+ };
146
+ }, []);
147
+ };
148
+ export default useViewportHelper;
149
+ //# sourceMappingURL=useViewportHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewportHelper.js","sourceRoot":"","sources":["../../src/hooks/useViewportHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { useCallback } from 'react';
2
+ import { shallow } from 'zustand/shallow';
3
+ import { useStore } from './useStore';
4
+ import { isEdgeVisible } from '../utils/edges';
5
+ /**
6
+ * Hook for getting the visible edge ids from the store.
7
+ *
8
+ * @internal
9
+ * @param onlyRenderVisible
10
+ * @returns array with visible edge ids
11
+ */
12
+ export function useVisibleEdgeIds(onlyRenderVisible) {
13
+ var edgeIds = useStore(useCallback(function (s) {
14
+ var e_1, _a;
15
+ if (!onlyRenderVisible) {
16
+ return s.edges.map(function (edge) { return edge.id; });
17
+ }
18
+ var visibleEdgeIds = [];
19
+ if (s.width && s.height) {
20
+ try {
21
+ for (var _b = __values(s.edges), _c = _b.next(); !_c.done; _c = _b.next()) {
22
+ var edge = _c.value;
23
+ var sourceNode = s.nodeLookup.get(edge.source);
24
+ var targetNode = s.nodeLookup.get(edge.target);
25
+ if (sourceNode &&
26
+ targetNode &&
27
+ isEdgeVisible({
28
+ sourceNode: sourceNode,
29
+ targetNode: targetNode,
30
+ width: s.width,
31
+ height: s.height,
32
+ transform: s.transform,
33
+ })) {
34
+ visibleEdgeIds.push(edge.id);
35
+ }
36
+ }
37
+ }
38
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
39
+ finally {
40
+ try {
41
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
42
+ }
43
+ finally { if (e_1) throw e_1.error; }
44
+ }
45
+ }
46
+ return visibleEdgeIds;
47
+ }, [onlyRenderVisible]), shallow);
48
+ return edgeIds;
49
+ }
50
+ //# sourceMappingURL=useVisibleEdgeIds.js.map