@neo4j-ndl/react 3.8.7 → 3.8.8

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 (126) hide show
  1. package/lib/cjs/graph-visualization/graph-viz-buttons.js +142 -0
  2. package/lib/cjs/graph-visualization/graph-viz-buttons.js.map +1 -0
  3. package/lib/cjs/graph-visualization/graph-viz-context.js +62 -0
  4. package/lib/cjs/graph-visualization/graph-viz-context.js.map +1 -0
  5. package/lib/cjs/graph-visualization/graph-viz-sidepanel.js +56 -0
  6. package/lib/cjs/graph-visualization/graph-viz-sidepanel.js.map +1 -0
  7. package/lib/cjs/graph-visualization/graph-viz.js +289 -0
  8. package/lib/cjs/graph-visualization/graph-viz.js.map +1 -0
  9. package/lib/cjs/graph-visualization/index.js +44 -0
  10. package/lib/cjs/graph-visualization/index.js.map +1 -0
  11. package/lib/cjs/graph-visualization/map-to-nvl-graph.js +167 -0
  12. package/lib/cjs/graph-visualization/map-to-nvl-graph.js.map +1 -0
  13. package/lib/cjs/graph-visualization/sidepanel-components/button-group.js +96 -0
  14. package/lib/cjs/graph-visualization/sidepanel-components/button-group.js.map +1 -0
  15. package/lib/cjs/graph-visualization/sidepanel-components/clickable-urls-test.js +214 -0
  16. package/lib/cjs/graph-visualization/sidepanel-components/clickable-urls-test.js.map +1 -0
  17. package/lib/cjs/graph-visualization/sidepanel-components/clickable-urls.js +46 -0
  18. package/lib/cjs/graph-visualization/sidepanel-components/clickable-urls.js.map +1 -0
  19. package/lib/cjs/graph-visualization/sidepanel-components/details-panel.js +87 -0
  20. package/lib/cjs/graph-visualization/sidepanel-components/details-panel.js.map +1 -0
  21. package/lib/cjs/graph-visualization/sidepanel-components/overview-panel.js +45 -0
  22. package/lib/cjs/graph-visualization/sidepanel-components/overview-panel.js.map +1 -0
  23. package/lib/cjs/graph-visualization/sidepanel-components/properties-table.js +49 -0
  24. package/lib/cjs/graph-visualization/sidepanel-components/properties-table.js.map +1 -0
  25. package/lib/cjs/graph-visualization/sidepanel-components/show-all.js +44 -0
  26. package/lib/cjs/graph-visualization/sidepanel-components/show-all.js.map +1 -0
  27. package/lib/cjs/graph-visualization/sidepanel-components/single-selection-sidepanel-contents.js +35 -0
  28. package/lib/cjs/graph-visualization/sidepanel-components/single-selection-sidepanel-contents.js.map +1 -0
  29. package/lib/cjs/graph-visualization/stories/graph-viz-barebones.story.js +93 -0
  30. package/lib/cjs/graph-visualization/stories/graph-viz-barebones.story.js.map +1 -0
  31. package/lib/cjs/graph-visualization/stories/graph-viz-custom.story.js +74 -0
  32. package/lib/cjs/graph-visualization/stories/graph-viz-custom.story.js.map +1 -0
  33. package/lib/cjs/graph-visualization/stories/graph-viz-default.story.js +93 -0
  34. package/lib/cjs/graph-visualization/stories/graph-viz-default.story.js.map +1 -0
  35. package/lib/cjs/graph-visualization/stories/graph-viz-maximalist.story.js +106 -0
  36. package/lib/cjs/graph-visualization/stories/graph-viz-maximalist.story.js.map +1 -0
  37. package/lib/cjs/graph-visualization/stories/graph-viz.stories.js +85 -0
  38. package/lib/cjs/graph-visualization/stories/graph-viz.stories.js.map +1 -0
  39. package/lib/cjs/graph-visualization/stories/index.js +44 -0
  40. package/lib/cjs/graph-visualization/stories/index.js.map +1 -0
  41. package/lib/cjs/graph-visualization/stories/story-data.js +89 -0
  42. package/lib/cjs/graph-visualization/stories/story-data.js.map +1 -0
  43. package/lib/cjs/graph-visualization/use-managed-selection-state.js +258 -0
  44. package/lib/cjs/graph-visualization/use-managed-selection-state.js.map +1 -0
  45. package/lib/cjs/graph-visualization/use-semi-controlled-state.js +38 -0
  46. package/lib/cjs/graph-visualization/use-semi-controlled-state.js.map +1 -0
  47. package/lib/cjs/graph-visualization/utils.js +30 -0
  48. package/lib/cjs/graph-visualization/utils.js.map +1 -0
  49. package/lib/cjs/index.js +1 -0
  50. package/lib/cjs/index.js.map +1 -1
  51. package/lib/esm/graph-visualization/graph-viz-buttons.js +127 -0
  52. package/lib/esm/graph-visualization/graph-viz-buttons.js.map +1 -0
  53. package/lib/esm/graph-visualization/graph-viz-context.js +58 -0
  54. package/lib/esm/graph-visualization/graph-viz-context.js.map +1 -0
  55. package/lib/esm/graph-visualization/graph-viz-sidepanel.js +52 -0
  56. package/lib/esm/graph-visualization/graph-viz-sidepanel.js.map +1 -0
  57. package/lib/esm/graph-visualization/graph-viz.js +259 -0
  58. package/lib/esm/graph-visualization/graph-viz.js.map +1 -0
  59. package/lib/esm/graph-visualization/index.js +25 -0
  60. package/lib/esm/graph-visualization/index.js.map +1 -0
  61. package/lib/esm/graph-visualization/map-to-nvl-graph.js +162 -0
  62. package/lib/esm/graph-visualization/map-to-nvl-graph.js.map +1 -0
  63. package/lib/esm/graph-visualization/sidepanel-components/button-group.js +69 -0
  64. package/lib/esm/graph-visualization/sidepanel-components/button-group.js.map +1 -0
  65. package/lib/esm/graph-visualization/sidepanel-components/clickable-urls-test.js +212 -0
  66. package/lib/esm/graph-visualization/sidepanel-components/clickable-urls-test.js.map +1 -0
  67. package/lib/esm/graph-visualization/sidepanel-components/clickable-urls.js +40 -0
  68. package/lib/esm/graph-visualization/sidepanel-components/clickable-urls.js.map +1 -0
  69. package/lib/esm/graph-visualization/sidepanel-components/details-panel.js +83 -0
  70. package/lib/esm/graph-visualization/sidepanel-components/details-panel.js.map +1 -0
  71. package/lib/esm/graph-visualization/sidepanel-components/overview-panel.js +41 -0
  72. package/lib/esm/graph-visualization/sidepanel-components/overview-panel.js.map +1 -0
  73. package/lib/esm/graph-visualization/sidepanel-components/properties-table.js +45 -0
  74. package/lib/esm/graph-visualization/sidepanel-components/properties-table.js.map +1 -0
  75. package/lib/esm/graph-visualization/sidepanel-components/show-all.js +41 -0
  76. package/lib/esm/graph-visualization/sidepanel-components/show-all.js.map +1 -0
  77. package/lib/esm/graph-visualization/sidepanel-components/single-selection-sidepanel-contents.js +31 -0
  78. package/lib/esm/graph-visualization/sidepanel-components/single-selection-sidepanel-contents.js.map +1 -0
  79. package/lib/esm/graph-visualization/stories/graph-viz-barebones.story.js +90 -0
  80. package/lib/esm/graph-visualization/stories/graph-viz-barebones.story.js.map +1 -0
  81. package/lib/esm/graph-visualization/stories/graph-viz-custom.story.js +71 -0
  82. package/lib/esm/graph-visualization/stories/graph-viz-custom.story.js.map +1 -0
  83. package/lib/esm/graph-visualization/stories/graph-viz-default.story.js +90 -0
  84. package/lib/esm/graph-visualization/stories/graph-viz-default.story.js.map +1 -0
  85. package/lib/esm/graph-visualization/stories/graph-viz-maximalist.story.js +103 -0
  86. package/lib/esm/graph-visualization/stories/graph-viz-maximalist.story.js.map +1 -0
  87. package/lib/esm/graph-visualization/stories/graph-viz.stories.js +82 -0
  88. package/lib/esm/graph-visualization/stories/graph-viz.stories.js.map +1 -0
  89. package/lib/esm/graph-visualization/stories/index.js +34 -0
  90. package/lib/esm/graph-visualization/stories/index.js.map +1 -0
  91. package/lib/esm/graph-visualization/stories/story-data.js +86 -0
  92. package/lib/esm/graph-visualization/stories/story-data.js.map +1 -0
  93. package/lib/esm/graph-visualization/use-managed-selection-state.js +255 -0
  94. package/lib/esm/graph-visualization/use-managed-selection-state.js.map +1 -0
  95. package/lib/esm/graph-visualization/use-semi-controlled-state.js +35 -0
  96. package/lib/esm/graph-visualization/use-semi-controlled-state.js.map +1 -0
  97. package/lib/esm/graph-visualization/utils.js +25 -0
  98. package/lib/esm/graph-visualization/utils.js.map +1 -0
  99. package/lib/esm/index.js +1 -0
  100. package/lib/esm/index.js.map +1 -1
  101. package/lib/types/graph-visualization/graph-viz-buttons.d.ts +49 -0
  102. package/lib/types/graph-visualization/graph-viz-context.d.ts +122 -0
  103. package/lib/types/graph-visualization/graph-viz-sidepanel.d.ts +32 -0
  104. package/lib/types/graph-visualization/graph-viz.d.ts +149 -0
  105. package/lib/types/graph-visualization/index.d.ts +24 -0
  106. package/lib/types/graph-visualization/map-to-nvl-graph.d.ts +37 -0
  107. package/lib/types/graph-visualization/sidepanel-components/button-group.d.ts +24 -0
  108. package/lib/types/graph-visualization/sidepanel-components/clickable-urls-test.d.ts +21 -0
  109. package/lib/types/graph-visualization/sidepanel-components/clickable-urls.d.ts +26 -0
  110. package/lib/types/graph-visualization/sidepanel-components/details-panel.d.ts +25 -0
  111. package/lib/types/graph-visualization/sidepanel-components/overview-panel.d.ts +21 -0
  112. package/lib/types/graph-visualization/sidepanel-components/properties-table.d.ts +31 -0
  113. package/lib/types/graph-visualization/sidepanel-components/show-all.d.ts +29 -0
  114. package/lib/types/graph-visualization/sidepanel-components/single-selection-sidepanel-contents.d.ts +21 -0
  115. package/lib/types/graph-visualization/stories/graph-viz-barebones.story.d.ts +23 -0
  116. package/lib/types/graph-visualization/stories/graph-viz-custom.story.d.ts +23 -0
  117. package/lib/types/graph-visualization/stories/graph-viz-default.story.d.ts +23 -0
  118. package/lib/types/graph-visualization/stories/graph-viz-maximalist.story.d.ts +23 -0
  119. package/lib/types/graph-visualization/stories/graph-viz.stories.d.ts +36 -0
  120. package/lib/types/graph-visualization/stories/index.d.ts +28 -0
  121. package/lib/types/graph-visualization/stories/story-data.d.ts +26 -0
  122. package/lib/types/graph-visualization/use-managed-selection-state.d.ts +114 -0
  123. package/lib/types/graph-visualization/use-semi-controlled-state.d.ts +21 -0
  124. package/lib/types/graph-visualization/utils.d.ts +23 -0
  125. package/lib/types/index.d.ts +1 -0
  126. package/package.json +7 -2
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DownloadButton = exports.ToggleSidePanelButton = exports.ZoomToFitButton = exports.ZoomOutButton = exports.ZoomInButton = exports.LassoSelectButton = exports.BoxSelectButton = exports.SingleSelectButton = exports.GroupButton = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ /**
9
+ *
10
+ * Copyright (c) "Neo4j"
11
+ * Neo4j Sweden AB [http://neo4j.com]
12
+ *
13
+ * This file is part of Neo4j.
14
+ *
15
+ * Neo4j is free software: you can redistribute it and/or modify
16
+ * it under the terms of the GNU General Public License as published by
17
+ * the Free Software Foundation, either version 3 of the License, or
18
+ * (at your option) any later version.
19
+ *
20
+ * This program is distributed in the hope that it will be useful,
21
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
+ * GNU General Public License for more details.
24
+ *
25
+ * You should have received a copy of the GNU General Public License
26
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
27
+ */
28
+ const react_1 = require("@neo4j-ndl/react");
29
+ const icons_1 = require("@neo4j-ndl/react/icons");
30
+ const classnames_1 = __importDefault(require("classnames"));
31
+ const react_2 = require("react");
32
+ const graph_viz_context_1 = require("./graph-viz-context");
33
+ const GroupButton = (props) => {
34
+ const { isActive, ariaLabel, isDisabled, tipContent, onClick, onMouseDown, tooltipPlacement, className, style, htmlAttributes, children, } = props;
35
+ return ((0, jsx_runtime_1.jsxs)(react_1.Tooltip, { type: "simple", placement: tooltipPlacement, children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsx)(react_1.IconButton, { ariaLabel: ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : tipContent, size: "small", className: className, style: style, isClean: true, isGrouped: true, isActive: isActive, isDisabled: isDisabled, onClick: onClick, htmlAttributes: Object.assign({ onMouseDown }, htmlAttributes), children: children }) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: tipContent })] }));
36
+ };
37
+ exports.GroupButton = GroupButton;
38
+ const targetIsTextInput = (target) => {
39
+ if (!(target instanceof HTMLElement)) {
40
+ return false;
41
+ }
42
+ return (target.isContentEditable || ['INPUT', 'TEXTAREA'].includes(target.tagName));
43
+ };
44
+ const isEditingText = (e) => {
45
+ return targetIsTextInput(e.target);
46
+ };
47
+ const GESTURE_KEYS = {
48
+ box: 'B',
49
+ lasso: 'L',
50
+ single: 'S',
51
+ };
52
+ const useRegisterKeyboardGestureSwitcher = (gesture) => {
53
+ const { setGesture } = (0, graph_viz_context_1.useGraphVizContext)();
54
+ const handleKeyDown = (0, react_2.useCallback)((evt) => {
55
+ if (!isEditingText(evt) && setGesture !== undefined) {
56
+ const upperKey = evt.key.toUpperCase();
57
+ if (upperKey === GESTURE_KEYS[gesture]) {
58
+ setGesture(gesture);
59
+ }
60
+ }
61
+ }, [gesture, setGesture]);
62
+ (0, react_2.useEffect)(() => {
63
+ document.addEventListener('keydown', handleKeyDown);
64
+ return () => {
65
+ document.removeEventListener('keydown', handleKeyDown);
66
+ };
67
+ }, [handleKeyDown]);
68
+ };
69
+ const NON_BREAKING_SPACE = '\u00A0';
70
+ const SingleSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
71
+ const { gesture, setGesture, interactionMode } = (0, graph_viz_context_1.useGraphVizContext)();
72
+ useRegisterKeyboardGestureSwitcher('single');
73
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { isActive: gesture === 'single', isDisabled: interactionMode !== 'select', ariaLabel: "Individual Select Button", tipContent: `Individual Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.single}`, onClick: () => {
74
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('single');
75
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-individual-select' }, htmlAttributes), className: className, style: style, children: (0, jsx_runtime_1.jsx)(icons_1.SelectIcon, { "aria-label": "Individual Select" }) }));
76
+ };
77
+ exports.SingleSelectButton = SingleSelectButton;
78
+ const BoxSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
79
+ const { gesture, setGesture, interactionMode } = (0, graph_viz_context_1.useGraphVizContext)();
80
+ useRegisterKeyboardGestureSwitcher('box');
81
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { isDisabled: interactionMode !== 'select' || setGesture === undefined, isActive: gesture === 'box', ariaLabel: "Box Select Button", tipContent: `Box Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.box}`, onClick: () => {
82
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('box');
83
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-box-select' }, htmlAttributes), className: className, style: style, children: (0, jsx_runtime_1.jsx)(icons_1.BoxSelectIcon, { "aria-label": "Box Select" }) }));
84
+ };
85
+ exports.BoxSelectButton = BoxSelectButton;
86
+ const LassoSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
87
+ const { gesture, setGesture, interactionMode } = (0, graph_viz_context_1.useGraphVizContext)();
88
+ useRegisterKeyboardGestureSwitcher('lasso');
89
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { isDisabled: interactionMode !== 'select' || setGesture === undefined, isActive: gesture === 'lasso', ariaLabel: "Lasso Select Button", tipContent: `Lasso Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.lasso}`, onClick: () => {
90
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('lasso');
91
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-lasso-select' }, htmlAttributes), className: className, style: style, children: (0, jsx_runtime_1.jsx)(icons_1.LassoIcon, { "aria-label": "Lasso Select" }) }));
92
+ };
93
+ exports.LassoSelectButton = LassoSelectButton;
94
+ const ZoomInButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
95
+ const { nvlInstance } = (0, graph_viz_context_1.useGraphVizContext)();
96
+ const handleZoomIn = (0, react_2.useCallback)(() => {
97
+ var _a, _b;
98
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.setZoom(((_b = nvlInstance.current) === null || _b === void 0 ? void 0 : _b.getScale()) * 1.3);
99
+ }, [nvlInstance]);
100
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { onClick: handleZoomIn, tipContent: "Zoom in", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: (0, jsx_runtime_1.jsx)(icons_1.MagnifyingGlassPlusIconOutline, {}) }));
101
+ };
102
+ exports.ZoomInButton = ZoomInButton;
103
+ const ZoomOutButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
104
+ const { nvlInstance } = (0, graph_viz_context_1.useGraphVizContext)();
105
+ const handleZoomOut = (0, react_2.useCallback)(() => {
106
+ var _a, _b;
107
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.setZoom(((_b = nvlInstance.current) === null || _b === void 0 ? void 0 : _b.getScale()) * 0.7);
108
+ }, [nvlInstance]);
109
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { onClick: handleZoomOut, tipContent: "Zoom out", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: (0, jsx_runtime_1.jsx)(icons_1.MagnifyingGlassMinusIconOutline, {}) }));
110
+ };
111
+ exports.ZoomOutButton = ZoomOutButton;
112
+ const ZoomToFitButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
113
+ const { nvlInstance } = (0, graph_viz_context_1.useGraphVizContext)();
114
+ const handleZoomToFit = (0, react_2.useCallback)(() => {
115
+ var _a, _b;
116
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.fit((_b = nvlInstance.current) === null || _b === void 0 ? void 0 : _b.getNodes().map((node) => node.id));
117
+ }, [nvlInstance]);
118
+ return ((0, jsx_runtime_1.jsx)(exports.GroupButton, { onClick: handleZoomToFit, tipContent: "Zoom to fit", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: (0, jsx_runtime_1.jsx)(icons_1.FitToScreenIcon, {}) }));
119
+ };
120
+ exports.ZoomToFitButton = ZoomToFitButton;
121
+ const ToggleSidePanelButton = ({ className, htmlAttributes, style, tooltipPlacement, }) => {
122
+ const { sidepanel } = (0, graph_viz_context_1.useGraphVizContext)();
123
+ if (!sidepanel) {
124
+ throw new Error('Using the ToggleSidePanelButton requires having a sidepanel');
125
+ }
126
+ const { isSidePanelOpen, setIsSidePanelOpen } = sidepanel;
127
+ return ((0, jsx_runtime_1.jsxs)(react_1.Tooltip, { placement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'bottom', type: "simple", children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsx)(react_1.IconButton, { size: "small", onClick: () => setIsSidePanelOpen === null || setIsSidePanelOpen === void 0 ? void 0 : setIsSidePanelOpen(!isSidePanelOpen), isFloating: true, ariaLabel: "Toggle node properties panel", className: (0, classnames_1.default)('ndl-graph-viz-toggle-sidepanel', className), style: style, htmlAttributes: Object.assign({ 'aria-pressed': isSidePanelOpen }, htmlAttributes), children: (0, jsx_runtime_1.jsx)(icons_1.SidebarLineRightIcon, { className: "ndl-graph-viz-toggle-icon" }) }) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: (0, jsx_runtime_1.jsx)(react_1.Typography, { variant: "body-small", children: isSidePanelOpen ? 'Close panel' : 'Open panel' }) })] }));
128
+ };
129
+ exports.ToggleSidePanelButton = ToggleSidePanelButton;
130
+ const DownloadButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
131
+ const { nvlInstance } = (0, graph_viz_context_1.useGraphVizContext)();
132
+ const [isDownloadMenuOpen, setOpen] = (0, react_2.useState)(false);
133
+ const closeFileMenu = () => setOpen(false);
134
+ const downloadButtonRef = (0, react_2.useRef)(null);
135
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(react_1.Tooltip, { type: "simple", placement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'bottom', children: [(0, jsx_runtime_1.jsx)(react_1.Tooltip.Trigger, { hasButtonWrapper: true, children: (0, jsx_runtime_1.jsx)(react_1.IconButton, { ref: downloadButtonRef, size: "small", isFloating: true, onClick: () => setOpen((o) => !o), ariaLabel: "Download", className: className, style: style, htmlAttributes: htmlAttributes, children: (0, jsx_runtime_1.jsx)(icons_1.ArrowDownTrayIconOutline, {}) }) }), (0, jsx_runtime_1.jsx)(react_1.Tooltip.Content, { children: (0, jsx_runtime_1.jsx)(react_1.Typography, { variant: "body-small", children: " Download " }) })] }), (0, jsx_runtime_1.jsx)(react_1.Menu, { isOpen: isDownloadMenuOpen, onClose: closeFileMenu, anchorRef: downloadButtonRef, children: (0, jsx_runtime_1.jsx)(react_1.Menu.Items, { children: (0, jsx_runtime_1.jsx)(react_1.Menu.Item, { title: "Download as PNG", onClick: () => {
136
+ var _a;
137
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.saveToFile({});
138
+ closeFileMenu();
139
+ } }) }) })] }));
140
+ };
141
+ exports.DownloadButton = DownloadButton;
142
+ //# sourceMappingURL=graph-viz-buttons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-viz-buttons.js","sourceRoot":"","sources":["../../../src/graph-visualization/graph-viz-buttons.tsx"],"names":[],"mappings":";;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAM0B;AAC1B,kDASgC;AAChC,4DAA2C;AAC3C,iCAOe;AAGf,2DAAuE;AAqBhE,MAAM,WAAW,GAAG,CAAC,KAA0B,EAAE,EAAE;IACxD,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,cAAc,EACd,QAAQ,GACT,GAAG,KAAK,CAAC;IACV,OAAO,CACL,wBAAC,eAAO,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,gBAAgB,aAChD,uBAAC,eAAO,CAAC,OAAO,IAAC,gBAAgB,kBAC/B,uBAAC,kBAAU,IACT,SAAS,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,UAAU,EAClC,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,QACP,SAAS,QACT,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,cAAc,kBACZ,WAAW,IACR,cAAc,aAGlB,QAAQ,GACE,GACG,EAClB,uBAAC,eAAO,CAAC,OAAO,cAAE,UAAU,GAAmB,IACvC,CACX,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,WAAW,eAsCtB;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAA0B,EAAW,EAAE;IAChE,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,MAAM,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAW,EAAE;IAClD,OAAO,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,YAAY,GAA4B;IAC5C,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF,MAAM,kCAAkC,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,CAAC,GAAkB,EAAE,EAAE;QACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,QAAQ,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,UAAU,CAAC,CACtB,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE7B,MAAM,kBAAkB,GAAG,CAAC,EACjC,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IACtE,kCAAkC,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,CACL,uBAAC,mBAAW,IACV,QAAQ,EAAE,OAAO,KAAK,QAAQ,EAC9B,UAAU,EAAE,eAAe,KAAK,QAAQ,EACxC,SAAS,EAAC,0BAA0B,EACpC,UAAU,EAAE,qBAAqB,kBAAkB,IAAI,YAAY,CAAC,MAAM,EAAE,EAC5E,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,QAAQ,CAAC,CAAC;QACzB,CAAC,EACD,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,OAAO,EAC7C,cAAc,kBACZ,aAAa,EAAE,2BAA2B,IACvC,cAAc,GAEnB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,YAEZ,uBAAC,kBAAU,kBAAY,mBAAmB,GAAG,GACjC,CACf,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,kBAAkB,sBA6B7B;AAEK,MAAM,eAAe,GAAG,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IACtE,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,CACL,uBAAC,mBAAW,IACV,UAAU,EAAE,eAAe,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EACpE,QAAQ,EAAE,OAAO,KAAK,KAAK,EAC3B,SAAS,EAAC,mBAAmB,EAC7B,UAAU,EAAE,cAAc,kBAAkB,IAAI,YAAY,CAAC,GAAG,EAAE,EAClE,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,CAAC;QACtB,CAAC,EACD,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,OAAO,EAC7C,cAAc,kBACZ,aAAa,EAAE,oBAAoB,IAChC,cAAc,GAEnB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,YAEZ,uBAAC,qBAAa,kBAAY,YAAY,GAAG,GAC7B,CACf,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IACtE,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAE5C,OAAO,CACL,uBAAC,mBAAW,IACV,UAAU,EAAE,eAAe,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EACpE,QAAQ,EAAE,OAAO,KAAK,OAAO,EAC7B,SAAS,EAAC,qBAAqB,EAC/B,UAAU,EAAE,gBAAgB,kBAAkB,IAAI,YAAY,CAAC,KAAK,EAAE,EACtE,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,OAAO,CAAC,CAAC;QACxB,CAAC,EACD,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,OAAO,EAC7C,cAAc,kBACZ,aAAa,EAAE,sBAAsB,IAClC,cAAc,GAEnB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,YAEZ,uBAAC,iBAAS,kBAAY,cAAc,GAAG,GAC3B,CACf,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,iBAAiB,qBA6B5B;AAEK,MAAM,YAAY,GAAG,CAAC,EAC3B,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAE7C,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;;QACpC,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAA,MAAA,WAAW,CAAC,OAAO,0CAAE,QAAQ,EAAE,IAAG,GAAG,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,uBAAC,mBAAW,IACV,OAAO,EAAE,YAAY,EACrB,UAAU,EAAC,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,MAAM,YAE5C,uBAAC,sCAA8B,KAAG,GACtB,CACf,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,YAAY,gBAwBvB;AAEK,MAAM,aAAa,GAAG,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAE7C,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;;QACrC,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAA,MAAA,WAAW,CAAC,OAAO,0CAAE,QAAQ,EAAE,IAAG,GAAG,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,uBAAC,mBAAW,IACV,OAAO,EAAE,aAAa,EACtB,UAAU,EAAC,UAAU,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,MAAM,YAE5C,uBAAC,uCAA+B,KAAG,GACvB,CACf,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,aAAa,iBAwBxB;AAEK,MAAM,eAAe,GAAG,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAE7C,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;;QACvC,MAAA,WAAW,CAAC,OAAO,0CAAE,GAAG,CACtB,MAAA,WAAW,CAAC,OAAO,0CAAE,QAAQ,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CACvD,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,uBAAC,mBAAW,IACV,OAAO,EAAE,eAAe,EACxB,UAAU,EAAC,aAAa,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,MAAM,YAE5C,uBAAC,uBAAe,KAAG,GACP,CACf,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,eAAe,mBA0B1B;AAEK,MAAM,qBAAqB,GAAG,CAAC,EACpC,SAAS,EACT,cAAc,EACd,KAAK,EACL,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC1D,OAAO,CACL,wBAAC,eAAO,IAAC,SAAS,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,EAAE,IAAI,EAAC,QAAQ,aAC7D,uBAAC,eAAO,CAAC,OAAO,IAAC,gBAAgB,kBAC/B,uBAAC,kBAAU,IACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAG,CAAC,eAAe,CAAC,EACrD,UAAU,QACV,SAAS,EAAC,8BAA8B,EACxC,SAAS,EAAE,IAAA,oBAAE,EAAC,gCAAgC,EAAE,SAAS,CAAC,EAC1D,KAAK,EAAE,KAAK,EACZ,cAAc,kBACZ,cAAc,EAAE,eAAe,IAC5B,cAAc,aAGnB,uBAAC,4BAAoB,IAAC,SAAS,EAAC,2BAA2B,GAAG,GACnD,GACG,EAClB,uBAAC,eAAO,CAAC,OAAO,cACd,uBAAC,kBAAU,IAAC,OAAO,EAAC,YAAY,YAC7B,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GACpC,GACG,IACV,CACX,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,qBAAqB,yBAsChC;AAEK,MAAM,cAAc,GAAG,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,cAAc,EACd,gBAAgB,GACI,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAE7C,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAoB,IAAI,CAAC,CAAC;IAC1D,OAAO,CACL,6DACE,wBAAC,eAAO,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,aAC5D,uBAAC,eAAO,CAAC,OAAO,IAAC,gBAAgB,kBAC/B,uBAAC,kBAAU,IACT,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAC,OAAO,EACZ,UAAU,QACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,SAAS,EAAC,UAAU,EACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,YAE9B,uBAAC,gCAAwB,KAAG,GACjB,GACG,EAClB,uBAAC,eAAO,CAAC,OAAO,cACd,uBAAC,kBAAU,IAAC,OAAO,EAAC,YAAY,2BAAwB,GACxC,IACV,EACV,uBAAC,YAAI,IACH,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,iBAAiB,YAE5B,uBAAC,YAAI,CAAC,KAAK,cACT,uBAAC,YAAI,CAAC,IAAI,IACR,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,GAAG,EAAE;;4BACZ,MAAA,WAAW,CAAC,OAAO,0CAAE,UAAU,CAAC,EAAE,CAAC,CAAC;4BACpC,aAAa,EAAE,CAAC;wBAClB,CAAC,GACD,GACS,GACR,IACN,CACJ,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,cAAc,kBAiDzB"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ *
4
+ * Copyright (c) "Neo4j"
5
+ * Neo4j Sweden AB [http://neo4j.com]
6
+ *
7
+ * This file is part of Neo4j.
8
+ *
9
+ * Neo4j is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.useGraphVizContext = exports.GraphVizContext = void 0;
24
+ const react_1 = require("react");
25
+ exports.GraphVizContext = (0, react_1.createContext)(undefined);
26
+ /**
27
+ * Hook to access the graph visualization context.
28
+ *
29
+ * This hook is used to implement custom UI components like buttons, panels, and controls
30
+ * that need access to data and functionality from the graph visualization component.
31
+ * @see {@link GraphVizContextData}
32
+ *
33
+ * @returns The graph visualization context containing NVL instance, sidepanel, gestures, and graph data
34
+ * @throws Error if used outside of a GraphVizContext provider
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * const NodeLoggerButton = () => {
39
+ * const { selected } = useGraphVizContext();
40
+ *
41
+ * const handleClick = () => {
42
+ * console.log('Selected nodes:', selected.nodeIds);
43
+ * };
44
+ *
45
+ * return (
46
+ * <button onClick={handleClick}>
47
+ * Log Selected Nodes ({selected.nodeIds.length})
48
+ * </button>
49
+ * );
50
+ * };
51
+ * ```
52
+ * @alpha
53
+ */
54
+ const useGraphVizContext = () => {
55
+ const context = (0, react_1.useContext)(exports.GraphVizContext);
56
+ if (!context) {
57
+ throw new Error('useGraphVizContext must be used within a GraphVizContext');
58
+ }
59
+ return context;
60
+ };
61
+ exports.useGraphVizContext = useGraphVizContext;
62
+ //# sourceMappingURL=graph-viz-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-viz-context.js","sourceRoot":"","sources":["../../../src/graph-visualization/graph-viz-context.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAIH,iCAAkD;AAuErC,QAAA,eAAe,GAAG,IAAA,qBAAa,EAC1C,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACI,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,uBAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphVizSidepanel = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ /**
6
+ *
7
+ * Copyright (c) "Neo4j"
8
+ * Neo4j Sweden AB [http://neo4j.com]
9
+ *
10
+ * This file is part of Neo4j.
11
+ *
12
+ * Neo4j is free software: you can redistribute it and/or modify
13
+ * it under the terms of the GNU General Public License as published by
14
+ * the Free Software Foundation, either version 3 of the License, or
15
+ * (at your option) any later version.
16
+ *
17
+ * This program is distributed in the hope that it will be useful,
18
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ * GNU General Public License for more details.
21
+ *
22
+ * You should have received a copy of the GNU General Public License
23
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
24
+ */
25
+ const re_resizable_1 = require("re-resizable");
26
+ const GraphVizSidepanel = ({ sidepanel }) => {
27
+ const { children, isSidePanelOpen, sidePanelWidth, onSidePanelResize, minWidth = 230, } = sidepanel;
28
+ if (!isSidePanelOpen) {
29
+ return null;
30
+ }
31
+ return ((0, jsx_runtime_1.jsx)(re_resizable_1.Resizable, { defaultSize: {
32
+ height: '100%',
33
+ width: sidePanelWidth !== null && sidePanelWidth !== void 0 ? sidePanelWidth : 400,
34
+ }, className: "ndl-graph-resizable", minWidth: minWidth, maxWidth: "66%", enable: {
35
+ bottom: false,
36
+ bottomLeft: false,
37
+ bottomRight: false,
38
+ left: true,
39
+ right: false,
40
+ top: false,
41
+ topLeft: false,
42
+ topRight: false,
43
+ }, handleClasses: { left: 'ndl-sidepanel-handle' }, onResizeStop: (_e, _dir, ref) => {
44
+ onSidePanelResize(ref.getBoundingClientRect().width);
45
+ }, children: (0, jsx_runtime_1.jsx)("div", { className: "ndl-graph-viz-sidepanel-content", children: children }) }));
46
+ };
47
+ exports.GraphVizSidepanel = GraphVizSidepanel;
48
+ const Title = ({ children }) => {
49
+ return ((0, jsx_runtime_1.jsx)("div", { className: "ndl-graph-viz-sidepanel-title ndl-grid-area-title", children: children }));
50
+ };
51
+ exports.GraphVizSidepanel.Title = Title;
52
+ const Content = ({ children }) => {
53
+ return (0, jsx_runtime_1.jsx)("section", { className: "ndl-grid-area-content", children: children });
54
+ };
55
+ exports.GraphVizSidepanel.Content = Content;
56
+ //# sourceMappingURL=graph-viz-sidepanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-viz-sidepanel.js","sourceRoot":"","sources":["../../../src/graph-visualization/graph-viz-sidepanel.tsx"],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+CAAyC;AAIlC,MAAM,iBAAiB,GAAG,CAAC,EAAE,SAAS,EAA4B,EAAE,EAAE;IAC3E,MAAM,EACJ,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,QAAQ,GAAG,GAAG,GACf,GAAG,SAAS,CAAC;IAEd,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,uBAAC,wBAAS,IACR,WAAW,EAAE;YACX,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,GAAG;SAC7B,EACD,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAC,KAAK,EACd,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,KAAK;YACV,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;SAChB,EACD,aAAa,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAC/C,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC9B,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,YAED,gCAAK,SAAS,EAAC,iCAAiC,YAAE,QAAQ,GAAO,GACvD,CACb,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,iBAAiB,qBAwC5B;AAEF,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC5D,OAAO,CACL,gCAAK,SAAS,EAAC,mDAAmD,YAC/D,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC;AACF,yBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AAEhC,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC9D,OAAO,oCAAS,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAW,CAAC;AACzE,CAAC,CAAC;AACF,yBAAiB,CAAC,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.DEFAULT_NVL_OPTIONS = void 0;
41
+ exports.GraphViz = GraphViz;
42
+ const jsx_runtime_1 = require("react/jsx-runtime");
43
+ /**
44
+ *
45
+ * Copyright (c) "Neo4j"
46
+ * Neo4j Sweden AB [http://neo4j.com]
47
+ *
48
+ * This file is part of Neo4j.
49
+ *
50
+ * Neo4j is free software: you can redistribute it and/or modify
51
+ * it under the terms of the GNU General Public License as published by
52
+ * the Free Software Foundation, either version 3 of the License, or
53
+ * (at your option) any later version.
54
+ *
55
+ * This program is distributed in the hope that it will be useful,
56
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
57
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58
+ * GNU General Public License for more details.
59
+ *
60
+ * You should have received a copy of the GNU General Public License
61
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
62
+ */
63
+ const base_1 = require("@neo4j-ndl/base");
64
+ const react_1 = require("@neo4j-ndl/react");
65
+ const react_2 = require("@neo4j-nvl/react");
66
+ const classnames_1 = __importDefault(require("classnames"));
67
+ const react_3 = __importStar(require("react"));
68
+ const graph_viz_buttons_1 = require("./graph-viz-buttons");
69
+ const graph_viz_context_1 = require("./graph-viz-context");
70
+ const graph_viz_sidepanel_1 = require("./graph-viz-sidepanel");
71
+ const map_to_nvl_graph_1 = require("./map-to-nvl-graph");
72
+ const single_selection_sidepanel_contents_1 = require("./sidepanel-components/single-selection-sidepanel-contents");
73
+ const use_managed_selection_state_1 = require("./use-managed-selection-state");
74
+ const use_semi_controlled_state_1 = require("./use-semi-controlled-state");
75
+ const PLACEMENTS = {
76
+ 'bottom-left': 'ndl-graph-viz-interaction-island ndl-bottom-left',
77
+ 'bottom-right': 'ndl-graph-viz-interaction-island ndl-bottom-right',
78
+ 'top-left': 'ndl-graph-viz-interaction-island ndl-top-left',
79
+ 'top-right': 'ndl-graph-viz-interaction-island ndl-top-right',
80
+ };
81
+ const InteractionIsland = ({ children, className, placement, }) => {
82
+ return (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(PLACEMENTS[placement], className), children: children });
83
+ };
84
+ exports.DEFAULT_NVL_OPTIONS = {
85
+ disableTelemetry: true,
86
+ disableWebGL: true,
87
+ maxZoom: 3,
88
+ minZoom: 0.05,
89
+ relationshipThreshold: 0.55,
90
+ useWebGL: false,
91
+ };
92
+ const DEFAULT_COMPONENTS = {
93
+ bottomLeftIsland: null,
94
+ bottomRightIsland: ((0, jsx_runtime_1.jsxs)(react_1.IconButtonArray, { orientation: "vertical", isFloating: true, children: [(0, jsx_runtime_1.jsx)(graph_viz_buttons_1.ZoomInButton, {}), " ", (0, jsx_runtime_1.jsx)(graph_viz_buttons_1.ZoomOutButton, {}), " ", (0, jsx_runtime_1.jsx)(graph_viz_buttons_1.ZoomToFitButton, {})] })),
95
+ topLeftIsland: null,
96
+ topRightIsland: ((0, jsx_runtime_1.jsxs)("div", { className: "ndl-graph-viz-default-download-group", children: [(0, jsx_runtime_1.jsx)(graph_viz_buttons_1.DownloadButton, {}), " ", (0, jsx_runtime_1.jsx)(graph_viz_buttons_1.ToggleSidePanelButton, {})] })),
97
+ };
98
+ /**
99
+ * A comprehensive graph visualization component for rendering Neo4j-style graphs with interactive features.
100
+ *
101
+ * @remarks
102
+ * This component provides a complete graph visualization solution with built-in interaction modes,
103
+ * selection handling, zoom controls, and an optional sidepanel. It wraps the NVL (Neo4j Visualization Library)
104
+ * with additional UI controls and state management.
105
+ *
106
+ * The component supports various interaction modes including single selection, box selection, and lasso selection.
107
+ * It also provides customizable UI islands for placing controls at different corners of the visualization.
108
+ *
109
+ * @example
110
+ * Basic usage:
111
+ * ```tsx
112
+ * <GraphViz
113
+ * nodes={nodes}
114
+ * rels={relationships}
115
+ * selected={selection}
116
+ * setSelected={setSelection}
117
+ * />
118
+ * ```
119
+ *
120
+ * @example
121
+ * With custom controls:
122
+ * ```tsx
123
+ * <GraphViz
124
+ * nodes={nodes}
125
+ * rels={relationships}
126
+ * topRightIsland={<CustomControls />}
127
+ * sidepanel={{
128
+ * contents: <CustomSidepanel />,
129
+ * isSidePanelOpen: true,
130
+ * setIsSidePanelOpen: setSidepanelOpen
131
+ * sidePanelWidth: 400,
132
+ * onSidePanelResize: setSidepanelWidth,
133
+ * }}
134
+ * />
135
+ * ```
136
+ *
137
+ * @param props - {@link GraphVizProps}
138
+ * @returns A React component that renders an interactive graph visualization
139
+ *
140
+ * @alpha
141
+ */
142
+ function GraphViz(_a) {
143
+ var _b, _c;
144
+ var { nvlRef: rawNvlRef, nvlCallbacks, nvlOptions, sidepanel: rawSidepanel, nodes: rawNodes, rels: rawRels, topLeftIsland = DEFAULT_COMPONENTS.topLeftIsland, topRightIsland = DEFAULT_COMPONENTS.topRightIsland, bottomLeftIsland = DEFAULT_COMPONENTS.bottomLeftIsland, bottomRightIsland = DEFAULT_COMPONENTS.bottomRightIsland, gesture = 'single', setGesture, selected: rawSelected, setSelected: rawSetSelected, interactionMode: rawInteractionMode, setInteractionMode: rawSetInteractionMode, mouseEventCallbacks = {}, className, style, htmlAttributes, ref, as } = _a, restProps = __rest(_a, ["nvlRef", "nvlCallbacks", "nvlOptions", "sidepanel", "nodes", "rels", "topLeftIsland", "topRightIsland", "bottomLeftIsland", "bottomRightIsland", "gesture", "setGesture", "selected", "setSelected", "interactionMode", "setInteractionMode", "mouseEventCallbacks", "className", "style", "htmlAttributes", "ref", "as"]);
145
+ const nvlRef = (0, react_3.useMemo)(() => rawNvlRef !== null && rawNvlRef !== void 0 ? rawNvlRef : react_3.default.createRef(), [rawNvlRef]);
146
+ const instanceId = (0, react_3.useId)();
147
+ // Respect NDL theme changes
148
+ const { theme } = (0, react_1.useNeedleTheme)();
149
+ const { bg, border } = base_1.tokens.theme[theme].palette.neutral;
150
+ // key required for nvl react responsiveness
151
+ const [key, setKey] = (0, react_3.useState)(0);
152
+ (0, react_3.useEffect)(() => {
153
+ setKey((prevKey) => prevKey + 1);
154
+ }, [theme]);
155
+ // Semi-control interaction mode and selection state
156
+ const [interactionMode, setInteractionMode] = (0, use_semi_controlled_state_1.useSemicontrolledState)(rawInteractionMode !== null && rawInteractionMode !== void 0 ? rawInteractionMode : 'select', rawSetInteractionMode);
157
+ const [selected, setSelected] = (0, use_semi_controlled_state_1.useSemicontrolledState)(rawSelected !== null && rawSelected !== void 0 ? rawSelected : { nodeIds: [], relationshipIds: [] }, rawSetSelected);
158
+ const nvlGraph = (0, react_3.useMemo)(() => (0, map_to_nvl_graph_1.mapToNvlGraph)(rawNodes, rawRels), [rawNodes, rawRels]);
159
+ const { nodesWithSelection, relsWithSelection, wrappedMouseEventCallbacks } = (0, use_managed_selection_state_1.useManagedSelectionState)({
160
+ gesture,
161
+ interactionMode,
162
+ mouseEventCallbacks,
163
+ nvlGraph,
164
+ selected,
165
+ setInteractionMode,
166
+ setSelected,
167
+ });
168
+ const [isSidePanelOpen, setIsSidePanelOpen] = (0, use_semi_controlled_state_1.useSemicontrolledState)((_b = rawSidepanel === null || rawSidepanel === void 0 ? void 0 : rawSidepanel.isSidePanelOpen) !== null && _b !== void 0 ? _b : true, rawSidepanel === null || rawSidepanel === void 0 ? void 0 : rawSidepanel.setIsSidePanelOpen);
169
+ const [sidePanelWidth, setSidePanelWidth] = (0, use_semi_controlled_state_1.useSemicontrolledState)((_c = rawSidepanel === null || rawSidepanel === void 0 ? void 0 : rawSidepanel.sidePanelWidth) !== null && _c !== void 0 ? _c : 400, rawSidepanel === null || rawSidepanel === void 0 ? void 0 : rawSidepanel.onSidePanelResize);
170
+ const sidepanel = (0, react_3.useMemo)(() => {
171
+ if (rawSidepanel === undefined) {
172
+ return {
173
+ children: (0, jsx_runtime_1.jsx)(single_selection_sidepanel_contents_1.SingleSelectionSidepanelContents, {}),
174
+ isSidePanelOpen,
175
+ onSidePanelResize: setSidePanelWidth,
176
+ setIsSidePanelOpen,
177
+ sidePanelWidth,
178
+ };
179
+ }
180
+ return rawSidepanel;
181
+ }, [
182
+ rawSidepanel,
183
+ isSidePanelOpen,
184
+ setIsSidePanelOpen,
185
+ sidePanelWidth,
186
+ setSidePanelWidth,
187
+ ]);
188
+ const Component = as !== null && as !== void 0 ? as : 'div';
189
+ return ((0, jsx_runtime_1.jsx)(Component, Object.assign({ ref: ref, className: (0, classnames_1.default)('ndl-graph-viz-container', className), style: style }, htmlAttributes, { children: (0, jsx_runtime_1.jsxs)(graph_viz_context_1.GraphVizContext.Provider, { value: {
190
+ gesture,
191
+ interactionMode,
192
+ nvlGraph,
193
+ nvlInstance: nvlRef,
194
+ selected,
195
+ setGesture,
196
+ sidepanel,
197
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "ndl-graph-viz", children: [(0, jsx_runtime_1.jsx)(react_2.InteractiveNvlWrapper, Object.assign({ layout: "d3Force", nodes: nodesWithSelection, rels: relsWithSelection, nvlOptions: Object.assign(Object.assign(Object.assign({}, exports.DEFAULT_NVL_OPTIONS), { instanceId, styling: {
198
+ defaultRelationshipColor: border.strongest,
199
+ dropShadowColor: border.weak,
200
+ selectedInnerBorderColor: bg.default,
201
+ } }), nvlOptions), nvlCallbacks: Object.assign({ onLayoutComputing(isComputing) {
202
+ var _a;
203
+ if (!isComputing) {
204
+ (_a = nvlRef.current) === null || _a === void 0 ? void 0 : _a.fit(nvlRef.current.getNodes().map((neighbors) => neighbors.id), { noPan: true });
205
+ }
206
+ } }, nvlCallbacks), mouseEventCallbacks: wrappedMouseEventCallbacks, ref: nvlRef }, restProps), key), topLeftIsland !== null && ((0, jsx_runtime_1.jsx)(InteractionIsland, { placement: "top-left", children: topLeftIsland })), topRightIsland !== null && ((0, jsx_runtime_1.jsx)(InteractionIsland, { placement: "top-right", children: topRightIsland })), bottomLeftIsland !== null && ((0, jsx_runtime_1.jsx)(InteractionIsland, { placement: "bottom-left", children: bottomLeftIsland })), bottomRightIsland !== null && ((0, jsx_runtime_1.jsx)(InteractionIsland, { placement: "bottom-right", children: bottomRightIsland }))] }), sidepanel && (0, jsx_runtime_1.jsx)(graph_viz_sidepanel_1.GraphVizSidepanel, { sidepanel: sidepanel })] }) })));
207
+ }
208
+ /**
209
+ * Zoom in button for use within a GraphViz component.
210
+ *
211
+ * @remarks
212
+ * Increases zoom level by 1.3x
213
+ *
214
+ * @alpha
215
+ */
216
+ GraphViz.ZoomInButton = graph_viz_buttons_1.ZoomInButton;
217
+ /**
218
+ * Zoom out button for use within a GraphViz component.
219
+ *
220
+ * @remarks
221
+ * Decreases zoom level by 0.7x
222
+ *
223
+ * @alpha
224
+ */
225
+ GraphViz.ZoomOutButton = graph_viz_buttons_1.ZoomOutButton;
226
+ /**
227
+ * Zoom to fit button for use within a GraphViz component.
228
+ *
229
+ * @remarks
230
+ * Automatically adjusts zoom and pan to show all nodes and relationships
231
+ *
232
+ * @alpha
233
+ */
234
+ GraphViz.ZoomToFitButton = graph_viz_buttons_1.ZoomToFitButton;
235
+ /**
236
+ * Sidepanel toggle button for use within a GraphViz component.
237
+ *
238
+ * @remarks
239
+ * Shows or hides the sidepanel containing node and relationship details.
240
+ * Requires a sidepanel to be configured in the GraphViz component.
241
+ *
242
+ * @throws Error when used without a configured sidepanel
243
+ *
244
+ * @alpha
245
+ */
246
+ GraphViz.ToggleSidePanelButton = graph_viz_buttons_1.ToggleSidePanelButton;
247
+ /**
248
+ * Download button for use within a GraphViz component.
249
+ *
250
+ * @remarks
251
+ * Opens a dropdown menu with download options. Currently supports PNG format.
252
+ * Captures the current visualization state including zoom level.
253
+ *
254
+ * @alpha
255
+ */
256
+ GraphViz.DownloadButton = graph_viz_buttons_1.DownloadButton;
257
+ /**
258
+ * Box selection button for use within a GraphViz component.
259
+ *
260
+ * @remarks
261
+ * Enables box selection mode where dragging creates a rectangular selection area.
262
+ * Disabled unless the `setGesture` callback is passed.
263
+ * Shows active state when enabled and supports keyboard shortcut 'B'.
264
+ *
265
+ * @alpha
266
+ */
267
+ GraphViz.BoxSelectButton = graph_viz_buttons_1.BoxSelectButton;
268
+ /**
269
+ * Lasso selection button for use within a GraphViz component.
270
+ *
271
+ * @remarks
272
+ * Enables lasso selection mode where dragging creates a free-form selection area.
273
+ * Disabled unless the `setGesture` callback is passed.
274
+ * Shows active state when enabled and supports keyboard shortcut 'L'.
275
+ *
276
+ * @alpha
277
+ */
278
+ GraphViz.LassoSelectButton = graph_viz_buttons_1.LassoSelectButton;
279
+ /**
280
+ * Single node selection button for use within a GraphViz component.
281
+ *
282
+ * @remarks
283
+ * Enables single selection mode where clicking selects individual nodes or relationships.
284
+ * Shows active state when enabled and supports keyboard shortcut 'S'.
285
+ *
286
+ * @alpha
287
+ */
288
+ GraphViz.SingleSelectButton = graph_viz_buttons_1.SingleSelectButton;
289
+ //# sourceMappingURL=graph-viz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-viz.js","sourceRoot":"","sources":["../../../src/graph-visualization/graph-viz.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ *
4
+ * Copyright (c) "Neo4j"
5
+ * Neo4j Sweden AB [http://neo4j.com]
6
+ *
7
+ * This file is part of Neo4j.
8
+ *
9
+ * Neo4j is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
34
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useGraphVizContext = exports.GraphViz = void 0;
38
+ __exportStar(require("@neo4j-nvl/base"), exports);
39
+ __exportStar(require("@neo4j-nvl/react"), exports);
40
+ var graph_viz_1 = require("./graph-viz");
41
+ Object.defineProperty(exports, "GraphViz", { enumerable: true, get: function () { return graph_viz_1.GraphViz; } });
42
+ var graph_viz_context_1 = require("./graph-viz-context");
43
+ Object.defineProperty(exports, "useGraphVizContext", { enumerable: true, get: function () { return graph_viz_context_1.useGraphVizContext; } });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph-visualization/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,mDAAiC;AACjC,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,yDAe6B;AAd3B,uHAAA,kBAAkB,OAAA"}