@neo4j-ndl/react 3.8.7 → 3.8.9

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,127 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
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
+ import { IconButton, Menu, Tooltip, Typography, } from '@neo4j-ndl/react';
23
+ import { ArrowDownTrayIconOutline, BoxSelectIcon, FitToScreenIcon, LassoIcon, MagnifyingGlassMinusIconOutline, MagnifyingGlassPlusIconOutline, SelectIcon, SidebarLineRightIcon, } from '@neo4j-ndl/react/icons';
24
+ import { default as cx } from 'classnames';
25
+ import { useCallback, useEffect, useRef, useState, } from 'react';
26
+ import { useGraphVizContext } from './graph-viz-context';
27
+ export const GroupButton = (props) => {
28
+ const { isActive, ariaLabel, isDisabled, tipContent, onClick, onMouseDown, tooltipPlacement, className, style, htmlAttributes, children, } = props;
29
+ return (_jsxs(Tooltip, { type: "simple", placement: tooltipPlacement, children: [_jsx(Tooltip.Trigger, { hasButtonWrapper: true, children: _jsx(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 }) }), _jsx(Tooltip.Content, { children: tipContent })] }));
30
+ };
31
+ const targetIsTextInput = (target) => {
32
+ if (!(target instanceof HTMLElement)) {
33
+ return false;
34
+ }
35
+ return (target.isContentEditable || ['INPUT', 'TEXTAREA'].includes(target.tagName));
36
+ };
37
+ const isEditingText = (e) => {
38
+ return targetIsTextInput(e.target);
39
+ };
40
+ const GESTURE_KEYS = {
41
+ box: 'B',
42
+ lasso: 'L',
43
+ single: 'S',
44
+ };
45
+ const useRegisterKeyboardGestureSwitcher = (gesture) => {
46
+ const { setGesture } = useGraphVizContext();
47
+ const handleKeyDown = useCallback((evt) => {
48
+ if (!isEditingText(evt) && setGesture !== undefined) {
49
+ const upperKey = evt.key.toUpperCase();
50
+ if (upperKey === GESTURE_KEYS[gesture]) {
51
+ setGesture(gesture);
52
+ }
53
+ }
54
+ }, [gesture, setGesture]);
55
+ useEffect(() => {
56
+ document.addEventListener('keydown', handleKeyDown);
57
+ return () => {
58
+ document.removeEventListener('keydown', handleKeyDown);
59
+ };
60
+ }, [handleKeyDown]);
61
+ };
62
+ const NON_BREAKING_SPACE = '\u00A0';
63
+ export const SingleSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
64
+ const { gesture, setGesture, interactionMode } = useGraphVizContext();
65
+ useRegisterKeyboardGestureSwitcher('single');
66
+ return (_jsx(GroupButton, { isActive: gesture === 'single', isDisabled: interactionMode !== 'select', ariaLabel: "Individual Select Button", tipContent: `Individual Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.single}`, onClick: () => {
67
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('single');
68
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-individual-select' }, htmlAttributes), className: className, style: style, children: _jsx(SelectIcon, { "aria-label": "Individual Select" }) }));
69
+ };
70
+ export const BoxSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
71
+ const { gesture, setGesture, interactionMode } = useGraphVizContext();
72
+ useRegisterKeyboardGestureSwitcher('box');
73
+ return (_jsx(GroupButton, { isDisabled: interactionMode !== 'select' || setGesture === undefined, isActive: gesture === 'box', ariaLabel: "Box Select Button", tipContent: `Box Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.box}`, onClick: () => {
74
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('box');
75
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-box-select' }, htmlAttributes), className: className, style: style, children: _jsx(BoxSelectIcon, { "aria-label": "Box Select" }) }));
76
+ };
77
+ export const LassoSelectButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
78
+ const { gesture, setGesture, interactionMode } = useGraphVizContext();
79
+ useRegisterKeyboardGestureSwitcher('lasso');
80
+ return (_jsx(GroupButton, { isDisabled: interactionMode !== 'select' || setGesture === undefined, isActive: gesture === 'lasso', ariaLabel: "Lasso Select Button", tipContent: `Lasso Select ${NON_BREAKING_SPACE} ${GESTURE_KEYS.lasso}`, onClick: () => {
81
+ setGesture === null || setGesture === void 0 ? void 0 : setGesture('lasso');
82
+ }, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'right', htmlAttributes: Object.assign({ 'data-testid': 'gesture-lasso-select' }, htmlAttributes), className: className, style: style, children: _jsx(LassoIcon, { "aria-label": "Lasso Select" }) }));
83
+ };
84
+ export const ZoomInButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
85
+ const { nvlInstance } = useGraphVizContext();
86
+ const handleZoomIn = useCallback(() => {
87
+ var _a, _b;
88
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.setZoom(((_b = nvlInstance.current) === null || _b === void 0 ? void 0 : _b.getScale()) * 1.3);
89
+ }, [nvlInstance]);
90
+ return (_jsx(GroupButton, { onClick: handleZoomIn, tipContent: "Zoom in", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: _jsx(MagnifyingGlassPlusIconOutline, {}) }));
91
+ };
92
+ export const ZoomOutButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
93
+ const { nvlInstance } = useGraphVizContext();
94
+ const handleZoomOut = useCallback(() => {
95
+ var _a, _b;
96
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.setZoom(((_b = nvlInstance.current) === null || _b === void 0 ? void 0 : _b.getScale()) * 0.7);
97
+ }, [nvlInstance]);
98
+ return (_jsx(GroupButton, { onClick: handleZoomOut, tipContent: "Zoom out", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: _jsx(MagnifyingGlassMinusIconOutline, {}) }));
99
+ };
100
+ export const ZoomToFitButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
101
+ const { nvlInstance } = useGraphVizContext();
102
+ const handleZoomToFit = useCallback(() => {
103
+ var _a, _b;
104
+ (_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));
105
+ }, [nvlInstance]);
106
+ return (_jsx(GroupButton, { onClick: handleZoomToFit, tipContent: "Zoom to fit", className: className, style: style, htmlAttributes: htmlAttributes, tooltipPlacement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'left', children: _jsx(FitToScreenIcon, {}) }));
107
+ };
108
+ export const ToggleSidePanelButton = ({ className, htmlAttributes, style, tooltipPlacement, }) => {
109
+ const { sidepanel } = useGraphVizContext();
110
+ if (!sidepanel) {
111
+ throw new Error('Using the ToggleSidePanelButton requires having a sidepanel');
112
+ }
113
+ const { isSidePanelOpen, setIsSidePanelOpen } = sidepanel;
114
+ return (_jsxs(Tooltip, { placement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'bottom', type: "simple", children: [_jsx(Tooltip.Trigger, { hasButtonWrapper: true, children: _jsx(IconButton, { size: "small", onClick: () => setIsSidePanelOpen === null || setIsSidePanelOpen === void 0 ? void 0 : setIsSidePanelOpen(!isSidePanelOpen), isFloating: true, ariaLabel: "Toggle node properties panel", className: cx('ndl-graph-viz-toggle-sidepanel', className), style: style, htmlAttributes: Object.assign({ 'aria-pressed': isSidePanelOpen }, htmlAttributes), children: _jsx(SidebarLineRightIcon, { className: "ndl-graph-viz-toggle-icon" }) }) }), _jsx(Tooltip.Content, { children: _jsx(Typography, { variant: "body-small", children: isSidePanelOpen ? 'Close panel' : 'Open panel' }) })] }));
115
+ };
116
+ export const DownloadButton = ({ className, style, htmlAttributes, tooltipPlacement, }) => {
117
+ const { nvlInstance } = useGraphVizContext();
118
+ const [isDownloadMenuOpen, setOpen] = useState(false);
119
+ const closeFileMenu = () => setOpen(false);
120
+ const downloadButtonRef = useRef(null);
121
+ return (_jsxs(_Fragment, { children: [_jsxs(Tooltip, { type: "simple", placement: tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : 'bottom', children: [_jsx(Tooltip.Trigger, { hasButtonWrapper: true, children: _jsx(IconButton, { ref: downloadButtonRef, size: "small", isFloating: true, onClick: () => setOpen((o) => !o), ariaLabel: "Download", className: className, style: style, htmlAttributes: htmlAttributes, children: _jsx(ArrowDownTrayIconOutline, {}) }) }), _jsx(Tooltip.Content, { children: _jsx(Typography, { variant: "body-small", children: " Download " }) })] }), _jsx(Menu, { isOpen: isDownloadMenuOpen, onClose: closeFileMenu, anchorRef: downloadButtonRef, children: _jsx(Menu.Items, { children: _jsx(Menu.Item, { title: "Download as PNG", onClick: () => {
122
+ var _a;
123
+ (_a = nvlInstance.current) === null || _a === void 0 ? void 0 : _a.saveToFile({});
124
+ closeFileMenu();
125
+ } }) }) })] }));
126
+ };
127
+ //# 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":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ *
3
+ * Copyright (c) "Neo4j"
4
+ * Neo4j Sweden AB [http://neo4j.com]
5
+ *
6
+ * This file is part of Neo4j.
7
+ *
8
+ * Neo4j is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ */
21
+ import { createContext, useContext } from 'react';
22
+ export const GraphVizContext = createContext(undefined);
23
+ /**
24
+ * Hook to access the graph visualization context.
25
+ *
26
+ * This hook is used to implement custom UI components like buttons, panels, and controls
27
+ * that need access to data and functionality from the graph visualization component.
28
+ * @see {@link GraphVizContextData}
29
+ *
30
+ * @returns The graph visualization context containing NVL instance, sidepanel, gestures, and graph data
31
+ * @throws Error if used outside of a GraphVizContext provider
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * const NodeLoggerButton = () => {
36
+ * const { selected } = useGraphVizContext();
37
+ *
38
+ * const handleClick = () => {
39
+ * console.log('Selected nodes:', selected.nodeIds);
40
+ * };
41
+ *
42
+ * return (
43
+ * <button onClick={handleClick}>
44
+ * Log Selected Nodes ({selected.nodeIds.length})
45
+ * </button>
46
+ * );
47
+ * };
48
+ * ```
49
+ * @alpha
50
+ */
51
+ export const useGraphVizContext = () => {
52
+ const context = useContext(GraphVizContext);
53
+ if (!context) {
54
+ throw new Error('useGraphVizContext must be used within a GraphVizContext');
55
+ }
56
+ return context;
57
+ };
58
+ //# 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,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAuElD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAC1C,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,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"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
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
+ import { Resizable } from 're-resizable';
23
+ export const GraphVizSidepanel = ({ sidepanel }) => {
24
+ const { children, isSidePanelOpen, sidePanelWidth, onSidePanelResize, minWidth = 230, } = sidepanel;
25
+ if (!isSidePanelOpen) {
26
+ return null;
27
+ }
28
+ return (_jsx(Resizable, { defaultSize: {
29
+ height: '100%',
30
+ width: sidePanelWidth !== null && sidePanelWidth !== void 0 ? sidePanelWidth : 400,
31
+ }, className: "ndl-graph-resizable", minWidth: minWidth, maxWidth: "66%", enable: {
32
+ bottom: false,
33
+ bottomLeft: false,
34
+ bottomRight: false,
35
+ left: true,
36
+ right: false,
37
+ top: false,
38
+ topLeft: false,
39
+ topRight: false,
40
+ }, handleClasses: { left: 'ndl-sidepanel-handle' }, onResizeStop: (_e, _dir, ref) => {
41
+ onSidePanelResize(ref.getBoundingClientRect().width);
42
+ }, children: _jsx("div", { className: "ndl-graph-viz-sidepanel-content", children: children }) }));
43
+ };
44
+ const Title = ({ children }) => {
45
+ return (_jsx("div", { className: "ndl-graph-viz-sidepanel-title ndl-grid-area-title", children: children }));
46
+ };
47
+ GraphVizSidepanel.Title = Title;
48
+ const Content = ({ children }) => {
49
+ return _jsx("section", { className: "ndl-grid-area-content", children: children });
50
+ };
51
+ GraphVizSidepanel.Content = Content;
52
+ //# 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,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,MAAM,CAAC,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,KAAC,SAAS,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,cAAK,SAAS,EAAC,iCAAiC,YAAE,QAAQ,GAAO,GACvD,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC5D,OAAO,CACL,cAAK,SAAS,EAAC,mDAAmD,YAC/D,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC;AACF,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AAEhC,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC9D,OAAO,kBAAS,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAW,CAAC;AACzE,CAAC,CAAC;AACF,iBAAiB,CAAC,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,259 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ /**
14
+ *
15
+ * Copyright (c) "Neo4j"
16
+ * Neo4j Sweden AB [http://neo4j.com]
17
+ *
18
+ * This file is part of Neo4j.
19
+ *
20
+ * Neo4j is free software: you can redistribute it and/or modify
21
+ * it under the terms of the GNU General Public License as published by
22
+ * the Free Software Foundation, either version 3 of the License, or
23
+ * (at your option) any later version.
24
+ *
25
+ * This program is distributed in the hope that it will be useful,
26
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
27
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
+ * GNU General Public License for more details.
29
+ *
30
+ * You should have received a copy of the GNU General Public License
31
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
32
+ */
33
+ import { tokens } from '@neo4j-ndl/base';
34
+ import { IconButtonArray, useNeedleTheme } from '@neo4j-ndl/react';
35
+ import { InteractiveNvlWrapper, } from '@neo4j-nvl/react';
36
+ import { default as cx } from 'classnames';
37
+ import React, { useEffect, useId, useMemo, useState } from 'react';
38
+ import { BoxSelectButton, DownloadButton, LassoSelectButton, SingleSelectButton, ToggleSidePanelButton, ZoomInButton, ZoomOutButton, ZoomToFitButton, } from './graph-viz-buttons';
39
+ import { GraphVizContext, } from './graph-viz-context';
40
+ import { GraphVizSidepanel } from './graph-viz-sidepanel';
41
+ import { mapToNvlGraph } from './map-to-nvl-graph';
42
+ import { SingleSelectionSidepanelContents } from './sidepanel-components/single-selection-sidepanel-contents';
43
+ import { useManagedSelectionState } from './use-managed-selection-state';
44
+ import { useSemicontrolledState } from './use-semi-controlled-state';
45
+ const PLACEMENTS = {
46
+ 'bottom-left': 'ndl-graph-viz-interaction-island ndl-bottom-left',
47
+ 'bottom-right': 'ndl-graph-viz-interaction-island ndl-bottom-right',
48
+ 'top-left': 'ndl-graph-viz-interaction-island ndl-top-left',
49
+ 'top-right': 'ndl-graph-viz-interaction-island ndl-top-right',
50
+ };
51
+ const InteractionIsland = ({ children, className, placement, }) => {
52
+ return _jsx("div", { className: cx(PLACEMENTS[placement], className), children: children });
53
+ };
54
+ export const DEFAULT_NVL_OPTIONS = {
55
+ disableTelemetry: true,
56
+ disableWebGL: true,
57
+ maxZoom: 3,
58
+ minZoom: 0.05,
59
+ relationshipThreshold: 0.55,
60
+ useWebGL: false,
61
+ };
62
+ const DEFAULT_COMPONENTS = {
63
+ bottomLeftIsland: null,
64
+ bottomRightIsland: (_jsxs(IconButtonArray, { orientation: "vertical", isFloating: true, children: [_jsx(ZoomInButton, {}), " ", _jsx(ZoomOutButton, {}), " ", _jsx(ZoomToFitButton, {})] })),
65
+ topLeftIsland: null,
66
+ topRightIsland: (_jsxs("div", { className: "ndl-graph-viz-default-download-group", children: [_jsx(DownloadButton, {}), " ", _jsx(ToggleSidePanelButton, {})] })),
67
+ };
68
+ /**
69
+ * A comprehensive graph visualization component for rendering Neo4j-style graphs with interactive features.
70
+ *
71
+ * @remarks
72
+ * This component provides a complete graph visualization solution with built-in interaction modes,
73
+ * selection handling, zoom controls, and an optional sidepanel. It wraps the NVL (Neo4j Visualization Library)
74
+ * with additional UI controls and state management.
75
+ *
76
+ * The component supports various interaction modes including single selection, box selection, and lasso selection.
77
+ * It also provides customizable UI islands for placing controls at different corners of the visualization.
78
+ *
79
+ * @example
80
+ * Basic usage:
81
+ * ```tsx
82
+ * <GraphViz
83
+ * nodes={nodes}
84
+ * rels={relationships}
85
+ * selected={selection}
86
+ * setSelected={setSelection}
87
+ * />
88
+ * ```
89
+ *
90
+ * @example
91
+ * With custom controls:
92
+ * ```tsx
93
+ * <GraphViz
94
+ * nodes={nodes}
95
+ * rels={relationships}
96
+ * topRightIsland={<CustomControls />}
97
+ * sidepanel={{
98
+ * contents: <CustomSidepanel />,
99
+ * isSidePanelOpen: true,
100
+ * setIsSidePanelOpen: setSidepanelOpen
101
+ * sidePanelWidth: 400,
102
+ * onSidePanelResize: setSidepanelWidth,
103
+ * }}
104
+ * />
105
+ * ```
106
+ *
107
+ * @param props - {@link GraphVizProps}
108
+ * @returns A React component that renders an interactive graph visualization
109
+ *
110
+ * @alpha
111
+ */
112
+ export function GraphViz(_a) {
113
+ var _b, _c;
114
+ 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"]);
115
+ const nvlRef = useMemo(() => rawNvlRef !== null && rawNvlRef !== void 0 ? rawNvlRef : React.createRef(), [rawNvlRef]);
116
+ const instanceId = useId();
117
+ // Respect NDL theme changes
118
+ const { theme } = useNeedleTheme();
119
+ const { bg, border } = tokens.theme[theme].palette.neutral;
120
+ // key required for nvl react responsiveness
121
+ const [key, setKey] = useState(0);
122
+ useEffect(() => {
123
+ setKey((prevKey) => prevKey + 1);
124
+ }, [theme]);
125
+ // Semi-control interaction mode and selection state
126
+ const [interactionMode, setInteractionMode] = useSemicontrolledState(rawInteractionMode !== null && rawInteractionMode !== void 0 ? rawInteractionMode : 'select', rawSetInteractionMode);
127
+ const [selected, setSelected] = useSemicontrolledState(rawSelected !== null && rawSelected !== void 0 ? rawSelected : { nodeIds: [], relationshipIds: [] }, rawSetSelected);
128
+ const nvlGraph = useMemo(() => mapToNvlGraph(rawNodes, rawRels), [rawNodes, rawRels]);
129
+ const { nodesWithSelection, relsWithSelection, wrappedMouseEventCallbacks } = useManagedSelectionState({
130
+ gesture,
131
+ interactionMode,
132
+ mouseEventCallbacks,
133
+ nvlGraph,
134
+ selected,
135
+ setInteractionMode,
136
+ setSelected,
137
+ });
138
+ const [isSidePanelOpen, setIsSidePanelOpen] = 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);
139
+ const [sidePanelWidth, setSidePanelWidth] = 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);
140
+ const sidepanel = useMemo(() => {
141
+ if (rawSidepanel === undefined) {
142
+ return {
143
+ children: _jsx(SingleSelectionSidepanelContents, {}),
144
+ isSidePanelOpen,
145
+ onSidePanelResize: setSidePanelWidth,
146
+ setIsSidePanelOpen,
147
+ sidePanelWidth,
148
+ };
149
+ }
150
+ return rawSidepanel;
151
+ }, [
152
+ rawSidepanel,
153
+ isSidePanelOpen,
154
+ setIsSidePanelOpen,
155
+ sidePanelWidth,
156
+ setSidePanelWidth,
157
+ ]);
158
+ const Component = as !== null && as !== void 0 ? as : 'div';
159
+ return (_jsx(Component, Object.assign({ ref: ref, className: cx('ndl-graph-viz-container', className), style: style }, htmlAttributes, { children: _jsxs(GraphVizContext.Provider, { value: {
160
+ gesture,
161
+ interactionMode,
162
+ nvlGraph,
163
+ nvlInstance: nvlRef,
164
+ selected,
165
+ setGesture,
166
+ sidepanel,
167
+ }, children: [_jsxs("div", { className: "ndl-graph-viz", children: [_jsx(InteractiveNvlWrapper, Object.assign({ layout: "d3Force", nodes: nodesWithSelection, rels: relsWithSelection, nvlOptions: Object.assign(Object.assign(Object.assign({}, DEFAULT_NVL_OPTIONS), { instanceId, styling: {
168
+ defaultRelationshipColor: border.strongest,
169
+ dropShadowColor: border.weak,
170
+ selectedInnerBorderColor: bg.default,
171
+ } }), nvlOptions), nvlCallbacks: Object.assign({ onLayoutComputing(isComputing) {
172
+ var _a;
173
+ if (!isComputing) {
174
+ (_a = nvlRef.current) === null || _a === void 0 ? void 0 : _a.fit(nvlRef.current.getNodes().map((neighbors) => neighbors.id), { noPan: true });
175
+ }
176
+ } }, nvlCallbacks), mouseEventCallbacks: wrappedMouseEventCallbacks, ref: nvlRef }, restProps), key), topLeftIsland !== null && (_jsx(InteractionIsland, { placement: "top-left", children: topLeftIsland })), topRightIsland !== null && (_jsx(InteractionIsland, { placement: "top-right", children: topRightIsland })), bottomLeftIsland !== null && (_jsx(InteractionIsland, { placement: "bottom-left", children: bottomLeftIsland })), bottomRightIsland !== null && (_jsx(InteractionIsland, { placement: "bottom-right", children: bottomRightIsland }))] }), sidepanel && _jsx(GraphVizSidepanel, { sidepanel: sidepanel })] }) })));
177
+ }
178
+ /**
179
+ * Zoom in button for use within a GraphViz component.
180
+ *
181
+ * @remarks
182
+ * Increases zoom level by 1.3x
183
+ *
184
+ * @alpha
185
+ */
186
+ GraphViz.ZoomInButton = ZoomInButton;
187
+ /**
188
+ * Zoom out button for use within a GraphViz component.
189
+ *
190
+ * @remarks
191
+ * Decreases zoom level by 0.7x
192
+ *
193
+ * @alpha
194
+ */
195
+ GraphViz.ZoomOutButton = ZoomOutButton;
196
+ /**
197
+ * Zoom to fit button for use within a GraphViz component.
198
+ *
199
+ * @remarks
200
+ * Automatically adjusts zoom and pan to show all nodes and relationships
201
+ *
202
+ * @alpha
203
+ */
204
+ GraphViz.ZoomToFitButton = ZoomToFitButton;
205
+ /**
206
+ * Sidepanel toggle button for use within a GraphViz component.
207
+ *
208
+ * @remarks
209
+ * Shows or hides the sidepanel containing node and relationship details.
210
+ * Requires a sidepanel to be configured in the GraphViz component.
211
+ *
212
+ * @throws Error when used without a configured sidepanel
213
+ *
214
+ * @alpha
215
+ */
216
+ GraphViz.ToggleSidePanelButton = ToggleSidePanelButton;
217
+ /**
218
+ * Download button for use within a GraphViz component.
219
+ *
220
+ * @remarks
221
+ * Opens a dropdown menu with download options. Currently supports PNG format.
222
+ * Captures the current visualization state including zoom level.
223
+ *
224
+ * @alpha
225
+ */
226
+ GraphViz.DownloadButton = DownloadButton;
227
+ /**
228
+ * Box selection button for use within a GraphViz component.
229
+ *
230
+ * @remarks
231
+ * Enables box selection mode where dragging creates a rectangular selection area.
232
+ * Disabled unless the `setGesture` callback is passed.
233
+ * Shows active state when enabled and supports keyboard shortcut 'B'.
234
+ *
235
+ * @alpha
236
+ */
237
+ GraphViz.BoxSelectButton = BoxSelectButton;
238
+ /**
239
+ * Lasso selection button for use within a GraphViz component.
240
+ *
241
+ * @remarks
242
+ * Enables lasso selection mode where dragging creates a free-form selection area.
243
+ * Disabled unless the `setGesture` callback is passed.
244
+ * Shows active state when enabled and supports keyboard shortcut 'L'.
245
+ *
246
+ * @alpha
247
+ */
248
+ GraphViz.LassoSelectButton = LassoSelectButton;
249
+ /**
250
+ * Single node selection button for use within a GraphViz component.
251
+ *
252
+ * @remarks
253
+ * Enables single selection mode where clicking selects individual nodes or relationships.
254
+ * Shows active state when enabled and supports keyboard shortcut 'S'.
255
+ *
256
+ * @alpha
257
+ */
258
+ GraphViz.SingleSelectButton = SingleSelectButton;
259
+ //# 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,25 @@
1
+ /**
2
+ *
3
+ * Copyright (c) "Neo4j"
4
+ * Neo4j Sweden AB [http://neo4j.com]
5
+ *
6
+ * This file is part of Neo4j.
7
+ *
8
+ * Neo4j is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ */
21
+ export * from '@neo4j-nvl/base';
22
+ export * from '@neo4j-nvl/react';
23
+ export { GraphViz } from './graph-viz';
24
+ export { useGraphVizContext, } from './graph-viz-context';
25
+ //# 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,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,kBAAkB,GAcnB,MAAM,qBAAqB,CAAC"}