@react-fabric/graph 1.0.0-beta.58

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/css/styles.css +56 -0
  4. package/dist/cjs/_virtual/_commonjs-dynamic-modules.js +7 -0
  5. package/dist/cjs/_virtual/_commonjsHelpers.js +7 -0
  6. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +14 -0
  7. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +9 -0
  8. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +35 -0
  9. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +11 -0
  10. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +20 -0
  11. package/dist/cjs/_virtual/elk-worker.js +8 -0
  12. package/dist/cjs/_virtual/elk.bundled.js +5 -0
  13. package/dist/cjs/node_modules/elkjs/lib/elk.bundled.js +6667 -0
  14. package/dist/cjs/packages/graph/src/components/Context.js +108 -0
  15. package/dist/cjs/packages/graph/src/components/ContextMenu.js +134 -0
  16. package/dist/cjs/packages/graph/src/components/Tools.js +127 -0
  17. package/dist/cjs/packages/graph/src/components/Viewer.js +57 -0
  18. package/dist/cjs/packages/graph/src/constants/index.js +16 -0
  19. package/dist/cjs/packages/graph/src/graph/index.js +425 -0
  20. package/dist/cjs/packages/graph/src/hooks/sigmaDragSelect.js +169 -0
  21. package/dist/cjs/packages/graph/src/hooks/sigmaHilighter.js +83 -0
  22. package/dist/cjs/packages/graph/src/hooks/sigmaMouseActions.js +145 -0
  23. package/dist/cjs/packages/graph/src/hooks/useGraphology.js +41 -0
  24. package/dist/cjs/packages/graph/src/hooks/useSigma.js +112 -0
  25. package/dist/cjs/packages/graph/src/index.js +33 -0
  26. package/dist/cjs/packages/graph/src/programs/arrow-head/frag.glsl.js +8 -0
  27. package/dist/cjs/packages/graph/src/programs/arrow-head/index.js +142 -0
  28. package/dist/cjs/packages/graph/src/programs/arrow-head/vert.glsl.js +8 -0
  29. package/dist/cjs/packages/graph/src/programs/edge-curve/drawLabel.js +136 -0
  30. package/dist/cjs/packages/graph/src/programs/edge-curve/frag.glsl.js +8 -0
  31. package/dist/cjs/packages/graph/src/programs/edge-curve/index.js +157 -0
  32. package/dist/cjs/packages/graph/src/programs/edge-curve/vert.glsl.js +8 -0
  33. package/dist/cjs/packages/graph/src/programs/edge-line/drawLabel.js +70 -0
  34. package/dist/cjs/packages/graph/src/programs/edge-line/frag.glsl.js +8 -0
  35. package/dist/cjs/packages/graph/src/programs/edge-line/index.js +166 -0
  36. package/dist/cjs/packages/graph/src/programs/edge-line/vert.glsl.js +8 -0
  37. package/dist/cjs/packages/graph/src/programs/node-badge/factory.js +249 -0
  38. package/dist/cjs/packages/graph/src/programs/node-badge/frag.glsl.js +8 -0
  39. package/dist/cjs/packages/graph/src/programs/node-badge/index.js +33 -0
  40. package/dist/cjs/packages/graph/src/programs/node-badge/texture.js +455 -0
  41. package/dist/cjs/packages/graph/src/programs/node-badge/vert.glsl.js +19 -0
  42. package/dist/cjs/packages/graph/src/programs/node-circle/base/drawHover.js +70 -0
  43. package/dist/cjs/packages/graph/src/programs/node-circle/base/drawLabel.js +112 -0
  44. package/dist/cjs/packages/graph/src/programs/node-circle/base/frag.glsl.js +8 -0
  45. package/dist/cjs/packages/graph/src/programs/node-circle/base/index.js +136 -0
  46. package/dist/cjs/packages/graph/src/programs/node-circle/base/vert.glsl.js +8 -0
  47. package/dist/cjs/packages/graph/src/programs/node-circle/index.js +15 -0
  48. package/dist/cjs/packages/graph/src/programs/node-image/factory.js +223 -0
  49. package/dist/cjs/packages/graph/src/programs/node-image/frag.glsl.js +8 -0
  50. package/dist/cjs/packages/graph/src/programs/node-image/index.js +14 -0
  51. package/dist/cjs/packages/graph/src/programs/node-image/texture.js +472 -0
  52. package/dist/cjs/packages/graph/src/programs/node-image/vert.glsl.js +8 -0
  53. package/dist/cjs/packages/graph/src/programs/node-rect/base/drawHover.js +67 -0
  54. package/dist/cjs/packages/graph/src/programs/node-rect/base/drawLabel.js +106 -0
  55. package/dist/cjs/packages/graph/src/programs/node-rect/base/frag.glsl.js +8 -0
  56. package/dist/cjs/packages/graph/src/programs/node-rect/base/index.js +135 -0
  57. package/dist/cjs/packages/graph/src/programs/node-rect/base/vert.glsl.js +8 -0
  58. package/dist/cjs/packages/graph/src/programs/node-rect/index.js +15 -0
  59. package/dist/esm/_virtual/_commonjs-dynamic-modules.js +7 -0
  60. package/dist/esm/_virtual/_commonjsHelpers.js +7 -0
  61. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +14 -0
  62. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +9 -0
  63. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +34 -0
  64. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +13 -0
  65. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +20 -0
  66. package/dist/esm/_virtual/elk-worker.js +8 -0
  67. package/dist/esm/_virtual/elk.bundled.js +5 -0
  68. package/dist/esm/node_modules/elkjs/lib/elk.bundled.js +6667 -0
  69. package/dist/esm/packages/graph/src/components/Context.js +107 -0
  70. package/dist/esm/packages/graph/src/components/ContextMenu.js +134 -0
  71. package/dist/esm/packages/graph/src/components/Tools.js +127 -0
  72. package/dist/esm/packages/graph/src/components/Viewer.js +57 -0
  73. package/dist/esm/packages/graph/src/constants/index.js +16 -0
  74. package/dist/esm/packages/graph/src/graph/index.js +425 -0
  75. package/dist/esm/packages/graph/src/hooks/sigmaDragSelect.js +169 -0
  76. package/dist/esm/packages/graph/src/hooks/sigmaHilighter.js +83 -0
  77. package/dist/esm/packages/graph/src/hooks/sigmaMouseActions.js +145 -0
  78. package/dist/esm/packages/graph/src/hooks/useGraphology.js +41 -0
  79. package/dist/esm/packages/graph/src/hooks/useSigma.js +112 -0
  80. package/dist/esm/packages/graph/src/index.js +30 -0
  81. package/dist/esm/packages/graph/src/programs/arrow-head/frag.glsl.js +8 -0
  82. package/dist/esm/packages/graph/src/programs/arrow-head/index.js +141 -0
  83. package/dist/esm/packages/graph/src/programs/arrow-head/vert.glsl.js +8 -0
  84. package/dist/esm/packages/graph/src/programs/edge-curve/drawLabel.js +136 -0
  85. package/dist/esm/packages/graph/src/programs/edge-curve/frag.glsl.js +8 -0
  86. package/dist/esm/packages/graph/src/programs/edge-curve/index.js +156 -0
  87. package/dist/esm/packages/graph/src/programs/edge-curve/vert.glsl.js +8 -0
  88. package/dist/esm/packages/graph/src/programs/edge-line/drawLabel.js +70 -0
  89. package/dist/esm/packages/graph/src/programs/edge-line/frag.glsl.js +8 -0
  90. package/dist/esm/packages/graph/src/programs/edge-line/index.js +166 -0
  91. package/dist/esm/packages/graph/src/programs/edge-line/vert.glsl.js +8 -0
  92. package/dist/esm/packages/graph/src/programs/node-badge/factory.js +249 -0
  93. package/dist/esm/packages/graph/src/programs/node-badge/frag.glsl.js +8 -0
  94. package/dist/esm/packages/graph/src/programs/node-badge/index.js +32 -0
  95. package/dist/esm/packages/graph/src/programs/node-badge/texture.js +445 -0
  96. package/dist/esm/packages/graph/src/programs/node-badge/vert.glsl.js +19 -0
  97. package/dist/esm/packages/graph/src/programs/node-circle/base/drawHover.js +70 -0
  98. package/dist/esm/packages/graph/src/programs/node-circle/base/drawLabel.js +112 -0
  99. package/dist/esm/packages/graph/src/programs/node-circle/base/frag.glsl.js +8 -0
  100. package/dist/esm/packages/graph/src/programs/node-circle/base/index.js +136 -0
  101. package/dist/esm/packages/graph/src/programs/node-circle/base/vert.glsl.js +8 -0
  102. package/dist/esm/packages/graph/src/programs/node-circle/index.js +15 -0
  103. package/dist/esm/packages/graph/src/programs/node-image/factory.js +223 -0
  104. package/dist/esm/packages/graph/src/programs/node-image/frag.glsl.js +8 -0
  105. package/dist/esm/packages/graph/src/programs/node-image/index.js +13 -0
  106. package/dist/esm/packages/graph/src/programs/node-image/texture.js +462 -0
  107. package/dist/esm/packages/graph/src/programs/node-image/vert.glsl.js +8 -0
  108. package/dist/esm/packages/graph/src/programs/node-rect/base/drawHover.js +67 -0
  109. package/dist/esm/packages/graph/src/programs/node-rect/base/drawLabel.js +106 -0
  110. package/dist/esm/packages/graph/src/programs/node-rect/base/frag.glsl.js +8 -0
  111. package/dist/esm/packages/graph/src/programs/node-rect/base/index.js +135 -0
  112. package/dist/esm/packages/graph/src/programs/node-rect/base/vert.glsl.js +8 -0
  113. package/dist/esm/packages/graph/src/programs/node-rect/index.js +15 -0
  114. package/dist/types/components/Context.d.ts +18 -0
  115. package/dist/types/components/ContextMenu.d.ts +1 -0
  116. package/dist/types/components/Tools.d.ts +1 -0
  117. package/dist/types/components/Viewer.d.ts +2 -0
  118. package/dist/types/constants/index.d.ts +12 -0
  119. package/dist/types/graph/index.d.ts +30 -0
  120. package/dist/types/graph/layout.worker.d.ts +1 -0
  121. package/dist/types/hooks/sigmaDragSelect.d.ts +8 -0
  122. package/dist/types/hooks/sigmaHilighter.d.ts +3 -0
  123. package/dist/types/hooks/sigmaMouseActions.d.ts +3 -0
  124. package/dist/types/hooks/useGraphology.d.ts +6 -0
  125. package/dist/types/hooks/useSigma.d.ts +8 -0
  126. package/dist/types/index.d.ts +3 -0
  127. package/dist/types/programs/arrow-head/frag.glsl.d.ts +2 -0
  128. package/dist/types/programs/arrow-head/index.d.ts +9 -0
  129. package/dist/types/programs/arrow-head/vert.glsl.d.ts +2 -0
  130. package/dist/types/programs/edge-curve/drawLabel.d.ts +6 -0
  131. package/dist/types/programs/edge-curve/frag.glsl.d.ts +2 -0
  132. package/dist/types/programs/edge-curve/index.d.ts +43 -0
  133. package/dist/types/programs/edge-curve/vert.glsl.d.ts +2 -0
  134. package/dist/types/programs/edge-line/drawLabel.d.ts +5 -0
  135. package/dist/types/programs/edge-line/frag.glsl.d.ts +2 -0
  136. package/dist/types/programs/edge-line/index.d.ts +11 -0
  137. package/dist/types/programs/edge-line/vert.glsl.d.ts +2 -0
  138. package/dist/types/programs/node-badge/factory.d.ts +27 -0
  139. package/dist/types/programs/node-badge/frag.glsl.d.ts +2 -0
  140. package/dist/types/programs/node-badge/index.d.ts +5 -0
  141. package/dist/types/programs/node-badge/texture.d.ts +102 -0
  142. package/dist/types/programs/node-badge/vert.glsl.d.ts +2 -0
  143. package/dist/types/programs/node-circle/base/drawHover.d.ts +8 -0
  144. package/dist/types/programs/node-circle/base/drawLabel.d.ts +8 -0
  145. package/dist/types/programs/node-circle/base/frag.glsl.d.ts +2 -0
  146. package/dist/types/programs/node-circle/base/index.d.ts +37 -0
  147. package/dist/types/programs/node-circle/base/vert.glsl.d.ts +2 -0
  148. package/dist/types/programs/node-circle/index.d.ts +11 -0
  149. package/dist/types/programs/node-image/factory.d.ts +25 -0
  150. package/dist/types/programs/node-image/frag.glsl.d.ts +2 -0
  151. package/dist/types/programs/node-image/index.d.ts +5 -0
  152. package/dist/types/programs/node-image/texture.d.ts +102 -0
  153. package/dist/types/programs/node-image/vert.glsl.d.ts +2 -0
  154. package/dist/types/programs/node-rect/base/drawHover.d.ts +8 -0
  155. package/dist/types/programs/node-rect/base/drawLabel.d.ts +8 -0
  156. package/dist/types/programs/node-rect/base/frag.glsl.d.ts +2 -0
  157. package/dist/types/programs/node-rect/base/index.d.ts +34 -0
  158. package/dist/types/programs/node-rect/base/vert.glsl.d.ts +2 -0
  159. package/dist/types/programs/node-rect/index.d.ts +11 -0
  160. package/dist/types/types/index.d.ts +189 -0
  161. package/package.json +69 -0
  162. package/src/components/Context.tsx +135 -0
  163. package/src/components/ContextMenu.tsx +156 -0
  164. package/src/components/Tools.tsx +107 -0
  165. package/src/components/Viewer.tsx +75 -0
  166. package/src/constants/index.ts +22 -0
  167. package/src/graph/index.ts +428 -0
  168. package/src/graph/layout.worker.ts +42 -0
  169. package/src/hooks/sigmaDragSelect.ts +219 -0
  170. package/src/hooks/sigmaHilighter.ts +107 -0
  171. package/src/hooks/sigmaMouseActions.ts +153 -0
  172. package/src/hooks/useGraphology.ts +31 -0
  173. package/src/hooks/useSigma.ts +118 -0
  174. package/src/index.ts +34 -0
  175. package/src/programs/arrow-head/frag.glsl.ts +18 -0
  176. package/src/programs/arrow-head/index.ts +148 -0
  177. package/src/programs/arrow-head/vert.glsl.ts +75 -0
  178. package/src/programs/edge-curve/drawLabel.ts +166 -0
  179. package/src/programs/edge-curve/frag.glsl.ts +86 -0
  180. package/src/programs/edge-curve/index.ts +158 -0
  181. package/src/programs/edge-curve/vert.glsl.ts +110 -0
  182. package/src/programs/edge-line/drawLabel.ts +113 -0
  183. package/src/programs/edge-line/frag.glsl.ts +34 -0
  184. package/src/programs/edge-line/index.ts +165 -0
  185. package/src/programs/edge-line/vert.glsl.ts +104 -0
  186. package/src/programs/node-badge/factory.ts +327 -0
  187. package/src/programs/node-badge/frag.glsl.ts +79 -0
  188. package/src/programs/node-badge/index.ts +35 -0
  189. package/src/programs/node-badge/texture.ts +425 -0
  190. package/src/programs/node-badge/vert.glsl.ts +99 -0
  191. package/src/programs/node-circle/base/drawHover.ts +80 -0
  192. package/src/programs/node-circle/base/drawLabel.ts +145 -0
  193. package/src/programs/node-circle/base/frag.glsl.ts +72 -0
  194. package/src/programs/node-circle/base/index.ts +102 -0
  195. package/src/programs/node-circle/base/vert.glsl.ts +83 -0
  196. package/src/programs/node-circle/index.ts +19 -0
  197. package/src/programs/node-image/factory.ts +301 -0
  198. package/src/programs/node-image/frag.glsl.ts +97 -0
  199. package/src/programs/node-image/index.ts +7 -0
  200. package/src/programs/node-image/texture.ts +435 -0
  201. package/src/programs/node-image/vert.glsl.ts +60 -0
  202. package/src/programs/node-rect/base/drawHover.ts +77 -0
  203. package/src/programs/node-rect/base/drawLabel.ts +149 -0
  204. package/src/programs/node-rect/base/frag.glsl.ts +67 -0
  205. package/src/programs/node-rect/base/index.ts +109 -0
  206. package/src/programs/node-rect/base/vert.glsl.ts +87 -0
  207. package/src/programs/node-rect/index.ts +19 -0
  208. package/src/types/index.ts +210 -0
@@ -0,0 +1,108 @@
1
+ 'use strict';
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var core = require('@react-fabric/core');
5
+ var utils = require('@sigma/utils');
6
+ var react = require('react');
7
+ var sigmaDragSelect = require('../hooks/sigmaDragSelect.js');
8
+ var useGraphology = require('../hooks/useGraphology.js');
9
+ var useSigma = require('../hooks/useSigma.js');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ var GraphContext = /*#__PURE__*/react.createContext({});
13
+ var useGraph = function useGraph() {
14
+ return react.useContext(GraphContext);
15
+ };
16
+ var GraphProvider = function GraphProvider(_ref) {
17
+ var ref = _ref.ref,
18
+ data = _ref.data,
19
+ children = _ref.children,
20
+ nodeReducer = _ref.nodeReducer,
21
+ edgeReducer = _ref.edgeReducer,
22
+ onSelectChange = _ref.onSelectChange,
23
+ onNodeDoubleClick = _ref.onNodeDoubleClick;
24
+ _ref.onContextMenu;
25
+ var _useGraphology = useGraphology.useGraphology(data),
26
+ graph = _useGraphology.graph,
27
+ selected = _useGraphology.selected;
28
+ var sigma = useSigma.useSigma(graph, nodeReducer, edgeReducer);
29
+ var dragSelector = sigmaDragSelect.useDragSelection(sigma.instance);
30
+ var _useState = react.useState(false),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ layoutRunning = _useState2[0],
33
+ setLayoutRunning = _useState2[1];
34
+ var resetViewport = function resetViewport() {
35
+ if (graph.size === 0) return;
36
+ sigma.instance && utils.fitViewportToNodes(sigma.instance, graph.nodes(), {
37
+ animate: true
38
+ });
39
+ };
40
+ var zoomIn = function zoomIn() {
41
+ var _sigma$instance;
42
+ if (graph.size === 0) return;
43
+ (_sigma$instance = sigma.instance) === null || _sigma$instance === void 0 || _sigma$instance.getCamera().animatedZoom();
44
+ };
45
+ var zoomOut = function zoomOut() {
46
+ var _sigma$instance2;
47
+ if (graph.size === 0) return;
48
+ (_sigma$instance2 = sigma.instance) === null || _sigma$instance2 === void 0 || _sigma$instance2.getCamera().animatedUnzoom();
49
+ };
50
+ react.useEffect(function () {
51
+ var resetHandler = function resetHandler() {
52
+ sigma.instance && utils.fitViewportToNodes(sigma.instance, graph.nodes(), {
53
+ animate: true
54
+ });
55
+ };
56
+ graph.on("layoutRunning", setLayoutRunning);
57
+ graph.on("layoutDone", resetHandler);
58
+ onSelectChange && graph.on("nodesSelected", onSelectChange);
59
+ return function () {
60
+ graph.off("layoutDone", resetHandler);
61
+ graph.off("layoutRunning", setLayoutRunning);
62
+ onSelectChange && graph.off("nodesSelected", onSelectChange);
63
+ };
64
+ }, [graph, sigma, onSelectChange]);
65
+ react.useEffect(function () {
66
+ var _sigma$instance3;
67
+ var handleClick = function handleClick(e) {
68
+ onNodeDoubleClick === null || onNodeDoubleClick === void 0 || onNodeDoubleClick(e.node, graph.getNodeAttributes(e.node));
69
+ e.event.original.preventDefault();
70
+ e.event.preventSigmaDefault();
71
+ e.preventSigmaDefault();
72
+ return false;
73
+ };
74
+ (_sigma$instance3 = sigma.instance) === null || _sigma$instance3 === void 0 || _sigma$instance3.on("doubleClickNode", handleClick);
75
+ return function () {
76
+ var _sigma$instance4;
77
+ (_sigma$instance4 = sigma.instance) === null || _sigma$instance4 === void 0 || _sigma$instance4.off("doubleClickNode", handleClick);
78
+ };
79
+ }, [sigma, graph, onNodeDoubleClick]);
80
+ react.useImperativeHandle(ref, function () {
81
+ return {
82
+ graph: graph,
83
+ sigma: sigma
84
+ };
85
+ }, [graph, sigma]);
86
+ return /*#__PURE__*/jsxRuntime.jsxs(GraphContext.Provider, {
87
+ value: {
88
+ sigma: sigma,
89
+ graph: graph,
90
+ selected: selected,
91
+ dragSelector: dragSelector,
92
+ layoutRunning: layoutRunning,
93
+ resetViewport: resetViewport,
94
+ zoomIn: zoomIn,
95
+ zoomOut: zoomOut
96
+ },
97
+ children: [children, layoutRunning && /*#__PURE__*/jsxRuntime.jsx("div", {
98
+ className: "absolute top-0 end-0 p-1",
99
+ children: /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
100
+ icon: core.CoreIcons.spinner,
101
+ animate: "spin"
102
+ })
103
+ })]
104
+ });
105
+ };
106
+
107
+ exports.GraphProvider = GraphProvider;
108
+ exports.useGraph = useGraph;
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var react$1 = require('@floating-ui/react');
6
+ var react = require('react');
7
+ var Context = require('./Context.js');
8
+ var core = require('@react-fabric/core');
9
+ var index = require('../constants/index.js');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
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; }
13
+ 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; }
14
+ var GraphContextMenu = function GraphContextMenu() {
15
+ var _refs$domReference$cu, _refs$domReference$cu2;
16
+ var _useState = react.useState(false),
17
+ _useState2 = _slicedToArray(_useState, 2),
18
+ isOpen = _useState2[0],
19
+ setIsOpen = _useState2[1];
20
+ var nodeId = react$1.useFloatingNodeId();
21
+ var _useGraph = Context.useGraph(),
22
+ sigma = _useGraph.sigma;
23
+ _useGraph.graph;
24
+ var _useState3 = react.useState([]),
25
+ _useState4 = _slicedToArray(_useState3, 2),
26
+ menu = _useState4[0],
27
+ setMenu = _useState4[1];
28
+ var _useFloating = react$1.useFloating({
29
+ open: isOpen,
30
+ nodeId: nodeId,
31
+ onOpenChange: function onOpenChange(open, evt, reason) {
32
+ var target = evt === null || evt === void 0 ? void 0 : evt.target;
33
+ if (!(target !== null && target !== void 0 && target.closest(".menu-list"))) setIsOpen(open);
34
+ },
35
+ strategy: "absolute",
36
+ placement: "bottom-start",
37
+ whileElementsMounted: react$1.autoUpdate,
38
+ middleware: [react$1.offset(8), react$1.flip()]
39
+ }),
40
+ refs = _useFloating.refs,
41
+ floatingStyles = _useFloating.floatingStyles,
42
+ context = _useFloating.context;
43
+ var click = react$1.useClick(context, {
44
+ toggle: true,
45
+ ignoreMouse: true
46
+ });
47
+ var dismiss = react$1.useDismiss(context, {
48
+ bubbles: true
49
+ });
50
+ var _useInteractions = react$1.useInteractions([dismiss, click]),
51
+ getFloatingProps = _useInteractions.getFloatingProps;
52
+ var tryClosing = react.useRef(function (e) {
53
+ var _e$target;
54
+ if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.closest("[data-dropdown-dismiss='true']")) setTimeout(function () {
55
+ return setIsOpen(false);
56
+ }, 50);
57
+ });
58
+ react.useEffect(function () {
59
+ var _sigma$instance, _sigma$instance2, _sigma$instance3;
60
+ var handleContextMenu = function handleContextMenu(e) {
61
+ if ("node" in e) {
62
+ setMenu([/*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
63
+ label: "Select neighbors"
64
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Divider, {}), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
65
+ label: "Delete node(s)",
66
+ color: "danger",
67
+ icon: index.ICONS["delete"]
68
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
69
+ label: "Clear graph",
70
+ color: "danger",
71
+ icon: index.ICONS.clear
72
+ })]);
73
+ } else if ("edge" in e) {
74
+ setMenu([/*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
75
+ label: "Select neighbors"
76
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Divider, {}), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
77
+ label: "Clear graph",
78
+ color: "danger",
79
+ icon: index.ICONS.clear
80
+ })]);
81
+ } else {
82
+ setMenu([/*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
83
+ label: "Clear graph",
84
+ color: "danger",
85
+ icon: index.ICONS.clear
86
+ })]);
87
+ }
88
+ var virtual = {
89
+ getBoundingClientRect: function getBoundingClientRect() {
90
+ return {
91
+ width: 0,
92
+ height: 0,
93
+ x: e.event.x,
94
+ y: e.event.y,
95
+ top: e.event.y,
96
+ left: e.event.x,
97
+ right: e.event.x,
98
+ bottom: e.event.y
99
+ };
100
+ }
101
+ };
102
+ setIsOpen(true);
103
+ refs.setReference(virtual);
104
+ e.event.original.preventDefault();
105
+ return false;
106
+ };
107
+ (_sigma$instance = sigma.instance) === null || _sigma$instance === void 0 || _sigma$instance.on("rightClickNode", handleContextMenu);
108
+ (_sigma$instance2 = sigma.instance) === null || _sigma$instance2 === void 0 || _sigma$instance2.on("rightClickEdge", handleContextMenu);
109
+ (_sigma$instance3 = sigma.instance) === null || _sigma$instance3 === void 0 || _sigma$instance3.on("rightClickStage", handleContextMenu);
110
+ return function () {
111
+ var _sigma$instance4, _sigma$instance5, _sigma$instance6;
112
+ (_sigma$instance4 = sigma.instance) === null || _sigma$instance4 === void 0 || _sigma$instance4.off("rightClickNode", handleContextMenu);
113
+ (_sigma$instance5 = sigma.instance) === null || _sigma$instance5 === void 0 || _sigma$instance5.off("rightClickEdge", handleContextMenu);
114
+ (_sigma$instance6 = sigma.instance) === null || _sigma$instance6 === void 0 || _sigma$instance6.off("rightClickStage", handleContextMenu);
115
+ };
116
+ }, [sigma]);
117
+ return isOpen && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingPortal, {
118
+ root: (_refs$domReference$cu = (_refs$domReference$cu2 = refs.domReference.current) === null || _refs$domReference$cu2 === void 0 ? void 0 : _refs$domReference$cu2.closest(".theme-base")) !== null && _refs$domReference$cu !== void 0 ? _refs$domReference$cu : undefined,
119
+ children: /*#__PURE__*/react.cloneElement( /*#__PURE__*/jsxRuntime.jsx(core.Menu, {
120
+ children: menu
121
+ }), _objectSpread(_objectSpread({}, getFloatingProps()), {}, {
122
+ style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
123
+ borderRadius: "var(--rounding)",
124
+ zIndex: "var(--z-popover)",
125
+ fontSize: "0.75rem"
126
+ }),
127
+ className: "bg-base outline rounded-capped shadow-lg",
128
+ ref: refs.setFloating,
129
+ onMouseUp: tryClosing.current
130
+ }))
131
+ });
132
+ };
133
+
134
+ exports.GraphContextMenu = GraphContextMenu;
@@ -0,0 +1,127 @@
1
+ 'use strict';
2
+
3
+ var core = require('@react-fabric/core');
4
+ var index = require('../constants/index.js');
5
+ var Context = require('./Context.js');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ var Tools = function Tools() {
9
+ var _useGraph = Context.useGraph(),
10
+ dragSelector = _useGraph.dragSelector,
11
+ graph = _useGraph.graph,
12
+ selected = _useGraph.selected;
13
+ _useGraph.layoutRunning;
14
+ var resetViewport = _useGraph.resetViewport,
15
+ zoomIn = _useGraph.zoomIn,
16
+ zoomOut = _useGraph.zoomOut;
17
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
18
+ className: "flex flex-nowrap outline absolute top-0 start-0 p-0 z-1 bg-base",
19
+ children: [/*#__PURE__*/jsxRuntime.jsxs(core.ButtonGroup, {
20
+ variant: "link",
21
+ children: [/*#__PURE__*/jsxRuntime.jsx(core.Button, {
22
+ "aria-label": "Home",
23
+ icon: index.ICONS.focus,
24
+ onClick: resetViewport
25
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Button, {
26
+ "aria-label": "Zoomin",
27
+ icon: index.ICONS.zoomIn,
28
+ onClick: zoomIn
29
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Button, {
30
+ "aria-label": "Zoomout",
31
+ icon: index.ICONS.zoomOut,
32
+ onClick: zoomOut
33
+ })]
34
+ }), /*#__PURE__*/jsxRuntime.jsxs(core.ButtonGroup, {
35
+ variant: "link",
36
+ children: [dragSelector.selectionMode !== "lasso" && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
37
+ "aria-label": "lasso",
38
+ icon: index.ICONS.lasso,
39
+ disabled: !!dragSelector.selectionMode,
40
+ onClick: function onClick() {
41
+ return dragSelector.startLassoSelection();
42
+ }
43
+ }), dragSelector.selectionMode && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
44
+ color: "danger",
45
+ "aria-label": "cancel",
46
+ icon: index.ICONS.cancel,
47
+ onClick: function onClick() {
48
+ return dragSelector.cancelSelection();
49
+ }
50
+ }), dragSelector.selectionMode !== "rectangle" && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
51
+ "aria-label": "rectselect",
52
+ icon: index.ICONS.select,
53
+ disabled: !!dragSelector.selectionMode,
54
+ onClick: function onClick() {
55
+ return dragSelector.startRectangleSelection();
56
+ }
57
+ })]
58
+ }), /*#__PURE__*/jsxRuntime.jsx(core.ButtonGroup, {
59
+ variant: "link",
60
+ children: /*#__PURE__*/jsxRuntime.jsxs(core.Dropdown, {
61
+ children: [/*#__PURE__*/jsxRuntime.jsx(core.Button, {
62
+ "aria-label": "force",
63
+ variant: "link",
64
+ 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"
65
+ }), /*#__PURE__*/jsxRuntime.jsxs(core.Menu, {
66
+ className: "text-sm",
67
+ children: [/*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
68
+ label: "box",
69
+ onClick: function onClick() {
70
+ return graph.elkLayout("box");
71
+ }
72
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
73
+ label: "force",
74
+ onClick: function onClick() {
75
+ return graph.elkLayout("force");
76
+ }
77
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
78
+ label: "layered",
79
+ onClick: function onClick() {
80
+ return graph.elkLayout("layered");
81
+ }
82
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
83
+ label: "stress",
84
+ onClick: function onClick() {
85
+ return graph.elkLayout("stress");
86
+ }
87
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
88
+ label: "radial",
89
+ onClick: function onClick() {
90
+ return graph.elkLayout("radial");
91
+ }
92
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
93
+ label: "sporeOverlap",
94
+ onClick: function onClick() {
95
+ return graph.elkLayout("sporeOverlap");
96
+ }
97
+ }), /*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
98
+ label: "sporeCompaction",
99
+ onClick: function onClick() {
100
+ return graph.elkLayout("sporeCompaction");
101
+ }
102
+ })]
103
+ })]
104
+ })
105
+ }), /*#__PURE__*/jsxRuntime.jsxs(core.ButtonGroup, {
106
+ variant: "link",
107
+ children: [/*#__PURE__*/jsxRuntime.jsx(core.Button, {
108
+ "aria-label": "delete",
109
+ color: "danger",
110
+ icon: index.ICONS["delete"],
111
+ disabled: !selected.length,
112
+ onClick: function onClick() {
113
+ return graph.dropNodes(selected);
114
+ }
115
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Button, {
116
+ "aria-label": "clear",
117
+ color: "danger",
118
+ icon: index.ICONS.clear,
119
+ onClick: function onClick() {
120
+ return graph.clear();
121
+ }
122
+ })]
123
+ })]
124
+ });
125
+ };
126
+
127
+ exports.Tools = Tools;
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var core = require('@react-fabric/core');
5
+ var Context = require('./Context.js');
6
+ var Tools = require('./Tools.js');
7
+ var react = require('react');
8
+ var ContextMenu = require('./ContextMenu.js');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ 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; }
12
+ 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; }
13
+ var Graph = function Graph() {
14
+ var _useGraph = Context.useGraph(),
15
+ sigma = _useGraph.sigma,
16
+ graph = _useGraph.graph;
17
+ var handlesRef = react.useRef(null);
18
+ react.useEffect(function () {
19
+ // remove group handle if group node is dropped
20
+ var handler = function handler(_ref) {
21
+ var _handlesRef$current;
22
+ var key = _ref.key;
23
+ var handle = (_handlesRef$current = handlesRef.current) === null || _handlesRef$current === void 0 ? void 0 : _handlesRef$current.querySelector("[data-id=\"".concat(key, "\"]"));
24
+ handle === null || handle === void 0 || handle.remove();
25
+ };
26
+ graph.on("nodeDropped", handler);
27
+ return function () {
28
+ graph.off("nodeDropped", handler);
29
+ };
30
+ }, [graph]);
31
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
32
+ className: "area-content relative bg-base graph-viewer",
33
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
34
+ dir: "ltr",
35
+ ref: sigma.containerRef,
36
+ className: "absolute inset-0"
37
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
38
+ ref: handlesRef,
39
+ dir: "ltr",
40
+ onClick: function onClick(e) {
41
+ var key = e.target.dataset.id;
42
+ key && graph.toggleExpanded(key);
43
+ },
44
+ className: "absolute inset-0 overflow-hidden pointer-events-none sigma-groupHandles"
45
+ })]
46
+ });
47
+ };
48
+ var SigmaGraph = function SigmaGraph(props) {
49
+ return /*#__PURE__*/jsxRuntime.jsx(core.Section, {
50
+ className: "relative",
51
+ children: /*#__PURE__*/jsxRuntime.jsxs(Context.GraphProvider, _objectSpread(_objectSpread({}, props), {}, {
52
+ children: [/*#__PURE__*/jsxRuntime.jsx(Tools.Tools, {}), /*#__PURE__*/jsxRuntime.jsx(Graph, {}), /*#__PURE__*/jsxRuntime.jsx(ContextMenu.GraphContextMenu, {})]
53
+ }))
54
+ });
55
+ };
56
+
57
+ exports.SigmaGraph = SigmaGraph;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var ICONS = {
4
+ focus: "M17 12C17 7.55 11.62 5.31 8.46 8.46C5.31 11.61 7.55 17 12 17C14.76 17 17 14.76 17 12M12 15C9.33 15 8 11.77 9.88 9.88C11.77 8 15 9.33 15 12C15 13.66 13.66 15 12 15M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19",
5
+ zoomIn: "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z",
6
+ zoomOut: "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z",
7
+ lasso: "M22 9C22 5.13 17.5 2 12 2C6.5 2 2 5.13 2 9C2 9.00843 2.00002 9.01685 2.00006 9.02527C2.00952 10.8953 3.06771 12.5956 4.78 13.85C4.78103 13.847 4.78207 13.844 4.7831 13.841C5.18858 14.1369 5.63069 14.408 6.10419 14.6507C6.03614 14.9227 6 15.2072 6 15.5C6 16.76 6.67 17.87 7.67 18.5C7.46 19.11 6.97 20.96 8.3 22.05C9.91 23.38 11.66 22.97 12.56 22.69C12.8116 22.6126 13.0655 22.5076 13.3395 22.3944C14.0563 22.0981 14.9105 21.7451 16.22 21.68C17.6764 21.5995 18.9321 21.8104 19.5651 21.9167C19.7188 21.9425 19.8358 21.9622 19.91 21.97C19.91 21.97 20.86 21.97 20.97 21.04C21.08 20.1 20.03 19.97 20.03 19.97C20.03 19.97 18.43 19.7 16.39 19.71C14.9823 19.7145 13.7447 20.1595 12.703 20.5341C11.4434 20.987 10.4704 21.3368 9.83 20.68C9.18 20 9.39 19.36 9.6 19C11.3416 18.9542 12.7471 17.6481 12.9693 15.9673C13.4921 15.9319 14.0034 15.8699 14.5 15.78C18.6753 15.0244 21.7995 12.4293 21.9907 9.30406C21.9969 9.20324 22 9.10187 22 9ZM20 9C20 10.2554 19.2572 11.4047 18.032 12.2843C16.6998 13.2393 14.7966 13.8752 12.6542 13.9835C12.0881 12.8109 10.887 12 9.5 12C8.57261 12 7.72834 12.3625 7.10143 12.9533C6.61638 12.7181 6.17578 12.4489 5.78883 12.1513L5.79 12.15C4.6875 11.3034 4.02105 10.2243 4.00049 9.05571C4.00016 9.03717 4 9.01859 4 9C4 6.24 7.58 4 12 4C16.42 4 20 6.24 20 9ZM10.9988 15.5603C10.9933 15.6993 10.9689 15.8333 10.9281 15.96C10.7345 16.5641 10.1694 17 9.5 17C8.67 17 8 16.33 8 15.5C8 15.4718 8.00078 15.4437 8.00231 15.4159C8.04595 14.6266 8.69981 14 9.5 14C10.3284 14 11 14.6716 11 15.5C11 15.5202 10.9996 15.5403 10.9988 15.5603Z",
8
+ select: "M13,17H17V13H19V17H23V19H19V23H17V19H13V17M11,17V19H9V17H11M7,17V19H5V17H7M19,9V11H17V9H19M19,5V7H17V5H19M15,5V7H13V5H15M11,5V7H9V5H11M7,5V7H5V5H7M7,13V15H5V13H7M7,9V11H5V9H7Z",
9
+ cancel: "M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z",
10
+ "delete": "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M9,8H11V17H9V8M13,8H15V17H13V8Z",
11
+ clear: "M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z",
12
+ expand: "M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
13
+ collapse: "M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"
14
+ };
15
+
16
+ exports.ICONS = ICONS;