@aloudata/ink-flow 1.0.6 → 1.0.7

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 (242) hide show
  1. package/package.json +2 -3
  2. package/dist/base.css +0 -6
  3. package/dist/components/A11yDescriptions/index.d.ts +0 -8
  4. package/dist/components/A11yDescriptions/index.d.ts.map +0 -1
  5. package/dist/components/BatchProvider/index.d.ts +0 -17
  6. package/dist/components/BatchProvider/index.d.ts.map +0 -1
  7. package/dist/components/BatchProvider/types.d.ts +0 -7
  8. package/dist/components/BatchProvider/types.d.ts.map +0 -1
  9. package/dist/components/BatchProvider/useQueue.d.ts +0 -11
  10. package/dist/components/BatchProvider/useQueue.d.ts.map +0 -1
  11. package/dist/components/EdgeWrapper/EdgeUpdateAnchors.d.ts +0 -17
  12. package/dist/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map +0 -1
  13. package/dist/components/EdgeWrapper/index.d.ts +0 -3
  14. package/dist/components/EdgeWrapper/index.d.ts.map +0 -1
  15. package/dist/components/EdgeWrapper/utils.d.ts +0 -11
  16. package/dist/components/EdgeWrapper/utils.d.ts.map +0 -1
  17. package/dist/components/Edges/BaseEdge.d.ts +0 -3
  18. package/dist/components/Edges/BaseEdge.d.ts.map +0 -1
  19. package/dist/components/Edges/BezierEdge.d.ts +0 -5
  20. package/dist/components/Edges/BezierEdge.d.ts.map +0 -1
  21. package/dist/components/Edges/EdgeAnchor.d.ts +0 -14
  22. package/dist/components/Edges/EdgeAnchor.d.ts.map +0 -1
  23. package/dist/components/Edges/EdgeText.d.ts +0 -8
  24. package/dist/components/Edges/EdgeText.d.ts.map +0 -1
  25. package/dist/components/Edges/SimpleBezierEdge.d.ts +0 -21
  26. package/dist/components/Edges/SimpleBezierEdge.d.ts.map +0 -1
  27. package/dist/components/Edges/SmoothStepEdge.d.ts +0 -5
  28. package/dist/components/Edges/SmoothStepEdge.d.ts.map +0 -1
  29. package/dist/components/Edges/StepEdge.d.ts +0 -5
  30. package/dist/components/Edges/StepEdge.d.ts.map +0 -1
  31. package/dist/components/Edges/StraightEdge.d.ts +0 -5
  32. package/dist/components/Edges/StraightEdge.d.ts.map +0 -1
  33. package/dist/components/Edges/index.d.ts +0 -6
  34. package/dist/components/Edges/index.d.ts.map +0 -1
  35. package/dist/components/Handle/index.d.ts +0 -9
  36. package/dist/components/Handle/index.d.ts.map +0 -1
  37. package/dist/components/InkFlowProvider/index.d.ts +0 -14
  38. package/dist/components/InkFlowProvider/index.d.ts.map +0 -1
  39. package/dist/components/NodeWrapper/index.d.ts +0 -3
  40. package/dist/components/NodeWrapper/index.d.ts.map +0 -1
  41. package/dist/components/NodeWrapper/useNodeObserver.d.ts +0 -14
  42. package/dist/components/NodeWrapper/useNodeObserver.d.ts.map +0 -1
  43. package/dist/components/NodeWrapper/utils.d.ts +0 -9
  44. package/dist/components/NodeWrapper/utils.d.ts.map +0 -1
  45. package/dist/components/Nodes/DefaultNode.d.ts +0 -3
  46. package/dist/components/Nodes/DefaultNode.d.ts.map +0 -1
  47. package/dist/components/Nodes/GroupNode.d.ts +0 -2
  48. package/dist/components/Nodes/GroupNode.d.ts.map +0 -1
  49. package/dist/components/Nodes/InputNode.d.ts +0 -4
  50. package/dist/components/Nodes/InputNode.d.ts.map +0 -1
  51. package/dist/components/Nodes/OutputNode.d.ts +0 -3
  52. package/dist/components/Nodes/OutputNode.d.ts.map +0 -1
  53. package/dist/components/Nodes/utils.d.ts +0 -13
  54. package/dist/components/Nodes/utils.d.ts.map +0 -1
  55. package/dist/components/Panel/index.d.ts +0 -11
  56. package/dist/components/Panel/index.d.ts.map +0 -1
  57. package/dist/components/StoreUpdater/index.d.ts +0 -9
  58. package/dist/components/StoreUpdater/index.d.ts.map +0 -1
  59. package/dist/components/UserSelection/index.d.ts +0 -2
  60. package/dist/components/UserSelection/index.d.ts.map +0 -1
  61. package/dist/constants/errorMessages.d.ts +0 -22
  62. package/dist/constants/errorMessages.d.ts.map +0 -1
  63. package/dist/constants/index.d.ts +0 -2
  64. package/dist/constants/index.d.ts.map +0 -1
  65. package/dist/container/EdgeRenderer/MarkerDefinitions.d.ts +0 -10
  66. package/dist/container/EdgeRenderer/MarkerDefinitions.d.ts.map +0 -1
  67. package/dist/container/EdgeRenderer/MarkerSymbols.d.ts +0 -9
  68. package/dist/container/EdgeRenderer/MarkerSymbols.d.ts.map +0 -1
  69. package/dist/container/EdgeRenderer/index.d.ts +0 -13
  70. package/dist/container/EdgeRenderer/index.d.ts.map +0 -1
  71. package/dist/container/FlowRenderer/index.d.ts +0 -14
  72. package/dist/container/FlowRenderer/index.d.ts.map +0 -1
  73. package/dist/container/GraphView/index.d.ts +0 -11
  74. package/dist/container/GraphView/index.d.ts.map +0 -1
  75. package/dist/container/InkFlow/Wrapper.d.ts +0 -13
  76. package/dist/container/InkFlow/Wrapper.d.ts.map +0 -1
  77. package/dist/container/InkFlow/index.d.ts +0 -4
  78. package/dist/container/InkFlow/index.d.ts.map +0 -1
  79. package/dist/container/InkFlow/init-values.d.ts +0 -4
  80. package/dist/container/InkFlow/init-values.d.ts.map +0 -1
  81. package/dist/container/NodeRenderer/index.d.ts +0 -10
  82. package/dist/container/NodeRenderer/index.d.ts.map +0 -1
  83. package/dist/container/NodeRenderer/useResizeObserver.d.ts +0 -2
  84. package/dist/container/NodeRenderer/useResizeObserver.d.ts.map +0 -1
  85. package/dist/container/Pane/index.d.ts +0 -12
  86. package/dist/container/Pane/index.d.ts.map +0 -1
  87. package/dist/container/Viewport/index.d.ts +0 -7
  88. package/dist/container/Viewport/index.d.ts.map +0 -1
  89. package/dist/container/ZoomPane/index.d.ts +0 -7
  90. package/dist/container/ZoomPane/index.d.ts.map +0 -1
  91. package/dist/contexts/NodeIdContext.d.ts +0 -6
  92. package/dist/contexts/NodeIdContext.d.ts.map +0 -1
  93. package/dist/contexts/StoreContext.d.ts +0 -4
  94. package/dist/contexts/StoreContext.d.ts.map +0 -1
  95. package/dist/hooks/index.d.ts +0 -5
  96. package/dist/hooks/index.d.ts.map +0 -1
  97. package/dist/hooks/useDrag.d.ts +0 -12
  98. package/dist/hooks/useDrag.d.ts.map +0 -1
  99. package/dist/hooks/useEdgesState.d.ts +0 -4
  100. package/dist/hooks/useEdgesState.d.ts.map +0 -1
  101. package/dist/hooks/useGlobalKeyHandler.d.ts +0 -11
  102. package/dist/hooks/useGlobalKeyHandler.d.ts.map +0 -1
  103. package/dist/hooks/useInkFlow.d.ts +0 -10
  104. package/dist/hooks/useInkFlow.d.ts.map +0 -1
  105. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +0 -3
  106. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +0 -1
  107. package/dist/hooks/useKeyPress.d.ts +0 -15
  108. package/dist/hooks/useKeyPress.d.ts.map +0 -1
  109. package/dist/hooks/useMoveSelectedNodes.d.ts +0 -12
  110. package/dist/hooks/useMoveSelectedNodes.d.ts.map +0 -1
  111. package/dist/hooks/useNodesState.d.ts +0 -4
  112. package/dist/hooks/useNodesState.d.ts.map +0 -1
  113. package/dist/hooks/useResizeHandler.d.ts +0 -8
  114. package/dist/hooks/useResizeHandler.d.ts.map +0 -1
  115. package/dist/hooks/useStore.d.ts +0 -21
  116. package/dist/hooks/useStore.d.ts.map +0 -1
  117. package/dist/hooks/useViewportHelper.d.ts +0 -10
  118. package/dist/hooks/useViewportHelper.d.ts.map +0 -1
  119. package/dist/hooks/useVisibleEdgeIds.d.ts +0 -9
  120. package/dist/hooks/useVisibleEdgeIds.d.ts.map +0 -1
  121. package/dist/hooks/useVisibleNodeIds.d.ts +0 -9
  122. package/dist/hooks/useVisibleNodeIds.d.ts.map +0 -1
  123. package/dist/index.cjs.js +0 -17
  124. package/dist/index.cjs.js.map +0 -1
  125. package/dist/index.d.ts +0 -9
  126. package/dist/index.d.ts.map +0 -1
  127. package/dist/index.esm.js +0 -17
  128. package/dist/index.esm.js.map +0 -1
  129. package/dist/plugins/Controls/ControlButton.d.ts +0 -3
  130. package/dist/plugins/Controls/ControlButton.d.ts.map +0 -1
  131. package/dist/plugins/Controls/Controls.d.ts +0 -8
  132. package/dist/plugins/Controls/Controls.d.ts.map +0 -1
  133. package/dist/plugins/Controls/Icons/FitView.d.ts +0 -2
  134. package/dist/plugins/Controls/Icons/FitView.d.ts.map +0 -1
  135. package/dist/plugins/Controls/Icons/Lock.d.ts +0 -2
  136. package/dist/plugins/Controls/Icons/Lock.d.ts.map +0 -1
  137. package/dist/plugins/Controls/Icons/Minus.d.ts +0 -2
  138. package/dist/plugins/Controls/Icons/Minus.d.ts.map +0 -1
  139. package/dist/plugins/Controls/Icons/Plus.d.ts +0 -2
  140. package/dist/plugins/Controls/Icons/Plus.d.ts.map +0 -1
  141. package/dist/plugins/Controls/Icons/Unlock.d.ts +0 -2
  142. package/dist/plugins/Controls/Icons/Unlock.d.ts.map +0 -1
  143. package/dist/plugins/Controls/index.d.ts +0 -4
  144. package/dist/plugins/Controls/index.d.ts.map +0 -1
  145. package/dist/plugins/Controls/types.d.ts +0 -35
  146. package/dist/plugins/Controls/types.d.ts.map +0 -1
  147. package/dist/plugins/index.d.ts +0 -2
  148. package/dist/plugins/index.d.ts.map +0 -1
  149. package/dist/store/index.d.ts +0 -12
  150. package/dist/store/index.d.ts.map +0 -1
  151. package/dist/store/initialState.d.ts +0 -12
  152. package/dist/store/initialState.d.ts.map +0 -1
  153. package/dist/styles/utils.d.ts +0 -3
  154. package/dist/styles/utils.d.ts.map +0 -1
  155. package/dist/types/edges.d.ts +0 -114
  156. package/dist/types/edges.d.ts.map +0 -1
  157. package/dist/types/general.d.ts +0 -123
  158. package/dist/types/general.d.ts.map +0 -1
  159. package/dist/types/index.d.ts +0 -7
  160. package/dist/types/index.d.ts.map +0 -1
  161. package/dist/types/instance.d.ts +0 -149
  162. package/dist/types/instance.d.ts.map +0 -1
  163. package/dist/types/nodes.d.ts +0 -40
  164. package/dist/types/nodes.d.ts.map +0 -1
  165. package/dist/types/props.d.ts +0 -151
  166. package/dist/types/props.d.ts.map +0 -1
  167. package/dist/types/store.d.ts +0 -105
  168. package/dist/types/store.d.ts.map +0 -1
  169. package/dist/types/system/changes.d.ts +0 -51
  170. package/dist/types/system/changes.d.ts.map +0 -1
  171. package/dist/types/system/edges.d.ts +0 -83
  172. package/dist/types/system/edges.d.ts.map +0 -1
  173. package/dist/types/system/general.d.ts +0 -119
  174. package/dist/types/system/general.d.ts.map +0 -1
  175. package/dist/types/system/handles.d.ts +0 -51
  176. package/dist/types/system/handles.d.ts.map +0 -1
  177. package/dist/types/system/index.d.ts +0 -8
  178. package/dist/types/system/index.d.ts.map +0 -1
  179. package/dist/types/system/nodes.d.ts +0 -126
  180. package/dist/types/system/nodes.d.ts.map +0 -1
  181. package/dist/types/system/panzoom.d.ts +0 -49
  182. package/dist/types/system/panzoom.d.ts.map +0 -1
  183. package/dist/types/system/utils.d.ts +0 -25
  184. package/dist/types/system/utils.d.ts.map +0 -1
  185. package/dist/types/utils/types.d.ts +0 -8
  186. package/dist/types/utils/types.d.ts.map +0 -1
  187. package/dist/utils/bezier-edge.d.ts +0 -59
  188. package/dist/utils/bezier-edge.d.ts.map +0 -1
  189. package/dist/utils/changes.d.ts +0 -16
  190. package/dist/utils/changes.d.ts.map +0 -1
  191. package/dist/utils/dom.d.ts +0 -20
  192. package/dist/utils/dom.d.ts.map +0 -1
  193. package/dist/utils/edges/bezier-edge.d.ts +0 -59
  194. package/dist/utils/edges/bezier-edge.d.ts.map +0 -1
  195. package/dist/utils/edges/general.d.ts +0 -46
  196. package/dist/utils/edges/general.d.ts.map +0 -1
  197. package/dist/utils/edges/index.d.ts +0 -6
  198. package/dist/utils/edges/index.d.ts.map +0 -1
  199. package/dist/utils/edges/positions.d.ts +0 -12
  200. package/dist/utils/edges/positions.d.ts.map +0 -1
  201. package/dist/utils/edges/smoothstep-edge.d.ts +0 -43
  202. package/dist/utils/edges/smoothstep-edge.d.ts.map +0 -1
  203. package/dist/utils/edges/straight-edge.d.ts +0 -28
  204. package/dist/utils/edges/straight-edge.d.ts.map +0 -1
  205. package/dist/utils/edges.d.ts +0 -26
  206. package/dist/utils/edges.d.ts.map +0 -1
  207. package/dist/utils/general.d.ts +0 -61
  208. package/dist/utils/general.d.ts.map +0 -1
  209. package/dist/utils/graph.d.ts +0 -113
  210. package/dist/utils/graph.d.ts.map +0 -1
  211. package/dist/utils/marker.d.ts +0 -9
  212. package/dist/utils/marker.d.ts.map +0 -1
  213. package/dist/utils/positions.d.ts +0 -12
  214. package/dist/utils/positions.d.ts.map +0 -1
  215. package/dist/utils/smoothstep-edge.d.ts +0 -43
  216. package/dist/utils/smoothstep-edge.d.ts.map +0 -1
  217. package/dist/utils/store.d.ts +0 -30
  218. package/dist/utils/store.d.ts.map +0 -1
  219. package/dist/utils/straight-edge.d.ts +0 -34
  220. package/dist/utils/straight-edge.d.ts.map +0 -1
  221. package/dist/utils/xydrag/XYDrag.d.ts +0 -52
  222. package/dist/utils/xydrag/XYDrag.d.ts.map +0 -1
  223. package/dist/utils/xydrag/index.d.ts +0 -2
  224. package/dist/utils/xydrag/index.d.ts.map +0 -1
  225. package/dist/utils/xydrag/utils.d.ts +0 -10
  226. package/dist/utils/xydrag/utils.d.ts.map +0 -1
  227. package/dist/utils/xyhandle/XYHandle.d.ts +0 -49
  228. package/dist/utils/xyhandle/XYHandle.d.ts.map +0 -1
  229. package/dist/utils/xyhandle/index.d.ts +0 -2
  230. package/dist/utils/xyhandle/index.d.ts.map +0 -1
  231. package/dist/utils/xyhandle/utils.d.ts +0 -14
  232. package/dist/utils/xyhandle/utils.d.ts.map +0 -1
  233. package/dist/utils/xypanzoom/XYPanZoom.d.ts +0 -12
  234. package/dist/utils/xypanzoom/XYPanZoom.d.ts.map +0 -1
  235. package/dist/utils/xypanzoom/eventhandler.d.ts +0 -46
  236. package/dist/utils/xypanzoom/eventhandler.d.ts.map +0 -1
  237. package/dist/utils/xypanzoom/filter.d.ts +0 -14
  238. package/dist/utils/xypanzoom/filter.d.ts.map +0 -1
  239. package/dist/utils/xypanzoom/index.d.ts +0 -2
  240. package/dist/utils/xypanzoom/index.d.ts.map +0 -1
  241. package/dist/utils/xypanzoom/utils.d.ts +0 -10
  242. package/dist/utils/xypanzoom/utils.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/classnames/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.3.1/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/vanilla.mjs","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/traditional.mjs","../src/contexts/StoreContext.ts","../src/constants/errorMessages.ts","../src/hooks/useStore.ts","../src/utils/store.ts","../src/utils/general.ts","../src/utils/dom.ts","../src/hooks/useKeyPress.ts","../../../node_modules/.pnpm/zustand@4.5.2_@types+react@18.3.1_react@18.3.1/node_modules/zustand/esm/shallow.mjs","../src/styles/utils.ts","../src/types/system/general.ts","../src/types/system/edges.ts","../src/types/system/utils.ts","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/utils/xypanzoom/utils.ts","../src/utils/xypanzoom/XYPanZoom.ts","../src/utils/xypanzoom/eventhandler.ts","../src/utils/xypanzoom/filter.ts","../src/container/ZoomPane/index.tsx","../src/hooks/useResizeHandler.ts","../src/hooks/useGlobalKeyHandler.ts","../src/utils/changes.ts","../src/utils/graph.ts","../src/components/UserSelection/index.tsx","../src/container/Pane/index.tsx","../src/container/FlowRenderer/index.tsx","../src/hooks/useEdgesState.ts","../src/hooks/useNodesState.ts","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/BatchProvider/useQueue.ts","../src/components/BatchProvider/index.tsx","../src/hooks/useViewportHelper.ts","../src/hooks/useInkFlow.ts","../src/container/NodeRenderer/useResizeObserver.ts","../src/hooks/useVisibleNodeIds.ts","../src/contexts/NodeIdContext.ts","../src/components/A11yDescriptions/index.tsx","../src/utils/edges/bezier-edge.ts","../src/utils/edges/general.ts","../src/utils/edges/smoothstep-edge.ts","../src/utils/xyhandle/utils.ts","../src/utils/xyhandle/XYHandle.ts","../src/components/Handle/index.tsx","../src/components/NodeWrapper/utils.tsx","../src/components/Nodes/InputNode.tsx","../src/components/Nodes/DefaultNode.tsx","../src/components/Nodes/OutputNode.tsx","../src/components/Nodes/GroupNode.tsx","../src/components/Nodes/utils.ts","../src/utils/xydrag/utils.ts","../src/utils/xydrag/XYDrag.ts","../src/hooks/useMoveSelectedNodes.ts","../src/components/NodeWrapper/index.tsx","../src/components/NodeWrapper/useNodeObserver.ts","../src/hooks/useDrag.ts","../src/container/NodeRenderer/index.tsx","../src/container/EdgeRenderer/MarkerSymbols.tsx","../src/utils/marker.ts","../src/container/EdgeRenderer/MarkerDefinitions.tsx","../src/components/Edges/EdgeText.tsx","../src/components/Edges/BaseEdge.tsx","../src/components/Edges/SimpleBezierEdge.tsx","../src/components/Edges/SmoothStepEdge.tsx","../src/components/Edges/StepEdge.tsx","../src/components/Edges/StraightEdge.tsx","../src/utils/edges/straight-edge.ts","../src/components/Edges/BezierEdge.tsx","../src/components/EdgeWrapper/utils.ts","../src/components/Edges/EdgeAnchor.tsx","../src/components/EdgeWrapper/EdgeUpdateAnchors.tsx","../src/utils/positions.ts","../src/components/EdgeWrapper/index.tsx","../src/container/EdgeRenderer/index.tsx","../src/hooks/useVisibleEdgeIds.ts","../src/container/Viewport/index.tsx","../src/container/GraphView/index.tsx","../src/store/initialState.ts","../src/store/index.ts","../src/components/InkFlowProvider/index.tsx","../src/container/InkFlow/Wrapper.tsx","../src/container/InkFlow/init-values.ts","../src/components/StoreUpdater/index.tsx","../src/container/InkFlow/index.tsx","../src/plugins/Controls/Icons/Plus.tsx","../src/plugins/Controls/Icons/Minus.tsx","../src/plugins/Controls/Icons/FitView.tsx","../src/plugins/Controls/Icons/Lock.tsx","../src/plugins/Controls/Icons/Unlock.tsx","../src/plugins/Controls/ControlButton.tsx","../src/components/Panel/index.tsx","../src/plugins/Controls/Controls.tsx","../src/types/index.ts","../../ink-core/dist/index.esm.js"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","import { createContext } from 'react';\n\nimport { createStore } from '../store';\n\nconst StoreContext = createContext<ReturnType<typeof createStore> | null>(null);\n\nexport const Provider = StoreContext.Provider;\nexport default StoreContext;\n","import { CoordinateExtent, HandleType } from '../types/system';\n\nexport const errorMessages = {\n error001: () =>\n '[Ink Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://InkFlow.dev/error#001',\n error002: () =>\n \"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.\",\n error003: (nodeType: string) =>\n `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n error004: () =>\n 'The Ink Flow parent container needs a width and a height to render the graph.',\n error005: () => 'Only child nodes can use a parent extent.',\n error006: () => \"Can't create edge. An edge needs a source and a target.\",\n error007: (id: string) => `The old edge with id=${id} does not exist.`,\n error009: (type: string) => `Marker type \"${type}\" doesn't exist.`,\n error008: (\n handleType: HandleType,\n {\n id,\n sourceHandle,\n targetHandle,\n }: { id: string; sourceHandle: string | null; targetHandle: string | null },\n ) =>\n `Couldn't create edge for ${handleType} handle id: \"${\n !sourceHandle ? sourceHandle : targetHandle\n }\", edge id: ${id}.`,\n error010: () =>\n 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n error011: (edgeType: string) =>\n `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n error012: (id: string) =>\n `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n};\n\nexport const infiniteExtent: CoordinateExtent = [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\n\nexport const elementSelectionKeys = ['Enter', ' ', 'Escape'];\n","import { useContext, useMemo } from 'react';\nimport {\n UseBoundStoreWithEqualityFn,\n useStoreWithEqualityFn as useZustandStore,\n} from 'zustand/traditional';\nimport { StoreApi } from 'zustand';\nimport type { Edge, Node, InkFlowState } from '../types';\n\nimport StoreContext from '../contexts/StoreContext';\n\nimport { errorMessages } from '../constants/errorMessages';\n\nconst zustandErrorMessage = errorMessages['error001']();\n\n/**\n * Hook for accessing the internal store. Should only be used in rare cases.\n *\n * @public\n * @param selector\n * @param equalityFn\n * @returns The selected state slice\n *\n * @example\n * const nodes = useStore((state: InkFlowState<MyNodeType>) => state.nodes);\n *\n */\nfunction useStore<StateSlice = unknown>(\n selector: (state: InkFlowState) => StateSlice,\n equalityFn?: (a: StateSlice, b: StateSlice) => boolean,\n) {\n const store = useContext(StoreContext);\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useZustandStore(store, selector, equalityFn);\n}\n\nfunction useStoreApi<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>() {\n const store = useContext(StoreContext) as UseBoundStoreWithEqualityFn<\n StoreApi<InkFlowState<NodeType, EdgeType>>\n > | null;\n\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n\n return useMemo(\n () => ({\n getState: store.getState,\n setState: store.setState,\n subscribe: store.subscribe,\n }),\n [store],\n );\n}\n\nexport { useStore, useStoreApi };\n","import {\n ConnectionLookup,\n CoordinateExtent,\n EdgeBase,\n EdgeLookup,\n InternalNodeBase,\n InternalNodeUpdate,\n NodeBase,\n NodeDimensionChange,\n NodeLookup,\n NodeOrigin,\n NodePositionChange,\n PanZoomInstance,\n ParentLookup,\n Rect,\n Transform,\n XYPosition,\n XYZPosition,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { getDimensions, getHandleBounds } from './dom';\nimport {\n getBoundsOfRects,\n getNodeDimensions,\n isNumeric,\n nodeToRect,\n} from './general';\n\ntype UpdateNodesOptions<NodeType extends NodeBase> = {\n nodeOrigin?: NodeOrigin;\n elevateNodesOnSelect?: boolean;\n defaults?: Partial<NodeType>;\n checkEquality?: boolean;\n};\n\nexport function updateAbsolutePositions<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n },\n) {\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n for (const [, node] of nodeLookup) {\n const parentId = node.parentId;\n\n if (!parentId) {\n continue;\n }\n\n if (!nodeLookup.has(parentId)) {\n throw new Error(`Parent node ${parentId} not found`);\n }\n\n const parentNode = nodeLookup.get(parentId);\n const { x, y, z } = calculateXYZPosition(\n node,\n nodeLookup,\n {\n ...node.position,\n z:\n (isNumeric(node.zIndex) ? node.zIndex : 0) +\n (node.selected ? selectedNodeZ : 0),\n },\n parentNode?.origin ?? options.nodeOrigin,\n );\n\n const currPosition = node.internals.positionAbsolute;\n const positionChanged = x !== currPosition.x || y !== currPosition.y;\n\n if (positionChanged || z !== node.internals.z) {\n node.internals = {\n ...node.internals,\n positionAbsolute: positionChanged ? { x, y } : currPosition,\n z,\n };\n }\n }\n}\n\nexport function updateNodeInternals<NodeType extends InternalNodeBase>(\n updates: Map<string, InternalNodeUpdate>,\n nodeLookup: NodeLookup<NodeType>,\n parentLookup: ParentLookup<NodeType>,\n domNode: HTMLElement | null,\n nodeOrigin?: NodeOrigin,\n): {\n changes: (NodeDimensionChange | NodePositionChange)[];\n updatedInternals: boolean;\n} {\n const viewportNode = domNode?.querySelector('.xyflow__viewport');\n let updatedInternals = false;\n\n if (!viewportNode) {\n return { changes: [], updatedInternals };\n }\n\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n // in this array we collect nodes, that might trigger changes (like expanding parent)\n const parentExpandChildren: ParentExpandChild[] = [];\n\n updates.forEach((update) => {\n const node = nodeLookup.get(update.id);\n\n if (node?.hidden) {\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n handleBounds: undefined,\n },\n });\n updatedInternals = true;\n } else if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const dimensionChanged =\n node.measured.width !== dimensions.width ||\n node.measured.height !== dimensions.height;\n const doUpdate = !!(\n dimensions.width &&\n dimensions.height &&\n (dimensionChanged || !node.internals.handleBounds || update.force)\n );\n\n if (doUpdate) {\n const newNode = {\n ...node,\n measured: dimensions,\n internals: {\n ...node.internals,\n handleBounds: {\n source: getHandleBounds(\n '.source',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n target: getHandleBounds(\n '.target',\n update.nodeElement,\n zoom,\n node.origin || nodeOrigin,\n ),\n },\n },\n };\n\n nodeLookup.set(node.id, newNode);\n updatedInternals = true;\n\n if (dimensionChanged) {\n changes.push({\n id: newNode.id,\n type: 'dimensions',\n dimensions,\n });\n\n if (newNode.expandParent && newNode.parentId) {\n parentExpandChildren.push({\n id: newNode.id,\n parentId: newNode.parentId,\n rect: nodeToRect(newNode, newNode.origin || nodeOrigin),\n });\n }\n }\n }\n }\n });\n\n if (parentExpandChildren.length > 0) {\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n nodeOrigin,\n );\n changes.push(...parentExpandChanges);\n }\n\n return { changes, updatedInternals };\n}\n\nfunction calculateXYZPosition<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n result: XYZPosition,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYZPosition {\n if (!node.parentId) {\n return result;\n }\n\n const parent = nodeLookup.get(node.parentId)!;\n const parentPosition = getNodePositionWithOrigin(parent, nodeOrigin).position;\n\n return calculateXYZPosition(\n parent,\n nodeLookup,\n {\n x: (result.x ?? 0) + parentPosition.x,\n y: (result.y ?? 0) + parentPosition.y,\n z:\n (parent.internals.z ?? 0) > (result.z ?? 0)\n ? parent.internals.z ?? 0\n : result.z ?? 0,\n },\n parent.origin || nodeOrigin,\n );\n}\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport function updateConnectionLookup(\n connectionLookup: ConnectionLookup,\n edgeLookup: EdgeLookup,\n edges: EdgeBase[],\n) {\n connectionLookup.clear();\n edgeLookup.clear();\n\n for (const edge of edges) {\n const { source, target, sourceHandle = null, targetHandle = null } = edge;\n\n const sourceKey = `${source}-source-${sourceHandle}`;\n const targetKey = `${target}-target-${targetHandle}`;\n\n const prevSource = connectionLookup.get(sourceKey) || new Map();\n const prevTarget = connectionLookup.get(targetKey) || new Map();\n const connection = {\n edgeId: edge.id,\n source,\n target,\n sourceHandle,\n targetHandle,\n };\n\n edgeLookup.set(edge.id, edge);\n connectionLookup.set(\n sourceKey,\n prevSource.set(`${target}-${targetHandle}`, connection),\n );\n connectionLookup.set(\n targetKey,\n prevTarget.set(`${source}-${sourceHandle}`, connection),\n );\n }\n}\n\nexport function adoptUserNodes<NodeType extends NodeBase>(\n nodes: NodeType[],\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n parentLookup: Map<string, InternalNodeBase<NodeType>[]>,\n options: UpdateNodesOptions<NodeType> = {\n nodeOrigin: [0, 0] as NodeOrigin,\n elevateNodesOnSelect: true,\n defaults: {},\n checkEquality: true,\n },\n) {\n const tmpLookup = new Map(nodeLookup);\n nodeLookup.clear();\n parentLookup.clear();\n\n const selectedNodeZ: number = options?.elevateNodesOnSelect ? 1000 : 0;\n\n nodes.forEach((userNode) => {\n let internalNode = tmpLookup.get(userNode.id);\n\n if (\n options.checkEquality &&\n userNode === internalNode?.internals.userNode\n ) {\n nodeLookup.set(userNode.id, internalNode);\n } else {\n internalNode = {\n ...options.defaults,\n ...userNode,\n measured: {\n width: userNode.measured?.width,\n height: userNode.measured?.height,\n },\n internals: {\n positionAbsolute: userNode.position,\n handleBounds: internalNode?.internals.handleBounds,\n z:\n (isNumeric(userNode.zIndex) ? userNode.zIndex : 0) +\n (userNode.selected ? selectedNodeZ : 0),\n userNode,\n },\n };\n nodeLookup.set(userNode.id, internalNode);\n }\n\n if (userNode.parentId) {\n const childNodes = parentLookup.get(userNode.parentId);\n if (childNodes) {\n childNodes.push(internalNode);\n } else {\n parentLookup.set(userNode.parentId, [internalNode]);\n }\n }\n });\n\n if (parentLookup.size > 0) {\n updateAbsolutePositions(nodeLookup, options);\n }\n}\n\nexport function handleExpandParent(\n children: ParentExpandChild[],\n nodeLookup: NodeLookup,\n parentLookup: ParentLookup,\n nodeOrigin?: NodeOrigin,\n): (NodeDimensionChange | NodePositionChange)[] {\n const changes: (NodeDimensionChange | NodePositionChange)[] = [];\n const parentExpansions = new Map<\n string,\n { expandedRect: Rect; parent: InternalNodeBase }\n >();\n\n // determine the expanded rectangle the child nodes would take for each parent\n for (const child of children) {\n const parent = nodeLookup.get(child.parentId);\n if (!parent) {\n continue;\n }\n\n const parentRect =\n parentExpansions.get(child.parentId)?.expandedRect ??\n nodeToRect(parent, parent.origin ?? nodeOrigin);\n const expandedRect = getBoundsOfRects(parentRect, child.rect);\n parentExpansions.set(child.parentId, { expandedRect, parent });\n }\n\n if (parentExpansions.size > 0) {\n parentExpansions.forEach(({ expandedRect, parent }, parentId) => {\n // determine the position & dimensions of the parent\n const { position } = getNodePositionWithOrigin(parent, parent.origin);\n const dimensions = getNodeDimensions(parent);\n\n // determine how much the parent expands by moving the position\n const xChange =\n expandedRect.x < position.x\n ? Math.round(Math.abs(position.x - expandedRect.x))\n : 0;\n const yChange =\n expandedRect.y < position.y\n ? Math.round(Math.abs(position.y - expandedRect.y))\n : 0;\n\n if (xChange > 0 || yChange > 0) {\n changes.push({\n id: parentId,\n type: 'position',\n position: {\n x: position.x - xChange,\n y: position.y - yChange,\n },\n });\n\n // We move all child nodes in the oppsite direction\n // so the x,y changes of the parent do not move the children\n const childNodes = parentLookup.get(parentId);\n childNodes?.forEach((childNode) => {\n if (!children.some((child) => child.id === childNode.id)) {\n changes.push({\n id: childNode.id,\n type: 'position',\n position: {\n x: childNode.position.x + xChange,\n y: childNode.position.y + yChange,\n },\n });\n }\n });\n }\n\n if (\n dimensions.width < expandedRect.width ||\n dimensions.height < expandedRect.height\n ) {\n changes.push({\n id: parentId,\n type: 'dimensions',\n setAttributes: true,\n dimensions: {\n width: Math.max(dimensions.width, Math.round(expandedRect.width)),\n height: Math.max(\n dimensions.height,\n Math.round(expandedRect.height),\n ),\n },\n });\n }\n });\n }\n\n return changes;\n}\n\nexport function panBy({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n}: {\n delta: XYPosition;\n panZoom: PanZoomInstance | null;\n transform: Transform;\n translateExtent: CoordinateExtent;\n width: number;\n height: number;\n}) {\n if (!panZoom || (!delta.x && !delta.y)) {\n return false;\n }\n\n const nextViewport = panZoom.setViewportConstrained(\n {\n x: transform[0] + delta.x,\n y: transform[1] + delta.y,\n zoom: transform[2],\n },\n [\n [0, 0],\n [width, height],\n ],\n translateExtent,\n );\n\n const transformChanged =\n !!nextViewport &&\n (nextViewport.x !== transform[0] ||\n nextViewport.y !== transform[1] ||\n nextViewport.k !== transform[2]);\n\n return transformChanged;\n}\n","import { Ref, ReactNode, RefAttributes, forwardRef } from 'react';\nimport {\n XYPosition,\n Transform,\n SnapGrid,\n InternalNodeBase,\n NodeBase,\n NodeOrigin,\n Rect,\n Box,\n CoordinateExtent,\n Viewport,\n Dimensions,\n NodeLookup,\n} from '../types/system';\nimport { Node } from '../types';\nimport { getNodePositionWithOrigin } from './store';\n\nexport const clamp = (val: number, min = 0, max = 1): number =>\n Math.min(Math.max(val, min), max);\n\nexport const clampPosition = (\n position: XYPosition = { x: 0, y: 0 },\n extent: CoordinateExtent,\n) => ({\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1]),\n});\n\nexport function getNodeDimensions(node: {\n measured?: { width?: number; height?: number };\n width?: number;\n height?: number;\n initialWidth?: number;\n initialHeight?: number;\n}): { width: number; height: number } {\n return {\n width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n };\n}\n\nexport const isNumeric = (n: any): n is number => !isNaN(n) && isFinite(n);\n\nexport const snapPosition = (\n position: XYPosition,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1]),\n };\n};\n\nexport const pointToRendererPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n snapToGrid = false,\n snapGrid: SnapGrid = [1, 1],\n): XYPosition => {\n const position: XYPosition = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale,\n };\n\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n};\n\nexport const nodeToRect = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Rect => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n width: node.measured?.width ?? node.width ?? 0,\n height: node.measured?.height ?? node.height ?? 0,\n };\n};\n\nexport const getBoundsOfBoxes = (box1: Box, box2: Box): Box => ({\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2),\n});\n\nexport const rectToBox = ({ x, y, width, height }: Rect): Box => ({\n x,\n y,\n x2: x + width,\n y2: y + height,\n});\n\nexport const boxToRect = ({ x, y, x2, y2 }: Box): Rect => ({\n x,\n y,\n width: x2 - x,\n height: y2 - y,\n});\n\nexport const nodeToBox = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): Box => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n\n return {\n x,\n y,\n x2: x + (node.measured?.width ?? node.width ?? 0),\n y2: y + (node.measured?.height ?? node.height ?? 0),\n };\n};\n\nexport const getBoundsOfRects = (rect1: Rect, rect2: Rect): Rect =>\n boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n\nexport function fixedForwardRef<T, P = {}>(\n render: (props: P, ref: Ref<T>) => JSX.Element,\n): (props: P & RefAttributes<T>) => JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return forwardRef(render) as any;\n}\n\nexport const getOverlappingArea = (rectA: Rect, rectB: Rect): number => {\n const xOverlap = Math.max(\n 0,\n Math.min(rectA.x + rectA.width, rectB.x + rectB.width) -\n Math.max(rectA.x, rectB.x),\n );\n const yOverlap = Math.max(\n 0,\n Math.min(rectA.y + rectA.height, rectB.y + rectB.height) -\n Math.max(rectA.y, rectB.y),\n );\n\n return Math.ceil(xOverlap * yOverlap);\n};\n\nexport const getViewportForBounds = (\n bounds: Rect,\n width: number,\n height: number,\n minZoom: number,\n maxZoom: number,\n padding: number,\n): Viewport => {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom;\n const y = height / 2 - boundsCenterY * clampedZoom;\n\n return { x, y, zoom: clampedZoom };\n};\n\nexport function isCoordinateExtent(\n extent?: CoordinateExtent | 'parent',\n): extent is CoordinateExtent {\n return extent !== undefined && extent !== 'parent';\n}\n\nexport function nodeHasDimensions<NodeType extends NodeBase = NodeBase>(\n node: NodeType,\n): boolean {\n return (\n (node.measured?.width ?? node.width ?? node.initialWidth) !== undefined &&\n (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined\n );\n}\n\nconst calcAutoPanVelocity = (\n value: number,\n min: number,\n max: number,\n): number => {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, 50) / 50;\n } else if (value > max) {\n return -clamp(Math.abs(value - max), 1, 50) / 50;\n }\n\n return 0;\n};\n\nexport const calcAutoPan = (pos: XYPosition, bounds: Dimensions): number[] => {\n const xMovement = calcAutoPanVelocity(pos.x, 35, bounds.width - 35) * 20;\n const yMovement = calcAutoPanVelocity(pos.y, 35, bounds.height - 35) * 20;\n\n return [xMovement, yMovement];\n};\n\nexport const getPositionWithOrigin = ({\n x,\n y,\n width,\n height,\n origin = [0, 0],\n}: {\n x: number;\n y: number;\n width: number;\n height: number;\n origin?: NodeOrigin;\n}): XYPosition => {\n if (\n !width ||\n !height ||\n origin[0] < 0 ||\n origin[1] < 0 ||\n origin[0] > 1 ||\n origin[1] > 1\n ) {\n return { x, y };\n }\n\n return {\n x: x - width * origin[0],\n y: y - height * origin[1],\n };\n};\n\nexport const rendererPointToPoint = (\n { x, y }: XYPosition,\n [tx, ty, tScale]: Transform,\n): XYPosition => {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty,\n };\n};\n\nexport const isMacOs = () =>\n typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\n\nexport const isNode = <NodeType extends Node = Node>(\n element: unknown,\n): element is NodeType => isNodeBase<NodeType>(element);\n\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Convert child position to aboslute position\n *\n * @internal\n * @param position\n * @param parentId\n * @param nodeLookup\n * @param nodeOrigin\n * @returns an internal node with an absolute position\n */\nexport function evaluateAbsolutePosition(\n position: XYPosition,\n parentId: string,\n nodeLookup: NodeLookup,\n nodeOrigin: NodeOrigin = [0, 0],\n): XYPosition {\n let nextParentId: string | undefined = parentId;\n const positionAbsolute = { ...position };\n\n while (nextParentId) {\n const parent = nodeLookup.get(parentId);\n nextParentId = parent?.parentId;\n\n if (parent) {\n const origin = parent.origin || nodeOrigin;\n const xOffset = (parent.measured.width ?? 0) * origin[0];\n const yOffset = (parent.measured.height ?? 0) * origin[1];\n positionAbsolute.x += parent.position.x - xOffset;\n positionAbsolute.y += parent.position.y - yOffset;\n }\n }\n\n return positionAbsolute;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isRectObject = (obj: any): obj is Rect =>\n isNumeric(obj.width) &&\n isNumeric(obj.height) &&\n isNumeric(obj.x) &&\n isNumeric(obj.y);\n\nexport const devWarn = (id: string, message: string) => {\n // if (process.env.NODE_ENV === 'development') {\n // console.warn(\n // `[Ink Flow]: ${message} Help: https://reactflow.dev/error#${id}`,\n // );\n // }\n};\n","import {\n Transform,\n SnapGrid,\n XYPosition,\n Dimensions,\n NodeOrigin,\n HandleElement,\n Position,\n} from '../types/system';\nimport { pointToRendererPoint, snapPosition } from './general';\n\nexport type GetPointerPositionParams = {\n transform: Transform;\n snapGrid?: SnapGrid;\n snapToGrid?: boolean;\n};\n\nexport function getPointerPosition(\n event: MouseEvent | TouchEvent,\n {\n snapGrid = [0, 0],\n snapToGrid = false,\n transform,\n }: GetPointerPositionParams,\n): XYPosition & { xSnapped: number; ySnapped: number } {\n const { x, y } = getEventPosition(event);\n const pointerPos = pointToRendererPoint({ x, y }, transform);\n const { x: xSnapped, y: ySnapped } = snapToGrid\n ? snapPosition(pointerPos, snapGrid)\n : pointerPos;\n\n // we need the snapped position in order to be able to skip unnecessary drag events\n return {\n xSnapped,\n ySnapped,\n ...pointerPos,\n };\n}\n\nexport const getDimensions = (node: HTMLDivElement): Dimensions => ({\n width: node.offsetWidth,\n height: node.offsetHeight,\n});\n\nexport const getHostForElement = (\n element: HTMLElement,\n): Document | ShadowRoot =>\n (element.getRootNode?.() as Document | ShadowRoot) || window?.document;\n\nconst inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];\n\nexport function isInputDOMNode(event: KeyboardEvent): boolean {\n // using composed path for handling shadow dom\n const target = (event.composedPath?.()?.[0] || event.target) as HTMLElement;\n const isInput =\n inputTags.includes(target?.nodeName) ||\n target?.hasAttribute('contenteditable');\n\n // when an input field is focused we don't want to trigger deletion or movement of nodes\n return isInput || !!target?.closest('.nokey');\n}\n\nexport const isMouseEvent = (\n event: MouseEvent | TouchEvent,\n): event is MouseEvent => 'clientX' in event;\n\nexport const getEventPosition = (\n event: MouseEvent | TouchEvent,\n bounds?: DOMRect,\n) => {\n const isMouse = isMouseEvent(event);\n const evtX = isMouse ? event.clientX : event.touches?.[0].clientX;\n const evtY = isMouse ? event.clientY : event.touches?.[0].clientY;\n\n return {\n x: evtX - (bounds?.left ?? 0),\n y: evtY - (bounds?.top ?? 0),\n };\n};\n\n// The handle bounds are calculated relative to the node element.\n// We store them in the internals object of the node in order to avoid\n// unnecessary recalculations.\nexport const getHandleBounds = (\n selector: string,\n nodeElement: HTMLDivElement,\n zoom: number,\n nodeOrigin: NodeOrigin = [0, 0],\n): HandleElement[] | null => {\n const handles = nodeElement.querySelectorAll(selector);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n const handlesArray = Array.from(handles) as HTMLDivElement[];\n\n // @todo can't we use the node dimensions here?\n const nodeBounds = nodeElement.getBoundingClientRect();\n const nodeOffset = {\n x: nodeBounds.width * nodeOrigin[0],\n y: nodeBounds.height * nodeOrigin[1],\n };\n\n return handlesArray.map((handle): HandleElement => {\n const handleBounds = handle.getBoundingClientRect();\n\n return {\n id: handle.getAttribute('data-handleid'),\n position: handle.getAttribute('data-handlepos') as unknown as Position,\n x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom,\n y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom,\n ...getDimensions(handle),\n };\n });\n};\n","import { useState, useEffect, useRef, useMemo } from 'react';\nimport { KeyCode } from '../types/system';\nimport { isInputDOMNode } from '../utils/dom';\n\ntype Keys = Array<string>;\ntype PressedKeys = Set<string>;\ntype KeyOrCode = 'key' | 'code';\n\nexport type UseKeyPressOptions = {\n target?: Window | Document | HTMLElement | ShadowRoot | null;\n actInsideInputWithModifier?: boolean;\n};\n\nconst defaultDoc = typeof document !== 'undefined' ? document : null;\n\n/**\n * Hook for handling key events.\n *\n * @public\n * @param param.keyCode - The key code (string or array of strings) to use\n * @param param.options - Options\n * @returns boolean\n */\nexport function useKeyPress(\n // the keycode can be a string 'a' or an array of strings ['a', 'a+d']\n // a string means a single key 'a' or a combination when '+' is used 'a+d'\n // an array means different possibilites. Explainer: ['a', 'd+s'] here the\n // user can use the single key 'a' or the combination 'd' + 's'\n keyCode: KeyCode | null = null,\n options: UseKeyPressOptions = {\n target: defaultDoc,\n actInsideInputWithModifier: true,\n },\n): boolean {\n const [keyPressed, setKeyPressed] = useState(false);\n\n // we need to remember if a modifier key is pressed in order to track it\n const modifierPressed = useRef(false);\n\n // we need to remember the pressed keys in order to support combinations\n const pressedKeys = useRef<PressedKeys>(new Set([]));\n\n // keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n // keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n // used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n // we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n // 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\n // we can't find it in the list of keysToWatch.\n const [keyCodes, keysToWatch] = useMemo<[Array<Keys>, Keys]>(() => {\n if (keyCode !== null) {\n const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n const keys = keyCodeArr\n .filter((kc) => typeof kc === 'string')\n .map((kc) => kc.split('+'));\n const keysFlat = keys.reduce(\n (res: Keys, item) => res.concat(...item),\n [],\n );\n\n return [keys, keysFlat];\n }\n\n return [[], []];\n }, [keyCode]);\n\n useEffect(() => {\n const target = options?.target || defaultDoc;\n\n if (keyCode !== null) {\n const downHandler = (event: KeyboardEvent) => {\n modifierPressed.current =\n event.ctrlKey || event.metaKey || event.shiftKey;\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n pressedKeys.current.add(event[keyOrCode]);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n event.preventDefault();\n setKeyPressed(true);\n }\n };\n\n const upHandler = (event: KeyboardEvent) => {\n const preventAction =\n (!modifierPressed.current ||\n (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n\n if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n setKeyPressed(false);\n pressedKeys.current.clear();\n } else {\n pressedKeys.current.delete(event[keyOrCode]);\n }\n\n // 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\n if (event.key === 'Meta') {\n pressedKeys.current.clear();\n }\n\n modifierPressed.current = false;\n };\n\n const resetHandler = () => {\n pressedKeys.current.clear();\n setKeyPressed(false);\n };\n\n target?.addEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.addEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.addEventListener('blur', resetHandler);\n window.addEventListener('contextmenu', resetHandler);\n\n return () => {\n target?.removeEventListener(\n 'keydown',\n downHandler as EventListenerOrEventListenerObject,\n );\n target?.removeEventListener(\n 'keyup',\n upHandler as EventListenerOrEventListenerObject,\n );\n window.removeEventListener('blur', resetHandler);\n window.removeEventListener('contextmenu', resetHandler);\n };\n }\n }, [keyCode, setKeyPressed]);\n\n return keyPressed;\n}\n\n// utils\n\nfunction isMatchingKey(\n keyCodes: Array<Keys>,\n pressedKeys: PressedKeys,\n isUp: boolean,\n): boolean {\n return (\n keyCodes\n // we only want to compare same sizes of keyCode definitions\n // and pressed keys. When the user specified 'Meta' as a key somewhere\n // this would also be truthy without this filter when user presses 'Meta' + 'r'\n .filter((keys) => isUp || keys.length === pressedKeys.size)\n // since we want to support multiple possibilities only one of the\n // combinations need to be part of the pressed keys\n .some((keys) => keys.every((k) => pressedKeys.has(k)))\n );\n}\n\nfunction useKeyOrCode(eventCode: string, keysToWatch: KeyCode): KeyOrCode {\n return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","import type { CSSProperties } from 'react';\n\nexport const containerStyle: CSSProperties = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n D3DragEvent,\n Selection as D3Selection,\n SubjectPosition,\n ZoomBehavior,\n} from 'd3';\n\nimport type { XYPosition, Rect } from './utils';\nimport type {\n InternalNodeBase,\n NodeBase,\n NodeDragItem,\n NodeOrigin,\n} from './nodes';\nimport type { ConnectingHandle, HandleType } from './handles';\nimport { PanZoomInstance } from './panzoom';\nimport { EdgeBase } from '.';\n\nexport type Project = (position: XYPosition) => XYPosition;\n\nexport type OnMove = (\n event: MouseEvent | TouchEvent | null,\n viewport: Viewport,\n) => void;\nexport type OnMoveStart = OnMove;\nexport type OnMoveEnd = OnMove;\n\nexport type ZoomInOut = (options?: ViewportHelperFunctionOptions) => void;\nexport type ZoomTo = (\n zoomLevel: number,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type GetZoom = () => number;\nexport type GetViewport = () => Viewport;\nexport type SetViewport = (\n viewport: Viewport,\n options?: ViewportHelperFunctionOptions,\n) => void;\nexport type SetCenter = (\n x: number,\n y: number,\n options?: SetCenterOptions,\n) => void;\nexport type FitBounds = (bounds: Rect, options?: FitBoundsOptions) => void;\n\nexport type Connection = {\n source: string;\n target: string;\n sourceHandle: string | null;\n targetHandle: string | null;\n};\n\nexport type HandleConnection = Connection & {\n edgeId: string;\n};\n\nexport type ConnectionStatus = 'valid' | 'invalid';\n\nexport enum ConnectionMode {\n Strict = 'strict',\n Loose = 'loose',\n}\n\nexport type OnConnectStartParams = {\n nodeId: string | null;\n handleId: string | null;\n handleType: HandleType | null;\n};\n\nexport type OnConnectStart = (\n event: MouseEvent | TouchEvent,\n params: OnConnectStartParams,\n) => void;\nexport type OnConnect = (connection: Connection) => void;\nexport type OnConnectEnd = (event: MouseEvent | TouchEvent) => void;\n\nexport type IsValidConnection = (edge: EdgeBase | Connection) => boolean;\n\nexport type FitViewParamsBase<NodeType extends NodeBase> = {\n nodeLookup: Map<string, InternalNodeBase<NodeType>>;\n width: number;\n height: number;\n panZoom: PanZoomInstance;\n minZoom: number;\n maxZoom: number;\n nodeOrigin?: NodeOrigin;\n};\n\nexport type FitViewOptionsBase<NodeType extends NodeBase = NodeBase> = {\n padding?: number;\n includeHiddenNodes?: boolean;\n minZoom?: number;\n maxZoom?: number;\n duration?: number;\n nodes?: (NodeType | { id: string })[];\n};\n\nexport type Viewport = {\n x: number;\n y: number;\n zoom: number;\n};\n\nexport type KeyCode = string | Array<string>;\n\nexport type SnapGrid = [number, number];\n\nexport enum PanOnScrollMode {\n Free = 'free',\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\nexport type ViewportHelperFunctionOptions = {\n duration?: number;\n};\n\nexport type SetCenterOptions = ViewportHelperFunctionOptions & {\n zoom?: number;\n};\n\nexport type FitBoundsOptions = ViewportHelperFunctionOptions & {\n padding?: number;\n};\n\nexport type OnViewportChange = (viewport: Viewport) => void;\n\nexport type D3ZoomInstance = ZoomBehavior<Element, unknown>;\nexport type D3SelectionInstance = D3Selection<\n Element,\n unknown,\n null,\n undefined\n>;\nexport type D3ZoomHandler = (this: Element, event: any, d: unknown) => void;\n\nexport type UpdateNodeInternals = (nodeId: string | string[]) => void;\n\nexport type PanelPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type ProOptions = {\n account?: string;\n hideAttribution: boolean;\n};\n\nexport type UseDragEvent = D3DragEvent<HTMLDivElement, null, SubjectPosition>;\n\nexport enum SelectionMode {\n Partial = 'partial',\n Full = 'full',\n}\n\nexport type SelectionRect = Rect & {\n startX: number;\n startY: number;\n};\n\nexport type OnError = (id: string, message: string) => void;\n\nexport type UpdateNodePositions = (\n dragItems: Map<string, NodeDragItem | InternalNodeBase>,\n dragging?: boolean,\n) => void;\nexport type PanBy = (delta: XYPosition) => boolean;\n\nexport type UpdateConnection = (params: {\n connectionPosition: XYPosition | null;\n connectionStatus: ConnectionStatus | null;\n connectionStartHandle: ConnectingHandle | null;\n connectionEndHandle: ConnectingHandle | null;\n}) => void;\n\nexport type ColorModeClass = 'light' | 'dark';\nexport type ColorMode = ColorModeClass | 'system';\n\nexport type ConnectionLookup = Map<string, Map<string, HandleConnection>>;\n\nexport type OnBeforeDeleteBase<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n> = ({\n nodes,\n edges,\n}: {\n nodes: NodeType[];\n edges: EdgeType[];\n}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;\n","import { Position } from './utils';\n\nexport type EdgeBase<\n EdgeData extends Record<string, unknown> = Record<string, unknown>,\n EdgeType extends string | undefined = string | undefined\n> = {\n /** Unique id of an edge */\n id: string;\n /** Type of an edge defined in edgeTypes */\n type?: EdgeType;\n /** Id of source node */\n source: string;\n /** Id of target node */\n target: string;\n /** Id of source handle\n * only needed if there are multiple handles per node\n */\n sourceHandle?: string | null;\n /** Id of target handle\n * only needed if there are multiple handles per node\n */\n targetHandle?: string | null;\n animated?: boolean;\n hidden?: boolean;\n deletable?: boolean;\n selectable?: boolean;\n /** Arbitrary data passed to an edge */\n data?: EdgeData;\n selected?: boolean;\n /** Set the marker on the beginning of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerStart?: EdgeMarkerType;\n /** Set the marker on the end of an edge\n * @example 'arrow', 'arrowclosed' or custom marker\n */\n markerEnd?: EdgeMarkerType;\n zIndex?: number;\n ariaLabel?: string;\n /** Padding around the edge where interaction is still possible */\n interactionWidth?: number;\n};\n\nexport type SmoothStepPathOptions = {\n offset?: number;\n borderRadius?: number;\n};\n\nexport type StepPathOptions = {\n offset?: number;\n};\n\nexport type BezierPathOptions = {\n curvature?: number;\n};\n\nexport type DefaultEdgeOptionsBase<EdgeType extends EdgeBase> = Omit<\n EdgeType,\n 'id' | 'source' | 'target' | 'sourceHandle' | 'targetHandle' | 'selected'\n>;\n\nexport enum ConnectionLineType {\n Bezier = 'default',\n Straight = 'straight',\n Step = 'step',\n SmoothStep = 'smoothstep',\n SimpleBezier = 'simplebezier',\n}\n\nexport type EdgeMarker = {\n type: MarkerType;\n color?: string;\n width?: number;\n height?: number;\n markerUnits?: string;\n orient?: string;\n strokeWidth?: number;\n};\n\nexport type EdgeMarkerType = string | EdgeMarker;\n\nexport enum MarkerType {\n Arrow = 'arrow',\n ArrowClosed = 'arrowclosed',\n}\n\nexport type MarkerProps = EdgeMarker & {\n id: string;\n};\n\nexport type EdgePosition = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourcePosition: Position;\n targetPosition: Position;\n};\n\nexport type EdgeLookup<EdgeType extends EdgeBase = EdgeBase> = Map<string, EdgeType>;\n","export enum Position {\n Left = 'left',\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n}\n\nexport type XYPosition = {\n x: number;\n y: number;\n};\n\nexport type XYZPosition = XYPosition & { z: number };\n\nexport type Dimensions = {\n width: number;\n height: number;\n};\n\nexport type Rect = Dimensions & XYPosition;\n\nexport type Box = XYPosition & {\n x2: number;\n y2: number;\n};\n\nexport type Transform = [number, number, number];\n\nexport type CoordinateExtent = [[number, number], [number, number]];\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ZoomTransform, zoomIdentity } from 'd3-zoom';\nimport { Viewport, D3SelectionInstance } from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport const viewChanged = (\n prevViewport: Viewport,\n eventViewport: any,\n): boolean =>\n prevViewport.x !== eventViewport.x ||\n prevViewport.y !== eventViewport.y ||\n prevViewport.zoom !== eventViewport.k;\n\nexport const transformToViewport = (transform: ZoomTransform): Viewport => ({\n x: transform.x,\n y: transform.y,\n zoom: transform.k,\n});\n\nexport const viewportToTransform = ({ x, y, zoom }: Viewport): ZoomTransform =>\n zoomIdentity.translate(x, y).scale(zoom);\n\nexport const isWrappedWithClass = (event: any, className: string | undefined) =>\n event.target.closest(`.${className}`);\n\nexport const isRightClickPan = (\n panOnDrag: boolean | number[],\n usedButton: number,\n) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\n\nexport const getD3Transition = (selection: D3SelectionInstance, duration = 0) =>\n typeof duration === 'number' && duration > 0\n ? selection.transition().duration(duration)\n : selection;\n\nexport const wheelDelta = (event: any) => {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n factor\n );\n};\n","import { type ZoomTransform, zoom, zoomTransform } from 'd3-zoom';\nimport { select } from 'd3-selection';\n\nimport { getD3Transition, viewportToTransform, wheelDelta } from './utils';\nimport {\n createPanOnScrollHandler,\n createPanZoomEndHandler,\n createPanZoomHandler,\n createPanZoomStartHandler,\n createZoomOnScrollHandler,\n} from './eventhandler';\nimport { createFilter } from './filter';\nimport {\n Viewport,\n PanZoomInstance,\n PanZoomTransformOptions,\n PanZoomUpdateOptions,\n CoordinateExtent,\n PanZoomParams,\n} from '../../types/system';\nimport { clamp } from '../general';\n\nexport type ZoomPanValues = {\n isZoomingOrPanning: boolean;\n usedRightMouseButton: boolean;\n prevViewport: Viewport;\n mouseButton: number;\n timerId: ReturnType<typeof setTimeout> | undefined;\n panScrollTimeout: ReturnType<typeof setTimeout> | undefined;\n isPanScrolling: boolean;\n};\n\nexport function XYPanZoom({\n domNode,\n minZoom,\n maxZoom,\n translateExtent,\n viewport,\n onPanZoom,\n onPanZoomStart,\n onPanZoomEnd,\n onTransformChange,\n onDraggingChange,\n}: PanZoomParams): PanZoomInstance {\n const zoomPanValues: ZoomPanValues = {\n isZoomingOrPanning: false,\n usedRightMouseButton: false,\n prevViewport: { x: 0, y: 0, zoom: 0 },\n mouseButton: 0,\n timerId: undefined,\n panScrollTimeout: undefined,\n isPanScrolling: false,\n };\n const bbox = domNode.getBoundingClientRect();\n const d3ZoomInstance = zoom()\n .scaleExtent([minZoom, maxZoom])\n .translateExtent(translateExtent);\n const d3Selection = select(domNode).call(d3ZoomInstance);\n\n setViewportConstrained(\n {\n x: viewport.x,\n y: viewport.y,\n zoom: clamp(viewport.zoom, minZoom, maxZoom),\n },\n [\n [0, 0],\n [bbox.width, bbox.height],\n ],\n translateExtent,\n );\n\n const d3ZoomHandler = d3Selection.on('wheel.zoom')!;\n const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom')!;\n d3ZoomInstance.wheelDelta(wheelDelta);\n\n function setTransform(\n transform: ZoomTransform,\n options?: PanZoomTransformOptions,\n ) {\n if (d3Selection) {\n d3ZoomInstance?.transform(\n getD3Transition(d3Selection, options?.duration),\n transform,\n );\n }\n }\n\n // public functions\n function update({\n noWheelClassName,\n noPanClassName,\n onPaneContextMenu,\n userSelectionActive,\n panOnScroll,\n panOnDrag,\n panOnScrollMode,\n panOnScrollSpeed,\n preventScrolling,\n zoomOnPinch,\n zoomOnScroll,\n zoomOnDoubleClick,\n zoomActivationKeyPressed,\n lib,\n }: PanZoomUpdateOptions) {\n if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {\n destroy();\n }\n\n const isPanOnScroll =\n panOnScroll && !zoomActivationKeyPressed && !userSelectionActive;\n\n const wheelHandler = isPanOnScroll\n ? createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom: d3ZoomInstance,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n })\n : createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n });\n\n d3Selection.on('wheel.zoom', wheelHandler, { passive: false });\n\n if (!userSelectionActive) {\n // pan zoom start\n const startHandler = createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n });\n d3ZoomInstance.on('start', startHandler);\n\n // pan zoom\n const panZoomHandler = createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu: !!onPaneContextMenu,\n onPanZoom,\n onTransformChange,\n });\n d3ZoomInstance.on('zoom', panZoomHandler);\n\n // pan zoom end\n const panZoomEndHandler = createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onPaneContextMenu,\n onPanZoomEnd,\n onDraggingChange,\n });\n d3ZoomInstance.on('end', panZoomEndHandler);\n }\n\n const filter = createFilter({\n zoomActivationKeyPressed,\n panOnDrag,\n zoomOnScroll,\n panOnScroll,\n zoomOnDoubleClick,\n zoomOnPinch,\n userSelectionActive,\n noPanClassName,\n noWheelClassName,\n lib,\n });\n d3ZoomInstance.filter(filter);\n\n // We cannot add zoomOnDoubleClick to the filter above because\n // double tapping on touch screens circumvents the filter and\n // dblclick.zoom is fired on the selection directly\n if (zoomOnDoubleClick) {\n d3Selection.on('dblclick.zoom', d3DblClickZoomHandler);\n } else {\n d3Selection.on('dblclick.zoom', null);\n }\n }\n\n function destroy() {\n d3ZoomInstance.on('zoom', null);\n }\n\n function setViewportConstrained(\n viewport: Viewport,\n extent: CoordinateExtent,\n translateExtent: CoordinateExtent,\n ): ZoomTransform | undefined {\n const nextTransform = viewportToTransform(viewport);\n const contrainedTransform = d3ZoomInstance?.constrain()(\n nextTransform,\n extent,\n translateExtent,\n );\n\n if (contrainedTransform) {\n setTransform(contrainedTransform);\n }\n\n return contrainedTransform;\n }\n\n function setViewport(viewport: Viewport, options?: PanZoomTransformOptions) {\n const nextTransform = viewportToTransform(viewport);\n\n setTransform(nextTransform, options);\n\n return nextTransform;\n }\n\n function syncViewport(viewport: Viewport) {\n if (d3Selection) {\n const nextTransform = viewportToTransform(viewport);\n const currentTransform = d3Selection.property('__zoom');\n\n if (\n currentTransform.k !== viewport.zoom ||\n currentTransform.x !== viewport.x ||\n currentTransform.y !== viewport.y\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n d3ZoomInstance?.transform(d3Selection, nextTransform, null, {\n sync: true,\n });\n }\n }\n }\n\n function getViewport(): Viewport {\n const transform = d3Selection\n ? zoomTransform(d3Selection.node() as Element)\n : { x: 0, y: 0, k: 1 };\n return { x: transform.x, y: transform.y, zoom: transform.k };\n }\n\n function scaleTo(zoom: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleTo(\n getD3Transition(d3Selection, options?.duration),\n zoom,\n );\n }\n }\n\n function scaleBy(factor: number, options?: PanZoomTransformOptions) {\n if (d3Selection) {\n d3ZoomInstance?.scaleBy(\n getD3Transition(d3Selection, options?.duration),\n factor,\n );\n }\n }\n\n function setScaleExtent(scaleExtent: [number, number]) {\n d3ZoomInstance?.scaleExtent(scaleExtent);\n }\n\n function setTranslateExtent(translateExtent: CoordinateExtent) {\n d3ZoomInstance?.translateExtent(translateExtent);\n }\n\n return {\n update,\n destroy,\n setViewport,\n setViewportConstrained,\n getViewport,\n scaleTo,\n scaleBy,\n setScaleExtent,\n setTranslateExtent,\n syncViewport,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { D3ZoomEvent } from 'd3-zoom';\nimport { pointer } from 'd3-selection';\n\nimport {\n isRightClickPan,\n isWrappedWithClass,\n transformToViewport,\n viewChanged,\n wheelDelta,\n} from './utils';\nimport { ZoomPanValues } from './XYPanZoom';\nimport {\n D3SelectionInstance,\n D3ZoomInstance,\n PanOnScrollMode,\n OnPanZoom,\n D3ZoomHandler,\n OnDraggingChange,\n OnTransformChange,\n} from '../../types/system';\nimport { isMacOs } from '../general';\n\nexport type PanOnScrollParams = {\n zoomPanValues: ZoomPanValues;\n noWheelClassName: string;\n d3Selection: D3SelectionInstance;\n d3Zoom: D3ZoomInstance;\n panOnScrollMode: PanOnScrollMode;\n panOnScrollSpeed: number;\n zoomOnPinch: boolean;\n onPanZoomStart?: OnPanZoom;\n onPanZoom?: OnPanZoom;\n onPanZoomEnd?: OnPanZoom;\n};\n\nexport type ZoomOnScrollParams = {\n noWheelClassName: string;\n preventScrolling: boolean;\n d3ZoomHandler: D3ZoomHandler;\n};\n\nexport type PanZoomStartParams = {\n zoomPanValues: ZoomPanValues;\n onDraggingChange: OnDraggingChange;\n onPanZoomStart?: OnPanZoom;\n};\n\nexport type PanZoomParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n onPaneContextMenu: boolean;\n onTransformChange: OnTransformChange;\n onPanZoom?: OnPanZoom;\n};\n\nexport type PanZoomEndParams = {\n zoomPanValues: ZoomPanValues;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n onDraggingChange: (isDragging: boolean) => void;\n onPanZoomEnd?: OnPanZoom;\n onPaneContextMenu?: (event: any) => void;\n};\n\nexport function createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n}: PanOnScrollParams) {\n return (event: any) => {\n if (isWrappedWithClass(event, noWheelClassName)) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const currentZoom = d3Selection.property('__zoom').k || 1;\n\n // macos sets ctrlKey=true for pinch gesture on a trackpad\n if (event.ctrlKey && zoomOnPinch) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom = currentZoom * Math.pow(2, pinchDelta);\n // @ts-ignore\n d3Zoom.scaleTo(d3Selection, zoom, point, event);\n\n return;\n }\n\n // increase scroll speed in firefox\n // firefox: deltaMode === 1; chrome: deltaMode === 0\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX =\n panOnScrollMode === PanOnScrollMode.Vertical\n ? 0\n : event.deltaX * deltaNormalize;\n let deltaY =\n panOnScrollMode === PanOnScrollMode.Horizontal\n ? 0\n : event.deltaY * deltaNormalize;\n\n // this enables vertical scrolling with shift + scroll on windows\n if (\n !isMacOs() &&\n event.shiftKey &&\n panOnScrollMode !== PanOnScrollMode.Vertical\n ) {\n deltaX = event.deltaY * deltaNormalize;\n deltaY = 0;\n }\n\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed,\n -(deltaY / currentZoom) * panOnScrollSpeed,\n // @ts-ignore\n { internal: true },\n );\n\n const nextViewport = transformToViewport(d3Selection.property('__zoom'));\n\n clearTimeout(zoomPanValues.panScrollTimeout);\n\n // for pan on scroll we need to handle the event calls on our own\n // we can't use the start, zoom and end events from d3-zoom\n // because start and move gets called on every scroll event and not once at the beginning\n if (!zoomPanValues.isPanScrolling) {\n zoomPanValues.isPanScrolling = true;\n\n onPanZoomStart?.(event, nextViewport);\n }\n\n if (zoomPanValues.isPanScrolling) {\n onPanZoom?.(event, nextViewport);\n\n zoomPanValues.panScrollTimeout = setTimeout(() => {\n onPanZoomEnd?.(event, nextViewport);\n\n zoomPanValues.isPanScrolling = false;\n }, 150);\n }\n };\n}\n\nexport function createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n}: ZoomOnScrollParams) {\n return function (this: Element, event: any, d: unknown) {\n // we still want to enable pinch zooming even if preventScrolling is set to false\n const preventZoom =\n !preventScrolling && event.type === 'wheel' && !event.ctrlKey;\n\n if (preventZoom || isWrappedWithClass(event, noWheelClassName)) {\n return null;\n }\n\n event.preventDefault();\n\n d3ZoomHandler.call(this, event, d);\n };\n}\n\nexport function createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n}: PanZoomStartParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n const viewport = transformToViewport(event.transform);\n\n // we need to remember it here, because it's always 0 in the \"zoom\" event\n zoomPanValues.mouseButton = event.sourceEvent?.button || 0;\n zoomPanValues.isZoomingOrPanning = true;\n zoomPanValues.prevViewport = viewport;\n\n if (event.sourceEvent?.type === 'mousedown') {\n onDraggingChange(true);\n }\n\n if (onPanZoomStart) {\n onPanZoomStart?.(event.sourceEvent as MouseEvent | TouchEvent, viewport);\n }\n };\n}\n\nexport function createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu,\n onTransformChange,\n onPanZoom,\n}: PanZoomParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n zoomPanValues.usedRightMouseButton = !!(\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0)\n );\n\n if (!event.sourceEvent?.sync) {\n onTransformChange([\n event.transform.x,\n event.transform.y,\n event.transform.k,\n ]);\n }\n\n if (onPanZoom && !event.sourceEvent?.internal) {\n onPanZoom?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n transformToViewport(event.transform),\n );\n }\n };\n}\n\nexport function createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onDraggingChange,\n onPanZoomEnd,\n onPaneContextMenu,\n}: PanZoomEndParams) {\n return (event: D3ZoomEvent<HTMLDivElement, any>) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n\n zoomPanValues.isZoomingOrPanning = false;\n\n if (\n onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) &&\n !zoomPanValues.usedRightMouseButton &&\n event.sourceEvent\n ) {\n onPaneContextMenu(event.sourceEvent);\n }\n zoomPanValues.usedRightMouseButton = false;\n\n onDraggingChange(false);\n\n if (\n onPanZoomEnd &&\n viewChanged(zoomPanValues.prevViewport, event.transform)\n ) {\n const viewport = transformToViewport(event.transform);\n zoomPanValues.prevViewport = viewport;\n\n clearTimeout(zoomPanValues.timerId);\n zoomPanValues.timerId = setTimeout(\n () => {\n onPanZoomEnd?.(\n event.sourceEvent as MouseEvent | TouchEvent,\n viewport,\n );\n },\n // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll\n panOnScroll ? 150 : 0,\n );\n }\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isWrappedWithClass } from './utils';\n\nexport type FilterParams = {\n zoomActivationKeyPressed: boolean;\n zoomOnScroll: boolean;\n zoomOnPinch: boolean;\n panOnDrag: boolean | number[];\n panOnScroll: boolean;\n zoomOnDoubleClick: boolean;\n userSelectionActive: boolean;\n noWheelClassName: string;\n noPanClassName: string;\n lib: string;\n};\n\nexport function createFilter({\n zoomActivationKeyPressed,\n zoomOnScroll,\n zoomOnPinch,\n panOnDrag,\n panOnScroll,\n zoomOnDoubleClick,\n userSelectionActive,\n noWheelClassName,\n noPanClassName,\n lib,\n}: FilterParams) {\n return (event: any): boolean => {\n const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n const pinchZoom = zoomOnPinch && event.ctrlKey;\n\n if (\n event.button === 1 &&\n event.type === 'mousedown' &&\n (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))\n ) {\n return true;\n }\n\n // if all interactions are disabled, we prevent all zoom events\n if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n }\n\n // during a selection we prevent all other interactions\n if (userSelectionActive) {\n return false;\n }\n\n // if the target element is inside an element with the nowheel class, we prevent zooming\n if (isWrappedWithClass(event, noWheelClassName) && event.type === 'wheel') {\n return false;\n }\n\n // if the target element is inside an element with the nopan class, we prevent panning\n if (\n isWrappedWithClass(event, noPanClassName) &&\n (event.type !== 'wheel' || (panOnScroll && event.type === 'wheel' && !zoomActivationKeyPressed))\n ) {\n return false;\n }\n\n if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') {\n return false;\n }\n\n // when there is no scroll handling enabled, we prevent all wheel events\n if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') {\n return false;\n }\n\n // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n return false;\n }\n\n // if the pane is only movable using allowed clicks\n if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n return false;\n }\n\n // We only allow right clicks if pan on drag is set to right click\n const buttonAllowed =\n (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n\n // default filter for d3-zoom\n return (!event.ctrlKey || event.type === 'wheel') && buttonAllowed;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { containerStyle } from '../../styles/utils';\nimport type { FlowRendererProps } from '../FlowRenderer';\nimport { InkFlowState } from '../../types';\nimport {\n PanOnScrollMode,\n PanZoomInstance,\n Transform,\n} from '../../types/system';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { useResizeHandler } from '../../hooks/useResizeHandler';\nimport { XYPanZoom } from '../../utils/xypanzoom';\n\ntype ZoomPaneProps = Omit<\n FlowRendererProps,\n | 'deleteKeyCode'\n | 'selectionKeyCode'\n | 'multiSelectionKeyCode'\n | 'noDragClassName'\n | 'disableKeyboardA11y'\n | 'selectionOnDrag'\n> & {\n isControlledViewport: boolean;\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n lib: s.lib,\n});\n\nexport function ZoomPane({\n onPaneContextMenu,\n zoomOnScroll = true,\n zoomOnPinch = true,\n panOnScroll = false,\n panOnScrollSpeed = 0.5,\n panOnScrollMode = PanOnScrollMode.Free,\n zoomOnDoubleClick = true,\n panOnDrag = true,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n zoomActivationKeyCode,\n preventScrolling = true,\n children,\n noWheelClassName,\n noPanClassName,\n onViewportChange,\n isControlledViewport,\n}: ZoomPaneProps) {\n const store = useStoreApi();\n const zoomPane = useRef<HTMLDivElement>(null);\n const { userSelectionActive, lib } = useStore(selector, shallow);\n const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n const panZoom = useRef<PanZoomInstance>();\n\n useResizeHandler(zoomPane);\n\n useEffect(() => {\n if (zoomPane.current) {\n panZoom.current = XYPanZoom({\n domNode: zoomPane.current,\n minZoom,\n maxZoom,\n translateExtent,\n viewport: defaultViewport,\n onTransformChange: (transform: Transform) => {\n onViewportChange?.({\n x: transform[0],\n y: transform[1],\n zoom: transform[2],\n });\n\n if (!isControlledViewport) {\n store.setState({ transform });\n }\n },\n onDraggingChange: (paneDragging: boolean) =>\n store.setState({ paneDragging }),\n onPanZoomStart: (event, vp) => {\n const { onViewportChangeStart, onMoveStart } = store.getState();\n onMoveStart?.(event, vp);\n onViewportChangeStart?.(vp);\n },\n onPanZoom: (event, vp) => {\n const { onViewportChange, onMove } = store.getState();\n onMove?.(event, vp);\n onViewportChange?.(vp);\n },\n onPanZoomEnd: (event, vp) => {\n const { onViewportChangeEnd, onMoveEnd } = store.getState();\n onMoveEnd?.(event, vp);\n onViewportChangeEnd?.(vp);\n },\n });\n\n const { x, y, zoom } = panZoom.current!.getViewport();\n\n store.setState({\n panZoom: panZoom.current,\n transform: [x, y, zoom],\n domNode: zoomPane.current.closest('.ink-flow') as HTMLDivElement,\n });\n\n return () => {\n panZoom.current?.destroy();\n };\n }\n }, []);\n\n useEffect(() => {\n panZoom.current?.update({\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n });\n }, [\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n ]);\n\n return (\n <div className=\"ink-flow__renderer\" ref={zoomPane} style={containerStyle}>\n {children}\n </div>\n );\n}\n","import { useEffect, type MutableRefObject } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { errorMessages } from '../constants';\nimport { getDimensions } from '../utils/dom';\n\n/**\n * Hook for handling resize events.\n *\n * @internal\n */\nexport function useResizeHandler(\n domNode: MutableRefObject<HTMLDivElement | null>,\n): void {\n const store = useStoreApi();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (!domNode.current) {\n return false;\n }\n const size = getDimensions(domNode.current!);\n\n if (size.height === 0 || size.width === 0) {\n store.getState().onError?.('004', errorMessages['error004']());\n }\n\n store.setState({ width: size.width || 500, height: size.height || 500 });\n };\n\n if (domNode.current) {\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n\n const resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(domNode.current);\n\n return () => {\n window.removeEventListener('resize', updateDimensions);\n\n if (resizeObserver && domNode.current) {\n resizeObserver.unobserve(domNode.current);\n }\n };\n }\n }, []);\n}\n","import { useEffect } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { useKeyPress, UseKeyPressOptions } from './useKeyPress';\nimport { Edge, Node } from '../types';\nimport { KeyCode } from '../types/system';\n\nconst selected = (item: Node | Edge) => item.selected;\n\nconst deleteKeyOptions: UseKeyPressOptions = {\n actInsideInputWithModifier: false,\n};\n\n/**\n * Hook for handling global key events.\n *\n * @internal\n */\nexport function useGlobalKeyHandler({\n deleteKeyCode,\n multiSelectionKeyCode,\n}: {\n deleteKeyCode: KeyCode | null;\n multiSelectionKeyCode: KeyCode | null;\n}): void {\n const store = useStoreApi();\n // const { deleteElements } = useInkFlow();\n\n const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);\n const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed) {\n const { edges, nodes } = store.getState();\n // deleteElements({\n // nodes: nodes.filter(selected),\n // edges: edges.filter(selected),\n // });\n store.setState({ nodesSelectionActive: false });\n }\n }, [deleteKeyPressed]);\n\n useEffect(() => {\n store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n }, [multiSelectionKeyPressed]);\n}\n","import { Edge, InternalNode, Node } from '../types';\nimport {\n EdgeChange,\n EdgeLookup,\n EdgeRemoveChange,\n EdgeSelectionChange,\n NodeChange,\n NodeLookup,\n NodeRemoveChange,\n NodeSelectionChange,\n} from '../types/system';\n\nfunction applyChange(change: any, element: any): any {\n switch (change.type) {\n case 'select': {\n element.selected = change.selected;\n break;\n }\n\n case 'position': {\n if (typeof change.position !== 'undefined') {\n element.position = change.position;\n }\n\n if (typeof change.dragging !== 'undefined') {\n element.dragging = change.dragging;\n }\n\n break;\n }\n\n case 'dimensions': {\n if (typeof change.dimensions !== 'undefined') {\n element.measured ??= {};\n element.measured.width = change.dimensions.width;\n element.measured.height = change.dimensions.height;\n\n if (change.setAttributes) {\n element.width = change.dimensions.width;\n element.height = change.dimensions.height;\n }\n }\n\n if (typeof change.resizing === 'boolean') {\n element.resizing = change.resizing;\n }\n\n break;\n }\n }\n}\n\nfunction applyChanges(changes: any[], elements: any[]): any[] {\n const updatedElements: any[] = [];\n // By storing a map of changes for each element, we can a quick lookup as we\n // iterate over the elements array!\n const changesMap = new Map<any, any[]>();\n\n for (const change of changes) {\n if (change.type === 'add') {\n updatedElements.push(change.item);\n continue;\n } else if (change.type === 'remove' || change.type === 'replace') {\n // For a 'remove' change we can safely ignore any other changes queued for\n // the same element, it's going to be removed anyway!\n changesMap.set(change.id, [change]);\n } else {\n const elementChanges = changesMap.get(change.id);\n\n if (elementChanges) {\n // If we have some changes queued already, we can do a mutable update of\n // that array and save ourselves some copying.\n elementChanges.push(change);\n } else {\n changesMap.set(change.id, [change]);\n }\n }\n }\n\n for (const element of elements) {\n const changes = changesMap.get(element.id);\n\n // When there are no changes for an element we can just push it unmodified,\n // no need to copy it.\n if (!changes) {\n updatedElements.push(element);\n continue;\n }\n\n // If we have a 'remove' change queued, it'll be the only change in the array\n if (changes[0].type === 'remove') {\n continue;\n }\n\n if (changes[0].type === 'replace') {\n updatedElements.push({ ...changes[0].item });\n continue;\n }\n\n // For other types of changes, we want to start with a shallow copy of the\n // object so React knows this element has changed. Sequential changes will\n /// each _mutate_ this object, so there's only ever one copy.\n const updatedElement = { ...element };\n\n for (const change of changes) {\n applyChange(change, updatedElement);\n }\n\n updatedElements.push(updatedElement);\n }\n\n return updatedElements;\n}\n\nexport function applyEdgeChanges<EdgeType extends Edge = Edge>(\n changes: EdgeChange<EdgeType>[],\n edges: EdgeType[],\n): EdgeType[] {\n return applyChanges(changes, edges) as EdgeType[];\n}\n\nexport function applyNodeChanges<NodeType extends Node = Node>(\n changes: NodeChange<NodeType>[],\n nodes: NodeType[],\n): NodeType[] {\n return applyChanges(changes, nodes) as NodeType[];\n}\n\nexport function createSelectionChange(\n id: string,\n selected: boolean,\n): NodeSelectionChange | EdgeSelectionChange {\n return {\n id,\n type: 'select',\n selected,\n };\n}\n\nexport function getSelectionChanges(\n items: Map<string, any>,\n selectedIds: Set<string> = new Set(),\n mutateItem = false,\n): NodeSelectionChange[] | EdgeSelectionChange[] {\n const changes: NodeSelectionChange[] | EdgeSelectionChange[] = [];\n\n for (const [id, item] of items) {\n const willBeSelected = selectedIds.has(id);\n\n // we don't want to set all items to selected=false on the first selection\n if (\n !(item.selected === undefined && !willBeSelected) &&\n item.selected !== willBeSelected\n ) {\n if (mutateItem) {\n // this hack is needed for nodes. When the user dragged a node, it's selected.\n // When another node gets dragged, we need to deselect the previous one,\n // in order to have only one selected node at a time - the onNodesChange callback comes too late here :/\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n\n return changes;\n}\n\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Node[] | undefined;\n lookup: NodeLookup<InternalNode<Node>>;\n}): NodeChange[];\nexport function getElementsDiffChanges({\n items,\n lookup,\n}: {\n items: Edge[] | undefined;\n lookup: EdgeLookup;\n}): EdgeChange[];\nexport function getElementsDiffChanges({\n items = [],\n lookup,\n}: {\n items: any[] | undefined;\n lookup: Map<string, any>;\n}): any[] {\n const changes: any[] = [];\n const itemsLookup = new Map<string, any>(\n items.map((item) => [item.id, item]),\n );\n\n for (const item of items) {\n const lookupItem = lookup.get(item.id);\n const storeItem = lookupItem?.internals?.userNode ?? lookupItem;\n\n if (storeItem !== undefined && storeItem !== item) {\n changes.push({ id: item.id, item: item, type: 'replace' });\n }\n\n if (storeItem === undefined) {\n changes.push({ item: item, type: 'add' });\n }\n }\n\n for (const [id] of lookup) {\n const nextNode = itemsLookup.get(id);\n\n if (nextNode === undefined) {\n changes.push({ id, type: 'remove' });\n }\n }\n\n return changes;\n}\n\nexport function elementToRemoveChange<T extends Node | Edge>(\n item: T,\n): NodeRemoveChange | EdgeRemoveChange {\n return {\n id: item.id,\n type: 'remove',\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n boxToRect,\n clampPosition,\n getBoundsOfBoxes,\n getOverlappingArea,\n nodeToRect,\n pointToRendererPoint,\n getViewportForBounds,\n isCoordinateExtent,\n getNodeDimensions,\n nodeToBox,\n} from './general';\n\nimport { errorMessages } from '../constants';\nimport {\n EdgeBase,\n NodeBase,\n InternalNodeBase,\n NodeOrigin,\n XYPosition,\n Rect,\n NodeDragItem,\n Transform,\n FitViewParamsBase,\n FitViewOptionsBase,\n CoordinateExtent,\n NodeLookup,\n OnError,\n OnBeforeDeleteBase,\n} from '../types/system';\n\n/**\n * Test whether an object is useable as an Edge\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Edge\n */\nexport const isEdgeBase = <EdgeType extends EdgeBase = EdgeBase>(\n element: any,\n): element is EdgeType =>\n 'id' in element && 'source' in element && 'target' in element;\n\n/**\n * Test whether an object is useable as a Node\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Node\n */\nexport const isNodeBase = <NodeType extends NodeBase = NodeBase>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'position' in element &&\n !('source' in element) &&\n !('target' in element);\n\nexport const isInternalNodeBase = <\n NodeType extends InternalNodeBase = InternalNodeBase,\n>(\n element: any,\n): element is NodeType =>\n 'id' in element &&\n 'internals' in element &&\n !('source' in element) &&\n !('target' in element);\n\n/**\n * Pass in a node, and get connected nodes where edge.source === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the source is the given node\n */\nexport const getOutgoers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n\n const outgoerIds = new Set();\n edges.forEach((edge) => {\n if (edge.source === node.id) {\n outgoerIds.add(edge.target);\n }\n });\n\n return nodes.filter((n) => outgoerIds.has(n.id));\n};\n\n/**\n * Pass in a node, and get connected nodes where edge.target === node.id\n * @public\n * @param node - The node to get the connected nodes from\n * @param nodes - The array of all nodes\n * @param edges - The array of all edges\n * @returns An array of nodes that are connected over eges where the target is the given node\n */\nexport const getIncomers = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n node: NodeType | { id: string },\n nodes: NodeType[],\n edges: EdgeType[],\n): NodeType[] => {\n if (!node.id) {\n return [];\n }\n const incomersIds = new Set();\n edges.forEach((edge) => {\n if (edge.target === node.id) {\n incomersIds.add(edge.source);\n }\n });\n\n return nodes.filter((n) => incomersIds.has(n.id));\n};\n\nexport const getNodePositionWithOrigin = (\n node: InternalNodeBase | NodeBase,\n nodeOrigin: NodeOrigin = [0, 0],\n): { position: XYPosition; positionAbsolute: XYPosition } => {\n const { width, height } = getNodeDimensions(node);\n const positionAbsolute =\n 'internals' in node ? node.internals.positionAbsolute : node.position;\n const origin = node.origin || nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n\n return {\n position: {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n },\n positionAbsolute: {\n x: positionAbsolute.x - offsetX,\n y: positionAbsolute.y - offsetY,\n },\n };\n};\n\nexport type GetNodesBoundsParams = {\n nodeOrigin?: NodeOrigin;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @public\n * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.\n * @param nodes - Nodes to calculate the bounds for\n * @param params.nodeOrigin - Origin of the nodes: [0, 0] - top left, [0.5, 0.5] - center\n * @returns Bounding box enclosing all nodes\n */\nexport const getNodesBounds = (\n nodes: NodeBase[],\n params: GetNodesBoundsParams = { nodeOrigin: [0, 0] },\n): Rect => {\n if (nodes.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n const box = nodes.reduce(\n (currBox, node) => {\n const nodeBox = nodeToBox(node, params.nodeOrigin);\n return getBoundsOfBoxes(currBox, nodeBox);\n },\n { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity },\n );\n\n return boxToRect(box);\n};\n\nexport type GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin?: NodeOrigin;\n useRelativePosition?: boolean;\n filter?: (node: NodeType) => boolean;\n};\n\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @internal\n */\nexport const getInternalNodesBounds = <\n NodeType extends InternalNodeBase | NodeDragItem,\n>(\n nodeLookup: Map<string, NodeType>,\n params: GetInternalNodesBoundsParams<NodeType> = {\n nodeOrigin: [0, 0],\n },\n): Rect => {\n if (nodeLookup.size === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };\n\n nodeLookup.forEach((node) => {\n if (params.filter == undefined || params.filter(node)) {\n const nodeBox = nodeToBox(node as InternalNodeBase, params.nodeOrigin);\n box = getBoundsOfBoxes(box, nodeBox);\n }\n });\n\n return boxToRect(box);\n};\n\nexport const getNodesInside = <NodeType extends NodeBase = NodeBase>(\n nodes: Map<string, InternalNodeBase<NodeType>>,\n rect: Rect,\n [tx, ty, tScale]: Transform = [0, 0, 1],\n partially = false,\n // set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\n excludeNonSelectableNodes = false,\n nodeOrigin: NodeOrigin = [0, 0],\n): InternalNodeBase<NodeType>[] => {\n const paneRect = {\n ...pointToRendererPoint(rect, [tx, ty, tScale]),\n width: rect.width / tScale,\n height: rect.height / tScale,\n };\n\n const visibleNodes: InternalNodeBase<NodeType>[] = [];\n\n for (const [, node] of nodes) {\n const { measured, selectable = true, hidden = false } = node;\n const width = measured.width ?? node.width ?? node.initialWidth ?? null;\n const height = measured.height ?? node.height ?? node.initialHeight ?? null;\n\n if ((excludeNonSelectableNodes && !selectable) || hidden) {\n continue;\n }\n\n const overlappingArea = getOverlappingArea(\n paneRect,\n nodeToRect(node, nodeOrigin),\n );\n const notInitialized = width === null || height === null;\n\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible =\n notInitialized || partiallyVisible || overlappingArea >= area;\n\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n\n return visibleNodes;\n};\n\n/**\n * Get all connecting edges for a given set of nodes\n * @param nodes - Nodes you want to get the connected edges for\n * @param edges - All edges\n * @returns Array of edges that connect any of the given nodes with each other\n */\nexport const getConnectedEdges = <\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>(\n nodes: NodeType[],\n edges: EdgeType[],\n): EdgeType[] => {\n const nodeIds = new Set();\n nodes.forEach((node) => {\n nodeIds.add(node.id);\n });\n\n return edges.filter(\n (edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target),\n );\n};\n\nexport function fitView<\n Params extends FitViewParamsBase<NodeBase>,\n Options extends FitViewOptionsBase<NodeBase>,\n>(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin = [0, 0],\n }: Params,\n options?: Options,\n) {\n const filteredNodes: InternalNodeBase[] = [];\n const optionNodeIds = options?.nodes\n ? new Set(options.nodes.map((node) => node.id))\n : null;\n\n nodeLookup.forEach((n) => {\n const isVisible =\n n.measured.width &&\n n.measured.height &&\n (options?.includeHiddenNodes || !n.hidden);\n\n if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {\n filteredNodes.push(n);\n }\n });\n\n if (filteredNodes.length > 0) {\n const bounds = getNodesBounds(filteredNodes, { nodeOrigin });\n\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n options?.minZoom ?? minZoom,\n options?.maxZoom ?? maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom.setViewport(viewport, { duration: options?.duration });\n\n return true;\n }\n\n return false;\n}\n\n/**\n * This function clamps the passed extend by the node's width and height.\n * This is needed to prevent the node from being dragged outside of its extent.\n *\n * @param node\n * @param extent\n * @returns\n */\nfunction clampNodeExtent<NodeType extends NodeBase>(\n node: NodeType,\n extent?: CoordinateExtent | 'parent',\n): CoordinateExtent | 'parent' | undefined {\n if (!extent || extent === 'parent') {\n return extent;\n }\n return [\n extent[0],\n [\n extent[1][0] - (node.measured?.width ?? 0),\n extent[1][1] - (node.measured?.height ?? 0),\n ],\n ];\n}\n\n/**\n * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.\n *\n * @internal\n * @returns position, positionAbsolute\n */\nexport function calculateNodePosition<NodeType extends NodeBase>({\n nodeId,\n nextPosition,\n nodeLookup,\n nodeOrigin = [0, 0],\n nodeExtent,\n onError,\n}: {\n nodeId: string;\n nextPosition: XYPosition;\n nodeLookup: NodeLookup<InternalNodeBase<NodeType>>;\n nodeOrigin?: NodeOrigin;\n nodeExtent?: CoordinateExtent;\n onError?: OnError;\n}): { position: XYPosition; positionAbsolute: XYPosition } {\n const node = nodeLookup.get(nodeId)!;\n const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;\n const { x: parentX, y: parentY } = parentNode\n ? getNodePositionWithOrigin(parentNode, parentNode.origin || nodeOrigin)\n .positionAbsolute\n : { x: 0, y: 0 };\n\n let currentExtent = clampNodeExtent(node, node.extent || nodeExtent);\n\n if (node.extent === 'parent' && !node.expandParent) {\n if (!parentNode) {\n onError?.('005', errorMessages['error005']());\n } else {\n const nodeWidth = node.measured.width;\n const nodeHeight = node.measured.height;\n const parentWidth = parentNode.measured.width;\n const parentHeight = parentNode.measured.height;\n\n if (nodeWidth && nodeHeight && parentWidth && parentHeight) {\n const currNodeOrigin = node.origin || nodeOrigin;\n const extentX = parentX + nodeWidth * currNodeOrigin[0];\n const extentY = parentY + nodeHeight * currNodeOrigin[1];\n\n currentExtent = [\n [extentX, extentY],\n [\n extentX + parentWidth - nodeWidth,\n extentY + parentHeight - nodeHeight,\n ],\n ];\n }\n }\n } else if (parentNode && isCoordinateExtent(node.extent)) {\n currentExtent = [\n [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n ];\n }\n\n const positionAbsolute = isCoordinateExtent(currentExtent)\n ? clampPosition(nextPosition, currentExtent)\n : nextPosition;\n\n return {\n position: {\n x: positionAbsolute.x - parentX,\n y: positionAbsolute.y - parentY,\n },\n positionAbsolute,\n };\n}\n\n/**\n * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted\n * @internal\n * @param param.nodesToRemove - The nodes to remove\n * @param param.edgesToRemove - The edges to remove\n * @param param.nodes - All nodes\n * @param param.edges - All edges\n * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted\n * @returns nodes: nodes that can be deleted, edges: edges that can be deleted\n */\nexport async function getElementsToRemove<\n NodeType extends NodeBase = NodeBase,\n EdgeType extends EdgeBase = EdgeBase,\n>({\n nodesToRemove = [],\n edgesToRemove = [],\n nodes,\n edges,\n onBeforeDelete,\n}: {\n nodesToRemove: Partial<NodeType>[];\n edgesToRemove: Partial<EdgeType>[];\n nodes: NodeType[];\n edges: EdgeType[];\n onBeforeDelete?: OnBeforeDeleteBase<NodeType, EdgeType>;\n}): Promise<{\n nodes: NodeType[];\n edges: EdgeType[];\n}> {\n const nodeIds = new Set(nodesToRemove.map((node) => node.id));\n const matchingNodes: NodeType[] = [];\n\n for (const node of nodes) {\n if (node.deletable === false) {\n continue;\n }\n\n const isIncluded = nodeIds.has(node.id);\n const parentHit =\n !isIncluded &&\n node.parentId &&\n matchingNodes.find((n) => n.id === node.parentId);\n\n if (isIncluded || parentHit) {\n matchingNodes.push(node);\n }\n }\n\n const edgeIds = new Set(edgesToRemove.map((edge) => edge.id));\n const deletableEdges = edges.filter((edge) => edge.deletable !== false);\n const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);\n const matchingEdges: EdgeType[] = connectedEdges;\n\n for (const edge of deletableEdges) {\n const isIncluded = edgeIds.has(edge.id);\n\n if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) {\n matchingEdges.push(edge);\n }\n }\n\n if (!onBeforeDelete) {\n return {\n edges: matchingEdges,\n nodes: matchingNodes,\n };\n }\n\n const onBeforeDeleteResult = await onBeforeDelete({\n nodes: matchingNodes,\n edges: matchingEdges,\n });\n\n if (typeof onBeforeDeleteResult === 'boolean') {\n return onBeforeDeleteResult\n ? { edges: matchingEdges, nodes: matchingNodes }\n : { edges: [], nodes: [] };\n }\n\n return onBeforeDeleteResult;\n}\n","import { shallow } from 'zustand/shallow';\n\nimport { useStore } from '../../hooks/useStore';\nimport { InkFlowState } from '../../types';\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n userSelectionRect: s.userSelectionRect,\n});\n\nexport function UserSelection() {\n const { userSelectionActive, userSelectionRect } = useStore(\n selector,\n shallow,\n );\n const isActive = userSelectionActive && userSelectionRect;\n\n if (!isActive) {\n return null;\n }\n\n return (\n <div\n className=\"ink-flow__selection ink-flow__container\"\n style={{\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n }}\n />\n );\n}\n","/**\n * The user selection rectangle gets displayed when a user drags the mouse while pressing shift\n */\n\nimport {\n useRef,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { shallow } from 'zustand/shallow';\nimport cc from 'classnames';\n\nimport { containerStyle } from '../../styles/utils';\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { InkFlowProps, InkFlowState } from '../../types';\nimport { SelectionMode, NodeChange, EdgeChange } from '../../types/system';\nimport { getSelectionChanges } from '../../utils/changes';\nimport { getEventPosition } from '../../utils/dom';\nimport { getNodesInside } from '../../utils/graph';\nimport { UserSelection } from '../../components/UserSelection';\n\ntype PaneProps = {\n isSelecting: boolean;\n children: ReactNode;\n} & Partial<\n Pick<\n InkFlowProps,\n | 'selectionMode'\n | 'panOnDrag'\n | 'onSelectionStart'\n | 'onSelectionEnd'\n | 'onPaneClick'\n | 'onPaneContextMenu'\n | 'onPaneScroll'\n | 'onPaneMouseEnter'\n | 'onPaneMouseMove'\n | 'onPaneMouseLeave'\n >\n>;\n\nconst wrapHandler = (\n handler: React.MouseEventHandler | undefined,\n containerRef: React.MutableRefObject<HTMLDivElement | null>,\n): React.MouseEventHandler => {\n return (event: ReactMouseEvent) => {\n if (event.target !== containerRef.current) {\n return;\n }\n handler?.(event);\n };\n};\n\nconst selector = (s: InkFlowState) => ({\n userSelectionActive: s.userSelectionActive,\n elementsSelectable: s.elementsSelectable,\n dragging: s.paneDragging,\n});\n\nexport function Pane({\n isSelecting,\n selectionMode,\n panOnDrag,\n onSelectionStart,\n onSelectionEnd,\n onPaneClick,\n onPaneContextMenu,\n onPaneScroll,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n children,\n}: PaneProps) {\n const container = useRef<HTMLDivElement | null>(null);\n const store = useStoreApi();\n const prevSelectedNodesCount = useRef<number>(0);\n const prevSelectedEdgesCount = useRef<number>(0);\n const containerBounds = useRef<DOMRect>();\n const edgeIdLookup = useRef<Map<string, Set<string>>>(new Map());\n\n const { userSelectionActive, elementsSelectable, dragging } = useStore(\n selector,\n shallow,\n );\n\n const resetUserSelection = () => {\n store.setState({ userSelectionActive: false, userSelectionRect: null });\n\n prevSelectedNodesCount.current = 0;\n prevSelectedEdgesCount.current = 0;\n };\n\n const onClick = (event: ReactMouseEvent) => {\n onPaneClick?.(event);\n store.getState().resetSelectedElements();\n store.setState({ nodesSelectionActive: false });\n };\n\n const onContextMenu = (event: ReactMouseEvent) => {\n if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n event.preventDefault();\n return;\n }\n\n onPaneContextMenu?.(event);\n };\n\n const onWheel = onPaneScroll\n ? (event: React.WheelEvent) => onPaneScroll(event)\n : undefined;\n\n const onMouseDown = (event: ReactMouseEvent): void => {\n const { resetSelectedElements, domNode, edgeLookup } = store.getState();\n containerBounds.current = domNode?.getBoundingClientRect();\n\n if (\n !elementsSelectable ||\n !isSelecting ||\n event.button !== 0 ||\n event.target !== container.current ||\n !containerBounds.current\n ) {\n return;\n }\n\n edgeIdLookup.current = new Map();\n\n for (const [id, edge] of edgeLookup) {\n edgeIdLookup.current.set(\n edge.source,\n edgeIdLookup.current.get(edge.source)?.add(id) || new Set([id]),\n );\n edgeIdLookup.current.set(\n edge.target,\n edgeIdLookup.current.get(edge.target)?.add(id) || new Set([id]),\n );\n }\n\n const { x, y } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n\n resetSelectedElements();\n\n store.setState({\n userSelectionRect: {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y,\n },\n });\n\n onSelectionStart?.(event);\n };\n\n const onMouseMove = (event: ReactMouseEvent): void => {\n const {\n userSelectionRect,\n edgeLookup,\n transform,\n nodeOrigin,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = store.getState();\n\n if (!isSelecting || !containerBounds.current || !userSelectionRect) {\n return;\n }\n\n const { x: mouseX, y: mouseY } = getEventPosition(\n event.nativeEvent,\n containerBounds.current,\n );\n const { startX, startY } = userSelectionRect;\n\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY),\n };\n\n const selectedNodes = getNodesInside(\n nodeLookup,\n nextUserSelectRect,\n transform,\n false,\n true,\n nodeOrigin,\n );\n\n const selectedEdgeIds = new Set<string>();\n const selectedNodeIds = new Set<string>();\n\n for (const selectedNode of selectedNodes) {\n selectedNodeIds.add(selectedNode.id);\n\n const edgeIds = edgeIdLookup.current.get(selectedNode.id);\n\n if (edgeIds) {\n for (const edgeId of edgeIds) {\n selectedEdgeIds.add(edgeId);\n }\n }\n }\n\n if (prevSelectedNodesCount.current !== selectedNodeIds.size) {\n prevSelectedNodesCount.current = selectedNodeIds.size;\n const changes = getSelectionChanges(\n nodeLookup,\n selectedNodeIds,\n true,\n ) as NodeChange[];\n triggerNodeChanges(changes);\n }\n\n if (prevSelectedEdgesCount.current !== selectedEdgeIds.size) {\n prevSelectedEdgesCount.current = selectedEdgeIds.size;\n const changes = getSelectionChanges(\n edgeLookup,\n selectedEdgeIds,\n ) as EdgeChange[];\n triggerEdgeChanges(changes);\n }\n\n store.setState({\n userSelectionRect: nextUserSelectRect,\n userSelectionActive: true,\n nodesSelectionActive: false,\n });\n };\n\n const onMouseUp = (event: ReactMouseEvent) => {\n if (event.button !== 0) {\n return;\n }\n const { userSelectionRect } = store.getState();\n // We only want to trigger click functions when in selection mode if\n // the user did not move the mouse.\n if (\n !userSelectionActive &&\n userSelectionRect &&\n event.target === container.current\n ) {\n onClick?.(event);\n }\n\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n\n resetUserSelection();\n onSelectionEnd?.(event);\n };\n\n const onMouseLeave = (event: ReactMouseEvent) => {\n if (userSelectionActive) {\n store.setState({\n nodesSelectionActive: prevSelectedNodesCount.current > 0,\n });\n onSelectionEnd?.(event);\n }\n\n resetUserSelection();\n };\n\n const hasActiveSelection =\n elementsSelectable && (isSelecting || userSelectionActive);\n\n return (\n <div\n className={cc([\n 'ink-flow__pane',\n { draggable: panOnDrag, dragging, selection: isSelecting },\n ])}\n onClick={hasActiveSelection ? undefined : wrapHandler(onClick, container)}\n onContextMenu={wrapHandler(onContextMenu, container)}\n onWheel={wrapHandler(onWheel, container)}\n onMouseEnter={hasActiveSelection ? undefined : onPaneMouseEnter}\n onMouseDown={hasActiveSelection ? onMouseDown : undefined}\n onMouseMove={hasActiveSelection ? onMouseMove : onPaneMouseMove}\n onMouseUp={hasActiveSelection ? onMouseUp : undefined}\n onMouseLeave={hasActiveSelection ? onMouseLeave : onPaneMouseLeave}\n ref={container}\n style={containerStyle}\n >\n {children}\n <UserSelection />\n </div>\n );\n}\n","import { memo, type ReactNode } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport { GraphViewProps } from '../GraphView';\nimport { InkFlowState, Node } from '../../types';\nimport { useKeyPress } from '../../hooks/useKeyPress';\nimport { ZoomPane } from '../ZoomPane';\nimport { useGlobalKeyHandler } from '../../hooks/useGlobalKeyHandler';\nimport { Pane } from '../Pane';\n\nexport type FlowRendererProps<NodeType extends Node = Node> = Omit<\n GraphViewProps<NodeType>,\n | 'snapToGrid'\n | 'nodeTypes'\n | 'edgeTypes'\n | 'snapGrid'\n | 'connectionLineType'\n | 'connectionLineContainerStyle'\n | 'arrowHeadColor'\n | 'onlyRenderVisibleElements'\n | 'selectNodesOnDrag'\n | 'defaultMarkerColor'\n | 'rfId'\n | 'nodeOrigin'\n> & {\n isControlledViewport: boolean;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => {\n return {\n nodesSelectionActive: s.nodesSelectionActive,\n userSelectionActive: s.userSelectionActive,\n };\n};\n\nfunction FlowRendererComponent<NodeType extends Node = Node>({\n children,\n onPaneClick,\n onPaneMouseEnter,\n onPaneMouseMove,\n onPaneMouseLeave,\n onPaneContextMenu,\n onPaneScroll,\n deleteKeyCode,\n selectionKeyCode,\n selectionOnDrag,\n selectionMode,\n onSelectionStart,\n onSelectionEnd,\n multiSelectionKeyCode,\n panActivationKeyCode,\n zoomActivationKeyCode,\n elementsSelectable,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll: _panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag: _panOnDrag,\n defaultViewport,\n translateExtent,\n minZoom,\n maxZoom,\n preventScrolling,\n onSelectionContextMenu,\n noWheelClassName,\n noPanClassName,\n disableKeyboardA11y,\n onViewportChange,\n isControlledViewport,\n}: FlowRendererProps<NodeType>) {\n const { nodesSelectionActive, userSelectionActive } = useStore(selector);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const panActivationKeyPressed = useKeyPress(panActivationKeyCode);\n\n const panOnDrag = panActivationKeyPressed || _panOnDrag;\n const panOnScroll = panActivationKeyPressed || _panOnScroll;\n const isSelecting =\n selectionKeyPressed ||\n userSelectionActive ||\n (selectionOnDrag && panOnDrag !== true);\n\n useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n\n return (\n <ZoomPane\n onPaneContextMenu={onPaneContextMenu}\n elementsSelectable={elementsSelectable}\n zoomOnScroll={zoomOnScroll}\n zoomOnPinch={zoomOnPinch}\n panOnScroll={panOnScroll}\n panOnScrollSpeed={panOnScrollSpeed}\n panOnScrollMode={panOnScrollMode}\n zoomOnDoubleClick={zoomOnDoubleClick}\n panOnDrag={!selectionKeyPressed && panOnDrag}\n defaultViewport={defaultViewport}\n translateExtent={translateExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n zoomActivationKeyCode={zoomActivationKeyCode}\n preventScrolling={preventScrolling}\n noWheelClassName={noWheelClassName}\n noPanClassName={noPanClassName}\n onViewportChange={onViewportChange}\n isControlledViewport={isControlledViewport}\n >\n <Pane\n onSelectionStart={onSelectionStart}\n onSelectionEnd={onSelectionEnd}\n onPaneClick={onPaneClick}\n onPaneMouseEnter={onPaneMouseEnter}\n onPaneMouseMove={onPaneMouseMove}\n onPaneMouseLeave={onPaneMouseLeave}\n onPaneContextMenu={onPaneContextMenu}\n onPaneScroll={onPaneScroll}\n panOnDrag={panOnDrag}\n isSelecting={!!isSelecting}\n selectionMode={selectionMode}\n >\n {children}\n {/* {nodesSelectionActive && (\n <NodesSelection\n onSelectionContextMenu={onSelectionContextMenu}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n />\n )} */}\n </Pane>\n </ZoomPane>\n );\n}\n\nFlowRendererComponent.displayName = 'FlowRenderer';\n\nexport const FlowRenderer = memo(\n FlowRendererComponent,\n) as typeof FlowRendererComponent;\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyEdgeChanges } from '../utils/changes';\nimport { Edge, OnEdgesChange } from '../types';\n\nexport function useEdgesState<EdgeType extends Edge = Edge>(\n initialEdges: EdgeType[],\n): [EdgeType[], Dispatch<SetStateAction<EdgeType[]>>, OnEdgesChange<EdgeType>] {\n const [edges, setEdges] = useState(initialEdges);\n const onEdgesChange: OnEdgesChange<EdgeType> = useCallback(\n (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),\n [],\n );\n\n return [edges, setEdges, onEdgesChange];\n}\n","import {\n useState,\n useCallback,\n type Dispatch,\n type SetStateAction,\n} from 'react';\nimport { applyNodeChanges } from '../utils/changes';\nimport { Node, OnNodesChange } from '../types';\n\nexport function useNodesState<NodeType extends Node>(\n initialNodes: NodeType[],\n): [NodeType[], Dispatch<SetStateAction<NodeType[]>>, OnNodesChange<NodeType>] {\n const [nodes, setNodes] = useState(initialNodes);\n const onNodesChange: OnNodesChange<NodeType> = useCallback(\n (changes) => setNodes((nds) => applyNodeChanges(changes, nds)),\n [],\n );\n\n return [nodes, setNodes, onNodesChange];\n}\n","import { useEffect, useLayoutEffect } from 'react';\n\n// we need this hook to prevent a warning when using ink-flow in SSR\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useState } from 'react';\n\nimport { Queue, QueueItem } from './types';\nimport { useIsomorphicLayoutEffect } from '../../hooks/useIsomorphicLayoutEffect';\n\n/**\n * This hook returns a queue that can be used to batch updates.\n *\n * @param runQueue - a function that gets called when the queue is flushed\n * @internal\n *\n * @returns a Queue object\n */\nexport function useQueue<T>(runQueue: (items: QueueItem<T>[]) => void) {\n // Because we're using a ref above, we need some way to let React know when to\n // actually process the queue. We flip this bit of state to `true` any time we\n // mutate the queue and then flip it back to `false` after flushing the queue.\n const [shouldFlush, setShouldFlush] = useState(false);\n\n // A reference of all the batched updates to process before the next render. We\n // want a reference here so multiple synchronous calls to `setNodes` etc can be\n // batched together.\n const [queue] = useState(() => createQueue<T>(() => setShouldFlush(true)));\n\n // Layout effects are guaranteed to run before the next render which means we\n // shouldn't run into any issues with stale state or weird issues that come from\n // rendering things one frame later than expected (we used to use `setTimeout`).\n useIsomorphicLayoutEffect(() => {\n // Because we need to flip the state back to false after flushing, this should\n // trigger the hook again (!). If the hook is being run again we know that any\n // updates should have been processed by now and we can safely clear the queue\n // and bail early.\n if (!shouldFlush) {\n queue.reset();\n return;\n }\n\n const queueItems = queue.get();\n\n if (queueItems.length) {\n runQueue(queueItems);\n\n queue.reset();\n }\n\n // Beacuse we're using reactive state to trigger this effect, we need to flip\n // it back to false.\n setShouldFlush(false);\n }, [shouldFlush]);\n\n return queue;\n}\n\nfunction createQueue<T>(cb: () => void): Queue<T> {\n let queue: QueueItem<T>[] = [];\n\n return {\n get: () => queue,\n reset: () => {\n queue = [];\n },\n push: (item) => {\n queue.push(item);\n cb();\n },\n };\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\n\nimport { useStoreApi } from '../../hooks/useStore';\nimport { Queue, QueueItem } from './types';\nimport type { Edge, Node } from '../../types';\nimport { useQueue } from './useQueue';\nimport { NodeChange, EdgeChange } from '../../types/system';\nimport { getElementsDiffChanges } from '../../utils/changes';\n\nconst BatchContext = createContext<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeQueue: Queue<any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n edgeQueue: Queue<any>;\n} | null>(null);\n\n/**\n * This is a context provider that holds and processes the node and edge update queues\n * that are needed to handle setNodes, addNodes, setEdges and addEdges.\n *\n * @internal\n */\nexport function BatchProvider<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({ children }: { children: ReactNode }) {\n const store = useStoreApi<NodeType, EdgeType>();\n\n const nodeQueueHandler = useCallback((queueItems: QueueItem<NodeType>[]) => {\n const {\n nodes = [],\n setNodes,\n hasDefaultNodes,\n onNodesChange,\n nodeLookup,\n } = store.getState();\n\n // This is essentially an `Array.reduce` in imperative clothing. Processing\n // this queue is a relatively hot path so we'd like to avoid the overhead of\n // array methods where we can.\n let next = nodes as NodeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultNodes) {\n setNodes(next);\n } else if (onNodesChange) {\n onNodesChange(\n getElementsDiffChanges({\n items: next,\n lookup: nodeLookup,\n }) as NodeChange<NodeType>[],\n );\n }\n }, []);\n const nodeQueue = useQueue<NodeType>(nodeQueueHandler);\n\n const edgeQueueHandler = useCallback((queueItems: QueueItem<EdgeType>[]) => {\n const {\n edges = [],\n setEdges,\n hasDefaultEdges,\n onEdgesChange,\n edgeLookup,\n } = store.getState();\n\n let next = edges as EdgeType[];\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n\n if (hasDefaultEdges) {\n setEdges(next);\n } else if (onEdgesChange) {\n onEdgesChange(\n getElementsDiffChanges({\n items: next,\n lookup: edgeLookup,\n }) as EdgeChange<EdgeType>[],\n );\n }\n }, []);\n const edgeQueue = useQueue<EdgeType>(edgeQueueHandler);\n\n const value = useMemo(() => ({ nodeQueue, edgeQueue }), []);\n\n return (\n <BatchContext.Provider value={value}>{children}</BatchContext.Provider>\n );\n}\n\nexport function useBatchContext() {\n const batchContext = useContext(BatchContext);\n\n if (!batchContext) {\n throw new Error('useBatchContext must be used within a BatchProvider');\n }\n\n return batchContext;\n}\n","import { useMemo } from 'react';\n\nimport { useStoreApi } from '../hooks/useStore';\nimport { ViewportHelperFunctions } from '../types';\nimport { XYPosition } from '../types/system';\nimport {\n getViewportForBounds,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../utils/general';\nimport { fitView } from '../utils/graph';\n\n/**\n * Hook for getting viewport helper functions.\n *\n * @internal\n * @returns viewport helper functions\n */\nconst useViewportHelper = (): ViewportHelperFunctions => {\n const store = useStoreApi();\n\n return useMemo<ViewportHelperFunctions>(() => {\n return {\n zoomIn: (options) =>\n store.getState().panZoom?.scaleBy(1.2, { duration: options?.duration }),\n zoomOut: (options) =>\n store\n .getState()\n .panZoom?.scaleBy(1 / 1.2, { duration: options?.duration }),\n zoomTo: (zoomLevel, options) =>\n store\n .getState()\n .panZoom?.scaleTo(zoomLevel, { duration: options?.duration }),\n getZoom: () => store.getState().transform[2],\n setViewport: (viewport, options) => {\n const {\n transform: [tX, tY, tZoom],\n panZoom,\n } = store.getState();\n\n panZoom?.setViewport(\n {\n x: viewport.x ?? tX,\n y: viewport.y ?? tY,\n zoom: viewport.zoom ?? tZoom,\n },\n { duration: options?.duration },\n );\n },\n getViewport: () => {\n const [x, y, zoom] = store.getState().transform;\n return { x, y, zoom };\n },\n fitView: (options) => {\n const {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n } = store.getState();\n\n return panZoom\n ? fitView(\n {\n nodeLookup,\n width,\n height,\n nodeOrigin,\n minZoom,\n maxZoom,\n panZoom,\n },\n options,\n )\n : false;\n },\n setCenter: (x, y, options) => {\n const { width, height, maxZoom, panZoom } = store.getState();\n const nextZoom =\n typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n const centerX = width / 2 - x * nextZoom;\n const centerY = height / 2 - y * nextZoom;\n\n panZoom?.setViewport(\n {\n x: centerX,\n y: centerY,\n zoom: nextZoom,\n },\n { duration: options?.duration },\n );\n },\n fitBounds: (bounds, options) => {\n const { width, height, minZoom, maxZoom, panZoom } = store.getState();\n const viewport = getViewportForBounds(\n bounds,\n width,\n height,\n minZoom,\n maxZoom,\n options?.padding ?? 0.1,\n );\n\n panZoom?.setViewport(viewport, { duration: options?.duration });\n },\n screenToFlowPosition: (\n clientPosition: XYPosition,\n options: { snapToGrid: boolean } = { snapToGrid: true },\n ) => {\n const { transform, snapGrid, domNode } = store.getState();\n\n if (!domNode) {\n return clientPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n\n const correctedPosition = {\n x: clientPosition.x - domX,\n y: clientPosition.y - domY,\n };\n\n return pointToRendererPoint(\n correctedPosition,\n transform,\n options.snapToGrid,\n snapGrid,\n );\n },\n flowToScreenPosition: (flowPosition: XYPosition) => {\n const { transform, domNode } = store.getState();\n\n if (!domNode) {\n return flowPosition;\n }\n\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const rendererPosition = rendererPointToPoint(flowPosition, transform);\n\n return {\n x: rendererPosition.x + domX,\n y: rendererPosition.y + domY,\n };\n },\n };\n }, []);\n};\n\nexport default useViewportHelper;\n","import { useMemo } from 'react';\n\nimport { useStore, useStoreApi } from './useStore';\nimport { useBatchContext } from '../components/BatchProvider';\nimport useViewportHelper from './useViewportHelper';\nimport { Node, Edge, InkFlowState, InternalNode } from '../types';\nimport { Rect, EdgeRemoveChange, NodeRemoveChange } from '../types/system';\nimport {\n nodeToRect,\n getOverlappingArea,\n isNode,\n evaluateAbsolutePosition,\n isRectObject,\n} from '../utils/general';\nimport { getElementsToRemove } from '../utils/graph';\nimport { GeneralHelpers, InkFlowInstance } from '../types/instance';\nimport { elementToRemoveChange } from '../utils/changes';\n\nconst selector = (s: InkFlowState) => !!s.panZoom;\n\n/**\n * Hook for accessing the ReactFlow instance.\n *\n * @public\n * @returns ReactFlowInstance\n */\nexport function useInkFlow<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(): InkFlowInstance<NodeType, EdgeType> {\n const viewportHelper = useViewportHelper();\n const store = useStoreApi();\n const batchContext = useBatchContext();\n const viewportInitialized = useStore(selector);\n\n const generalHelper = useMemo<GeneralHelpers<NodeType, EdgeType>>(() => {\n const getInternalNode: GeneralHelpers<\n NodeType,\n EdgeType\n >['getInternalNode'] = (id) =>\n store.getState().nodeLookup.get(id) as InternalNode<NodeType>;\n\n const setNodes: GeneralHelpers<NodeType, EdgeType>['setNodes'] = (\n payload,\n ) => {\n batchContext.nodeQueue.push(payload as NodeType[]);\n };\n\n const getNodeRect = (node: NodeType | { id: string }): Rect | null => {\n const { nodeLookup, nodeOrigin } = store.getState();\n\n const nodeToUse = isNode<NodeType>(node)\n ? node\n : nodeLookup.get(node.id)!;\n const position = nodeToUse.parentId\n ? evaluateAbsolutePosition(\n nodeToUse.position,\n nodeToUse.parentId,\n nodeLookup,\n nodeOrigin,\n )\n : nodeToUse.position;\n\n const nodeWithPosition = {\n id: nodeToUse.id,\n position,\n width: nodeToUse.measured?.width ?? nodeToUse.width,\n height: nodeToUse.measured?.height ?? nodeToUse.height,\n data: nodeToUse.data,\n };\n\n return nodeToRect(nodeWithPosition);\n };\n\n const updateNode: GeneralHelpers<NodeType, EdgeType>['updateNode'] = (\n id,\n nodeUpdate,\n options = { replace: false },\n ) => {\n setNodes((prevNodes) =>\n prevNodes.map((node) => {\n if (node.id === id) {\n const nextNode =\n typeof nodeUpdate === 'function'\n ? nodeUpdate(node as NodeType)\n : nodeUpdate;\n return options.replace && isNode(nextNode)\n ? (nextNode as NodeType)\n : { ...node, ...nextNode };\n }\n\n return node;\n }),\n );\n };\n\n return {\n getNodes: () =>\n store.getState().nodes.map((n) => ({ ...n })) as NodeType[],\n getNode: (id) => getInternalNode(id)?.internals.userNode as NodeType,\n getInternalNode,\n getEdges: () => {\n const { edges = [] } = store.getState();\n return edges.map((e) => ({ ...e })) as EdgeType[];\n },\n getEdge: (id) => store.getState().edgeLookup.get(id) as EdgeType,\n setNodes,\n setEdges: (payload) => {\n batchContext.edgeQueue.push(payload as EdgeType[]);\n },\n addNodes: (payload) => {\n const newNodes = Array.isArray(payload) ? payload : [payload];\n batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]);\n },\n addEdges: (payload) => {\n const newEdges = Array.isArray(payload) ? payload : [payload];\n batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]);\n },\n toObject: () => {\n const { nodes = [], edges = [], transform } = store.getState();\n const [x, y, zoom] = transform;\n return {\n nodes: nodes.map((n) => ({ ...n })) as NodeType[],\n edges: edges.map((e) => ({ ...e })) as EdgeType[],\n viewport: {\n x,\n y,\n zoom,\n },\n };\n },\n deleteElements: async ({\n nodes: nodesToRemove = [],\n edges: edgesToRemove = [],\n }) => {\n const {\n nodes,\n edges,\n onNodesDelete,\n onEdgesDelete,\n triggerNodeChanges,\n triggerEdgeChanges,\n onDelete,\n onBeforeDelete,\n } = store.getState();\n const { nodes: matchingNodes, edges: matchingEdges } =\n await getElementsToRemove({\n nodesToRemove,\n edgesToRemove,\n nodes,\n edges,\n onBeforeDelete,\n });\n\n const hasMatchingEdges = matchingEdges.length > 0;\n const hasMatchingNodes = matchingNodes.length > 0;\n\n if (hasMatchingEdges) {\n const edgeChanges: EdgeRemoveChange[] = matchingEdges.map(\n elementToRemoveChange,\n );\n\n onEdgesDelete?.(matchingEdges);\n triggerEdgeChanges(edgeChanges);\n }\n\n if (hasMatchingNodes) {\n const nodeChanges: NodeRemoveChange[] = matchingNodes.map(\n elementToRemoveChange,\n );\n\n onNodesDelete?.(matchingNodes);\n triggerNodeChanges(nodeChanges);\n }\n\n if (hasMatchingNodes || hasMatchingEdges) {\n onDelete?.({ nodes: matchingNodes, edges: matchingEdges });\n }\n\n return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };\n },\n getIntersectingNodes: (nodeOrRect, partially = true, nodes) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n const hasNodesOption = nodes !== undefined;\n\n if (!nodeRect) {\n return [];\n }\n\n return (nodes || store.getState().nodes).filter((n) => {\n const internalNode = store.getState().nodeLookup.get(n.id);\n\n if (\n internalNode &&\n !isRect &&\n (n.id === nodeOrRect!.id ||\n !internalNode.internals.positionAbsolute)\n ) {\n return false;\n }\n\n const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode!);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n }) as NodeType[];\n },\n isNodeIntersecting: (nodeOrRect, area, partially = true) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n\n if (!nodeRect) {\n return false;\n }\n\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n\n return (\n partiallyVisible ||\n overlappingArea >= nodeRect.width * nodeRect.height\n );\n },\n updateNode,\n updateNodeData: (id, dataUpdate, options = { replace: false }) => {\n updateNode(\n id,\n (node) => {\n const nextData =\n typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate;\n return options.replace\n ? { ...node, data: nextData }\n : { ...node, data: { ...node.data, ...nextData } };\n },\n options,\n );\n },\n };\n }, []);\n\n return useMemo(() => {\n return {\n ...generalHelper,\n ...viewportHelper,\n viewportInitialized,\n };\n }, [viewportInitialized]);\n}\n","import { useEffect, useState } from 'react';\n\nimport { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { InternalNodeUpdate } from '../../types/system';\n\nconst selector = (s: InkFlowState) => s.updateNodeInternals;\n\nexport function useResizeObserver() {\n const updateNodeInternals = useStore(selector);\n const [resizeObserver] = useState(() => {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n\n return new ResizeObserver((entries: ResizeObserverEntry[]) => {\n const updates = new Map<string, InternalNodeUpdate>();\n entries.forEach((entry: ResizeObserverEntry) => {\n const id = entry.target.getAttribute('data-id') as string;\n updates.set(id, {\n id,\n nodeElement: entry.target as HTMLDivElement,\n });\n });\n\n updateNodeInternals(updates);\n });\n });\n\n useEffect(() => {\n return () => {\n resizeObserver?.disconnect();\n };\n }, [resizeObserver]);\n\n return resizeObserver;\n}\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport type { Node, InkFlowState } from '../types';\nimport { getNodesInside } from '../utils/graph';\n\nconst selector = (onlyRenderVisible: boolean) => (s: InkFlowState) => {\n return onlyRenderVisible\n ? getNodesInside<Node>(\n s.nodeLookup,\n { x: 0, y: 0, width: s.width, height: s.height },\n s.transform,\n true,\n ).map((node) => node.id)\n : Array.from(s.nodeLookup.keys());\n};\n\n/**\n * Hook for getting the visible node ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible node ids\n */\nexport function useVisibleNodeIds(onlyRenderVisible: boolean) {\n const nodeIds = useStore(\n useCallback(selector(onlyRenderVisible), [onlyRenderVisible]),\n shallow,\n );\n\n return nodeIds;\n}\n","import { createContext, useContext } from 'react';\n\nexport const NodeIdContext = createContext<string | null>(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nexport const useNodeId = (): string | null => {\n const nodeId = useContext(NodeIdContext);\n return nodeId;\n};\n\nexport default NodeIdContext;\n","import { CSSProperties } from 'react';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\n\nconst style: CSSProperties = { display: 'none' };\nconst ariaLiveStyle: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0px, 0px, 0px, 0px)',\n clipPath: 'inset(100%)',\n};\n\nexport const ARIA_NODE_DESC_KEY = 'ink-flow__node-desc';\nexport const ARIA_EDGE_DESC_KEY = 'ink-flow__edge-desc';\nexport const ARIA_LIVE_MESSAGE = 'ink-flow__aria-live';\n\nconst selector = (s: InkFlowState) => s.ariaLiveMessage;\n\nfunction AriaLiveMessage({ rfId }: { rfId: string }) {\n const ariaLiveMessage = useStore(selector);\n\n return (\n <div\n id={`${ARIA_LIVE_MESSAGE}-${rfId}`}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n style={ariaLiveStyle}\n >\n {ariaLiveMessage}\n </div>\n );\n}\n\nexport function A11yDescriptions({\n rfId,\n disableKeyboardA11y,\n}: {\n rfId: string;\n disableKeyboardA11y: boolean;\n}) {\n return (\n <>\n <div id={`${ARIA_NODE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select a node.\n {!disableKeyboardA11y &&\n 'You can then use the arrow keys to move the node around.'}{' '}\n Press delete to remove it and escape to cancel.{' '}\n </div>\n <div id={`${ARIA_EDGE_DESC_KEY}-${rfId}`} style={style}>\n Press enter or space to select an edge. You can then press delete to\n remove it or escape to cancel.\n </div>\n {!disableKeyboardA11y && <AriaLiveMessage rfId={rfId} />}\n </>\n );\n}\n","import { Position } from '../../types/system';\n\nexport type GetBezierPathParams = {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n curvature?: number;\n};\n\nexport type GetControlWithCurvatureParams = {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n c: number;\n};\n\nexport function getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourceControlX: number;\n sourceControlY: number;\n targetControlX: number;\n targetControlY: number;\n}): [number, number, number, number] {\n // cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n // https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n const centerX =\n sourceX * 0.125 +\n sourceControlX * 0.375 +\n targetControlX * 0.375 +\n targetX * 0.125;\n const centerY =\n sourceY * 0.125 +\n sourceControlY * 0.375 +\n targetControlY * 0.375 +\n targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n\n return [centerX, centerY, offsetX, offsetY];\n}\n\nfunction calculateControlOffset(distance: number, curvature: number): number {\n if (distance >= 0) {\n return 0.5 * distance;\n }\n\n return curvature * 25 * Math.sqrt(-distance);\n}\n\nfunction getControlWithCurvature({\n pos,\n x1,\n y1,\n x2,\n y2,\n c,\n}: GetControlWithCurvatureParams): [number, number] {\n switch (pos) {\n case Position.Left:\n return [x1 - calculateControlOffset(x1 - x2, c), y1];\n case Position.Right:\n return [x1 + calculateControlOffset(x2 - x1, c), y1];\n case Position.Top:\n return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n case Position.Bottom:\n return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n }\n}\n\n/**\n * Get a bezier path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @param params.curvature - The curvature of the bezier edge\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n});\n */\nexport function getBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25,\n}: GetBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature,\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n","import { errorMessages } from '../../constants';\nimport {\n Connection,\n EdgeBase,\n InternalNodeBase,\n Transform,\n} from '../../types/system';\nimport {\n getOverlappingArea,\n boxToRect,\n nodeToBox,\n getBoundsOfBoxes,\n devWarn,\n} from '../general';\nimport { isEdgeBase } from '../graph';\n\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nexport function getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n}): [number, number, number, number] {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return [centerX, centerY, xOffset, yOffset];\n}\n\nexport type GetEdgeZIndexParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n selected?: boolean;\n zIndex?: number;\n elevateOnSelect?: boolean;\n};\n\nexport function getElevatedEdgeZIndex({\n sourceNode,\n targetNode,\n selected = false,\n zIndex = 0,\n elevateOnSelect = false,\n}: GetEdgeZIndexParams): number {\n if (!elevateOnSelect) {\n return zIndex;\n }\n\n const edgeOrConnectedNodeSelected =\n selected || targetNode.selected || sourceNode.selected;\n const selectedZIndex = Math.max(\n sourceNode.internals.z || 0,\n targetNode.internals.z || 0,\n 1000,\n );\n\n return zIndex + (edgeOrConnectedNodeSelected ? selectedZIndex : 0);\n}\n\ntype IsEdgeVisibleParams = {\n sourceNode: InternalNodeBase;\n targetNode: InternalNodeBase;\n width: number;\n height: number;\n transform: Transform;\n};\n\nexport function isEdgeVisible({\n sourceNode,\n targetNode,\n width,\n height,\n transform,\n}: IsEdgeVisibleParams): boolean {\n const edgeBox = getBoundsOfBoxes(\n nodeToBox(sourceNode),\n nodeToBox(targetNode),\n );\n\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n\n const viewRect = {\n x: -transform[0] / transform[2],\n y: -transform[1] / transform[2],\n width: width / transform[2],\n height: height / transform[2],\n };\n\n return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;\n}\n\nconst getEdgeId = ({\n source,\n sourceHandle,\n target,\n targetHandle,\n}: Connection | EdgeBase): string =>\n `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\n\nconst connectionExists = (edge: EdgeBase, edges: EdgeBase[]) => {\n return edges.some(\n (el) =>\n el.source === edge.source &&\n el.target === edge.target &&\n (el.sourceHandle === edge.sourceHandle ||\n (!el.sourceHandle && !edge.sourceHandle)) &&\n (el.targetHandle === edge.targetHandle ||\n (!el.targetHandle && !edge.targetHandle)),\n );\n};\n\n/**\n * This util is a convenience function to add a new Edge to an array of edges\n * @remarks It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.\n * @public\n * @param edgeParams - Either an Edge or a Connection you want to add\n * @param edges - The array of all current edges\n * @returns A new array of edges with the new edge added\n */\nexport const addEdge = <EdgeType extends EdgeBase>(\n edgeParams: EdgeType | Connection,\n edges: EdgeType[],\n): EdgeType[] => {\n if (!edgeParams.source || !edgeParams.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n let edge: EdgeType;\n if (isEdgeBase(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams),\n } as EdgeType;\n }\n\n if (connectionExists(edge, edges)) {\n return edges;\n }\n\n if (edge.sourceHandle === null) {\n delete edge.sourceHandle;\n }\n\n if (edge.targetHandle === null) {\n delete edge.targetHandle;\n }\n\n return edges.concat(edge);\n};\n\nexport type UpdateEdgeOptions = {\n shouldReplaceId?: boolean;\n};\n\n/**\n * A handy utility to update an existing Edge with new properties\n * @param oldEdge - The edge you want to update\n * @param newConnection - The new connection you want to update the edge with\n * @param edges - The array of all current edges\n * @param options.shouldReplaceId - should the id of the old edge be replaced with the new connection id\n * @returns the updated edges array\n */\nexport const updateEdge = <EdgeType extends EdgeBase>(\n oldEdge: EdgeType,\n newConnection: Connection,\n edges: EdgeType[],\n options: UpdateEdgeOptions = { shouldReplaceId: true },\n): EdgeType[] => {\n const { id: oldEdgeId, ...rest } = oldEdge;\n\n if (!newConnection.source || !newConnection.target) {\n devWarn('006', errorMessages['error006']());\n\n return edges;\n }\n\n const foundEdge = edges.find((e) => e.id === oldEdge.id) as EdgeType;\n\n if (!foundEdge) {\n devWarn('007', errorMessages['error007'](oldEdgeId));\n\n return edges;\n }\n\n // Remove old edge and create the new edge with parameters of old edge.\n const edge = {\n ...rest,\n id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle,\n } as EdgeType;\n\n return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n","import { Position, XYPosition } from '../../types/system';\nimport { getEdgeCenter } from './general';\n\nexport interface GetSmoothStepPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n borderRadius?: number;\n centerX?: number;\n centerY?: number;\n offset?: number;\n}\n\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 },\n};\n\nconst getDirection = ({\n source,\n sourcePosition = Position.Bottom,\n target,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n}): XYPosition => {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\n\nconst distance = (a: XYPosition, b: XYPosition) =>\n Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n\n// ith this function we try to mimic a orthogonal edge routing behaviour\n// It's not as good as a real orthogonal edge routing but it's faster and good enough as a default for step and smooth step edges\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset,\n}: {\n source: XYPosition;\n sourcePosition: Position;\n target: XYPosition;\n targetPosition: Position;\n center: Partial<XYPosition>;\n offset: number;\n}): [XYPosition[], number, number, number, number] {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped: XYPosition = {\n x: source.x + sourceDir.x * offset,\n y: source.y + sourceDir.y * offset,\n };\n const targetGapped: XYPosition = {\n x: target.x + targetDir.x * offset,\n y: target.y + targetDir.y * offset,\n };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped,\n });\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[dirAccessor];\n\n let points: XYPosition[] = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] =\n getEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n });\n\n // opposite handle positions, default case\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n // --->\n // |\n // >---\n const verticalSplit: XYPosition[] = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n // |\n // ---\n // |\n const horizontalSplit: XYPosition[] = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n // sourceTarget means we take x from source and y from target, targetSource is the opposite\n const sourceTarget: XYPosition[] = [\n { x: sourceGapped.x, y: targetGapped.y },\n ];\n const targetSource: XYPosition[] = [\n { x: targetGapped.x, y: sourceGapped.y },\n ];\n // this handles edges with same handle positions\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n\n // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] =\n (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) *\n gapOffset;\n } else {\n targetGapOffset[dirAccessor] =\n (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) *\n gapOffset;\n }\n }\n }\n\n // these are conditions for handling mixed handle positions like Right -> Bottom for example\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir =\n sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo =\n sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo =\n sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget =\n (sourceDir[dirAccessor] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) ||\n (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[dirAccessor] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) ||\n (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n\n const sourceGapPoint = {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n };\n const targetGapPoint = {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n };\n const maxXDistance = Math.max(\n Math.abs(sourceGapPoint.x - points[0].x),\n Math.abs(targetGapPoint.x - points[0].x),\n );\n const maxYDistance = Math.max(\n Math.abs(sourceGapPoint.y - points[0].y),\n Math.abs(targetGapPoint.y - points[0].y),\n );\n\n // we want to place the label on the longest segment of the edge\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n\n const pathPoints = [\n source,\n {\n x: sourceGapped.x + sourceGapOffset.x,\n y: sourceGapped.y + sourceGapOffset.y,\n },\n ...points,\n {\n x: targetGapped.x + targetGapOffset.x,\n y: targetGapped.y + targetGapOffset.y,\n },\n target,\n ];\n\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\n\nfunction getBend(\n a: XYPosition,\n b: XYPosition,\n c: XYPosition,\n size: number,\n): string {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n\n // no bend\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${x} ${y}`;\n }\n\n // first segment is horizontal\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${\n y + bendSize * yDir\n }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\n\n/**\n * Get a smooth step path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.sourcePosition - The position of the source handle (default: Position.Bottom)\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @param params.targetPosition - The position of the target handle (default: Position.Top)\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20,\n}: GetSmoothStepPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset,\n });\n\n const path = points.reduce<string>((res, p, i) => {\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`;\n }\n\n res += segment;\n\n return res;\n }, '');\n\n return [path, labelX, labelY, offsetX, offsetY];\n}\n","// this functions collects all handles and adds an absolute position\n\nimport {\n InternalNodeBase,\n NodeHandleBounds,\n HandleType,\n ConnectionHandle,\n XYPosition,\n NodeLookup,\n ConnectionStatus,\n} from '../../types/system';\n\n// so that we can later find the closest handle to the mouse position\nexport function getHandles(\n node: InternalNodeBase,\n handleBounds: NodeHandleBounds,\n type: HandleType,\n currentHandle: string,\n): ConnectionHandle[] {\n return (handleBounds[type] || []).reduce<ConnectionHandle[]>((res, h) => {\n if (`${node.id}-${h.id}-${type}` !== currentHandle) {\n res.push({\n id: h.id || null,\n type,\n nodeId: node.id,\n x: node.internals.positionAbsolute.x + h.x + h.width / 2,\n y: node.internals.positionAbsolute.y + h.y + h.height / 2,\n });\n }\n return res;\n }, []);\n}\n\nexport function getClosestHandle(\n pos: XYPosition,\n connectionRadius: number,\n handles: ConnectionHandle[],\n): ConnectionHandle | null {\n let closestHandles: ConnectionHandle[] = [];\n let minDistance = Infinity;\n\n for (const handle of handles) {\n const distance = Math.sqrt(\n Math.pow(handle.x - pos.x, 2) + Math.pow(handle.y - pos.y, 2),\n );\n if (distance <= connectionRadius) {\n if (distance < minDistance) {\n closestHandles = [handle];\n } else if (distance === minDistance) {\n // when multiple handles are on the same distance we collect all of them\n closestHandles.push(handle);\n }\n minDistance = distance;\n }\n }\n\n if (!closestHandles.length) {\n return null;\n }\n\n return closestHandles.length === 1\n ? closestHandles[0]\n : // if multiple handles are layouted on top of each other we take the one with type = target because it's more likely that the user wants to connect to this one\n closestHandles.find((handle) => handle.type === 'target') ||\n closestHandles[0];\n}\n\ntype GetHandleLookupParams = {\n nodeLookup: NodeLookup;\n nodeId: string;\n handleId: string | null;\n handleType: string;\n};\n\nexport function getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n}: GetHandleLookupParams): ConnectionHandle[] {\n const connectionHandles: ConnectionHandle[] = [];\n\n for (const [, node] of nodeLookup) {\n if (node.internals.handleBounds) {\n const id = `${nodeId}-${handleId}-${handleType}`;\n const sourceHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'source',\n id,\n );\n const targetHandles = getHandles(\n node,\n node.internals.handleBounds,\n 'target',\n id,\n );\n connectionHandles.push(...sourceHandles, ...targetHandles);\n }\n }\n\n return connectionHandles;\n}\n\nexport function getHandleType(\n edgeUpdaterType: HandleType | undefined,\n handleDomNode: Element | null,\n): HandleType | null {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode?.classList.contains('target')) {\n return 'target';\n } else if (handleDomNode?.classList.contains('source')) {\n return 'source';\n }\n\n return null;\n}\n\nexport function getConnectionStatus(\n isInsideConnectionRadius: boolean,\n isHandleValid: boolean,\n) {\n let connectionStatus = null;\n\n if (isHandleValid) {\n connectionStatus = 'valid';\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = 'invalid';\n }\n\n return connectionStatus as ConnectionStatus;\n}\n","import { IsValidConnection } from '../../types';\nimport {\n ConnectionMode,\n NodeLookup,\n HandleType,\n UpdateConnection,\n PanBy,\n OnConnectStart,\n OnConnect,\n OnConnectEnd,\n Transform,\n ConnectingHandle,\n ConnectionHandle,\n Connection,\n} from '../../types/system';\nimport { getHostForElement, getEventPosition } from '../dom';\nimport {\n calcAutoPan,\n pointToRendererPoint,\n rendererPointToPoint,\n} from '../general';\nimport {\n getClosestHandle,\n getConnectionStatus,\n getHandleLookup,\n getHandleType,\n} from './utils';\n\nexport type OnPointerDownParams = {\n autoPanOnConnect: boolean;\n connectionMode: ConnectionMode;\n connectionRadius: number;\n domNode: HTMLDivElement | null;\n handleId: string | null;\n nodeId: string;\n isTarget: boolean;\n nodeLookup: NodeLookup;\n lib: string;\n flowId: string | null;\n edgeUpdaterType?: HandleType;\n updateConnection: UpdateConnection;\n panBy: PanBy;\n cancelConnection: () => void;\n onConnectStart?: OnConnectStart;\n onConnect?: OnConnect;\n onConnectEnd?: OnConnectEnd;\n isValidConnection?: IsValidConnection;\n onEdgeUpdateEnd?: (evt: MouseEvent | TouchEvent) => void;\n getTransform: () => Transform;\n getConnectionStartHandle: () => ConnectingHandle | null;\n};\n\nexport type IsValidParams = {\n handle: Pick<ConnectionHandle, 'nodeId' | 'id' | 'type'> | null;\n connectionMode: ConnectionMode;\n fromNodeId: string;\n fromHandleId: string | null;\n fromType: HandleType;\n isValidConnection?: IsValidConnection;\n doc: Document | ShadowRoot;\n lib: string;\n flowId: string | null;\n};\n\nexport type XYHandleInstance = {\n onPointerDown: (\n event: MouseEvent | TouchEvent,\n params: OnPointerDownParams,\n ) => void;\n isValid: (event: MouseEvent | TouchEvent, params: IsValidParams) => Result;\n};\n\ntype Result = {\n handleDomNode: Element | null;\n isValid: boolean;\n connection: Connection | null;\n endHandle: ConnectingHandle | null;\n};\n\nconst alwaysValid = () => true;\n\nlet connectionStartHandle: ConnectingHandle | null = null;\n\nfunction onPointerDown(\n event: MouseEvent | TouchEvent,\n {\n connectionMode,\n connectionRadius,\n handleId,\n nodeId,\n edgeUpdaterType,\n isTarget,\n domNode,\n nodeLookup,\n lib,\n autoPanOnConnect,\n flowId,\n panBy,\n cancelConnection,\n onConnectStart,\n onConnect,\n onConnectEnd,\n isValidConnection = alwaysValid,\n onEdgeUpdateEnd,\n updateConnection,\n getTransform,\n getConnectionStartHandle,\n }: OnPointerDownParams,\n) {\n // when xyflow is used inside a shadow root we can't use document\n const doc = getHostForElement(event.target as HTMLElement);\n let autoPanId = 0;\n let closestHandle: ConnectionHandle | null;\n\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc?.elementFromPoint(x, y);\n const handleType = getHandleType(edgeUpdaterType, clickedHandle);\n const containerBounds = domNode?.getBoundingClientRect();\n\n if (!containerBounds || !handleType) {\n return;\n }\n\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n let connection: Connection | null = null;\n let isValid = false;\n let handleDomNode: Element | null = null;\n\n const handleLookup = getHandleLookup({\n nodeLookup,\n nodeId,\n handleId,\n handleType,\n });\n\n // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n function autoPan(): void {\n if (!autoPanOnConnect || !containerBounds) {\n return;\n }\n const [x, y] = calcAutoPan(connectionPosition, containerBounds);\n\n panBy({ x, y });\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n // Stays the same for all consecutive pointermove events\n connectionStartHandle = {\n nodeId,\n handleId,\n type: handleType,\n };\n\n updateConnection({\n connectionPosition,\n connectionStatus: null,\n // connectionNodeId etc will be removed in the next major in favor of connectionStartHandle\n connectionStartHandle,\n connectionEndHandle: null,\n });\n\n onConnectStart?.(event, { nodeId, handleId, handleType });\n\n function onPointerMove(event: MouseEvent | TouchEvent) {\n if (!getConnectionStartHandle()) {\n onPointerUp(event);\n }\n\n const transform = getTransform();\n connectionPosition = getEventPosition(event, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, transform, false, [1, 1]),\n connectionRadius,\n handleLookup,\n );\n\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n\n const result = isValidHandle(event, {\n handle: closestHandle,\n connectionMode,\n fromNodeId: nodeId,\n fromHandleId: handleId,\n fromType: isTarget ? 'target' : 'source',\n isValidConnection,\n doc,\n lib,\n flowId,\n });\n\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = result.isValid;\n\n updateConnection({\n connectionStartHandle,\n connectionPosition:\n closestHandle && isValid\n ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y,\n },\n transform,\n )\n : connectionPosition,\n connectionStatus: getConnectionStatus(!!closestHandle, isValid),\n connectionEndHandle: result.endHandle,\n });\n }\n\n function onPointerUp(event: MouseEvent | TouchEvent) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n onConnect?.(connection);\n }\n\n // it's important to get a fresh reference from the store here\n // in order to get the latest state of onConnectEnd\n onConnectEnd?.(event);\n\n if (edgeUpdaterType) {\n onEdgeUpdateEnd?.(event);\n }\n\n cancelConnection();\n cancelAnimationFrame(autoPanId);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n connectionStartHandle = null;\n\n doc.removeEventListener('mousemove', onPointerMove as EventListener);\n doc.removeEventListener('mouseup', onPointerUp as EventListener);\n\n doc.removeEventListener('touchmove', onPointerMove as EventListener);\n doc.removeEventListener('touchend', onPointerUp as EventListener);\n }\n\n doc.addEventListener('mousemove', onPointerMove as EventListener);\n doc.addEventListener('mouseup', onPointerUp as EventListener);\n\n doc.addEventListener('touchmove', onPointerMove as EventListener);\n doc.addEventListener('touchend', onPointerUp as EventListener);\n}\n\n// checks if and returns connection in fom of an object { source: 123, target: 312 }\nfunction isValidHandle(\n event: MouseEvent | TouchEvent,\n {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid,\n }: IsValidParams,\n) {\n const isTarget = fromType === 'target';\n const handleDomNode = handle\n ? doc.querySelector(\n `.${lib}-flow__handle[data-id=\"${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`,\n )\n : null;\n\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n // we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n // because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`)\n ? handleBelow\n : handleDomNode;\n\n const result: Result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n endHandle: null,\n };\n\n if (handleToCheck) {\n const handleType = getHandleType(undefined, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n const handleId = handleToCheck.getAttribute('data-handleid');\n const connectable = handleToCheck.classList.contains('connectable');\n const connectableEnd = handleToCheck.classList.contains('connectableend');\n\n if (!handleNodeId) {\n return result;\n }\n\n const connection: Connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId,\n };\n\n result.connection = connection;\n\n const isConnectable = connectable && connectableEnd;\n // in strict mode we don't allow target to target or source to source connections\n const isValid =\n isConnectable &&\n (connectionMode === ConnectionMode.Strict\n ? (isTarget && handleType === 'source') ||\n (!isTarget && handleType === 'target')\n : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n\n if (isValid) {\n result.endHandle = {\n nodeId: handleNodeId as string,\n handleId,\n type: handleType as HandleType,\n };\n\n result.isValid = isValidConnection(connection);\n }\n }\n\n return result;\n}\n\nexport const XYHandle: XYHandleInstance = {\n onPointerDown,\n isValid: isValidHandle,\n};\n","import {\n type HTMLAttributes,\n type MouseEvent as ReactMouseEvent,\n type TouchEvent as ReactTouchEvent,\n type ForwardedRef,\n memo,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { useNodeId } from '../../contexts/NodeIdContext';\nimport { errorMessages } from '../../constants';\nimport {\n HandleProps,\n HandleType,\n ConnectionMode,\n Position,\n Connection,\n} from '../../types/system';\nimport { isMouseEvent, getHostForElement } from '../../utils/dom';\nimport { fixedForwardRef } from '../../utils/general';\nimport { InkFlowState } from '../../types';\nimport { addEdge } from '../../utils/edges';\nimport { XYHandle } from '../../utils/xyhandle';\n\nexport interface HandleComponentProps\n extends HandleProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'id'> {}\n\nconst selector = (s: InkFlowState) => ({\n connectOnClick: s.connectOnClick,\n noPanClassName: s.noPanClassName,\n rfId: s.rfId,\n});\n\nconst connectingSelector =\n (nodeId: string | null, handleId: string | null, type: HandleType) =>\n (state: InkFlowState) => {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionClickStartHandle: clickHandle,\n connectionMode,\n connectionStatus,\n } = state;\n\n const connectingTo =\n endHandle?.nodeId === nodeId &&\n endHandle?.handleId === handleId &&\n endHandle?.type === type;\n\n return {\n connectingFrom:\n startHandle?.nodeId === nodeId &&\n startHandle?.handleId === handleId &&\n startHandle?.type === type,\n connectingTo,\n clickConnecting:\n clickHandle?.nodeId === nodeId &&\n clickHandle?.handleId === handleId &&\n clickHandle?.type === type,\n isPossibleEndHandle:\n connectionMode === ConnectionMode.Strict\n ? startHandle?.type !== type\n : nodeId !== startHandle?.nodeId ||\n handleId !== startHandle?.handleId,\n connectionInProcess: !!startHandle,\n valid: connectingTo && connectionStatus === 'valid',\n };\n };\n\nfunction HandleComponent(\n {\n type = 'source',\n position = Position.Top,\n isValidConnection,\n isConnectable = true,\n isConnectableStart = true,\n isConnectableEnd = true,\n id,\n onConnect,\n children,\n className,\n onMouseDown,\n onTouchStart,\n ...rest\n }: HandleComponentProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleId = id || null;\n const isTarget = type === 'target';\n const store = useStoreApi();\n const nodeId = useNodeId();\n const { connectOnClick, noPanClassName, rfId } = useStore(selector, shallow);\n const {\n connectingFrom,\n connectingTo,\n clickConnecting,\n isPossibleEndHandle,\n connectionInProcess,\n valid,\n } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n\n if (!nodeId) {\n store.getState().onError?.('010', errorMessages['error010']());\n }\n\n const onConnectExtended = (params: Connection) => {\n const {\n defaultEdgeOptions,\n onConnect: onConnectAction,\n hasDefaultEdges,\n } = store.getState();\n\n const edgeParams = {\n ...defaultEdgeOptions,\n ...params,\n };\n if (hasDefaultEdges) {\n const { edges, setEdges } = store.getState();\n setEdges(addEdge(edgeParams, edges));\n }\n\n onConnectAction?.(edgeParams);\n onConnect?.(edgeParams);\n };\n\n const onPointerDown = (\n event: ReactMouseEvent<HTMLDivElement> | ReactTouchEvent<HTMLDivElement>,\n ) => {\n if (!nodeId) {\n return;\n }\n\n const isMouseTriggered = isMouseEvent(event.nativeEvent);\n\n if (\n isConnectableStart &&\n ((isMouseTriggered &&\n (event as ReactMouseEvent<HTMLDivElement>).button === 0) ||\n !isMouseTriggered)\n ) {\n const currentStore = store.getState();\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect: currentStore.autoPanOnConnect,\n connectionMode: currentStore.connectionMode,\n connectionRadius: currentStore.connectionRadius,\n domNode: currentStore.domNode,\n nodeLookup: currentStore.nodeLookup,\n lib: currentStore.lib,\n isTarget,\n handleId,\n nodeId,\n flowId: currentStore.rfId,\n panBy: currentStore.panBy,\n cancelConnection: currentStore.cancelConnection,\n onConnectStart: currentStore.onConnectStart,\n onConnectEnd: currentStore.onConnectEnd,\n updateConnection: currentStore.updateConnection,\n onConnect: onConnectExtended,\n isValidConnection: isValidConnection || currentStore.isValidConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n }\n\n if (isMouseTriggered) {\n onMouseDown?.(event as ReactMouseEvent<HTMLDivElement>);\n } else {\n onTouchStart?.(event as ReactTouchEvent<HTMLDivElement>);\n }\n };\n\n const onClick = (event: ReactMouseEvent) => {\n const {\n onClickConnectStart,\n onClickConnectEnd,\n connectionClickStartHandle,\n connectionMode,\n isValidConnection: isValidConnectionStore,\n lib,\n rfId: flowId,\n } = store.getState();\n\n if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n return;\n }\n\n if (!connectionClickStartHandle) {\n onClickConnectStart?.(event.nativeEvent, {\n nodeId,\n handleId,\n handleType: type,\n });\n store.setState({\n connectionClickStartHandle: { nodeId, type, handleId },\n });\n return;\n }\n\n const doc = getHostForElement(event.target as HTMLElement);\n const isValidConnectionHandler =\n isValidConnection || isValidConnectionStore;\n const { connection, isValid } = XYHandle.isValid(event.nativeEvent, {\n handle: {\n nodeId,\n id: handleId,\n type,\n },\n connectionMode,\n fromNodeId: connectionClickStartHandle.nodeId,\n fromHandleId: connectionClickStartHandle.handleId || null,\n fromType: connectionClickStartHandle.type,\n isValidConnection: isValidConnectionHandler,\n flowId,\n doc,\n lib,\n });\n\n if (isValid && connection) {\n onConnectExtended(connection);\n }\n\n onClickConnectEnd?.(event as unknown as MouseEvent);\n\n store.setState({ connectionClickStartHandle: null });\n };\n\n return (\n <div\n data-handleid={handleId}\n data-nodeid={nodeId}\n data-handlepos={position}\n data-id={`${rfId}-${nodeId}-${handleId}-${type}`}\n className={cc([\n 'ink-flow__handle',\n `ink-flow__handle-${position}`,\n 'nodrag',\n noPanClassName,\n className,\n {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable,\n connectablestart: isConnectableStart,\n connectableend: isConnectableEnd,\n clickconnecting: clickConnecting,\n connectingfrom: connectingFrom,\n connectingto: connectingTo,\n valid,\n // shows where you can start a connection from\n // and where you can end it while connecting\n connectionindicator:\n isConnectable &&\n (!connectionInProcess || isPossibleEndHandle) &&\n (connectionInProcess ? isConnectableEnd : isConnectableStart),\n },\n ])}\n onMouseDown={onPointerDown}\n onTouchStart={onPointerDown}\n onClick={connectOnClick ? onClick : undefined}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The Handle component is a UI element that is used to connect nodes.\n */\nexport const Handle = memo(fixedForwardRef(HandleComponent));\n","import { InputNode } from '../Nodes/InputNode';\nimport { DefaultNode } from '../Nodes/DefaultNode';\nimport { GroupNode } from '../Nodes/GroupNode';\nimport { OutputNode } from '../Nodes/OutputNode';\nimport type { InternalNode, Node, NodeTypes } from '../../types';\nimport { XYPosition } from '../../types/system';\n\nexport const arrowKeyDiffs: Record<string, XYPosition> = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 },\n};\n\nexport const builtinNodeTypes: NodeTypes = {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode,\n group: GroupNode,\n};\n\nexport function getNodeInlineStyleDimensions<NodeType extends Node = Node>(\n node: InternalNode<NodeType>,\n): {\n width: number | string | undefined;\n height: number | string | undefined;\n} {\n if (node.internals.handleBounds === undefined) {\n return {\n width: node.width ?? node.initialWidth ?? node.style?.width,\n height: node.height ?? node.initialHeight ?? node.style?.height,\n };\n }\n\n return {\n width: node.width ?? node.style?.width,\n height: node.height ?? node.style?.height,\n };\n}\n","import { BuiltInNode } from '../../types';\nimport { NodeProps, Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function InputNode({\n data,\n isConnectable,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function DefaultNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n sourcePosition = Position.Bottom,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n <Handle\n type=\"source\"\n position={sourcePosition}\n isConnectable={isConnectable}\n />\n </>\n );\n}\n","import { BuiltInNode, NodeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { Handle } from '../Handle';\n\nexport function OutputNode({\n data,\n isConnectable,\n targetPosition = Position.Top,\n}: NodeProps<BuiltInNode>) {\n return (\n <>\n <Handle\n type=\"target\"\n position={targetPosition}\n isConnectable={isConnectable}\n />\n {data?.label}\n </>\n );\n}\n","export function GroupNode() {\n return null;\n}\n","import type { RefObject } from 'react';\nimport type { StoreApi } from 'zustand';\nimport { errorMessages } from '../../constants';\nimport { InkFlowState } from '../../types';\n\n// this handler is called by\n// 1. the click handler when node is not draggable or selectNodesOnDrag = false\n// or\n// 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\nexport function handleNodeClick({\n id,\n store,\n unselect = false,\n nodeRef,\n}: {\n id: string;\n store: {\n getState: StoreApi<InkFlowState>['getState'];\n setState: StoreApi<InkFlowState>['setState'];\n };\n unselect?: boolean;\n nodeRef?: RefObject<HTMLDivElement>;\n}) {\n const {\n addSelectedNodes,\n unselectNodesAndEdges,\n multiSelectionActive,\n nodeLookup,\n onError,\n } = store.getState();\n const node = nodeLookup.get(id);\n\n if (!node) {\n onError?.('012', errorMessages['error012'](id));\n return;\n }\n\n store.setState({ nodesSelectionActive: false });\n\n if (!node.selected) {\n addSelectedNodes([id]);\n } else if (unselect || (node.selected && multiSelectionActive)) {\n unselectNodesAndEdges({ nodes: [node], edges: [] });\n\n requestAnimationFrame(() => nodeRef?.current?.blur());\n }\n}\n","import {\n NodeBase,\n NodeLookup,\n InternalNodeBase,\n XYPosition,\n NodeDragItem,\n} from '../../types/system';\n\nexport function isParentSelected<NodeType extends NodeBase>(\n node: NodeType,\n nodeLookup: NodeLookup,\n): boolean {\n if (!node.parentId) {\n return false;\n }\n\n const parentNode = nodeLookup.get(node.parentId);\n\n if (!parentNode) {\n return false;\n }\n\n if (parentNode.selected) {\n return true;\n }\n\n return isParentSelected(parentNode, nodeLookup);\n}\n\nexport function hasSelector(\n target: Element,\n selector: string,\n domNode: Element,\n): boolean {\n let current = target;\n\n do {\n if (current?.matches(selector)) return true;\n if (current === domNode) return false;\n current = current.parentElement as Element;\n } while (current);\n\n return false;\n}\n\n// looks for all selected nodes and created a NodeDragItem for each of them\nexport function getDragItems<NodeType extends NodeBase>(\n nodeLookup: Map<string, InternalNodeBase<NodeType>>,\n nodesDraggable: boolean,\n mousePos: XYPosition,\n nodeId?: string,\n): Map<string, NodeDragItem> {\n const dragItems = new Map<string, NodeDragItem>();\n\n for (const [id, node] of nodeLookup) {\n if (\n (node.selected || node.id === nodeId) &&\n (!node.parentId || !isParentSelected(node, nodeLookup)) &&\n (node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined'))\n ) {\n const internalNode = nodeLookup.get(id);\n\n if (internalNode) {\n dragItems.set(id, {\n id,\n position: internalNode.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - internalNode.internals.positionAbsolute.x,\n y: mousePos.y - internalNode.internals.positionAbsolute.y,\n },\n extent: internalNode.extent,\n parentId: internalNode.parentId,\n origin: internalNode.origin,\n expandParent: internalNode.expandParent,\n internals: {\n positionAbsolute: internalNode.internals.positionAbsolute || {\n x: 0,\n y: 0,\n },\n },\n measured: {\n width: internalNode.measured.width ?? 0,\n height: internalNode.measured.height ?? 0,\n },\n });\n }\n }\n }\n\n return dragItems;\n}\n\n// returns two params:\n// 1. the dragged node (or the first of the list, if we are dragging a node selection)\n// 2. array of selected nodes (for multi selections)\nexport function getEventHandlerParams<NodeType extends InternalNodeBase>({\n nodeId,\n dragItems,\n nodeLookup,\n}: {\n nodeId?: string;\n dragItems: Map<string, NodeDragItem>;\n nodeLookup: Map<string, NodeType>;\n}): [NodeBase, NodeBase[]] {\n const nodesFromDragItems: NodeBase[] = [];\n\n for (const [id, dragItem] of dragItems) {\n const node = nodeLookup.get(id)?.internals.userNode;\n\n if (node) {\n nodesFromDragItems.push({\n ...node,\n position: dragItem.position,\n });\n }\n }\n\n if (!nodeId) {\n return [nodesFromDragItems[0], nodesFromDragItems];\n }\n\n const node = nodeLookup.get(nodeId)!.internals.userNode;\n\n return [\n {\n ...node,\n position: dragItems.get(nodeId)?.position || node.position,\n },\n nodesFromDragItems,\n ];\n}\n","import { drag } from 'd3-drag';\nimport { select, type Selection } from 'd3-selection';\n\nimport { getDragItems, getEventHandlerParams, hasSelector } from './utils';\nimport {\n NodeDragItem,\n NodeBase,\n InternalNodeBase,\n EdgeBase,\n CoordinateExtent,\n SnapGrid,\n NodeOrigin,\n Transform,\n PanBy,\n OnError,\n OnSelectionDrag,\n UpdateNodePositions,\n XYPosition,\n Box,\n UseDragEvent,\n} from '../../types/system';\nimport { getPointerPosition, getEventPosition } from '../dom';\nimport { calcAutoPan, rectToBox, snapPosition } from '../general';\nimport { getInternalNodesBounds, calculateNodePosition } from '../graph';\n\nexport type OnDrag = (\n event: MouseEvent,\n dragItems: Map<string, NodeDragItem>,\n node: NodeBase,\n nodes: NodeBase[],\n) => void;\n\ntype StoreItems<OnNodeDrag> = {\n nodes: NodeBase[];\n nodeLookup: Map<string, InternalNodeBase>;\n edges: EdgeBase[];\n nodeExtent: CoordinateExtent;\n snapGrid: SnapGrid;\n snapToGrid: boolean;\n nodeOrigin: NodeOrigin;\n multiSelectionActive: boolean;\n domNode?: Element | null;\n transform: Transform;\n autoPanOnNodeDrag: boolean;\n nodesDraggable: boolean;\n selectNodesOnDrag: boolean;\n nodeDragThreshold: number;\n panBy: PanBy;\n unselectNodesAndEdges: (params?: {\n nodes?: NodeBase[];\n edges?: EdgeBase[];\n }) => void;\n onError?: OnError;\n onNodeDragStart?: OnNodeDrag;\n onNodeDrag?: OnNodeDrag;\n onNodeDragStop?: OnNodeDrag;\n onSelectionDragStart?: OnSelectionDrag;\n onSelectionDrag?: OnSelectionDrag;\n onSelectionDragStop?: OnSelectionDrag;\n updateNodePositions: UpdateNodePositions;\n};\n\nexport type XYDragParams<OnNodeDrag> = {\n getStoreItems: () => StoreItems<OnNodeDrag>;\n onDragStart?: OnDrag;\n onDrag?: OnDrag;\n onDragStop?: OnDrag;\n onNodeMouseDown?: (id: string) => void;\n};\n\nexport type XYDragInstance = {\n update: (params: DragUpdateParams) => void;\n destroy: () => void;\n};\n\nexport type DragUpdateParams = {\n noDragClassName?: string;\n handleSelector?: string;\n isSelectable?: boolean;\n nodeId?: string;\n domNode: Element;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function XYDrag<\n OnNodeDrag extends (e: any, nodes: any, node: any) => void | undefined,\n>({\n onNodeMouseDown,\n getStoreItems,\n onDragStart,\n onDrag,\n onDragStop,\n}: XYDragParams<OnNodeDrag>): XYDragInstance {\n let lastPos: { x: number | null; y: number | null } = { x: null, y: null };\n let autoPanId = 0;\n let dragItems = new Map<string, NodeDragItem>();\n let autoPanStarted = false;\n let mousePosition: XYPosition = { x: 0, y: 0 };\n let containerBounds: DOMRect | null = null;\n let dragStarted = false;\n let d3Selection: Selection<Element, unknown, null, undefined> | null = null;\n\n // public functions\n function update({\n noDragClassName,\n handleSelector,\n domNode,\n isSelectable,\n nodeId,\n }: DragUpdateParams) {\n d3Selection = select(domNode);\n function updateNodes({ x, y }: XYPosition, dragEvent: MouseEvent | null) {\n const {\n nodeLookup,\n nodeExtent,\n snapGrid,\n snapToGrid,\n nodeOrigin,\n onNodeDrag,\n onSelectionDrag,\n onError,\n updateNodePositions,\n } = getStoreItems();\n\n lastPos = { x, y };\n\n let hasChange = false;\n let nodesBox: Box = { x: 0, y: 0, x2: 0, y2: 0 };\n\n if (dragItems.size > 1 && nodeExtent) {\n const rect = getInternalNodesBounds(dragItems, { nodeOrigin });\n nodesBox = rectToBox(rect);\n }\n\n for (const [id, dragItem] of dragItems) {\n let nextPosition = {\n x: x - dragItem.distance.x,\n y: y - dragItem.distance.y,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n // if there is selection with multiple nodes and a node extent is set, we need to adjust the node extent for each node\n // based on its position so that the node stays at it's position relative to the selection.\n let adjustedNodeExtent: CoordinateExtent = [\n [nodeExtent[0][0], nodeExtent[0][1]],\n [nodeExtent[1][0], nodeExtent[1][1]],\n ];\n\n if (dragItems.size > 1 && nodeExtent && !dragItem.extent) {\n const { positionAbsolute } = dragItem.internals;\n const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n const x2 =\n positionAbsolute.x +\n dragItem.measured.width -\n nodesBox.x2 +\n nodeExtent[1][0];\n\n const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n const y2 =\n positionAbsolute.y +\n dragItem.measured.height -\n nodesBox.y2 +\n nodeExtent[1][1];\n\n adjustedNodeExtent = [\n [x1, y1],\n [x2, y2],\n ];\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: id,\n nextPosition,\n nodeLookup,\n nodeExtent: adjustedNodeExtent,\n nodeOrigin,\n onError,\n });\n\n // we want to make sure that we only fire a change event when there is a change\n hasChange =\n hasChange ||\n dragItem.position.x !== position.x ||\n dragItem.position.y !== position.y;\n\n dragItem.position = position;\n dragItem.internals.positionAbsolute = positionAbsolute;\n }\n\n if (!hasChange) {\n return;\n }\n\n updateNodePositions(dragItems, true);\n\n if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDrag?.(dragEvent, dragItems, currentNode, currentNodes);\n onNodeDrag?.(dragEvent, currentNode, currentNodes);\n\n if (!nodeId) {\n onSelectionDrag?.(dragEvent, currentNodes);\n }\n }\n }\n\n function autoPan() {\n if (!containerBounds) {\n return;\n }\n\n const [xMovement, yMovement] = calcAutoPan(\n mousePosition,\n containerBounds,\n );\n\n if (xMovement !== 0 || yMovement !== 0) {\n const { transform, panBy } = getStoreItems();\n\n lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2];\n lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2];\n\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(lastPos as XYPosition, null);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n }\n\n function startDrag(event: UseDragEvent) {\n const {\n nodeLookup,\n multiSelectionActive,\n nodesDraggable,\n transform,\n snapGrid,\n snapToGrid,\n selectNodesOnDrag,\n onNodeDragStart,\n onSelectionDragStart,\n unselectNodesAndEdges,\n } = getStoreItems();\n\n dragStarted = true;\n\n if (\n (!selectNodesOnDrag || !isSelectable) &&\n !multiSelectionActive &&\n nodeId\n ) {\n if (!nodeLookup.get(nodeId)?.selected) {\n // we need to reset selected nodes when selectNodesOnDrag=false\n unselectNodesAndEdges();\n }\n }\n\n if (isSelectable && selectNodesOnDrag && nodeId) {\n onNodeMouseDown?.(nodeId);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId);\n\n if (\n dragItems.size > 0 &&\n (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStart?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStart?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStart?.(event.sourceEvent as MouseEvent, currentNodes);\n }\n }\n }\n\n const d3DragInstance = drag()\n .on('start', (event: UseDragEvent) => {\n const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } =\n getStoreItems();\n\n if (nodeDragThreshold === 0) {\n startDrag(event);\n }\n\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n lastPos = pointerPos;\n containerBounds = domNode?.getBoundingClientRect() || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n })\n .on('drag', (event: UseDragEvent) => {\n const {\n autoPanOnNodeDrag,\n transform,\n snapGrid,\n snapToGrid,\n nodeDragThreshold,\n } = getStoreItems();\n const pointerPos = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n });\n\n if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) {\n autoPanStarted = true;\n autoPan();\n }\n\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance = Math.sqrt(x * x + y * y);\n\n if (distance > nodeDragThreshold) {\n startDrag(event);\n }\n }\n\n // skip events without movement\n if (\n (lastPos.x !== pointerPos.xSnapped ||\n lastPos.y !== pointerPos.ySnapped) &&\n dragItems &&\n dragStarted\n ) {\n // dragEvent = event.sourceEvent as MouseEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds!);\n\n updateNodes(pointerPos, event.sourceEvent as MouseEvent);\n }\n })\n .on('end', (event: UseDragEvent) => {\n if (!dragStarted) {\n return;\n }\n\n autoPanStarted = false;\n dragStarted = false;\n cancelAnimationFrame(autoPanId);\n\n if (dragItems.size > 0) {\n const {\n nodeLookup,\n updateNodePositions,\n onNodeDragStop,\n onSelectionDragStop,\n } = getStoreItems();\n\n updateNodePositions(dragItems, false);\n\n if (\n onDragStop ||\n onNodeDragStop ||\n (!nodeId && onSelectionDragStop)\n ) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n\n onDragStop?.(\n event.sourceEvent as MouseEvent,\n dragItems,\n currentNode,\n currentNodes,\n );\n onNodeDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNode,\n currentNodes,\n );\n\n if (!nodeId) {\n onSelectionDragStop?.(\n event.sourceEvent as MouseEvent,\n currentNodes,\n );\n }\n }\n }\n })\n .filter((event: MouseEvent) => {\n const target = event.target as HTMLDivElement;\n const isDraggable =\n !event.button &&\n (!noDragClassName ||\n !hasSelector(target, `.${noDragClassName}`, domNode)) &&\n (!handleSelector || hasSelector(target, handleSelector, domNode));\n\n return isDraggable;\n });\n\n d3Selection.call(d3DragInstance);\n }\n\n function destroy() {\n d3Selection?.on('.drag', null);\n }\n\n return {\n update,\n destroy,\n };\n}\n","import { useCallback } from 'react';\n\nimport { type Node } from '../types';\nimport { useStoreApi } from './useStore';\nimport { XYPosition } from '../types/system';\nimport { snapPosition } from '../utils/general';\nimport { calculateNodePosition } from '../utils/graph';\n\nconst selectedAndDraggable = (nodesDraggable: boolean) => (n: Node) =>\n n.selected &&\n (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));\n\n/**\n * Hook for updating node positions by passing a direction and factor\n *\n * @internal\n * @returns function for updating node positions\n */\nexport function useMoveSelectedNodes() {\n const store = useStoreApi();\n\n const moveSelectedNodes = useCallback(\n (params: { direction: XYPosition; factor: number }) => {\n const {\n nodeExtent,\n snapToGrid,\n snapGrid,\n nodesDraggable,\n onError,\n updateNodePositions,\n nodeLookup,\n nodeOrigin,\n } = store.getState();\n const nodeUpdates = new Map();\n const isSelected = selectedAndDraggable(nodesDraggable);\n\n // by default a node moves 5px on each key press\n // if snap grid is enabled, we use that for the velocity\n const xVelo = snapToGrid ? snapGrid[0] : 5;\n const yVelo = snapToGrid ? snapGrid[1] : 5;\n\n const xDiff = params.direction.x * xVelo * params.factor;\n const yDiff = params.direction.y * yVelo * params.factor;\n\n for (const [, node] of nodeLookup) {\n if (!isSelected(node)) {\n continue;\n }\n\n let nextPosition = {\n x: node.internals.positionAbsolute.x + xDiff,\n y: node.internals.positionAbsolute.y + yDiff,\n };\n\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: node.id,\n nextPosition,\n nodeLookup,\n nodeExtent,\n nodeOrigin,\n onError,\n });\n\n node.position = position;\n node.internals.positionAbsolute = positionAbsolute;\n\n nodeUpdates.set(node.id, node);\n }\n\n updateNodePositions(nodeUpdates);\n },\n [],\n );\n\n return moveSelectedNodes;\n}\n","import { type MouseEvent, type KeyboardEvent } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport { ARIA_NODE_DESC_KEY } from '../A11yDescriptions';\nimport {\n arrowKeyDiffs,\n builtinNodeTypes,\n getNodeInlineStyleDimensions,\n} from './utils';\nimport { useNodeObserver } from './useNodeObserver';\nimport type { InternalNode, Node, NodeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { isInputDOMNode } from '../../utils/dom';\nimport {\n getNodeDimensions,\n clampPosition,\n nodeHasDimensions,\n getPositionWithOrigin,\n} from '../../utils/general';\nimport { useDrag } from '../../hooks/useDrag';\nimport { useMoveSelectedNodes } from '../../hooks/useMoveSelectedNodes';\nimport { handleNodeClick } from '../Nodes/utils';\n\nexport function NodeWrapper<NodeType extends Node>({\n id,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n onContextMenu,\n onDoubleClick,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n resizeObserver,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n rfId,\n nodeTypes,\n nodeExtent,\n nodeOrigin,\n onError,\n}: NodeWrapperProps<NodeType>) {\n const { node, internals, isParent } = useStore((s) => {\n const node = s.nodeLookup.get(id)! as InternalNode<NodeType>;\n const isParent = s.parentLookup.has(id);\n\n return {\n node,\n internals: node.internals,\n isParent,\n };\n }, shallow);\n\n let nodeType = node.type || 'default';\n let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType];\n\n if (NodeComponent === undefined) {\n onError?.('003', errorMessages['error003'](nodeType));\n nodeType = 'default';\n NodeComponent = builtinNodeTypes.default;\n }\n\n const isDraggable = !!(\n node.draggable ||\n (nodesDraggable && typeof node.draggable === 'undefined')\n );\n const isSelectable = !!(\n node.selectable ||\n (elementsSelectable && typeof node.selectable === 'undefined')\n );\n const isConnectable = !!(\n node.connectable ||\n (nodesConnectable && typeof node.connectable === 'undefined')\n );\n const isFocusable = !!(\n node.focusable ||\n (nodesFocusable && typeof node.focusable === 'undefined')\n );\n\n const store = useStoreApi();\n const hasDimensions = nodeHasDimensions(node);\n const nodeRef = useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n });\n const dragging = useDrag({\n nodeRef,\n disabled: node.hidden || !isDraggable,\n noDragClassName,\n handleSelector: node.dragHandle,\n nodeId: id,\n isSelectable,\n });\n const moveSelectedNodes = useMoveSelectedNodes();\n\n if (node.hidden) {\n return null;\n }\n\n const nodeDimensions = getNodeDimensions(node);\n const inlineDimensions = getNodeInlineStyleDimensions(node);\n const clampedPosition = nodeExtent\n ? clampPosition(internals.positionAbsolute, nodeExtent)\n : internals.positionAbsolute;\n\n const positionWithOrigin = getPositionWithOrigin({\n ...clampedPosition,\n ...nodeDimensions,\n origin: node.origin || nodeOrigin,\n });\n const hasPointerEvents =\n isSelectable ||\n isDraggable ||\n onClick ||\n onMouseEnter ||\n onMouseMove ||\n onMouseLeave;\n\n const onMouseEnterHandler = onMouseEnter\n ? (event: MouseEvent) => onMouseEnter(event, { ...internals.userNode })\n : undefined;\n const onMouseMoveHandler = onMouseMove\n ? (event: MouseEvent) => onMouseMove(event, { ...internals.userNode })\n : undefined;\n const onMouseLeaveHandler = onMouseLeave\n ? (event: MouseEvent) => onMouseLeave(event, { ...internals.userNode })\n : undefined;\n const onContextMenuHandler = onContextMenu\n ? (event: MouseEvent) => onContextMenu(event, { ...internals.userNode })\n : undefined;\n const onDoubleClickHandler = onDoubleClick\n ? (event: MouseEvent) => onDoubleClick(event, { ...internals.userNode })\n : undefined;\n\n const onSelectNodeHandler = (event: MouseEvent) => {\n const { selectNodesOnDrag, nodeDragThreshold } = store.getState();\n\n if (\n isSelectable &&\n (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)\n ) {\n // this handler gets called by XYDrag on drag start when selectNodesOnDrag=true\n // here we only need to call it when selectNodesOnDrag=false\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n }\n\n if (onClick) {\n onClick(event, { ...internals.userNode });\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {\n return;\n }\n\n if (elementSelectionKeys.includes(event.key) && isSelectable) {\n const unselect = event.key === 'Escape';\n\n handleNodeClick({\n id,\n store,\n unselect,\n nodeRef,\n });\n } else if (\n isDraggable &&\n node.selected &&\n Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)\n ) {\n store.setState({\n ariaLiveMessage: `Moved selected node ${event.key\n .replace('Arrow', '')\n .toLowerCase()}. New position, x: ${~~clampedPosition.x}, y: ${~~clampedPosition.y}`,\n });\n\n moveSelectedNodes({\n direction: arrowKeyDiffs[event.key],\n factor: event.shiftKey ? 4 : 1,\n });\n }\n };\n\n return (\n <div\n className={cc([\n 'ink-flow__node',\n `ink-flow__node-${nodeType}`,\n {\n // this is overwritable by passing `nopan` as a class name\n [noPanClassName]: isDraggable,\n },\n node.className,\n {\n selected: node.selected,\n selectable: isSelectable,\n parent: isParent,\n draggable: isDraggable,\n dragging,\n },\n ])}\n ref={nodeRef}\n style={{\n zIndex: internals.z,\n transform: `translate(${positionWithOrigin.x}px,${positionWithOrigin.y}px)`,\n pointerEvents: hasPointerEvents ? 'all' : 'none',\n visibility: hasDimensions ? 'visible' : 'hidden',\n ...node.style,\n ...inlineDimensions,\n }}\n data-id={id}\n data-testid={`rf__node-${id}`}\n onMouseEnter={onMouseEnterHandler}\n onMouseMove={onMouseMoveHandler}\n onMouseLeave={onMouseLeaveHandler}\n onContextMenu={onContextMenuHandler}\n onClick={onSelectNodeHandler}\n onDoubleClick={onDoubleClickHandler}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : undefined}\n aria-describedby={\n disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`\n }\n aria-label={node.ariaLabel}\n >\n <Provider value={id}>\n <NodeComponent\n id={id}\n data={node.data}\n type={nodeType}\n positionAbsoluteX={clampedPosition.x}\n positionAbsoluteY={clampedPosition.y}\n selected={node.selected}\n isConnectable={isConnectable}\n sourcePosition={node.sourcePosition}\n targetPosition={node.targetPosition}\n dragging={dragging}\n dragHandle={node.dragHandle}\n zIndex={internals.z}\n {...nodeDimensions}\n />\n </Provider>\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\n\nimport type { InternalNode } from '../../types';\nimport { useStoreApi } from '../../hooks/useStore';\n\n/**\n * Hook to handle the resize observation + internal updates for the passed node.\n *\n * @internal\n * @returns nodeRef - reference to the node element\n */\nexport function useNodeObserver({\n node,\n nodeType,\n hasDimensions,\n resizeObserver,\n}: {\n node: InternalNode;\n nodeType: string;\n hasDimensions: boolean;\n resizeObserver: ResizeObserver | null;\n}) {\n const store = useStoreApi();\n const nodeRef = useRef<HTMLDivElement | null>(null);\n const observedNode = useRef<HTMLDivElement | null>(null);\n const prevSourcePosition = useRef(node.sourcePosition);\n const prevTargetPosition = useRef(node.targetPosition);\n const prevType = useRef(nodeType);\n const isInitialized = hasDimensions && !!node.internals.handleBounds && !node.hidden;\n\n useEffect(() => {\n if (nodeRef.current && (!isInitialized || observedNode.current !== nodeRef.current)) {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n }\n resizeObserver?.observe(nodeRef.current);\n observedNode.current = nodeRef.current;\n }\n }, [isInitialized]);\n\n useEffect(() => {\n return () => {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n observedNode.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (nodeRef.current) {\n // when the user programmatically changes the source or handle position, we need to update the internals\n // to make sure the edges are updated correctly\n const typeChanged = prevType.current !== nodeType;\n const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition;\n const targetPosChanged = prevTargetPosition.current !== node.targetPosition;\n\n if (typeChanged || sourcePosChanged || targetPosChanged) {\n prevType.current = nodeType;\n prevSourcePosition.current = node.sourcePosition;\n prevTargetPosition.current = node.targetPosition;\n\n store\n .getState()\n .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]]));\n }\n }\n }, [node.id, nodeType, node.sourcePosition, node.targetPosition]);\n\n return nodeRef;\n}\n","import { useEffect, useRef, useState, type RefObject } from 'react';\nimport { useStoreApi } from './useStore';\nimport { handleNodeClick } from '../components/Nodes/utils';\nimport { XYDrag, XYDragInstance } from '../utils/xydrag';\n\ntype UseDragParams = {\n nodeRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n noDragClassName?: string;\n handleSelector?: string;\n nodeId?: string;\n isSelectable?: boolean;\n};\n\nexport function useDrag({\n nodeRef,\n disabled = false,\n noDragClassName,\n handleSelector,\n nodeId,\n isSelectable,\n}: UseDragParams) {\n const store = useStoreApi();\n const [dragging, setDragging] = useState<boolean>(false);\n const xyDrag = useRef<XYDragInstance>();\n\n useEffect(() => {\n xyDrag.current = XYDrag({\n getStoreItems: () => store.getState(),\n onNodeMouseDown: (id: string) => {\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n },\n onDragStart: () => {\n setDragging(true);\n },\n onDragStop: () => {\n setDragging(false);\n },\n });\n }, []);\n\n useEffect(() => {\n if (disabled) {\n xyDrag.current?.destroy();\n } else if (nodeRef.current) {\n xyDrag.current?.update({\n noDragClassName,\n handleSelector,\n domNode: nodeRef.current,\n isSelectable,\n nodeId,\n });\n return () => {\n xyDrag.current?.destroy();\n };\n }\n }, [\n noDragClassName,\n handleSelector,\n disabled,\n isSelectable,\n nodeRef,\n nodeId,\n ]);\n\n return dragging;\n}\n","import { memo } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { GraphViewProps } from '../GraphView';\nimport { useResizeObserver } from './useResizeObserver';\nimport type { Node, InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleNodeIds } from '../../hooks/useVisibleNodeIds';\nimport { containerStyle } from '../../styles/utils';\nimport { NodeWrapper } from '../../components/NodeWrapper';\n\nexport type NodeRendererProps<NodeType extends Node> = Pick<\n GraphViewProps<NodeType>,\n // | 'onNodeClick'\n // | 'onNodeDoubleClick'\n // | 'onNodeMouseEnter'\n // | 'onNodeMouseMove'\n // | 'onNodeMouseLeave'\n // | 'onNodeContextMenu'\n // | 'onlyRenderVisibleElements'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'rfId'\n | 'disableKeyboardA11y'\n | 'nodeOrigin'\n // | 'nodeExtent'\n | 'nodeTypes'\n>;\n\nconst selector = (s: InkFlowState) => ({\n nodesDraggable: s.nodesDraggable,\n nodesConnectable: s.nodesConnectable,\n nodesFocusable: s.nodesFocusable,\n elementsSelectable: s.elementsSelectable,\n onError: s.onError,\n});\n\nfunction NodeRendererComponent<NodeType extends Node>(\n props: NodeRendererProps<NodeType>,\n) {\n const {\n nodesDraggable,\n nodesConnectable,\n nodesFocusable,\n elementsSelectable,\n onError,\n } = useStore(selector, shallow);\n // const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);\n const nodeIds = useVisibleNodeIds(false); // FIXME\n const resizeObserver = useResizeObserver();\n\n return (\n <div className=\"ink-flow__nodes\" style={containerStyle}>\n {nodeIds.map((nodeId) => {\n return (\n <NodeWrapper<NodeType>\n key={nodeId}\n id={nodeId}\n nodeTypes={props.nodeTypes}\n // nodeExtent={props.nodeExtent}\n nodeOrigin={props.nodeOrigin}\n // onClick={props.onNodeClick}\n // onMouseEnter={props.onNodeMouseEnter}\n // onMouseMove={props.onNodeMouseMove}\n // onMouseLeave={props.onNodeMouseLeave}\n // onContextMenu={props.onNodeContextMenu}\n // onDoubleClick={props.onNodeDoubleClick}\n noDragClassName={props.noDragClassName}\n noPanClassName={props.noPanClassName}\n rfId={props.rfId}\n disableKeyboardA11y={props.disableKeyboardA11y}\n resizeObserver={resizeObserver}\n nodesDraggable={nodesDraggable}\n nodesConnectable={nodesConnectable}\n nodesFocusable={nodesFocusable}\n elementsSelectable={elementsSelectable}\n onError={onError}\n />\n );\n })}\n </div>\n );\n}\n\nNodeRendererComponent.displayName = 'NodeRenderer';\n\nexport const NodeRenderer = memo(\n NodeRendererComponent,\n) as typeof NodeRendererComponent;\n","import { useMemo } from 'react';\nimport { errorMessages } from '../../constants';\nimport { useStoreApi } from '../../hooks';\nimport { EdgeMarker, MarkerType } from '../../types/system';\n\ntype SymbolProps = Omit<EdgeMarker, 'type'>;\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n points=\"-5,-4 0,0 -5,4\"\n />\n );\n};\n\nconst ArrowClosedSymbol = ({\n color = 'none',\n strokeWidth = 1,\n}: SymbolProps) => {\n return (\n <polyline\n style={{\n stroke: color,\n fill: color,\n strokeWidth,\n }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n points=\"-5,-4 0,0 -5,4 -5,-4\"\n />\n );\n};\n\nexport const MarkerSymbols = {\n [MarkerType.Arrow]: ArrowSymbol,\n [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\n\nexport function useMarkerSymbol(type: MarkerType) {\n const store = useStoreApi();\n\n const symbol = useMemo(() => {\n const symbolExists = Object.prototype.hasOwnProperty.call(\n MarkerSymbols,\n type,\n );\n\n if (!symbolExists) {\n store.getState().onError?.('009', errorMessages['error009'](type));\n\n return null;\n }\n\n return MarkerSymbols[type];\n }, [type]);\n\n return symbol;\n}\n","import {\n EdgeMarkerType,\n EdgeMarker,\n EdgeBase,\n MarkerProps,\n} from '../types/system';\n\nexport function getMarkerId(\n marker: EdgeMarkerType | undefined,\n id?: string | null,\n): string {\n if (!marker) {\n return '';\n }\n\n if (typeof marker === 'string') {\n return marker;\n }\n\n const idPrefix = id ? `${id}__` : '';\n\n return `${idPrefix}${Object.keys(marker)\n .sort()\n .map((key) => `${key}=${marker[key as keyof EdgeMarker]}`)\n .join('&')}`;\n}\n\nexport function createMarkerIds(\n edges: EdgeBase[],\n {\n id,\n defaultColor,\n defaultMarkerStart,\n defaultMarkerEnd,\n }: {\n id?: string | null;\n defaultColor?: string;\n defaultMarkerStart?: EdgeMarkerType;\n defaultMarkerEnd?: EdgeMarkerType;\n },\n) {\n const ids = new Set<string>();\n\n return edges\n .reduce<MarkerProps[]>((markers, edge) => {\n [\n edge.markerStart || defaultMarkerStart,\n edge.markerEnd || defaultMarkerEnd,\n ].forEach((marker) => {\n if (marker && typeof marker === 'object') {\n const markerId = getMarkerId(marker, id);\n if (!ids.has(markerId)) {\n markers.push({\n id: markerId,\n color: marker.color || defaultColor,\n ...marker,\n });\n ids.add(markerId);\n }\n }\n });\n\n return markers;\n }, [])\n .sort((a, b) => a.id.localeCompare(b.id));\n}\n","import { memo, useMemo } from 'react';\n\nimport { useMarkerSymbol } from './MarkerSymbols';\nimport { useStore } from '../../hooks';\nimport { MarkerProps } from '../../types/system';\nimport { createMarkerIds } from '../../utils/marker';\n\ntype MarkerDefinitionsProps = {\n defaultColor: string;\n rfId?: string;\n};\n\nconst Marker = ({\n id,\n type,\n color,\n width = 12.5,\n height = 12.5,\n markerUnits = 'strokeWidth',\n strokeWidth,\n orient = 'auto-start-reverse',\n}: MarkerProps) => {\n const Symbol = useMarkerSymbol(type);\n\n if (!Symbol) {\n return null;\n }\n\n return (\n <marker\n className=\"ink-flow__arrowhead\"\n id={id}\n markerWidth={`${width}`}\n markerHeight={`${height}`}\n viewBox=\"-10 -10 20 20\"\n markerUnits={markerUnits}\n orient={orient}\n refX=\"0\"\n refY=\"0\"\n >\n <Symbol color={color} strokeWidth={strokeWidth} />\n </marker>\n );\n};\n\n// when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n// when they do have markers with the same ids. To prevent this the user can pass a unique id to the Ink Flow wrapper\n// that we can then use for creating our unique marker ids\nconst MarkerDefinitions = ({ defaultColor, rfId }: MarkerDefinitionsProps) => {\n const edges = useStore((s) => s.edges);\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); // FIXME\n\n const markers = useMemo(() => {\n const markers = createMarkerIds(edges, {\n id: rfId,\n defaultColor,\n defaultMarkerStart: defaultEdgeOptions?.markerStart,\n defaultMarkerEnd: defaultEdgeOptions?.markerEnd,\n });\n\n return markers;\n }, [edges, defaultEdgeOptions, rfId, defaultColor]);\n\n if (!markers.length) {\n return null;\n }\n\n return (\n <svg className=\"ink-flow__marker\">\n <defs>\n {markers.map((marker: MarkerProps) => (\n <Marker\n id={marker.id}\n key={marker.id}\n type={marker.type}\n color={marker.color}\n width={marker.width}\n height={marker.height}\n markerUnits={marker.markerUnits}\n strokeWidth={marker.strokeWidth}\n orient={marker.orient}\n />\n ))}\n </defs>\n </svg>\n );\n};\n\nMarkerDefinitions.displayName = 'MarkerDefinitions';\n\nexport default memo(MarkerDefinitions);\n","import { memo, useState, useCallback } from 'react';\nimport cc from 'classnames';\nimport { EdgeTextProps } from '../../types';\nimport { Rect } from '../../types/system';\n\nfunction EdgeTextComponent({\n x,\n y,\n label,\n labelStyle = {},\n labelShowBg = true,\n labelBgStyle = {},\n labelBgPadding = [2, 4],\n labelBgBorderRadius = 2,\n children,\n className,\n ...rest\n}: EdgeTextProps) {\n const [edgeTextBbox, setEdgeTextBbox] = useState<Rect>({\n x: 1,\n y: 0,\n width: 0,\n height: 0,\n });\n const edgeTextClasses = cc(['ink-flow__edge-textwrapper', className]);\n\n const onEdgeTextRefChange = useCallback((edgeRef: SVGTextElement) => {\n if (edgeRef === null) return;\n\n const textBbox = edgeRef.getBBox();\n\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height,\n });\n }, []);\n\n if (typeof label === 'undefined' || !label) {\n return null;\n }\n\n return (\n <g\n transform={`translate(${x - edgeTextBbox.width / 2} ${\n y - edgeTextBbox.height / 2\n })`}\n className={edgeTextClasses}\n visibility={edgeTextBbox.width ? 'visible' : 'hidden'}\n {...rest}\n >\n {labelShowBg && (\n <rect\n width={edgeTextBbox.width + 2 * labelBgPadding[0]}\n x={-labelBgPadding[0]}\n y={-labelBgPadding[1]}\n height={edgeTextBbox.height + 2 * labelBgPadding[1]}\n className=\"ink-flow__edge-textbg\"\n style={labelBgStyle}\n rx={labelBgBorderRadius}\n ry={labelBgBorderRadius}\n />\n )}\n <text\n className=\"ink-flow__edge-text\"\n y={edgeTextBbox.height / 2}\n dy=\"0.3em\"\n ref={onEdgeTextRefChange}\n style={labelStyle}\n >\n {label}\n </text>\n {children}\n </g>\n );\n}\n\nEdgeTextComponent.displayName = 'EdgeText';\n\nexport const EdgeText = memo(EdgeTextComponent);\n","import cc from 'classnames';\n\nimport { EdgeText } from './EdgeText';\nimport { BaseEdgeProps } from '../../types';\nimport { isNumeric } from '../../utils/general';\n\nexport function BaseEdge({\n id,\n path,\n labelX,\n labelY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n className,\n interactionWidth = 20,\n}: BaseEdgeProps) {\n return (\n <>\n <path\n id={id}\n style={style}\n d={path}\n fill=\"none\"\n className={cc(['ink-flow__edge-path', className])}\n markerEnd={markerEnd}\n markerStart={markerStart}\n />\n {interactionWidth && (\n <path\n d={path}\n fill=\"none\"\n strokeOpacity={0}\n strokeWidth={interactionWidth}\n className=\"ink-flow__edge-interaction\"\n />\n )}\n {label && isNumeric(labelX) && isNumeric(labelY) ? (\n <EdgeText\n x={labelX}\n y={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n />\n ) : null}\n </>\n );\n}\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SimpleBezierEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getBezierEdgeCenter } from '../../utils/edges';\n\nexport interface GetSimpleBezierPathParams {\n sourceX: number;\n sourceY: number;\n sourcePosition?: Position;\n targetX: number;\n targetY: number;\n targetPosition?: Position;\n}\n\ninterface GetControlParams {\n pos: Position;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nfunction getControl({\n pos,\n x1,\n y1,\n x2,\n y2,\n}: GetControlParams): [number, number] {\n if (pos === Position.Left || pos === Position.Right) {\n return [0.5 * (x1 + x2), y1];\n }\n\n return [x1, 0.5 * (y1 + y2)];\n}\n\nexport function getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n}: GetSimpleBezierPathParams): [\n path: string,\n labelX: number,\n labelY: number,\n offsetX: number,\n offsetY: number,\n] {\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n\nfunction createSimpleBezierEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: SimpleBezierEdgeProps) => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false });\nconst SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true });\n\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\nSimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal';\n\nexport { SimpleBezierEdge, SimpleBezierEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { SmoothStepEdgeProps } from '../../types';\nimport { Position } from '../../types/system';\nimport { getSmoothStepPath } from '../../utils/edges';\n\nfunction createSmoothStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n markerEnd,\n markerStart,\n pathOptions,\n interactionWidth,\n }: SmoothStepEdgeProps) => {\n const [path, labelX, labelY] = getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n borderRadius: pathOptions?.borderRadius,\n offset: pathOptions?.offset,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst SmoothStepEdge = createSmoothStepEdge({ isInternal: false });\nconst SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true });\n\nSmoothStepEdge.displayName = 'SmoothStepEdge';\nSmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal';\n\nexport { SmoothStepEdge, SmoothStepEdgeInternal };\n","import { memo, useMemo } from 'react';\n\nimport { SmoothStepEdge } from './SmoothStepEdge';\nimport type { StepEdgeProps } from '../../types';\n\nfunction createStepEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, ...props }: StepEdgeProps) => {\n const _id = params.isInternal ? undefined : id;\n\n return (\n <SmoothStepEdge\n {...props}\n id={_id}\n pathOptions={useMemo(\n () => ({ borderRadius: 0, offset: props.pathOptions?.offset }),\n [props.pathOptions?.offset]\n )}\n />\n );\n });\n}\n\nconst StepEdge = createStepEdge({ isInternal: false });\nconst StepEdgeInternal = createStepEdge({ isInternal: true });\n\nStepEdge.displayName = 'StepEdge';\nStepEdgeInternal.displayName = 'StepEdgeInternal';\n\nexport { StepEdge, StepEdgeInternal };\n","import { memo } from 'react';\n\nimport { BaseEdge } from './BaseEdge';\nimport type { StraightEdgeProps } from '../../types';\nimport { getStraightPath } from '../../utils/edges';\n\nfunction createStraightEdge(params: { isInternal: boolean }) {\n // eslint-disable-next-line react/display-name\n return memo(\n ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n label,\n labelStyle,\n labelShowBg,\n labelBgStyle,\n labelBgPadding,\n labelBgBorderRadius,\n style,\n markerEnd,\n markerStart,\n interactionWidth,\n }: StraightEdgeProps) => {\n const [path, labelX, labelY] = getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n const _id = params.isInternal ? undefined : id;\n\n return (\n <BaseEdge\n id={_id}\n path={path}\n labelX={labelX}\n labelY={labelY}\n label={label}\n labelStyle={labelStyle}\n labelShowBg={labelShowBg}\n labelBgStyle={labelBgStyle}\n labelBgPadding={labelBgPadding}\n labelBgBorderRadius={labelBgBorderRadius}\n style={style}\n markerEnd={markerEnd}\n markerStart={markerStart}\n interactionWidth={interactionWidth}\n />\n );\n },\n );\n}\n\nconst StraightEdge = createStraightEdge({ isInternal: false });\nconst StraightEdgeInternal = createStraightEdge({ isInternal: true });\n\nStraightEdge.displayName = 'StraightEdge';\nStraightEdgeInternal.displayName = 'StraightEdgeInternal';\n\nexport { StraightEdge, StraightEdgeInternal };\n","import { getEdgeCenter } from './general';\n\nexport type GetStraightPathParams = {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n};\n\n/**\n * Get a straight path from source to target handle\n * @param params.sourceX - The x position of the source handle\n * @param params.sourceY - The y position of the source handle\n * @param params.targetX - The x position of the target handle\n * @param params.targetY - The y position of the target handle\n * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label\n * @example\n * const source = { x: 0, y: 20 };\n const target = { x: 150, y: 100 };\n \n const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({\n sourceX: source.x,\n sourceY: source.y,\n sourcePosition: Position.Right,\n targetX: target.x,\n targetY: target.y,\n targetPosition: Position.Left,\n });\n */\nexport function getStraightPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n}: GetStraightPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number] {\n const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\n","import { memo } from 'react';\r\n\r\nimport { BaseEdge } from './BaseEdge';\r\nimport { Position } from '../../types/system';\r\nimport { BezierEdgeProps } from '../../types';\r\nimport { getBezierPath } from '../../utils/edges';\r\n\r\nfunction createBezierEdge(params: { isInternal: boolean }) {\r\n // eslint-disable-next-line react/display-name\r\n return memo(\r\n ({\r\n id,\r\n sourceX,\r\n sourceY,\r\n targetX,\r\n targetY,\r\n sourcePosition = Position.Bottom,\r\n targetPosition = Position.Top,\r\n label,\r\n labelStyle,\r\n labelShowBg,\r\n labelBgStyle,\r\n labelBgPadding,\r\n labelBgBorderRadius,\r\n style,\r\n markerEnd,\r\n markerStart,\r\n pathOptions,\r\n interactionWidth,\r\n }: BezierEdgeProps) => {\r\n const [path, labelX, labelY] = getBezierPath({\r\n sourceX,\r\n sourceY,\r\n sourcePosition,\r\n targetX,\r\n targetY,\r\n targetPosition,\r\n curvature: pathOptions?.curvature,\r\n });\r\n\r\n const _id = params.isInternal ? undefined : id;\r\n\r\n return (\r\n <BaseEdge\r\n id={_id}\r\n path={path}\r\n labelX={labelX}\r\n labelY={labelY}\r\n label={label}\r\n labelStyle={labelStyle}\r\n labelShowBg={labelShowBg}\r\n labelBgStyle={labelBgStyle}\r\n labelBgPadding={labelBgPadding}\r\n labelBgBorderRadius={labelBgBorderRadius}\r\n style={style}\r\n markerEnd={markerEnd}\r\n markerStart={markerStart}\r\n interactionWidth={interactionWidth}\r\n />\r\n );\r\n },\r\n );\r\n}\r\n\r\nconst BezierEdge = createBezierEdge({ isInternal: false });\r\nconst BezierEdgeInternal = createBezierEdge({ isInternal: true });\r\n\r\nBezierEdge.displayName = 'BezierEdge';\r\nBezierEdgeInternal.displayName = 'BezierEdgeInternal';\r\n\r\nexport { BezierEdge, BezierEdgeInternal };\r\n","import type { EdgeTypes } from '../../types';\nimport {\n BezierEdgeInternal,\n StraightEdgeInternal,\n StepEdgeInternal,\n SmoothStepEdgeInternal,\n SimpleBezierEdgeInternal,\n} from '../Edges';\n\nexport const builtinEdgeTypes: EdgeTypes = {\n default: BezierEdgeInternal,\n straight: StraightEdgeInternal,\n step: StepEdgeInternal,\n smoothstep: SmoothStepEdgeInternal,\n simplebezier: SimpleBezierEdgeInternal,\n};\n\nexport const nullPosition = {\n sourceX: null,\n sourceY: null,\n targetX: null,\n targetY: null,\n sourcePosition: null,\n targetPosition: null,\n};\n","import type { MouseEvent as ReactMouseEvent, SVGAttributes } from 'react';\nimport cc from 'classnames';\nimport { Position } from '../../types/system';\n\nconst shiftX = (x: number, shift: number, position: Position): number => {\n if (position === Position.Left) return x - shift;\n if (position === Position.Right) return x + shift;\n return x;\n};\n\nconst shiftY = (y: number, shift: number, position: Position): number => {\n if (position === Position.Top) return y - shift;\n if (position === Position.Bottom) return y + shift;\n return y;\n};\n\nexport interface EdgeAnchorProps extends SVGAttributes<SVGGElement> {\n position: Position;\n centerX: number;\n centerY: number;\n radius?: number;\n onMouseDown: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseEnter: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n onMouseOut: (event: ReactMouseEvent<SVGGElement, MouseEvent>) => void;\n type: string;\n}\n\nconst EdgeUpdaterClassName = 'ink-flow__edgeupdater';\n\nexport function EdgeAnchor({\n position,\n centerX,\n centerY,\n radius = 10,\n onMouseDown,\n onMouseEnter,\n onMouseOut,\n type,\n}: EdgeAnchorProps) {\n return (\n <circle\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseOut={onMouseOut}\n className={cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`])}\n cx={shiftX(centerX, radius, position)}\n cy={shiftY(centerY, radius, position)}\n r={radius}\n stroke=\"transparent\"\n fill=\"transparent\"\n />\n );\n}\n","// Updatable edges have a anchors around their handles to update the edge.\nimport type { EdgeWrapperProps, Edge } from '../../types/edges';\nimport { useStoreApi } from '../../hooks/useStore';\nimport { EdgePosition, Connection } from '../../types/system';\nimport { XYHandle } from '../../utils/xyhandle';\nimport { EdgeAnchor } from '../Edges/EdgeAnchor';\n\ntype EdgeUpdateAnchorsProps<EdgeType extends Edge = Edge> = {\n edge: EdgeType;\n isUpdatable: boolean | 'source' | 'target';\n edgeUpdaterRadius: EdgeWrapperProps['edgeUpdaterRadius'];\n sourceHandleId: Edge['sourceHandle'];\n targetHandleId: Edge['targetHandle'];\n onEdgeUpdate: EdgeWrapperProps<EdgeType>['onEdgeUpdate'];\n onEdgeUpdateStart: EdgeWrapperProps<EdgeType>['onEdgeUpdateStart'];\n onEdgeUpdateEnd: EdgeWrapperProps<EdgeType>['onEdgeUpdateEnd'];\n setUpdateHover: (hover: boolean) => void;\n setUpdating: (updating: boolean) => void;\n} & EdgePosition;\n\nexport function EdgeUpdateAnchors<EdgeType extends Edge = Edge>({\n isUpdatable,\n edgeUpdaterRadius,\n edge,\n targetHandleId,\n sourceHandleId,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n setUpdating,\n setUpdateHover,\n}: EdgeUpdateAnchorsProps<EdgeType>) {\n const store = useStoreApi();\n\n const handleEdgeUpdater = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n isSourceHandle: boolean,\n ) => {\n // avoid triggering edge updater if mouse btn is not left\n if (event.button !== 0) {\n return;\n }\n\n const {\n autoPanOnConnect,\n domNode,\n isValidConnection,\n connectionMode,\n connectionRadius,\n lib,\n onConnectStart,\n onConnectEnd,\n cancelConnection,\n nodeLookup,\n rfId: flowId,\n panBy,\n updateConnection,\n } = store.getState();\n const nodeId = isSourceHandle ? edge.target : edge.source;\n const handleId = (isSourceHandle ? targetHandleId : sourceHandleId) || null;\n const handleType = isSourceHandle ? 'target' : 'source';\n\n const isTarget = isSourceHandle;\n\n setUpdating(true);\n onEdgeUpdateStart?.(event, edge, handleType);\n\n const _onEdgeUpdateEnd = (evt: MouseEvent | TouchEvent) => {\n setUpdating(false);\n onEdgeUpdateEnd?.(evt, edge, handleType);\n };\n\n const onConnectEdge = (connection: Connection) =>\n onEdgeUpdate?.(edge, connection);\n\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect,\n connectionMode,\n connectionRadius,\n domNode,\n handleId,\n nodeId,\n nodeLookup,\n isTarget,\n edgeUpdaterType: handleType,\n lib,\n flowId,\n cancelConnection,\n panBy,\n isValidConnection,\n onConnect: onConnectEdge,\n onConnectStart,\n onConnectEnd,\n onEdgeUpdateEnd: _onEdgeUpdateEnd,\n updateConnection,\n getTransform: () => store.getState().transform,\n getConnectionStartHandle: () => store.getState().connectionStartHandle,\n });\n };\n\n const onEdgeUpdaterSourceMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, true);\n const onEdgeUpdaterTargetMouseDown = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => handleEdgeUpdater(event, false);\n const onEdgeUpdaterMouseEnter = () => setUpdateHover(true);\n const onEdgeUpdaterMouseOut = () => setUpdateHover(false);\n\n return (\n <>\n {(isUpdatable === 'source' || isUpdatable === true) && (\n <EdgeAnchor\n position={sourcePosition}\n centerX={sourceX}\n centerY={sourceY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterSourceMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"source\"\n />\n )}\n {(isUpdatable === 'target' || isUpdatable === true) && (\n <EdgeAnchor\n position={targetPosition}\n centerX={targetX}\n centerY={targetY}\n radius={edgeUpdaterRadius}\n onMouseDown={onEdgeUpdaterTargetMouseDown}\n onMouseEnter={onEdgeUpdaterMouseEnter}\n onMouseOut={onEdgeUpdaterMouseOut}\n type=\"target\"\n />\n )}\n </>\n );\n}\n","import { errorMessages } from '../constants';\nimport {\n InternalNodeBase,\n ConnectionMode,\n OnError,\n EdgePosition,\n Position,\n NodeHandle,\n HandleElement,\n} from '../types/system';\nimport { getNodeDimensions } from './general';\n\nexport type GetEdgePositionParams = {\n id: string;\n sourceNode: InternalNodeBase;\n sourceHandle: string | null;\n targetNode: InternalNodeBase;\n targetHandle: string | null;\n connectionMode: ConnectionMode;\n onError?: OnError;\n};\n\nfunction isNodeInitialized(node: InternalNodeBase): boolean {\n return (\n node &&\n !!(node.internals.handleBounds || node.handles?.length) &&\n !!(node.measured.width || node.width || node.initialWidth)\n );\n}\n\nexport function getEdgePosition(\n params: GetEdgePositionParams,\n): EdgePosition | null {\n const { sourceNode, targetNode } = params;\n\n if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) {\n return null;\n }\n\n const sourceHandleBounds =\n sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);\n const targetHandleBounds =\n targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);\n\n const sourceHandle = getHandle(\n sourceHandleBounds?.source ?? [],\n params.sourceHandle,\n );\n const targetHandle = getHandle(\n // when connection type is loose we can define all handles as sources and connect source -> source\n params.connectionMode === ConnectionMode.Strict\n ? targetHandleBounds?.target ?? []\n : (targetHandleBounds?.target ?? []).concat(\n targetHandleBounds?.source ?? [],\n ),\n params.targetHandle,\n );\n const sourcePosition = sourceHandle?.position || Position.Bottom;\n const targetPosition = targetHandle?.position || Position.Top;\n\n if (!sourceHandle || !targetHandle) {\n params.onError?.(\n '008',\n errorMessages['error008'](!sourceHandle ? 'source' : 'target', {\n id: params.id,\n sourceHandle: params.sourceHandle,\n targetHandle: params.targetHandle,\n }),\n );\n\n return null;\n }\n\n const [sourceX, sourceY] = getHandlePosition(\n sourcePosition,\n sourceNode,\n sourceHandle,\n );\n const [targetX, targetY] = getHandlePosition(\n targetPosition,\n targetNode,\n targetHandle,\n );\n\n return {\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n };\n}\n\nfunction toHandleBounds(handles?: NodeHandle[]) {\n if (!handles) {\n return null;\n }\n\n const source = [];\n const target = [];\n\n for (const handle of handles) {\n handle.width = handle.width ?? 1;\n handle.height = handle.height ?? 1;\n\n if (handle.type === 'source') {\n source.push(handle as HandleElement);\n } else if (handle.type === 'target') {\n target.push(handle as HandleElement);\n }\n }\n\n return {\n source,\n target,\n };\n}\n\nfunction getHandlePosition(\n position: Position,\n node: InternalNodeBase,\n handle: HandleElement | null = null,\n): number[] {\n const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x;\n const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n\n switch (position) {\n case Position.Top:\n return [x + width / 2, y];\n case Position.Right:\n return [x + width, y + height / 2];\n case Position.Bottom:\n return [x + width / 2, y + height];\n case Position.Left:\n return [x, y + height / 2];\n }\n}\n\nfunction getHandle(\n bounds: HandleElement[],\n handleId?: string | null,\n): HandleElement | null {\n if (!bounds) {\n return null;\n }\n\n // if no handleId is given, we use the first handle, otherwise we check for the id\n return (\n (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null\n );\n}\n","import {\n useState,\n useMemo,\n useRef,\n type KeyboardEvent,\n useCallback,\n} from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStoreApi, useStore } from '../../hooks/useStore';\nimport { builtinEdgeTypes, nullPosition } from './utils';\nimport { EdgeUpdateAnchors } from './EdgeUpdateAnchors';\nimport type { Edge, EdgeWrapperProps } from '../../types';\nimport { errorMessages, elementSelectionKeys } from '../../constants';\nimport { getMarkerId } from '../../utils/marker';\nimport { getEdgePosition } from '../../utils/positions';\nimport { getElevatedEdgeZIndex } from '../../utils/edges';\nimport { ARIA_EDGE_DESC_KEY } from '../A11yDescriptions';\n\nexport function EdgeWrapper<EdgeType extends Edge = Edge>({\n id,\n edgesFocusable,\n edgesUpdatable,\n elementsSelectable,\n onClick,\n onDoubleClick,\n onContextMenu,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n edgeUpdaterRadius,\n onEdgeUpdate,\n onEdgeUpdateStart,\n onEdgeUpdateEnd,\n rfId,\n edgeTypes,\n noPanClassName,\n onError,\n disableKeyboardA11y,\n}: EdgeWrapperProps<EdgeType>): JSX.Element | null {\n let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge;\n\n let edgeType = edge.type || 'default';\n let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType];\n\n if (EdgeComponent === undefined) {\n onError?.('011', errorMessages['error011'](edgeType));\n edgeType = 'default';\n EdgeComponent = builtinEdgeTypes.default;\n }\n\n const isFocusable = !!(\n edge.focusable ||\n (edgesFocusable && typeof edge.focusable === 'undefined')\n );\n const isUpdatable =\n typeof onEdgeUpdate !== 'undefined' &&\n (edge.updatable ||\n (edgesUpdatable && typeof edge.updatable === 'undefined'));\n const isSelectable = !!(\n edge.selectable ||\n (elementsSelectable && typeof edge.selectable === 'undefined')\n );\n\n const edgeRef = useRef<SVGGElement>(null);\n const [updateHover, setUpdateHover] = useState<boolean>(false);\n const [updating, setUpdating] = useState<boolean>(false);\n const store = useStoreApi();\n\n const {\n zIndex,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n } = useStore(\n useCallback(\n (store) => {\n const sourceNode = store.nodeLookup.get(edge.source);\n const targetNode = store.nodeLookup.get(edge.target);\n\n if (!sourceNode || !targetNode) {\n return {\n zIndex: edge.zIndex,\n ...nullPosition,\n };\n }\n\n const edgePosition = getEdgePosition({\n id,\n sourceNode,\n targetNode,\n sourceHandle: edge.sourceHandle || null,\n targetHandle: edge.targetHandle || null,\n connectionMode: store.connectionMode,\n onError,\n });\n\n const zIndex = getElevatedEdgeZIndex({\n selected: edge.selected,\n zIndex: edge.zIndex,\n sourceNode,\n targetNode,\n elevateOnSelect: store.elevateEdgesOnSelect,\n });\n\n return {\n zIndex,\n ...(edgePosition || nullPosition),\n };\n },\n [\n edge.source,\n edge.target,\n edge.sourceHandle,\n edge.targetHandle,\n edge.selected,\n edge.zIndex,\n ],\n ),\n shallow,\n );\n\n const markerStartUrl = useMemo(\n () =>\n edge.markerStart\n ? `url('#${getMarkerId(edge.markerStart, rfId)}')`\n : undefined,\n [edge.markerStart, rfId],\n );\n\n const markerEndUrl = useMemo(\n () =>\n edge.markerEnd\n ? `url('#${getMarkerId(edge.markerEnd, rfId)}')`\n : undefined,\n [edge.markerEnd, rfId],\n );\n\n if (\n edge.hidden ||\n sourceX === null ||\n sourceY === null ||\n targetX === null ||\n targetY === null\n ) {\n return null;\n }\n\n const onEdgeClick = (\n event: React.MouseEvent<SVGGElement, MouseEvent>,\n ): void => {\n const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } =\n store.getState();\n\n if (isSelectable) {\n store.setState({ nodesSelectionActive: false });\n\n if (edge.selected && multiSelectionActive) {\n unselectNodesAndEdges({ nodes: [], edges: [edge] });\n edgeRef.current?.blur();\n } else {\n addSelectedEdges([id]);\n }\n }\n\n if (onClick) {\n onClick(event, edge);\n }\n };\n\n const onEdgeDoubleClick = onDoubleClick\n ? (event: React.MouseEvent) => {\n onDoubleClick(event, { ...edge });\n }\n : undefined;\n const onEdgeContextMenu = onContextMenu\n ? (event: React.MouseEvent) => {\n onContextMenu(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseEnter = onMouseEnter\n ? (event: React.MouseEvent) => {\n onMouseEnter(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseMove = onMouseMove\n ? (event: React.MouseEvent) => {\n onMouseMove(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseLeave = onMouseLeave\n ? (event: React.MouseEvent) => {\n onMouseLeave(event, { ...edge });\n }\n : undefined;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n !disableKeyboardA11y &&\n elementSelectionKeys.includes(event.key) &&\n isSelectable\n ) {\n const { unselectNodesAndEdges, addSelectedEdges } = store.getState();\n const unselect = event.key === 'Escape';\n\n if (unselect) {\n edgeRef.current?.blur();\n unselectNodesAndEdges({ edges: [edge] });\n } else {\n addSelectedEdges([id]);\n }\n }\n };\n\n return (\n <svg style={{ zIndex }}>\n <g\n className={cc([\n 'ink-flow__edge',\n `ink-flow__edge-${edgeType}`,\n edge.className,\n noPanClassName,\n {\n selected: edge.selected,\n animated: edge.animated,\n inactive: !isSelectable && !onClick,\n updating: updateHover,\n selectable: isSelectable,\n },\n ])}\n onClick={onEdgeClick}\n onDoubleClick={onEdgeDoubleClick}\n onContextMenu={onEdgeContextMenu}\n onMouseEnter={onEdgeMouseEnter}\n onMouseMove={onEdgeMouseMove}\n onMouseLeave={onEdgeMouseLeave}\n onKeyDown={isFocusable ? onKeyDown : undefined}\n tabIndex={isFocusable ? 0 : undefined}\n role={isFocusable ? 'button' : 'img'}\n data-id={id}\n data-testid={`rf__edge-${id}`}\n aria-label={\n edge.ariaLabel === null\n ? undefined\n : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`\n }\n aria-describedby={\n isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined\n }\n ref={edgeRef}\n >\n {!updating && (\n <EdgeComponent\n id={id}\n source={edge.source}\n target={edge.target}\n type={edge.type}\n selected={edge.selected}\n animated={edge.animated}\n label={edge.label}\n labelStyle={edge.labelStyle}\n labelShowBg={edge.labelShowBg}\n labelBgStyle={edge.labelBgStyle}\n labelBgPadding={edge.labelBgPadding}\n labelBgBorderRadius={edge.labelBgBorderRadius}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n data={edge.data}\n style={edge.style}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n markerStart={markerStartUrl}\n markerEnd={markerEndUrl}\n pathOptions={'pathOptions' in edge ? edge.pathOptions : undefined}\n interactionWidth={edge.interactionWidth}\n />\n )}\n {isUpdatable && (\n <EdgeUpdateAnchors<EdgeType>\n edge={edge}\n isUpdatable={isUpdatable}\n edgeUpdaterRadius={edgeUpdaterRadius}\n onEdgeUpdate={onEdgeUpdate}\n onEdgeUpdateStart={onEdgeUpdateStart}\n onEdgeUpdateEnd={onEdgeUpdateEnd}\n sourceX={sourceX}\n sourceY={sourceY}\n targetX={targetX}\n targetY={targetY}\n sourcePosition={sourcePosition}\n targetPosition={targetPosition}\n setUpdateHover={setUpdateHover}\n setUpdating={setUpdating}\n sourceHandleId={edge.sourceHandle}\n targetHandleId={edge.targetHandle}\n />\n )}\n </g>\n </svg>\n );\n}\n","import { memo, ReactNode } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport MarkerDefinitions from './MarkerDefinitions';\nimport { GraphViewProps } from '../GraphView';\nimport type { Edge, InkFlowState, Node } from '../../types';\nimport { useStore } from '../../hooks';\nimport { useVisibleEdgeIds } from '../../hooks/useVisibleEdgeIds';\nimport { EdgeWrapper } from '../../components/EdgeWrapper';\n\ntype EdgeRendererProps<EdgeType extends Edge = Edge> = Pick<\n GraphViewProps<Node, EdgeType>,\n // | 'onEdgeClick'\n // | 'onEdgeDoubleClick'\n | 'rfId'\n // | 'onlyRenderVisibleElements'\n | 'onEdgeUpdate'\n // | 'onEdgeContextMenu'\n // | 'onEdgeMouseEnter'\n // | 'onEdgeMouseMove'\n // | 'onEdgeMouseLeave'\n // | 'onEdgeUpdateStart'\n // | 'onEdgeUpdateEnd'\n // | 'edgeUpdaterRadius'\n | 'noPanClassName'\n> & {\n children?: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => ({\n width: s.width,\n height: s.height,\n edgesFocusable: s.edgesFocusable,\n edgesUpdatable: s.edgesUpdatable,\n elementsSelectable: s.elementsSelectable,\n connectionMode: s.connectionMode,\n onError: s.onError,\n});\n\nfunction EdgeRendererComponent<EdgeType extends Edge = Edge>({\n // defaultMarkerColor,\n // onlyRenderVisibleElements,\n rfId,\n noPanClassName,\n onEdgeUpdate,\n}: // edgeTypes,\n\n// onEdgeContextMenu,\n// onEdgeMouseEnter,\n// onEdgeMouseMove,\n// onEdgeMouseLeave,\n// onEdgeClick,\n// edgeUpdaterRadius,\n// onEdgeDoubleClick,\n// onEdgeUpdateStart,\n// onEdgeUpdateEnd,\n// disableKeyboardA11y,\nEdgeRendererProps<EdgeType>) {\n const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } =\n useStore(selector, shallow);\n const edgeIds = useVisibleEdgeIds(false); // TODO onlyRenderVisibleElements\n\n return (\n <div className=\"ink-flow__edges\">\n <MarkerDefinitions defaultColor={''} rfId={rfId} />\n\n {edgeIds.map((id) => {\n return (\n <EdgeWrapper<EdgeType>\n key={id}\n id={id}\n edgesFocusable={edgesFocusable}\n edgesUpdatable={edgesUpdatable}\n elementsSelectable={elementsSelectable}\n noPanClassName={noPanClassName}\n onEdgeUpdate={onEdgeUpdate}\n // onContextMenu={onEdgeContextMenu}\n // onMouseEnter={onEdgeMouseEnter}\n // onMouseMove={onEdgeMouseMove}\n // onMouseLeave={onEdgeMouseLeave}\n // onClick={onEdgeClick}\n // edgeUpdaterRadius={edgeUpdaterRadius}\n // onDoubleClick={onEdgeDoubleClick}\n // onEdgeUpdateStart={onEdgeUpdateStart}\n // onEdgeUpdateEnd={onEdgeUpdateEnd}\n rfId={rfId}\n onError={onError}\n // edgeTypes={edgeTypes}\n // disableKeyboardA11y={disableKeyboardA11y}\n />\n );\n })}\n </div>\n );\n}\n\nEdgeRendererComponent.displayName = 'EdgeRenderer';\n\nexport const EdgeRenderer = memo(\n EdgeRendererComponent,\n) as typeof EdgeRendererComponent;\n","import { useCallback } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore } from './useStore';\nimport { InkFlowState } from '../types';\nimport { isEdgeVisible } from '../utils/edges';\n\n/**\n * Hook for getting the visible edge ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible edge ids\n */\nexport function useVisibleEdgeIds(onlyRenderVisible: boolean): string[] {\n const edgeIds = useStore(\n useCallback(\n (s: InkFlowState) => {\n if (!onlyRenderVisible) {\n return s.edges.map((edge) => edge.id);\n }\n\n const visibleEdgeIds = [];\n\n if (s.width && s.height) {\n for (const edge of s.edges) {\n const sourceNode = s.nodeLookup.get(edge.source);\n const targetNode = s.nodeLookup.get(edge.target);\n\n if (\n sourceNode &&\n targetNode &&\n isEdgeVisible({\n sourceNode,\n targetNode,\n width: s.width,\n height: s.height,\n transform: s.transform,\n })\n ) {\n visibleEdgeIds.push(edge.id);\n }\n }\n }\n\n return visibleEdgeIds;\n },\n [onlyRenderVisible],\n ),\n shallow,\n );\n\n return edgeIds;\n}\n","import type { ReactNode } from 'react';\n\nimport type { InkFlowState } from '../../types';\nimport { useStore } from '../../hooks';\n\nconst selector = (s: InkFlowState) => {\n // console.log('yk InkFlowState', s);\n\n return `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\n};\n\ntype ViewportProps = {\n children: ReactNode;\n};\n\nexport function Viewport({ children }: ViewportProps) {\n const transform = useStore(selector);\n\n return (\n <div\n className=\"ink-flow__viewport xyflow__viewport ink-flow__container\"\n style={{ transform }}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\n\nimport { FlowRenderer } from '../FlowRenderer';\nimport { NodeRenderer } from '../NodeRenderer';\nimport { EdgeRenderer } from '../EdgeRenderer';\nimport { Viewport } from '../Viewport';\nimport type { Edge, Node, InkFlowProps } from '../../types';\n\nexport type GraphViewProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Omit<\n InkFlowProps<NodeType, EdgeType>,\n | 'onSelectionChange'\n | 'nodes'\n | 'edges'\n | 'onMove'\n | 'onMoveStart'\n | 'onMoveEnd'\n | 'elevateEdgesOnSelect'\n> &\n Required<\n Pick<\n InkFlowProps<NodeType, EdgeType>,\n | 'minZoom'\n | 'maxZoom'\n | 'noPanClassName'\n | 'noDragClassName'\n | 'nodeOrigin'\n | 'disableKeyboardA11y'\n >\n > & {\n rfId: string;\n };\n\nfunction GraphViewComponent<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>({\n rfId,\n minZoom,\n maxZoom,\n noPanClassName,\n noDragClassName,\n nodeOrigin,\n viewport,\n disableKeyboardA11y,\n translateExtent,\n defaultViewport,\n nodeTypes,\n elementsSelectable,\n onPaneClick,\n onPaneContextMenu,\n}: GraphViewProps<NodeType, EdgeType>) {\n return (\n <FlowRenderer<NodeType>\n minZoom={minZoom}\n maxZoom={maxZoom}\n noPanClassName={noPanClassName}\n noDragClassName={noDragClassName}\n isControlledViewport={!!viewport}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n elementsSelectable={elementsSelectable}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n >\n <Viewport>\n <EdgeRenderer<EdgeType> rfId={rfId} noPanClassName={noPanClassName} />\n {/* <ConnectionLineWrapper /> */}\n <div className=\"ink-flow__edgelabel-renderer\" />\n <NodeRenderer<NodeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={false}\n />\n <div className=\"ink-flow__viewport-portal\" />\n </Viewport>\n </FlowRenderer>\n );\n}\n\nGraphViewComponent.displayName = 'GraphView';\n\nexport const GraphView = memo(GraphViewComponent) as typeof GraphViewComponent;\n","import { infiniteExtent } from '../constants';\n\nimport type { Edge, InternalNode, Node, InkFlowStore } from '../types';\nimport { ConnectionMode, Transform } from '../types/system';\nimport { adoptUserNodes, updateConnectionLookup } from '../utils/store';\n\nconst getInitialState = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n} = {}): InkFlowStore => {\n const nodeLookup = new Map<string, InternalNode>();\n const parentLookup = new Map();\n const connectionLookup = new Map();\n const edgeLookup = new Map();\n const storeEdges = defaultEdges ?? edges ?? [];\n const storeNodes = defaultNodes ?? nodes ?? [];\n\n updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);\n adoptUserNodes(storeNodes, nodeLookup, parentLookup, {\n nodeOrigin: [0, 0],\n elevateNodesOnSelect: false,\n });\n\n let transform: Transform = [0, 0, 1];\n\n // if (fitView && width && height) {\n // // @todo users nodeOrigin should be used here\n // const bounds = getInternalNodesBounds(nodeLookup, {\n // nodeOrigin: [0, 0],\n // filter: (node) =>\n // !!(\n // (node.width || node.initialWidth) &&\n // (node.height || node.initialHeight)\n // ),\n // });\n // const { x, y, zoom } = getViewportForBounds(\n // bounds,\n // width,\n // height,\n // 0.5,\n // 2,\n // 0.1,\n // );\n // transform = [x, y, zoom];\n // }\n\n return {\n rfId: '1',\n width: 0,\n height: 0,\n transform,\n nodes: storeNodes,\n nodeLookup,\n parentLookup,\n edges: storeEdges,\n edgeLookup,\n connectionLookup,\n onNodesChange: null,\n onEdgesChange: null,\n hasDefaultNodes: defaultNodes !== undefined,\n hasDefaultEdges: defaultEdges !== undefined,\n panZoom: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: infiniteExtent,\n nodeExtent: infiniteExtent,\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n connectionPosition: { x: 0, y: 0 },\n connectionStatus: null,\n connectionMode: ConnectionMode.Strict,\n domNode: null,\n paneDragging: false,\n noPanClassName: 'nopan',\n nodeOrigin: [0, 0],\n nodeDragThreshold: 1,\n\n snapGrid: [15, 15],\n snapToGrid: false,\n\n nodesDraggable: true,\n nodesConnectable: true,\n nodesFocusable: true,\n edgesFocusable: true,\n edgesUpdatable: true,\n elementsSelectable: true,\n elevateNodesOnSelect: true,\n elevateEdgesOnSelect: false,\n fitViewOnInit: false,\n fitViewDone: false,\n fitViewOnInitOptions: undefined,\n selectNodesOnDrag: true,\n\n multiSelectionActive: false,\n\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectOnClick: true,\n\n ariaLiveMessage: '',\n autoPanOnConnect: true,\n autoPanOnNodeDrag: true,\n connectionRadius: 20,\n onError: undefined,\n isValidConnection: undefined,\n onSelectionChangeHandlers: [],\n\n lib: 'react',\n debug: false,\n };\n};\n\nexport default getInitialState;\n","import { createWithEqualityFn } from 'zustand/traditional';\n\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n createSelectionChange,\n getSelectionChanges,\n} from '../utils/changes';\nimport getInitialState from './initialState';\nimport type {\n Node,\n Edge,\n InkFlowState,\n FitViewOptions,\n UnselectNodesAndEdgesParams,\n} from '../types';\nimport {\n adoptUserNodes,\n handleExpandParent,\n updateAbsolutePositions,\n updateConnectionLookup,\n updateNodeInternals as updateNodeInternalsSystem,\n} from '../utils/store';\nimport {\n EdgeSelectionChange,\n NodeChange,\n NodeSelectionChange,\n} from '../types/system';\nimport { ParentExpandChild } from '../types/utils/types';\nimport { clampPosition } from '../utils/general';\nimport { fitView as fitViewSystem } from '../utils/graph';\nimport { panBy as panBySystem } from '../utils/store';\n\nconst createStore = ({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) =>\n createWithEqualityFn<InkFlowState>(\n (set, get) => ({\n ...getInitialState({\n nodes,\n edges,\n width,\n height,\n fitView,\n defaultNodes,\n defaultEdges,\n }),\n setNodes: (nodes: Node[]) => {\n const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect } =\n get();\n // setNodes() is called exclusively in response to user actions:\n // - either when the `<InkFlow nodes>` prop is updated in the controlled InkFlow setup,\n // - or when the user calls something like `InkFlowInstance.setNodes()` in an uncontrolled InkFlow setup.\n //\n // When this happens, we take the note objects passed by the user and extend them with fields\n // relevant for internal Ink Flow operations.\n adoptUserNodes(nodes, nodeLookup, parentLookup, {\n nodeOrigin,\n elevateNodesOnSelect,\n checkEquality: true,\n });\n\n set({ nodes });\n },\n setEdges: (edges: Edge[]) => {\n const { connectionLookup, edgeLookup } = get();\n\n updateConnectionLookup(connectionLookup, edgeLookup, edges);\n\n set({ edges });\n },\n setDefaultNodesAndEdges: (nodes?: Node[], edges?: Edge[]) => {\n if (nodes) {\n const { setNodes } = get();\n setNodes(nodes);\n set({ hasDefaultNodes: true });\n }\n if (edges) {\n const { setEdges } = get();\n setEdges(edges);\n set({ hasDefaultEdges: true });\n }\n },\n // Every node gets registerd at a ResizeObserver. Whenever a node\n // changes its dimensions, this function is called to measure the\n // new dimensions and update the nodes.\n updateNodeInternals: (updates) => {\n const {\n triggerNodeChanges,\n fitView,\n nodeLookup,\n parentLookup,\n fitViewOnInit,\n fitViewDone,\n fitViewOnInitOptions,\n domNode,\n nodeOrigin,\n debug,\n } = get();\n\n const { changes, updatedInternals } = updateNodeInternalsSystem(\n updates,\n nodeLookup,\n parentLookup,\n domNode,\n nodeOrigin,\n );\n\n if (!updatedInternals) {\n return;\n }\n\n updateAbsolutePositions(nodeLookup, { nodeOrigin });\n\n // we call fitView once initially after all dimensions are set\n let nextFitViewDone = fitViewDone;\n if (!fitViewDone && fitViewOnInit) {\n nextFitViewDone = fitView({\n ...fitViewOnInitOptions,\n nodes: fitViewOnInitOptions?.nodes,\n });\n }\n\n // here we are cirmumventing the onNodesChange handler\n // in order to be able to display nodes even if the user\n // has not provided an onNodesChange handler.\n // Nodes are only rendered if they have a width and height\n // attribute which they get from this handler.\n set({ fitViewDone: nextFitViewDone });\n\n if (changes?.length > 0) {\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n triggerNodeChanges?.(changes);\n }\n },\n updateNodePositions: (nodeDragItems, dragging = false) => {\n const parentExpandChildren: ParentExpandChild[] = [];\n const changes = [];\n\n for (const [id, dragItem] of nodeDragItems) {\n // @todo add expandParent to drag item so that we can get rid of the look up here\n const change: NodeChange = {\n id,\n type: 'position',\n position: dragItem.position,\n dragging,\n };\n\n if (dragItem?.expandParent && dragItem?.parentId && change.position) {\n parentExpandChildren.push({\n id,\n parentId: dragItem.parentId,\n rect: {\n ...dragItem.internals.positionAbsolute,\n width: dragItem.measured.width!,\n height: dragItem.measured.height!,\n },\n });\n\n change.position.x = Math.max(0, change.position.x);\n change.position.y = Math.max(0, change.position.y);\n }\n\n changes.push(change);\n }\n\n if (parentExpandChildren.length > 0) {\n const { nodeLookup, parentLookup } = get();\n const parentExpandChanges = handleExpandParent(\n parentExpandChildren,\n nodeLookup,\n parentLookup,\n );\n changes.push(...parentExpandChanges);\n }\n\n get().triggerNodeChanges(changes);\n },\n triggerNodeChanges: (changes) => {\n const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultNodes) {\n const updatedNodes = applyNodeChanges(changes, nodes);\n setNodes(updatedNodes);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger node changes', changes);\n }\n\n onNodesChange?.(changes);\n }\n },\n triggerEdgeChanges: (changes) => {\n const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } =\n get();\n\n if (changes?.length) {\n if (hasDefaultEdges) {\n const updatedEdges = applyEdgeChanges(changes, edges);\n setEdges(updatedEdges);\n }\n\n if (debug) {\n console.log('Ink Flow: trigger edge changes', changes);\n }\n\n onEdgesChange?.(changes);\n }\n },\n addSelectedNodes: (selectedNodeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const nodeChanges = selectedNodeIds.map((nodeId) =>\n createSelectionChange(nodeId, true),\n );\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n return;\n }\n\n triggerNodeChanges(\n getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true),\n );\n triggerEdgeChanges(getSelectionChanges(edgeLookup));\n },\n addSelectedEdges: (selectedEdgeIds) => {\n const {\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n\n if (multiSelectionActive) {\n const changedEdges = selectedEdgeIds.map((edgeId) =>\n createSelectionChange(edgeId, true),\n );\n triggerEdgeChanges(changedEdges as EdgeSelectionChange[]);\n return;\n }\n\n triggerEdgeChanges(\n getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds])),\n );\n triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));\n },\n unselectNodesAndEdges: ({\n nodes,\n edges,\n }: UnselectNodesAndEdgesParams = {}) => {\n const {\n edges: storeEdges,\n nodes: storeNodes,\n triggerNodeChanges,\n triggerEdgeChanges,\n } = get();\n const nodesToUnselect = nodes ? nodes : storeNodes;\n const edgesToUnselect = edges ? edges : storeEdges;\n\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n const edgeChanges = edgesToUnselect.map((edge) =>\n createSelectionChange(edge.id, false),\n );\n\n triggerNodeChanges(nodeChanges as NodeSelectionChange[]);\n triggerEdgeChanges(edgeChanges as EdgeSelectionChange[]);\n },\n setMinZoom: (minZoom) => {\n const { panZoom, maxZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ minZoom });\n },\n setMaxZoom: (maxZoom) => {\n const { panZoom, minZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n\n set({ maxZoom });\n },\n setTranslateExtent: (translateExtent) => {\n get().panZoom?.setTranslateExtent(translateExtent);\n\n set({ translateExtent });\n },\n resetSelectedElements: () => {\n const { edges, nodes, triggerNodeChanges, triggerEdgeChanges } = get();\n\n const nodeChanges = nodes.reduce<NodeSelectionChange[]>(\n (res, node) =>\n node.selected\n ? [\n ...res,\n createSelectionChange(node.id, false) as NodeSelectionChange,\n ]\n : res,\n [],\n );\n const edgeChanges = edges.reduce<EdgeSelectionChange[]>(\n (res, edge) =>\n edge.selected\n ? [\n ...res,\n createSelectionChange(edge.id, false) as EdgeSelectionChange,\n ]\n : res,\n [],\n );\n\n triggerNodeChanges(nodeChanges);\n triggerEdgeChanges(edgeChanges);\n },\n setNodeExtent: (nodeExtent) => {\n const { nodeLookup } = get();\n\n for (const [, node] of nodeLookup) {\n const positionAbsolute = clampPosition(node.position, nodeExtent);\n\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n positionAbsolute,\n },\n });\n }\n\n set({\n nodeExtent,\n });\n },\n panBy: (delta): boolean => {\n const { transform, width, height, panZoom, translateExtent } = get();\n return panBySystem({\n delta,\n panZoom,\n transform,\n translateExtent,\n width,\n height,\n });\n },\n fitView: (options?: FitViewOptions): boolean => {\n const {\n panZoom,\n width,\n height,\n minZoom,\n maxZoom,\n nodeOrigin,\n nodeLookup,\n } = get();\n\n if (!panZoom) {\n return false;\n }\n\n return fitViewSystem(\n {\n nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n nodeOrigin,\n },\n options,\n );\n },\n cancelConnection: () =>\n set({\n connectionStatus: null,\n connectionStartHandle: null,\n connectionEndHandle: null,\n }),\n updateConnection: (params) => {\n const { connectionPosition } = get();\n\n const currentConnection = {\n ...params,\n connectionPosition: params.connectionPosition ?? connectionPosition,\n };\n\n set(currentConnection);\n },\n\n reset: () => set({ ...getInitialState() }),\n }),\n Object.is,\n );\n\nexport { createStore };\n","import { useState, type ReactNode } from 'react';\n\nimport { Provider } from '../../contexts/StoreContext';\nimport { createStore } from '../../store';\nimport type { Node, Edge } from '../../types';\nimport { BatchProvider } from '../BatchProvider';\n\nexport type InkFlowProviderProps = {\n initialNodes?: Node[];\n initialEdges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n initialWidth?: number;\n initialHeight?: number;\n fitView?: boolean;\n children: ReactNode;\n};\n\nexport function InkFlowProvider({\n initialNodes: nodes,\n initialEdges: edges,\n defaultNodes,\n defaultEdges,\n initialWidth: width,\n initialHeight: height,\n fitView,\n children,\n}: InkFlowProviderProps) {\n const [store] = useState(() =>\n createStore({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n }),\n );\n\n return (\n <Provider value={store}>\n <BatchProvider>{children}</BatchProvider>\n </Provider>\n );\n}\n","import { useContext, type ReactNode } from 'react';\n\nimport StoreContext from '../../contexts/StoreContext';\nimport type { Node, Edge } from '../../types';\nimport { InkFlowProvider } from '../../components/InkFlowProvider';\n\nexport function Wrapper({\n children,\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n}: {\n children: ReactNode;\n nodes?: Node[];\n edges?: Edge[];\n defaultNodes?: Node[];\n defaultEdges?: Edge[];\n width?: number;\n height?: number;\n fitView?: boolean;\n}) {\n const isWrapped = useContext(StoreContext);\n\n if (isWrapped) {\n return <>{children}</>;\n }\n\n return (\n <InkFlowProvider\n initialNodes={nodes}\n initialEdges={edges}\n defaultNodes={defaultNodes}\n defaultEdges={defaultEdges}\n initialWidth={width}\n initialHeight={height}\n fitView={fitView}\n >\n {children}\n </InkFlowProvider>\n );\n}\n","import { NodeOrigin, Viewport } from '../../types/system';\n\nexport const defaultNodeOrigin: NodeOrigin = [0, 0];\nexport const defaultViewport: Viewport = { x: 0, y: 0, zoom: 1 };\n","/*\n * This component helps us to update the store with the vlues coming from the user.\n * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)\n * and values that have a dedicated setter function in the store (like `setNodes`).\n */\nimport { useEffect, useRef } from 'react';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\nimport type {\n Node,\n Edge,\n InkFlowState,\n InkFlowProps,\n FitViewOptions,\n} from '../../types';\nimport { infiniteExtent } from '../../constants';\nimport { CoordinateExtent } from '../../types/system';\nimport { defaultNodeOrigin } from '../../container/InkFlow/init-values';\n\n// these fields exist in the global store and we need to keep them up to date\nconst InkFlowFieldsToTrack = [\n 'nodes',\n 'edges',\n 'defaultNodes',\n 'defaultEdges',\n // 'onConnect',\n // 'onConnectStart',\n // 'onConnectEnd',\n // 'onClickConnectStart',\n // 'onClickConnectEnd',\n 'nodesDraggable',\n // 'nodesConnectable',\n // 'nodesFocusable',\n // 'edgesFocusable',\n // 'edgesUpdatable',\n // 'elevateNodesOnSelect',\n // 'elevateEdgesOnSelect',\n 'minZoom',\n 'maxZoom',\n 'nodeExtent',\n 'onNodesChange',\n 'onEdgesChange',\n 'elementsSelectable',\n // 'connectionMode',\n // 'snapGrid',\n // 'snapToGrid',\n 'translateExtent',\n // 'connectOnClick',\n 'defaultEdgeOptions',\n 'fitView',\n 'fitViewOptions',\n // 'onNodesDelete',\n // 'onEdgesDelete',\n // 'onDelete',\n // 'onNodeDrag',\n // 'onNodeDragStart',\n // 'onNodeDragStop',\n // 'onSelectionDrag',\n // 'onSelectionDragStart',\n // 'onSelectionDragStop',\n // 'onMoveStart',\n // 'onMove',\n // 'onMoveEnd',\n // 'noPanClassName',\n // 'nodeOrigin',\n // 'autoPanOnConnect',\n // 'autoPanOnNodeDrag',\n // 'onError',\n // 'connectionRadius',\n // 'isValidConnection',\n // 'selectNodesOnDrag',\n // 'nodeDragThreshold',\n // 'onBeforeDelete',\n // 'debug',\n] as const;\n\ntype InkFlowFieldsToTrack = typeof InkFlowFieldsToTrack[number];\ntype StoreUpdaterProps<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n> = Pick<InkFlowProps<NodeType, EdgeType>, InkFlowFieldsToTrack> & {\n rfId: string;\n};\n\n// rfId doesn't exist in InkFlowProps, but it's one of the fields we want to update\nconst fieldsToTrack = [...InkFlowFieldsToTrack, 'rfId'] as const;\n\nconst selector = (s: InkFlowState) => ({\n setNodes: s.setNodes,\n setEdges: s.setEdges,\n setMinZoom: s.setMinZoom,\n setMaxZoom: s.setMaxZoom,\n setTranslateExtent: s.setTranslateExtent,\n setNodeExtent: s.setNodeExtent,\n reset: s.reset,\n setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n});\n\nconst initPrevValues = {\n // these are values that are also passed directly to other components\n // than the StoreUpdater. We can reduce the number of setStore calls\n // by setting the same values here as prev fields.\n translateExtent: infiniteExtent,\n nodeOrigin: defaultNodeOrigin,\n minZoom: 0.5,\n maxZoom: 2,\n elementsSelectable: true,\n noPanClassName: 'nopan',\n rfId: '1',\n};\n\nexport function StoreUpdater<\n NodeType extends Node = Node,\n EdgeType extends Edge = Edge,\n>(props: StoreUpdaterProps<NodeType, EdgeType>) {\n const {\n setNodes,\n setEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n reset,\n setDefaultNodesAndEdges,\n } = useStore(selector, shallow);\n const store = useStoreApi<NodeType, EdgeType>();\n\n useEffect(() => {\n setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);\n\n return () => {\n // when we reset the store we also need to reset the previous fields\n previousFields.current = initPrevValues;\n reset();\n };\n }, []);\n\n const previousFields =\n useRef<Partial<StoreUpdaterProps<NodeType, EdgeType>>>(initPrevValues);\n\n useEffect(\n () => {\n for (const fieldName of fieldsToTrack) {\n const fieldValue = props[fieldName];\n const previousFieldValue = previousFields.current[fieldName];\n\n if (fieldValue === previousFieldValue) continue;\n if (typeof props[fieldName] === 'undefined') continue;\n // Custom handling with dedicated setters for some fields\n if (fieldName === 'nodes') setNodes(fieldValue as Node[]);\n else if (fieldName === 'edges') setEdges(fieldValue as Edge[]);\n else if (fieldName === 'minZoom') setMinZoom(fieldValue as number);\n else if (fieldName === 'maxZoom') setMaxZoom(fieldValue as number);\n else if (fieldName === 'translateExtent')\n setTranslateExtent(fieldValue as CoordinateExtent);\n else if (fieldName === 'nodeExtent')\n setNodeExtent(fieldValue as CoordinateExtent);\n // Renamed fields\n else if (fieldName === 'fitView')\n store.setState({ fitViewOnInit: fieldValue as boolean });\n else if (fieldName === 'fitViewOptions')\n store.setState({\n fitViewOnInitOptions: fieldValue as FitViewOptions,\n });\n // General case\n else store.setState({ [fieldName]: fieldValue });\n }\n\n previousFields.current = props;\n },\n // Only re-run the effect if one of the fields we track changes\n fieldsToTrack.map((fieldName) => props[fieldName]),\n );\n\n return null;\n}\n","import { ForwardedRef, type CSSProperties } from 'react';\nimport cls from 'classnames';\nimport type { Edge, Node, InkFlowProps } from '../../types';\nimport { GraphView } from '../GraphView';\nimport { Wrapper } from './Wrapper';\nimport { StoreUpdater } from '../../components/StoreUpdater';\nimport { fixedForwardRef } from '../../utils/general';\nimport { infiniteExtent } from '../../constants';\nimport {\n defaultViewport as initViewport,\n defaultNodeOrigin,\n} from './init-values';\n\nconst wrapperStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n zIndex: 0,\n};\n\nfunction InkFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(\n {\n nodes,\n edges,\n translateExtent = infiniteExtent,\n defaultViewport = initViewport,\n minZoom = 0.5,\n maxZoom = 2,\n nodeOrigin,\n noDragClassName,\n noPanClassName,\n disableKeyboardA11y,\n nodeTypes,\n onNodesChange,\n onEdgesChange,\n fitView,\n fitViewOptions,\n nodeExtent,\n nodesDraggable,\n children,\n id,\n width,\n height,\n onPaneClick,\n onPaneContextMenu,\n ...rest\n }: InkFlowProps<NodeType, EdgeType>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const rfId = id || '1';\n console.log('yk 22', onPaneClick, onPaneContextMenu);\n\n return (\n <div\n {...rest}\n ref={ref}\n style={{ ...wrapperStyle }}\n className={cls(['ink-flow'])}\n data-testid=\"rf__wrapper\"\n id={id}\n >\n <Wrapper\n nodes={nodes}\n edges={edges}\n width={width}\n height={height}\n fitView={fitView}\n >\n <GraphView<NodeType, EdgeType>\n rfId={rfId}\n nodeTypes={nodeTypes}\n minZoom={minZoom}\n maxZoom={maxZoom}\n nodeOrigin={nodeOrigin}\n noDragClassName={noDragClassName}\n noPanClassName={noPanClassName}\n disableKeyboardA11y={disableKeyboardA11y}\n translateExtent={translateExtent}\n defaultViewport={defaultViewport}\n onPaneClick={onPaneClick}\n onPaneContextMenu={onPaneContextMenu}\n />\n <StoreUpdater<NodeType, EdgeType>\n nodes={nodes}\n edges={edges}\n rfId={rfId}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n fitView={fitView}\n fitViewOptions={fitViewOptions}\n nodeExtent={nodeExtent}\n nodesDraggable={nodesDraggable}\n />\n {children}\n </Wrapper>\n </div>\n );\n}\n\nexport default fixedForwardRef(InkFlow);\n","export function PlusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 4.375C10.3452 4.375 10.625 4.65482 10.625 5V9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H10.625V15C10.625 15.3452 10.3452 15.625 10 15.625C9.65482 15.625 9.375 15.3452 9.375 15V10.625H5C4.65482 10.625 4.375 10.3452 4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H9.375V5C9.375 4.65482 9.65482 4.375 10 4.375Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function MinusIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.375 10C4.375 9.65482 4.65482 9.375 5 9.375H15C15.3452 9.375 15.625 9.65482 15.625 10C15.625 10.3452 15.3452 10.625 15 10.625H5C4.65482 10.625 4.375 10.3452 4.375 10Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function FitViewIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 1.875C10.3452 1.875 10.625 2.15482 10.625 2.5V3.57152C13.6929 3.86613 16.1339 6.30708 16.4285 9.375H17.5C17.8452 9.375 18.125 9.65482 18.125 10C18.125 10.3452 17.8452 10.625 17.5 10.625H16.4285C16.1339 13.6929 13.6929 16.1339 10.625 16.4285V17.5C10.625 17.8452 10.3452 18.125 10 18.125C9.65482 18.125 9.375 17.8452 9.375 17.5V16.4285C6.30708 16.1339 3.86613 13.6929 3.57152 10.625H2.5C2.15482 10.625 1.875 10.3452 1.875 10C1.875 9.65482 2.15482 9.375 2.5 9.375H3.57152C3.86613 6.30708 6.30708 3.86613 9.375 3.57152V2.5C9.375 2.15482 9.65482 1.875 10 1.875ZM4.82878 10.625H5.83333C6.17851 10.625 6.45833 10.3452 6.45833 10C6.45833 9.65482 6.17851 9.375 5.83333 9.375H4.82878C5.11304 6.99811 6.99811 5.11304 9.375 4.82878V5.83333C9.375 6.17851 9.65482 6.45833 10 6.45833C10.3452 6.45833 10.625 6.17851 10.625 5.83333V4.82878C13.0019 5.11304 14.887 6.99811 15.1712 9.375H14.1667C13.8215 9.375 13.5417 9.65482 13.5417 10C13.5417 10.3452 13.8215 10.625 14.1667 10.625H15.1712C14.887 13.0019 13.0019 14.887 10.625 15.1712V14.1667C10.625 13.8215 10.3452 13.5417 10 13.5417C9.65482 13.5417 9.375 13.8215 9.375 14.1667V15.1712C6.99811 14.887 5.11304 13.0019 4.82878 10.625Z\"\n fill=\"#6B7280\"\n />\n </svg>\n );\n}\n","export function LockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\" />\n </svg>\n );\n}\n","export function UnlockIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 32\">\n <path d=\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\" />\n </svg>\n );\n}\n","import cc from 'classnames';\n\nimport type { ControlButtonProps } from './types';\n\nexport function ControlButton({\n children,\n className,\n ...rest\n}: ControlButtonProps) {\n return (\n <button\n type=\"button\"\n className={cc(['ink-flow__controls-button', className])}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport cc from 'classnames';\n\nimport { useStore } from '../../hooks/useStore';\nimport type { InkFlowState } from '../../types';\nimport { PanelPosition } from '../../types/system';\n\nexport type PanelProps = HTMLAttributes<HTMLDivElement> & {\n /** Set position of the panel\n * @example 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n */\n position?: PanelPosition;\n children: ReactNode;\n};\n\nconst selector = (s: InkFlowState) => (s.userSelectionActive ? 'none' : 'all');\n\nexport function Panel({\n position = 'top-left',\n children,\n className,\n style,\n ...rest\n}: PanelProps) {\n const pointerEvents = useStore(selector);\n const positionClasses = `${position}`.split('-');\n\n return (\n <div\n className={cc(['ink-flow__panel', className, ...positionClasses])}\n style={{ ...style, pointerEvents }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import { memo } from 'react';\nimport cc from 'classnames';\nimport { shallow } from 'zustand/shallow';\n\nimport { useStore, useStoreApi } from '../../hooks/useStore';\n\nimport { PlusIcon } from './Icons/Plus';\nimport { MinusIcon } from './Icons/Minus';\nimport { FitViewIcon } from './Icons/FitView';\nimport { LockIcon } from './Icons/Lock';\nimport { UnlockIcon } from './Icons/Unlock';\nimport { ControlButton } from './ControlButton';\nimport type { ControlProps } from './types';\nimport { InkFlowState } from '../../types';\nimport { useInkFlow } from '../../hooks/useInkFlow';\nimport { Panel } from '../../components/Panel';\n\nconst selector = (s: InkFlowState) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n minZoomReached: s.transform[2] <= s.minZoom,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n});\n\nfunction ControlsComponent({\n style,\n showZoom = true,\n showFitView = true,\n showInteractive = true,\n fitViewOptions,\n onZoomIn,\n onZoomOut,\n onFitView,\n onInteractiveChange,\n className,\n children,\n position = 'bottom-left',\n orientation = 'vertical',\n 'aria-label': ariaLabel = 'Ink Flow controls',\n}: ControlProps) {\n const store = useStoreApi();\n const { isInteractive, minZoomReached, maxZoomReached } = useStore(\n selector,\n shallow,\n );\n const { zoomIn, zoomOut, fitView } = useInkFlow();\n\n const onZoomInHandler = () => {\n zoomIn();\n onZoomIn?.();\n };\n\n const onZoomOutHandler = () => {\n zoomOut();\n onZoomOut?.();\n };\n\n const onFitViewHandler = () => {\n fitView(fitViewOptions);\n onFitView?.();\n };\n\n const onToggleInteractivity = () => {\n store.setState({\n nodesDraggable: !isInteractive,\n nodesConnectable: !isInteractive,\n elementsSelectable: !isInteractive,\n });\n\n onInteractiveChange?.(!isInteractive);\n };\n\n const orientationClass =\n orientation === 'horizontal' ? 'horizontal' : 'vertical';\n\n return (\n <Panel\n className={cc(['ink-flow__controls', orientationClass, className])}\n position={position}\n style={style}\n data-testid=\"rf__controls\"\n aria-label={ariaLabel}\n >\n {showFitView && (\n <ControlButton\n className=\"ink-flow__controls-fitview\"\n onClick={onFitViewHandler}\n title=\"fit view\"\n aria-label=\"fit view\"\n >\n <FitViewIcon />\n </ControlButton>\n )}\n\n {showZoom && (\n <div className=\"ink-flow__controls-zoom\">\n <ControlButton\n onClick={onZoomInHandler}\n className=\"ink-flow__controls-zoomin\"\n title=\"zoom in\"\n aria-label=\"zoom in\"\n disabled={maxZoomReached}\n >\n <PlusIcon />\n </ControlButton>\n <ControlButton\n onClick={onZoomOutHandler}\n className=\"ink-flow__controls-zoomout\"\n title=\"zoom out\"\n aria-label=\"zoom out\"\n disabled={minZoomReached}\n >\n <MinusIcon />\n </ControlButton>\n </div>\n )}\n\n {showInteractive && (\n <ControlButton\n className=\"ink-flow__controls-interactive\"\n onClick={onToggleInteractivity}\n title=\"toggle interactivity\"\n aria-label=\"toggle interactivity\"\n >\n {isInteractive ? <UnlockIcon /> : <LockIcon />}\n </ControlButton>\n )}\n {children}\n </Panel>\n );\n}\n\nControlsComponent.displayName = 'Controls';\n\nexport const Controls = memo(ControlsComponent);\n","console.log('types');\nexport * from './nodes';\nexport * from './edges';\nexport * from './props';\nexport * from './general';\nexport * from './store';\nexport * from './system/utils';\n// export * from './instance';\n","var n,r,t,e,o,i,u,a,f,c,s,d,h,v,l,p,g,y,b,m,_,w,E,j,k,x,N,O,I,C,A,M,L,P,S,T,R,z,F,D,B,U,G,V,q,$,Y,W,J,K,Q,H,X,Z,nn,rn,tn,en,on,un,an,fn,cn,sn,dn,hn,vn,ln,pn,gn,yn,bn,mn,_n,wn,En,jn,kn,xn,Nn,On,In,Cn,An,Mn,Ln,Pn,Sn,Tn,Rn,zn,Fn,Dn,Bn,Un,Gn,Vn,qn,$n,Yn,Wn,Jn,Kn,Qn,Hn,Xn,Zn,nr,rr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function tr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,\"default\")?n.default:n}function er(){if(e)return t;return e=1,t=function(n,r){return n===r||n!=n&&r!=r}}function or(){if(i)return o;i=1;var n=er();return o=function(r,t){for(var e=r.length;e--;)if(n(r[e][0],t))return e;return-1}}function ir(){if(p)return l;p=1;var t=r?n:(r=1,n=function(){this.__data__=[],this.size=0}),e=function(){if(a)return u;a=1;var n=or(),r=Array.prototype.splice;return u=function(t){var e=this.__data__,o=n(e,t);return!(o<0||(o==e.length-1?e.pop():r.call(e,o,1),--this.size,0))}}(),o=function(){if(c)return f;c=1;var n=or();return f=function(r){var t=this.__data__,e=n(t,r);return e<0?void 0:t[e][1]}}(),i=function(){if(d)return s;d=1;var n=or();return s=function(r){return n(this.__data__,r)>-1}}(),g=function(){if(v)return h;v=1;var n=or();return h=function(r,t){var e=this.__data__,o=n(e,r);return o<0?(++this.size,e.push([r,t])):e[o][1]=t,this}}();function y(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return y.prototype.clear=t,y.prototype.delete=e,y.prototype.get=o,y.prototype.has=i,y.prototype.set=g,l=y}function ur(){if(x)return k;x=1;var n=\"object\"==typeof rr&&rr&&rr.Object===Object&&rr;return k=n}function ar(){if(O)return N;O=1;var n=ur(),r=\"object\"==typeof self&&self&&self.Object===Object&&self,t=n||r||Function(\"return this\")();return N=t}function fr(){if(C)return I;C=1;var n=ar().Symbol;return I=n}function cr(){if(T)return S;T=1;var n=fr(),r=function(){if(M)return A;M=1;var n=fr(),r=Object.prototype,t=r.hasOwnProperty,e=r.toString,o=n?n.toStringTag:void 0;return A=function(n){var r=t.call(n,o),i=n[o];try{n[o]=void 0;var u=!0}catch(n){}var a=e.call(n);return u&&(r?n[o]=i:delete n[o]),a}}(),t=function(){if(P)return L;P=1;var n=Object.prototype.toString;return L=function(r){return n.call(r)}}(),e=n?n.toStringTag:void 0;return S=function(n){return null==n?void 0===n?\"[object Undefined]\":\"[object Null]\":e&&e in Object(n)?r(n):t(n)}}function sr(){if(z)return R;return z=1,R=function(n){var r=typeof n;return null!=n&&(\"object\"==r||\"function\"==r)}}function dr(){if(D)return F;D=1;var n=cr(),r=sr();return F=function(t){if(!r(t))return!1;var e=n(t);return\"[object Function]\"==e||\"[object GeneratorFunction]\"==e||\"[object AsyncFunction]\"==e||\"[object Proxy]\"==e}}function hr(){if(V)return G;V=1;var n,r=function(){if(U)return B;U=1;var n=ar()[\"__core-js_shared__\"];return B=n}(),t=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\";return G=function(n){return!!t&&t in n}}function vr(){if($)return q;$=1;var n=Function.prototype.toString;return q=function(r){if(null!=r){try{return n.call(r)}catch(n){}try{return r+\"\"}catch(n){}}return\"\"}}function lr(){if(H)return Q;H=1;var n=function(){if(W)return Y;W=1;var n=dr(),r=hr(),t=sr(),e=vr(),o=/^\\[object .+?Constructor\\]$/,i=Function.prototype,u=Object.prototype,a=i.toString,f=u.hasOwnProperty,c=RegExp(\"^\"+a.call(f).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");return Y=function(i){return!(!t(i)||r(i))&&(n(i)?c:o).test(e(i))}}(),r=K?J:(K=1,J=function(n,r){return null==n?void 0:n[r]});return Q=function(t,e){var o=r(t,e);return n(o)?o:void 0}}function pr(){if(Z)return X;Z=1;var n=lr()(ar(),\"Map\");return X=n}function gr(){if(rn)return nn;rn=1;var n=lr()(Object,\"create\");return nn=n}function yr(){if(ln)return vn;ln=1;var n=function(){if(en)return tn;en=1;var n=gr();return tn=function(){this.__data__=n?n(null):{},this.size=0}}(),r=un?on:(un=1,on=function(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}),t=function(){if(fn)return an;fn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return an=function(t){var e=this.__data__;if(n){var o=e[t];return\"__lodash_hash_undefined__\"===o?void 0:o}return r.call(e,t)?e[t]:void 0}}(),e=function(){if(sn)return cn;sn=1;var n=gr(),r=Object.prototype.hasOwnProperty;return cn=function(t){var e=this.__data__;return n?void 0!==e[t]:r.call(e,t)}}(),o=function(){if(hn)return dn;hn=1;var n=gr();return dn=function(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=n&&void 0===t?\"__lodash_hash_undefined__\":t,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,vn=i}function br(){if(_n)return mn;_n=1;var n=bn?yn:(bn=1,yn=function(n){var r=typeof n;return\"string\"==r||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==n:null===n});return mn=function(r,t){var e=r.__data__;return n(t)?e[\"string\"==typeof t?\"string\":\"hash\"]:e.map}}function mr(){if(An)return Cn;An=1;var n=function(){if(gn)return pn;gn=1;var n=yr(),r=ir(),t=pr();return pn=function(){this.size=0,this.__data__={hash:new n,map:new(t||r),string:new n}}}(),r=function(){if(En)return wn;En=1;var n=br();return wn=function(r){var t=n(this,r).delete(r);return this.size-=t?1:0,t}}(),t=function(){if(kn)return jn;kn=1;var n=br();return jn=function(r){return n(this,r).get(r)}}(),e=function(){if(Nn)return xn;Nn=1;var n=br();return xn=function(r){return n(this,r).has(r)}}(),o=function(){if(In)return On;In=1;var n=br();return On=function(r,t){var e=n(this,r),o=e.size;return e.set(r,t),this.size+=e.size==o?0:1,this}}();function i(n){var r=-1,t=null==n?0:n.length;for(this.clear();++r<t;){var e=n[r];this.set(e[0],e[1])}}return i.prototype.clear=n,i.prototype.delete=r,i.prototype.get=t,i.prototype.has=e,i.prototype.set=o,Cn=i}function _r(){if(Sn)return Pn;Sn=1;var n=ir(),r=function(){if(y)return g;y=1;var n=ir();return g=function(){this.__data__=new n,this.size=0}}(),t=m?b:(m=1,b=function(n){var r=this.__data__,t=r.delete(n);return this.size=r.size,t}),e=w?_:(w=1,_=function(n){return this.__data__.get(n)}),o=j?E:(j=1,E=function(n){return this.__data__.has(n)}),i=function(){if(Ln)return Mn;Ln=1;var n=ir(),r=pr(),t=mr();return Mn=function(e,o){var i=this.__data__;if(i instanceof n){var u=i.__data__;if(!r||u.length<199)return u.push([e,o]),this.size=++i.size,this;i=this.__data__=new t(u)}return i.set(e,o),this.size=i.size,this}}();function u(r){var t=this.__data__=new n(r);this.size=t.size}return u.prototype.clear=r,u.prototype.delete=t,u.prototype.get=e,u.prototype.has=o,u.prototype.set=i,Pn=u}function wr(){if(Rn)return Tn;return Rn=1,Tn=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e&&!1!==r(n[t],t,n););return n}}function Er(){if(Fn)return zn;Fn=1;var n=lr(),r=function(){try{var r=n(Object,\"defineProperty\");return r({},\"\",{}),r}catch(n){}}();return zn=r}function jr(){if(Bn)return Dn;Bn=1;var n=Er();return Dn=function(r,t,e){\"__proto__\"==t&&n?n(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}}function kr(){if(Gn)return Un;Gn=1;var n=jr(),r=er(),t=Object.prototype.hasOwnProperty;return Un=function(e,o,i){var u=e[o];t.call(e,o)&&r(u,i)&&(void 0!==i||o in e)||n(e,o,i)}}function xr(){if(qn)return Vn;qn=1;var n=kr(),r=jr();return Vn=function(t,e,o,i){var u=!o;o||(o={});for(var a=-1,f=e.length;++a<f;){var c=e[a],s=i?i(o[c],t[c],c,o,t):void 0;void 0===s&&(s=t[c]),u?r(o,c,s):n(o,c,s)}return o}}function Nr(){if(Jn)return Wn;return Jn=1,Wn=function(n){return null!=n&&\"object\"==typeof n}}function Or(){if(Xn)return Hn;Xn=1;var n=function(){if(Qn)return Kn;Qn=1;var n=cr(),r=Nr();return Kn=function(t){return r(t)&&\"[object Arguments]\"==n(t)}}(),r=Nr(),t=Object.prototype,e=t.hasOwnProperty,o=t.propertyIsEnumerable,i=n(function(){return arguments}())?n:function(n){return r(n)&&e.call(n,\"callee\")&&!o.call(n,\"callee\")};return Hn=i}function Ir(){if(nr)return Zn;nr=1;var n=Array.isArray;return Zn=n}var Cr,Ar,Mr,Lr,Pr,Sr,Tr,Rr,zr,Fr,Dr,Br={exports:{}};function Ur(){return Mr||(Mr=1,function(n,r){var t=ar(),e=Ar?Cr:(Ar=1,Cr=function(){return!1}),o=r&&!r.nodeType&&r,i=o&&n&&!n.nodeType&&n,u=i&&i.exports===o?t.Buffer:void 0,a=(u?u.isBuffer:void 0)||e;n.exports=a}(Br,Br.exports)),Br.exports}function Gr(){if(Pr)return Lr;Pr=1;var n=/^(?:0|[1-9]\\d*)$/;return Lr=function(r,t){var e=typeof r;return!!(t=null==t?9007199254740991:t)&&(\"number\"==e||\"symbol\"!=e&&n.test(r))&&r>-1&&r%1==0&&r<t}}function Vr(){if(Tr)return Sr;Tr=1;return Sr=function(n){return\"number\"==typeof n&&n>-1&&n%1==0&&n<=9007199254740991}}function qr(){if(Dr)return Fr;return Dr=1,Fr=function(n){return function(r){return n(r)}}}Br.exports;var $r,Yr,Wr,Jr,Kr,Qr,Hr,Xr,Zr,nt,rt,tt,et,ot,it,ut,at,ft,ct,st,dt,ht,vt,lt,pt,gt,yt,bt={exports:{}};function mt(){return $r||($r=1,n=bt,r=bt.exports,t=ur(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e&&t.process,u=function(){try{var n=o&&o.require&&o.require(\"util\").types;return n||i&&i.binding&&i.binding(\"util\")}catch(n){}}(),n.exports=u),bt.exports;var n,r,t,e,o,i,u}function _t(){if(Wr)return Yr;Wr=1;var n=function(){if(zr)return Rr;zr=1;var n=cr(),r=Vr(),t=Nr(),e={};return e[\"[object Float32Array]\"]=e[\"[object Float64Array]\"]=e[\"[object Int8Array]\"]=e[\"[object Int16Array]\"]=e[\"[object Int32Array]\"]=e[\"[object Uint8Array]\"]=e[\"[object Uint8ClampedArray]\"]=e[\"[object Uint16Array]\"]=e[\"[object Uint32Array]\"]=!0,e[\"[object Arguments]\"]=e[\"[object Array]\"]=e[\"[object ArrayBuffer]\"]=e[\"[object Boolean]\"]=e[\"[object DataView]\"]=e[\"[object Date]\"]=e[\"[object Error]\"]=e[\"[object Function]\"]=e[\"[object Map]\"]=e[\"[object Number]\"]=e[\"[object Object]\"]=e[\"[object RegExp]\"]=e[\"[object Set]\"]=e[\"[object String]\"]=e[\"[object WeakMap]\"]=!1,Rr=function(o){return t(o)&&r(o.length)&&!!e[n(o)]}}(),r=qr(),t=mt(),e=t&&t.isTypedArray,o=e?r(e):n;return Yr=o}function wt(){if(Kr)return Jr;Kr=1;var n=Yn?$n:(Yn=1,$n=function(n,r){for(var t=-1,e=Array(n);++t<n;)e[t]=r(t);return e}),r=Or(),t=Ir(),e=Ur(),o=Gr(),i=_t(),u=Object.prototype.hasOwnProperty;return Jr=function(a,f){var c=t(a),s=!c&&r(a),d=!c&&!s&&e(a),h=!c&&!s&&!d&&i(a),v=c||s||d||h,l=v?n(a.length,String):[],p=l.length;for(var g in a)!f&&!u.call(a,g)||v&&(\"length\"==g||d&&(\"offset\"==g||\"parent\"==g)||h&&(\"buffer\"==g||\"byteLength\"==g||\"byteOffset\"==g)||o(g,p))||l.push(g);return l}}function Et(){if(Hr)return Qr;Hr=1;var n=Object.prototype;return Qr=function(r){var t=r&&r.constructor;return r===(\"function\"==typeof t&&t.prototype||n)}}function jt(){if(Zr)return Xr;return Zr=1,Xr=function(n,r){return function(t){return n(r(t))}}}function kt(){if(et)return tt;et=1;var n=Et(),r=function(){if(rt)return nt;rt=1;var n=jt()(Object.keys,Object);return nt=n}(),t=Object.prototype.hasOwnProperty;return tt=function(e){if(!n(e))return r(e);var o=[];for(var i in Object(e))t.call(e,i)&&\"constructor\"!=i&&o.push(i);return o}}function xt(){if(it)return ot;it=1;var n=dr(),r=Vr();return ot=function(t){return null!=t&&r(t.length)&&!n(t)}}function Nt(){if(at)return ut;at=1;var n=wt(),r=kt(),t=xt();return ut=function(e){return t(e)?n(e):r(e)}}function Ot(){if(vt)return ht;vt=1;var n=sr(),r=Et(),t=dt?st:(dt=1,st=function(n){var r=[];if(null!=n)for(var t in Object(n))r.push(t);return r}),e=Object.prototype.hasOwnProperty;return ht=function(o){if(!n(o))return t(o);var i=r(o),u=[];for(var a in o)(\"constructor\"!=a||!i&&e.call(o,a))&&u.push(a);return u}}function It(){if(pt)return lt;pt=1;var n=wt(),r=Ot(),t=xt();return lt=function(e){return t(e)?n(e,!0):r(e)}}bt.exports;var Ct,At,Mt,Lt,Pt,St,Tt,Rt,zt,Ft,Dt,Bt,Ut,Gt,Vt,qt,$t,Yt,Wt,Jt,Kt,Qt,Ht,Xt,Zt,ne,re,te,ee,oe,ie,ue,ae,fe,ce,se,de,he,ve,le,pe,ge,ye,be,me,_e,we,Ee,je,ke,xe,Ne,Oe,Ie,Ce,Ae,Me,Le,Pe,Se,Te,Re,ze,Fe,De,Be,Ue,Ge,Ve,qe,$e,Ye,We,Je,Ke,Qe,He,Xe,Ze,no,ro,to,eo,oo,io,uo,ao,fo,co,so,ho,vo,lo,po,go,yo,bo,mo,_o,wo,Eo,jo,ko,xo,No,Oo,Io,Co,Ao,Mo,Lo,Po,So,To,Ro,zo,Fo,Do,Bo,Uo,Go,Vo,qo,$o,Yo,Wo,Jo,Ko,Qo,Ho,Xo,Zo,ni,ri,ti,ei,oi,ii,ui,ai,fi,ci,si,di,hi,vi,li,pi,gi,yi,bi,mi,_i,wi,Ei,ji,ki,xi,Ni,Oi,Ii,Ci,Ai,Mi,Li,Pi,Si,Ti,Ri,zi,Fi,Di,Bi,Ui,Gi,Vi,qi,$i,Yi,Wi,Ji,Ki,Qi,Hi,Xi,Zi,nu,ru,tu,eu,ou,iu,uu,au,fu,cu,su,du,hu,vu,lu,pu,gu,yu,bu,mu,_u,wu,Eu,ju,ku,xu,Nu,Ou,Iu,Cu,Au,Mu,Lu,Pu,Su,Tu,Ru,zu,Fu,Du,Bu,Uu,Gu,Vu,qu,$u,Yu,Wu,Ju,Ku,Qu,Hu,Xu,Zu,na,ra,ta,ea,oa,ia,ua,aa,fa,ca,sa,da,ha,va,la,pa,ga,ya,ba,ma,_a,wa,Ea,ja,ka,xa,Na,Oa,Ia,Ca,Aa,Ma,La,Pa,Sa,Ta,Ra,za,Fa,Da,Ba={exports:{}};function Ua(){return Ct||(Ct=1,n=Ba,r=Ba.exports,t=ar(),e=r&&!r.nodeType&&r,o=e&&n&&!n.nodeType&&n,i=o&&o.exports===e?t.Buffer:void 0,u=i?i.allocUnsafe:void 0,n.exports=function(n,r){if(r)return n.slice();var t=n.length,e=u?u(t):new n.constructor(t);return n.copy(e),e}),Ba.exports;var n,r,t,e,o,i,u}function Ga(){if(Mt)return At;return Mt=1,At=function(n,r){var t=-1,e=n.length;for(r||(r=Array(e));++t<e;)r[t]=n[t];return r}}function Va(){if(Pt)return Lt;return Pt=1,Lt=function(n,r){for(var t=-1,e=null==n?0:n.length,o=0,i=[];++t<e;){var u=n[t];r(u,t,n)&&(i[o++]=u)}return i}}function qa(){if(Tt)return St;return Tt=1,St=function(){return[]}}function $a(){if(zt)return Rt;zt=1;var n=Va(),r=qa(),t=Object.prototype.propertyIsEnumerable,e=Object.getOwnPropertySymbols;return Rt=e?function(r){return null==r?[]:(r=Object(r),n(e(r),(function(n){return t.call(r,n)})))}:r}function Ya(){if(Ut)return Bt;return Ut=1,Bt=function(n,r){for(var t=-1,e=r.length,o=n.length;++t<e;)n[o+t]=r[t];return n}}function Wa(){if(Vt)return Gt;Vt=1;var n=jt()(Object.getPrototypeOf,Object);return Gt=n}function Ja(){if($t)return qt;$t=1;var n=Ya(),r=Wa(),t=$a(),e=qa(),o=Object.getOwnPropertySymbols;return qt=o?function(e){for(var o=[];e;)n(o,t(e)),e=r(e);return o}:e}function Ka(){if(Kt)return Jt;Kt=1;var n=Ya(),r=Ir();return Jt=function(t,e,o){var i=e(t);return r(t)?i:n(i,o(t))}}function Qa(){if(Ht)return Qt;Ht=1;var n=Ka(),r=$a(),t=Nt();return Qt=function(e){return n(e,t,r)}}function Ha(){if(ie)return oe;ie=1;var n=lr()(ar(),\"Set\");return oe=n}function Xa(){if(ce)return fe;ce=1;var n=function(){if(re)return ne;re=1;var n=lr()(ar(),\"DataView\");return ne=n}(),r=pr(),t=function(){if(ee)return te;ee=1;var n=lr()(ar(),\"Promise\");return te=n}(),e=Ha(),o=function(){if(ae)return ue;ae=1;var n=lr()(ar(),\"WeakMap\");return ue=n}(),i=cr(),u=vr(),a=\"[object Map]\",f=\"[object Promise]\",c=\"[object Set]\",s=\"[object WeakMap]\",d=\"[object DataView]\",h=u(n),v=u(r),l=u(t),p=u(e),g=u(o),y=i;return(n&&y(new n(new ArrayBuffer(1)))!=d||r&&y(new r)!=a||t&&y(t.resolve())!=f||e&&y(new e)!=c||o&&y(new o)!=s)&&(y=function(n){var r=i(n),t=\"[object Object]\"==r?n.constructor:void 0,e=t?u(t):\"\";if(e)switch(e){case h:return d;case v:return a;case l:return f;case p:return c;case g:return s}return r}),fe=y}function Za(){if(ve)return he;ve=1;var n=ar().Uint8Array;return he=n}function nf(){if(pe)return le;pe=1;var n=Za();return le=function(r){var t=new r.constructor(r.byteLength);return new n(t).set(new n(r)),t}}function rf(){if(je)return Ee;je=1;var n=nf();return Ee=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}}function tf(){if(xe)return ke;xe=1;var n=nf(),r=function(){if(ye)return ge;ye=1;var n=nf();return ge=function(r,t){var e=t?n(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}}(),t=function(){if(me)return be;me=1;var n=/\\w*$/;return be=function(r){var t=new r.constructor(r.source,n.exec(r));return t.lastIndex=r.lastIndex,t}}(),e=function(){if(we)return _e;we=1;var n=fr(),r=n?n.prototype:void 0,t=r?r.valueOf:void 0;return _e=function(n){return t?Object(t.call(n)):{}}}(),o=rf();return ke=function(i,u,a){var f=i.constructor;switch(u){case\"[object ArrayBuffer]\":return n(i);case\"[object Boolean]\":case\"[object Date]\":return new f(+i);case\"[object DataView]\":return r(i,a);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return o(i,a);case\"[object Map]\":case\"[object Set]\":return new f;case\"[object Number]\":case\"[object String]\":return new f(i);case\"[object RegExp]\":return t(i);case\"[object Symbol]\":return e(i)}}}function ef(){if(Oe)return Ne;Oe=1;var n=sr(),r=Object.create,t=function(){function t(){}return function(e){if(!n(e))return{};if(r)return r(e);t.prototype=e;var o=new t;return t.prototype=void 0,o}}();return Ne=t}function of(){if(Ce)return Ie;Ce=1;var n=ef(),r=Wa(),t=Et();return Ie=function(e){return\"function\"!=typeof e.constructor||t(e)?{}:n(r(e))}}function uf(){if(Pe)return Le;Pe=1;var n=function(){if(Me)return Ae;Me=1;var n=Xa(),r=Nr();return Ae=function(t){return r(t)&&\"[object Map]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isMap,o=e?r(e):n;return Le=o}function af(){if(ze)return Re;ze=1;var n=function(){if(Te)return Se;Te=1;var n=Xa(),r=Nr();return Se=function(t){return r(t)&&\"[object Set]\"==n(t)}}(),r=qr(),t=mt(),e=t&&t.isSet,o=e?r(e):n;return Re=o}function ff(){if(De)return Fe;De=1;var n=_r(),r=wr(),t=kr(),e=function(){if(ct)return ft;ct=1;var n=xr(),r=Nt();return ft=function(t,e){return t&&n(e,r(e),t)}}(),o=function(){if(yt)return gt;yt=1;var n=xr(),r=It();return gt=function(t,e){return t&&n(e,r(e),t)}}(),i=Ua(),u=Ga(),a=function(){if(Dt)return Ft;Dt=1;var n=xr(),r=$a();return Ft=function(t,e){return n(t,r(t),e)}}(),f=function(){if(Wt)return Yt;Wt=1;var n=xr(),r=Ja();return Yt=function(t,e){return n(t,r(t),e)}}(),c=Qa(),s=function(){if(Zt)return Xt;Zt=1;var n=Ka(),r=Ja(),t=It();return Xt=function(e){return n(e,t,r)}}(),d=Xa(),h=function(){if(de)return se;de=1;var n=Object.prototype.hasOwnProperty;return se=function(r){var t=r.length,e=new r.constructor(t);return t&&\"string\"==typeof r[0]&&n.call(r,\"index\")&&(e.index=r.index,e.input=r.input),e}}(),v=tf(),l=of(),p=Ir(),g=Ur(),y=uf(),b=sr(),m=af(),_=Nt(),w=It(),E=\"[object Arguments]\",j=\"[object Function]\",k=\"[object Object]\",x={};return x[E]=x[\"[object Array]\"]=x[\"[object ArrayBuffer]\"]=x[\"[object DataView]\"]=x[\"[object Boolean]\"]=x[\"[object Date]\"]=x[\"[object Float32Array]\"]=x[\"[object Float64Array]\"]=x[\"[object Int8Array]\"]=x[\"[object Int16Array]\"]=x[\"[object Int32Array]\"]=x[\"[object Map]\"]=x[\"[object Number]\"]=x[k]=x[\"[object RegExp]\"]=x[\"[object Set]\"]=x[\"[object String]\"]=x[\"[object Symbol]\"]=x[\"[object Uint8Array]\"]=x[\"[object Uint8ClampedArray]\"]=x[\"[object Uint16Array]\"]=x[\"[object Uint32Array]\"]=!0,x[\"[object Error]\"]=x[j]=x[\"[object WeakMap]\"]=!1,Fe=function N(O,I,C,A,M,L){var P,S=1&I,T=2&I,R=4&I;if(C&&(P=M?C(O,A,M,L):C(O)),void 0!==P)return P;if(!b(O))return O;var z=p(O);if(z){if(P=h(O),!S)return u(O,P)}else{var F=d(O),D=F==j||\"[object GeneratorFunction]\"==F;if(g(O))return i(O,S);if(F==k||F==E||D&&!M){if(P=T||D?{}:l(O),!S)return T?f(O,o(P,O)):a(O,e(P,O))}else{if(!x[F])return M?O:{};P=v(O,F,S)}}L||(L=new n);var B=L.get(O);if(B)return B;L.set(O,P),m(O)?O.forEach((function(n){P.add(N(n,I,C,n,O,L))})):y(O)&&O.forEach((function(n,r){P.set(r,N(n,I,C,r,O,L))}));var U=z?void 0:(R?T?s:c:T?w:_)(O);return r(U||O,(function(n,r){U&&(n=O[r=n]),t(P,r,N(n,I,C,r,O,L))})),P},Fe}function cf(){if(Ue)return Be;Ue=1;var n=ff();return Be=function(r){return n(r,4)}}function sf(){if(Ve)return Ge;return Ve=1,Ge=function(n){return function(){return n}}}function df(){if(We)return Ye;We=1;var n=($e?qe:($e=1,qe=function(n){return function(r,t,e){for(var o=-1,i=Object(r),u=e(r),a=u.length;a--;){var f=u[n?a:++o];if(!1===t(i[f],f,i))break}return r}}))();return Ye=n}function hf(){if(Ke)return Je;Ke=1;var n=df(),r=Nt();return Je=function(t,e){return t&&n(t,e,r)}}function vf(){if(Ze)return Xe;Ze=1;var n=hf(),r=function(){if(He)return Qe;He=1;var n=xt();return Qe=function(r,t){return function(e,o){if(null==e)return e;if(!n(e))return r(e,o);for(var i=e.length,u=t?i:-1,a=Object(e);(t?u--:++u<i)&&!1!==o(a[u],u,a););return e}}}()(n);return Xe=r}function lf(){if(ro)return no;return ro=1,no=function(n){return n}}function pf(){if(eo)return to;eo=1;var n=lf();return to=function(r){return\"function\"==typeof r?r:n}}function gf(){if(io)return oo;io=1;var n=wr(),r=vf(),t=pf(),e=Ir();return oo=function(o,i){return(e(o)?n:r)(o,t(i))}}function yf(){return ao?uo:(ao=1,uo=gf())}function bf(){if(go)return po;go=1;var n=mr(),r=ho?so:(ho=1,so=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this}),t=lo?vo:(lo=1,vo=function(n){return this.__data__.has(n)});function e(r){var t=-1,e=null==r?0:r.length;for(this.__data__=new n;++t<e;)this.add(r[t])}return e.prototype.add=e.prototype.push=r,e.prototype.has=t,po=e}function mf(){if(_o)return mo;return _o=1,mo=function(n,r){return n.has(r)}}function _f(){if(Eo)return wo;Eo=1;var n=bf(),r=bo?yo:(bo=1,yo=function(n,r){for(var t=-1,e=null==n?0:n.length;++t<e;)if(r(n[t],t,n))return!0;return!1}),t=mf();return wo=function(e,o,i,u,a,f){var c=1&i,s=e.length,d=o.length;if(s!=d&&!(c&&d>s))return!1;var h=f.get(e),v=f.get(o);if(h&&v)return h==o&&v==e;var l=-1,p=!0,g=2&i?new n:void 0;for(f.set(e,o),f.set(o,e);++l<s;){var y=e[l],b=o[l];if(u)var m=c?u(b,y,l,o,e,f):u(y,b,l,e,o,f);if(void 0!==m){if(m)continue;p=!1;break}if(g){if(!r(o,(function(n,r){if(!t(g,r)&&(y===n||a(y,n,i,u,f)))return g.push(r)}))){p=!1;break}}else if(y!==b&&!a(y,b,i,u,f)){p=!1;break}}return f.delete(e),f.delete(o),p}}function wf(){if(No)return xo;return No=1,xo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n){t[++r]=n})),t}}function Ef(){if(Io)return Oo;Io=1;var n=fr(),r=Za(),t=er(),e=_f(),o=ko?jo:(ko=1,jo=function(n){var r=-1,t=Array(n.size);return n.forEach((function(n,e){t[++r]=[e,n]})),t}),i=wf(),u=n?n.prototype:void 0,a=u?u.valueOf:void 0;return Oo=function(n,u,f,c,s,d,h){switch(f){case\"[object DataView]\":if(n.byteLength!=u.byteLength||n.byteOffset!=u.byteOffset)return!1;n=n.buffer,u=u.buffer;case\"[object ArrayBuffer]\":return!(n.byteLength!=u.byteLength||!d(new r(n),new r(u)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return t(+n,+u);case\"[object Error]\":return n.name==u.name&&n.message==u.message;case\"[object RegExp]\":case\"[object String]\":return n==u+\"\";case\"[object Map]\":var v=o;case\"[object Set]\":var l=1&c;if(v||(v=i),n.size!=u.size&&!l)return!1;var p=h.get(n);if(p)return p==u;c|=2,h.set(n,u);var g=e(v(n),v(u),c,s,d,h);return h.delete(n),g;case\"[object Symbol]\":if(a)return a.call(n)==a.call(u)}return!1}}function jf(){if(Lo)return Mo;Lo=1;var n=_r(),r=_f(),t=Ef(),e=function(){if(Ao)return Co;Ao=1;var n=Qa(),r=Object.prototype.hasOwnProperty;return Co=function(t,e,o,i,u,a){var f=1&o,c=n(t),s=c.length;if(s!=n(e).length&&!f)return!1;for(var d=s;d--;){var h=c[d];if(!(f?h in e:r.call(e,h)))return!1}var v=a.get(t),l=a.get(e);if(v&&l)return v==e&&l==t;var p=!0;a.set(t,e),a.set(e,t);for(var g=f;++d<s;){var y=t[h=c[d]],b=e[h];if(i)var m=f?i(b,y,h,e,t,a):i(y,b,h,t,e,a);if(!(void 0===m?y===b||u(y,b,o,i,a):m)){p=!1;break}g||(g=\"constructor\"==h)}if(p&&!g){var _=t.constructor,w=e.constructor;_==w||!(\"constructor\"in t)||!(\"constructor\"in e)||\"function\"==typeof _&&_ instanceof _&&\"function\"==typeof w&&w instanceof w||(p=!1)}return a.delete(t),a.delete(e),p}}(),o=Xa(),i=Ir(),u=Ur(),a=_t(),f=\"[object Arguments]\",c=\"[object Array]\",s=\"[object Object]\",d=Object.prototype.hasOwnProperty;return Mo=function(h,v,l,p,g,y){var b=i(h),m=i(v),_=b?c:o(h),w=m?c:o(v),E=(_=_==f?s:_)==s,j=(w=w==f?s:w)==s,k=_==w;if(k&&u(h)){if(!u(v))return!1;b=!0,E=!1}if(k&&!E)return y||(y=new n),b||a(h)?r(h,v,l,p,g,y):t(h,v,_,l,p,g,y);if(!(1&l)){var x=E&&d.call(h,\"__wrapped__\"),N=j&&d.call(v,\"__wrapped__\");if(x||N){var O=x?h.value():h,I=N?v.value():v;return y||(y=new n),g(O,I,l,p,y)}}return!!k&&(y||(y=new n),e(h,v,l,p,g,y))}}function kf(){if(So)return Po;So=1;var n=jf(),r=Nr();return Po=function t(e,o,i,u,a){return e===o||(null==e||null==o||!r(e)&&!r(o)?e!=e&&o!=o:n(e,o,i,u,t,a))},Po}function xf(){if(Fo)return zo;Fo=1;var n=sr();return zo=function(r){return r==r&&!n(r)}}function Nf(){if(Go)return Uo;return Go=1,Uo=function(n,r){return function(t){return null!=t&&(t[n]===r&&(void 0!==r||n in Object(t)))}}}function Of(){if(qo)return Vo;qo=1;var n=function(){if(Ro)return To;Ro=1;var n=_r(),r=kf();return To=function(t,e,o,i){var u=o.length,a=u,f=!i;if(null==t)return!a;for(t=Object(t);u--;){var c=o[u];if(f&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++u<a;){var s=(c=o[u])[0],d=t[s],h=c[1];if(f&&c[2]){if(void 0===d&&!(s in t))return!1}else{var v=new n;if(i)var l=i(d,h,s,t,e,v);if(!(void 0===l?r(h,d,3,i,v):l))return!1}}return!0}}(),r=function(){if(Bo)return Do;Bo=1;var n=xf(),r=Nt();return Do=function(t){for(var e=r(t),o=e.length;o--;){var i=e[o],u=t[i];e[o]=[i,u,n(u)]}return e}}(),t=Nf();return Vo=function(e){var o=r(e);return 1==o.length&&o[0][2]?t(o[0][0],o[0][1]):function(r){return r===e||n(r,e,o)}}}function If(){if(Yo)return $o;Yo=1;var n=cr(),r=Nr();return $o=function(t){return\"symbol\"==typeof t||r(t)&&\"[object Symbol]\"==n(t)}}function Cf(){if(Jo)return Wo;Jo=1;var n=Ir(),r=If(),t=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,e=/^\\w*$/;return Wo=function(o,i){if(n(o))return!1;var u=typeof o;return!(\"number\"!=u&&\"symbol\"!=u&&\"boolean\"!=u&&null!=o&&!r(o))||(e.test(o)||!t.test(o)||null!=i&&o in Object(i))}}function Af(){if(Xo)return Ho;Xo=1;var n=function(){if(Qo)return Ko;Qo=1;var n=mr();function r(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var o=function(){var n=arguments,r=e?e.apply(this,n):n[0],i=o.cache;if(i.has(r))return i.get(r);var u=t.apply(this,n);return o.cache=i.set(r,u)||i,u};return o.cache=new(r.Cache||n),o}return r.Cache=n,Ko=r}();return Ho=function(r){var t=n(r,(function(n){return 500===e.size&&e.clear(),n})),e=t.cache;return t}}function Mf(){if(ti)return ri;return ti=1,ri=function(n,r){for(var t=-1,e=null==n?0:n.length,o=Array(e);++t<e;)o[t]=r(n[t],t,n);return o}}function Lf(){if(ui)return ii;ui=1;var n=function(){if(oi)return ei;oi=1;var n=fr(),r=Mf(),t=Ir(),e=If(),o=n?n.prototype:void 0,i=o?o.toString:void 0;return ei=function n(o){if(\"string\"==typeof o)return o;if(t(o))return r(o,n)+\"\";if(e(o))return i?i.call(o):\"\";var u=o+\"\";return\"0\"==u&&1/o==-1/0?\"-0\":u},ei}();return ii=function(r){return null==r?\"\":n(r)}}function Pf(){if(fi)return ai;fi=1;var n=Ir(),r=Cf(),t=function(){if(ni)return Zo;ni=1;var n=Af(),r=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,t=/\\\\(\\\\)?/g,e=n((function(n){var e=[];return 46===n.charCodeAt(0)&&e.push(\"\"),n.replace(r,(function(n,r,o,i){e.push(o?i.replace(t,\"$1\"):r||n)})),e}));return Zo=e}(),e=Lf();return ai=function(o,i){return n(o)?o:r(o,i)?[o]:t(e(o))}}function Sf(){if(si)return ci;si=1;var n=If();return ci=function(r){if(\"string\"==typeof r||n(r))return r;var t=r+\"\";return\"0\"==t&&1/r==-1/0?\"-0\":t}}function Tf(){if(hi)return di;hi=1;var n=Pf(),r=Sf();return di=function(t,e){for(var o=0,i=(e=n(e,t)).length;null!=t&&o<i;)t=t[r(e[o++])];return o&&o==i?t:void 0}}function Rf(){if(bi)return yi;bi=1;var n=Pf(),r=Or(),t=Ir(),e=Gr(),o=Vr(),i=Sf();return yi=function(u,a,f){for(var c=-1,s=(a=n(a,u)).length,d=!1;++c<s;){var h=i(a[c]);if(!(d=null!=u&&f(u,h)))break;u=u[h]}return d||++c!=s?d:!!(s=null==u?0:u.length)&&o(s)&&e(h,s)&&(t(u)||r(u))}}function zf(){if(_i)return mi;_i=1;var n=gi?pi:(gi=1,pi=function(n,r){return null!=n&&r in Object(n)}),r=Rf();return mi=function(t,e){return null!=t&&r(t,e,n)}}function Ff(){if(Ei)return wi;Ei=1;var n=kf(),r=function(){if(li)return vi;li=1;var n=Tf();return vi=function(r,t,e){var o=null==r?void 0:n(r,t);return void 0===o?e:o}}(),t=zf(),e=Cf(),o=xf(),i=Nf(),u=Sf();return wi=function(a,f){return e(a)&&o(f)?i(u(a),f):function(e){var o=r(e,a);return void 0===o&&o===f?t(e,a):n(f,o,3)}}}function Df(){if(ki)return ji;return ki=1,ji=function(n){return function(r){return null==r?void 0:r[n]}}}function Bf(){if(Ii)return Oi;Ii=1;var n=Df(),r=function(){if(Ni)return xi;Ni=1;var n=Tf();return xi=function(r){return function(t){return n(t,r)}}}(),t=Cf(),e=Sf();return Oi=function(o){return t(o)?n(e(o)):r(o)}}function Uf(){if(Ai)return Ci;Ai=1;var n=Of(),r=Ff(),t=lf(),e=Ir(),o=Bf();return Ci=function(i){return\"function\"==typeof i?i:null==i?t:\"object\"==typeof i?e(i)?r(i[0],i[1]):n(i):o(i)}}function Gf(){if(Li)return Mi;Li=1;var n=Va(),r=function(){if(co)return fo;co=1;var n=vf();return fo=function(r,t){var e=[];return n(r,(function(n,r,o){t(n,r,o)&&e.push(n)})),e}}(),t=Uf(),e=Ir();return Mi=function(o,i){return(e(o)?n:r)(o,t(i,3))}}function Vf(){if(Ri)return Ti;Ri=1;var n=function(){if(Si)return Pi;Si=1;var n=Object.prototype.hasOwnProperty;return Pi=function(r,t){return null!=r&&n.call(r,t)}}(),r=Rf();return Ti=function(t,e){return null!=t&&r(t,e,n)}}function qf(){if(Fi)return zi;Fi=1;var n=kt(),r=Xa(),t=Or(),e=Ir(),o=xt(),i=Ur(),u=Et(),a=_t(),f=Object.prototype.hasOwnProperty;return zi=function(c){if(null==c)return!0;if(o(c)&&(e(c)||\"string\"==typeof c||\"function\"==typeof c.splice||i(c)||a(c)||t(c)))return!c.length;var s=r(c);if(\"[object Map]\"==s||\"[object Set]\"==s)return!c.size;if(u(c))return!n(c).length;for(var d in c)if(f.call(c,d))return!1;return!0}}function $f(){if(Bi)return Di;return Bi=1,Di=function(n){return void 0===n}}function Yf(){if(Gi)return Ui;Gi=1;var n=vf(),r=xt();return Ui=function(t,e){var o=-1,i=r(t)?Array(t.length):[];return n(t,(function(n,r,t){i[++o]=e(n,r,t)})),i}}function Wf(){if(qi)return Vi;qi=1;var n=Mf(),r=Uf(),t=Yf(),e=Ir();return Vi=function(o,i){return(e(o)?n:t)(o,r(i,3))}}function Jf(){if(Qi)return Ki;Qi=1;var n=Yi?$i:(Yi=1,$i=function(n,r,t,e){var o=-1,i=null==n?0:n.length;for(e&&i&&(t=n[++o]);++o<i;)t=r(t,n[o],o,n);return t}),r=vf(),t=Uf(),e=Ji?Wi:(Ji=1,Wi=function(n,r,t,e,o){return o(n,(function(n,o,i){t=e?(e=!1,n):r(t,n,o,i)})),t}),o=Ir();return Ki=function(i,u,a){var f=o(i)?n:e,c=arguments.length<3;return f(i,t(u,4),a,c,r)},Ki}function Kf(){if(uu)return iu;uu=1;var n=function(){if(nu)return Zi;nu=1;var n=Df()(\"length\");return Zi=n}(),r=function(){if(tu)return ru;tu=1;var n=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");return ru=function(r){return n.test(r)}}(),t=function(){if(ou)return eu;ou=1;var n=\"\\\\ud800-\\\\udfff\",r=\"[\"+n+\"]\",t=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",e=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",o=\"[^\"+n+\"]\",i=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",u=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",a=\"(?:\"+t+\"|\"+e+\")?\",f=\"[\\\\ufe0e\\\\ufe0f]?\",c=f+a+\"(?:\\\\u200d(?:\"+[o,i,u].join(\"|\")+\")\"+f+a+\")*\",s=\"(?:\"+[o+t+\"?\",t,i,u,r].join(\"|\")+\")\",d=RegExp(e+\"(?=\"+e+\")|\"+s+c,\"g\");return eu=function(n){for(var r=d.lastIndex=0;d.test(n);)++r;return r}}();return iu=function(e){return r(e)?t(e):n(e)}}function Qf(){if(fu)return au;fu=1;var n=kt(),r=Xa(),t=xt(),e=function(){if(Xi)return Hi;Xi=1;var n=cr(),r=Ir(),t=Nr();return Hi=function(e){return\"string\"==typeof e||!r(e)&&t(e)&&\"[object String]\"==n(e)}}(),o=Kf();return au=function(i){if(null==i)return 0;if(t(i))return e(i)?o(i):i.length;var u=r(i);return\"[object Map]\"==u||\"[object Set]\"==u?i.size:n(i).length}}function Hf(){if(su)return cu;su=1;var n=wr(),r=ef(),t=hf(),e=Uf(),o=Wa(),i=Ir(),u=Ur(),a=dr(),f=sr(),c=_t();return cu=function(s,d,h){var v=i(s),l=v||u(s)||c(s);if(d=e(d,4),null==h){var p=s&&s.constructor;h=l?v?new p:[]:f(s)&&a(p)?r(o(s)):{}}return(l?n:t)(s,(function(n,r,t){return d(h,n,r,t)})),h}}function Xf(){if(lu)return vu;lu=1;var n=Ya(),r=function(){if(hu)return du;hu=1;var n=fr(),r=Or(),t=Ir(),e=n?n.isConcatSpreadable:void 0;return du=function(n){return t(n)||r(n)||!!(e&&n&&n[e])}}();return vu=function t(e,o,i,u,a){var f=-1,c=e.length;for(i||(i=r),a||(a=[]);++f<c;){var s=e[f];o>0&&i(s)?o>1?t(s,o-1,i,u,a):n(a,s):u||(a[a.length]=s)}return a},vu}function Zf(){if(bu)return yu;bu=1;var n=gu?pu:(gu=1,pu=function(n,r,t){switch(t.length){case 0:return n.call(r);case 1:return n.call(r,t[0]);case 2:return n.call(r,t[0],t[1]);case 3:return n.call(r,t[0],t[1],t[2])}return n.apply(r,t)}),r=Math.max;return yu=function(t,e,o){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,u=-1,a=r(i.length-e,0),f=Array(a);++u<a;)f[u]=i[e+u];u=-1;for(var c=Array(e+1);++u<e;)c[u]=i[u];return c[e]=o(f),n(t,this,c)}},yu}function nc(){if(ku)return ju;ku=1;var n=function(){if(_u)return mu;_u=1;var n=sf(),r=Er(),t=lf();return mu=r?function(t,e){return r(t,\"toString\",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:t}(),r=function(){if(Eu)return wu;Eu=1;var n=Date.now;return wu=function(r){var t=0,e=0;return function(){var o=n(),i=16-(o-e);if(e=o,i>0){if(++t>=800)return arguments[0]}else t=0;return r.apply(void 0,arguments)}},wu}(),t=r(n);return ju=t}function rc(){if(Nu)return xu;Nu=1;var n=lf(),r=Zf(),t=nc();return xu=function(e,o){return t(r(e,o,n),e+\"\")}}function tc(){if(Iu)return Ou;return Iu=1,Ou=function(n,r,t,e){for(var o=n.length,i=t+(e?1:-1);e?i--:++i<o;)if(r(n[i],i,n))return i;return-1}}function ec(){if(Su)return Pu;Su=1;var n=tc(),r=Au?Cu:(Au=1,Cu=function(n){return n!=n}),t=Lu?Mu:(Lu=1,Mu=function(n,r,t){for(var e=t-1,o=n.length;++e<o;)if(n[e]===r)return e;return-1});return Pu=function(e,o,i){return o==o?t(e,o,i):n(e,r,i)}}function oc(){if(Gu)return Uu;Gu=1;var n=Ha(),r=Bu?Du:(Bu=1,Du=function(){}),t=wf(),e=n&&1/t(new n([,-0]))[1]==1/0?function(r){return new n(r)}:r;return Uu=e}function ic(){if(qu)return Vu;qu=1;var n=bf(),r=function(){if(Ru)return Tu;Ru=1;var n=ec();return Tu=function(r,t){return!(null==r||!r.length)&&n(r,t,0)>-1}}(),t=Fu?zu:(Fu=1,zu=function(n,r,t){for(var e=-1,o=null==n?0:n.length;++e<o;)if(t(r,n[e]))return!0;return!1}),e=mf(),o=oc(),i=wf();return Vu=function(u,a,f){var c=-1,s=r,d=u.length,h=!0,v=[],l=v;if(f)h=!1,s=t;else if(d>=200){var p=a?null:o(u);if(p)return i(p);h=!1,s=e,l=new n}else l=a?[]:v;n:for(;++c<d;){var g=u[c],y=a?a(g):g;if(g=f||0!==g?g:0,h&&y==y){for(var b=l.length;b--;)if(l[b]===y)continue n;a&&l.push(y),v.push(g)}else s(l,y,f)||(l!==v&&l.push(y),v.push(g))}return v}}function uc(){if(Yu)return $u;Yu=1;var n=xt(),r=Nr();return $u=function(t){return r(t)&&n(t)}}function ac(){if(Ju)return Wu;Ju=1;var n=Xf(),r=rc(),t=ic(),e=uc(),o=r((function(r){return t(n(r,1,e,!0))}));return Wu=o}function fc(){if(Xu)return Hu;Xu=1;var n=function(){if(Qu)return Ku;Qu=1;var n=Mf();return Ku=function(r,t){return n(t,(function(n){return r[n]}))}}(),r=Nt();return Hu=function(t){return null==t?[]:n(t,r(t))}}function cc(){if(na)return Zu;var n;na=1;try{n={clone:cf(),constant:sf(),each:yf(),filter:Gf(),has:Vf(),isArray:Ir(),isEmpty:qf(),isFunction:dr(),isUndefined:$f(),keys:Nt(),map:Wf(),reduce:Jf(),size:Qf(),transform:Hf(),union:ac(),values:fc()}}catch(n){}return n||(n=window._),Zu=n}function sc(){if(ta)return ra;ta=1;var n=cc();ra=o;var r=\"\\0\",t=\"\\0\",e=\"\u0001\";function o(r){this._isDirected=!n.has(r,\"directed\")||r.directed,this._isMultigraph=!!n.has(r,\"multigraph\")&&r.multigraph,this._isCompound=!!n.has(r,\"compound\")&&r.compound,this._label=void 0,this._defaultNodeLabelFn=n.constant(void 0),this._defaultEdgeLabelFn=n.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[t]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function i(n,r){n[r]?n[r]++:n[r]=1}function u(n,r){--n[r]||delete n[r]}function a(t,o,i,u){var a=\"\"+o,f=\"\"+i;if(!t&&a>f){var c=a;a=f,f=c}return a+e+f+e+(n.isUndefined(u)?r:u)}function f(n,r){return a(n,r.v,r.w,r.name)}return o.prototype._nodeCount=0,o.prototype._edgeCount=0,o.prototype.isDirected=function(){return this._isDirected},o.prototype.isMultigraph=function(){return this._isMultigraph},o.prototype.isCompound=function(){return this._isCompound},o.prototype.setGraph=function(n){return this._label=n,this},o.prototype.graph=function(){return this._label},o.prototype.setDefaultNodeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultNodeLabelFn=r,this},o.prototype.nodeCount=function(){return this._nodeCount},o.prototype.nodes=function(){return n.keys(this._nodes)},o.prototype.sources=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._in[t])}))},o.prototype.sinks=function(){var r=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(r._out[t])}))},o.prototype.setNodes=function(r,t){var e=arguments,o=this;return n.each(r,(function(n){e.length>1?o.setNode(n,t):o.setNode(n)})),this},o.prototype.setNode=function(r,e){return n.has(this._nodes,r)?(arguments.length>1&&(this._nodes[r]=e),this):(this._nodes[r]=arguments.length>1?e:this._defaultNodeLabelFn(r),this._isCompound&&(this._parent[r]=t,this._children[r]={},this._children[t][r]=!0),this._in[r]={},this._preds[r]={},this._out[r]={},this._sucs[r]={},++this._nodeCount,this)},o.prototype.node=function(n){return this._nodes[n]},o.prototype.hasNode=function(r){return n.has(this._nodes,r)},o.prototype.removeNode=function(r){var t=this;if(n.has(this._nodes,r)){var e=function(n){t.removeEdge(t._edgeObjs[n])};delete this._nodes[r],this._isCompound&&(this._removeFromParentsChildList(r),delete this._parent[r],n.each(this.children(r),(function(n){t.setParent(n)})),delete this._children[r]),n.each(n.keys(this._in[r]),e),delete this._in[r],delete this._preds[r],n.each(n.keys(this._out[r]),e),delete this._out[r],delete this._sucs[r],--this._nodeCount}return this},o.prototype.setParent=function(r,e){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n.isUndefined(e))e=t;else{for(var o=e+=\"\";!n.isUndefined(o);o=this.parent(o))if(o===r)throw new Error(\"Setting \"+e+\" as parent of \"+r+\" would create a cycle\");this.setNode(e)}return this.setNode(r),this._removeFromParentsChildList(r),this._parent[r]=e,this._children[e][r]=!0,this},o.prototype._removeFromParentsChildList=function(n){delete this._children[this._parent[n]][n]},o.prototype.parent=function(n){if(this._isCompound){var r=this._parent[n];if(r!==t)return r}},o.prototype.children=function(r){if(n.isUndefined(r)&&(r=t),this._isCompound){var e=this._children[r];if(e)return n.keys(e)}else{if(r===t)return this.nodes();if(this.hasNode(r))return[]}},o.prototype.predecessors=function(r){var t=this._preds[r];if(t)return n.keys(t)},o.prototype.successors=function(r){var t=this._sucs[r];if(t)return n.keys(t)},o.prototype.neighbors=function(r){var t=this.predecessors(r);if(t)return n.union(t,this.successors(r))},o.prototype.isLeaf=function(n){return 0===(this.isDirected()?this.successors(n):this.neighbors(n)).length},o.prototype.filterNodes=function(r){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var e=this;n.each(this._nodes,(function(n,e){r(e)&&t.setNode(e,n)})),n.each(this._edgeObjs,(function(n){t.hasNode(n.v)&&t.hasNode(n.w)&&t.setEdge(n,e.edge(n))}));var o={};function i(n){var r=e.parent(n);return void 0===r||t.hasNode(r)?(o[n]=r,r):r in o?o[r]:i(r)}return this._isCompound&&n.each(t.nodes(),(function(n){t.setParent(n,i(n))})),t},o.prototype.setDefaultEdgeLabel=function(r){return n.isFunction(r)||(r=n.constant(r)),this._defaultEdgeLabelFn=r,this},o.prototype.edgeCount=function(){return this._edgeCount},o.prototype.edges=function(){return n.values(this._edgeObjs)},o.prototype.setPath=function(r,t){var e=this,o=arguments;return n.reduce(r,(function(n,r){return o.length>1?e.setEdge(n,r,t):e.setEdge(n,r),r})),this},o.prototype.setEdge=function(){var r,t,e,o,u=!1,f=arguments[0];\"object\"==typeof f&&null!==f&&\"v\"in f?(r=f.v,t=f.w,e=f.name,2===arguments.length&&(o=arguments[1],u=!0)):(r=f,t=arguments[1],e=arguments[3],arguments.length>2&&(o=arguments[2],u=!0)),r=\"\"+r,t=\"\"+t,n.isUndefined(e)||(e=\"\"+e);var c=a(this._isDirected,r,t,e);if(n.has(this._edgeLabels,c))return u&&(this._edgeLabels[c]=o),this;if(!n.isUndefined(e)&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(r),this.setNode(t),this._edgeLabels[c]=u?o:this._defaultEdgeLabelFn(r,t,e);var s=function(n,r,t,e){var o=\"\"+r,i=\"\"+t;if(!n&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};e&&(a.name=e);return a}(this._isDirected,r,t,e);return r=s.v,t=s.w,Object.freeze(s),this._edgeObjs[c]=s,i(this._preds[t],r),i(this._sucs[r],t),this._in[t][c]=s,this._out[r][c]=s,this._edgeCount++,this},o.prototype.edge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t);return this._edgeLabels[e]},o.prototype.hasEdge=function(r,t,e){var o=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,r,t,e);return n.has(this._edgeLabels,o)},o.prototype.removeEdge=function(n,r,t){var e=1===arguments.length?f(this._isDirected,arguments[0]):a(this._isDirected,n,r,t),o=this._edgeObjs[e];return o&&(n=o.v,r=o.w,delete this._edgeLabels[e],delete this._edgeObjs[e],u(this._preds[r],n),u(this._sucs[n],r),delete this._in[r][e],delete this._out[n][e],this._edgeCount--),this},o.prototype.inEdges=function(r,t){var e=this._in[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.v===t})):o}},o.prototype.outEdges=function(r,t){var e=this._out[r];if(e){var o=n.values(e);return t?n.filter(o,(function(n){return n.w===t})):o}},o.prototype.nodeEdges=function(n,r){var t=this.inEdges(n,r);if(t)return t.concat(this.outEdges(n,r))},ra}function dc(){return ua?ia:(ua=1,ia={Graph:sc(),version:oa?ea:(oa=1,ea=\"2.1.8\")})}function hc(){if(fa)return aa;fa=1;var n=cc(),r=sc();function t(r){return n.map(r.nodes(),(function(t){var e=r.node(t),o=r.parent(t),i={v:t};return n.isUndefined(e)||(i.value=e),n.isUndefined(o)||(i.parent=o),i}))}function e(r){return n.map(r.edges(),(function(t){var e=r.edge(t),o={v:t.v,w:t.w};return n.isUndefined(t.name)||(o.name=t.name),n.isUndefined(e)||(o.value=e),o}))}return aa={write:function(r){var o={options:{directed:r.isDirected(),multigraph:r.isMultigraph(),compound:r.isCompound()},nodes:t(r),edges:e(r)};n.isUndefined(r.graph())||(o.value=n.clone(r.graph()));return o},read:function(t){var e=new r(t.options).setGraph(t.value);return n.each(t.nodes,(function(n){e.setNode(n.v,n.value),n.parent&&e.setParent(n.v,n.parent)})),n.each(t.edges,(function(n){e.setEdge({v:n.v,w:n.w,name:n.name},n.value)})),e}}}function vc(){if(sa)return ca;sa=1;var n=cc();return ca=function(r){var t,e={},o=[];function i(o){n.has(e,o)||(e[o]=!0,t.push(o),n.each(r.successors(o),i),n.each(r.predecessors(o),i))}return n.each(r.nodes(),(function(n){t=[],i(n),t.length&&o.push(t)})),o},ca}function lc(){if(ha)return da;ha=1;var n=cc();function r(){this._arr=[],this._keyIndices={}}return da=r,r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map((function(n){return n.key}))},r.prototype.has=function(r){return n.has(this._keyIndices,r)},r.prototype.priority=function(n){var r=this._keyIndices[n];if(void 0!==r)return this._arr[r].priority},r.prototype.min=function(){if(0===this.size())throw new Error(\"Queue underflow\");return this._arr[0].key},r.prototype.add=function(r,t){var e=this._keyIndices;if(r=String(r),!n.has(e,r)){var o=this._arr,i=o.length;return e[r]=i,o.push({key:r,priority:t}),this._decrease(i),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},r.prototype.decrease=function(n,r){var t=this._keyIndices[n];if(r>this._arr[t].priority)throw new Error(\"New priority is greater than current priority. Key: \"+n+\" Old: \"+this._arr[t].priority+\" New: \"+r);this._arr[t].priority=r,this._decrease(t)},r.prototype._heapify=function(n){var r=this._arr,t=2*n,e=t+1,o=n;t<r.length&&(o=r[t].priority<r[o].priority?t:o,e<r.length&&(o=r[e].priority<r[o].priority?e:o),o!==n&&(this._swap(n,o),this._heapify(o)))},r.prototype._decrease=function(n){for(var r,t=this._arr,e=t[n].priority;0!==n&&!(t[r=n>>1].priority<e);)this._swap(n,r),n=r},r.prototype._swap=function(n,r){var t=this._arr,e=this._keyIndices,o=t[n],i=t[r];t[n]=i,t[r]=o,e[i.key]=n,e[o.key]=r},da}function pc(){if(la)return va;la=1;var n=cc(),r=lc();va=function(n,e,o,i){return function(n,t,e,o){var i,u,a={},f=new r,c=function(n){var r=n.v!==i?n.v:n.w,t=a[r],o=e(n),c=u.distance+o;if(o<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+n+\" Weight: \"+o);c<t.distance&&(t.distance=c,t.predecessor=i,f.decrease(r,c))};n.nodes().forEach((function(n){var r=n===t?0:Number.POSITIVE_INFINITY;a[n]={distance:r},f.add(n,r)}));for(;f.size()>0&&(i=f.removeMin(),(u=a[i]).distance!==Number.POSITIVE_INFINITY);)o(i).forEach(c);return a}(n,String(e),o||t,i||function(r){return n.outEdges(r)})};var t=n.constant(1);return va}function gc(){if(ga)return pa;ga=1;var n=pc(),r=cc();return pa=function(t,e,o){return r.transform(t.nodes(),(function(r,i){r[i]=n(t,i,e,o)}),{})}}function yc(){if(ba)return ya;ba=1;var n=cc();return ya=function(r){var t=0,e=[],o={},i=[];function u(a){var f=o[a]={onStack:!0,lowlink:t,index:t++};if(e.push(a),r.successors(a).forEach((function(r){n.has(o,r)?o[r].onStack&&(f.lowlink=Math.min(f.lowlink,o[r].index)):(u(r),f.lowlink=Math.min(f.lowlink,o[r].lowlink))})),f.lowlink===f.index){var c,s=[];do{c=e.pop(),o[c].onStack=!1,s.push(c)}while(a!==c);i.push(s)}}return r.nodes().forEach((function(r){n.has(o,r)||u(r)})),i},ya}function bc(){if(_a)return ma;_a=1;var n=cc(),r=yc();return ma=function(t){return n.filter(r(t),(function(n){return n.length>1||1===n.length&&t.hasEdge(n[0],n[0])}))}}function mc(){if(Ea)return wa;Ea=1;var n=cc();wa=function(n,t,e){return function(n,r,t){var e={},o=n.nodes();return o.forEach((function(n){e[n]={},e[n][n]={distance:0},o.forEach((function(r){n!==r&&(e[n][r]={distance:Number.POSITIVE_INFINITY})})),t(n).forEach((function(t){var o=t.v===n?t.w:t.v,i=r(t);e[n][o]={distance:i,predecessor:n}}))})),o.forEach((function(n){var r=e[n];o.forEach((function(t){var i=e[t];o.forEach((function(t){var e=i[n],o=r[t],u=i[t],a=e.distance+o.distance;a<u.distance&&(u.distance=a,u.predecessor=o.predecessor)}))}))})),e}(n,t||r,e||function(r){return n.outEdges(r)})};var r=n.constant(1);return wa}function _c(){if(ka)return ja;ka=1;var n=cc();function r(r){var e={},o={},i=[];if(n.each(r.sinks(),(function u(a){if(n.has(o,a))throw new t;n.has(e,a)||(o[a]=!0,e[a]=!0,n.each(r.predecessors(a),u),delete o[a],i.push(a))})),n.size(e)!==r.nodeCount())throw new t;return i}function t(){}return ja=r,r.CycleException=t,t.prototype=new Error,ja}function wc(){if(Na)return xa;Na=1;var n=_c();return xa=function(r){try{n(r)}catch(r){if(r instanceof n.CycleException)return!1;throw r}return!0}}function Ec(){if(Ia)return Oa;Ia=1;var n=cc();function r(t,e,o,i,u,a){n.has(i,e)||(i[e]=!0,o||a.push(e),n.each(u(e),(function(n){r(t,n,o,i,u,a)})),o&&a.push(e))}return Oa=function(t,e,o){n.isArray(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),u=[],a={};return n.each(e,(function(n){if(!t.hasNode(n))throw new Error(\"Graph does not have node: \"+n);r(t,n,\"post\"===o,a,i,u)})),u},Oa}function jc(){if(Aa)return Ca;Aa=1;var n=Ec();return Ca=function(r,t){return n(r,t,\"post\")}}function kc(){if(La)return Ma;La=1;var n=Ec();return Ma=function(r,t){return n(r,t,\"pre\")}}function xc(){if(Sa)return Pa;Sa=1;var n=cc(),r=sc(),t=lc();return Pa=function(e,o){var i,u=new r,a={},f=new t;function c(n){var r=n.v===i?n.w:n.v,t=f.priority(r);if(void 0!==t){var e=o(n);e<t&&(a[r]=i,f.decrease(r,e))}}if(0===e.nodeCount())return u;n.each(e.nodes(),(function(n){f.add(n,Number.POSITIVE_INFINITY),u.setNode(n)})),f.decrease(e.nodes()[0],0);var s=!1;for(;f.size()>0;){if(i=f.removeMin(),n.has(a,i))u.setEdge(i,a[i]);else{if(s)throw new Error(\"Input graph is not connected: \"+e);s=!0}e.nodeEdges(i).forEach(c)}return u}}Ba.exports;try{Da=function(){if(Fa)return za;Fa=1;var n=dc();return za={Graph:n.Graph,json:hc(),alg:Ra?Ta:(Ra=1,Ta={components:vc(),dijkstra:pc(),dijkstraAll:gc(),findCycles:bc(),floydWarshall:mc(),isAcyclic:wc(),postorder:jc(),preorder:kc(),prim:xc(),tarjan:yc(),topsort:_c()}),version:n.version}}()}catch(n){}Da||(Da=window.graphlib);var Nc,Oc,Ic,Cc,Ac,Mc,Lc,Pc,Sc,Tc,Rc,zc,Fc,Dc,Bc,Uc,Gc,Vc,qc,$c,Yc,Wc,Jc,Kc,Qc,Hc,Xc,Zc,ns,rs,ts,es,os,is,us,as,fs,cs,ss,ds,hs,vs,ls,ps,gs,ys,bs,ms,_s,ws,Es,js,ks,xs,Ns,Os,Is,Cs,As,Ms,Ls,Ps,Ss,Ts,Rs,zs,Fs,Ds,Bs,Us,Gs,Vs,qs,$s,Ys,Ws,Js,Ks,Qs,Hs,Xs,Zs,nd,rd,td,ed,od,id,ud,ad,fd,cd,sd,dd=Da;function hd(){if(Cc)return Ic;Cc=1;var n=er(),r=xt(),t=Gr(),e=sr();return Ic=function(o,i,u){if(!e(u))return!1;var a=typeof i;return!!(\"number\"==a?r(u)&&t(i,u.length):\"string\"==a&&i in u)&&n(u[i],o)}}function vd(){if(zc)return Rc;zc=1;var n=function(){if(Tc)return Sc;Tc=1;var n=/\\s/;return Sc=function(r){for(var t=r.length;t--&&n.test(r.charAt(t)););return t}}(),r=/^\\s+/;return Rc=function(t){return t?t.slice(0,n(t)+1).replace(r,\"\"):t}}function ld(){if(Uc)return Bc;Uc=1;var n=function(){if(Dc)return Fc;Dc=1;var n=vd(),r=sr(),t=If(),e=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,i=/^0o[0-7]+$/i,u=parseInt;return Fc=function(a){if(\"number\"==typeof a)return a;if(t(a))return NaN;if(r(a)){var f=\"function\"==typeof a.valueOf?a.valueOf():a;a=r(f)?f+\"\":f}if(\"string\"!=typeof a)return 0===a?a:+a;a=n(a);var c=o.test(a);return c||i.test(a)?u(a.slice(2),c?2:8):e.test(a)?NaN:+a}}(),r=1/0;return Bc=function(t){return t?(t=n(t))===r||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}}function pd(){if($c)return qc;$c=1;var n=tc(),r=Uf(),t=function(){if(Vc)return Gc;Vc=1;var n=ld();return Gc=function(r){var t=n(r),e=t%1;return t==t?e?t-e:t:0}}(),e=Math.max;return qc=function(o,i,u){var a=null==o?0:o.length;if(!a)return-1;var f=null==u?0:t(u);return f<0&&(f=e(a+f,0)),n(o,r(i,3),f)}}function gd(){if(Kc)return Jc;Kc=1;var n=Xf();return Jc=function(r){return(null==r?0:r.length)?n(r,1):[]}}function yd(){if(es)return ts;es=1;var n=If();return ts=function(r,t,e){for(var o=-1,i=r.length;++o<i;){var u=r[o],a=t(u);if(null!=a&&(void 0===f?a==a&&!n(a):e(a,f)))var f=a,c=u}return c}}function bd(){if(cs)return fs;cs=1;var n=jr(),r=er();return fs=function(t,e,o){(void 0!==o&&!r(t[e],o)||void 0===o&&!(e in t))&&n(t,e,o)}}function md(){if(vs)return hs;return vs=1,hs=function(n,r){if((\"constructor\"!==r||\"function\"!=typeof n[r])&&\"__proto__\"!=r)return n[r]}}function _d(){if(ys)return gs;ys=1;var n=bd(),r=Ua(),t=rf(),e=Ga(),o=of(),i=Or(),u=Ir(),a=uc(),f=Ur(),c=dr(),s=sr(),d=function(){if(ds)return ss;ds=1;var n=cr(),r=Wa(),t=Nr(),e=Function.prototype,o=Object.prototype,i=e.toString,u=o.hasOwnProperty,a=i.call(Object);return ss=function(e){if(!t(e)||\"[object Object]\"!=n(e))return!1;var o=r(e);if(null===o)return!0;var f=u.call(o,\"constructor\")&&o.constructor;return\"function\"==typeof f&&f instanceof f&&i.call(f)==a}}(),h=_t(),v=md(),l=function(){if(ps)return ls;ps=1;var n=xr(),r=It();return ls=function(t){return n(t,r(t))}}();return gs=function(p,g,y,b,m,_,w){var E=v(p,y),j=v(g,y),k=w.get(j);if(k)n(p,y,k);else{var x=_?_(E,j,y+\"\",p,g,w):void 0,N=void 0===x;if(N){var O=u(j),I=!O&&f(j),C=!O&&!I&&h(j);x=j,O||I||C?u(E)?x=E:a(E)?x=e(E):I?(N=!1,x=r(j,!0)):C?(N=!1,x=t(j,!0)):x=[]:d(j)||i(j)?(x=E,i(E)?x=l(E):s(E)&&!c(E)||(x=o(j))):N=!1}N&&(w.set(j,x),m(x,j,b,_,w),w.delete(j)),n(p,y,x)}}}function wd(){if(xs)return ks;return xs=1,ks=function(n,r){return n<r}}function Ed(){if(Ts)return Ss;Ts=1;var n=Tf(),r=function(){if(Ps)return Ls;Ps=1;var n=kr(),r=Pf(),t=Gr(),e=sr(),o=Sf();return Ls=function(i,u,a,f){if(!e(i))return i;for(var c=-1,s=(u=r(u,i)).length,d=s-1,h=i;null!=h&&++c<s;){var v=o(u[c]),l=a;if(\"__proto__\"===v||\"constructor\"===v||\"prototype\"===v)return i;if(c!=d){var p=h[v];void 0===(l=f?f(p,v,h):void 0)&&(l=e(p)?p:t(u[c+1])?[]:{})}n(h,v,l),h=h[v]}return i}}(),t=Pf();return Ss=function(e,o,i){for(var u=-1,a=o.length,f={};++u<a;){var c=o[u],s=n(e,c);i(s,c)&&r(f,t(c,e),s)}return f}}function jd(){if($s)return qs;$s=1;var n=function(){if(Vs)return Gs;Vs=1;var n=Math.ceil,r=Math.max;return Gs=function(t,e,o,i){for(var u=-1,a=r(n((e-t)/(o||1)),0),f=Array(a);a--;)f[i?a:++u]=t,t+=o;return f}}(),r=hd(),t=ld();return qs=function(e){return function(o,i,u){return u&&\"number\"!=typeof u&&r(o,i,u)&&(i=u=void 0),o=t(o),void 0===i?(i=o,o=0):i=t(i),u=void 0===u?o<i?1:-1:t(u),n(o,i,u,e)}}}function kd(){if(Zs)return Xs;Zs=1;var n=function(){if(Hs)return Qs;Hs=1;var n=If();return Qs=function(r,t){if(r!==t){var e=void 0!==r,o=null===r,i=r==r,u=n(r),a=void 0!==t,f=null===t,c=t==t,s=n(t);if(!f&&!s&&!u&&r>t||u&&a&&c&&!f&&!s||o&&a&&c||!e&&c||!i)return 1;if(!o&&!u&&!s&&r<t||s&&e&&i&&!o&&!u||f&&e&&i||!a&&i||!c)return-1}return 0}}();return Xs=function(r,t,e){for(var o=-1,i=r.criteria,u=t.criteria,a=i.length,f=e.length;++o<a;){var c=n(i[o],u[o]);if(c)return o>=f?c:c*(\"desc\"==e[o]?-1:1)}return r.index-t.index}}function xd(){if(rd)return nd;rd=1;var n=Mf(),r=Tf(),t=Uf(),e=Yf(),o=Ks?Js:(Ks=1,Js=function(n,r){var t=n.length;for(n.sort(r);t--;)n[t]=n[t].value;return n}),i=qr(),u=kd(),a=lf(),f=Ir();return nd=function(c,s,d){s=s.length?n(s,(function(n){return f(n)?function(t){return r(t,1===n.length?n[0]:n)}:n})):[a];var h=-1;s=n(s,i(t));var v=e(c,(function(r,t,e){return{criteria:n(s,(function(n){return n(r)})),index:++h,value:r}}));return o(v,(function(n,r){return u(n,r,d)}))}}try{sd={cloneDeep:function(){if(Oc)return Nc;Oc=1;var n=ff();return Nc=function(r){return n(r,5)}}(),constant:sf(),defaults:function(){if(Mc)return Ac;Mc=1;var n=rc(),r=er(),t=hd(),e=It(),o=Object.prototype,i=o.hasOwnProperty,u=n((function(n,u){n=Object(n);var a=-1,f=u.length,c=f>2?u[2]:void 0;for(c&&t(u[0],u[1],c)&&(f=1);++a<f;)for(var s=u[a],d=e(s),h=-1,v=d.length;++h<v;){var l=d[h],p=n[l];(void 0===p||r(p,o[l])&&!i.call(n,l))&&(n[l]=s[l])}return n}));return Ac=u}(),each:yf(),filter:Gf(),find:function(){if(Wc)return Yc;Wc=1;var n=function(){if(Pc)return Lc;Pc=1;var n=Uf(),r=xt(),t=Nt();return Lc=function(e){return function(o,i,u){var a=Object(o);if(!r(o)){var f=n(i,3);o=t(o),i=function(n){return f(a[n],n,a)}}var c=e(o,i,u);return c>-1?a[f?o[c]:c]:void 0}}}()(pd());return Yc=n}(),flatten:gd(),forEach:gf(),forIn:function(){if(Hc)return Qc;Hc=1;var n=df(),r=pf(),t=It();return Qc=function(e,o){return null==e?e:n(e,r(o),t)}}(),has:Vf(),isUndefined:$f(),last:Zc?Xc:(Zc=1,Xc=function(n){var r=null==n?0:n.length;return r?n[r-1]:void 0}),map:Wf(),mapValues:function(){if(rs)return ns;rs=1;var n=jr(),r=hf(),t=Uf();return ns=function(e,o){var i={};return o=t(o,3),r(e,(function(r,t,e){n(i,t,o(r,t,e))})),i}}(),max:function(){if(as)return us;as=1;var n=yd(),r=is?os:(is=1,os=function(n,r){return n>r}),t=lf();return us=function(e){return e&&e.length?n(e,t,r):void 0}}(),merge:function(){if(js)return Es;js=1;var n=function(){if(ms)return bs;ms=1;var n=_r(),r=bd(),t=df(),e=_d(),o=sr(),i=It(),u=md();return bs=function a(f,c,s,d,h){f!==c&&t(c,(function(t,i){if(h||(h=new n),o(t))e(f,c,i,s,a,d,h);else{var v=d?d(u(f,i),t,i+\"\",f,c,h):void 0;void 0===v&&(v=t),r(f,i,v)}}),i)},bs}(),r=function(){if(ws)return _s;ws=1;var n=rc(),r=hd();return _s=function(t){return n((function(n,e){var o=-1,i=e.length,u=i>1?e[i-1]:void 0,a=i>2?e[2]:void 0;for(u=t.length>3&&\"function\"==typeof u?(i--,u):void 0,a&&r(e[0],e[1],a)&&(u=i<3?void 0:u,i=1),n=Object(n);++o<i;){var f=e[o];f&&t(n,f,o,u)}return n}))}}()((function(r,t,e){n(r,t,e)}));return Es=r}(),min:function(){if(Os)return Ns;Os=1;var n=yd(),r=wd(),t=lf();return Ns=function(e){return e&&e.length?n(e,t,r):void 0}}(),minBy:function(){if(Cs)return Is;Cs=1;var n=yd(),r=Uf(),t=wd();return Is=function(e,o){return e&&e.length?n(e,r(o,2),t):void 0}}(),now:function(){if(Ms)return As;Ms=1;var n=ar();return As=function(){return n.Date.now()}}(),pick:function(){if(Us)return Bs;Us=1;var n=function(){if(zs)return Rs;zs=1;var n=Ed(),r=zf();return Rs=function(t,e){return n(t,e,(function(n,e){return r(t,e)}))}}(),r=function(){if(Ds)return Fs;Ds=1;var n=gd(),r=Zf(),t=nc();return Fs=function(e){return t(r(e,void 0,n),e+\"\")}}()((function(r,t){return null==r?{}:n(r,t)}));return Bs=r}(),range:function(){if(Ws)return Ys;Ws=1;var n=jd()();return Ys=n}(),reduce:Jf(),sortBy:function(){if(ed)return td;ed=1;var n=Xf(),r=xd(),t=rc(),e=hd(),o=t((function(t,o){if(null==t)return[];var i=o.length;return i>1&&e(t,o[0],o[1])?o=[]:i>2&&e(o[0],o[1],o[2])&&(o=[o[0]]),r(t,n(o,1),[])}));return td=o}(),uniqueId:function(){if(id)return od;id=1;var n=Lf(),r=0;return od=function(t){var e=++r;return n(t)+e}}(),values:fc(),zipObject:function(){if(cd)return fd;cd=1;var n=kr(),r=ad?ud:(ad=1,ud=function(n,r,t){for(var e=-1,o=n.length,i=r.length,u={};++e<o;){var a=e<i?r[e]:void 0;t(u,n[e],a)}return u});return fd=function(t,e){return r(t||[],e||[],n)}}()}}catch(n){}sd||(sd=window._);var Nd=sd,Od=Id;function Id(){var n={};n._next=n._prev=n,this._sentinel=n}function Cd(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function Ad(n,r){if(\"_next\"!==n&&\"_prev\"!==n)return r}Id.prototype.dequeue=function(){var n=this._sentinel,r=n._prev;if(r!==n)return Cd(r),r},Id.prototype.enqueue=function(n){var r=this._sentinel;n._prev&&n._next&&Cd(n),n._next=r._next,r._next._prev=n,r._next=n,n._prev=r},Id.prototype.toString=function(){for(var n=[],r=this._sentinel,t=r._prev;t!==r;)n.push(JSON.stringify(t,Ad)),t=t._prev;return\"[\"+n.join(\", \")+\"]\"};var Md=Nd,Ld=dd.Graph,Pd=Od,Sd=function(n,r){if(n.nodeCount()<=1)return[];var t=function(n,r){var t=new Ld,e=0,o=0;Md.forEach(n.nodes(),(function(n){t.setNode(n,{v:n,in:0,out:0})})),Md.forEach(n.edges(),(function(n){var i=t.edge(n.v,n.w)||0,u=r(n),a=i+u;t.setEdge(n.v,n.w,a),o=Math.max(o,t.node(n.v).out+=u),e=Math.max(e,t.node(n.w).in+=u)}));var i=Md.range(o+e+3).map((function(){return new Pd})),u=e+1;return Md.forEach(t.nodes(),(function(n){zd(i,u,t.node(n))})),{graph:t,buckets:i,zeroIdx:u}}(n,r||Td),e=function(n,r,t){var e,o=[],i=r[r.length-1],u=r[0];for(;n.nodeCount();){for(;e=u.dequeue();)Rd(n,r,t,e);for(;e=i.dequeue();)Rd(n,r,t,e);if(n.nodeCount())for(var a=r.length-2;a>0;--a)if(e=r[a].dequeue()){o=o.concat(Rd(n,r,t,e,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return Md.flatten(Md.map(e,(function(r){return n.outEdges(r.v,r.w)})),!0)},Td=Md.constant(1);function Rd(n,r,t,e,o){var i=o?[]:void 0;return Md.forEach(n.inEdges(e.v),(function(e){var u=n.edge(e),a=n.node(e.v);o&&i.push({v:e.v,w:e.w}),a.out-=u,zd(r,t,a)})),Md.forEach(n.outEdges(e.v),(function(e){var o=n.edge(e),i=e.w,u=n.node(i);u.in-=o,zd(r,t,u)})),n.removeNode(e.v),i}function zd(n,r,t){t.out?t.in?n[t.out-t.in+r].enqueue(t):n[n.length-1].enqueue(t):n[0].enqueue(t)}var Fd=Nd,Dd=Sd,Bd={run:function(n){var r=\"greedy\"===n.graph().acyclicer?Dd(n,function(n){return function(r){return n.edge(r).weight}}(n)):function(n){var r=[],t={},e={};function o(i){Fd.has(e,i)||(e[i]=!0,t[i]=!0,Fd.forEach(n.outEdges(i),(function(n){Fd.has(t,n.w)?r.push(n):o(n.w)})),delete t[i])}return Fd.forEach(n.nodes(),o),r}(n);Fd.forEach(r,(function(r){var t=n.edge(r);n.removeEdge(r),t.forwardName=r.name,t.reversed=!0,n.setEdge(r.w,r.v,t,Fd.uniqueId(\"rev\"))}))},undo:function(n){Fd.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.reversed){n.removeEdge(r);var e=t.forwardName;delete t.reversed,delete t.forwardName,n.setEdge(r.w,r.v,t,e)}}))}};var Ud=Nd,Gd=dd.Graph,Vd={addDummyNode:qd,simplify:function(n){var r=(new Gd).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){var e=r.edge(t.v,t.w)||{weight:0,minlen:1},o=n.edge(t);r.setEdge(t.v,t.w,{weight:e.weight+o.weight,minlen:Math.max(e.minlen,o.minlen)})})),r},asNonCompoundGraph:function(n){var r=new Gd({multigraph:n.isMultigraph()}).setGraph(n.graph());return Ud.forEach(n.nodes(),(function(t){n.children(t).length||r.setNode(t,n.node(t))})),Ud.forEach(n.edges(),(function(t){r.setEdge(t,n.edge(t))})),r},successorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.outEdges(r),(function(r){t[r.w]=(t[r.w]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},predecessorWeights:function(n){var r=Ud.map(n.nodes(),(function(r){var t={};return Ud.forEach(n.inEdges(r),(function(r){t[r.v]=(t[r.v]||0)+n.edge(r).weight})),t}));return Ud.zipObject(n.nodes(),r)},intersectRect:function(n,r){var t,e,o=n.x,i=n.y,u=r.x-o,a=r.y-i,f=n.width/2,c=n.height/2;if(!u&&!a)throw new Error(\"Not possible to find intersection inside of the rectangle\");Math.abs(a)*f>Math.abs(u)*c?(a<0&&(c=-c),t=c*u/a,e=c):(u<0&&(f=-f),t=f,e=f*a/u);return{x:o+t,y:i+e}},buildLayerMatrix:function(n){var r=Ud.map(Ud.range($d(n)+1),(function(){return[]}));return Ud.forEach(n.nodes(),(function(t){var e=n.node(t),o=e.rank;Ud.isUndefined(o)||(r[o][e.order]=t)})),r},normalizeRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank})));Ud.forEach(n.nodes(),(function(t){var e=n.node(t);Ud.has(e,\"rank\")&&(e.rank-=r)}))},removeEmptyRanks:function(n){var r=Ud.min(Ud.map(n.nodes(),(function(r){return n.node(r).rank}))),t=[];Ud.forEach(n.nodes(),(function(e){var o=n.node(e).rank-r;t[o]||(t[o]=[]),t[o].push(e)}));var e=0,o=n.graph().nodeRankFactor;Ud.forEach(t,(function(r,t){Ud.isUndefined(r)&&t%o!=0?--e:e&&Ud.forEach(r,(function(r){n.node(r).rank+=e}))}))},addBorderNode:function(n,r,t,e){var o={width:0,height:0};arguments.length>=4&&(o.rank=t,o.order=e);return qd(n,\"border\",o,r)},maxRank:$d,partition:function(n,r){var t={lhs:[],rhs:[]};return Ud.forEach(n,(function(n){r(n)?t.lhs.push(n):t.rhs.push(n)})),t},time:function(n,r){var t=Ud.now();try{return r()}finally{console.log(n+\" time: \"+(Ud.now()-t)+\"ms\")}},notime:function(n,r){return r()}};function qd(n,r,t,e){var o;do{o=Ud.uniqueId(e)}while(n.hasNode(o));return t.dummy=r,n.setNode(o,t),o}function $d(n){return Ud.max(Ud.map(n.nodes(),(function(r){var t=n.node(r).rank;if(!Ud.isUndefined(t))return t})))}var Yd=Nd,Wd=Vd,Jd={run:function(n){n.graph().dummyChains=[],Yd.forEach(n.edges(),(function(r){!function(n,r){var t,e,o,i=r.v,u=n.node(i).rank,a=r.w,f=n.node(a).rank,c=r.name,s=n.edge(r),d=s.labelRank;if(f===u+1)return;for(n.removeEdge(r),o=0,++u;u<f;++o,++u)s.points=[],e={width:0,height:0,edgeLabel:s,edgeObj:r,rank:u},t=Wd.addDummyNode(n,\"edge\",e,\"_d\"),u===d&&(e.width=s.width,e.height=s.height,e.dummy=\"edge-label\",e.labelpos=s.labelpos),n.setEdge(i,t,{weight:s.weight},c),0===o&&n.graph().dummyChains.push(t),i=t;n.setEdge(i,a,{weight:s.weight},c)}(n,r)}))},undo:function(n){Yd.forEach(n.graph().dummyChains,(function(r){var t,e=n.node(r),o=e.edgeLabel;for(n.setEdge(e.edgeObj,o);e.dummy;)t=n.successors(r)[0],n.removeNode(r),o.points.push({x:e.x,y:e.y}),\"edge-label\"===e.dummy&&(o.x=e.x,o.y=e.y,o.width=e.width,o.height=e.height),r=t,e=n.node(r)}))}};var Kd=Nd,Qd={longestPath:function(n){var r={};Kd.forEach(n.sources(),(function t(e){var o=n.node(e);if(Kd.has(r,e))return o.rank;r[e]=!0;var i=Kd.min(Kd.map(n.outEdges(e),(function(r){return t(r.w)-n.edge(r).minlen})));return i!==Number.POSITIVE_INFINITY&&null!=i||(i=0),o.rank=i}))},slack:function(n,r){return n.node(r.w).rank-n.node(r.v).rank-n.edge(r).minlen}};var Hd=Nd,Xd=dd.Graph,Zd=Qd.slack,nh=function(n){var r,t,e=new Xd({directed:!1}),o=n.nodes()[0],i=n.nodeCount();e.setNode(o,{});for(;rh(e,n)<i;)r=th(e,n),t=e.hasNode(r.v)?Zd(n,r):-Zd(n,r),eh(e,n,t);return e};function rh(n,r){return Hd.forEach(n.nodes(),(function t(e){Hd.forEach(r.nodeEdges(e),(function(o){var i=o.v,u=e===i?o.w:i;n.hasNode(u)||Zd(r,o)||(n.setNode(u,{}),n.setEdge(e,u,{}),t(u))}))})),n.nodeCount()}function th(n,r){return Hd.minBy(r.edges(),(function(t){if(n.hasNode(t.v)!==n.hasNode(t.w))return Zd(r,t)}))}function eh(n,r,t){Hd.forEach(n.nodes(),(function(n){r.node(n).rank+=t}))}var oh=Nd,ih=nh,uh=Qd.slack,ah=Qd.longestPath,fh=dd.alg.preorder,ch=dd.alg.postorder,sh=Vd.simplify,dh=hh;function hh(n){n=sh(n),ah(n);var r,t=ih(n);for(ph(t),vh(t,n);r=yh(t);)mh(t,n,r,bh(t,n,r))}function vh(n,r){var t=ch(n,n.nodes());t=t.slice(0,t.length-1),oh.forEach(t,(function(t){!function(n,r,t){var e=n.node(t),o=e.parent;n.edge(t,o).cutvalue=lh(n,r,t)}(n,r,t)}))}function lh(n,r,t){var e=n.node(t).parent,o=!0,i=r.edge(t,e),u=0;return i||(o=!1,i=r.edge(e,t)),u=i.weight,oh.forEach(r.nodeEdges(t),(function(i){var a,f,c=i.v===t,s=c?i.w:i.v;if(s!==e){var d=c===o,h=r.edge(i).weight;if(u+=d?h:-h,a=t,f=s,n.hasEdge(a,f)){var v=n.edge(t,s).cutvalue;u+=d?-v:v}}})),u}function ph(n,r){arguments.length<2&&(r=n.nodes()[0]),gh(n,{},1,r)}function gh(n,r,t,e,o){var i=t,u=n.node(e);return r[e]=!0,oh.forEach(n.neighbors(e),(function(o){oh.has(r,o)||(t=gh(n,r,t,o,e))})),u.low=i,u.lim=t++,o?u.parent=o:delete u.parent,t}function yh(n){return oh.find(n.edges(),(function(r){return n.edge(r).cutvalue<0}))}function bh(n,r,t){var e=t.v,o=t.w;r.hasEdge(e,o)||(e=t.w,o=t.v);var i=n.node(e),u=n.node(o),a=i,f=!1;i.lim>u.lim&&(a=u,f=!0);var c=oh.filter(r.edges(),(function(r){return f===_h(n,n.node(r.v),a)&&f!==_h(n,n.node(r.w),a)}));return oh.minBy(c,(function(n){return uh(r,n)}))}function mh(n,r,t,e){var o=t.v,i=t.w;n.removeEdge(o,i),n.setEdge(e.v,e.w,{}),ph(n),vh(n,r),function(n,r){var t=oh.find(n.nodes(),(function(n){return!r.node(n).parent})),e=fh(n,t);e=e.slice(1),oh.forEach(e,(function(t){var e=n.node(t).parent,o=r.edge(t,e),i=!1;o||(o=r.edge(e,t),i=!0),r.node(t).rank=r.node(e).rank+(i?o.minlen:-o.minlen)}))}(n,r)}function _h(n,r,t){return t.low<=r.lim&&r.lim<=t.lim}hh.initLowLimValues=ph,hh.initCutValues=vh,hh.calcCutValue=lh,hh.leaveEdge=yh,hh.enterEdge=bh,hh.exchangeEdges=mh;var wh=Qd.longestPath,Eh=nh,jh=dh,kh=function(n){switch(n.graph().ranker){case\"network-simplex\":default:Nh(n);break;case\"tight-tree\":!function(n){wh(n),Eh(n)}(n);break;case\"longest-path\":xh(n)}};var xh=wh;function Nh(n){jh(n)}var Oh=Nd,Ih=function(n){var r=function(n){var r={},t=0;function e(o){var i=t;Oh.forEach(n.children(o),e),r[o]={low:i,lim:t++}}return Oh.forEach(n.children(),e),r}(n);Oh.forEach(n.graph().dummyChains,(function(t){for(var e=n.node(t),o=e.edgeObj,i=function(n,r,t,e){var o,i,u=[],a=[],f=Math.min(r[t].low,r[e].low),c=Math.max(r[t].lim,r[e].lim);o=t;do{o=n.parent(o),u.push(o)}while(o&&(r[o].low>f||c>r[o].lim));i=o,o=e;for(;(o=n.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(n,r,o.v,o.w),u=i.path,a=i.lca,f=0,c=u[f],s=!0;t!==o.w;){if(e=n.node(t),s){for(;(c=u[f])!==a&&n.node(c).maxRank<e.rank;)f++;c===a&&(s=!1)}if(!s){for(;f<u.length-1&&n.node(c=u[f+1]).minRank<=e.rank;)f++;c=u[f]}n.setParent(t,c),t=n.successors(t)[0]}}))};var Ch=Nd,Ah=Vd,Mh={run:function(n){var r=Ah.addDummyNode(n,\"root\",{},\"_root\"),t=function(n){var r={};function t(e,o){var i=n.children(e);i&&i.length&&Ch.forEach(i,(function(n){t(n,o+1)})),r[e]=o}return Ch.forEach(n.children(),(function(n){t(n,1)})),r}(n),e=Ch.max(Ch.values(t))-1,o=2*e+1;n.graph().nestingRoot=r,Ch.forEach(n.edges(),(function(r){n.edge(r).minlen*=o}));var i=function(n){return Ch.reduce(n.edges(),(function(r,t){return r+n.edge(t).weight}),0)}(n)+1;Ch.forEach(n.children(),(function(u){Lh(n,r,o,i,e,t,u)})),n.graph().nodeRankFactor=o},cleanup:function(n){var r=n.graph();n.removeNode(r.nestingRoot),delete r.nestingRoot,Ch.forEach(n.edges(),(function(r){n.edge(r).nestingEdge&&n.removeEdge(r)}))}};function Lh(n,r,t,e,o,i,u){var a=n.children(u);if(a.length){var f=Ah.addBorderNode(n,\"_bt\"),c=Ah.addBorderNode(n,\"_bb\"),s=n.node(u);n.setParent(f,u),s.borderTop=f,n.setParent(c,u),s.borderBottom=c,Ch.forEach(a,(function(a){Lh(n,r,t,e,o,i,a);var s=n.node(a),d=s.borderTop?s.borderTop:a,h=s.borderBottom?s.borderBottom:a,v=s.borderTop?e:2*e,l=d!==h?1:o-i[u]+1;n.setEdge(f,d,{weight:v,minlen:l,nestingEdge:!0}),n.setEdge(h,c,{weight:v,minlen:l,nestingEdge:!0})})),n.parent(u)||n.setEdge(r,f,{weight:0,minlen:o+i[u]})}else u!==r&&n.setEdge(r,u,{weight:0,minlen:t})}var Ph=Nd,Sh=Vd,Th=function(n){Ph.forEach(n.children(),(function r(t){var e=n.children(t),o=n.node(t);if(e.length&&Ph.forEach(e,r),Ph.has(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(var i=o.minRank,u=o.maxRank+1;i<u;++i)Rh(n,\"borderLeft\",\"_bl\",t,o,i),Rh(n,\"borderRight\",\"_br\",t,o,i)}}))};function Rh(n,r,t,e,o,i){var u={width:0,height:0,rank:i,borderType:r},a=o[r][i-1],f=Sh.addDummyNode(n,\"border\",u,t);o[r][i]=f,n.setParent(f,e),a&&n.setEdge(a,f,{weight:1})}var zh=Nd,Fh={adjust:function(n){var r=n.graph().rankdir.toLowerCase();\"lr\"!==r&&\"rl\"!==r||Dh(n)},undo:function(n){var r=n.graph().rankdir.toLowerCase();\"bt\"!==r&&\"rl\"!==r||function(n){zh.forEach(n.nodes(),(function(r){Uh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Uh),zh.has(t,\"y\")&&Uh(t)}))}(n);\"lr\"!==r&&\"rl\"!==r||(!function(n){zh.forEach(n.nodes(),(function(r){Gh(n.node(r))})),zh.forEach(n.edges(),(function(r){var t=n.edge(r);zh.forEach(t.points,Gh),zh.has(t,\"x\")&&Gh(t)}))}(n),Dh(n))}};function Dh(n){zh.forEach(n.nodes(),(function(r){Bh(n.node(r))})),zh.forEach(n.edges(),(function(r){Bh(n.edge(r))}))}function Bh(n){var r=n.width;n.width=n.height,n.height=r}function Uh(n){n.y=-n.y}function Gh(n){var r=n.x;n.x=n.y,n.y=r}var Vh=Nd,qh=function(n){var r={},t=Vh.filter(n.nodes(),(function(r){return!n.children(r).length})),e=Vh.max(Vh.map(t,(function(r){return n.node(r).rank}))),o=Vh.map(Vh.range(e+1),(function(){return[]}));function i(t){if(!Vh.has(r,t)){r[t]=!0;var e=n.node(t);o[e.rank].push(t),Vh.forEach(n.successors(t),i)}}var u=Vh.sortBy(t,(function(r){return n.node(r).rank}));return Vh.forEach(u,i),o};var $h=Nd,Yh=function(n,r){for(var t=0,e=1;e<r.length;++e)t+=Wh(n,r[e-1],r[e]);return t};function Wh(n,r,t){for(var e=$h.zipObject(t,$h.map(t,(function(n,r){return r}))),o=$h.flatten($h.map(r,(function(r){return $h.sortBy($h.map(n.outEdges(r),(function(r){return{pos:e[r.w],weight:n.edge(r).weight}})),\"pos\")})),!0),i=1;i<t.length;)i<<=1;var u=2*i-1;i-=1;var a=$h.map(new Array(u),(function(){return 0})),f=0;return $h.forEach(o.forEach((function(n){var r=n.pos+i;a[r]+=n.weight;for(var t=0;r>0;)r%2&&(t+=a[r+1]),a[r=r-1>>1]+=n.weight;f+=n.weight*t}))),f}var Jh=Nd;var Kh=Nd;var Qh=Nd,Hh=Vd;function Xh(n,r,t){for(var e;r.length&&(e=Qh.last(r)).i<=t;)r.pop(),n.push(e.vs),t++;return t}var Zh=Nd,nv=function(n,r){return Jh.map(r,(function(r){var t=n.inEdges(r);if(t.length){var e=Jh.reduce(t,(function(r,t){var e=n.edge(t),o=n.node(t.v);return{sum:r.sum+e.weight*o.order,weight:r.weight+e.weight}}),{sum:0,weight:0});return{v:r,barycenter:e.sum/e.weight,weight:e.weight}}return{v:r}}))},rv=function(n,r){var t={};return Kh.forEach(n,(function(n,r){var e=t[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:r};Kh.isUndefined(n.barycenter)||(e.barycenter=n.barycenter,e.weight=n.weight)})),Kh.forEach(r.edges(),(function(n){var r=t[n.v],e=t[n.w];Kh.isUndefined(r)||Kh.isUndefined(e)||(e.indegree++,r.out.push(t[n.w]))})),function(n){var r=[];function t(n){return function(r){r.merged||(Kh.isUndefined(r.barycenter)||Kh.isUndefined(n.barycenter)||r.barycenter>=n.barycenter)&&function(n,r){var t=0,e=0;n.weight&&(t+=n.barycenter*n.weight,e+=n.weight);r.weight&&(t+=r.barycenter*r.weight,e+=r.weight);n.vs=r.vs.concat(n.vs),n.barycenter=t/e,n.weight=e,n.i=Math.min(r.i,n.i),r.merged=!0}(n,r)}}function e(r){return function(t){t.in.push(r),0==--t.indegree&&n.push(t)}}for(;n.length;){var o=n.pop();r.push(o),Kh.forEach(o.in.reverse(),t(o)),Kh.forEach(o.out,e(o))}return Kh.map(Kh.filter(r,(function(n){return!n.merged})),(function(n){return Kh.pick(n,[\"vs\",\"i\",\"barycenter\",\"weight\"])}))}(Kh.filter(t,(function(n){return!n.indegree})))},tv=function(n,r){var t=Hh.partition(n,(function(n){return Qh.has(n,\"barycenter\")})),e=t.lhs,o=Qh.sortBy(t.rhs,(function(n){return-n.i})),i=[],u=0,a=0,f=0;e.sort((c=!!r,function(n,r){return n.barycenter<r.barycenter?-1:n.barycenter>r.barycenter?1:c?r.i-n.i:n.i-r.i})),f=Xh(i,o,f),Qh.forEach(e,(function(n){f+=n.vs.length,i.push(n.vs),u+=n.barycenter*n.weight,a+=n.weight,f=Xh(i,o,f)}));var c;var s={vs:Qh.flatten(i,!0)};a&&(s.barycenter=u/a,s.weight=a);return s},ev=function n(r,t,e,o){var i=r.children(t),u=r.node(t),a=u?u.borderLeft:void 0,f=u?u.borderRight:void 0,c={};a&&(i=Zh.filter(i,(function(n){return n!==a&&n!==f})));var s=nv(r,i);Zh.forEach(s,(function(t){if(r.children(t.v).length){var i=n(r,t.v,e,o);c[t.v]=i,Zh.has(i,\"barycenter\")&&(u=t,a=i,Zh.isUndefined(u.barycenter)?(u.barycenter=a.barycenter,u.weight=a.weight):(u.barycenter=(u.barycenter*u.weight+a.barycenter*a.weight)/(u.weight+a.weight),u.weight+=a.weight))}var u,a}));var d=rv(s,e);!function(n,r){Zh.forEach(n,(function(n){n.vs=Zh.flatten(n.vs.map((function(n){return r[n]?r[n].vs:n})),!0)}))}(d,c);var h=tv(d,o);if(a&&(h.vs=Zh.flatten([a,h.vs,f],!0),r.predecessors(a).length)){var v=r.node(r.predecessors(a)[0]),l=r.node(r.predecessors(f)[0]);Zh.has(h,\"barycenter\")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+v.order+l.order)/(h.weight+2),h.weight+=2}return h};var ov=Nd,iv=dd.Graph,uv=function(n,r,t){var e=function(n){var r;for(;n.hasNode(r=ov.uniqueId(\"_root\")););return r}(n),o=new iv({compound:!0}).setGraph({root:e}).setDefaultNodeLabel((function(r){return n.node(r)}));return ov.forEach(n.nodes(),(function(i){var u=n.node(i),a=n.parent(i);(u.rank===r||u.minRank<=r&&r<=u.maxRank)&&(o.setNode(i),o.setParent(i,a||e),ov.forEach(n[t](i),(function(r){var t=r.v===i?r.w:r.v,e=o.edge(t,i),u=ov.isUndefined(e)?0:e.weight;o.setEdge(t,i,{weight:n.edge(r).weight+u})})),ov.has(u,\"minRank\")&&o.setNode(i,{borderLeft:u.borderLeft[r],borderRight:u.borderRight[r]}))})),o};var av=Nd;var fv=Nd,cv=qh,sv=Yh,dv=ev,hv=uv,vv=function(n,r,t){var e,o={};av.forEach(t,(function(t){for(var i,u,a=n.parent(t);a;){if((i=n.parent(a))?(u=o[i],o[i]=a):(u=e,e=a),u&&u!==a)return void r.setEdge(u,a);a=i}}))},lv=dd.Graph,pv=Vd,gv=function(n){var r=pv.maxRank(n),t=yv(n,fv.range(1,r+1),\"inEdges\"),e=yv(n,fv.range(r-1,-1,-1),\"outEdges\"),o=cv(n);mv(n,o);for(var i,u=Number.POSITIVE_INFINITY,a=0,f=0;f<4;++a,++f){bv(a%2?t:e,a%4>=2),o=pv.buildLayerMatrix(n);var c=sv(n,o);c<u&&(f=0,i=fv.cloneDeep(o),u=c)}mv(n,i)};function yv(n,r,t){return fv.map(r,(function(r){return hv(n,r,t)}))}function bv(n,r){var t=new lv;fv.forEach(n,(function(n){var e=n.graph().root,o=dv(n,e,t,r);fv.forEach(o.vs,(function(r,t){n.node(r).order=t})),vv(n,t,o.vs)}))}function mv(n,r){fv.forEach(r,(function(r){fv.forEach(r,(function(r,t){n.node(r).order=t}))}))}var _v=Nd,wv=dd.Graph,Ev=Vd,jv=function(n){var r,t=Ev.buildLayerMatrix(n),e=_v.merge(kv(n,t),xv(n,t)),o={};_v.forEach([\"u\",\"d\"],(function(i){r=\"u\"===i?t:_v.values(t).reverse(),_v.forEach([\"l\",\"r\"],(function(t){\"r\"===t&&(r=_v.map(r,(function(n){return _v.values(n).reverse()})));var u=(\"u\"===i?n.predecessors:n.successors).bind(n),a=Iv(n,r,e,u),f=Cv(n,r,a.root,a.align,\"r\"===t);\"r\"===t&&(f=_v.mapValues(f,(function(n){return-n}))),o[i+t]=f}))}));var i=Av(n,o);return Mv(o,i),Lv(o,n.graph().align)};function kv(n,r){var t={};return _v.reduce(r,(function(r,e){var o=0,i=0,u=r.length,a=_v.last(e);return _v.forEach(e,(function(r,f){var c=function(n,r){if(n.node(r).dummy)return _v.find(n.predecessors(r),(function(r){return n.node(r).dummy}))}(n,r),s=c?n.node(c).order:u;(c||r===a)&&(_v.forEach(e.slice(i,f+1),(function(r){_v.forEach(n.predecessors(r),(function(e){var i=n.node(e),u=i.order;!(u<o||s<u)||i.dummy&&n.node(r).dummy||Nv(t,e,r)}))})),i=f+1,o=s)})),e})),t}function xv(n,r){var t={};function e(r,e,o,i,u){var a;_v.forEach(_v.range(e,o),(function(e){a=r[e],n.node(a).dummy&&_v.forEach(n.predecessors(a),(function(r){var e=n.node(r);e.dummy&&(e.order<i||e.order>u)&&Nv(t,r,a)}))}))}return _v.reduce(r,(function(r,t){var o,i=-1,u=0;return _v.forEach(t,(function(a,f){if(\"border\"===n.node(a).dummy){var c=n.predecessors(a);c.length&&(o=n.node(c[0]).order,e(t,u,f,i,o),u=f,i=o)}e(t,u,t.length,o,r.length)})),t})),t}function Nv(n,r,t){if(r>t){var e=r;r=t,t=e}var o=n[r];o||(n[r]=o={}),o[t]=!0}function Ov(n,r,t){if(r>t){var e=r;r=t,t=e}return _v.has(n[r],t)}function Iv(n,r,t,e){var o={},i={},u={};return _v.forEach(r,(function(n){_v.forEach(n,(function(n,r){o[n]=n,i[n]=n,u[n]=r}))})),_v.forEach(r,(function(n){var r=-1;_v.forEach(n,(function(n){var a=e(n);if(a.length){a=_v.sortBy(a,(function(n){return u[n]}));for(var f=(a.length-1)/2,c=Math.floor(f),s=Math.ceil(f);c<=s;++c){var d=a[c];i[n]===n&&r<u[d]&&!Ov(t,n,d)&&(i[d]=n,i[n]=o[n]=o[d],r=u[d])}}}))})),{root:o,align:i}}function Cv(n,r,t,e,o){var i={},u=function(n,r,t,e){var o=new wv,i=n.graph(),u=function(n,r,t){return function(e,o,i){var u,a=e.node(o),f=e.node(i),c=0;if(c+=a.width/2,_v.has(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":u=-a.width/2;break;case\"r\":u=a.width/2}if(u&&(c+=t?u:-u),u=0,c+=(a.dummy?r:n)/2,c+=(f.dummy?r:n)/2,c+=f.width/2,_v.has(f,\"labelpos\"))switch(f.labelpos.toLowerCase()){case\"l\":u=f.width/2;break;case\"r\":u=-f.width/2}return u&&(c+=t?u:-u),u=0,c}}(i.nodesep,i.edgesep,e);return _v.forEach(r,(function(r){var e;_v.forEach(r,(function(r){var i=t[r];if(o.setNode(i),e){var a=t[e],f=o.edge(a,i);o.setEdge(a,i,Math.max(u(n,r,e),f||0))}e=r}))})),o}(n,r,t,o),a=o?\"borderLeft\":\"borderRight\";function f(n,r){for(var t=u.nodes(),e=t.pop(),o={};e;)o[e]?n(e):(o[e]=!0,t.push(e),t=t.concat(r(e))),e=t.pop()}return f((function(n){i[n]=u.inEdges(n).reduce((function(n,r){return Math.max(n,i[r.v]+u.edge(r))}),0)}),u.predecessors.bind(u)),f((function(r){var t=u.outEdges(r).reduce((function(n,r){return Math.min(n,i[r.w]-u.edge(r))}),Number.POSITIVE_INFINITY),e=n.node(r);t!==Number.POSITIVE_INFINITY&&e.borderType!==a&&(i[r]=Math.max(i[r],t))}),u.successors.bind(u)),_v.forEach(e,(function(n){i[n]=i[t[n]]})),i}function Av(n,r){return _v.minBy(_v.values(r),(function(r){var t=Number.NEGATIVE_INFINITY,e=Number.POSITIVE_INFINITY;return _v.forIn(r,(function(r,o){var i=function(n,r){return n.node(r).width}(n,o)/2;t=Math.max(r+i,t),e=Math.min(r-i,e)})),t-e}))}function Mv(n,r){var t=_v.values(r),e=_v.min(t),o=_v.max(t);_v.forEach([\"u\",\"d\"],(function(t){_v.forEach([\"l\",\"r\"],(function(i){var u,a=t+i,f=n[a];if(f!==r){var c=_v.values(f);(u=\"l\"===i?e-_v.min(c):o-_v.max(c))&&(n[a]=_v.mapValues(f,(function(n){return n+u})))}}))}))}function Lv(n,r){return _v.mapValues(n.ul,(function(t,e){if(r)return n[r.toLowerCase()][e];var o=_v.sortBy(_v.map(n,e));return(o[1]+o[2])/2}))}var Pv=Nd,Sv=Vd,Tv=jv;var Rv=Nd,zv=Bd,Fv=Jd,Dv=kh,Bv=Vd.normalizeRanks,Uv=Ih,Gv=Vd.removeEmptyRanks,Vv=Mh,qv=Th,$v=Fh,Yv=gv,Wv=function(n){(function(n){var r=Sv.buildLayerMatrix(n),t=n.graph().ranksep,e=0;Pv.forEach(r,(function(r){var o=Pv.max(Pv.map(r,(function(r){return n.node(r).height})));Pv.forEach(r,(function(r){n.node(r).y=e+o/2})),e+=o+t}))})(n=Sv.asNonCompoundGraph(n)),Pv.forEach(Tv(n),(function(r,t){n.node(t).x=r}))},Jv=Vd,Kv=dd.Graph,Qv=function(n,r){var t=r&&r.debugTiming?Jv.time:Jv.notime;t(\"layout\",(function(){var r=t(\" buildLayoutGraph\",(function(){return function(n){var r=new Kv({multigraph:!0,compound:!0}),t=ul(n.graph());return r.setGraph(Rv.merge({},Xv,il(t,Hv),Rv.pick(t,Zv))),Rv.forEach(n.nodes(),(function(t){var e=ul(n.node(t));r.setNode(t,Rv.defaults(il(e,nl),rl)),r.setParent(t,n.parent(t))})),Rv.forEach(n.edges(),(function(t){var e=ul(n.edge(t));r.setEdge(t,Rv.merge({},el,il(e,tl),Rv.pick(e,ol)))})),r}(n)}));t(\" runLayout\",(function(){!function(n,r){r(\" makeSpaceForEdgeLabels\",(function(){!function(n){var r=n.graph();r.ranksep/=2,Rv.forEach(n.edges(),(function(t){var e=n.edge(t);e.minlen*=2,\"c\"!==e.labelpos.toLowerCase()&&(\"TB\"===r.rankdir||\"BT\"===r.rankdir?e.width+=e.labeloffset:e.height+=e.labeloffset)}))}(n)})),r(\" removeSelfEdges\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){if(r.v===r.w){var t=n.node(r.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:r,label:n.edge(r)}),n.removeEdge(r)}}))}(n)})),r(\" acyclic\",(function(){zv.run(n)})),r(\" nestingGraph.run\",(function(){Vv.run(n)})),r(\" rank\",(function(){Dv(Jv.asNonCompoundGraph(n))})),r(\" injectEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(t.width&&t.height){var e=n.node(r.v),o={rank:(n.node(r.w).rank-e.rank)/2+e.rank,e:r};Jv.addDummyNode(n,\"edge-proxy\",o,\"_ep\")}}))}(n)})),r(\" removeEmptyRanks\",(function(){Gv(n)})),r(\" nestingGraph.cleanup\",(function(){Vv.cleanup(n)})),r(\" normalizeRanks\",(function(){Bv(n)})),r(\" assignRankMinMax\",(function(){!function(n){var r=0;Rv.forEach(n.nodes(),(function(t){var e=n.node(t);e.borderTop&&(e.minRank=n.node(e.borderTop).rank,e.maxRank=n.node(e.borderBottom).rank,r=Rv.max(r,e.maxRank))})),n.graph().maxRank=r}(n)})),r(\" removeEdgeLabelProxies\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);\"edge-proxy\"===t.dummy&&(n.edge(t.e).labelRank=t.rank,n.removeNode(r))}))}(n)})),r(\" normalize.run\",(function(){Fv.run(n)})),r(\" parentDummyChains\",(function(){Uv(n)})),r(\" addBorderSegments\",(function(){qv(n)})),r(\" order\",(function(){Yv(n)})),r(\" insertSelfEdges\",(function(){!function(n){var r=Jv.buildLayerMatrix(n);Rv.forEach(r,(function(r){var t=0;Rv.forEach(r,(function(r,e){var o=n.node(r);o.order=e+t,Rv.forEach(o.selfEdges,(function(r){Jv.addDummyNode(n,\"selfedge\",{width:r.label.width,height:r.label.height,rank:o.rank,order:e+ ++t,e:r.e,label:r.label},\"_se\")})),delete o.selfEdges}))}))}(n)})),r(\" adjustCoordinateSystem\",(function(){$v.adjust(n)})),r(\" position\",(function(){Wv(n)})),r(\" positionSelfEdges\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){var t=n.node(r);if(\"selfedge\"===t.dummy){var e=n.node(t.e.v),o=e.x+e.width/2,i=e.y,u=t.x-o,a=e.height/2;n.setEdge(t.e,t.label),n.removeNode(r),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}}))}(n)})),r(\" removeBorderNodes\",(function(){!function(n){Rv.forEach(n.nodes(),(function(r){if(n.children(r).length){var t=n.node(r),e=n.node(t.borderTop),o=n.node(t.borderBottom),i=n.node(Rv.last(t.borderLeft)),u=n.node(Rv.last(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-e.y),t.x=i.x+t.width/2,t.y=e.y+t.height/2}})),Rv.forEach(n.nodes(),(function(r){\"border\"===n.node(r).dummy&&n.removeNode(r)}))}(n)})),r(\" normalize.undo\",(function(){Fv.undo(n)})),r(\" fixupEdgeLabelCoords\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);if(Rv.has(t,\"x\"))switch(\"l\"!==t.labelpos&&\"r\"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset}}))}(n)})),r(\" undoCoordinateSystem\",(function(){$v.undo(n)})),r(\" translateGraph\",(function(){!function(n){var r=Number.POSITIVE_INFINITY,t=0,e=Number.POSITIVE_INFINITY,o=0,i=n.graph(),u=i.marginx||0,a=i.marginy||0;function f(n){var i=n.x,u=n.y,a=n.width,f=n.height;r=Math.min(r,i-a/2),t=Math.max(t,i+a/2),e=Math.min(e,u-f/2),o=Math.max(o,u+f/2)}Rv.forEach(n.nodes(),(function(r){f(n.node(r))})),Rv.forEach(n.edges(),(function(r){var t=n.edge(r);Rv.has(t,\"x\")&&f(t)})),r-=u,e-=a,Rv.forEach(n.nodes(),(function(t){var o=n.node(t);o.x-=r,o.y-=e})),Rv.forEach(n.edges(),(function(t){var o=n.edge(t);Rv.forEach(o.points,(function(n){n.x-=r,n.y-=e})),Rv.has(o,\"x\")&&(o.x-=r),Rv.has(o,\"y\")&&(o.y-=e)})),i.width=t-r+u,i.height=o-e+a}(n)})),r(\" assignNodeIntersects\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t,e,o=n.edge(r),i=n.node(r.v),u=n.node(r.w);o.points?(t=o.points[0],e=o.points[o.points.length-1]):(o.points=[],t=u,e=i),o.points.unshift(Jv.intersectRect(i,t)),o.points.push(Jv.intersectRect(u,e))}))}(n)})),r(\" reversePoints\",(function(){!function(n){Rv.forEach(n.edges(),(function(r){var t=n.edge(r);t.reversed&&t.points.reverse()}))}(n)})),r(\" acyclic.undo\",(function(){zv.undo(n)}))}(r,t)})),t(\" updateInputGraph\",(function(){!function(n,r){Rv.forEach(n.nodes(),(function(t){var e=n.node(t),o=r.node(t);e&&(e.x=o.x,e.y=o.y,r.children(t).length&&(e.width=o.width,e.height=o.height))})),Rv.forEach(n.edges(),(function(t){var e=n.edge(t),o=r.edge(t);e.points=o.points,Rv.has(o,\"x\")&&(e.x=o.x,e.y=o.y)})),n.graph().width=r.graph().width,n.graph().height=r.graph().height}(n,r)}))}))};var Hv=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Xv={ranksep:50,edgesep:20,nodesep:50,rankdir:\"tb\"},Zv=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\"],nl=[\"width\",\"height\"],rl={width:0,height:0},tl=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],el={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},ol=[\"labelpos\"];function il(n,r){return Rv.mapValues(Rv.pick(n,r),Number)}function ul(n){var r={};return Rv.forEach(n,(function(n,t){r[t.toLowerCase()]=n})),r}var al=Nd,fl=Vd,cl=dd.Graph;var sl=tr({graphlib:dd,layout:Qv,debug:{debugOrdering:function(n){var r=fl.buildLayerMatrix(n),t=new cl({compound:!0,multigraph:!0}).setGraph({});return al.forEach(n.nodes(),(function(r){t.setNode(r,{label:r}),t.setParent(r,\"layer\"+n.node(r).rank)})),al.forEach(n.edges(),(function(n){t.setEdge(n.v,n.w,{},n.name)})),al.forEach(r,(function(n,r){var e=\"layer\"+r;t.setNode(e,{rank:\"same\"}),al.reduce(n,(function(n,r){return t.setEdge(n,r,{style:\"invis\"}),r}))})),t}},util:{time:Vd.time,notime:Vd.notime},version:\"0.8.5\"});function dl(n,r,t){void 0===t&&(t={rankdir:\"TB\"});var e=t.rankdir,o=new sl.graphlib.Graph;return o.setDefaultEdgeLabel((function(){return{}})),o.setGraph({rankdir:e}),n.forEach((function(n){var r,t;if(!n.id)throw new Error('Node \"id\" does not exist');var e=(null===(r=n.data)||void 0===r?void 0:r.width)||200,i=(null===(t=n.data)||void 0===t?void 0:t.height)||56;o.setNode(n.id,{width:e,height:i})})),r.forEach((function(n){o.setEdge(n.source,n.target)})),sl.layout(o),n.forEach((function(n){var r=o.node(n.id),t=\"bottom\",i=\"top\";switch(e){case\"TB\":t=\"bottom\",i=\"top\";break;case\"BT\":t=\"top\",i=\"bottom\";break;case\"LR\":case\"RL\":t=\"right\",i=\"left\"}n.targetPosition=i,n.sourcePosition=t,n.position={x:r.x-r.width/2,y:r.y-r.height/2}})),{nodes:n,edges:r}}export{dl as dagreLayout};\n//# sourceMappingURL=index.esm.js.map\n"],"names":["jsxRuntimeModule","exports","f","require$$0","k","Symbol","for","l","m","Object","prototype","hasOwnProperty","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","key","ref","__self","__source","q","c","a","g","b","d","e","h","call","defaultProps","$$typeof","type","props","_owner","current","reactJsxRuntime_production_min","jsx","jsxs","hasOwn","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","join","module","default","window","shimModule","is","useState","useEffect","useLayoutEffect","useDebugValue","r","getSnapshot","value","u","document","createElement","inst","useSyncExternalStoreShim_production_min","useSyncExternalStore","withSelectorModule","require$$1","t","useRef","v","useMemo","w","withSelector_production_min","useSyncExternalStoreWithSelector","hasValue","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","destroy","env","MODE","console","warn","clear","ReactExports","useSyncExternalStoreExports","identity","useStoreWithEqualityFn","selector","equalityFn","slice","getServerState","createWithEqualityFnImpl","defaultEqualityFn","createStore","useBoundStoreWithEqualityFn","StoreContext","createContext","Provider","errorMessages","error001","error002","error003","nodeType","concat","error004","error005","error006","error007","id","error009","error008","handleType","_a","sourceHandle","targetHandle","error010","error011","edgeType","error012","infiniteExtent","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","elementSelectionKeys","zustandErrorMessage","useStore","store","useContext","Error","useZustandStore","useStoreApi","updateAbsolutePositions","nodeLookup","options","nodeOrigin","elevateNodesOnSelect","defaults","selectedNodeZ","nodeLookup_1","__values","nodeLookup_1_1","next","node","__read","parentId","has","parentNode","get","_d","calculateXYZPosition","__assign","position","z","isNumeric","zIndex","selected","_b","origin","x","y","currPosition","internals","positionAbsolute","positionChanged","result","parent","parentPosition","getNodePositionWithOrigin","_c","_f","getNodeDimensions","width","height","offsetX","offsetY","updateConnectionLookup","connectionLookup","edgeLookup","edges","edges_1","edges_1_1","edge","source","target","sourceKey","targetKey","prevSource","Map","prevTarget","connection","edgeId","set","adoptUserNodes","nodes","parentLookup","checkEquality","tmpLookup","userNode","internalNode","measured","handleBounds","childNodes","size","handleExpandParent","children","changes","parentExpansions","children_1","children_1_1","child","parent_1","parentRect","expandedRect","nodeToRect","getBoundsOfRects","rect","dimensions","xChange","Math","round","abs","yChange","childNode","some","setAttributes","max","clamp","val","min","clampPosition","extent","initialWidth","_h","_g","_e","initialHeight","isNaN","isFinite","snapPosition","snapGrid","pointToRendererPoint","snapToGrid","tx","ty","tScale","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","boxToRect","nodeToBox","rect1","rect2","fixedForwardRef","render","forwardRef","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","ceil","getViewportForBounds","bounds","minZoom","maxZoom","padding","xZoom","yZoom","zoom","clampedZoom","isCoordinateExtent","undefined","calcAutoPanVelocity","calcAutoPan","pos","getPositionWithOrigin","rendererPointToPoint","isMacOs","navigator","userAgent","indexOf","isNode","element","isNodeBase","isRectObject","obj","getPointerPosition","event","transform","getEventPosition","pointerPos","xSnapped","ySnapped","getDimensions","offsetWidth","offsetHeight","getHostForElement","getRootNode","inputTags","isInputDOMNode","composedPath","includes","nodeName","hasAttribute","closest","isMouseEvent","isMouse","evtX","clientX","touches","evtY","clientY","left","top","getHandleBounds","nodeElement","handles","querySelectorAll","handlesArray","from","nodeBounds","getBoundingClientRect","nodeOffset","map","handle","getAttribute","defaultDoc","useKeyPress","keyCode","actInsideInputWithModifier","keyPressed","setKeyPressed","modifierPressed","pressedKeys","keys","filter","kc","split","keysFlat","reduce","res","item","__spreadArray","keyCodes","keysToWatch","downHandler_1","ctrlKey","metaKey","shiftKey","keyOrCode","useKeyOrCode","code","isMatchingKey","preventDefault","upHandler_1","resetHandler_1","addEventListener","removeEventListener","isUp","every","eventCode","shallow$1","objA","objB","keysA","keyA","ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","containerStyle","noop","dispatch","_","test","Dispatch","this","name","callback","constructor","on","typename","types","T","trim","copy","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector$e","querySelector","empty","selectorAll","arrayAll","select","array","matcher","matches","childMatcher","find","childFirst","firstElementChild","sparse","update","EnterNode","datum","_next","_parent","__data__","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","appendChild","lower","previousSibling","insertBefore","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","o","j","onAdd","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","splice","contains","root","Selection","groups","parents","_groups","_parents","selection","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","matrixTransform","getScreenCTM","inverse","clientLeft","clientTop","pageX","pageY","subgroups","subnode","subgroup","selectAll","selectChild","match","childFind","selectChildren","childrenFilter","bind","constant","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","onenter","onupdate","onexit","append","merge","order","context","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","each","attr","getAttributeNS","property","classed","text","html","create","insert","before","deep","typenames","parseTypenames","iterator","nonpassive","passive","nonpassivecapture","capture","nopropagation","stopImmediatePropagation","noevent$1","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$2","DragEvent","subject","identifier","active","dx","dy","defineProperties","enumerable","configurable","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","maxTouchPoints","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","opacity","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","s","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","channels","displayable","formatHex8","formatHsl","pow","constant$1","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","index","number","one","zero","svgNode","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","cosh","exp","taskHead","taskTail","interpolateZoom","zoomRho","rho","rho2","rho4","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","d1","b0","b1","r0","r1","coshr0","tanh","sinh","duration","SQRT2","_1","_2","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","tick","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","defaultTiming","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","__zoom","defaultExtent","SVGElement","viewBox","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","viewChanged","prevViewport","eventViewport","transformToViewport","viewportToTransform","zoomIdentity","isWrappedWithClass","className","isRightClickPan","panOnDrag","usedButton","getD3Transition","wheelDelta","factor","XYPanZoom","domNode","viewport","onPanZoom","onPanZoomStart","onPanZoomEnd","onTransformChange","onDraggingChange","zoomPanValues","isZoomingOrPanning","usedRightMouseButton","mouseButton","timerId","panScrollTimeout","isPanScrolling","bbox","d3ZoomInstance","touchstarting","touchfirst","touchending","constrain","touchable","scaleExtent","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","clean","__zooming","Gesture","taps","wheel","mouse","moved","x0","y0","dragEnable","changedTouches","k1","started","touch0","touch1","l0","l1","dp","dl","hypot","collection","scaleBy","scaleTo","translateBy","translateTo","emit","clickDistance","d3Selection","setViewportConstrained","d3ZoomHandler","d3DblClickZoomHandler","setTransform","nextTransform","contrainedTransform","noWheelClassName","noPanClassName","onPaneContextMenu","userSelectionActive","panOnScroll","panOnScrollMode","panOnScrollSpeed","preventScrolling","zoomOnPinch","zoomOnScroll","zoomOnDoubleClick","zoomActivationKeyPressed","lib","wheelHandler","d3Zoom","currentZoom","pinchDelta","deltaNormalize","deltaX","Vertical","Horizontal","internal","nextViewport","createPanOnScrollHandler","createZoomOnScrollHandler","startHandler","createPanZoomStartHandler","panZoomHandler","sync","createPanZoomHandler","panZoomEndHandler","viewport_1","createPanZoomEndHandler","zoomScroll","pinchZoom","buttonAllowed","createFilter","setViewport","getViewport","zoomTransform","setScaleExtent","setTranslateExtent","syncViewport","currentTransform","ZoomPane","Free","defaultViewport","zoomActivationKeyCode","_j","onViewportChange","isControlledViewport","zoomPane","_k","shallow","panZoom","updateDimensions","onError","resizeObserver_1","ResizeObserver","observe","unobserve","useResizeHandler","paneDragging","vp","onViewportChangeStart","onMoveStart","onMove","onViewportChangeEnd","onMoveEnd","_jsx","deleteKeyOptions","applyChange","change","dragging","resizing","applyChanges","elements","updatedElements","changesMap","changes_1","changes_1_1","elementChanges","elements_1","elements_1_1","changes_3","updatedElement","changes_2","changes_2_1","applyEdgeChanges","applyNodeChanges","createSelectionChange","getSelectionChanges","items","selectedIds","mutateItem","items_1","items_1_1","willBeSelected","getElementsDiffChanges","lookup","itemsLookup","items_2","items_2_1","lookupItem","storeItem","lookup_1","lookup_1_1","elementToRemoveChange","getInternalNodesBounds","box","nodeBox","getNodesInside","partially","excludeNonSelectableNodes","paneRect","visibleNodes","nodes_1","nodes_1_1","_m","selectable","_o","hidden","overlappingArea","getConnectedEdges","nodeIds","fitView","filteredNodes","optionNodeIds","includeHiddenNodes","currBox","getNodesBounds","calculateNodePosition","nodeId","nextPosition","nodeExtent","parentX","parentY","currentExtent","clampNodeExtent","expandParent","nodeWidth","nodeHeight","parentWidth","parentHeight","currNodeOrigin","extentX","extentY","getElementsToRemove","nodesToRemove","edgesToRemove","onBeforeDelete","matchingNodes","deletable","isIncluded","parentHit","nodes_2","nodes_2_1","done","edgeIds","deletableEdges","connectedEdges","matchingEdges","deletableEdges_1","deletableEdges_1_1","onBeforeDeleteResult","sent","userSelectionRect","UserSelection","wrapHandler","handler","containerRef","elementsSelectable","Pane","isSelecting","selectionMode","onSelectionStart","onSelectionEnd","onPaneClick","onPaneScroll","onPaneMouseEnter","onPaneMouseMove","onPaneMouseLeave","container","prevSelectedNodesCount","prevSelectedEdgesCount","containerBounds","edgeIdLookup","resetUserSelection","onClick","resetSelectedElements","nodesSelectionActive","onWheel","hasActiveSelection","_jsxs","cc","draggable","onContextMenu","onMouseEnter","onMouseDown","edgeLookup_1","edgeLookup_1_1","nativeEvent","startX","startY","onMouseMove","triggerNodeChanges","triggerEdgeChanges","mouseX","mouseY","nextUserSelectRect","selectedNodes","selectedEdgeIds","selectedNodeIds","selectedNodes_1","selectedNodes_1_1","selectedNode","edgeIds_1","edgeIds_1_1","onMouseUp","onMouseLeave","FlowRendererComponent","deleteKeyCode","selectionKeyCode","selectionOnDrag","multiSelectionKeyCode","panActivationKeyCode","_panOnScroll","_panOnDrag","onSelectionContextMenu","disableKeyboardA11y","selectionKeyPressed","panActivationKeyPressed","deleteKeyPressed","multiSelectionKeyPressed","multiSelectionActive","useGlobalKeyHandler","displayName","FlowRenderer","memo","useEdgesState","initialEdges","setEdges","onEdgesChange","useCallback","eds","useNodesState","initialNodes","setNodes","onNodesChange","nds","useIsomorphicLayoutEffect","useQueue","runQueue","shouldFlush","setShouldFlush","cb","queue","reset","createQueue","queueItems","BatchContext","BatchProvider","nodeQueueHandler","hasDefaultNodes","queueItems_1","queueItems_1_1","payload","nodeQueue","edgeQueueHandler","hasDefaultEdges","queueItems_2","queueItems_2_1","edgeQueue","useViewportHelper","zoomIn","zoomOut","zoomTo","zoomLevel","getZoom","tX","tY","tZoom","setCenter","nextZoom","centerX","centerY","fitBounds","screenToFlowPosition","clientPosition","domX","domY","correctedPosition","flowToScreenPosition","flowPosition","rendererPosition","useInkFlow","_this","viewportHelper","batchContext","useBatchContext","viewportInitialized","generalHelper","getInternalNode","getNodeRect","nodeToUse","nextParentId","origin_1","xOffset","yOffset","evaluateAbsolutePosition","nodeWithPosition","updateNode","nodeUpdate","prevNodes","nextNode","getNodes","getNode","getEdges","getEdge","addNodes","newNodes","addEdges","newEdges","toObject","deleteElements","onNodesDelete","onEdgesDelete","onDelete","hasMatchingEdges","hasMatchingNodes","edgeChanges","nodeChanges","deletedNodes","deletedEdges","getIntersectingNodes","nodeOrRect","isRect","nodeRect","hasNodesOption","currNodeRect","isNodeIntersecting","area","updateNodeData","dataUpdate","nextData","updateNodeInternals","onlyRenderVisible","NodeIdContext","Consumer","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","getBezierEdgeCenter","sourceX","sourceY","targetX","targetY","sourceControlX","sourceControlY","targetControlX","targetControlY","calculateControlOffset","distance","curvature","getControlWithCurvature","x1","y1","Left","Right","Top","Bottom","getEdgeCenter","getEdgeId","handleDirections","getDirection","sourcePosition","getSmoothStepPath","targetPosition","borderRadius","center","offset","sourceDir","targetDir","sourceGapped","targetGapped","dir","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","getPoints","labelX","labelY","path","segment","bendSize","xDir_1","yDir_1","xDir","yDir","getBend","getHandles","currentHandle","getHandleType","edgeUpdaterType","handleDomNode","alwaysValid","connectionStartHandle","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","doc","flowId","isValidConnection","isTarget","handleBelow","elementFromPoint","handleToCheck","isValid","endHandle","handleNodeId","handleId","connectable","connectableEnd","Strict","XYHandle","onPointerDown","closestHandle","connectionRadius","autoPanOnConnect","panBy","cancelConnection","onConnectStart","onConnect","onConnectEnd","onEdgeUpdateEnd","updateConnection","getTransform","getConnectionStartHandle","autoPanId","clickedHandle","connectionPosition","autoPanStarted","handleLookup","connectionHandles","sourceHandles","targetHandles","getHandleLookup","connectionStatus","connectionEndHandle","onPointerMove","onPointerUp","autoPan","closestHandles","minDistance","handles_1","handles_1_1","getClosestHandle","isInsideConnectionRadius","isHandleValid","cancelAnimationFrame","connectOnClick","rfId","Handle","isConnectable","isConnectableStart","isConnectableEnd","onTouchStart","rest","__rest","startHandle","clickHandle","connectionClickStartHandle","connectingTo","connectingFrom","clickConnecting","isPossibleEndHandle","connectionInProcess","valid","connectingSelector","onConnectExtended","defaultEdgeOptions","onConnectAction","edgeParams","el","connectionExists","addEdge","isMouseTriggered","currentStore","connectablestart","connectableend","clickconnecting","connectingfrom","connectingto","connectionindicator","onClickConnectStart","onClickConnectEnd","isValidConnectionStore","isValidConnectionHandler","arrowKeyDiffs","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","builtinNodeTypes","input","_Fragment","label","output","handleNodeClick","unselect","nodeRef","addSelectedNodes","unselectNodesAndEdges","blur","isParentSelected","hasSelector","parentElement","getEventHandlerParams","dragItems","nodesFromDragItems","dragItems_1","dragItems_1_1","dragItem","node_1","XYDrag","onNodeMouseDown","getStoreItems","onDragStart","onDrag","onDragStop","lastPos","mousePosition","dragStarted","noDragClassName","handleSelector","isSelectable","updateNodes","dragEvent","onNodeDrag","onSelectionDrag","updateNodePositions","hasChange","nodesBox","adjustedNodeExtent","positionAbsolute_1","currentNode","currentNodes","xMovement","yMovement","startDrag","nodesDraggable","selectNodesOnDrag","onNodeDragStart","onSelectionDragStart","mousePos","getDragItems","d3DragInstance","mousedownx","mousedowny","mousemoving","gestures","drag","beforestart","mousemoved","mouseupped","nodrag","touch","nodeDragThreshold","autoPanOnNodeDrag","onNodeDragStop","onSelectionDragStop","selectedAndDraggable","NodeWrapper","onDoubleClick","nodesConnectable","nodesFocusable","resizeObserver","nodeTypes","isParent","NodeComponent","isDraggable","isFocusable","focusable","hasDimensions","nodeHasDimensions","observedNode","prevSourcePosition","prevTargetPosition","prevType","isInitialized","typeChanged","sourcePosChanged","targetPosChanged","force","useNodeObserver","disabled","setDragging","xyDrag","useDrag","dragHandle","moveSelectedNodes","nodeUpdates","isSelected","xVelo","yVelo","xDiff","direction","yDiff","useMoveSelectedNodes","nodeDimensions","inlineDimensions","getNodeInlineStyleDimensions","clampedPosition","positionWithOrigin","hasPointerEvents","onMouseEnterHandler","onMouseMoveHandler","onMouseLeaveHandler","onContextMenuHandler","onDoubleClickHandler","pointerEvents","visibility","onKeyDown","ariaLiveMessage","tabIndex","role","ariaLabel","positionAbsoluteX","positionAbsoluteY","NodeRendererComponent","entries","updates","entry","disconnect","useResizeObserver","NodeRenderer","MarkerSymbols","Arrow","strokeWidth","stroke","strokeLinecap","strokeLinejoin","fill","ArrowClosed","getMarkerId","marker","idPrefix","Marker","markerUnits","orient","symbol","useMarkerSymbol","markerWidth","markerHeight","refX","refY","MarkerDefinitions","defaultColor","markers","defaultMarkerStart","defaultMarkerEnd","ids","markerStart","markerEnd","markerId","localeCompare","createMarkerIds","MarkerDefinitions$1","EdgeTextComponent","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","edgeTextBbox","setEdgeTextBbox","edgeTextClasses","onEdgeTextRefChange","edgeRef","textBbox","getBBox","rx","ry","EdgeText","BaseEdge","interactionWidth","strokeOpacity","getControl","createSimpleBezierEdge","getSimpleBezierPath","isInternal","SimpleBezierEdge","SimpleBezierEdgeInternal","createSmoothStepEdge","pathOptions","SmoothStepEdge","SmoothStepEdgeInternal","createStepEdge","StepEdge","StepEdgeInternal","createStraightEdge","getStraightPath","StraightEdge","StraightEdgeInternal","createBezierEdge","getBezierPath","BezierEdge","BezierEdgeInternal","builtinEdgeTypes","straight","step","smoothstep","simplebezier","nullPosition","shiftX","shift","shiftY","EdgeUpdaterClassName","EdgeAnchor","radius","onMouseOut","cx","cy","EdgeUpdateAnchors","isUpdatable","edgeUpdaterRadius","targetHandleId","sourceHandleId","onEdgeUpdate","onEdgeUpdateStart","setUpdating","setUpdateHover","handleEdgeUpdater","isSourceHandle","evt","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","isNodeInitialized","toHandleBounds","getHandlePosition","getHandle","EdgeWrapper","edgesFocusable","edgesUpdatable","edgeTypes","EdgeComponent","updatable","updateHover","updating","sourceNode","targetNode","edgePosition","sourceHandleBounds","targetHandleBounds","getEdgePosition","edgeOrConnectedNodeSelected","selectedZIndex","getElevatedEdgeZIndex","elevateOnSelect","elevateEdgesOnSelect","markerStartUrl","markerEndUrl","onEdgeDoubleClick","onEdgeContextMenu","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","animated","inactive","addSelectedEdges","EdgeRendererComponent","useVisibleEdgeIds","EdgeRenderer","Viewport","GraphViewComponent","GraphView","defaultNodes","defaultEdges","storeEdges","storeNodes","fitViewOnInit","fitViewDone","fitViewOnInitOptions","onSelectionChangeHandlers","debug","setDefaultNodesAndEdges","viewportNode","updatedInternals","DOMMatrixReadOnly","m22","parentExpandChildren","dimensionChanged","newNode","parentExpandChanges","updateNodeInternalsSystem","nextFitViewDone","nodeDragItems","nodeDragItems_1","nodeDragItems_1_1","edgesToUnselect","setMinZoom","setMaxZoom","setNodeExtent","delta","panBySystem","fitViewSystem","currentConnection","InkFlowProvider","Wrapper","Fragment","fieldsToTrack","initPrevValues","StoreUpdater","previousFields","fieldsToTrack_1","fieldsToTrack_1_1","fieldName","fieldValue","wrapperStyle","overflow","initViewport","fitViewOptions","cls","PlusIcon","MinusIcon","FitViewIcon","LockIcon","UnlockIcon","ControlButton","Panel","positionClasses","isInteractive","minZoomReached","maxZoomReached","ControlsComponent","showZoom","showFitView","showInteractive","onZoomIn","onZoomOut","onFitView","onInteractiveChange","orientation","orientationClass","title","Controls","E","N","O","I","C","A","M","L","P","R","F","D","B","U","G","V","$","Y","W","J","K","Q","H","X","Z","nn","rn","tn","en","un","an","fn","cn","sn","dn","hn","vn","ln","pn","gn","yn","bn","mn","_n","wn","En","jn","kn","xn","Nn","On","In","Cn","An","Mn","Ln","Pn","Sn","Tn","Rn","zn","Fn","Dn","Bn","Un","Gn","Vn","qn","$n","Yn","Wn","Jn","Kn","Qn","Hn","Xn","Zn","nr","rr","globalThis","global","er","or","ir","ur","ar","Function","fr","cr","toStringTag","sr","dr","vr","lr","IE_PROTO","hr","pr","gr","br","mr","yr","hash","_r","wr","Er","jr","writable","kr","xr","Nr","Or","propertyIsEnumerable","Ir","Cr","Ar","Mr","Lr","Pr","Sr","Tr","Rr","zr","Fr","Dr","Br","Ur","Buffer","isBuffer","Gr","Vr","qr","$r","Yr","Wr","Jr","Kr","Qr","Hr","Xr","Zr","nt","rt","tt","et","ot","it","ut","at","ft","ct","st","dt","ht","vt","lt","pt","gt","yt","bt","mt","process","require","binding","_t","isTypedArray","wt","String","Et","jt","kt","xt","Nt","It","Ot","Ct","At","Mt","Lt","Pt","St","Tt","Rt","zt","Ft","Dt","Bt","Ut","Gt","Vt","qt","$t","Yt","Wt","Jt","Kt","Qt","Ht","Xt","Zt","ne","re","te","ee","oe","ie","ue","ae","fe","ce","se","de","he","ve","le","pe","ge","ye","be","me","we","Ee","je","ke","xe","Ne","Oe","Ie","Ce","Ae","Me","Le","Pe","Se","Te","Re","ze","Fe","De","Be","Ue","Ge","Ve","qe","$e","Ye","We","Je","Ke","Qe","He","Xe","Ze","no","ro","to","eo","oo","io","uo","ao","fo","co","so","ho","vo","lo","po","go","yo","bo","mo","wo","Eo","jo","ko","xo","No","Oo","Io","Co","Ao","Mo","Lo","Po","So","To","Ro","zo","Fo","Do","Bo","Uo","Go","Vo","qo","$o","Yo","Wo","Jo","Ko","Qo","Ho","Xo","Zo","ni","ri","ti","ei","oi","ii","ui","ai","fi","ci","si","di","hi","vi","li","pi","gi","yi","mi","_i","wi","Ei","ji","ki","xi","Ni","Oi","Ii","Ci","Ai","Mi","Li","Pi","Si","Ti","Ri","zi","Fi","Di","Bi","Ui","Gi","Vi","qi","$i","Yi","Wi","Ji","Ki","Qi","Hi","Xi","Zi","nu","ru","tu","eu","ou","iu","uu","au","fu","cu","su","du","hu","vu","lu","pu","gu","yu","bu","mu","_u","wu","Eu","ju","ku","xu","Nu","Ou","Iu","Cu","Au","Mu","Lu","Pu","Su","Tu","Ru","zu","Fu","Du","Bu","Uu","Gu","Vu","qu","$u","Yu","Wu","Ju","Ku","Qu","Hu","Xu","Zu","na","ra","ta","ea","oa","ia","ua","aa","fa","ca","sa","da","ha","va","la","pa","ga","ba","ma","wa","Ea","ja","ka","Na","Oa","Ia","Ca","Aa","Ma","La","Pa","Sa","Ta","Ra","za","Fa","Da","Ba","Ua","allocUnsafe","Ga","Va","qa","$a","getOwnPropertySymbols","Ya","Wa","getPrototypeOf","Ja","Ka","Qa","Ha","Xa","ArrayBuffer","Za","Uint8Array","nf","byteLength","rf","buffer","byteOffset","ef","of","ff","valueOf","tf","isMap","uf","isSet","af","cf","sf","df","hf","vf","lf","pf","gf","yf","bf","mf","wf","jf","message","Ef","kf","xf","Nf","If","Cf","Mf","Lf","Pf","cache","Cache","Af","charCodeAt","Sf","Tf","Rf","zf","Df","Uf","Of","Ff","Bf","Gf","Vf","qf","$f","Yf","Wf","Jf","Qf","Kf","Hf","Xf","isConcatSpreadable","Zf","nc","rc","tc","ic","ec","oc","uc","ac","fc","isEmpty","isFunction","isUndefined","union","values","sc","_isDirected","directed","_isMultigraph","multigraph","_isCompound","compound","_label","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","_nodeCount","_edgeCount","isDirected","isMultigraph","isCompound","setGraph","graph","setDefaultNodeLabel","nodeCount","sources","sinks","setNode","hasNode","removeNode","removeEdge","_removeFromParentsChildList","setParent","predecessors","successors","neighbors","isLeaf","filterNodes","setEdge","setDefaultEdgeLabel","edgeCount","setPath","freeze","hasEdge","inEdges","outEdges","nodeEdges","hc","write","read","vc","lc","_arr","_keyIndices","_decrease","removeMin","_swap","_heapify","decrease","pc","predecessor","gc","yc","onStack","lowlink","bc","mc","CycleException","wc","Ec","jc","xc","Graph","version","json","alg","components","dijkstra","dijkstraAll","findCycles","floydWarshall","isAcyclic","postorder","preorder","prim","tarjan","topsort","graphlib","Nc","Oc","Ic","Cc","Ac","Mc","Lc","Pc","Sc","Tc","Rc","zc","Fc","Dc","Bc","Uc","Gc","Vc","qc","$c","Yc","Wc","Jc","Kc","Qc","Hc","Xc","Zc","ns","rs","ts","es","os","us","as","fs","cs","ss","ds","hs","vs","ls","ps","gs","ys","ms","_s","ws","Es","js","ks","xs","Ns","Os","Is","Cs","As","Ms","Ls","Ps","Ss","Ts","Rs","zs","Fs","Ds","Bs","Us","Gs","Vs","qs","$s","Ys","Ws","Js","Ks","Qs","Hs","Xs","Zs","nd","rd","td","ed","od","ud","ad","fd","cd","sd","dd","hd","ld","charAt","vd","gd","yd","bd","md","wd","xd","criteria","kd","cloneDeep","pd","flatten","forIn","last","mapValues","minBy","pick","Ed","jd","sortBy","uniqueId","zipObject","Nd","Od","Id","_prev","_sentinel","Cd","Ad","dequeue","enqueue","JSON","stringify","Md","Ld","Pd","Td","Rd","out","zd","in","Fd","Dd","buckets","zeroIdx","Bd","run","acyclicer","weight","forwardName","reversed","undo","Ud","Gd","Vd","addDummyNode","qd","simplify","minlen","asNonCompoundGraph","successorWeights","predecessorWeights","intersectRect","buildLayerMatrix","$d","rank","normalizeRanks","removeEmptyRanks","nodeRankFactor","addBorderNode","maxRank","partition","lhs","rhs","notime","dummy","Yd","Wd","Jd","dummyChains","labelRank","edgeLabel","edgeObj","labelpos","Kd","Qd","Hd","Xd","Zd","nh","rh","th","eh","oh","ih","uh","ah","fh","ch","sh","dh","hh","ph","vh","yh","mh","bh","cutvalue","lh","gh","low","lim","initLowLimValues","initCutValues","calcCutValue","leaveEdge","enterEdge","exchangeEdges","wh","Eh","jh","xh","Oh","Ch","Ah","Mh","nestingRoot","Lh","cleanup","nestingEdge","borderTop","borderBottom","Ph","Sh","Rh","borderType","zh","Fh","adjust","rankdir","Dh","Uh","Gh","Bh","Vh","$h","Wh","Jh","Kh","Qh","Hh","Xh","Zh","ov","iv","av","fv","cv","sv","dv","borderLeft","borderRight","sum","barycenter","nv","indegree","merged","reverse","rv","tv","hv","minRank","lv","pv","yv","bv","vv","mv","_v","wv","Ev","Nv","Ov","Pv","Sv","Tv","kv","xv","floor","align","Iv","nodesep","edgesep","Cv","Av","Mv","ul","Lv","Rv","zv","Fv","Dv","ranker","Nh","Bv","Uv","lca","Gv","Vv","qv","$v","Yv","Jv","Kv","Hv","Xv","ranksep","Zv","nl","rl","tl","labeloffset","ol","il","al","fl","cl","sl","__esModule","tr","layout","debugTiming","selfEdges","Wv","marginx","marginy","unshift","debugOrdering","util"],"mappings":"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GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGv/B,GAAGw/B,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGh8C,GAAGi8C,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGhhD,GAAGihD,GAAGC,GAAGxwE,GAAGywE,GAAGC,GAAGC,GAAGC,GA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]}