@neo4j-nvl/base 1.2.2 → 2.0.0-1e695738

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 (235) hide show
  1. package/CHANGELOG.md +54 -1
  2. package/README.md +8 -0
  3. package/dist/base.mjs +35891 -2
  4. package/dist/types/index.d.ts +382 -386
  5. package/dist/types/layouts/animatedlayout/AnimatedLayout.d.ts +23 -23
  6. package/dist/types/layouts/animatedlayout/animationUtils.d.ts +3 -3
  7. package/dist/types/layouts/circularLayout/CircularLayout.d.ts +14 -14
  8. package/dist/types/layouts/d3forcelayout/circularLayout.d.ts +4 -4
  9. package/dist/types/layouts/d3forcelayout/constants.d.ts +3 -4
  10. package/dist/types/layouts/d3forcelayout/d3ForceLayout.d.ts +31 -31
  11. package/dist/types/layouts/d3forcelayout/types.d.ts +7 -7
  12. package/dist/types/layouts/forcedirectedlayout/PhysLayout.d.ts +275 -0
  13. package/dist/types/layouts/forcedirectedlayout/clustering/ClusterByMerger.d.ts +62 -0
  14. package/dist/types/layouts/forcedirectedlayout/clustering/SolarMerger.d.ts +56 -0
  15. package/dist/types/layouts/forcedirectedlayout/clustering/clustering-utils.d.ts +143 -0
  16. package/dist/types/layouts/forcedirectedlayout/clustering/types.d.ts +59 -0
  17. package/dist/types/layouts/forcedirectedlayout/glwrapper.d.ts +4 -0
  18. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-fragment.d.ts +2 -0
  19. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-repulsive-fragment.d.ts +2 -0
  20. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-update-fragment.d.ts +2 -0
  21. package/dist/types/layouts/forcedirectedlayout/shaders/sim-vertex.d.ts +2 -0
  22. package/dist/types/layouts/freeLayout/FreeLayout.d.ts +23 -25
  23. package/dist/types/layouts/gridLayout/GridLayout.d.ts +26 -30
  24. package/dist/types/layouts/hierarchicallayout/HierarchicalLayout.d.ts +28 -23
  25. package/dist/types/layouts/hierarchicallayout/constants.d.ts +2 -2
  26. package/dist/types/modules/CallbackHelper.d.ts +23 -23
  27. package/dist/types/modules/ExternalCallbackHandler.d.ts +33 -39
  28. package/dist/types/modules/NvlController.d.ts +212 -129
  29. package/dist/types/modules/Shader.d.ts +17 -17
  30. package/dist/types/modules/ZoomTransitionHandler.d.ts +24 -24
  31. package/dist/types/modules/dataset.d.ts +26 -24
  32. package/dist/types/modules/logging.d.ts +4 -4
  33. package/dist/types/modules/state/constants.d.ts +2 -2
  34. package/dist/types/modules/state/state.d.ts +2 -2
  35. package/dist/types/modules/state/types.d.ts +338 -228
  36. package/dist/types/modules/state/utils.d.ts +36 -36
  37. package/dist/types/renderers/ClusterOverlay.d.ts +73 -0
  38. package/dist/types/renderers/domrenderer/BaseRenderer.d.ts +69 -69
  39. package/dist/types/renderers/domrenderer/canvasrenderer/Animation.d.ts +57 -57
  40. package/dist/types/renderers/domrenderer/canvasrenderer/AnimationHandler.d.ts +65 -65
  41. package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.d.ts +84 -85
  42. package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.d.ts +31 -31
  43. package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.d.ts +32 -32
  44. package/dist/types/renderers/domrenderer/shared/ImageCache.d.ts +16 -15
  45. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.d.ts +89 -89
  46. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.d.ts +42 -42
  47. package/dist/types/renderers/domrenderer/shared/arrows/arrows.d.ts +49 -49
  48. package/dist/types/renderers/domrenderer/shared/arrows/constants.d.ts +4 -4
  49. package/dist/types/renderers/domrenderer/shared/nodes/nodes.d.ts +21 -21
  50. package/dist/types/renderers/domrenderer/shared/types.d.ts +29 -30
  51. package/dist/types/renderers/domrenderer/shared/util.d.ts +4 -4
  52. package/dist/types/renderers/domrenderer/shared/vectorUtils.d.ts +10 -10
  53. package/dist/types/renderers/domrenderer/shared/wordwrap.d.ts +10 -10
  54. package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.d.ts +18 -19
  55. package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.d.ts +15 -15
  56. package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.d.ts +4 -4
  57. package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.d.ts +21 -21
  58. package/dist/types/renderers/webglrenderer/Controller.d.ts +83 -61
  59. package/dist/types/renderers/webglrenderer/IconLayerRegistry.d.ts +14 -0
  60. package/dist/types/renderers/webglrenderer/Renderer.d.ts +91 -51
  61. package/dist/types/renderers/webglrenderer/node-animation-fragment.d.ts +2 -2
  62. package/dist/types/renderers/webglrenderer/node-animation-vertex.d.ts +2 -2
  63. package/dist/types/renderers/webglrenderer/node-fragment-point.d.ts +2 -2
  64. package/dist/types/renderers/webglrenderer/node-vertex-point.d.ts +2 -2
  65. package/dist/types/renderers/webglrenderer/rel-fragment-line.d.ts +2 -2
  66. package/dist/types/renderers/webglrenderer/rel-glsl-utils.d.ts +1 -0
  67. package/dist/types/renderers/webglrenderer/rel-vertex-arrow.d.ts +2 -0
  68. package/dist/types/renderers/webglrenderer/rel-vertex-line.d.ts +2 -2
  69. package/dist/types/renderers/webglrenderer/viewport-box-fragment.d.ts +2 -2
  70. package/dist/types/renderers/webglrenderer/viewport-box-vertex.d.ts +2 -2
  71. package/dist/types/types/graph-element.d.ts +109 -101
  72. package/dist/types/types/nvl-window-functions.d.ts +12 -13
  73. package/dist/types/types/utils.d.ts +1 -1
  74. package/dist/types/utils/ariaUtils.d.ts +2 -2
  75. package/dist/types/utils/canvasManagement.d.ts +8 -2
  76. package/dist/types/utils/circularUtils.d.ts +2 -2
  77. package/dist/types/utils/clusterGeometry.d.ts +14 -0
  78. package/dist/types/utils/clusterHitRegions.d.ts +42 -0
  79. package/dist/types/utils/colorUtils.d.ts +2 -2
  80. package/dist/types/utils/constants.d.ts +12 -6
  81. package/dist/types/utils/errors.d.ts +6 -6
  82. package/dist/types/utils/geometry.d.ts +91 -48
  83. package/dist/types/utils/graphObjectUtils.d.ts +9 -9
  84. package/dist/types/utils/hitTest.d.ts +84 -0
  85. package/dist/types/utils/jsDriverResultTransformer.d.ts +27 -25
  86. package/dist/types/utils/layoutSeeding.d.ts +7 -0
  87. package/dist/types/utils/mouseUtils.d.ts +5 -5
  88. package/dist/types/utils/segmentAnalytics.d.ts +42 -42
  89. package/dist/types/utils/webWorkerUtils.d.ts +2 -2
  90. package/dist/types/utils/zoomFunctions.d.ts +24 -16
  91. package/package.json +15 -15
  92. package/skills/neo4j-nvl-skill/README.md +39 -0
  93. package/skills/neo4j-nvl-skill/SKILL.md +296 -0
  94. package/skills/neo4j-nvl-skill/references/api/base/classes/NVL.md +977 -0
  95. package/skills/neo4j-nvl-skill/references/api/base/functions/getZoomTargetForNodePositions.md +37 -0
  96. package/skills/neo4j-nvl-skill/references/api/base/index.md +71 -0
  97. package/skills/neo4j-nvl-skill/references/api/base/interfaces/CircularOptions.md +11 -0
  98. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ClusteringOptions.md +14 -0
  99. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ExternalCallbacks.md +18 -0
  100. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ForceDirectedOptions.md +12 -0
  101. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HierarchicalOptions.md +13 -0
  102. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetCluster.md +13 -0
  103. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetNode.md +16 -0
  104. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetRelationship.md +15 -0
  105. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Node.md +32 -0
  106. package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlMouseEvent.md +16 -0
  107. package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlOptions.md +38 -0
  108. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Point.md +12 -0
  109. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Relationship.md +32 -0
  110. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/CanvasRendererType.md +14 -0
  111. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Cluster.md +20 -0
  112. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterByFn.md +20 -0
  113. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterId.md +10 -0
  114. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTargets.md +22 -0
  115. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTestTarget.md +7 -0
  116. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Layout.md +15 -0
  117. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/LayoutOptions.md +12 -0
  118. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/NodeWithClientPosition.md +18 -0
  119. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialNode.md +17 -0
  120. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialRelationship.md +17 -0
  121. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Renderer.md +9 -0
  122. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/StyledCaption.md +21 -0
  123. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/WebGLRendererType.md +14 -0
  124. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ZoomOptions.md +25 -0
  125. package/skills/neo4j-nvl-skill/references/api/base/variables/CircularLayoutType.md +11 -0
  126. package/skills/neo4j-nvl-skill/references/api/base/variables/ForceDirectedLayoutType.md +9 -0
  127. package/skills/neo4j-nvl-skill/references/api/base/variables/FreeLayoutType.md +9 -0
  128. package/skills/neo4j-nvl-skill/references/api/base/variables/GridLayoutType.md +9 -0
  129. package/skills/neo4j-nvl-skill/references/api/base/variables/HierarchicalLayoutType.md +9 -0
  130. package/skills/neo4j-nvl-skill/references/api/base/variables/d3ForceLayoutType.md +9 -0
  131. package/skills/neo4j-nvl-skill/references/api/base/variables/nvlResultTransformer.md +38 -0
  132. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/BoxSelectInteraction.md +163 -0
  133. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ClickInteraction.md +163 -0
  134. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/DragNodeInteraction.md +164 -0
  135. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/HoverInteraction.md +160 -0
  136. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/KeyboardInteraction.md +185 -0
  137. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/LassoInteraction.md +163 -0
  138. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/PanInteraction.md +196 -0
  139. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ZoomInteraction.md +164 -0
  140. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/index.md +37 -0
  141. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionCallbacks.md +19 -0
  142. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionOptions.md +17 -0
  143. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionCallbacks.md +39 -0
  144. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionOptions.md +17 -0
  145. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DragNodeInteractionCallbacks.md +21 -0
  146. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DrawInteractionOptions.md +22 -0
  147. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionCallbacks.md +17 -0
  148. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionOptions.md +17 -0
  149. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionCallbacks.md +35 -0
  150. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionOptions.md +55 -0
  151. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionCallbacks.md +19 -0
  152. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionOptions.md +17 -0
  153. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionCallbacks.md +17 -0
  154. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionOptions.md +19 -0
  155. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionCallbacks.md +17 -0
  156. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionOptions.md +17 -0
  157. package/skills/neo4j-nvl-skill/references/api/react/functions/StaticPictureWrapper.md +35 -0
  158. package/skills/neo4j-nvl-skill/references/api/react/index.md +34 -0
  159. package/skills/neo4j-nvl-skill/references/api/react/interfaces/BasicReactWrapperProps.md +24 -0
  160. package/skills/neo4j-nvl-skill/references/api/react/interfaces/InteractiveNvlWrapperProps.md +27 -0
  161. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/InteractionOptions.md +10 -0
  162. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEvent.md +7 -0
  163. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEventCallbacks.md +10 -0
  164. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEvent.md +10 -0
  165. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEventCallbacks.md +10 -0
  166. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/StaticPictureWrapperProps.md +27 -0
  167. package/skills/neo4j-nvl-skill/references/api/react/variables/BasicNvlWrapper.md +50 -0
  168. package/skills/neo4j-nvl-skill/references/api/react/variables/InteractiveNvlWrapper.md +17 -0
  169. package/skills/neo4j-nvl-skill/references/clustering.md +87 -0
  170. package/skills/neo4j-nvl-skill/references/data-from-neo4j.md +67 -0
  171. package/skills/neo4j-nvl-skill/references/labels-and-overlays.md +76 -0
  172. package/skills/neo4j-nvl-skill/references/layouts-and-positions.md +65 -0
  173. package/skills/neo4j-nvl-skill/references/lifecycle-and-updates.md +65 -0
  174. package/skills/neo4j-nvl-skill/references/migrating-1x-to-2.md +50 -0
  175. package/skills/neo4j-nvl-skill/references/react-wrappers.md +88 -0
  176. package/skills/neo4j-nvl-skill/references/verifying-nvl-apps.md +52 -0
  177. package/skills/neo4j-nvl-skill/references/vite-and-bundlers.md +62 -0
  178. package/dist/base.mjs.LICENSE.txt +0 -21
  179. package/dist/types/layouts/animatedlayout/AnimatedLayout.test.d.ts +0 -1
  180. package/dist/types/layouts/animatedlayout/animationUtils.test.d.ts +0 -1
  181. package/dist/types/layouts/d3forcelayout/__mocks__/d3ForceLayout.d.ts +0 -10
  182. package/dist/types/layouts/d3forcelayout/circularLayout.test.d.ts +0 -1
  183. package/dist/types/layouts/d3forcelayout/d3ForceLayout.test.d.ts +0 -1
  184. package/dist/types/layouts/forcedirectedlayout/ForceCytoLayout.d.ts +0 -22
  185. package/dist/types/layouts/forcedirectedlayout/cosebilkentlayout/CoseBilkentLayout.d.ts +0 -33
  186. package/dist/types/layouts/forcedirectedlayout/physlayout/PhysLayout.d.ts +0 -174
  187. package/dist/types/layouts/forcedirectedlayout/physlayout/PhysLayout.test.d.ts +0 -1
  188. package/dist/types/layouts/forcedirectedlayout/physlayout/glwrapper.d.ts +0 -4
  189. package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-fragment.d.ts +0 -2
  190. package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-repulsive-fragment.d.ts +0 -2
  191. package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-update-fragment.d.ts +0 -2
  192. package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/sim-vertex.d.ts +0 -2
  193. package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/workaround-fragment.d.ts +0 -2
  194. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.bench.d.ts +0 -1
  195. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.d.ts +0 -21
  196. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.test.d.ts +0 -1
  197. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/solar-placer.d.ts +0 -2
  198. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/solar-placer.test.d.ts +0 -1
  199. package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/types.d.ts +0 -49
  200. package/dist/types/modules/NvlController.test.d.ts +0 -1
  201. package/dist/types/modules/ZoomTransitionHandler.test.d.ts +0 -1
  202. package/dist/types/modules/dataset.test.d.ts +0 -1
  203. package/dist/types/modules/state/state.test.d.ts +0 -1
  204. package/dist/types/modules/state/utils.test.d.ts +0 -1
  205. package/dist/types/renderers/domrenderer/BaseRenderer.test.d.ts +0 -1
  206. package/dist/types/renderers/domrenderer/canvasrenderer/Animation.test.d.ts +0 -1
  207. package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.test.d.ts +0 -1
  208. package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.test.d.ts +0 -1
  209. package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.test.d.ts +0 -1
  210. package/dist/types/renderers/domrenderer/shared/ImageCache.test.d.ts +0 -1
  211. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.test.d.ts +0 -1
  212. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.test.d.ts +0 -1
  213. package/dist/types/renderers/domrenderer/shared/arrows/arrows.test.d.ts +0 -1
  214. package/dist/types/renderers/domrenderer/shared/nodes/nodes.test.d.ts +0 -1
  215. package/dist/types/renderers/domrenderer/shared/util.test.d.ts +0 -1
  216. package/dist/types/renderers/domrenderer/shared/wordwrap.test.d.ts +0 -1
  217. package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.test.d.ts +0 -1
  218. package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.test.d.ts +0 -1
  219. package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.test.d.ts +0 -1
  220. package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.test.d.ts +0 -1
  221. package/dist/types/renderers/webglrenderer/Controller.test.d.ts +0 -1
  222. package/dist/types/renderers/webglrenderer/Renderer.test.d.ts +0 -1
  223. package/dist/types/utils/ariaUtils.test.d.ts +0 -1
  224. package/dist/types/utils/canvasManagement.test.d.ts +0 -1
  225. package/dist/types/utils/circularUtils.test.d.ts +0 -1
  226. package/dist/types/utils/colorUtils.test.d.ts +0 -1
  227. package/dist/types/utils/errors.test.d.ts +0 -1
  228. package/dist/types/utils/geometry.test.d.ts +0 -1
  229. package/dist/types/utils/graphObjectUtils.test.d.ts +0 -1
  230. package/dist/types/utils/hittest.d.ts +0 -58
  231. package/dist/types/utils/hittest.test.d.ts +0 -1
  232. package/dist/types/utils/jsDriverResultTransformer.test.d.ts +0 -1
  233. package/dist/types/utils/mouseUtils.test.d.ts +0 -1
  234. package/dist/types/utils/webWorkerUtils.test.d.ts +0 -1
  235. package/dist/types/utils/zoomFunctions.test.d.ts +0 -1
@@ -0,0 +1,296 @@
1
+ ---
2
+ name: neo4j-nvl-skill
3
+ metadata:
4
+ package: '@neo4j-nvl/base'
5
+ version: '2.0.0-1e695738'
6
+ description: Neo4j Visualization Library (NVL) — framework-agnostic graph rendering for the browser.
7
+ Covers @neo4j-nvl/base (NVL class, nodes/relationships, Canvas vs WebGL renderer),
8
+ @neo4j-nvl/interaction-handlers (zoom, pan, drag, click, hover, box/lasso select, keyboard) and
9
+ @neo4j-nvl/react (InteractiveNvlWrapper, BasicNvlWrapper, StaticPictureWrapper). Use when rendering
10
+ a Neo4j graph in a browser, feeding driver results through nvlResultTransformer, choosing Canvas vs
11
+ WebGL, clustering or laying out nodes, wiring node/relationship/cluster interactions, or embedding
12
+ NVL in React, Vite or vanilla JS apps.
13
+ Does NOT handle Cypher authoring — use neo4j-cypher-skill.
14
+ Does NOT handle driver lifecycle, sessions or executeQuery setup — use neo4j-driver-javascript-skill.
15
+ Does NOT handle the pre-styled GraphVisualization embed — use @neo4j-ndl/react.
16
+ compatibility: '@neo4j-nvl packages 2.x; React 19 for @neo4j-nvl/react; browsers with Canvas2D and WebGL2'
17
+ ---
18
+
19
+ [//]: # (This file is auto-generated by scripts/docs/generate-skills.mjs, do not edit it manually)
20
+
21
+ # Neo4j Visualization Library (@neo4j-nvl/base)
22
+
23
+ > Shipped with `@neo4j-nvl/base` v2.0.0-1e695738. Once installed into a project this folder is detached from the
24
+ > package: the installed types in `node_modules/@neo4j-nvl/*` are the source of truth. If the project's
25
+ > `@neo4j-nvl/base` is a different version and `node_modules/@neo4j-nvl/base/skills/neo4j-nvl-skill/SKILL.md`
26
+ > exists, read that copy instead.
27
+
28
+ ## When to use
29
+
30
+ - Rendering a Neo4j graph in the browser with custom interactions, rendering or data shapes
31
+ - Visualizing `driver.executeQuery` results as an interactive graph
32
+ - Zoom, pan, drag, click, hover, lasso or box-select interactions; clustering; custom layouts
33
+
34
+ Not for: a pre-styled graph view with default behaviour (`GraphVisualization` from `@neo4j-ndl/react` wraps
35
+ NVL for that), Python notebooks (`neo4j/python-graph-visualization`), Cypher, driver setup, GDS or GraphQL.
36
+
37
+ ## Rules
38
+
39
+ - **Types win.** Confirm every option, callback and method against this skill or the `.d.ts` files in
40
+ `node_modules/@neo4j-nvl/*` before using it. If they disagree, trust the types and say so.
41
+ - **Never invent options.** NVL options and callbacks are flat, named keys. If a key is not in the API
42
+ reference below or the types, it does not exist.
43
+ - **Do not reverse-engineer from compiled `dist/` or `lib/` output.** Use the types and these docs.
44
+ - **Symptom first.** When something does not work, check the table below before changing code.
45
+
46
+ ## Before you code
47
+
48
+ 1. The container has explicit `width` **and** `height`; otherwise the graph is invisible.
49
+ 2. React wrappers: `layout`, `layoutOptions` and every other option go inside `nvlOptions`.
50
+ 3. Wheel zoom in `<InteractiveNvlWrapper>` is enabled by `mouseEventCallbacks.onZoomAndPan`; there is no `onZoom`.
51
+ 4. `fit()` needs explicit node ids. `fit([])` fits nothing.
52
+ 5. The WebGL renderer draws no captions. Use `'canvas'` when labels matter, or `html` / `icon` overlays.
53
+ 6. If the hierarchical layout never finishes under the Vite dev server, add `optimizeDeps: { include: ['bin-pack'] }`. Vite 7.3 pre-bundles it on its own, so only apply it when the symptom appears.
54
+ 7. `nvlResultTransformer` returns bare `{ id }` elements; labels and properties are in `recordObjectMap`.
55
+ 8. React: `nvlCallbacks` are captured once; use refs or stable functions. `interactionOptions` replaces
56
+ the defaults, so pass every option you need.
57
+ 9. Destroy interaction handlers, then `nvl.destroy()`, on teardown. The React wrappers do this for you.
58
+
59
+ ## Symptom → cause → fix
60
+
61
+ | Symptom | Cause | Fix |
62
+ |---|---|---|
63
+ | Graph invisible / blank | Container has no height | Explicit `width` and `height` on the container |
64
+ | Wheel does not zoom (React) | Zoom handler only wired from `onZoomAndPan` | `mouseEventCallbacks={{ onZoomAndPan: true }}` → [react-wrappers](references/react-wrappers.md) |
65
+ | Hierarchical layout never finishes (Vite dev) | Layout `SharedWorker` imports CJS `bin-pack`; seen on older Vite, not on 7.3 | `optimizeDeps: { include: ['bin-pack'] }` → [vite-and-bundlers](references/vite-and-bundlers.md) |
66
+ | No text on nodes with WebGL | Captions are Canvas-only | `html` / `icon`, own overlay, or `setRenderer('canvas')` → [labels-and-overlays](references/labels-and-overlays.md) |
67
+ | `fit([])` does nothing | Empty array = no nodes | `fit(nvl.getNodes().map((n) => n.id))` |
68
+ | `fit()` stops zoomed in on a huge graph | `minZoom` clamp (default `0.075`) | `fit(ids, { minZoom })` or lower the `minZoom` option |
69
+ | Clicking a cluster selects all its nodes | `selectOnClick` selects `cluster.nodeIds` | `selectOnClick: false` and select in `onNodeClick` → [clustering](references/clustering.md) |
70
+ | No cluster outlines / halos | Not force-directed, or mixed colours (halo) | Force-directed with `layoutOptions.clustering`; one colour per cluster → [clustering](references/clustering.md) |
71
+ | Pinned nodes move when clustering is on | Cluster forces ignore pins | Do not combine → [clustering](references/clustering.md) |
72
+ | Changing circle options does nothing | Layout is not re-run on option change | Bounce via `setLayout('free')` → [layouts-and-positions](references/layouts-and-positions.md) |
73
+ | Un-pinned nodes stay frozen | Settled simulation is not restarted | `setNodePositions(current, true)` → [layouts-and-positions](references/layouts-and-positions.md) |
74
+ | Node `x`/`y` props do not move existing nodes | Positions apply on insert only | `setNodePositions` → [layouts-and-positions](references/layouts-and-positions.md) |
75
+ | Callbacks see stale state (React) | `nvlCallbacks` captured at creation | Refs or stable functions → [react-wrappers](references/react-wrappers.md) |
76
+ | Minimap empty (React) | Container did not exist at creation | Keep the element in state → [react-wrappers](references/react-wrappers.md) |
77
+ | Hover / shadow defaults lost | `interactionOptions` replaces defaults | Pass every option → [react-wrappers](references/react-wrappers.md) |
78
+ | Many icons not drawn | Too many distinct icon images | Fewer distinct icons → [labels-and-overlays](references/labels-and-overlays.md) |
79
+ | Layout looks hung in headless Chrome | Software WebGL | Hardware-GL flags → [verifying-nvl-apps](references/verifying-nvl-apps.md) |
80
+ | Raw `executeQuery` result passed to NVL | Records are not graph elements | `resultTransformer: nvlResultTransformer` → [data-from-neo4j](references/data-from-neo4j.md) |
81
+
82
+ ## Choose
83
+
84
+ **NVL or Needle?** Default Neo4j styling and no custom interaction → `GraphVisualization` from `@neo4j-ndl/react`.
85
+ Anything custom → NVL.
86
+
87
+ | Need | Use |
88
+ |---|---|
89
+ | React, default interactions | `<InteractiveNvlWrapper>` from `@neo4j-nvl/react` |
90
+ | React, custom interaction logic | `<BasicNvlWrapper>` + `ref` to the `NVL` instance |
91
+ | Vanilla, standard interactions | `NVL` + `@neo4j-nvl/interaction-handlers` |
92
+ | Vanilla, custom events | `NVL` + `container.addEventListener` + `nvl.getHits()` |
93
+ | Static PNG / SVG | `<StaticPictureWrapper>` or `nvl.saveToFile()` / `nvl.saveToSvg()` |
94
+
95
+ | Renderer | Nodes | Notes |
96
+ |---|---|---|
97
+ | `'canvas'` (default) | up to ~1,000 | Captions, icons, arrows, exact hit-testing |
98
+ | `'webgl'` | 100,000+ | WebGL2 only; no captions; icons and arrowheads supported |
99
+
100
+ `disableWebGL: true` forces Canvas rendering and non-GPU layouts.
101
+
102
+ ## Install
103
+
104
+ ```bash
105
+ npm install @neo4j-nvl/base # required
106
+ npm install @neo4j-nvl/interaction-handlers # vanilla interactions
107
+ npm install @neo4j-nvl/react # React wrappers (React 19)
108
+ ```
109
+
110
+ `@neo4j-nvl/layout-workers` is transitive; never install it directly. `neo4j-driver` is only needed for
111
+ `nvlResultTransformer`. License: Neo4j Visualization Library License, for use with Neo4j products.
112
+ Starters: https://github.com/neo4j-devtools/nvl-boilerplates
113
+
114
+ ## Minimal examples
115
+
116
+ ```javascript
117
+ import { NVL } from '@neo4j-nvl/base'
118
+ import { ClickInteraction, ZoomInteraction, PanInteraction, DragNodeInteraction } from '@neo4j-nvl/interaction-handlers'
119
+
120
+ const nodes = [{ id: '1', caption: 'A' }, { id: '2', caption: 'B' }]
121
+ const rels = [{ id: '12', from: '1', to: '2', type: 'KNOWS' }]
122
+ const nvl = new NVL(container, nodes, rels, { layout: 'forceDirected' }, {
123
+ onLayoutDone: () => nvl.fit(nodes.map((n) => n.id))
124
+ })
125
+ const handlers = [new ZoomInteraction(nvl), new PanInteraction(nvl), new DragNodeInteraction(nvl),
126
+ new ClickInteraction(nvl, { selectOnClick: true })]
127
+ handlers[3].updateCallback('onNodeClick', (node) => console.log(node.id))
128
+ // teardown: handlers.forEach((h) => h.destroy()); nvl.destroy()
129
+ ```
130
+
131
+ ```tsx
132
+ import { InteractiveNvlWrapper } from '@neo4j-nvl/react'
133
+ import type { NVL } from '@neo4j-nvl/base'
134
+ import { useRef } from 'react'
135
+
136
+ export function Graph({ nodes, rels }) {
137
+ const nvlRef = useRef<NVL>(null)
138
+ return (
139
+ <div style={{ width: '100%', height: 600 }}>
140
+ <InteractiveNvlWrapper
141
+ ref={nvlRef}
142
+ nodes={nodes}
143
+ rels={rels}
144
+ nvlOptions={{ layout: 'forceDirected', renderer: 'canvas' }}
145
+ interactionOptions={{ selectOnClick: true, drawShadowOnHover: true }}
146
+ mouseEventCallbacks={{
147
+ onNodeClick: (node) => console.log(node.id),
148
+ onZoomAndPan: true,
149
+ onPan: true,
150
+ onDrag: true
151
+ }}
152
+ nvlCallbacks={{ onLayoutDone: () => nvlRef.current?.fit(nodes.map((n) => n.id)) }}
153
+ />
154
+ </div>
155
+ )
156
+ }
157
+ ```
158
+
159
+ ## Topic guides
160
+
161
+ Read the one that matches the task before writing code.
162
+
163
+ - [references/data-from-neo4j.md](references/data-from-neo4j.md) — `nvlResultTransformer` output, `recordObjectMap`, enriching nodes, Integer and temporal values
164
+ - [references/react-wrappers.md](references/react-wrappers.md) — callback-to-handler mapping, stale callbacks, live vs creation-time options, minimap container
165
+ - [references/clustering.md](references/clustering.md) — `clusterBy` per layout, outlines and halos, cluster click and hover, pins
166
+ - [references/layouts-and-positions.md](references/layouts-and-positions.md) — when layouts re-run, `setNodePositions`, pinning, layout callbacks
167
+ - [references/labels-and-overlays.md](references/labels-and-overlays.md) — captions vs `html` / `icon` / `overlayIcon`, coordinates for custom overlays
168
+ - [references/vite-and-bundlers.md](references/vite-and-bundlers.md) — worker setup per bundler, dev vs production, `disableWebWorkers`
169
+ - [references/verifying-nvl-apps.md](references/verifying-nvl-apps.md) — `window.__Nvl_*` hooks, headless Chrome flags, detecting a settled layout
170
+ - [references/lifecycle-and-updates.md](references/lifecycle-and-updates.md) — add/update/remove methods, `restart`, teardown, context loss, telemetry, `onError`
171
+ - [references/migrating-1x-to-2.md](references/migrating-1x-to-2.md) — removed options and renamed callbacks
172
+
173
+ ## API reference
174
+
175
+ Generated from the installed version's type declarations. Open the page for the symbol you need; do not
176
+ load all of them.
177
+
178
+ ### `@neo4j-nvl/base`
179
+
180
+ NVL class, options, callbacks, graph element types, hit testing, nvlResultTransformer.
181
+
182
+ **Classes**
183
+
184
+ - [NVL](references/api/base/classes/NVL.md) — Class for a NVL instance.
185
+
186
+ **Functions**
187
+
188
+ - [getZoomTargetForNodePositions](references/api/base/functions/getZoomTargetForNodePositions.md) — Gets the zoom target to fit the given node positions into the scene.
189
+
190
+ **Interfaces**
191
+
192
+ - [CircularOptions](references/api/base/interfaces/CircularOptions.md) — The options for the circular layout.
193
+ - [ClusteringOptions](references/api/base/interfaces/ClusteringOptions.md) — Options that control physical clustering and cluster decorations for the force-directed layout.
194
+ - [ExternalCallbacks](references/api/base/interfaces/ExternalCallbacks.md) — An object specifying the required callback functions for certain actions
195
+ - [ForceDirectedOptions](references/api/base/interfaces/ForceDirectedOptions.md) — The options for the force directed layout
196
+ - [HierarchicalOptions](references/api/base/interfaces/HierarchicalOptions.md) — The options for the hierarchical layout
197
+ - [HitTargetCluster](references/api/base/interfaces/HitTargetCluster.md) — A ClusteringOptions.clusterBy cluster hull that has been hit by a pointer event
198
+ - [HitTargetNode](references/api/base/interfaces/HitTargetNode.md) — A node that has been hit by a pointer event
199
+ - [HitTargetRelationship](references/api/base/interfaces/HitTargetRelationship.md) — A relationship that has been hit by a pointer event
200
+ - [Node](references/api/base/interfaces/Node.md) — A node inside the graph visualization.
201
+ - [NvlMouseEvent](references/api/base/interfaces/NvlMouseEvent.md) — The result of a NVL.getHits call.
202
+ - [NvlOptions](references/api/base/interfaces/NvlOptions.md) — Configurations for a NVL instance
203
+ - [Point](references/api/base/interfaces/Point.md) — An object representing a point in 2D space.
204
+ - [Relationship](references/api/base/interfaces/Relationship.md) — A relationship inside the graph visualization.
205
+
206
+ **Types**
207
+
208
+ - [CanvasRendererType](references/api/base/type-aliases/CanvasRendererType.md) — A renderer using canvas.
209
+ - [Cluster](references/api/base/type-aliases/Cluster.md) — A physical cluster produced by ClusteringOptions.clusterBy.
210
+ - [ClusterByFn](references/api/base/type-aliases/ClusterByFn.md) — Function that maps a node id to a ClusterId for force-directed clustering.
211
+ - [ClusterId](references/api/base/type-aliases/ClusterId.md) — Identifier returned by ClusterByFn to group nodes into physical clusters.
212
+ - [HitTargets](references/api/base/type-aliases/HitTargets.md) — A collection of nodes, relationships and clusters that have been hit by a pointer event
213
+ - [HitTestTarget](references/api/base/type-aliases/HitTestTarget.md)
214
+ - [Layout](references/api/base/type-aliases/Layout.md) — The different types of layouts available
215
+ - [LayoutOptions](references/api/base/type-aliases/LayoutOptions.md) — The options for the layout.
216
+ - [NodeWithClientPosition](references/api/base/type-aliases/NodeWithClientPosition.md) — A node returned by NVL.getNodes with layout coordinates and screen position.
217
+ - [PartialNode](references/api/base/type-aliases/PartialNode.md) — A node with only a subset of its properties.
218
+ - [PartialRelationship](references/api/base/type-aliases/PartialRelationship.md) — A relationship with only a subset of its properties.
219
+ - [Renderer](references/api/base/type-aliases/Renderer.md) — The different types of renderers available
220
+ - [StyledCaption](references/api/base/type-aliases/StyledCaption.md) — The caption text and its text style.
221
+ - [WebGLRendererType](references/api/base/type-aliases/WebGLRendererType.md) — A WebGL2 renderer that uses the GPU for rendering.
222
+ - [ZoomOptions](references/api/base/type-aliases/ZoomOptions.md) — Options that influence how fit-to-zoom should behave
223
+
224
+ **Variables**
225
+
226
+ - [CircularLayoutType](references/api/base/variables/CircularLayoutType.md) — A basic circular layout.
227
+ - [d3ForceLayoutType](references/api/base/variables/d3ForceLayoutType.md) — The commonly used d3-force layout.
228
+ - [ForceDirectedLayoutType](references/api/base/variables/ForceDirectedLayoutType.md) — NVL's main force directed layout.
229
+ - [FreeLayoutType](references/api/base/variables/FreeLayoutType.md) — A free layout that allows for arbitrary positioning of elements using NVL's setPosition method.
230
+ - [GridLayoutType](references/api/base/variables/GridLayoutType.md) — A basic grid layout.
231
+ - [HierarchicalLayoutType](references/api/base/variables/HierarchicalLayoutType.md) — A hierarchical layout using the dagre algorithm.
232
+ - [nvlResultTransformer](references/api/base/variables/nvlResultTransformer.md) — Result transformer for the Neo4j JavaScript driver results to NVL graph elements.
233
+
234
+ ### `@neo4j-nvl/interaction-handlers`
235
+
236
+ Zoom, pan, drag, click, hover, box/lasso select, keyboard handlers and their callbacks.
237
+
238
+ **Classes**
239
+
240
+ - [BoxSelectInteraction](references/api/interaction-handlers/classes/BoxSelectInteraction.md) — An interaction handler for multi-selecting nodes and relationships.
241
+ - [ClickInteraction](references/api/interaction-handlers/classes/ClickInteraction.md) — Click interaction handler that handles click, double click and right click events on
242
+ - [DragNodeInteraction](references/api/interaction-handlers/classes/DragNodeInteraction.md) — Interaction handler for dragging nodes,
243
+ - [HoverInteraction](references/api/interaction-handlers/classes/HoverInteraction.md) — Interaction handler for hovering nodes and relationships.
244
+ - [KeyboardInteraction](references/api/interaction-handlers/classes/KeyboardInteraction.md) — Opinionated interaction handler for keyboard-driven focus navigation
245
+ - [LassoInteraction](references/api/interaction-handlers/classes/LassoInteraction.md) — An interaction handler that lets you select nodes and relationships by drawing a lasso around them.
246
+ - [PanInteraction](references/api/interaction-handlers/classes/PanInteraction.md) — Interaction handler for panning the scene, which is achieved by clicking and moving the scene.
247
+ - [ZoomInteraction](references/api/interaction-handlers/classes/ZoomInteraction.md) — Interaction handler for zooming the canvas, which is achieved by:
248
+
249
+ **Types**
250
+
251
+ - [BoxSelectInteractionCallbacks](references/api/interaction-handlers/type-aliases/BoxSelectInteractionCallbacks.md) — Callbacks for the box select interaction handler.
252
+ - [BoxSelectInteractionOptions](references/api/interaction-handlers/type-aliases/BoxSelectInteractionOptions.md) — Options for the multi-select interaction handler to customize its behavior.
253
+ - [ClickInteractionCallbacks](references/api/interaction-handlers/type-aliases/ClickInteractionCallbacks.md) — Callbacks for the click interaction handler.
254
+ - [ClickInteractionOptions](references/api/interaction-handlers/type-aliases/ClickInteractionOptions.md) — Options for the click interaction handler to customize its behavior.
255
+ - [DragNodeInteractionCallbacks](references/api/interaction-handlers/type-aliases/DragNodeInteractionCallbacks.md) — Callbacks for the drag node interaction handler.
256
+ - [DrawInteractionOptions](references/api/interaction-handlers/type-aliases/DrawInteractionOptions.md) — Options for the draw interaction handler.
257
+ - [HoverInteractionCallbacks](references/api/interaction-handlers/type-aliases/HoverInteractionCallbacks.md) — Callbacks for the hover interaction handler.
258
+ - [HoverInteractionOptions](references/api/interaction-handlers/type-aliases/HoverInteractionOptions.md) — Options for the hover interaction handler to customize its behavior.
259
+ - [KeyboardInteractionCallbacks](references/api/interaction-handlers/type-aliases/KeyboardInteractionCallbacks.md) — Callbacks for the keyboard interaction handler.
260
+ - [KeyboardInteractionOptions](references/api/interaction-handlers/type-aliases/KeyboardInteractionOptions.md) — Options for the keyboard interaction handler.
261
+ - [LassoInteractionCallbacks](references/api/interaction-handlers/type-aliases/LassoInteractionCallbacks.md) — Callbacks for the lasso interaction handler.
262
+ - [LassoInteractionOptions](references/api/interaction-handlers/type-aliases/LassoInteractionOptions.md) — Options for the lasso interaction handler to customize its behavior.
263
+ - [PanInteractionCallbacks](references/api/interaction-handlers/type-aliases/PanInteractionCallbacks.md) — Callbacks for the pan interaction handler.
264
+ - [PanInteractionOptions](references/api/interaction-handlers/type-aliases/PanInteractionOptions.md) — Options for the pan interaction handler to customize its behavior.
265
+ - [ZoomInteractionCallbacks](references/api/interaction-handlers/type-aliases/ZoomInteractionCallbacks.md) — Callbacks for the zoom interaction handler.
266
+ - [ZoomInteractionOptions](references/api/interaction-handlers/type-aliases/ZoomInteractionOptions.md) — Options for the zoom interaction handler to customize its behavior.
267
+
268
+ ### `@neo4j-nvl/react`
269
+
270
+ InteractiveNvlWrapper, BasicNvlWrapper, StaticPictureWrapper and their props.
271
+
272
+ **Functions**
273
+
274
+ - [StaticPictureWrapper](references/api/react/functions/StaticPictureWrapper.md) — A React component that creates a static picture of a graph using NVL.
275
+
276
+ **Interfaces**
277
+
278
+ - [BasicReactWrapperProps](references/api/react/interfaces/BasicReactWrapperProps.md) — The properties that can be passed to the BasicNvlWrapper component.
279
+ - [InteractiveNvlWrapperProps](references/api/react/interfaces/InteractiveNvlWrapperProps.md) — The properties that can be passed to the InteractiveNvlWrapper component.
280
+
281
+ **Types**
282
+
283
+ - [InteractionOptions](references/api/react/type-aliases/InteractionOptions.md) — Collection of interaction options that can be used with
284
+ - [KeyboardEvent](references/api/react/type-aliases/KeyboardEvent.md)
285
+ - [KeyboardEventCallbacks](references/api/react/type-aliases/KeyboardEventCallbacks.md) — Collection of keyboard event callbacks that can be used with
286
+ - [MouseEvent](references/api/react/type-aliases/MouseEvent.md) — The events that can be passed to the MouseEventCallbacks object
287
+ - [MouseEventCallbacks](references/api/react/type-aliases/MouseEventCallbacks.md) — Collection of mouse event callbacks that can be used with
288
+ - [StaticPictureWrapperProps](references/api/react/type-aliases/StaticPictureWrapperProps.md) — The properties that can be passed to the StaticPictureWrapper component.
289
+
290
+ **Variables**
291
+
292
+ - [BasicNvlWrapper](references/api/react/variables/BasicNvlWrapper.md) — A basic React wrapper that wraps the NVL base library within a React component.
293
+ - [InteractiveNvlWrapper](references/api/react/variables/InteractiveNvlWrapper.md) — The interactive React wrapper component contains a collection of interaction handlers by default
294
+
295
+ Web: user guide https://neo4j.com/docs/nvl/current/ · API https://neo4j.com/docs/api/nvl/current/ ·
296
+ examples https://neo4j.com/docs/api/nvl/current/examples.html