@react-fabric/graph 1.0.0-beta.58 → 1.0.0-beta.60

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 (144) hide show
  1. package/dist/cjs/{packages/graph/src/components → components}/Context.js +6 -6
  2. package/dist/cjs/{packages/graph/src/components → components}/ContextMenu.js +8 -9
  3. package/dist/cjs/{packages/graph/src/components → components}/Tools.js +102 -24
  4. package/dist/cjs/{packages/graph/src/components → components}/Viewer.js +1 -0
  5. package/dist/cjs/{packages/graph/src/graph → graph}/index.js +75 -68
  6. package/dist/cjs/{packages/graph/src/hooks → hooks}/useSigma.js +5 -5
  7. package/dist/cjs/programs/arrow-head/frag.glsl.js +8 -0
  8. package/dist/cjs/{packages/graph/src/programs → programs}/arrow-head/index.js +1 -1
  9. package/dist/cjs/programs/arrow-head/vert.glsl.js +8 -0
  10. package/dist/cjs/{packages/graph/src/programs → programs}/edge-curve/index.js +2 -2
  11. package/dist/cjs/{packages/graph/src/programs → programs}/edge-line/index.js +2 -2
  12. package/dist/cjs/{packages/graph/src/programs → programs}/node-badge/vert.glsl.js +1 -1
  13. package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/base/drawHover.js +2 -1
  14. package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/base/drawLabel.js +2 -1
  15. package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/base/drawHover.js +2 -1
  16. package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/base/drawLabel.js +2 -1
  17. package/dist/esm/{packages/graph/src/components → components}/Context.js +6 -6
  18. package/dist/esm/{packages/graph/src/components → components}/ContextMenu.js +8 -9
  19. package/dist/esm/components/Tools.js +205 -0
  20. package/dist/esm/{packages/graph/src/components → components}/Viewer.js +1 -0
  21. package/dist/esm/{packages/graph/src/graph → graph}/index.js +75 -68
  22. package/dist/esm/{packages/graph/src/hooks → hooks}/useSigma.js +5 -5
  23. package/dist/esm/programs/arrow-head/frag.glsl.js +8 -0
  24. package/dist/esm/{packages/graph/src/programs → programs}/arrow-head/index.js +1 -1
  25. package/dist/esm/programs/arrow-head/vert.glsl.js +8 -0
  26. package/dist/esm/{packages/graph/src/programs → programs}/edge-curve/index.js +2 -2
  27. package/dist/esm/{packages/graph/src/programs → programs}/edge-line/index.js +2 -2
  28. package/dist/esm/{packages/graph/src/programs → programs}/node-badge/vert.glsl.js +1 -1
  29. package/dist/esm/{packages/graph/src/programs → programs}/node-circle/base/drawHover.js +2 -1
  30. package/dist/esm/{packages/graph/src/programs → programs}/node-circle/base/drawLabel.js +2 -1
  31. package/dist/esm/{packages/graph/src/programs → programs}/node-rect/base/drawHover.js +2 -1
  32. package/dist/esm/{packages/graph/src/programs → programs}/node-rect/base/drawLabel.js +2 -1
  33. package/dist/types/components/Context.d.ts +3 -3
  34. package/dist/types/components/Viewer.d.ts +1 -1
  35. package/dist/types/graph/index.d.ts +9 -4
  36. package/dist/types/hooks/sigmaHilighter.d.ts +1 -1
  37. package/dist/types/hooks/sigmaMouseActions.d.ts +1 -1
  38. package/dist/types/hooks/useGraphology.d.ts +1 -1
  39. package/dist/types/hooks/useSigma.d.ts +2 -2
  40. package/dist/types/programs/arrow-head/index.d.ts +4 -4
  41. package/dist/types/programs/edge-curve/index.d.ts +1 -1
  42. package/dist/types/programs/node-circle/base/drawHover.d.ts +1 -1
  43. package/dist/types/programs/node-circle/base/drawLabel.d.ts +1 -1
  44. package/dist/types/programs/node-circle/index.d.ts +1 -1
  45. package/dist/types/programs/node-rect/base/drawHover.d.ts +1 -1
  46. package/dist/types/programs/node-rect/base/drawLabel.d.ts +1 -1
  47. package/dist/types/programs/node-rect/index.d.ts +1 -1
  48. package/dist/types/types/index.d.ts +7 -7
  49. package/package.json +4 -4
  50. package/src/components/Context.tsx +18 -10
  51. package/src/components/ContextMenu.tsx +32 -14
  52. package/src/components/Tools.tsx +15 -16
  53. package/src/components/Viewer.tsx +2 -1
  54. package/src/graph/index.ts +68 -63
  55. package/src/graph/layout.worker.ts +1 -1
  56. package/src/hooks/sigmaHilighter.ts +2 -2
  57. package/src/hooks/sigmaMouseActions.ts +1 -1
  58. package/src/hooks/useGraphology.ts +1 -1
  59. package/src/hooks/useSigma.ts +8 -8
  60. package/src/programs/arrow-head/frag.glsl.ts +1 -1
  61. package/src/programs/arrow-head/index.ts +17 -8
  62. package/src/programs/arrow-head/vert.glsl.ts +1 -1
  63. package/src/programs/edge-curve/index.ts +2 -2
  64. package/src/programs/edge-line/index.ts +2 -2
  65. package/src/programs/node-badge/factory.ts +3 -3
  66. package/src/programs/node-badge/vert.glsl.ts +4 -4
  67. package/src/programs/node-circle/base/drawHover.ts +2 -2
  68. package/src/programs/node-circle/base/drawLabel.ts +6 -6
  69. package/src/programs/node-circle/index.ts +1 -1
  70. package/src/programs/node-rect/base/drawHover.ts +2 -2
  71. package/src/programs/node-rect/base/drawLabel.ts +6 -6
  72. package/src/programs/node-rect/index.ts +1 -1
  73. package/src/types/index.ts +6 -6
  74. package/dist/cjs/_virtual/_commonjs-dynamic-modules.js +0 -7
  75. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -7
  76. package/dist/cjs/_virtual/elk.bundled.js +0 -5
  77. package/dist/cjs/node_modules/elkjs/lib/elk.bundled.js +0 -6667
  78. package/dist/cjs/packages/graph/src/programs/arrow-head/frag.glsl.js +0 -8
  79. package/dist/cjs/packages/graph/src/programs/arrow-head/vert.glsl.js +0 -8
  80. package/dist/esm/_virtual/_commonjs-dynamic-modules.js +0 -7
  81. package/dist/esm/_virtual/_commonjsHelpers.js +0 -7
  82. package/dist/esm/_virtual/elk.bundled.js +0 -5
  83. package/dist/esm/node_modules/elkjs/lib/elk.bundled.js +0 -6667
  84. package/dist/esm/packages/graph/src/components/Tools.js +0 -127
  85. package/dist/esm/packages/graph/src/programs/arrow-head/frag.glsl.js +0 -8
  86. package/dist/esm/packages/graph/src/programs/arrow-head/vert.glsl.js +0 -8
  87. /package/dist/cjs/{packages/graph/src/constants → constants}/index.js +0 -0
  88. /package/dist/cjs/{packages/graph/src/hooks → hooks}/sigmaDragSelect.js +0 -0
  89. /package/dist/cjs/{packages/graph/src/hooks → hooks}/sigmaHilighter.js +0 -0
  90. /package/dist/cjs/{packages/graph/src/hooks → hooks}/sigmaMouseActions.js +0 -0
  91. /package/dist/cjs/{packages/graph/src/hooks → hooks}/useGraphology.js +0 -0
  92. /package/dist/cjs/{packages/graph/src/index.js → index.js} +0 -0
  93. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-curve/drawLabel.js +0 -0
  94. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-curve/frag.glsl.js +0 -0
  95. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-curve/vert.glsl.js +0 -0
  96. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-line/drawLabel.js +0 -0
  97. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-line/frag.glsl.js +0 -0
  98. /package/dist/cjs/{packages/graph/src/programs → programs}/edge-line/vert.glsl.js +0 -0
  99. /package/dist/cjs/{packages/graph/src/programs → programs}/node-badge/factory.js +0 -0
  100. /package/dist/cjs/{packages/graph/src/programs → programs}/node-badge/frag.glsl.js +0 -0
  101. /package/dist/cjs/{packages/graph/src/programs → programs}/node-badge/index.js +0 -0
  102. /package/dist/cjs/{packages/graph/src/programs → programs}/node-badge/texture.js +0 -0
  103. /package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/base/frag.glsl.js +0 -0
  104. /package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/base/index.js +0 -0
  105. /package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/base/vert.glsl.js +0 -0
  106. /package/dist/cjs/{packages/graph/src/programs → programs}/node-circle/index.js +0 -0
  107. /package/dist/cjs/{packages/graph/src/programs → programs}/node-image/factory.js +0 -0
  108. /package/dist/cjs/{packages/graph/src/programs → programs}/node-image/frag.glsl.js +0 -0
  109. /package/dist/cjs/{packages/graph/src/programs → programs}/node-image/index.js +0 -0
  110. /package/dist/cjs/{packages/graph/src/programs → programs}/node-image/texture.js +0 -0
  111. /package/dist/cjs/{packages/graph/src/programs → programs}/node-image/vert.glsl.js +0 -0
  112. /package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/base/frag.glsl.js +0 -0
  113. /package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/base/index.js +0 -0
  114. /package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/base/vert.glsl.js +0 -0
  115. /package/dist/cjs/{packages/graph/src/programs → programs}/node-rect/index.js +0 -0
  116. /package/dist/esm/{packages/graph/src/constants → constants}/index.js +0 -0
  117. /package/dist/esm/{packages/graph/src/hooks → hooks}/sigmaDragSelect.js +0 -0
  118. /package/dist/esm/{packages/graph/src/hooks → hooks}/sigmaHilighter.js +0 -0
  119. /package/dist/esm/{packages/graph/src/hooks → hooks}/sigmaMouseActions.js +0 -0
  120. /package/dist/esm/{packages/graph/src/hooks → hooks}/useGraphology.js +0 -0
  121. /package/dist/esm/{packages/graph/src/index.js → index.js} +0 -0
  122. /package/dist/esm/{packages/graph/src/programs → programs}/edge-curve/drawLabel.js +0 -0
  123. /package/dist/esm/{packages/graph/src/programs → programs}/edge-curve/frag.glsl.js +0 -0
  124. /package/dist/esm/{packages/graph/src/programs → programs}/edge-curve/vert.glsl.js +0 -0
  125. /package/dist/esm/{packages/graph/src/programs → programs}/edge-line/drawLabel.js +0 -0
  126. /package/dist/esm/{packages/graph/src/programs → programs}/edge-line/frag.glsl.js +0 -0
  127. /package/dist/esm/{packages/graph/src/programs → programs}/edge-line/vert.glsl.js +0 -0
  128. /package/dist/esm/{packages/graph/src/programs → programs}/node-badge/factory.js +0 -0
  129. /package/dist/esm/{packages/graph/src/programs → programs}/node-badge/frag.glsl.js +0 -0
  130. /package/dist/esm/{packages/graph/src/programs → programs}/node-badge/index.js +0 -0
  131. /package/dist/esm/{packages/graph/src/programs → programs}/node-badge/texture.js +0 -0
  132. /package/dist/esm/{packages/graph/src/programs → programs}/node-circle/base/frag.glsl.js +0 -0
  133. /package/dist/esm/{packages/graph/src/programs → programs}/node-circle/base/index.js +0 -0
  134. /package/dist/esm/{packages/graph/src/programs → programs}/node-circle/base/vert.glsl.js +0 -0
  135. /package/dist/esm/{packages/graph/src/programs → programs}/node-circle/index.js +0 -0
  136. /package/dist/esm/{packages/graph/src/programs → programs}/node-image/factory.js +0 -0
  137. /package/dist/esm/{packages/graph/src/programs → programs}/node-image/frag.glsl.js +0 -0
  138. /package/dist/esm/{packages/graph/src/programs → programs}/node-image/index.js +0 -0
  139. /package/dist/esm/{packages/graph/src/programs → programs}/node-image/texture.js +0 -0
  140. /package/dist/esm/{packages/graph/src/programs → programs}/node-image/vert.glsl.js +0 -0
  141. /package/dist/esm/{packages/graph/src/programs → programs}/node-rect/base/frag.glsl.js +0 -0
  142. /package/dist/esm/{packages/graph/src/programs → programs}/node-rect/base/index.js +0 -0
  143. /package/dist/esm/{packages/graph/src/programs → programs}/node-rect/base/vert.glsl.js +0 -0
  144. /package/dist/esm/{packages/graph/src/programs → programs}/node-rect/index.js +0 -0
@@ -3,6 +3,7 @@
3
3
  /* istanbul ignore file */
4
4
 
5
5
  function drawNodeLabel(context, data, settings) {
6
+ var _ref, _data$labelColor;
6
7
  var nodeSize = data.size;
7
8
  var size = settings.labelSize;
8
9
  var font = settings.labelFont;
@@ -10,7 +11,7 @@ function drawNodeLabel(context, data, settings) {
10
11
  // use node color or default node color
11
12
  var bg = settings.defaultNodeColor || "#fff";
12
13
  // use label color or default label color
13
- var color = data.labelColor || settings.labelColor.color || "#000";
14
+ var color = (_ref = (_data$labelColor = data.labelColor) !== null && _data$labelColor !== void 0 ? _data$labelColor : settings.labelColor.color) !== null && _ref !== void 0 ? _ref : "#000";
14
15
  if (data.highlight) {
15
16
  var _data$highlightColor, _data$highlightColor2;
16
17
  // Then we draw the label background
@@ -5,6 +5,7 @@ var drawLabel = require('./drawLabel.js');
5
5
  /* istanbul ignore file */
6
6
 
7
7
  function drawNodeHover(context, data, settings) {
8
+ var _ref, _data$labelColor;
8
9
  var nodeSize = data.size;
9
10
  var size = settings.labelSize;
10
11
  var font = settings.labelFont;
@@ -12,7 +13,7 @@ function drawNodeHover(context, data, settings) {
12
13
  // use node color or default node color
13
14
  var bg = settings.defaultNodeColor || "#fff";
14
15
  // use label color or default label color
15
- var color = data.labelColor || settings.labelColor.color || "#000";
16
+ var color = (_ref = (_data$labelColor = data.labelColor) !== null && _data$labelColor !== void 0 ? _data$labelColor : settings.labelColor.color) !== null && _ref !== void 0 ? _ref : "#000";
16
17
  context.font = "".concat(weight, " ").concat(size, "px ").concat(font);
17
18
 
18
19
  // Then we draw the label background
@@ -3,6 +3,7 @@
3
3
  /* istanbul ignore file */
4
4
 
5
5
  function drawNodeLabel(context, data, settings) {
6
+ var _ref, _data$labelColor;
6
7
  var nodeSize = data.size;
7
8
  var size = settings.labelSize;
8
9
  var font = settings.labelFont;
@@ -10,7 +11,7 @@ function drawNodeLabel(context, data, settings) {
10
11
  // use node color or default node color
11
12
  var bg = settings.defaultNodeColor || "#fff";
12
13
  // use label color or default label color
13
- var color = data.labelColor || settings.labelColor.color || "#000";
14
+ var color = (_ref = (_data$labelColor = data.labelColor) !== null && _data$labelColor !== void 0 ? _data$labelColor : settings.labelColor.color) !== null && _ref !== void 0 ? _ref : "#000";
14
15
  if (data.highlight) {
15
16
  var _data$highlightColor, _data$color;
16
17
  // Then we draw the label background
@@ -33,25 +33,25 @@ var GraphProvider = function GraphProvider(_ref) {
33
33
  setLayoutRunning = _useState2[1];
34
34
  var resetViewport = function resetViewport() {
35
35
  if (graph.size === 0) return;
36
- sigma.instance && fitViewportToNodes(sigma.instance, graph.nodes(), {
36
+ void (sigma.instance && fitViewportToNodes(sigma.instance, graph.nodes(), {
37
37
  animate: true
38
- });
38
+ }));
39
39
  };
40
40
  var zoomIn = function zoomIn() {
41
41
  var _sigma$instance;
42
42
  if (graph.size === 0) return;
43
- (_sigma$instance = sigma.instance) === null || _sigma$instance === void 0 || _sigma$instance.getCamera().animatedZoom();
43
+ void ((_sigma$instance = sigma.instance) === null || _sigma$instance === void 0 ? void 0 : _sigma$instance.getCamera().animatedZoom());
44
44
  };
45
45
  var zoomOut = function zoomOut() {
46
46
  var _sigma$instance2;
47
47
  if (graph.size === 0) return;
48
- (_sigma$instance2 = sigma.instance) === null || _sigma$instance2 === void 0 || _sigma$instance2.getCamera().animatedUnzoom();
48
+ void ((_sigma$instance2 = sigma.instance) === null || _sigma$instance2 === void 0 ? void 0 : _sigma$instance2.getCamera().animatedUnzoom());
49
49
  };
50
50
  useEffect(function () {
51
51
  var resetHandler = function resetHandler() {
52
- sigma.instance && fitViewportToNodes(sigma.instance, graph.nodes(), {
52
+ void (sigma.instance && fitViewportToNodes(sigma.instance, graph.nodes(), {
53
53
  animate: true
54
- });
54
+ }));
55
55
  };
56
56
  graph.on("layoutRunning", setLayoutRunning);
57
57
  graph.on("layoutDone", resetHandler);
@@ -3,10 +3,10 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import { useFloatingNodeId, useFloating, autoUpdate, offset, flip, useClick, useDismiss, useInteractions, FloatingPortal } from '@floating-ui/react';
6
- import { useState, useRef, useEffect, cloneElement } from 'react';
7
- import { useGraph } from './Context.js';
8
6
  import { Menu, MenuItem, Divider } from '@react-fabric/core';
7
+ import { useState, useRef, useEffect, cloneElement } from 'react';
9
8
  import { ICONS } from '../constants/index.js';
9
+ import { useGraph } from './Context.js';
10
10
  import { jsx } from 'react/jsx-runtime';
11
11
 
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -20,7 +20,6 @@ var GraphContextMenu = function GraphContextMenu() {
20
20
  var nodeId = useFloatingNodeId();
21
21
  var _useGraph = useGraph(),
22
22
  sigma = _useGraph.sigma;
23
- _useGraph.graph;
24
23
  var _useState3 = useState([]),
25
24
  _useState4 = _slicedToArray(_useState3, 2),
26
25
  menu = _useState4[0],
@@ -61,29 +60,29 @@ var GraphContextMenu = function GraphContextMenu() {
61
60
  if ("node" in e) {
62
61
  setMenu([/*#__PURE__*/jsx(MenuItem, {
63
62
  label: "Select neighbors"
64
- }), /*#__PURE__*/jsx(Divider, {}), /*#__PURE__*/jsx(MenuItem, {
63
+ }, "0.0"), /*#__PURE__*/jsx(Divider, {}, "0.1"), /*#__PURE__*/jsx(MenuItem, {
65
64
  label: "Delete node(s)",
66
65
  color: "danger",
67
66
  icon: ICONS["delete"]
68
- }), /*#__PURE__*/jsx(MenuItem, {
67
+ }, "0.2"), /*#__PURE__*/jsx(MenuItem, {
69
68
  label: "Clear graph",
70
69
  color: "danger",
71
70
  icon: ICONS.clear
72
- })]);
71
+ }, "0.3")]);
73
72
  } else if ("edge" in e) {
74
73
  setMenu([/*#__PURE__*/jsx(MenuItem, {
75
74
  label: "Select neighbors"
76
- }), /*#__PURE__*/jsx(Divider, {}), /*#__PURE__*/jsx(MenuItem, {
75
+ }, "1.0"), /*#__PURE__*/jsx(Divider, {}, "1.1"), /*#__PURE__*/jsx(MenuItem, {
77
76
  label: "Clear graph",
78
77
  color: "danger",
79
78
  icon: ICONS.clear
80
- })]);
79
+ }, "1.2")]);
81
80
  } else {
82
81
  setMenu([/*#__PURE__*/jsx(MenuItem, {
83
82
  label: "Clear graph",
84
83
  color: "danger",
85
84
  icon: ICONS.clear
86
- })]);
85
+ }, "2.0")]);
87
86
  }
88
87
  var virtual = {
89
88
  getBoundingClientRect: function getBoundingClientRect() {
@@ -0,0 +1,205 @@
1
+ 'use client';
2
+
3
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
4
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
5
+ import { ButtonGroup, Button, Dropdown, Menu, MenuItem } from '@react-fabric/core';
6
+ import { ICONS } from '../constants/index.js';
7
+ import { useGraph } from './Context.js';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+
10
+ var Tools = function Tools() {
11
+ var _useGraph = useGraph(),
12
+ dragSelector = _useGraph.dragSelector,
13
+ graph = _useGraph.graph,
14
+ selected = _useGraph.selected,
15
+ resetViewport = _useGraph.resetViewport,
16
+ zoomIn = _useGraph.zoomIn,
17
+ zoomOut = _useGraph.zoomOut;
18
+ return /*#__PURE__*/jsxs("div", {
19
+ className: "flex flex-nowrap outline absolute top-0 start-0 p-0 z-1 bg-base",
20
+ children: [/*#__PURE__*/jsxs(ButtonGroup, {
21
+ variant: "link",
22
+ children: [/*#__PURE__*/jsx(Button, {
23
+ "aria-label": "Home",
24
+ icon: ICONS.focus,
25
+ onClick: resetViewport
26
+ }), /*#__PURE__*/jsx(Button, {
27
+ "aria-label": "Zoomin",
28
+ icon: ICONS.zoomIn,
29
+ onClick: zoomIn
30
+ }), /*#__PURE__*/jsx(Button, {
31
+ "aria-label": "Zoomout",
32
+ icon: ICONS.zoomOut,
33
+ onClick: zoomOut
34
+ })]
35
+ }), /*#__PURE__*/jsxs(ButtonGroup, {
36
+ variant: "link",
37
+ children: [dragSelector.selectionMode !== "lasso" && /*#__PURE__*/jsx(Button, {
38
+ "aria-label": "lasso",
39
+ icon: ICONS.lasso,
40
+ disabled: !!dragSelector.selectionMode,
41
+ onClick: function onClick() {
42
+ return dragSelector.startLassoSelection();
43
+ }
44
+ }), dragSelector.selectionMode && /*#__PURE__*/jsx(Button, {
45
+ color: "danger",
46
+ "aria-label": "cancel",
47
+ icon: ICONS.cancel,
48
+ onClick: function onClick() {
49
+ return dragSelector.cancelSelection();
50
+ }
51
+ }), dragSelector.selectionMode !== "rectangle" && /*#__PURE__*/jsx(Button, {
52
+ "aria-label": "rectselect",
53
+ icon: ICONS.select,
54
+ disabled: !!dragSelector.selectionMode,
55
+ onClick: function onClick() {
56
+ return dragSelector.startRectangleSelection();
57
+ }
58
+ })]
59
+ }), /*#__PURE__*/jsx(ButtonGroup, {
60
+ variant: "link",
61
+ children: /*#__PURE__*/jsxs(Dropdown, {
62
+ children: [/*#__PURE__*/jsx(Button, {
63
+ "aria-label": "force",
64
+ variant: "link",
65
+ icon: "M19.5 17C19.37 17 19.24 17 19.11 17.04L17.5 13.79C17.95 13.34 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.62 9.5 15.5 9.5 15.36 9.54L13.73 6.29C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.21 9.79 5.84 10.26 6.29L8.64 9.54C8.5 9.5 8.38 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.05 13.34 6.5 13.79L4.89 17.04C4.76 17 4.63 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.64 14.46L10.27 17.71C9.8 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.79C10.46 13.34 10.75 12.71 10.75 12S10.46 10.66 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7S12.26 7 12.39 6.96L14 10.21C13.55 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.14 14.46L17.77 17.71C17.3 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17Z"
66
+ }), /*#__PURE__*/jsxs(Menu, {
67
+ className: "text-sm",
68
+ children: [/*#__PURE__*/jsx(MenuItem, {
69
+ label: "box",
70
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
71
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
72
+ while (1) switch (_context.prev = _context.next) {
73
+ case 0:
74
+ _context.next = 2;
75
+ return graph.elkLayout("box");
76
+ case 2:
77
+ return _context.abrupt("return", _context.sent);
78
+ case 3:
79
+ case "end":
80
+ return _context.stop();
81
+ }
82
+ }, _callee);
83
+ }))
84
+ }), /*#__PURE__*/jsx(MenuItem, {
85
+ label: "force",
86
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
87
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
88
+ while (1) switch (_context2.prev = _context2.next) {
89
+ case 0:
90
+ _context2.next = 2;
91
+ return graph.elkLayout("force");
92
+ case 2:
93
+ return _context2.abrupt("return", _context2.sent);
94
+ case 3:
95
+ case "end":
96
+ return _context2.stop();
97
+ }
98
+ }, _callee2);
99
+ }))
100
+ }), /*#__PURE__*/jsx(MenuItem, {
101
+ label: "layered",
102
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
103
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
104
+ while (1) switch (_context3.prev = _context3.next) {
105
+ case 0:
106
+ _context3.next = 2;
107
+ return graph.elkLayout("layered");
108
+ case 2:
109
+ return _context3.abrupt("return", _context3.sent);
110
+ case 3:
111
+ case "end":
112
+ return _context3.stop();
113
+ }
114
+ }, _callee3);
115
+ }))
116
+ }), /*#__PURE__*/jsx(MenuItem, {
117
+ label: "stress",
118
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
119
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
120
+ while (1) switch (_context4.prev = _context4.next) {
121
+ case 0:
122
+ _context4.next = 2;
123
+ return graph.elkLayout("stress");
124
+ case 2:
125
+ return _context4.abrupt("return", _context4.sent);
126
+ case 3:
127
+ case "end":
128
+ return _context4.stop();
129
+ }
130
+ }, _callee4);
131
+ }))
132
+ }), /*#__PURE__*/jsx(MenuItem, {
133
+ label: "radial",
134
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
135
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
136
+ while (1) switch (_context5.prev = _context5.next) {
137
+ case 0:
138
+ _context5.next = 2;
139
+ return graph.elkLayout("radial");
140
+ case 2:
141
+ return _context5.abrupt("return", _context5.sent);
142
+ case 3:
143
+ case "end":
144
+ return _context5.stop();
145
+ }
146
+ }, _callee5);
147
+ }))
148
+ }), /*#__PURE__*/jsx(MenuItem, {
149
+ label: "sporeOverlap",
150
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
151
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
152
+ while (1) switch (_context6.prev = _context6.next) {
153
+ case 0:
154
+ _context6.next = 2;
155
+ return graph.elkLayout("sporeOverlap");
156
+ case 2:
157
+ return _context6.abrupt("return", _context6.sent);
158
+ case 3:
159
+ case "end":
160
+ return _context6.stop();
161
+ }
162
+ }, _callee6);
163
+ }))
164
+ }), /*#__PURE__*/jsx(MenuItem, {
165
+ label: "sporeCompaction",
166
+ onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
167
+ return _regeneratorRuntime.wrap(function _callee7$(_context7) {
168
+ while (1) switch (_context7.prev = _context7.next) {
169
+ case 0:
170
+ _context7.next = 2;
171
+ return graph.elkLayout("sporeCompaction");
172
+ case 2:
173
+ return _context7.abrupt("return", _context7.sent);
174
+ case 3:
175
+ case "end":
176
+ return _context7.stop();
177
+ }
178
+ }, _callee7);
179
+ }))
180
+ })]
181
+ })]
182
+ })
183
+ }), /*#__PURE__*/jsxs(ButtonGroup, {
184
+ variant: "link",
185
+ children: [/*#__PURE__*/jsx(Button, {
186
+ "aria-label": "delete",
187
+ color: "danger",
188
+ icon: ICONS["delete"],
189
+ disabled: !selected.length,
190
+ onClick: function onClick() {
191
+ return graph.dropNodes(selected);
192
+ }
193
+ }), /*#__PURE__*/jsx(Button, {
194
+ "aria-label": "clear",
195
+ color: "danger",
196
+ icon: ICONS.clear,
197
+ onClick: function onClick() {
198
+ return graph.clear();
199
+ }
200
+ })]
201
+ })]
202
+ });
203
+ };
204
+
205
+ export { Tools };
@@ -35,6 +35,7 @@ var Graph = function Graph() {
35
35
  ref: sigma.containerRef,
36
36
  className: "absolute inset-0"
37
37
  }), /*#__PURE__*/jsx("div", {
38
+ role: "none",
38
39
  ref: handlesRef,
39
40
  dir: "ltr",
40
41
  onClick: function onClick(e) {
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
4
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
5
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
5
6
  import _typeof from '@babel/runtime/helpers/typeof';
6
7
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
@@ -12,12 +13,16 @@ import _inherits from '@babel/runtime/helpers/inherits';
12
13
  import _regeneratorRuntime from '@babel/runtime/regenerator';
13
14
  import { debounce } from '@react-fabric/utilities';
14
15
  import { indexParallelEdgesIndex, DEFAULT_EDGE_CURVATURE } from '@sigma/edge-curve';
15
- import ElkConstructor from '../../../../node_modules/elkjs/lib/elk.bundled.js';
16
- import WorkerFactory from '../../../../_virtual/elk-worker.js';
16
+ import ElkConstructor from 'elkjs/lib/elk.bundled';
17
17
  import Graphology from 'graphology';
18
- import { random } from 'graphology-layout';
18
+ import { circular } from 'graphology-layout';
19
+ import forceAtlas2 from 'graphology-layout-forceatlas2';
20
+ import ForceAtlas2Worker from 'graphology-layout-forceatlas2/worker';
19
21
  import { animateNodes } from 'sigma/utils';
22
+ import WorkerFactory from '../_virtual/elk-worker.js';
20
23
 
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
26
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
22
27
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
23
28
  var Graph = /*#__PURE__*/function (_Graphology) {
@@ -192,10 +197,11 @@ var Graph = /*#__PURE__*/function (_Graphology) {
192
197
  }, {
193
198
  key: "ungroupNode",
194
199
  value: function ungroupNode(node) {
195
- var _this4 = this;
200
+ var _atts$nodeList,
201
+ _this4 = this;
196
202
  var atts = this.getNodeAttributes(node);
197
203
  if (!atts || !atts.isGroup) return;
198
- var nodes = atts.nodeList || [];
204
+ var nodes = (_atts$nodeList = atts.nodeList) !== null && _atts$nodeList !== void 0 ? _atts$nodeList : [];
199
205
  nodes.forEach(function (n) {
200
206
  var originalEdges = _this4.getNodeAttribute(n, "originalEdges");
201
207
  if (originalEdges && Array.isArray(originalEdges)) {
@@ -226,7 +232,6 @@ var Graph = /*#__PURE__*/function (_Graphology) {
226
232
  }, {
227
233
  key: "import",
228
234
  value: function _import(data, merge) {
229
- var _this6 = this;
230
235
  var newNodes = [];
231
236
  if (data instanceof Graph) {
232
237
  newNodes.push.apply(newNodes, _toConsumableArray(data.nodes()));
@@ -239,68 +244,70 @@ var Graph = /*#__PURE__*/function (_Graphology) {
239
244
  // fire events for nodes added
240
245
  this.emit("nodesLoaded", newNodes);
241
246
  // apply random positions for nodes
242
- var positions = random(this);
247
+ // const positions = random(this as any);
248
+ // animateNodes(
249
+ // this as any,
250
+ // positions,
251
+ // {
252
+ // duration: 200,
253
+ // },
254
+ // () => {
255
+ // // fire layout done event
256
+ // this.emit("layoutDone");
257
+ // },
258
+ // );
259
+ void this.elkLayout("force");
260
+ return this;
261
+ }
262
+ }, {
263
+ key: "circularLayout",
264
+ value: function circularLayout() {
265
+ var _this6 = this;
266
+ if (this.size === 0) return this;
267
+ var positions = circular(this);
243
268
  animateNodes(this, positions, {
244
269
  duration: 200
245
270
  }, function () {
246
- // fire layout done event
247
271
  _this6.emit("layoutDone");
248
272
  });
249
273
  return this;
250
274
  }
251
-
252
- // circularLayout() {
253
- // if (this.size === 0) return this;
254
- // const positions = circular(this as any);
255
- // animateNodes(
256
- // this as any,
257
- // positions,
258
- // {
259
- // duration: 200,
260
- // },
261
- // () => {
262
- // this.emit("layoutDone");
263
- // },
264
- // );
265
- // return this;
266
- // }
267
-
268
- // private _timer: any;
269
- // private _worker?: forceAtlas2Worker;
270
- // forceLayout(settings: ForceAtlas2Settings = {}) {
271
- // if (this.size === 0) return this;
272
- // const sensibleSettings = forceAtlas2.inferSettings(this as any);
273
- // if (this._worker?.isRunning()) {
274
- // clearTimeout(this._timer);
275
- // }
276
- // this._worker?.kill();
277
- // this._worker = new forceAtlas2Worker(this as any, {
278
- // settings: {
279
- // ...sensibleSettings,
280
- // ...settings,
281
- // },
282
- // });
283
- // this.emit("layoutRunning", true);
284
- // this._worker.start();
285
- // this._timer = setTimeout(
286
- // () => {
287
- // this._worker?.stop();
288
- // this._worker?.kill();
289
- // this.emit("layoutRunning", false);
290
- // this.emit("layoutDone");
291
- // },
292
- // // @ts-expect-error ignore
293
- // this.nodes().length * window.__GRAPH_LAYOUT_DURATION_MULTIPLIER__,
294
- // );
295
- // return this;
296
- // }
275
+ }, {
276
+ key: "forceLayout",
277
+ value: function forceLayout() {
278
+ var _this$_worker,
279
+ _this$_worker2,
280
+ _this7 = this;
281
+ var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
282
+ if (this.size === 0) return this;
283
+ var sensibleSettings = forceAtlas2.inferSettings(this);
284
+ if ((_this$_worker = this._worker) !== null && _this$_worker !== void 0 && _this$_worker.isRunning()) {
285
+ clearTimeout(this._timer);
286
+ }
287
+ (_this$_worker2 = this._worker) === null || _this$_worker2 === void 0 || _this$_worker2.kill();
288
+ this._worker = new ForceAtlas2Worker(this, {
289
+ settings: _objectSpread(_objectSpread({}, sensibleSettings), settings)
290
+ });
291
+ this.emit("layoutRunning", true);
292
+ this._worker.start();
293
+ this._timer = setTimeout(function () {
294
+ var _this7$_worker, _this7$_worker2;
295
+ (_this7$_worker = _this7._worker) === null || _this7$_worker === void 0 || _this7$_worker.stop();
296
+ (_this7$_worker2 = _this7._worker) === null || _this7$_worker2 === void 0 || _this7$_worker2.kill();
297
+ _this7.emit("layoutRunning", false);
298
+ _this7.emit("layoutDone");
299
+ },
300
+ // @ts-expect-error ignore
301
+ this.nodes().length * window.__GRAPH_LAYOUT_DURATION_MULTIPLIER__);
302
+ return this;
303
+ }
297
304
 
298
305
  // @ts-expect-error ignore
299
306
  }, {
300
307
  key: "elkLayout",
301
308
  value: function () {
302
309
  var _elkLayout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(type) {
303
- var _this7 = this;
310
+ var _this8 = this;
304
311
  return _regeneratorRuntime.wrap(function _callee$(_context) {
305
312
  while (1) switch (_context.prev = _context.next) {
306
313
  case 0:
@@ -312,8 +319,8 @@ var Graph = /*#__PURE__*/function (_Graphology) {
312
319
  this.emit("layoutRunning", true);
313
320
  this.elk.layout({
314
321
  id: "root",
315
- width: 1600,
316
- height: 900,
322
+ // width: 1600,
323
+ // height: 900,
317
324
  children: this.mapNodes(function (node, atts) {
318
325
  var _atts$size, _atts$weight, _atts$size2, _atts$weight2;
319
326
  return {
@@ -344,15 +351,15 @@ var Graph = /*#__PURE__*/function (_Graphology) {
344
351
  y: (_node$y = node.y) !== null && _node$y !== void 0 ? _node$y : 0
345
352
  }];
346
353
  })) !== null && _graph$children$map !== void 0 ? _graph$children$map : []);
347
- animateNodes(_this7, positions, {
354
+ animateNodes(_this8, positions, {
348
355
  duration: 200
349
356
  }, function () {
350
357
  setTimeout(function () {
351
- _this7.emit("layoutDone");
358
+ _this8.emit("layoutDone");
352
359
  }, 100);
353
360
  });
354
361
  })["catch"](console.error)["finally"](function () {
355
- _this7.emit("layoutRunning", false);
362
+ _this8.emit("layoutRunning", false);
356
363
  });
357
364
  case 3:
358
365
  case "end":
@@ -368,10 +375,10 @@ var Graph = /*#__PURE__*/function (_Graphology) {
368
375
  }, {
369
376
  key: "dropNodes",
370
377
  value: function dropNodes(nodes) {
371
- var _this8 = this;
378
+ var _this9 = this;
372
379
  if (!nodes.length) return;
373
380
  nodes.forEach(function (n) {
374
- return _this8.dropNode(n);
381
+ return _this9.dropNode(n);
375
382
  });
376
383
  }
377
384
 
@@ -391,7 +398,7 @@ var Graph = /*#__PURE__*/function (_Graphology) {
391
398
  }, {
392
399
  key: "checkParallelEdges",
393
400
  value: function checkParallelEdges() {
394
- var _this9 = this;
401
+ var _this10 = this;
395
402
  // Use dedicated helper to identify parallel edges:
396
403
  // @ts-expect-error ignore
397
404
  indexParallelEdgesIndex(this, {
@@ -405,17 +412,17 @@ var Graph = /*#__PURE__*/function (_Graphology) {
405
412
  parallelMinIndex = _ref2.parallelMinIndex,
406
413
  parallelMaxIndex = _ref2.parallelMaxIndex;
407
414
  if (typeof parallelMinIndex === "number") {
408
- _this9.mergeEdgeAttributes(edge, {
415
+ _this10.mergeEdgeAttributes(edge, {
409
416
  type: parallelIndex ? "curved" : "line",
410
- curvature: _this9.getCurvature(parallelIndex !== null && parallelIndex !== void 0 ? parallelIndex : 1, parallelMaxIndex !== null && parallelMaxIndex !== void 0 ? parallelMaxIndex : 1)
417
+ curvature: _this10.getCurvature(parallelIndex !== null && parallelIndex !== void 0 ? parallelIndex : 1, parallelMaxIndex !== null && parallelMaxIndex !== void 0 ? parallelMaxIndex : 1)
411
418
  });
412
419
  } else if (typeof parallelIndex === "number") {
413
- _this9.mergeEdgeAttributes(edge, {
420
+ _this10.mergeEdgeAttributes(edge, {
414
421
  type: "curved",
415
- curvature: _this9.getCurvature(parallelIndex !== null && parallelIndex !== void 0 ? parallelIndex : 1, parallelMaxIndex !== null && parallelMaxIndex !== void 0 ? parallelMaxIndex : 1)
422
+ curvature: _this10.getCurvature(parallelIndex !== null && parallelIndex !== void 0 ? parallelIndex : 1, parallelMaxIndex !== null && parallelMaxIndex !== void 0 ? parallelMaxIndex : 1)
416
423
  });
417
424
  } else {
418
- _this9.setEdgeAttribute(edge, "type", "line");
425
+ _this10.setEdgeAttribute(edge, "type", "line");
419
426
  }
420
427
  });
421
428
  }
@@ -47,8 +47,8 @@ var useSigma = function useSigma(graph, _nodeReducer, _edgeReducer) {
47
47
  circle: NodeCircleProgram
48
48
  },
49
49
  nodeReducer: function nodeReducer(key, data) {
50
- var _nodeData$size;
51
- var nodeData = (_nodeReducer === null || _nodeReducer === void 0 ? void 0 : _nodeReducer(data)) || 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
52
  // Ensure node size is at least 16 for visibility
53
53
  if (!nodeData.size && nodeData.weight) {
54
54
  nodeData.size = Math.max(16, nodeData.weight * 3);
@@ -58,13 +58,13 @@ var useSigma = function useSigma(graph, _nodeReducer, _edgeReducer) {
58
58
  }
59
59
 
60
60
  // ensure node label renderer is called in order to render selected border
61
- nodeData.label = nodeData.label || "";
61
+ nodeData.label = (_nodeData$label = nodeData.label) !== null && _nodeData$label !== void 0 ? _nodeData$label : "";
62
62
  nodeData.id = key;
63
63
  return nodeData;
64
64
  },
65
65
  edgeReducer: function edgeReducer(key, data) {
66
- var _edgeData$size;
67
- var edgeData = (_edgeReducer === null || _edgeReducer === void 0 ? void 0 : _edgeReducer(data)) || 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
68
  // Ensure edge size is at least 0.5 for visibility
69
69
  if (!edgeData.size && edgeData.weight) {
70
70
  edgeData.size = Math.max(0.5, edgeData.weight * 6);
@@ -0,0 +1,8 @@
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 };
@@ -25,7 +25,7 @@ var DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS = {
25
25
  widenessToThicknessRatio: 2
26
26
  };
27
27
  function createEdgeArrowHeadProgram(inputOptions) {
28
- var options = _objectSpread(_objectSpread({}, DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS), inputOptions || {});
28
+ var options = _objectSpread(_objectSpread({}, DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS), inputOptions !== null && inputOptions !== void 0 ? inputOptions : {});
29
29
  return /*#__PURE__*/function (_EdgeProgram) {
30
30
  function EdgeArrowHeadProgram() {
31
31
  _classCallCheck(this, EdgeArrowHeadProgram);