@uipath/apollo-react 6.17.4 → 6.19.0

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 (116) hide show
  1. package/dist/canvas/components/BaseCanvas/CanvasProviders.cjs +10 -7
  2. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts.map +1 -1
  3. package/dist/canvas/components/BaseCanvas/CanvasProviders.js +10 -7
  4. package/dist/canvas/components/Edges/CanvasEdge.cjs +11 -5
  5. package/dist/canvas/components/Edges/CanvasEdge.d.ts.map +1 -1
  6. package/dist/canvas/components/Edges/CanvasEdge.js +12 -6
  7. package/dist/canvas/components/Edges/index.cjs +12 -4
  8. package/dist/canvas/components/Edges/index.d.ts +2 -1
  9. package/dist/canvas/components/Edges/index.d.ts.map +1 -1
  10. package/dist/canvas/components/Edges/index.js +2 -1
  11. package/dist/canvas/components/Edges/shared/constants.cjs +1 -0
  12. package/dist/canvas/components/Edges/shared/constants.d.ts +1 -0
  13. package/dist/canvas/components/Edges/shared/constants.d.ts.map +1 -1
  14. package/dist/canvas/components/Edges/shared/constants.js +1 -0
  15. package/dist/canvas/components/Edges/shared/crossings/EdgeCrossingsContext.cjs +122 -0
  16. package/dist/canvas/components/Edges/shared/crossings/EdgeCrossingsContext.d.ts +22 -0
  17. package/dist/canvas/components/Edges/shared/crossings/EdgeCrossingsContext.d.ts.map +1 -0
  18. package/dist/canvas/components/Edges/shared/crossings/EdgeCrossingsContext.js +79 -0
  19. package/dist/canvas/components/Edges/shared/crossings/crossings.cjs +139 -0
  20. package/dist/canvas/components/Edges/shared/crossings/crossings.d.ts +9 -0
  21. package/dist/canvas/components/Edges/shared/crossings/crossings.d.ts.map +1 -0
  22. package/dist/canvas/components/Edges/shared/crossings/crossings.js +99 -0
  23. package/dist/canvas/components/Edges/shared/crossings/index.cjs +50 -0
  24. package/dist/canvas/components/Edges/shared/crossings/index.d.ts +4 -0
  25. package/dist/canvas/components/Edges/shared/crossings/index.d.ts.map +1 -0
  26. package/dist/canvas/components/Edges/shared/crossings/index.js +4 -0
  27. package/dist/canvas/components/Edges/shared/crossings/useEdgeLineJumps.cjs +67 -0
  28. package/dist/canvas/components/Edges/shared/crossings/useEdgeLineJumps.d.ts +3 -0
  29. package/dist/canvas/components/Edges/shared/crossings/useEdgeLineJumps.d.ts.map +1 -0
  30. package/dist/canvas/components/Edges/shared/crossings/useEdgeLineJumps.js +33 -0
  31. package/dist/canvas/components/Edges/shared/geometry.cjs +83 -44
  32. package/dist/canvas/components/Edges/shared/geometry.d.ts +2 -2
  33. package/dist/canvas/components/Edges/shared/geometry.d.ts.map +1 -1
  34. package/dist/canvas/components/Edges/shared/geometry.js +83 -44
  35. package/dist/canvas/components/Edges/shared/hooks/useEdgeGeometry.cjs +6 -3
  36. package/dist/canvas/components/Edges/shared/hooks/useEdgeGeometry.d.ts +2 -0
  37. package/dist/canvas/components/Edges/shared/hooks/useEdgeGeometry.d.ts.map +1 -1
  38. package/dist/canvas/components/Edges/shared/hooks/useEdgeGeometry.js +6 -3
  39. package/dist/canvas/components/Edges/shared/primitives/EdgeArrow.cjs +4 -3
  40. package/dist/canvas/components/Edges/shared/primitives/EdgeArrow.d.ts +1 -1
  41. package/dist/canvas/components/Edges/shared/primitives/EdgeArrow.d.ts.map +1 -1
  42. package/dist/canvas/components/Edges/shared/primitives/EdgeArrow.js +4 -3
  43. package/dist/canvas/components/Edges/shared/primitives/EdgeLabel.cjs +3 -3
  44. package/dist/canvas/components/Edges/shared/primitives/EdgeLabel.d.ts +2 -2
  45. package/dist/canvas/components/Edges/shared/primitives/EdgeLabel.d.ts.map +1 -1
  46. package/dist/canvas/components/Edges/shared/primitives/EdgeLabel.js +4 -4
  47. package/dist/canvas/components/Edges/shared/primitives/EdgePath.cjs +4 -3
  48. package/dist/canvas/components/Edges/shared/primitives/EdgePath.d.ts +2 -2
  49. package/dist/canvas/components/Edges/shared/primitives/EdgePath.d.ts.map +1 -1
  50. package/dist/canvas/components/Edges/shared/primitives/EdgePath.js +4 -3
  51. package/dist/canvas/components/Edges/shared/types.d.ts +5 -0
  52. package/dist/canvas/components/Edges/shared/types.d.ts.map +1 -1
  53. package/dist/canvas/components/StageNode/StageNode.types.d.ts +1 -0
  54. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  55. package/dist/canvas/components/StageNode/tasks/AdhocTask.cjs +5 -0
  56. package/dist/canvas/components/StageNode/tasks/AdhocTask.d.ts.map +1 -1
  57. package/dist/canvas/components/StageNode/tasks/AdhocTask.js +5 -0
  58. package/dist/canvas/components/StageNode/tasks/DraggableTask.cjs +5 -0
  59. package/dist/canvas/components/StageNode/tasks/DraggableTask.d.ts.map +1 -1
  60. package/dist/canvas/components/StageNode/tasks/DraggableTask.js +5 -0
  61. package/dist/canvas/components/StageNode/tasks/EventDrivenTask.cjs +5 -0
  62. package/dist/canvas/components/StageNode/tasks/EventDrivenTask.d.ts.map +1 -1
  63. package/dist/canvas/components/StageNode/tasks/EventDrivenTask.js +5 -0
  64. package/dist/canvas/components/StageNode/tasks/TaskMockedChip.cjs +64 -0
  65. package/dist/canvas/components/StageNode/tasks/TaskMockedChip.d.ts +8 -0
  66. package/dist/canvas/components/StageNode/tasks/TaskMockedChip.d.ts.map +1 -0
  67. package/dist/canvas/components/StageNode/tasks/TaskMockedChip.js +30 -0
  68. package/dist/canvas/locales/en.cjs +1 -1
  69. package/dist/canvas/locales/en.d.ts.map +1 -1
  70. package/dist/canvas/locales/en.js +1 -1
  71. package/dist/canvas/storybook-utils/components/StoryPage.d.ts +36 -0
  72. package/dist/canvas/storybook-utils/components/StoryPage.d.ts.map +1 -0
  73. package/dist/canvas/storybook-utils/components/StoryPreview.d.ts +9 -0
  74. package/dist/canvas/storybook-utils/components/StoryPreview.d.ts.map +1 -0
  75. package/dist/canvas/storybook-utils/components/StorySpecTable.d.ts +14 -0
  76. package/dist/canvas/storybook-utils/components/StorySpecTable.d.ts.map +1 -0
  77. package/dist/canvas/storybook-utils/components/index.d.ts +3 -0
  78. package/dist/canvas/storybook-utils/components/index.d.ts.map +1 -1
  79. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  80. package/dist/material/components/ap-model-picker/locales/de.cjs +1 -1
  81. package/dist/material/components/ap-model-picker/locales/de.d.ts.map +1 -1
  82. package/dist/material/components/ap-model-picker/locales/de.js +1 -1
  83. package/dist/material/components/ap-model-picker/locales/es-MX.cjs +1 -1
  84. package/dist/material/components/ap-model-picker/locales/es-MX.d.ts.map +1 -1
  85. package/dist/material/components/ap-model-picker/locales/es-MX.js +1 -1
  86. package/dist/material/components/ap-model-picker/locales/es.cjs +1 -1
  87. package/dist/material/components/ap-model-picker/locales/es.d.ts.map +1 -1
  88. package/dist/material/components/ap-model-picker/locales/es.js +1 -1
  89. package/dist/material/components/ap-model-picker/locales/fr.cjs +1 -1
  90. package/dist/material/components/ap-model-picker/locales/fr.d.ts.map +1 -1
  91. package/dist/material/components/ap-model-picker/locales/fr.js +1 -1
  92. package/dist/material/components/ap-model-picker/locales/ja.cjs +1 -1
  93. package/dist/material/components/ap-model-picker/locales/ja.d.ts.map +1 -1
  94. package/dist/material/components/ap-model-picker/locales/ja.js +1 -1
  95. package/dist/material/components/ap-model-picker/locales/ko.cjs +1 -1
  96. package/dist/material/components/ap-model-picker/locales/ko.d.ts.map +1 -1
  97. package/dist/material/components/ap-model-picker/locales/ko.js +1 -1
  98. package/dist/material/components/ap-model-picker/locales/pt-BR.cjs +1 -1
  99. package/dist/material/components/ap-model-picker/locales/pt-BR.d.ts.map +1 -1
  100. package/dist/material/components/ap-model-picker/locales/pt-BR.js +1 -1
  101. package/dist/material/components/ap-model-picker/locales/pt.cjs +1 -1
  102. package/dist/material/components/ap-model-picker/locales/pt.d.ts.map +1 -1
  103. package/dist/material/components/ap-model-picker/locales/pt.js +1 -1
  104. package/dist/material/components/ap-model-picker/locales/ro.cjs +1 -1
  105. package/dist/material/components/ap-model-picker/locales/ro.d.ts.map +1 -1
  106. package/dist/material/components/ap-model-picker/locales/ro.js +1 -1
  107. package/dist/material/components/ap-model-picker/locales/tr.cjs +1 -1
  108. package/dist/material/components/ap-model-picker/locales/tr.d.ts.map +1 -1
  109. package/dist/material/components/ap-model-picker/locales/tr.js +1 -1
  110. package/dist/material/components/ap-model-picker/locales/zh-CN.cjs +1 -1
  111. package/dist/material/components/ap-model-picker/locales/zh-CN.d.ts.map +1 -1
  112. package/dist/material/components/ap-model-picker/locales/zh-CN.js +1 -1
  113. package/dist/material/components/ap-model-picker/locales/zh-TW.cjs +1 -1
  114. package/dist/material/components/ap-model-picker/locales/zh-TW.d.ts.map +1 -1
  115. package/dist/material/components/ap-model-picker/locales/zh-TW.js +1 -1
  116. package/package.json +1 -1
@@ -30,6 +30,7 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const tooltip_namespaceObject = require("@uipath/apollo-wind/components/ui/tooltip");
31
31
  const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
32
32
  const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
33
+ const crossings_index_cjs_namespaceObject = require("../Edges/shared/crossings/index.cjs");
33
34
  const StickyNoteCanvasOptionsContext_cjs_namespaceObject = require("../StickyNoteNode/StickyNoteCanvasOptionsContext.cjs");
34
35
  const external_BaseCanvasModeProvider_cjs_namespaceObject = require("./BaseCanvasModeProvider.cjs");
35
36
  const external_CanvasThemeContext_cjs_namespaceObject = require("./CanvasThemeContext.cjs");
@@ -47,13 +48,15 @@ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOpt
47
48
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltipProviderMarker, {
48
49
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_ConnectedHandlesContext_cjs_namespaceObject.ConnectedHandlesProvider, {
49
50
  edges: edges,
50
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_BaseCanvasModeProvider_cjs_namespaceObject.BaseCanvasModeProvider, {
51
- mode: mode,
52
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StickyNoteCanvasOptionsContext_cjs_namespaceObject.StickyNoteCanvasOptionsProvider, {
53
- options: stickyNoteOptions,
54
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
55
- nodes: nodes,
56
- children: children
51
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(crossings_index_cjs_namespaceObject.EdgeCrossingsProvider, {
52
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_BaseCanvasModeProvider_cjs_namespaceObject.BaseCanvasModeProvider, {
53
+ mode: mode,
54
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StickyNoteCanvasOptionsContext_cjs_namespaceObject.StickyNoteCanvasOptionsProvider, {
55
+ options: stickyNoteOptions,
56
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
57
+ nodes: nodes,
58
+ children: children
59
+ })
57
60
  })
58
61
  })
59
62
  })
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,EAAE,oBAAoB,2CAkBtB"}
1
+ {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,EAAE,oBAAoB,2CAoBtB"}
@@ -2,6 +2,7 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { TooltipProvider } from "@uipath/apollo-wind/components/ui/tooltip";
3
3
  import { ApI18nProvider } from "../../../i18n/index.js";
4
4
  import { CanvasTooltipProviderMarker } from "../CanvasTooltip.js";
5
+ import { EdgeCrossingsProvider } from "../Edges/shared/crossings/index.js";
5
6
  import { StickyNoteCanvasOptionsProvider } from "../StickyNoteNode/StickyNoteCanvasOptionsContext.js";
6
7
  import { BaseCanvasModeProvider } from "./BaseCanvasModeProvider.js";
7
8
  import { CanvasThemeProvider } from "./CanvasThemeContext.js";
@@ -19,13 +20,15 @@ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOpt
19
20
  children: /*#__PURE__*/ jsx(CanvasTooltipProviderMarker, {
20
21
  children: /*#__PURE__*/ jsx(ConnectedHandlesProvider, {
21
22
  edges: edges,
22
- children: /*#__PURE__*/ jsx(BaseCanvasModeProvider, {
23
- mode: mode,
24
- children: /*#__PURE__*/ jsx(StickyNoteCanvasOptionsProvider, {
25
- options: stickyNoteOptions,
26
- children: /*#__PURE__*/ jsx(SelectionStateProvider, {
27
- nodes: nodes,
28
- children: children
23
+ children: /*#__PURE__*/ jsx(EdgeCrossingsProvider, {
24
+ children: /*#__PURE__*/ jsx(BaseCanvasModeProvider, {
25
+ mode: mode,
26
+ children: /*#__PURE__*/ jsx(StickyNoteCanvasOptionsProvider, {
27
+ options: stickyNoteOptions,
28
+ children: /*#__PURE__*/ jsx(SelectionStateProvider, {
29
+ nodes: nodes,
30
+ children: children
31
+ })
29
32
  })
30
33
  })
31
34
  })
@@ -97,6 +97,7 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ (0, external_react_namespaceObject.m
97
97
  });
98
98
  const geometry = (0, hooks_index_cjs_namespaceObject.useEdgeGeometry)({
99
99
  routing,
100
+ edgeId: id,
100
101
  sourceNodeId: source,
101
102
  targetNodeId: target,
102
103
  sourceHandleId,
@@ -110,7 +111,8 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ (0, external_react_namespaceObject.m
110
111
  waypoints: effectiveWaypoints,
111
112
  autoRouted: 0 === waypoints.length,
112
113
  enableSegments: editingEnabled,
113
- hideArrowHead
114
+ hideArrowHead,
115
+ enableLineJumps: !!data?.enableLineJumps
114
116
  });
115
117
  const editor = (0, hooks_index_cjs_namespaceObject.useWaypointEditor)({
116
118
  edgeId: id,
@@ -148,6 +150,13 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ (0, external_react_namespaceObject.m
148
150
  });
149
151
  const showEditingChrome = editingEnabled && (isHovered || selected || editor.isDragging);
150
152
  const opacity = style?.opacity ?? 1;
153
+ const arrowTarget = (0, external_react_namespaceObject.useMemo)(()=>({
154
+ x: targetX,
155
+ y: targetY
156
+ }), [
157
+ targetX,
158
+ targetY
159
+ ]);
151
160
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
152
161
  children: [
153
162
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("g", {
@@ -183,10 +192,7 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ (0, external_react_namespaceObject.m
183
192
  handlers: editor.waypointHandlers
184
193
  }, waypoint.id)),
185
194
  !hideArrowHead && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(primitives_index_cjs_namespaceObject.EdgeArrow, {
186
- target: {
187
- x: targetX,
188
- y: targetY
189
- },
195
+ target: arrowTarget,
190
196
  angle: geometry.arrow.angle,
191
197
  offset: geometry.arrow.offset,
192
198
  color: color,
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/CanvasEdge.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAWtD,eAAO,MAAM,UAAU,uDA+NF,CAAC"}
1
+ {"version":3,"file":"CanvasEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/CanvasEdge.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAYtD,eAAO,MAAM,UAAU,uDAqOF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Position, useStoreApi } from "../../xyflow/react.js";
3
- import { memo, useCallback, useRef, useState } from "react";
3
+ import { memo, useCallback, useMemo, useRef, useState } from "react";
4
4
  import { isPreviewEdge } from "../../utils/createPreviewNode.js";
5
5
  import { useBaseCanvasMode } from "../BaseCanvas/BaseCanvasModeProvider.js";
6
6
  import { EdgeToolbar, useEdgeToolbarState } from "../Toolbar/index.js";
@@ -69,6 +69,7 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ memo(function({ id, selected, animat
69
69
  });
70
70
  const geometry = useEdgeGeometry({
71
71
  routing,
72
+ edgeId: id,
72
73
  sourceNodeId: source,
73
74
  targetNodeId: target,
74
75
  sourceHandleId,
@@ -82,7 +83,8 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ memo(function({ id, selected, animat
82
83
  waypoints: effectiveWaypoints,
83
84
  autoRouted: 0 === waypoints.length,
84
85
  enableSegments: editingEnabled,
85
- hideArrowHead
86
+ hideArrowHead,
87
+ enableLineJumps: !!data?.enableLineJumps
86
88
  });
87
89
  const editor = useWaypointEditor({
88
90
  edgeId: id,
@@ -120,6 +122,13 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ memo(function({ id, selected, animat
120
122
  });
121
123
  const showEditingChrome = editingEnabled && (isHovered || selected || editor.isDragging);
122
124
  const opacity = style?.opacity ?? 1;
125
+ const arrowTarget = useMemo(()=>({
126
+ x: targetX,
127
+ y: targetY
128
+ }), [
129
+ targetX,
130
+ targetY
131
+ ]);
123
132
  return /*#__PURE__*/ jsxs(Fragment, {
124
133
  children: [
125
134
  /*#__PURE__*/ jsxs("g", {
@@ -155,10 +164,7 @@ const CanvasEdge_CanvasEdge = /*#__PURE__*/ memo(function({ id, selected, animat
155
164
  handlers: editor.waypointHandlers
156
165
  }, waypoint.id)),
157
166
  !hideArrowHead && /*#__PURE__*/ jsx(EdgeArrow, {
158
- target: {
159
- x: targetX,
160
- y: targetY
161
- },
167
+ target: arrowTarget,
162
168
  angle: geometry.arrow.angle,
163
169
  offset: geometry.arrow.offset,
164
170
  color: color,
@@ -6,6 +6,9 @@ var __webpack_modules__ = {
6
6
  "./SequenceEdge" (module) {
7
7
  module.exports = require("./SequenceEdge.cjs");
8
8
  },
9
+ "./shared/crossings" (module) {
10
+ module.exports = require("./shared/crossings/index.cjs");
11
+ },
9
12
  "./shared/routing" (module) {
10
13
  module.exports = require("./shared/routing/index.cjs");
11
14
  }
@@ -55,9 +58,10 @@ var __webpack_exports__ = {};
55
58
  __webpack_require__.r(__webpack_exports__);
56
59
  __webpack_require__.d(__webpack_exports__, {
57
60
  CanvasEdge: ()=>_CanvasEdge__rspack_import_0.CanvasEdge,
58
- defaultEdgeRouter: ()=>_shared_routing__rspack_import_2.defaultEdgeRouter,
59
- defaultIsRoutable: ()=>_shared_routing__rspack_import_2.defaultIsRoutable,
60
- useGraphRouter: ()=>_shared_routing__rspack_import_2.useGraphRouter
61
+ EdgeCrossingsProvider: ()=>_shared_crossings__rspack_import_2.EdgeCrossingsProvider,
62
+ defaultEdgeRouter: ()=>_shared_routing__rspack_import_3.defaultEdgeRouter,
63
+ defaultIsRoutable: ()=>_shared_routing__rspack_import_3.defaultIsRoutable,
64
+ useGraphRouter: ()=>_shared_routing__rspack_import_3.useGraphRouter
61
65
  });
62
66
  var _CanvasEdge__rspack_import_0 = __webpack_require__("./CanvasEdge");
63
67
  var _SequenceEdge__rspack_import_1 = __webpack_require__("./SequenceEdge");
@@ -67,17 +71,21 @@ var __webpack_exports__ = {};
67
71
  "useGraphRouter",
68
72
  "default",
69
73
  "CanvasEdge",
74
+ "EdgeCrossingsProvider",
70
75
  "defaultIsRoutable"
71
76
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_SequenceEdge__rspack_import_1[__rspack_import_key];
72
77
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
73
- var _shared_routing__rspack_import_2 = __webpack_require__("./shared/routing");
78
+ var _shared_crossings__rspack_import_2 = __webpack_require__("./shared/crossings");
79
+ var _shared_routing__rspack_import_3 = __webpack_require__("./shared/routing");
74
80
  })();
75
81
  exports.CanvasEdge = __webpack_exports__.CanvasEdge;
82
+ exports.EdgeCrossingsProvider = __webpack_exports__.EdgeCrossingsProvider;
76
83
  exports.defaultEdgeRouter = __webpack_exports__.defaultEdgeRouter;
77
84
  exports.defaultIsRoutable = __webpack_exports__.defaultIsRoutable;
78
85
  exports.useGraphRouter = __webpack_exports__.useGraphRouter;
79
86
  for(var __rspack_i in __webpack_exports__)if (-1 === [
80
87
  "CanvasEdge",
88
+ "EdgeCrossingsProvider",
81
89
  "defaultEdgeRouter",
82
90
  "defaultIsRoutable",
83
91
  "useGraphRouter"
@@ -1,6 +1,7 @@
1
1
  export { CanvasEdge } from './CanvasEdge';
2
2
  export * from './SequenceEdge';
3
+ export { EdgeCrossingsProvider } from './shared/crossings';
3
4
  export type { EdgeRouter, RouteAnchor, RoutedEdge, RouteEdgeRequest, RouteNodeRequest, RouteRequest, } from './shared/routing';
4
5
  export { defaultEdgeRouter, defaultIsRoutable, useGraphRouter, } from './shared/routing';
5
- export type { CanvasEdgeData, CanvasEdgeProps, EdgeRouting, EdgeStrokeStyle, Point, Segment, SegmentOrientation, Waypoint, } from './shared/types';
6
+ export type { CanvasEdgeData, CanvasEdgeProps, EdgeRouting, EdgeStrokeStyle, PathJump, Point, Segment, SegmentOrientation, Waypoint, } from './shared/types';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,QAAQ,GACT,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,QAAQ,GACT,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CanvasEdge } from "./CanvasEdge.js";
2
+ import { EdgeCrossingsProvider } from "./shared/crossings/index.js";
2
3
  import { defaultEdgeRouter, defaultIsRoutable, useGraphRouter } from "./shared/routing/index.js";
3
4
  export * from "./SequenceEdge.js";
4
- export { CanvasEdge, defaultEdgeRouter, defaultIsRoutable, useGraphRouter };
5
+ export { CanvasEdge, EdgeCrossingsProvider, defaultEdgeRouter, defaultIsRoutable, useGraphRouter };
@@ -47,6 +47,7 @@ const EDGE_CONSTANTS = {
47
47
  MIN_SEGMENT_LENGTH: 32,
48
48
  COLLINEAR_TOLERANCE: 1,
49
49
  ARROW_OFFSET: 8,
50
+ LINE_JUMP_RADIUS: 5,
50
51
  STUB_OFFSET: 2 * external_constants_cjs_namespaceObject.GRID_SPACING
51
52
  };
52
53
  const EDGE_PATH_TRANSITION = 'stroke 0.2s ease, opacity 0.2s ease';
@@ -13,6 +13,7 @@ export declare const EDGE_CONSTANTS: {
13
13
  readonly MIN_SEGMENT_LENGTH: 32;
14
14
  readonly COLLINEAR_TOLERANCE: 1;
15
15
  readonly ARROW_OFFSET: 8;
16
+ readonly LINE_JUMP_RADIUS: 5;
16
17
  readonly STUB_OFFSET: number;
17
18
  };
18
19
  export declare const EDGE_PATH_TRANSITION = "stroke 0.2s ease, opacity 0.2s ease";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Edges/shared/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/C,eAAO,MAAM,eAAe,EAAE,QAAQ,EAAO,CAAC;AAE9C,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAiCjB,CAAC;AAGX,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAG1E,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAMX,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAOX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKpD,CAAC;AASF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAKjD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Edges/shared/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/C,eAAO,MAAM,eAAe,EAAE,QAAQ,EAAO,CAAC;AAE9C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAuCjB,CAAC;AAGX,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAG1E,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAMX,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAOX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKpD,CAAC;AASF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAKjD,CAAC"}
@@ -13,6 +13,7 @@ const EDGE_CONSTANTS = {
13
13
  MIN_SEGMENT_LENGTH: 32,
14
14
  COLLINEAR_TOLERANCE: 1,
15
15
  ARROW_OFFSET: 8,
16
+ LINE_JUMP_RADIUS: 5,
16
17
  STUB_OFFSET: 2 * GRID_SPACING
17
18
  };
18
19
  const EDGE_PATH_TRANSITION = 'stroke 0.2s ease, opacity 0.2s ease';
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ EMPTY_JUMPS: ()=>EMPTY_JUMPS,
28
+ EdgeCrossingsStore: ()=>EdgeCrossingsStore,
29
+ EdgeCrossingsProvider: ()=>EdgeCrossingsProvider,
30
+ useEdgeCrossingsStore: ()=>useEdgeCrossingsStore
31
+ });
32
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
33
+ const external_react_namespaceObject = require("react");
34
+ const external_crossings_cjs_namespaceObject = require("./crossings.cjs");
35
+ const EMPTY_JUMPS = Object.freeze([]);
36
+ class EdgeCrossingsStore {
37
+ geometry = new Map();
38
+ jumps = new Map();
39
+ listeners = new Map();
40
+ scheduled = false;
41
+ register(edgeId, points) {
42
+ const current = this.geometry.get(edgeId);
43
+ if (current && (0, external_crossings_cjs_namespaceObject.polylinesEqual)(current, points)) return;
44
+ this.geometry.set(edgeId, points);
45
+ this.schedule();
46
+ }
47
+ unregister(edgeId) {
48
+ if (this.geometry.delete(edgeId)) this.schedule();
49
+ }
50
+ subscribe(edgeId, listener) {
51
+ let edgeListeners = this.listeners.get(edgeId);
52
+ if (!edgeListeners) {
53
+ edgeListeners = new Set();
54
+ this.listeners.set(edgeId, edgeListeners);
55
+ }
56
+ edgeListeners.add(listener);
57
+ return ()=>{
58
+ edgeListeners.delete(listener);
59
+ if (0 === edgeListeners.size) this.listeners.delete(edgeId);
60
+ };
61
+ }
62
+ getSnapshot(edgeId) {
63
+ return this.jumps.get(edgeId) ?? EMPTY_JUMPS;
64
+ }
65
+ schedule() {
66
+ if (this.scheduled) return;
67
+ this.scheduled = true;
68
+ queueMicrotask(()=>{
69
+ this.scheduled = false;
70
+ this.recompute();
71
+ });
72
+ }
73
+ recompute() {
74
+ const polylines = [];
75
+ for (const [edgeId, points] of this.geometry)polylines.push({
76
+ edgeId,
77
+ points
78
+ });
79
+ const next = (0, external_crossings_cjs_namespaceObject.computeLineJumps)(polylines);
80
+ const changed = [];
81
+ for (const [edgeId, jumps] of next)if (!(0, external_crossings_cjs_namespaceObject.jumpsEqual)(this.jumps.get(edgeId) ?? EMPTY_JUMPS, jumps)) {
82
+ this.jumps.set(edgeId, jumps);
83
+ changed.push(edgeId);
84
+ }
85
+ for (const edgeId of [
86
+ ...this.jumps.keys()
87
+ ])if (!next.has(edgeId)) {
88
+ this.jumps.delete(edgeId);
89
+ changed.push(edgeId);
90
+ }
91
+ for (const edgeId of changed){
92
+ const edgeListeners = this.listeners.get(edgeId);
93
+ if (edgeListeners) for (const listener of edgeListeners)listener();
94
+ }
95
+ }
96
+ }
97
+ const EdgeCrossingsContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(null);
98
+ function EdgeCrossingsProvider({ children }) {
99
+ const inherited = (0, external_react_namespaceObject.useContext)(EdgeCrossingsContext);
100
+ const ownStoreRef = (0, external_react_namespaceObject.useRef)(void 0);
101
+ if (!ownStoreRef.current) ownStoreRef.current = new EdgeCrossingsStore();
102
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(EdgeCrossingsContext.Provider, {
103
+ value: inherited ?? ownStoreRef.current,
104
+ children: children
105
+ });
106
+ }
107
+ function useEdgeCrossingsStore() {
108
+ return (0, external_react_namespaceObject.useContext)(EdgeCrossingsContext);
109
+ }
110
+ exports.EMPTY_JUMPS = __webpack_exports__.EMPTY_JUMPS;
111
+ exports.EdgeCrossingsProvider = __webpack_exports__.EdgeCrossingsProvider;
112
+ exports.EdgeCrossingsStore = __webpack_exports__.EdgeCrossingsStore;
113
+ exports.useEdgeCrossingsStore = __webpack_exports__.useEdgeCrossingsStore;
114
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
115
+ "EMPTY_JUMPS",
116
+ "EdgeCrossingsProvider",
117
+ "EdgeCrossingsStore",
118
+ "useEdgeCrossingsStore"
119
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
120
+ Object.defineProperty(exports, '__esModule', {
121
+ value: true
122
+ });
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { PathJump, Point } from '../types';
3
+ type Listener = () => void;
4
+ export declare const EMPTY_JUMPS: readonly PathJump[];
5
+ export declare class EdgeCrossingsStore {
6
+ private geometry;
7
+ private jumps;
8
+ private listeners;
9
+ private scheduled;
10
+ register(edgeId: string, points: Point[]): void;
11
+ unregister(edgeId: string): void;
12
+ subscribe(edgeId: string, listener: Listener): () => void;
13
+ getSnapshot(edgeId: string): readonly PathJump[];
14
+ private schedule;
15
+ private recompute;
16
+ }
17
+ export declare function EdgeCrossingsProvider({ children }: {
18
+ children: ReactNode;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare function useEdgeCrossingsStore(): EdgeCrossingsStore | null;
21
+ export {};
22
+ //# sourceMappingURL=EdgeCrossingsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeCrossingsContext.d.ts","sourceRoot":"","sources":["../../../../../../src/canvas/components/Edges/shared/crossings/EdgeCrossingsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGhD,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,eAAO,MAAM,WAAW,EAAE,SAAS,QAAQ,EAAsB,CAAC;AAWlE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,SAAS,CAAS;IAiB1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAS/C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAmBzD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,QAAQ,EAAE;IAchD,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,SAAS;CA2BlB;AAeD,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAa1E;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,GAAG,IAAI,CAEjE"}
@@ -0,0 +1,79 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useRef } from "react";
3
+ import { computeLineJumps, jumpsEqual, polylinesEqual } from "./crossings.js";
4
+ const EMPTY_JUMPS = Object.freeze([]);
5
+ class EdgeCrossingsStore {
6
+ geometry = new Map();
7
+ jumps = new Map();
8
+ listeners = new Map();
9
+ scheduled = false;
10
+ register(edgeId, points) {
11
+ const current = this.geometry.get(edgeId);
12
+ if (current && polylinesEqual(current, points)) return;
13
+ this.geometry.set(edgeId, points);
14
+ this.schedule();
15
+ }
16
+ unregister(edgeId) {
17
+ if (this.geometry.delete(edgeId)) this.schedule();
18
+ }
19
+ subscribe(edgeId, listener) {
20
+ let edgeListeners = this.listeners.get(edgeId);
21
+ if (!edgeListeners) {
22
+ edgeListeners = new Set();
23
+ this.listeners.set(edgeId, edgeListeners);
24
+ }
25
+ edgeListeners.add(listener);
26
+ return ()=>{
27
+ edgeListeners.delete(listener);
28
+ if (0 === edgeListeners.size) this.listeners.delete(edgeId);
29
+ };
30
+ }
31
+ getSnapshot(edgeId) {
32
+ return this.jumps.get(edgeId) ?? EMPTY_JUMPS;
33
+ }
34
+ schedule() {
35
+ if (this.scheduled) return;
36
+ this.scheduled = true;
37
+ queueMicrotask(()=>{
38
+ this.scheduled = false;
39
+ this.recompute();
40
+ });
41
+ }
42
+ recompute() {
43
+ const polylines = [];
44
+ for (const [edgeId, points] of this.geometry)polylines.push({
45
+ edgeId,
46
+ points
47
+ });
48
+ const next = computeLineJumps(polylines);
49
+ const changed = [];
50
+ for (const [edgeId, jumps] of next)if (!jumpsEqual(this.jumps.get(edgeId) ?? EMPTY_JUMPS, jumps)) {
51
+ this.jumps.set(edgeId, jumps);
52
+ changed.push(edgeId);
53
+ }
54
+ for (const edgeId of [
55
+ ...this.jumps.keys()
56
+ ])if (!next.has(edgeId)) {
57
+ this.jumps.delete(edgeId);
58
+ changed.push(edgeId);
59
+ }
60
+ for (const edgeId of changed){
61
+ const edgeListeners = this.listeners.get(edgeId);
62
+ if (edgeListeners) for (const listener of edgeListeners)listener();
63
+ }
64
+ }
65
+ }
66
+ const EdgeCrossingsContext = /*#__PURE__*/ createContext(null);
67
+ function EdgeCrossingsProvider({ children }) {
68
+ const inherited = useContext(EdgeCrossingsContext);
69
+ const ownStoreRef = useRef(void 0);
70
+ if (!ownStoreRef.current) ownStoreRef.current = new EdgeCrossingsStore();
71
+ return /*#__PURE__*/ jsx(EdgeCrossingsContext.Provider, {
72
+ value: inherited ?? ownStoreRef.current,
73
+ children: children
74
+ });
75
+ }
76
+ function useEdgeCrossingsStore() {
77
+ return useContext(EdgeCrossingsContext);
78
+ }
79
+ export { EMPTY_JUMPS, EdgeCrossingsProvider, EdgeCrossingsStore, useEdgeCrossingsStore };
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ polylinesEqual: ()=>polylinesEqual,
28
+ jumpsEqual: ()=>jumpsEqual,
29
+ computeLineJumps: ()=>computeLineJumps
30
+ });
31
+ const external_constants_cjs_namespaceObject = require("../constants.cjs");
32
+ const { COLLINEAR_TOLERANCE: TOL, BORDER_RADIUS } = external_constants_cjs_namespaceObject.EDGE_CONSTANTS;
33
+ function computeLineJumps(polylines) {
34
+ const horizontals = [];
35
+ const verticals = [];
36
+ for (const { edgeId, points } of polylines)for(let i = 0; i < points.length - 1; i++){
37
+ const a = points[i];
38
+ const b = points[i + 1];
39
+ const dx = Math.abs(b.x - a.x);
40
+ const dy = Math.abs(b.y - a.y);
41
+ if (dy <= TOL && dx > TOL) horizontals.push({
42
+ edgeId,
43
+ segmentIndex: i,
44
+ y: a.y,
45
+ xMin: Math.min(a.x, b.x),
46
+ xMax: Math.max(a.x, b.x)
47
+ });
48
+ else if (dx <= TOL && dy > TOL) {
49
+ const bendMargin = Math.min(BORDER_RADIUS, dy / 2);
50
+ const startMargin = i > 0 ? bendMargin : TOL;
51
+ const endMargin = i + 2 < points.length ? bendMargin : TOL;
52
+ const descending = b.y > a.y;
53
+ verticals.push({
54
+ edgeId,
55
+ x: a.x,
56
+ yMin: Math.min(a.y, b.y),
57
+ yMax: Math.max(a.y, b.y),
58
+ minMargin: descending ? startMargin : endMargin,
59
+ maxMargin: descending ? endMargin : startMargin
60
+ });
61
+ }
62
+ }
63
+ if (0 === horizontals.length || 0 === verticals.length) return new Map();
64
+ verticals.sort((a, b)=>a.x - b.x);
65
+ const xs = verticals.map((v)=>v.x);
66
+ const result = new Map();
67
+ for (const h of horizontals){
68
+ let jumps;
69
+ let lastX = -1 / 0;
70
+ for(let i = lowerBound(xs, h.xMin + TOL); i < verticals.length; i++){
71
+ const v = verticals[i];
72
+ if (v.x >= h.xMax - TOL) break;
73
+ if (v.edgeId !== h.edgeId) {
74
+ if (!(h.y <= v.yMin + v.minMargin) && !(h.y >= v.yMax - v.maxMargin)) {
75
+ if (!(v.x - lastX <= TOL)) {
76
+ lastX = v.x;
77
+ jumps ??= [];
78
+ jumps.push({
79
+ segmentIndex: h.segmentIndex,
80
+ point: {
81
+ x: v.x,
82
+ y: h.y
83
+ }
84
+ });
85
+ }
86
+ }
87
+ }
88
+ }
89
+ if (!jumps) continue;
90
+ const existing = result.get(h.edgeId);
91
+ if (existing) existing.push(...jumps);
92
+ else result.set(h.edgeId, jumps);
93
+ }
94
+ return result;
95
+ }
96
+ function lowerBound(sorted, value) {
97
+ let low = 0;
98
+ let high = sorted.length;
99
+ while(low < high){
100
+ const mid = low + high >>> 1;
101
+ if (sorted[mid] < value) low = mid + 1;
102
+ else high = mid;
103
+ }
104
+ return low;
105
+ }
106
+ function polylinesEqual(a, b) {
107
+ if (a === b) return true;
108
+ if (a.length !== b.length) return false;
109
+ for(let i = 0; i < a.length; i++){
110
+ const left = a[i];
111
+ const right = b[i];
112
+ if (Math.abs(left.x - right.x) > TOL) return false;
113
+ if (Math.abs(left.y - right.y) > TOL) return false;
114
+ }
115
+ return true;
116
+ }
117
+ function jumpsEqual(a, b) {
118
+ if (a === b) return true;
119
+ if (a.length !== b.length) return false;
120
+ for(let i = 0; i < a.length; i++){
121
+ const left = a[i];
122
+ const right = b[i];
123
+ if (left.segmentIndex !== right.segmentIndex) return false;
124
+ if (Math.abs(left.point.x - right.point.x) > TOL) return false;
125
+ if (Math.abs(left.point.y - right.point.y) > TOL) return false;
126
+ }
127
+ return true;
128
+ }
129
+ exports.computeLineJumps = __webpack_exports__.computeLineJumps;
130
+ exports.jumpsEqual = __webpack_exports__.jumpsEqual;
131
+ exports.polylinesEqual = __webpack_exports__.polylinesEqual;
132
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
133
+ "computeLineJumps",
134
+ "jumpsEqual",
135
+ "polylinesEqual"
136
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
137
+ Object.defineProperty(exports, '__esModule', {
138
+ value: true
139
+ });
@@ -0,0 +1,9 @@
1
+ import type { PathJump, Point } from '../types';
2
+ export type EdgePolyline = {
3
+ edgeId: string;
4
+ points: Point[];
5
+ };
6
+ export declare function computeLineJumps(polylines: EdgePolyline[]): Map<string, PathJump[]>;
7
+ export declare function polylinesEqual(a: readonly Point[], b: readonly Point[]): boolean;
8
+ export declare function jumpsEqual(a: readonly PathJump[], b: readonly PathJump[]): boolean;
9
+ //# sourceMappingURL=crossings.d.ts.map