@react-fabric/graph 1.0.0-beta.63 → 1.0.2

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 (224) hide show
  1. package/dist/cjs/context/context.js +16 -0
  2. package/dist/cjs/graph/index.js +58 -381
  3. package/dist/cjs/index.js +25 -21
  4. package/dist/cjs/utils/edge.js +76 -0
  5. package/dist/cjs/utils/node.js +93 -0
  6. package/dist/cjs/utils/sdfFolder.js +107 -0
  7. package/dist/cjs/viewer/Graph.js +174 -0
  8. package/dist/esm/context/context.js +15 -0
  9. package/dist/esm/graph/index.js +59 -382
  10. package/dist/esm/index.js +24 -20
  11. package/dist/esm/utils/edge.js +75 -0
  12. package/dist/esm/utils/node.js +92 -0
  13. package/dist/esm/utils/sdfFolder.js +107 -0
  14. package/dist/esm/viewer/Graph.js +174 -0
  15. package/dist/types/context/context.d.ts +35 -0
  16. package/dist/types/graph/index.d.ts +47 -24
  17. package/dist/types/index.d.ts +28 -2
  18. package/dist/types/types/index.d.ts +124 -175
  19. package/dist/types/utils/edge.d.ts +28 -0
  20. package/dist/types/utils/node.d.ts +28 -0
  21. package/dist/types/utils/sdfFolder.d.ts +75 -0
  22. package/dist/types/viewer/Graph.d.ts +31 -0
  23. package/package.json +19 -25
  24. package/src/context/context.tsx +43 -0
  25. package/src/graph/index.ts +76 -399
  26. package/src/index.ts +24 -26
  27. package/src/types/index.ts +139 -185
  28. package/src/utils/edge.ts +65 -0
  29. package/src/utils/node.ts +105 -0
  30. package/src/utils/sdfFolder.ts +141 -0
  31. package/src/viewer/Graph.tsx +159 -0
  32. package/css/styles.css +0 -56
  33. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +0 -14
  34. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +0 -9
  35. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +0 -35
  36. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +0 -11
  37. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +0 -20
  38. package/dist/cjs/_virtual/elk-worker.js +0 -8
  39. package/dist/cjs/components/ContextMenu.js +0 -133
  40. package/dist/cjs/components/Provider.js +0 -103
  41. package/dist/cjs/components/Tools.js +0 -205
  42. package/dist/cjs/components/Viewer.js +0 -59
  43. package/dist/cjs/components/context.js +0 -34
  44. package/dist/cjs/constants/index.js +0 -16
  45. package/dist/cjs/hooks/sigmaDragSelect.js +0 -169
  46. package/dist/cjs/hooks/sigmaHilighter.js +0 -83
  47. package/dist/cjs/hooks/sigmaMouseActions.js +0 -145
  48. package/dist/cjs/hooks/useGraphology.js +0 -41
  49. package/dist/cjs/hooks/useSigma.js +0 -112
  50. package/dist/cjs/programs/arrow-head/frag.glsl.js +0 -8
  51. package/dist/cjs/programs/arrow-head/index.js +0 -142
  52. package/dist/cjs/programs/arrow-head/vert.glsl.js +0 -8
  53. package/dist/cjs/programs/edge-curve/drawLabel.js +0 -136
  54. package/dist/cjs/programs/edge-curve/frag.glsl.js +0 -8
  55. package/dist/cjs/programs/edge-curve/index.js +0 -157
  56. package/dist/cjs/programs/edge-curve/vert.glsl.js +0 -8
  57. package/dist/cjs/programs/edge-line/drawLabel.js +0 -70
  58. package/dist/cjs/programs/edge-line/frag.glsl.js +0 -8
  59. package/dist/cjs/programs/edge-line/index.js +0 -166
  60. package/dist/cjs/programs/edge-line/vert.glsl.js +0 -8
  61. package/dist/cjs/programs/node-badge/factory.js +0 -250
  62. package/dist/cjs/programs/node-badge/frag.glsl.js +0 -8
  63. package/dist/cjs/programs/node-badge/index.js +0 -33
  64. package/dist/cjs/programs/node-badge/texture.js +0 -455
  65. package/dist/cjs/programs/node-badge/vert.glsl.js +0 -19
  66. package/dist/cjs/programs/node-circle/base/drawHover.js +0 -71
  67. package/dist/cjs/programs/node-circle/base/drawLabel.js +0 -113
  68. package/dist/cjs/programs/node-circle/base/frag.glsl.js +0 -8
  69. package/dist/cjs/programs/node-circle/base/index.js +0 -136
  70. package/dist/cjs/programs/node-circle/base/vert.glsl.js +0 -8
  71. package/dist/cjs/programs/node-circle/index.js +0 -15
  72. package/dist/cjs/programs/node-image/factory.js +0 -224
  73. package/dist/cjs/programs/node-image/frag.glsl.js +0 -8
  74. package/dist/cjs/programs/node-image/index.js +0 -14
  75. package/dist/cjs/programs/node-image/texture.js +0 -472
  76. package/dist/cjs/programs/node-image/vert.glsl.js +0 -8
  77. package/dist/cjs/programs/node-rect/base/drawHover.js +0 -68
  78. package/dist/cjs/programs/node-rect/base/drawLabel.js +0 -107
  79. package/dist/cjs/programs/node-rect/base/frag.glsl.js +0 -8
  80. package/dist/cjs/programs/node-rect/base/index.js +0 -135
  81. package/dist/cjs/programs/node-rect/base/vert.glsl.js +0 -8
  82. package/dist/cjs/programs/node-rect/index.js +0 -15
  83. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +0 -14
  84. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +0 -9
  85. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +0 -34
  86. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +0 -13
  87. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +0 -20
  88. package/dist/esm/_virtual/elk-worker.js +0 -8
  89. package/dist/esm/components/ContextMenu.js +0 -133
  90. package/dist/esm/components/Provider.js +0 -103
  91. package/dist/esm/components/Tools.js +0 -205
  92. package/dist/esm/components/Viewer.js +0 -59
  93. package/dist/esm/components/context.js +0 -33
  94. package/dist/esm/constants/index.js +0 -16
  95. package/dist/esm/hooks/sigmaDragSelect.js +0 -169
  96. package/dist/esm/hooks/sigmaHilighter.js +0 -83
  97. package/dist/esm/hooks/sigmaMouseActions.js +0 -145
  98. package/dist/esm/hooks/useGraphology.js +0 -41
  99. package/dist/esm/hooks/useSigma.js +0 -112
  100. package/dist/esm/programs/arrow-head/frag.glsl.js +0 -8
  101. package/dist/esm/programs/arrow-head/index.js +0 -141
  102. package/dist/esm/programs/arrow-head/vert.glsl.js +0 -8
  103. package/dist/esm/programs/edge-curve/drawLabel.js +0 -136
  104. package/dist/esm/programs/edge-curve/frag.glsl.js +0 -8
  105. package/dist/esm/programs/edge-curve/index.js +0 -156
  106. package/dist/esm/programs/edge-curve/vert.glsl.js +0 -8
  107. package/dist/esm/programs/edge-line/drawLabel.js +0 -70
  108. package/dist/esm/programs/edge-line/frag.glsl.js +0 -8
  109. package/dist/esm/programs/edge-line/index.js +0 -166
  110. package/dist/esm/programs/edge-line/vert.glsl.js +0 -8
  111. package/dist/esm/programs/node-badge/factory.js +0 -250
  112. package/dist/esm/programs/node-badge/frag.glsl.js +0 -8
  113. package/dist/esm/programs/node-badge/index.js +0 -32
  114. package/dist/esm/programs/node-badge/texture.js +0 -445
  115. package/dist/esm/programs/node-badge/vert.glsl.js +0 -19
  116. package/dist/esm/programs/node-circle/base/drawHover.js +0 -71
  117. package/dist/esm/programs/node-circle/base/drawLabel.js +0 -113
  118. package/dist/esm/programs/node-circle/base/frag.glsl.js +0 -8
  119. package/dist/esm/programs/node-circle/base/index.js +0 -136
  120. package/dist/esm/programs/node-circle/base/vert.glsl.js +0 -8
  121. package/dist/esm/programs/node-circle/index.js +0 -15
  122. package/dist/esm/programs/node-image/factory.js +0 -224
  123. package/dist/esm/programs/node-image/frag.glsl.js +0 -8
  124. package/dist/esm/programs/node-image/index.js +0 -13
  125. package/dist/esm/programs/node-image/texture.js +0 -462
  126. package/dist/esm/programs/node-image/vert.glsl.js +0 -8
  127. package/dist/esm/programs/node-rect/base/drawHover.js +0 -68
  128. package/dist/esm/programs/node-rect/base/drawLabel.js +0 -107
  129. package/dist/esm/programs/node-rect/base/frag.glsl.js +0 -8
  130. package/dist/esm/programs/node-rect/base/index.js +0 -135
  131. package/dist/esm/programs/node-rect/base/vert.glsl.js +0 -8
  132. package/dist/esm/programs/node-rect/index.js +0 -15
  133. package/dist/types/components/ContextMenu.d.ts +0 -1
  134. package/dist/types/components/Provider.d.ts +0 -3
  135. package/dist/types/components/Tools.d.ts +0 -1
  136. package/dist/types/components/Viewer.d.ts +0 -2
  137. package/dist/types/components/context.d.ts +0 -17
  138. package/dist/types/constants/index.d.ts +0 -12
  139. package/dist/types/graph/layout.worker.d.ts +0 -1
  140. package/dist/types/hooks/sigmaDragSelect.d.ts +0 -8
  141. package/dist/types/hooks/sigmaHilighter.d.ts +0 -3
  142. package/dist/types/hooks/sigmaMouseActions.d.ts +0 -3
  143. package/dist/types/hooks/useGraphology.d.ts +0 -6
  144. package/dist/types/hooks/useSigma.d.ts +0 -8
  145. package/dist/types/i18n/index.d.ts +0 -0
  146. package/dist/types/programs/arrow-head/frag.glsl.d.ts +0 -2
  147. package/dist/types/programs/arrow-head/index.d.ts +0 -9
  148. package/dist/types/programs/arrow-head/vert.glsl.d.ts +0 -2
  149. package/dist/types/programs/edge-curve/drawLabel.d.ts +0 -6
  150. package/dist/types/programs/edge-curve/frag.glsl.d.ts +0 -2
  151. package/dist/types/programs/edge-curve/index.d.ts +0 -43
  152. package/dist/types/programs/edge-curve/vert.glsl.d.ts +0 -2
  153. package/dist/types/programs/edge-line/drawLabel.d.ts +0 -5
  154. package/dist/types/programs/edge-line/frag.glsl.d.ts +0 -2
  155. package/dist/types/programs/edge-line/index.d.ts +0 -11
  156. package/dist/types/programs/edge-line/vert.glsl.d.ts +0 -2
  157. package/dist/types/programs/node-badge/factory.d.ts +0 -27
  158. package/dist/types/programs/node-badge/frag.glsl.d.ts +0 -2
  159. package/dist/types/programs/node-badge/index.d.ts +0 -5
  160. package/dist/types/programs/node-badge/texture.d.ts +0 -102
  161. package/dist/types/programs/node-badge/vert.glsl.d.ts +0 -2
  162. package/dist/types/programs/node-circle/base/drawHover.d.ts +0 -8
  163. package/dist/types/programs/node-circle/base/drawLabel.d.ts +0 -8
  164. package/dist/types/programs/node-circle/base/frag.glsl.d.ts +0 -2
  165. package/dist/types/programs/node-circle/base/index.d.ts +0 -37
  166. package/dist/types/programs/node-circle/base/vert.glsl.d.ts +0 -2
  167. package/dist/types/programs/node-circle/index.d.ts +0 -11
  168. package/dist/types/programs/node-image/factory.d.ts +0 -25
  169. package/dist/types/programs/node-image/frag.glsl.d.ts +0 -2
  170. package/dist/types/programs/node-image/index.d.ts +0 -5
  171. package/dist/types/programs/node-image/texture.d.ts +0 -102
  172. package/dist/types/programs/node-image/vert.glsl.d.ts +0 -2
  173. package/dist/types/programs/node-rect/base/drawHover.d.ts +0 -8
  174. package/dist/types/programs/node-rect/base/drawLabel.d.ts +0 -8
  175. package/dist/types/programs/node-rect/base/frag.glsl.d.ts +0 -2
  176. package/dist/types/programs/node-rect/base/index.d.ts +0 -34
  177. package/dist/types/programs/node-rect/base/vert.glsl.d.ts +0 -2
  178. package/dist/types/programs/node-rect/index.d.ts +0 -11
  179. package/src/components/ContextMenu.tsx +0 -138
  180. package/src/components/Provider.tsx +0 -116
  181. package/src/components/Tools.tsx +0 -68
  182. package/src/components/Viewer.tsx +0 -75
  183. package/src/components/context.ts +0 -43
  184. package/src/constants/index.ts +0 -22
  185. package/src/graph/layout.worker.ts +0 -42
  186. package/src/hooks/sigmaDragSelect.ts +0 -219
  187. package/src/hooks/sigmaHilighter.ts +0 -107
  188. package/src/hooks/sigmaMouseActions.ts +0 -153
  189. package/src/hooks/useGraphology.ts +0 -31
  190. package/src/hooks/useSigma.ts +0 -118
  191. package/src/i18n/index.ts +0 -0
  192. package/src/programs/arrow-head/frag.glsl.ts +0 -18
  193. package/src/programs/arrow-head/index.ts +0 -156
  194. package/src/programs/arrow-head/vert.glsl.ts +0 -75
  195. package/src/programs/edge-curve/drawLabel.ts +0 -166
  196. package/src/programs/edge-curve/frag.glsl.ts +0 -86
  197. package/src/programs/edge-curve/index.ts +0 -156
  198. package/src/programs/edge-curve/vert.glsl.ts +0 -110
  199. package/src/programs/edge-line/drawLabel.ts +0 -113
  200. package/src/programs/edge-line/frag.glsl.ts +0 -34
  201. package/src/programs/edge-line/index.ts +0 -163
  202. package/src/programs/edge-line/vert.glsl.ts +0 -104
  203. package/src/programs/node-badge/factory.ts +0 -325
  204. package/src/programs/node-badge/frag.glsl.ts +0 -79
  205. package/src/programs/node-badge/index.ts +0 -35
  206. package/src/programs/node-badge/texture.ts +0 -425
  207. package/src/programs/node-badge/vert.glsl.ts +0 -99
  208. package/src/programs/node-circle/base/drawHover.ts +0 -80
  209. package/src/programs/node-circle/base/drawLabel.ts +0 -145
  210. package/src/programs/node-circle/base/frag.glsl.ts +0 -72
  211. package/src/programs/node-circle/base/index.ts +0 -100
  212. package/src/programs/node-circle/base/vert.glsl.ts +0 -83
  213. package/src/programs/node-circle/index.ts +0 -19
  214. package/src/programs/node-image/factory.ts +0 -299
  215. package/src/programs/node-image/frag.glsl.ts +0 -97
  216. package/src/programs/node-image/index.ts +0 -7
  217. package/src/programs/node-image/texture.ts +0 -435
  218. package/src/programs/node-image/vert.glsl.ts +0 -60
  219. package/src/programs/node-rect/base/drawHover.ts +0 -77
  220. package/src/programs/node-rect/base/drawLabel.ts +0 -149
  221. package/src/programs/node-rect/base/frag.glsl.ts +0 -67
  222. package/src/programs/node-rect/base/index.ts +0 -107
  223. package/src/programs/node-rect/base/vert.glsl.ts +0 -87
  224. package/src/programs/node-rect/index.ts +0 -19
@@ -1,169 +0,0 @@
1
- 'use client';
2
-
3
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useRef, useState, useEffect } from 'react';
5
-
6
- var useDragSelection = function useDragSelection(renderer) {
7
- var isDrawing = useRef(false);
8
- var drawPoints = useRef([]);
9
- var drawingCanvas = useRef(undefined);
10
- var drawingContext = useRef(null);
11
- var _useState = useState(false),
12
- _useState2 = _slicedToArray(_useState, 2),
13
- mode = _useState2[0],
14
- setMode = _useState2[1];
15
- var selectionMode = useRef(false);
16
- useEffect(function () {
17
- selectionMode.current = mode;
18
- }, [mode]);
19
- var startDrawing = function startDrawing(evt) {
20
- isDrawing.current = true;
21
- if (drawingCanvas.current) {
22
- drawingContext.current = drawingCanvas.current.getContext("2d");
23
- if (drawingContext.current) {
24
- drawingContext.current.setLineDash([2, 4]);
25
- drawingContext.current.lineWidth = 2;
26
- drawingContext.current.strokeStyle = "#3a766c40";
27
- drawingContext.current.fillStyle = "#3a766c10";
28
- drawingContext.current.lineJoin = "round";
29
- drawingContext.current.lineCap = "round";
30
- }
31
- var drawingRectangle = drawingCanvas.current.getBoundingClientRect();
32
- drawPoints.current = [{
33
- x: evt.clientX - drawingRectangle.left,
34
- y: evt.clientY - drawingRectangle.top
35
- }];
36
- }
37
- evt.stopImmediatePropagation();
38
- evt.stopPropagation();
39
- evt.preventDefault();
40
- };
41
- var drawPath = function drawPath(evt) {
42
- if (!isDrawing) return;
43
- if (drawingCanvas.current) {
44
- var drawingRectangle = drawingCanvas.current.getBoundingClientRect();
45
- if (drawingContext.current) {
46
- if (selectionMode.current === "rectangle") {
47
- drawingContext.current.clearRect(0, 0, drawingCanvas.current.width, drawingCanvas.current.height);
48
- var _drawPoints$current$ = drawPoints.current[0],
49
- x = _drawPoints$current$.x,
50
- y = _drawPoints$current$.y;
51
- drawingContext.current.beginPath();
52
- drawingContext.current.rect(Math.min(x, evt.clientX), Math.min(y, evt.clientY), Math.abs(evt.clientX - drawingRectangle.left - x), Math.abs(evt.clientY - drawingRectangle.top - y));
53
- drawingContext.current.stroke();
54
- drawingContext.current.fill();
55
- }
56
- if (selectionMode.current === "lasso") {
57
- drawPoints.current.push({
58
- x: evt.clientX - drawingRectangle.left,
59
- y: evt.clientY - drawingRectangle.top
60
- });
61
-
62
- // Clear the canvas
63
- drawingContext.current.clearRect(0, 0, drawingContext.current.canvas.width, drawingContext.current.canvas.height);
64
-
65
- // Redraw the complete path for a smoother effect
66
- // Even smoother with quadratic curves
67
- var sourcePoint = drawPoints.current[0];
68
- var destinationPoint = drawPoints.current[1];
69
- var pointsLength = drawPoints.current.length;
70
- var getMiddlePointCoordinates = function getMiddlePointCoordinates(firstPoint, secondPoint) {
71
- return {
72
- x: firstPoint.x + (secondPoint.x - firstPoint.x) / 2,
73
- y: firstPoint.y + (secondPoint.y - firstPoint.y) / 2
74
- };
75
- };
76
- drawingContext.current.beginPath();
77
- drawingContext.current.moveTo(sourcePoint.x, sourcePoint.y);
78
- for (var i = 1; i < pointsLength; i++) {
79
- var middlePoint = getMiddlePointCoordinates(sourcePoint, destinationPoint);
80
- // drawingContext.current.lineTo(drawPoints[i].x, drawPoints[i].y);
81
- drawingContext.current.quadraticCurveTo(sourcePoint.x, sourcePoint.y, middlePoint.x, middlePoint.y);
82
- sourcePoint = drawPoints.current[i];
83
- destinationPoint = drawPoints.current[i + 1];
84
- }
85
- drawingContext.current.lineTo(sourcePoint.x, sourcePoint.y);
86
- drawingContext.current.stroke();
87
- drawingContext.current.fill();
88
- }
89
- }
90
- }
91
- };
92
- var stopDrawing = function stopDrawing(evt) {
93
- if (!renderer) return;
94
- if (!isDrawing) return;
95
- var nodes = Array.from(renderer.getGraph().nodes());
96
- nodes.forEach(function (node) {
97
- if (!renderer) return;
98
- var _ref = renderer.getNodeDisplayData(node),
99
- _ref$x = _ref.x,
100
- nx = _ref$x === void 0 ? 0 : _ref$x,
101
- _ref$y = _ref.y,
102
- ny = _ref$y === void 0 ? 0 : _ref$y,
103
- hidden = _ref.hidden;
104
- var _renderer$framedGraph = renderer.framedGraphToViewport({
105
- x: nx,
106
- y: ny
107
- }),
108
- x = _renderer$framedGraph.x,
109
- y = _renderer$framedGraph.y;
110
- if (evt.shiftKey) {
111
- var _drawingContext$curre;
112
- ((_drawingContext$curre = drawingContext.current) === null || _drawingContext$curre === void 0 ? void 0 : _drawingContext$curre.isPointInPath(x, y)) && !hidden && renderer.getGraph().setNodeAttribute(node, "selected", true);
113
- } else {
114
- var _drawingContext$curre2;
115
- !hidden && renderer.getGraph().setNodeAttribute(node, "selected", (_drawingContext$curre2 = drawingContext.current) === null || _drawingContext$curre2 === void 0 ? void 0 : _drawingContext$curre2.isPointInPath(x, y));
116
- }
117
- });
118
- dettachListeners();
119
- };
120
- var attachListeners = function attachListeners() {
121
- if (!renderer) return;
122
- drawingCanvas.current = document.createElement("canvas");
123
- var rect = renderer.getContainer().getBoundingClientRect();
124
- drawingCanvas.current.width = rect.width;
125
- drawingCanvas.current.height = rect.height;
126
- drawingCanvas.current.style.setProperty("inset", "0");
127
- drawingCanvas.current.style.setProperty("position", "absolute");
128
- renderer.getContainer().appendChild(drawingCanvas.current);
129
- drawingCanvas.current.style.cursor = "crosshair";
130
- drawingCanvas.current.addEventListener("mousedown", startDrawing, {
131
- capture: true
132
- });
133
- document.addEventListener("mousemove", drawPath);
134
- document.addEventListener("mouseup", stopDrawing);
135
- };
136
- var dettachListeners = function dettachListeners() {
137
- if (drawingContext.current) {
138
- drawingContext.current.clearRect(0, 0, drawingContext.current.canvas.width, drawingContext.current.canvas.height);
139
- drawingContext.current = null;
140
- }
141
- if (drawingCanvas.current) {
142
- var _drawingCanvas$curren;
143
- (_drawingCanvas$curren = drawingCanvas.current) === null || _drawingCanvas$curren === void 0 || _drawingCanvas$curren.remove();
144
- }
145
- document.removeEventListener("mousemove", drawPath);
146
- document.removeEventListener("mouseup", stopDrawing);
147
- isDrawing.current = false;
148
- setMode(false);
149
- };
150
- var startRectangleSelection = function startRectangleSelection() {
151
- setMode("rectangle");
152
- attachListeners();
153
- };
154
- var startLassoSelection = function startLassoSelection() {
155
- setMode("lasso");
156
- attachListeners();
157
- };
158
- var cancelSelection = function cancelSelection() {
159
- dettachListeners();
160
- };
161
- return {
162
- selectionMode: mode,
163
- startRectangleSelection: startRectangleSelection,
164
- startLassoSelection: startLassoSelection,
165
- cancelSelection: cancelSelection
166
- };
167
- };
168
-
169
- export { useDragSelection };
@@ -1,83 +0,0 @@
1
- 'use client';
2
-
3
- import { debounce } from '@react-fabric/utilities';
4
-
5
- var attachHighlighter = function attachHighlighter(renderer) {
6
- var handleEnterNode = function handleEnterNode(id, graph) {
7
- try {
8
- var neighbors = graph.neighbors(id);
9
- graph.forEachNode(function (node) {
10
- graph.setNodeAttribute(node, "opacity", node !== id && !neighbors.includes(node) ? 0.1 : 1);
11
- });
12
- graph.forEachEdge(function (edge) {
13
- graph.setEdgeAttribute(edge, "opacity", !graph.hasExtremity(edge, id) ? 0.1 : 1);
14
- });
15
- } catch (_unused) {
16
- //
17
- }
18
- };
19
- var handleLeaveNode = function handleLeaveNode(graph) {
20
- graph.forEachNode(function (node) {
21
- graph.setNodeAttribute(node, "opacity", 1);
22
- });
23
- graph.forEachEdge(function (edge) {
24
- graph.setEdgeAttribute(edge, "opacity", 1);
25
- });
26
- };
27
- var handleEnterEdge = function handleEnterEdge(id, graph) {
28
- try {
29
- var source = graph.source(id);
30
- var target = graph.target(id);
31
- graph.setEdgeAttribute(id, "zIndex", 2);
32
- graph.setNodeAttribute(source, "zIndex", 2);
33
- graph.setNodeAttribute(target, "zIndex", 2);
34
- graph.setEdgeAttribute(id, "highlight", true);
35
- graph.setNodeAttribute(source, "highlight", true);
36
- graph.setNodeAttribute(target, "highlight", true);
37
- graph.forEachNode(function (node) {
38
- graph.setNodeAttribute(node, "opacity", node !== source && node !== target ? 0.1 : 1);
39
- });
40
- graph.forEachEdge(function (edge) {
41
- graph.setEdgeAttribute(edge, "opacity", edge !== id ? 0.1 : 1);
42
- });
43
- } catch (_unused2) {
44
- //
45
- }
46
- };
47
- var handleLeaveEdge = function handleLeaveEdge(id, graph) {
48
- var source = graph.source(id);
49
- var target = graph.target(id);
50
- graph.setEdgeAttribute(id, "zIndex", 0);
51
- graph.setNodeAttribute(source, "zIndex", 0);
52
- graph.setNodeAttribute(target, "zIndex", 0);
53
- graph.setEdgeAttribute(id, "highlight", false);
54
- graph.setNodeAttribute(source, "highlight", false);
55
- graph.setNodeAttribute(target, "highlight", false);
56
- graph.forEachNode(function (node) {
57
- graph.setNodeAttribute(node, "opacity", 1);
58
- graph.setNodeAttribute(node, "highlight", false);
59
- });
60
- graph.forEachEdge(function (edge) {
61
- graph.setEdgeAttribute(edge, "opacity", 1);
62
- graph.setEdgeAttribute(edge, "highlight", false);
63
- });
64
- };
65
- var debouceNodeEnter = debounce(function (e) {
66
- handleEnterNode(e.node, renderer.getGraph());
67
- });
68
- var debouceEdgeEnter = debounce(function (e) {
69
- handleEnterEdge(e.edge, renderer.getGraph());
70
- }, 100);
71
- renderer.on("enterNode", debouceNodeEnter);
72
- renderer.on("leaveNode", function (e) {
73
- debouceNodeEnter.cancel();
74
- handleLeaveNode(renderer.getGraph());
75
- });
76
- renderer.on("enterEdge", debouceEdgeEnter);
77
- renderer.on("leaveEdge", function (e) {
78
- debouceEdgeEnter.cancel();
79
- handleLeaveEdge(e.edge, renderer.getGraph());
80
- });
81
- };
82
-
83
- export { attachHighlighter };
@@ -1,145 +0,0 @@
1
- 'use client';
2
-
3
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
-
5
- var attachMouseActions = function attachMouseActions(renderer) {
6
- var isDragging = false;
7
- var isDragged = false;
8
- var startPos = {
9
- x: 0,
10
- y: 0
11
- };
12
- var draggedNode;
13
- var handleDrag = function handleDrag(renderer) {
14
- return function (e) {
15
- if (!isDragging || !draggedNode) return;
16
- isDragged = true;
17
- // Get new position of node
18
- var pos = renderer.viewportToGraph(e);
19
- var diff = {
20
- x: pos.x - startPos.x,
21
- y: pos.y - startPos.y
22
- };
23
- var graph = renderer.getGraph();
24
- Object.entries(draggedNode).forEach(function (_ref) {
25
- var _ref2 = _slicedToArray(_ref, 2),
26
- node = _ref2[0],
27
- xy = _ref2[1];
28
- graph.setNodeAttribute(node, "x", xy.x + diff.x);
29
- graph.setNodeAttribute(node, "y", xy.y + diff.y);
30
- });
31
-
32
- // Prevent sigma to move camera:
33
- e.preventSigmaDefault();
34
- e.original.preventDefault();
35
- e.original.stopPropagation();
36
- };
37
- };
38
- var stopDragging = function stopDragging(graph) {
39
- // if (draggedNode) {
40
- // Object.entries<KeyValue>(draggedNode).forEach(([node, xy]) => {
41
- // const atts = graph.getNodeAttributes(node);
42
- // if (atts.isGroup) {
43
- // const diff = { x: atts.x - xy.x, y: atts.y - xy.y };
44
- // atts.nodes?.forEach((id: string) => {
45
- // try {
46
- // const { x, y } = graph.getNodeAttributes(id);
47
- // graph.setNodeAttribute(id, "x", x + diff.x);
48
- // graph.setNodeAttribute(id, "y", y + diff.y);
49
- // } catch {
50
- // //
51
- // }
52
- // });
53
- // }
54
- // });
55
- // }
56
- isDragging = false;
57
- draggedNode = undefined;
58
- };
59
- var enableDragging = function enableDragging(renderer) {
60
- renderer.on("downNode", function (e) {
61
- if ("button" in e.event.original && e.event.original.button === 0) {
62
- var graph = renderer.getGraph();
63
- isDragging = true;
64
- draggedNode = {};
65
- var _graph$getNodeAttribu = graph.getNodeAttributes(e.node),
66
- _graph$getNodeAttribu2 = _graph$getNodeAttribu.x,
67
- x = _graph$getNodeAttribu2 === void 0 ? 0 : _graph$getNodeAttribu2,
68
- _graph$getNodeAttribu3 = _graph$getNodeAttribu.y,
69
- y = _graph$getNodeAttribu3 === void 0 ? 0 : _graph$getNodeAttribu3;
70
- draggedNode[e.node] = {
71
- x: x,
72
- y: y
73
- };
74
- startPos = {
75
- x: x,
76
- y: y
77
- };
78
- graph.forEachNode(function (node, atts) {
79
- if (atts.selected) {
80
- draggedNode[node] = {
81
- x: atts.x,
82
- y: atts.y
83
- };
84
- }
85
- });
86
- }
87
- });
88
-
89
- // On mouse move, if the drag mode is enabled, we change the position of the draggedNode
90
- renderer.getMouseCaptor().on("mousemovebody", handleDrag(renderer));
91
-
92
- // On mouse up, we reset the autoscale and the dragging mode
93
- renderer.getMouseCaptor().on("mouseup", function (e) {
94
- if (isDragging) {
95
- stopDragging(renderer.getGraph());
96
- e.original.preventDefault();
97
- e.preventSigmaDefault();
98
- }
99
- });
100
-
101
- // Disable the autoscale at the first down interaction
102
- renderer.getMouseCaptor().on("mousedown", function () {
103
- if (!renderer.getCustomBBox()) renderer.setCustomBBox(renderer.getBBox());
104
- });
105
- };
106
- var resetSelection = function resetSelection(graph) {
107
- graph.forEachNode(function (node, atts) {
108
- return atts.selected && graph.setNodeAttribute(node, "selected", false);
109
- });
110
- graph.forEachEdge(function (node, atts) {
111
- return atts.selected && graph.setEdgeAttribute(node, "selected", false);
112
- });
113
- };
114
- var enableSelection = function enableSelection(renderer) {
115
- renderer.on("downNode", function (e) {
116
- if ("button" in e.event.original && e.event.original.button === 2) {
117
- var isSelected = renderer.getGraph().getNodeAttribute(e.node, "selected");
118
- !isSelected && resetSelection(renderer.getGraph());
119
- !isSelected && renderer.getGraph().setNodeAttribute(e.node, "selected", true);
120
- }
121
- });
122
- renderer.on("downEdge", function (e) {
123
- if ("button" in e.event.original && e.event.original.button === 2) {
124
- var isSelected = renderer.getGraph().getEdgeAttribute(e.edge, "selected");
125
- !isSelected && resetSelection(renderer.getGraph());
126
- !isSelected && renderer.getGraph().setEdgeAttribute(e.edge, "selected", true);
127
- }
128
- });
129
- renderer.on("clickNode", function (e) {
130
- if (!isDragged && "button" in e.event.original && e.event.original.button === 0) {
131
- var isSelected = renderer.getGraph().getNodeAttribute(e.node, "selected");
132
- !e.event.original.shiftKey && resetSelection(renderer.getGraph());
133
- renderer.getGraph().setNodeAttribute(e.node, "selected", !isSelected);
134
- }
135
- isDragged = false;
136
- });
137
- renderer.on("downStage", function (e) {
138
- resetSelection(renderer.getGraph());
139
- });
140
- };
141
- enableSelection(renderer);
142
- enableDragging(renderer);
143
- };
144
-
145
- export { attachMouseActions };
@@ -1,41 +0,0 @@
1
- 'use client';
2
-
3
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useState, useEffect } from 'react';
5
- import { Graph } from '../graph/index.js';
6
-
7
- var useGraphology = function useGraphology(data) {
8
- var _useState = useState(new Graph({
9
- multi: true
10
- })),
11
- _useState2 = _slicedToArray(_useState, 2),
12
- graph = _useState2[0],
13
- setGraph = _useState2[1];
14
- var _useState3 = useState([]),
15
- _useState4 = _slicedToArray(_useState3, 2),
16
- selected = _useState4[0],
17
- setSelected = _useState4[1];
18
- useEffect(function () {
19
- if (data instanceof Graph) {
20
- setGraph(data);
21
- return;
22
- }
23
- graph.clear();
24
- data && graph["import"](data, false);
25
- }, [data]);
26
- useEffect(function () {
27
- var handler = function handler(nodes) {
28
- setSelected(nodes);
29
- };
30
- graph.on("nodesSelected", handler);
31
- return function () {
32
- graph.off("nodesSelected", handler);
33
- };
34
- }, [graph]);
35
- return {
36
- graph: graph,
37
- selected: selected
38
- };
39
- };
40
-
41
- export { useGraphology };
@@ -1,112 +0,0 @@
1
- 'use client';
2
-
3
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useIsDark } from '@react-fabric/core';
5
- import { useState, useEffect } from 'react';
6
- import Sigma from 'sigma';
7
- import { EdgeCurveProgram } from '../programs/edge-curve/index.js';
8
- import { EdgeLineProgram } from '../programs/edge-line/index.js';
9
- import { NodeCircleProgram } from '../programs/node-circle/index.js';
10
- import { NodeRectProgram } from '../programs/node-rect/index.js';
11
- import { attachHighlighter } from './sigmaHilighter.js';
12
- import { attachMouseActions } from './sigmaMouseActions.js';
13
-
14
- var useSigma = function useSigma(graph, _nodeReducer, _edgeReducer) {
15
- var _useState = useState(null),
16
- _useState2 = _slicedToArray(_useState, 2),
17
- containerRef = _useState2[0],
18
- setContainerRef = _useState2[1];
19
- var _useState3 = useState(null),
20
- _useState4 = _slicedToArray(_useState3, 2),
21
- componentsRef = _useState4[0],
22
- setComponentsRef = _useState4[1];
23
- var isDark = useIsDark();
24
- var _useState5 = useState(),
25
- _useState6 = _slicedToArray(_useState5, 2),
26
- sigma = _useState6[0],
27
- updateSigma = _useState6[1];
28
- useEffect(function () {
29
- if (containerRef) {
30
- var renderer = new Sigma(graph, containerRef, {
31
- allowInvalidContainer: true,
32
- enableEdgeEvents: true,
33
- renderEdgeLabels: true,
34
- renderLabels: true,
35
- labelSize: 14,
36
- defaultEdgeType: "line",
37
- defaultNodeType: "circle",
38
- edgeProgramClasses: {
39
- line: EdgeLineProgram,
40
- curved: EdgeCurveProgram
41
- },
42
- // for some reason max ratio is min zoom and min ratio is max zoom
43
- maxCameraRatio: 10,
44
- minCameraRatio: 0.01,
45
- nodeProgramClasses: {
46
- rect: NodeRectProgram,
47
- circle: NodeCircleProgram
48
- },
49
- nodeReducer: function nodeReducer(key, data) {
50
- var _nodeReducer2, _nodeData$size, _nodeData$label;
51
- var nodeData = (_nodeReducer2 = _nodeReducer === null || _nodeReducer === void 0 ? void 0 : _nodeReducer(data)) !== null && _nodeReducer2 !== void 0 ? _nodeReducer2 : data;
52
- // Ensure node size is at least 16 for visibility
53
- if (!nodeData.size && nodeData.weight) {
54
- nodeData.size = Math.max(16, nodeData.weight * 3);
55
- }
56
- if (((_nodeData$size = nodeData.size) !== null && _nodeData$size !== void 0 ? _nodeData$size : 0) < 16) {
57
- nodeData.size = 16;
58
- }
59
-
60
- // ensure node label renderer is called in order to render selected border
61
- nodeData.label = (_nodeData$label = nodeData.label) !== null && _nodeData$label !== void 0 ? _nodeData$label : "";
62
- nodeData.id = key;
63
- return nodeData;
64
- },
65
- edgeReducer: function edgeReducer(key, data) {
66
- var _edgeReducer2, _edgeData$size;
67
- var edgeData = (_edgeReducer2 = _edgeReducer === null || _edgeReducer === void 0 ? void 0 : _edgeReducer(data)) !== null && _edgeReducer2 !== void 0 ? _edgeReducer2 : data;
68
- // Ensure edge size is at least 0.5 for visibility
69
- if (!edgeData.size && edgeData.weight) {
70
- edgeData.size = Math.max(0.5, edgeData.weight * 6);
71
- }
72
- if (((_edgeData$size = edgeData.size) !== null && _edgeData$size !== void 0 ? _edgeData$size : 0) < 0.5) {
73
- edgeData.size = 0.5;
74
- }
75
- edgeData.id = key;
76
- return edgeData;
77
- }
78
- });
79
- attachMouseActions(renderer);
80
- attachHighlighter(renderer);
81
-
82
- // containerRef?.insertBefore(
83
- // componentsRef,
84
- // renderer.getCanvases().mouse,
85
- // );
86
-
87
- // @ts-expect-error ignore
88
- window.sigma = renderer;
89
- updateSigma(renderer);
90
- return function () {
91
- renderer.kill();
92
- };
93
- }
94
- }, [graph, containerRef, componentsRef]);
95
- useEffect(function () {
96
- sigma === null || sigma === void 0 || sigma.setSettings({
97
- defaultNodeColor: isDark ? "#000" : "#fff",
98
- defaultEdgeColor: isDark ? "#fff" : "#000",
99
- labelColor: {
100
- color: isDark ? "#fff" : "#000",
101
- attribute: "labelColor"
102
- }
103
- });
104
- }, [isDark, sigma]);
105
- return {
106
- instance: sigma,
107
- containerRef: setContainerRef,
108
- componentsRef: setComponentsRef
109
- };
110
- };
111
-
112
- export { useSigma };
@@ -1,8 +0,0 @@
1
- 'use client';
2
-
3
- /* istanbul ignore file */
4
-
5
- // language=GLSL
6
- var SHADER_SOURCE = /* glsl */"\nprecision mediump float;\n\nvarying vec4 v_color;\nvarying float v_opacity;\n\nconst vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\n\nvoid main(void) {\n gl_FragColor = v_color;\n gl_FragColor = mix(transparent, gl_FragColor, v_opacity);\n}\n";
7
-
8
- export { SHADER_SOURCE as default };