react-html-graph 1.2.1 → 1.2.3

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 (156) hide show
  1. package/dist/behaviour/move-behaviour.d.ts +50 -0
  2. package/dist/behaviour/move-behaviour.d.ts.map +1 -0
  3. package/dist/behaviour/move-behaviour.js +71 -0
  4. package/dist/behaviour/move-behaviour.js.map +1 -0
  5. package/dist/calculations/index.d.ts +15 -1
  6. package/dist/calculations/index.d.ts.map +1 -1
  7. package/dist/calculations/index.js +1026 -0
  8. package/dist/calculations/index.js.map +1 -1
  9. package/dist/calculations/types.d.ts +70 -0
  10. package/dist/calculations/types.d.ts.map +1 -1
  11. package/dist/context/connection-context.d.ts.map +1 -1
  12. package/dist/context/connection-context.js.map +1 -1
  13. package/dist/context/error-context.d.ts.map +1 -1
  14. package/dist/context/error-context.js.map +1 -1
  15. package/dist/context/graph-context.d.ts.map +1 -1
  16. package/dist/context/graph-context.js.map +1 -1
  17. package/dist/context/graph-event-bus-context.d.ts +4 -0
  18. package/dist/context/graph-event-bus-context.d.ts.map +1 -0
  19. package/dist/context/graph-event-bus-context.js +8 -0
  20. package/dist/context/graph-event-bus-context.js.map +1 -0
  21. package/dist/context/graph-root-context.d.ts.map +1 -1
  22. package/dist/context/graph-root-context.js.map +1 -1
  23. package/dist/context/link-info-context.d.ts +4 -0
  24. package/dist/context/link-info-context.d.ts.map +1 -0
  25. package/dist/context/link-info-context.js +15 -0
  26. package/dist/context/link-info-context.js.map +1 -0
  27. package/dist/context/node-event-context.d.ts +4 -0
  28. package/dist/context/node-event-context.d.ts.map +1 -0
  29. package/dist/context/node-event-context.js +10 -0
  30. package/dist/context/node-event-context.js.map +1 -0
  31. package/dist/context/node-registry-context.d.ts +4 -0
  32. package/dist/context/node-registry-context.d.ts.map +1 -0
  33. package/dist/context/node-registry-context.js +13 -0
  34. package/dist/context/node-registry-context.js.map +1 -0
  35. package/dist/graph/index.d.ts +2 -2
  36. package/dist/graph/index.d.ts.map +1 -1
  37. package/dist/graph/index.js +446 -36
  38. package/dist/graph/index.js.map +1 -1
  39. package/dist/hooks/connection.d.ts +1 -1
  40. package/dist/hooks/connection.d.ts.map +1 -1
  41. package/dist/hooks/connection.js +5 -2
  42. package/dist/hooks/connection.js.map +1 -1
  43. package/dist/hooks/get-viewbox.d.ts +9 -0
  44. package/dist/hooks/get-viewbox.d.ts.map +1 -0
  45. package/dist/hooks/get-viewbox.js +20 -0
  46. package/dist/hooks/get-viewbox.js.map +1 -0
  47. package/dist/hooks/graph-event-bus.d.ts +3 -0
  48. package/dist/hooks/graph-event-bus.d.ts.map +1 -0
  49. package/dist/hooks/graph-event-bus.js +7 -0
  50. package/dist/hooks/graph-event-bus.js.map +1 -0
  51. package/dist/hooks/link-info.d.ts +4 -0
  52. package/dist/hooks/link-info.d.ts.map +1 -0
  53. package/dist/hooks/link-info.js +7 -0
  54. package/dist/hooks/link-info.js.map +1 -0
  55. package/dist/hooks/node-registry.d.ts +3 -0
  56. package/dist/hooks/node-registry.d.ts.map +1 -0
  57. package/dist/hooks/node-registry.js +7 -0
  58. package/dist/hooks/node-registry.js.map +1 -0
  59. package/dist/hooks/nodeEvent.d.ts +7 -0
  60. package/dist/hooks/nodeEvent.d.ts.map +1 -0
  61. package/dist/hooks/nodeEvent.js +17 -0
  62. package/dist/hooks/nodeEvent.js.map +1 -0
  63. package/dist/hooks/use-graph-api.d.ts +50 -0
  64. package/dist/hooks/use-graph-api.d.ts.map +1 -0
  65. package/dist/hooks/use-graph-api.js +97 -0
  66. package/dist/hooks/use-graph-api.js.map +1 -0
  67. package/dist/layouts/centralizar.d.ts +1 -0
  68. package/dist/layouts/centralizar.d.ts.map +1 -0
  69. package/dist/layouts/centralizar.js +2 -0
  70. package/dist/layouts/centralizar.js.map +1 -0
  71. package/dist/layouts/force-direction-layout.d.ts +9 -0
  72. package/dist/layouts/force-direction-layout.d.ts.map +1 -0
  73. package/dist/layouts/force-direction-layout.js +11 -0
  74. package/dist/layouts/force-direction-layout.js.map +1 -0
  75. package/dist/layouts/index.d.ts +13 -0
  76. package/dist/layouts/index.d.ts.map +1 -0
  77. package/dist/layouts/index.js +17 -0
  78. package/dist/layouts/index.js.map +1 -0
  79. package/dist/layouts/organic-layout.d.ts +9 -0
  80. package/dist/layouts/organic-layout.d.ts.map +1 -0
  81. package/dist/layouts/organic-layout.js +11 -0
  82. package/dist/layouts/organic-layout.js.map +1 -0
  83. package/dist/layouts/radial-layout.d.ts +9 -0
  84. package/dist/layouts/radial-layout.d.ts.map +1 -0
  85. package/dist/layouts/radial-layout.js +11 -0
  86. package/dist/layouts/radial-layout.js.map +1 -0
  87. package/dist/layouts/sequential-layout.d.ts +9 -0
  88. package/dist/layouts/sequential-layout.d.ts.map +1 -0
  89. package/dist/layouts/sequential-layout.js +11 -0
  90. package/dist/layouts/sequential-layout.js.map +1 -0
  91. package/dist/layouts/shared.d.ts +10 -0
  92. package/dist/layouts/shared.d.ts.map +1 -0
  93. package/dist/layouts/shared.js +39 -0
  94. package/dist/layouts/shared.js.map +1 -0
  95. package/dist/layouts/structural-layout.d.ts +9 -0
  96. package/dist/layouts/structural-layout.d.ts.map +1 -0
  97. package/dist/layouts/structural-layout.js +11 -0
  98. package/dist/layouts/structural-layout.js.map +1 -0
  99. package/dist/layouts/tree-layout.d.ts +9 -0
  100. package/dist/layouts/tree-layout.d.ts.map +1 -0
  101. package/dist/layouts/tree-layout.js +11 -0
  102. package/dist/layouts/tree-layout.js.map +1 -0
  103. package/dist/link/base.d.ts +10 -20
  104. package/dist/link/base.d.ts.map +1 -1
  105. package/dist/link/base.js +17 -197
  106. package/dist/link/base.js.map +1 -1
  107. package/dist/link/temp-link.d.ts.map +1 -1
  108. package/dist/link/temp-link.js +24 -7
  109. package/dist/link/temp-link.js.map +1 -1
  110. package/dist/module.d.ts +11 -1
  111. package/dist/module.d.ts.map +1 -1
  112. package/dist/module.js +11 -1
  113. package/dist/module.js.map +1 -1
  114. package/dist/nodes/base.d.ts +2 -1
  115. package/dist/nodes/base.d.ts.map +1 -1
  116. package/dist/nodes/base.js +75 -66
  117. package/dist/nodes/base.js.map +1 -1
  118. package/dist/paths/bidirectional-path.d.ts +16 -0
  119. package/dist/paths/bidirectional-path.d.ts.map +1 -0
  120. package/dist/paths/bidirectional-path.js +260 -0
  121. package/dist/paths/bidirectional-path.js.map +1 -0
  122. package/dist/ports/base.d.ts.map +1 -1
  123. package/dist/ports/base.js +26 -13
  124. package/dist/ports/base.js.map +1 -1
  125. package/dist/providers/connection-provider.d.ts +1 -1
  126. package/dist/providers/connection-provider.d.ts.map +1 -1
  127. package/dist/providers/connection-provider.js +30 -16
  128. package/dist/providers/connection-provider.js.map +1 -1
  129. package/dist/providers/graph-event-bus-provider.d.ts +11 -0
  130. package/dist/providers/graph-event-bus-provider.d.ts.map +1 -0
  131. package/dist/providers/graph-event-bus-provider.js +46 -0
  132. package/dist/providers/graph-event-bus-provider.js.map +1 -0
  133. package/dist/providers/link-info-provider.d.ts +23 -0
  134. package/dist/providers/link-info-provider.d.ts.map +1 -0
  135. package/dist/providers/link-info-provider.js +31 -0
  136. package/dist/providers/link-info-provider.js.map +1 -0
  137. package/dist/providers/node-event-context.d.ts +3 -0
  138. package/dist/providers/node-event-context.d.ts.map +1 -0
  139. package/dist/providers/node-event-context.js +81 -0
  140. package/dist/providers/node-event-context.js.map +1 -0
  141. package/dist/providers/node-registry-provider.d.ts +11 -0
  142. package/dist/providers/node-registry-provider.d.ts.map +1 -0
  143. package/dist/providers/node-registry-provider.js +54 -0
  144. package/dist/providers/node-registry-provider.js.map +1 -0
  145. package/dist/style.css +1 -0
  146. package/dist/types.d.ts +359 -38
  147. package/dist/types.d.ts.map +1 -1
  148. package/dist/utils/proxy.d.ts +2 -0
  149. package/dist/utils/proxy.d.ts.map +1 -0
  150. package/dist/utils/proxy.js +18 -0
  151. package/dist/utils/proxy.js.map +1 -0
  152. package/dist/utils/symbols.d.ts +2 -0
  153. package/dist/utils/symbols.d.ts.map +1 -0
  154. package/dist/utils/symbols.js +2 -0
  155. package/dist/utils/symbols.js.map +1 -0
  156. package/package.json +1 -1
@@ -3,86 +3,81 @@ import { useRef, useState, useCallback, useEffect, useMemo, memo } from "react";
3
3
  import useGraphMode from "../hooks/graph-mode";
4
4
  import GraphPort from "../ports/base";
5
5
  import useGetZoom from "../hooks/get-zoom";
6
+ import { NodeEventProvider } from "../providers/node-event-context";
7
+ import { useMoveBehaviour } from "../behaviour/move-behaviour";
8
+ import useNodeRegistry from "../hooks/node-registry";
9
+ import useGraphEventBus from "../hooks/graph-event-bus";
6
10
  /**
7
11
  * Componente que representa um objeto/nó do grafo. Gerencia posicionamento,
8
12
  * arraste (drag) e exposição das portas no local correto.
13
+ * Registra-se no NodeRegistry e emite eventos via GraphEventBus.
9
14
  *
10
15
  * @param props GraphObjectProps
11
16
  * @returns JSX.Element
12
17
  */
13
- const MemoizedGraphObject = memo(function GraphObject({ children, id, ports, data, initialPosition, onMove }) {
18
+ const MemoizedGraphObject = memo(function GraphObject({ children, id, ports, data, initialPosition, onMove, onStateChange, }) {
14
19
  const ref = useRef(null);
15
20
  const getZoom = useGetZoom();
16
21
  const mode = useGraphMode();
22
+ const registry = useNodeRegistry();
23
+ const eventBus = useGraphEventBus();
24
+ const [eventEmitter, setEmitter] = useState(null);
17
25
  const [position, setPosition] = useState(() => initialPosition ?? { x: 0, y: 0, z: 0 });
18
- const moveRef = useRef({
19
- moving: false,
20
- movePointStart: { x: 0, y: 0 },
21
- startPos: { x: 0, y: 0 },
22
- currentPos: { x: 0, y: 0 },
23
- });
24
- const handleMouseDown = useCallback((e) => {
25
- if (e.button !== 0 || mode === "readonly")
26
+ // Registra/desregistra o elemento DOM do nó no NodeRegistry
27
+ useEffect(() => {
28
+ if (!ref.current)
26
29
  return;
27
- e.preventDefault();
28
- moveRef.current.moving = true;
29
- moveRef.current.movePointStart.x = e.clientX;
30
- moveRef.current.movePointStart.y = e.clientY;
31
- moveRef.current.startPos = { x: position.x, y: position.y };
32
- moveRef.current.currentPos = { x: position.x, y: position.y };
33
- }, [position, mode]);
34
- const stopMoving = useCallback((e) => {
35
- if (e.button === 0 && moveRef.current.moving) {
36
- moveRef.current.moving = false;
37
- setPosition(prev => ({
38
- x: moveRef.current.currentPos.x,
39
- y: moveRef.current.currentPos.y,
40
- z: prev.z
41
- }));
42
- }
43
- }, []);
44
- const handleMouseMove = useCallback((e) => {
45
- if (!ref.current || !moveRef.current.moving)
30
+ registry.registerNodeElement(id, ref.current);
31
+ return () => registry.unregisterNodeElement(id);
32
+ }, [id, registry]);
33
+ const reportState = useCallback((nextPosition) => {
34
+ if (!ref.current)
46
35
  return;
47
- const zoom = getZoom();
48
- const dx = (e.clientX - moveRef.current.movePointStart.x) / zoom;
49
- const dy = (e.clientY - moveRef.current.movePointStart.y) / zoom;
50
- const newX = moveRef.current.startPos.x + dx;
51
- const newY = moveRef.current.startPos.y + dy;
52
- moveRef.current.currentPos.x = newX;
53
- moveRef.current.currentPos.y = newY;
54
- ref.current.style.left = `${newX.toFixed(0)}px`;
55
- ref.current.style.top = `${newY.toFixed(0)}px`;
56
- }, [getZoom]);
36
+ const state = {
37
+ id,
38
+ position: nextPosition,
39
+ width: Math.max(1, ref.current.offsetWidth),
40
+ height: Math.max(1, ref.current.offsetHeight),
41
+ data,
42
+ };
43
+ // Atualiza o registry centralizado
44
+ registry.updateNodeState(state);
45
+ // Emite evento de movimento no bus centralizado
46
+ eventBus.emit(id, "move", { position: nextPosition });
47
+ // Reporta via callback do Graph
48
+ onStateChange?.(state);
49
+ }, [data, id, onStateChange, registry, eventBus]);
50
+ const handleEmitterReady = useCallback((emitFn) => {
51
+ setEmitter(() => emitFn);
52
+ }, []);
53
+ // Callback chamado ao finalizar o arraste
54
+ const handleMoveEnd = useCallback((nextPosition) => {
55
+ setPosition(nextPosition);
56
+ onMove?.(nextPosition);
57
+ }, [onMove]);
58
+ const { handleMouseDown, handleMouseUp, moveRef } = useMoveBehaviour({
59
+ elementRef: ref,
60
+ getZoom,
61
+ mode,
62
+ position,
63
+ onMoveEnd: handleMoveEnd,
64
+ onMoving: reportState,
65
+ eventEmitter,
66
+ });
57
67
  useEffect(() => {
58
68
  if (!ref.current)
59
69
  return;
60
70
  ref.current.style.left = `${position.x.toFixed(0)}px`;
61
71
  ref.current.style.top = `${position.y.toFixed(0)}px`;
62
72
  ref.current.style.zIndex = position.z.toFixed(0);
63
- }, [position]);
64
- useEffect(() => {
65
- if (mode === "readonly")
66
- return;
67
- const handlerUp = (e) => {
68
- stopMoving(e);
69
- };
70
- const handleMove = (e) => {
71
- handleMouseMove(e);
72
- };
73
- document.addEventListener('mouseup', handlerUp);
74
- document.addEventListener('mousemove', handleMove);
75
- return () => {
76
- document.removeEventListener('mouseup', handlerUp);
77
- document.removeEventListener('mousemove', handleMove);
78
- };
79
- }, [stopMoving, handleMouseMove, mode]);
73
+ reportState(position);
74
+ }, [position, reportState]);
80
75
  const portsByLocation = useMemo(() => {
81
76
  const result = {
82
77
  top: [], bottom: [], left: [], right: [], floating: [], all: [],
83
78
  };
84
79
  for (const port of ports ?? []) {
85
- const element = (_jsx(GraphPort, { type: port.type, id: port.id, nodeId: id, direction: port.direction, location: port.location, onDragEnd: port.onDragEnd, children: port.children }, port.id));
80
+ const element = (_jsx(GraphPort, { connectionType: port.connectionType, id: port.id, nodeId: id, direction: port.direction, location: port.location, onDragEnd: port.onDragEnd, children: port.children }, port.id));
86
81
  if (typeof port.location === "string" && port.location in result) {
87
82
  result[port.location].push(element);
88
83
  }
@@ -93,25 +88,39 @@ const MemoizedGraphObject = memo(function GraphObject({ children, id, ports, dat
93
88
  }
94
89
  return result;
95
90
  }, [ports, id]);
96
- useEffect(() => {
97
- if (onMove) {
98
- onMove({ x: position.x, y: position.y, z: position.z });
99
- }
100
- if (ref.current) {
101
- ref.current.style.zIndex = position.z.toFixed(0);
102
- }
103
- }, [position, onMove]);
104
91
  useEffect(() => {
105
92
  if (initialPosition) {
106
93
  setPosition({
107
94
  x: initialPosition.x,
108
95
  y: initialPosition.y,
109
- z: initialPosition.z ?? 0
96
+ z: initialPosition.z ?? 0,
110
97
  });
111
98
  }
112
99
  // eslint-disable-next-line react-hooks/exhaustive-deps
113
100
  }, [initialPosition?.x, initialPosition?.y, initialPosition?.z]);
114
- return _jsx("node-graph-object", { ref: ref, onMouseDown: handleMouseDown, onMouseUp: stopMoving, "node-id": id, children: children({ id, ports: portsByLocation, data }) }, id);
101
+ useEffect(() => {
102
+ if (!ref.current || !onStateChange)
103
+ return;
104
+ const observer = new ResizeObserver(() => {
105
+ reportState(moveRef.current.moving
106
+ ? {
107
+ x: moveRef.current.currentPos.x,
108
+ y: moveRef.current.currentPos.y,
109
+ z: position.z,
110
+ }
111
+ : position);
112
+ });
113
+ observer.observe(ref.current);
114
+ return () => observer.disconnect();
115
+ }, [position, moveRef, onStateChange, reportState]);
116
+ // Emite evento dataChange no bus centralizado e no NodeEventProvider local
117
+ useEffect(() => {
118
+ eventBus.emit(id, "dataChange", { data });
119
+ if (eventEmitter) {
120
+ eventEmitter("dataChange", { data });
121
+ }
122
+ }, [eventBus, eventEmitter, data, id]);
123
+ return _jsx("node-graph-object", { ref: ref, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, "node-id": id, children: _jsx(NodeEventProvider, { nodeId: id, emitter: handleEmitterReady, children: children({ id, ports: portsByLocation, data }) }) }, id);
115
124
  });
116
125
  export default MemoizedGraphObject;
117
126
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { LinkLabel } from "../types";
2
+ export type BidirectionalPathProps = {
3
+ width?: number;
4
+ forwardWidth?: number;
5
+ reverseWidth?: number;
6
+ spacing?: number;
7
+ labels?: LinkLabel[];
8
+ forwardColor?: string;
9
+ reverseColor?: string;
10
+ dashSize?: number;
11
+ gapSize?: number;
12
+ forwardDuration?: number;
13
+ reverseDuration?: number;
14
+ };
15
+ export default function BidirectionalPath({ width, forwardWidth, reverseWidth, spacing, labels, forwardColor, reverseColor, dashSize, gapSize, forwardDuration, reverseDuration, }: BidirectionalPathProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=bidirectional-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidirectional-path.d.ts","sourceRoot":"","sources":["../../src/paths/bidirectional-path.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACtC,KAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,MAAM,EACN,YAAqB,EACrB,YAAqB,EACrB,QAAa,EACb,OAAW,EACX,eAAmB,EACnB,eAAmB,GACtB,EAAE,sBAAsB,2CAoVxB"}
@@ -0,0 +1,260 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState, useCallback, useEffect } from "react";
3
+ import { calculatePath, calculateLabels } from "../calculations";
4
+ import { useViewbox, useGraphError, useGraphRoot } from "../module";
5
+ import useLinkInfo from "../hooks/link-info";
6
+ export default function BidirectionalPath({ width = 3, forwardWidth, reverseWidth, spacing, labels, forwardColor = "#888", reverseColor = "#888", dashSize = 12, gapSize = 8, forwardDuration = 1, reverseDuration = 1, }) {
7
+ const { id, from, to, fromNode, fromPort, toNode, toPort, onStateChange } = useLinkInfo();
8
+ const rootRef = useRef(null);
9
+ const forwardRef = useRef(null);
10
+ const reverseRef = useRef(null);
11
+ const labelGroupRef = useRef(null);
12
+ const [invalid, setInvalid] = useState(true);
13
+ const viewbox = useViewbox();
14
+ const { reportError } = useGraphError();
15
+ const graphRoot = useGraphRoot();
16
+ const fwdW = forwardWidth ?? width;
17
+ const revW = reverseWidth ?? width;
18
+ const gap = spacing ?? (fwdW + revW) / 2 + 1;
19
+ // Refs para acesso no hot-path (sem React state/render)
20
+ const positionsRef = useRef(null);
21
+ const rafIdRef = useRef(0);
22
+ const calcVersionRef = useRef(0);
23
+ const gapRef = useRef(gap);
24
+ const labelsRef = useRef(labels);
25
+ const invalidRef = useRef(invalid);
26
+ gapRef.current = gap;
27
+ labelsRef.current = labels;
28
+ invalidRef.current = invalid;
29
+ // Verifica se os nós existem no DOM
30
+ const checkNodes = useCallback(() => {
31
+ const root = graphRoot.current;
32
+ if (!root)
33
+ return;
34
+ if (!fromNode || !toNode) {
35
+ if (!fromNode) {
36
+ reportError("ORPHAN_LINK", `Link "${id}": nó de origem "${from.node}" não encontrado`, { linkId: id, nodeId: from.node });
37
+ }
38
+ if (!toNode) {
39
+ reportError("ORPHAN_LINK", `Link "${id}": nó de destino "${to.node}" não encontrado`, { linkId: id, nodeId: to.node });
40
+ }
41
+ return setInvalid(true);
42
+ }
43
+ setInvalid(false);
44
+ }, [fromNode, toNode, id, from.node, to.node, reportError, graphRoot]);
45
+ useEffect(() => { checkNodes(); }, [checkNodes]);
46
+ // Calcula paths e labels no worker e atualiza DOM diretamente (sem React render)
47
+ const runCalculation = useCallback(() => {
48
+ const pos = positionsRef.current;
49
+ if (!pos || invalidRef.current)
50
+ return;
51
+ const root = rootRef.current;
52
+ const fwd = forwardRef.current;
53
+ const rev = reverseRef.current;
54
+ if (!root || !fwd || !rev)
55
+ return;
56
+ const currentGap = gapRef.current;
57
+ const currentLabels = labelsRef.current;
58
+ const version = ++calcVersionRef.current;
59
+ const halfGap = currentGap / 2;
60
+ const labelInputs = currentLabels?.map(lbl => ({
61
+ position: lbl.position ?? 0,
62
+ side: lbl.textAnchor === "forward" || lbl.textAnchor === "reverse" ? lbl.textAnchor : "",
63
+ offset: lbl.offset ?? 0,
64
+ }));
65
+ const pathPromise = calculatePath({
66
+ fromX: pos.fromX, fromY: pos.fromY,
67
+ toX: pos.toX, toY: pos.toY,
68
+ fromDir: pos.fromDir, toDir: pos.toDir,
69
+ gap: currentGap, steps: 60,
70
+ });
71
+ const labelsPromise = labelInputs?.length
72
+ ? calculateLabels({ fromX: pos.fromX, fromY: pos.fromY, toX: pos.toX, toY: pos.toY, fromDir: pos.fromDir, toDir: pos.toDir, halfGap, labels: labelInputs })
73
+ : Promise.resolve(null);
74
+ Promise.all([pathPromise, labelsPromise]).then(([pathResult, labelResult]) => {
75
+ // Descarta resultado obsoleto
76
+ if (version !== calcVersionRef.current)
77
+ return;
78
+ const { bounds, forwardD, reverseD } = pathResult;
79
+ root.style.left = bounds.left + "px";
80
+ root.style.top = bounds.top + "px";
81
+ root.style.width = bounds.width + "px";
82
+ root.style.height = bounds.height + "px";
83
+ root.setAttribute("viewBox", `${bounds.left} ${bounds.top} ${bounds.width} ${bounds.height}`);
84
+ fwd.setAttribute("d", forwardD);
85
+ rev.setAttribute("d", reverseD);
86
+ if (labelResult) {
87
+ const labelGroup = labelGroupRef.current;
88
+ if (labelGroup) {
89
+ const textEls = labelGroup.querySelectorAll("text");
90
+ labelResult.positions.forEach((lPos, i) => {
91
+ const textEl = textEls[i];
92
+ if (!textEl)
93
+ return;
94
+ textEl.setAttribute("x", String(lPos.x));
95
+ textEl.setAttribute("y", String(lPos.y));
96
+ if (lPos.textAnchor !== "middle") {
97
+ textEl.setAttribute("text-anchor", lPos.textAnchor);
98
+ }
99
+ });
100
+ }
101
+ }
102
+ });
103
+ }, []);
104
+ // Acumula offsets do elemento até o ancestral de referência
105
+ const accumulateOffset = useCallback((el, ancestor) => {
106
+ let x = 0;
107
+ let y = 0;
108
+ let current = el;
109
+ while (current && current !== ancestor) {
110
+ x += current.offsetLeft;
111
+ y += current.offsetTop;
112
+ current = current.offsetParent;
113
+ }
114
+ return { x, y };
115
+ }, []);
116
+ // Determina a direção da porta pela posição real dentro do nó.
117
+ // Quando a porta estiver centralizada, usa o vetor entre origem e destino
118
+ // como heurística para escolher um lado mais natural.
119
+ const detectPortDir = useCallback((node, portOrigin, delta, invertDelta = false, preferVector = false) => {
120
+ const normalizedDelta = invertDelta
121
+ ? { x: -delta.x, y: -delta.y }
122
+ : delta;
123
+ if (preferVector || !portOrigin) {
124
+ if (Math.abs(normalizedDelta.x) >= Math.abs(normalizedDelta.y)) {
125
+ return normalizedDelta.x >= 0 ? "right" : "left";
126
+ }
127
+ return normalizedDelta.y >= 0 ? "bottom" : "top";
128
+ }
129
+ const relX = portOrigin.x - node.offsetWidth / 2;
130
+ const relY = portOrigin.y - node.offsetHeight / 2;
131
+ const toleranceX = Math.max(4, node.offsetWidth * 0.05);
132
+ const toleranceY = Math.max(4, node.offsetHeight * 0.05);
133
+ const isCentered = Math.abs(relX) <= toleranceX && Math.abs(relY) <= toleranceY;
134
+ if (!isCentered) {
135
+ if (Math.abs(relX) >= Math.abs(relY)) {
136
+ return relX >= 0 ? "right" : "left";
137
+ }
138
+ return relY >= 0 ? "bottom" : "top";
139
+ }
140
+ if (Math.abs(normalizedDelta.x) >= Math.abs(normalizedDelta.y)) {
141
+ return normalizedDelta.x >= 0 ? "right" : "left";
142
+ }
143
+ return normalizedDelta.y >= 0 ? "bottom" : "top";
144
+ }, []);
145
+ // Lê posições do DOM via ref (sem setState), agenda rAF
146
+ const readPositions = useCallback(() => {
147
+ if (!fromNode || !toNode)
148
+ return;
149
+ const fromPortOffset = fromPort
150
+ ? accumulateOffset(fromPort, fromNode)
151
+ : { x: fromNode.offsetWidth / 2, y: fromNode.offsetHeight / 2 };
152
+ const toPortOffset = toPort
153
+ ? accumulateOffset(toPort, toNode)
154
+ : { x: toNode.offsetWidth / 2, y: toNode.offsetHeight / 2 };
155
+ const fromPortOrigin = fromPort
156
+ ? {
157
+ x: fromPortOffset.x + fromPort.offsetWidth / 2,
158
+ y: fromPortOffset.y + fromPort.offsetHeight / 2,
159
+ } : null;
160
+ const toPortOrigin = toPort
161
+ ? {
162
+ x: toPortOffset.x + toPort.offsetWidth / 2,
163
+ y: toPortOffset.y + toPort.offsetHeight / 2,
164
+ } : null;
165
+ const fromX = fromNode.offsetLeft + (fromPortOrigin?.x ?? fromPortOffset.x);
166
+ const fromY = fromNode.offsetTop + (fromPortOrigin?.y ?? fromPortOffset.y);
167
+ const toX = toNode.offsetLeft + (toPortOrigin?.x ?? toPortOffset.x);
168
+ const toY = toNode.offsetTop + (toPortOrigin?.y ?? toPortOffset.y);
169
+ const delta = { x: toX - fromX, y: toY - fromY };
170
+ const fromUsesCoordinateLocation = fromPort?.getAttribute("port-location") === "coordinates";
171
+ const toUsesCoordinateLocation = toPort?.getAttribute("port-location") === "coordinates";
172
+ positionsRef.current = {
173
+ fromX, fromY,
174
+ toX, toY,
175
+ fromDir: detectPortDir(fromNode, fromPortOrigin, delta, false, fromUsesCoordinateLocation),
176
+ toDir: detectPortDir(toNode, toPortOrigin, delta, true, toUsesCoordinateLocation),
177
+ };
178
+ cancelAnimationFrame(rafIdRef.current);
179
+ rafIdRef.current = requestAnimationFrame(runCalculation);
180
+ }, [fromNode, fromPort, toNode, toPort, accumulateOffset, detectPortDir, runCalculation]);
181
+ // Observar mudanças nos nós (posição, tamanho, existência) e recalcular
182
+ useEffect(() => {
183
+ if (!fromNode || !toNode || invalid)
184
+ return;
185
+ readPositions();
186
+ const mutationObserver = new MutationObserver((entries) => {
187
+ for (const entry of entries) {
188
+ if (entry.attributeName === "node-id") {
189
+ checkNodes();
190
+ return;
191
+ }
192
+ }
193
+ readPositions();
194
+ });
195
+ mutationObserver.observe(fromNode, { attributes: true, attributeFilter: ["style", "class", "node-id"] });
196
+ mutationObserver.observe(toNode, { attributes: true, attributeFilter: ["style", "class", "node-id"] });
197
+ const resizeObserver = new ResizeObserver(readPositions);
198
+ resizeObserver.observe(fromNode);
199
+ resizeObserver.observe(toNode);
200
+ return () => { mutationObserver.disconnect(); resizeObserver.disconnect(); };
201
+ }, [fromNode, toNode, invalid, checkNodes, readPositions]);
202
+ // Recalcula quando viewbox muda
203
+ useEffect(() => {
204
+ if (!fromNode || !toNode || invalid)
205
+ return;
206
+ readPositions();
207
+ }, [viewbox.zoom, fromNode, toNode, invalid, readPositions]);
208
+ // Limpa animation frame ao desmontar
209
+ useEffect(() => {
210
+ return () => cancelAnimationFrame(rafIdRef.current);
211
+ }, []);
212
+ // Reporta estado inválido ao contexto
213
+ useEffect(() => {
214
+ if (!invalid)
215
+ return;
216
+ onStateChange?.({
217
+ id,
218
+ from: {
219
+ nodeId: from.node,
220
+ portId: from.port,
221
+ x: 0,
222
+ y: 0,
223
+ direction: "right",
224
+ },
225
+ to: {
226
+ nodeId: to.node,
227
+ portId: to.port,
228
+ x: 0,
229
+ y: 0,
230
+ direction: "left",
231
+ },
232
+ bounds: { left: 0, top: 0, width: 0, height: 0 },
233
+ invalid: true,
234
+ });
235
+ }, [from.node, from.port, id, invalid, to.node, to.port, onStateChange]);
236
+ if (invalid)
237
+ return _jsx(_Fragment, {});
238
+ const fwdStroke = fwdW / viewbox.zoom;
239
+ const revStroke = revW / viewbox.zoom;
240
+ const scaledDash = dashSize / viewbox.zoom;
241
+ const scaledGap = gapSize / viewbox.zoom;
242
+ const dashPattern = scaledDash + " " + scaledGap;
243
+ const cycleLen = scaledDash + scaledGap;
244
+ return (_jsxs("svg", { ref: rootRef, children: [_jsx("path", { ref: forwardRef, d: "", stroke: forwardColor, fill: "none", strokeWidth: fwdStroke, strokeLinecap: "round", strokeDasharray: dashPattern, style: {
245
+ animationDuration: forwardDuration > 0 ? forwardDuration + "s" : "0s",
246
+ animationDirection: "normal",
247
+ ["--cycle-len"]: cycleLen + "px",
248
+ } }), _jsx("path", { ref: reverseRef, d: "", stroke: reverseColor, fill: "none", strokeWidth: revStroke, strokeLinecap: "round", strokeDasharray: dashPattern, style: {
249
+ animationDuration: reverseDuration > 0 ? reverseDuration + "s" : "0s",
250
+ animationDirection: "reverse",
251
+ ["--cycle-len"]: cycleLen + "px",
252
+ } }), labels && labels.length > 0 && (_jsx("g", { ref: labelGroupRef, children: labels.map((lbl, i) => {
253
+ const isDirectional = lbl.textAnchor === "forward" || lbl.textAnchor === "reverse";
254
+ const textAnchor = isDirectional ? undefined : (lbl.textAnchor ?? "middle");
255
+ return (_jsx("text", { fill: lbl.color ?? "#fff", fontSize: (lbl.fontSize ?? 12) / viewbox.zoom, fontFamily: lbl.fontFamily, fontWeight: lbl.fontWeight, fontStyle: lbl.fontStyle, textAnchor: textAnchor, opacity: lbl.opacity, letterSpacing: lbl.letterSpacing, textDecoration: lbl.textDecoration, dx: !isDirectional && lbl.dx ? lbl.dx / viewbox.zoom : undefined, dy: !isDirectional
256
+ ? (lbl.dy != null ? lbl.dy / viewbox.zoom : -(Math.max(fwdStroke, revStroke) + 4 / viewbox.zoom))
257
+ : undefined, children: lbl.text }, i));
258
+ }) }))] }));
259
+ }
260
+ //# sourceMappingURL=bidirectional-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidirectional-path.js","sourceRoot":"","sources":["../../src/paths/bidirectional-path.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ports/base.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAY,cAAc,EAAE,MAAM,UAAU,CAAC;AAIpD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,EAC/C,EAAE,cAAc,2CA8HhB"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ports/base.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,EAC/C,EAAE,cAAc,2CA4IhB"}