@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.
- package/CHANGELOG.md +54 -1
- package/README.md +8 -0
- package/dist/base.mjs +35891 -2
- package/dist/types/index.d.ts +382 -386
- package/dist/types/layouts/animatedlayout/AnimatedLayout.d.ts +23 -23
- package/dist/types/layouts/animatedlayout/animationUtils.d.ts +3 -3
- package/dist/types/layouts/circularLayout/CircularLayout.d.ts +14 -14
- package/dist/types/layouts/d3forcelayout/circularLayout.d.ts +4 -4
- package/dist/types/layouts/d3forcelayout/constants.d.ts +3 -4
- package/dist/types/layouts/d3forcelayout/d3ForceLayout.d.ts +31 -31
- package/dist/types/layouts/d3forcelayout/types.d.ts +7 -7
- package/dist/types/layouts/forcedirectedlayout/PhysLayout.d.ts +275 -0
- package/dist/types/layouts/forcedirectedlayout/clustering/ClusterByMerger.d.ts +62 -0
- package/dist/types/layouts/forcedirectedlayout/clustering/SolarMerger.d.ts +56 -0
- package/dist/types/layouts/forcedirectedlayout/clustering/clustering-utils.d.ts +143 -0
- package/dist/types/layouts/forcedirectedlayout/clustering/types.d.ts +59 -0
- package/dist/types/layouts/forcedirectedlayout/glwrapper.d.ts +4 -0
- package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-fragment.d.ts +2 -0
- package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-repulsive-fragment.d.ts +2 -0
- package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-update-fragment.d.ts +2 -0
- package/dist/types/layouts/forcedirectedlayout/shaders/sim-vertex.d.ts +2 -0
- package/dist/types/layouts/freeLayout/FreeLayout.d.ts +23 -25
- package/dist/types/layouts/gridLayout/GridLayout.d.ts +26 -30
- package/dist/types/layouts/hierarchicallayout/HierarchicalLayout.d.ts +28 -23
- package/dist/types/layouts/hierarchicallayout/constants.d.ts +2 -2
- package/dist/types/modules/CallbackHelper.d.ts +23 -23
- package/dist/types/modules/ExternalCallbackHandler.d.ts +33 -39
- package/dist/types/modules/NvlController.d.ts +212 -129
- package/dist/types/modules/Shader.d.ts +17 -17
- package/dist/types/modules/ZoomTransitionHandler.d.ts +24 -24
- package/dist/types/modules/dataset.d.ts +26 -24
- package/dist/types/modules/logging.d.ts +4 -4
- package/dist/types/modules/state/constants.d.ts +2 -2
- package/dist/types/modules/state/state.d.ts +2 -2
- package/dist/types/modules/state/types.d.ts +338 -228
- package/dist/types/modules/state/utils.d.ts +36 -36
- package/dist/types/renderers/ClusterOverlay.d.ts +73 -0
- package/dist/types/renderers/domrenderer/BaseRenderer.d.ts +69 -69
- package/dist/types/renderers/domrenderer/canvasrenderer/Animation.d.ts +57 -57
- package/dist/types/renderers/domrenderer/canvasrenderer/AnimationHandler.d.ts +65 -65
- package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.d.ts +84 -85
- package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.d.ts +31 -31
- package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.d.ts +32 -32
- package/dist/types/renderers/domrenderer/shared/ImageCache.d.ts +16 -15
- package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.d.ts +89 -89
- package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.d.ts +42 -42
- package/dist/types/renderers/domrenderer/shared/arrows/arrows.d.ts +49 -49
- package/dist/types/renderers/domrenderer/shared/arrows/constants.d.ts +4 -4
- package/dist/types/renderers/domrenderer/shared/nodes/nodes.d.ts +21 -21
- package/dist/types/renderers/domrenderer/shared/types.d.ts +29 -30
- package/dist/types/renderers/domrenderer/shared/util.d.ts +4 -4
- package/dist/types/renderers/domrenderer/shared/vectorUtils.d.ts +10 -10
- package/dist/types/renderers/domrenderer/shared/wordwrap.d.ts +10 -10
- package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.d.ts +18 -19
- package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.d.ts +15 -15
- package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.d.ts +4 -4
- package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.d.ts +21 -21
- package/dist/types/renderers/webglrenderer/Controller.d.ts +83 -61
- package/dist/types/renderers/webglrenderer/IconLayerRegistry.d.ts +14 -0
- package/dist/types/renderers/webglrenderer/Renderer.d.ts +91 -51
- package/dist/types/renderers/webglrenderer/node-animation-fragment.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/node-animation-vertex.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/node-fragment-point.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/node-vertex-point.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/rel-fragment-line.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/rel-glsl-utils.d.ts +1 -0
- package/dist/types/renderers/webglrenderer/rel-vertex-arrow.d.ts +2 -0
- package/dist/types/renderers/webglrenderer/rel-vertex-line.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/viewport-box-fragment.d.ts +2 -2
- package/dist/types/renderers/webglrenderer/viewport-box-vertex.d.ts +2 -2
- package/dist/types/types/graph-element.d.ts +109 -101
- package/dist/types/types/nvl-window-functions.d.ts +12 -13
- package/dist/types/types/utils.d.ts +1 -1
- package/dist/types/utils/ariaUtils.d.ts +2 -2
- package/dist/types/utils/canvasManagement.d.ts +8 -2
- package/dist/types/utils/circularUtils.d.ts +2 -2
- package/dist/types/utils/clusterGeometry.d.ts +14 -0
- package/dist/types/utils/clusterHitRegions.d.ts +42 -0
- package/dist/types/utils/colorUtils.d.ts +2 -2
- package/dist/types/utils/constants.d.ts +12 -6
- package/dist/types/utils/errors.d.ts +6 -6
- package/dist/types/utils/geometry.d.ts +91 -48
- package/dist/types/utils/graphObjectUtils.d.ts +9 -9
- package/dist/types/utils/hitTest.d.ts +84 -0
- package/dist/types/utils/jsDriverResultTransformer.d.ts +27 -25
- package/dist/types/utils/layoutSeeding.d.ts +7 -0
- package/dist/types/utils/mouseUtils.d.ts +5 -5
- package/dist/types/utils/segmentAnalytics.d.ts +42 -42
- package/dist/types/utils/webWorkerUtils.d.ts +2 -2
- package/dist/types/utils/zoomFunctions.d.ts +24 -16
- package/package.json +15 -15
- package/skills/neo4j-nvl-skill/README.md +39 -0
- package/skills/neo4j-nvl-skill/SKILL.md +296 -0
- package/skills/neo4j-nvl-skill/references/api/base/classes/NVL.md +977 -0
- package/skills/neo4j-nvl-skill/references/api/base/functions/getZoomTargetForNodePositions.md +37 -0
- package/skills/neo4j-nvl-skill/references/api/base/index.md +71 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/CircularOptions.md +11 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/ClusteringOptions.md +14 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/ExternalCallbacks.md +18 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/ForceDirectedOptions.md +12 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/HierarchicalOptions.md +13 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetCluster.md +13 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetNode.md +16 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetRelationship.md +15 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/Node.md +32 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlMouseEvent.md +16 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlOptions.md +38 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/Point.md +12 -0
- package/skills/neo4j-nvl-skill/references/api/base/interfaces/Relationship.md +32 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/CanvasRendererType.md +14 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Cluster.md +20 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterByFn.md +20 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterId.md +10 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTargets.md +22 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTestTarget.md +7 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Layout.md +15 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/LayoutOptions.md +12 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/NodeWithClientPosition.md +18 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialNode.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialRelationship.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Renderer.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/StyledCaption.md +21 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/WebGLRendererType.md +14 -0
- package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ZoomOptions.md +25 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/CircularLayoutType.md +11 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/ForceDirectedLayoutType.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/FreeLayoutType.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/GridLayoutType.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/HierarchicalLayoutType.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/d3ForceLayoutType.md +9 -0
- package/skills/neo4j-nvl-skill/references/api/base/variables/nvlResultTransformer.md +38 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/BoxSelectInteraction.md +163 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ClickInteraction.md +163 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/DragNodeInteraction.md +164 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/HoverInteraction.md +160 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/KeyboardInteraction.md +185 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/LassoInteraction.md +163 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/PanInteraction.md +196 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ZoomInteraction.md +164 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/index.md +37 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionCallbacks.md +19 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionOptions.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionCallbacks.md +39 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionOptions.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DragNodeInteractionCallbacks.md +21 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DrawInteractionOptions.md +22 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionCallbacks.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionOptions.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionCallbacks.md +35 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionOptions.md +55 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionCallbacks.md +19 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionOptions.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionCallbacks.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionOptions.md +19 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionCallbacks.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionOptions.md +17 -0
- package/skills/neo4j-nvl-skill/references/api/react/functions/StaticPictureWrapper.md +35 -0
- package/skills/neo4j-nvl-skill/references/api/react/index.md +34 -0
- package/skills/neo4j-nvl-skill/references/api/react/interfaces/BasicReactWrapperProps.md +24 -0
- package/skills/neo4j-nvl-skill/references/api/react/interfaces/InteractiveNvlWrapperProps.md +27 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/InteractionOptions.md +10 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEvent.md +7 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEventCallbacks.md +10 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEvent.md +10 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEventCallbacks.md +10 -0
- package/skills/neo4j-nvl-skill/references/api/react/type-aliases/StaticPictureWrapperProps.md +27 -0
- package/skills/neo4j-nvl-skill/references/api/react/variables/BasicNvlWrapper.md +50 -0
- package/skills/neo4j-nvl-skill/references/api/react/variables/InteractiveNvlWrapper.md +17 -0
- package/skills/neo4j-nvl-skill/references/clustering.md +87 -0
- package/skills/neo4j-nvl-skill/references/data-from-neo4j.md +67 -0
- package/skills/neo4j-nvl-skill/references/labels-and-overlays.md +76 -0
- package/skills/neo4j-nvl-skill/references/layouts-and-positions.md +65 -0
- package/skills/neo4j-nvl-skill/references/lifecycle-and-updates.md +65 -0
- package/skills/neo4j-nvl-skill/references/migrating-1x-to-2.md +50 -0
- package/skills/neo4j-nvl-skill/references/react-wrappers.md +88 -0
- package/skills/neo4j-nvl-skill/references/verifying-nvl-apps.md +52 -0
- package/skills/neo4j-nvl-skill/references/vite-and-bundlers.md +62 -0
- package/dist/base.mjs.LICENSE.txt +0 -21
- package/dist/types/layouts/animatedlayout/AnimatedLayout.test.d.ts +0 -1
- package/dist/types/layouts/animatedlayout/animationUtils.test.d.ts +0 -1
- package/dist/types/layouts/d3forcelayout/__mocks__/d3ForceLayout.d.ts +0 -10
- package/dist/types/layouts/d3forcelayout/circularLayout.test.d.ts +0 -1
- package/dist/types/layouts/d3forcelayout/d3ForceLayout.test.d.ts +0 -1
- package/dist/types/layouts/forcedirectedlayout/ForceCytoLayout.d.ts +0 -22
- package/dist/types/layouts/forcedirectedlayout/cosebilkentlayout/CoseBilkentLayout.d.ts +0 -33
- package/dist/types/layouts/forcedirectedlayout/physlayout/PhysLayout.d.ts +0 -174
- package/dist/types/layouts/forcedirectedlayout/physlayout/PhysLayout.test.d.ts +0 -1
- package/dist/types/layouts/forcedirectedlayout/physlayout/glwrapper.d.ts +0 -4
- package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-fragment.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-repulsive-fragment.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/multilevel-update-fragment.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/sim-vertex.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/shaders/workaround-fragment.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.bench.d.ts +0 -1
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.d.ts +0 -21
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/SolarMerger.test.d.ts +0 -1
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/solar-placer.d.ts +0 -2
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/solar-placer.test.d.ts +0 -1
- package/dist/types/layouts/forcedirectedlayout/physlayout/solarmerger/types.d.ts +0 -49
- package/dist/types/modules/NvlController.test.d.ts +0 -1
- package/dist/types/modules/ZoomTransitionHandler.test.d.ts +0 -1
- package/dist/types/modules/dataset.test.d.ts +0 -1
- package/dist/types/modules/state/state.test.d.ts +0 -1
- package/dist/types/modules/state/utils.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/BaseRenderer.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/canvasrenderer/Animation.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/ImageCache.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/arrows/arrows.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/nodes/nodes.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/util.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/shared/wordwrap.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.test.d.ts +0 -1
- package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.test.d.ts +0 -1
- package/dist/types/renderers/webglrenderer/Controller.test.d.ts +0 -1
- package/dist/types/renderers/webglrenderer/Renderer.test.d.ts +0 -1
- package/dist/types/utils/ariaUtils.test.d.ts +0 -1
- package/dist/types/utils/canvasManagement.test.d.ts +0 -1
- package/dist/types/utils/circularUtils.test.d.ts +0 -1
- package/dist/types/utils/colorUtils.test.d.ts +0 -1
- package/dist/types/utils/errors.test.d.ts +0 -1
- package/dist/types/utils/geometry.test.d.ts +0 -1
- package/dist/types/utils/graphObjectUtils.test.d.ts +0 -1
- package/dist/types/utils/hittest.d.ts +0 -58
- package/dist/types/utils/hittest.test.d.ts +0 -1
- package/dist/types/utils/jsDriverResultTransformer.test.d.ts +0 -1
- package/dist/types/utils/mouseUtils.test.d.ts +0 -1
- package/dist/types/utils/webWorkerUtils.test.d.ts +0 -1
- package/dist/types/utils/zoomFunctions.test.d.ts +0 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Point } from "./geometry.js";
|
|
2
|
+
import { Node, Relationship } from "../types/graph-element.js";
|
|
3
|
+
import { Cluster, NvlState } from "../modules/state/types.js";
|
|
4
|
+
import { ClusterHitRegion } from "./clusterHitRegions.js";
|
|
5
|
+
/**
|
|
6
|
+
* A node that has been hit by a pointer event
|
|
7
|
+
*/
|
|
8
|
+
export interface HitTargetNode {
|
|
9
|
+
/** The node that was hit */
|
|
10
|
+
data: Node;
|
|
11
|
+
/** The coordinates of the node that was hit */
|
|
12
|
+
targetCoordinates: Point;
|
|
13
|
+
/** The coordinates of the pointer event */
|
|
14
|
+
pointerCoordinates: Point;
|
|
15
|
+
/** The distance vector between the node and the pointer event */
|
|
16
|
+
distanceVector: Point;
|
|
17
|
+
/** The distance between the node and the pointer event */
|
|
18
|
+
distance: number;
|
|
19
|
+
/** Whether the pointer event is inside the node */
|
|
20
|
+
insideNode: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A relationship that has been hit by a pointer event
|
|
24
|
+
*/
|
|
25
|
+
export interface HitTargetRelationship {
|
|
26
|
+
/** The relationship that was hit */
|
|
27
|
+
data: Relationship;
|
|
28
|
+
/** The coordinates of the source node of the relationship that was hit */
|
|
29
|
+
fromTargetCoordinates: Point;
|
|
30
|
+
/** The coordinates of the target node of the relationship that was hit */
|
|
31
|
+
toTargetCoordinates: Point;
|
|
32
|
+
/** The coordinates of the pointer event */
|
|
33
|
+
pointerCoordinates: Point;
|
|
34
|
+
/** The distance between the relationship and the pointer event */
|
|
35
|
+
distance: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A {@link ClusteringOptions.clusterBy} cluster hull that has been hit by a pointer event
|
|
39
|
+
*/
|
|
40
|
+
export interface HitTargetCluster {
|
|
41
|
+
/** The cluster that was hit */
|
|
42
|
+
data: Cluster;
|
|
43
|
+
/** The coordinates of the pointer event */
|
|
44
|
+
pointerCoordinates: Point;
|
|
45
|
+
/** The convex hull used for the hit test */
|
|
46
|
+
hull: Point[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A collection of nodes, relationships and clusters that have been hit by a pointer event
|
|
50
|
+
* Part of the result of a {@link NVL}.{@link NVL.getHits} call
|
|
51
|
+
*/
|
|
52
|
+
export type HitTargets = {
|
|
53
|
+
/** The nodes that have been hit by the pointer event. */
|
|
54
|
+
nodes: HitTargetNode[];
|
|
55
|
+
/** The relationships that have been hit by the pointer event. */
|
|
56
|
+
relationships: HitTargetRelationship[];
|
|
57
|
+
/** The cluster hulls that have been hit by the pointer event. */
|
|
58
|
+
clusters: HitTargetCluster[];
|
|
59
|
+
};
|
|
60
|
+
export type HitTestTarget = 'node' | 'relationship' | 'cluster';
|
|
61
|
+
/**
|
|
62
|
+
* Finds all cluster hulls that contain the given point.
|
|
63
|
+
* Overlapping hulls are returned smallest-first (most specific).
|
|
64
|
+
* @param x - X coordinate.
|
|
65
|
+
* @param y - Y coordinate.
|
|
66
|
+
* @param regions - Fitted cluster hit regions.
|
|
67
|
+
* @returns Cluster hits sorted by ascending hull area.
|
|
68
|
+
*/
|
|
69
|
+
export declare const hitClusterTest: (x: number, y: number, regions: ClusterHitRegion[]) => HitTargetCluster[];
|
|
70
|
+
export declare const hitTest: (x: number, y: number, state: NvlState, targets?: HitTestTarget[], options?: {
|
|
71
|
+
hitNodeMarginWidth?: number;
|
|
72
|
+
clusterRegions?: ClusterHitRegion[];
|
|
73
|
+
}) => HitTargets;
|
|
74
|
+
export declare const hitTestCanvas: (x: number, y: number, parentHandler: {
|
|
75
|
+
getCanvasNodesAt: (c: Point, m: number) => HitTargetNode[];
|
|
76
|
+
getCanvasRelsAt: (c: Point) => HitTargetRelationship[];
|
|
77
|
+
}, targets?: readonly HitTestTarget[], options?: {
|
|
78
|
+
hitNodeMarginWidth?: number;
|
|
79
|
+
clusterRegions?: ClusterHitRegion[];
|
|
80
|
+
}) => HitTargets;
|
|
81
|
+
export declare const hitTestBox: (x1: number, y1: number, x2: number, y2: number, state: NvlState, targets?: string[]) => {
|
|
82
|
+
nodes: Node[];
|
|
83
|
+
rels: Relationship[];
|
|
84
|
+
};
|
|
@@ -1,42 +1,44 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { Node as Node$1, Relationship as Relationship$1 } from "../types/graph-element.js";
|
|
2
|
+
import { Node, Path, Record, Relationship } from "neo4j-driver";
|
|
3
3
|
export declare const recordMapper: (record: Record) => any[];
|
|
4
|
-
type GraphElement =
|
|
4
|
+
type GraphElement = Node | Relationship | Path;
|
|
5
5
|
type NestedGraphElements = GraphElement | NestedGraphElements[];
|
|
6
6
|
export declare const recordCollector: (graphElements: NestedGraphElements[]) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/** The nodes of the graph. */
|
|
8
|
+
nodes: Node$1[];
|
|
9
|
+
/** The relationships of the graph. */
|
|
10
|
+
relationships: Relationship$1[];
|
|
11
|
+
/** A map from element id to the driver graph element. */
|
|
12
|
+
recordObjectMap: Map<string, Node | Relationship | Path>;
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* Result transformer for the Neo4j JavaScript driver results to NVL graph elements.
|
|
16
16
|
* @example
|
|
17
17
|
*
|
|
18
18
|
* ```ts
|
|
19
|
-
* import neo4j from
|
|
20
|
-
* import { nvlResultTransformer, NVL } from
|
|
19
|
+
* import * as neo4j from 'neo4j-driver'
|
|
20
|
+
* import { nvlResultTransformer, NVL } from '@neo4j-nvl/base'
|
|
21
21
|
*
|
|
22
|
-
* const
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
22
|
+
* const run = async () => {
|
|
23
|
+
* const driver = neo4j.driver('{uri}', neo4j.auth.basic('{user}', '{password}'))
|
|
24
|
+
* const nvlGraph = await driver.executeQuery(
|
|
25
|
+
* 'MATCH (a)-[r]-(b) RETURN a,r,b LIMIT 25',
|
|
26
|
+
* {},
|
|
27
|
+
* { resultTransformer: nvlResultTransformer }
|
|
28
|
+
* )
|
|
28
29
|
*
|
|
29
|
-
*
|
|
30
|
+
* const nvl = new NVL(document.getElementById('viz'), nvlGraph.nodes, nvlGraph.relationships)
|
|
31
|
+
* }
|
|
30
32
|
* ```
|
|
31
33
|
*
|
|
32
34
|
* @see {@link https://neo4j.com/docs/api/javascript-driver/current/class/lib6/result-transformers.js~ResultTransformers.html|ResultTransformers on Neo4j JS Driver API Docs}
|
|
33
35
|
*/
|
|
34
36
|
export declare const nvlResultTransformer: import("neo4j-driver-core").ResultTransformer<{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
/** The nodes of the graph. */
|
|
38
|
+
nodes: Node$1[];
|
|
39
|
+
/** The relationships of the graph. */
|
|
40
|
+
relationships: Relationship$1[];
|
|
41
|
+
/** A map from element id to the driver graph element. */
|
|
42
|
+
recordObjectMap: Map<string, Node | Relationship | Path>;
|
|
41
43
|
}>;
|
|
42
|
-
export {};
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Point } from "./geometry.js";
|
|
2
|
+
export type SeedingMethod = 'box' | 'circle';
|
|
3
|
+
export declare const getCircleSeedRadius: (nodeCount: number, seedSpacing: number) => number;
|
|
4
|
+
export declare const getBoxStartSize: (nodeCount: number) => number;
|
|
5
|
+
export declare const getCirclePositionsForNodeCount: (nodeCount: number, center: Point, radius: number) => Point[];
|
|
6
|
+
export declare const getBoxPositionsForNodeCount: (nodeCount: number, center: Point) => Point[];
|
|
7
|
+
export declare const getSeedPositions: (nodeCount: number, seedingMethod: SeedingMethod, center?: Point) => Point[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare const getMouseElementCoordinates: (evt: MouseEvent, element: HTMLElement) => {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
offsetX: number;
|
|
3
|
+
offsetY: number;
|
|
4
4
|
};
|
|
5
5
|
export declare const getMousePosition: (evt: MouseEvent, canvas: HTMLElement, zoom?: number, panX?: number, panY?: number) => {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
8
|
};
|
|
9
|
-
export declare const getNewZoom: (evt: WheelEvent, currentZoom?: number) => number;
|
|
9
|
+
export declare const getNewZoom: (evt: WheelEvent, currentZoom?: number) => number;
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import * as SegmentJS from
|
|
1
|
+
import * as SegmentJS from "@segment/analytics-next";
|
|
2
2
|
type AnalyticsTrackPayload = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
eventPrefix: string;
|
|
4
|
+
event: string;
|
|
5
|
+
properties?: Record<string, unknown>;
|
|
6
6
|
};
|
|
7
7
|
export declare abstract class AnalyticsFunction {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Perform asynchronous bootstrapping.
|
|
10
|
+
*/
|
|
11
|
+
abstract init(apiKey: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* Associate session with known user identifier.
|
|
14
|
+
*/
|
|
15
|
+
abstract identify(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Load unique segment Id in the localstorage.
|
|
18
|
+
*/
|
|
19
|
+
abstract loadSavedSegmentId(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Save unique segment Id in the localstorage.
|
|
22
|
+
*/
|
|
23
|
+
abstract saveTrackingId(segmentId: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get/fetch unique segment Id from the localstorage.
|
|
26
|
+
*/
|
|
27
|
+
abstract getSegmentTrackingId(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Track arbitrary event.
|
|
30
|
+
*/
|
|
31
|
+
abstract trackEvent(payload: AnalyticsTrackPayload): Promise<void>;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Analytics adapter for Segment Analytics.js.
|
|
35
35
|
*/
|
|
36
36
|
export declare class SegmentAnalytics implements AnalyticsFunction {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
private analytics;
|
|
38
|
+
constructor();
|
|
39
|
+
init(apiKey: string): void;
|
|
40
|
+
trackEvent(payload: {
|
|
41
|
+
eventPrefix: string;
|
|
42
|
+
event: string;
|
|
43
|
+
properties: SegmentJS.EventProperties;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
identify(): void;
|
|
46
|
+
loadSavedSegmentId(): string;
|
|
47
|
+
getSegmentTrackingId(): string;
|
|
48
|
+
saveTrackingId(segmentId: string): void;
|
|
49
|
+
private ready;
|
|
50
50
|
}
|
|
51
|
-
export {};
|
|
51
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
type Layouts = '
|
|
1
|
+
type Layouts = 'HierarchicalLayout';
|
|
2
2
|
export declare const initializeWorker: (workerName: Layouts, workersDisabled?: boolean) => SharedWorker;
|
|
3
|
-
export {};
|
|
3
|
+
export {};
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { Point } from "./geometry.js";
|
|
2
|
+
import { Node } from "../types/graph-element.js";
|
|
3
|
+
import "../index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Gets padding for fitting nodes, which is twice the largest node radius.
|
|
6
|
+
* @param maxNodeRadius - The largest node radius.
|
|
7
|
+
* @returns The padding for fitting nodes.
|
|
8
|
+
*/
|
|
9
|
+
declare const getFitNodesPadding: (maxNodeRadius?: number) => number;
|
|
3
10
|
declare const getExtremeLimits: (nodePositions: Point[]) => Point[];
|
|
4
11
|
declare const getMaxDistance: (extremeLimits?: Point[]) => number;
|
|
5
12
|
/**
|
|
@@ -9,10 +16,10 @@ declare const getMaxDistance: (extremeLimits?: Point[]) => number;
|
|
|
9
16
|
* @returns An object with the center x and y coordinates and the width and height.
|
|
10
17
|
*/
|
|
11
18
|
declare const getPositionBoundaries: (nodePositions?: Point[] | Node[], maxNodeRadius?: number) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
centerX: number;
|
|
20
|
+
centerY: number;
|
|
21
|
+
nodesWidth: number;
|
|
22
|
+
nodesHeight: number;
|
|
16
23
|
};
|
|
17
24
|
/**
|
|
18
25
|
* Gets the required zoom level for the given view and scene dimensions to fit the scene into the view.
|
|
@@ -23,8 +30,8 @@ declare const getPositionBoundaries: (nodePositions?: Point[] | Node[], maxNodeR
|
|
|
23
30
|
* @returns An object with the zoom level for the x and y axis.
|
|
24
31
|
*/
|
|
25
32
|
declare const getZoomLevel: (viewWidth: number, viewHeight: number, sceneWidth: number, sceneHeight: number) => {
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
zoomX: number;
|
|
34
|
+
zoomY: number;
|
|
28
35
|
};
|
|
29
36
|
/**
|
|
30
37
|
* Creates a zoom target based on the given zoom levels and the min and max zoom level.
|
|
@@ -40,19 +47,20 @@ declare const createZoomTarget: (zoomX: number, zoomY: number, minZoom?: number,
|
|
|
40
47
|
* @param nodePositions - The node positions.
|
|
41
48
|
* @param containerWidth - The width of the container NVL is displayed in.
|
|
42
49
|
* @param containerHeight - The height of the container NVL is displayed in.
|
|
43
|
-
* @param maxNodeRadius - The maximum node radius, which is added as margin to the scene
|
|
50
|
+
* @param maxNodeRadius - The maximum node radius, which is added as margin to the scene
|
|
51
|
+
* (defaults to 2 * {@link DefaultNodeSize}).
|
|
44
52
|
* @returns The zoom and pan targets.
|
|
45
53
|
*/
|
|
46
54
|
declare const getZoomTargetForNodePositions: (nodePositions: Point[], containerWidth: number, containerHeight: number, maxNodeRadius?: number) => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
/** The zoom level. */
|
|
56
|
+
zoom: number;
|
|
57
|
+
/** The x-coordinate of the pan. */
|
|
58
|
+
panX: number;
|
|
59
|
+
/** The y-coordinate of the pan. */
|
|
60
|
+
panY: number;
|
|
53
61
|
};
|
|
54
62
|
declare const getFlexibleZoomLimit: (nodePositions: Point[], rect: HTMLCanvasElement, maxNodeRadius: number) => number;
|
|
55
63
|
declare const getNewZoomWithinLimits: (newZoom: number, oldZoom: number, minZoom: number, maxZoom: number) => number;
|
|
56
64
|
declare const isZoomOutAtLimit: (newZoom: number, oldZoom: number, zoomOutLimit: number) => boolean;
|
|
57
65
|
declare const getDynamicZoom: (nodePositions: Point[] & Node[], minZoom: number, maxZoom: number, rect: HTMLCanvasElement, newZoom: number, currentZoom: number) => number;
|
|
58
|
-
export {
|
|
66
|
+
export { createZoomTarget, getDynamicZoom, getExtremeLimits, getFitNodesPadding, getFlexibleZoomLimit, getMaxDistance, getNewZoomWithinLimits, getPositionBoundaries, getZoomLevel, getZoomTargetForNodePositions, isZoomOutAtLimit };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neo4j-nvl/base",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-1e695738",
|
|
4
4
|
"license": "SEE LICENSE IN 'LICENSE.txt'",
|
|
5
5
|
"homepage": "https://neo4j.com/docs/nvl/current/",
|
|
6
6
|
"description": "Base library for the Neo4j Visualization Library",
|
|
@@ -12,16 +12,19 @@
|
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://community.neo4j.com/c/neo4j-graph-platform/neo4j-bloom"
|
|
14
14
|
},
|
|
15
|
+
"type": "module",
|
|
15
16
|
"main": "dist/base.mjs",
|
|
16
17
|
"types": "dist/types/index.d.ts",
|
|
17
18
|
"files": [
|
|
18
19
|
"LICENSE.txt",
|
|
19
|
-
"dist"
|
|
20
|
+
"dist",
|
|
21
|
+
"skills",
|
|
22
|
+
"!skills/*/evals"
|
|
20
23
|
],
|
|
21
24
|
"scripts": {
|
|
22
|
-
"build": "yarn global:tsc &&
|
|
23
|
-
"build:dev": "yarn global:tsc &&
|
|
24
|
-
"watch": "concurrently 'tsc -w' '
|
|
25
|
+
"build": "yarn global:tsc && vite build && tsdown",
|
|
26
|
+
"build:dev": "yarn global:tsc && vite build --mode development && tsdown",
|
|
27
|
+
"watch": "concurrently 'tsc -w' 'vite build --watch --mode development' 'tsdown --watch' -k -n 'tsc,vite,dts' -c 'cyan,magenta,yellow'",
|
|
25
28
|
"test": "yarn global:jest",
|
|
26
29
|
"test:perf": "yarn global:jest --testPathPattern='.bench.' --testPathIgnorePatterns=",
|
|
27
30
|
"eslint": "yarn global:eslint ./src/",
|
|
@@ -30,7 +33,7 @@
|
|
|
30
33
|
"postpack": "rm LICENSE.txt && rm CHANGELOG.md"
|
|
31
34
|
},
|
|
32
35
|
"dependencies": {
|
|
33
|
-
"@neo4j-nvl/layout-workers": "
|
|
36
|
+
"@neo4j-nvl/layout-workers": "2.0.0-1e695738",
|
|
34
37
|
"@segment/analytics-next": "1.81.1",
|
|
35
38
|
"color-string": "1.9.1",
|
|
36
39
|
"d3-force": "3.0.0",
|
|
@@ -38,26 +41,23 @@
|
|
|
38
41
|
"glsl-inject-defines": "1.0.3",
|
|
39
42
|
"lodash": "4.18.1",
|
|
40
43
|
"loglevel": "1.9.2",
|
|
41
|
-
"mobx": "
|
|
44
|
+
"mobx": "6.15.0",
|
|
42
45
|
"node-pid-controller": "1.0.1",
|
|
43
|
-
"resizelistener": "1.1.0",
|
|
44
46
|
"tinycolor2": "1.6.0",
|
|
45
|
-
"uuid": "14.0.
|
|
47
|
+
"uuid": "14.0.3"
|
|
46
48
|
},
|
|
47
49
|
"devDependencies": {
|
|
48
|
-
"@babel/core": "7.29.7",
|
|
49
50
|
"@types/color-string": "1.5.5",
|
|
50
51
|
"@types/d3-force": "3.0.10",
|
|
51
52
|
"@types/lodash": "4.17.21",
|
|
52
53
|
"@types/segment-analytics": "0.0.38",
|
|
53
54
|
"@types/tinycolor2": "1.4.6",
|
|
54
|
-
"babel-loader": "8.4.1",
|
|
55
|
-
"copy-webpack-plugin": "11.0.0",
|
|
56
55
|
"neo4j-driver": "5.28.2",
|
|
57
|
-
"
|
|
58
|
-
"
|
|
56
|
+
"tsdown": "0.23.1",
|
|
57
|
+
"vite": "8.3.5"
|
|
59
58
|
},
|
|
60
59
|
"peerDependencies": {
|
|
61
60
|
"neo4j-driver": "*"
|
|
62
|
-
}
|
|
61
|
+
},
|
|
62
|
+
"stableVersion": "2.0.0"
|
|
63
63
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# neo4j-nvl-skill
|
|
2
|
+
|
|
3
|
+
Skill for the Neo4j Visualization Library (NVL) — covering:
|
|
4
|
+
|
|
5
|
+
- `@neo4j-nvl/base` — `NVL` class, nodes/relationships, options, callbacks, hit testing, image export
|
|
6
|
+
- `@neo4j-nvl/interaction-handlers` — `ZoomInteraction`, `PanInteraction`, `DragNodeInteraction`, `ClickInteraction`, `HoverInteraction`, `BoxSelectInteraction`, `LassoInteraction`, `KeyboardInteraction`
|
|
7
|
+
- `@neo4j-nvl/react` — `InteractiveNvlWrapper`, `BasicNvlWrapper`, `StaticPictureWrapper`
|
|
8
|
+
- `nvlResultTransformer` for piping `driver.executeQuery` results straight into NVL
|
|
9
|
+
- Canvas vs WebGL renderer selection (~1k vs 100k+ nodes)
|
|
10
|
+
- Layout selection (`forceDirected`, `hierarchical`, `circular`, `grid`, `free`, `d3Force`)
|
|
11
|
+
- force-directed and hierarchical `clusterBy`, cluster decorations, hit testing, and callbacks
|
|
12
|
+
- Container setup, Web Worker fallback, telemetry opt-out
|
|
13
|
+
|
|
14
|
+
**Not covered** (see sibling tools / skills):
|
|
15
|
+
- Out-of-the-box embedded graph view with default styling → `GraphVisualization` component in `@neo4j-ndl/react` (Neo4j Needle design system) — wraps NVL with defaults
|
|
16
|
+
- Python / Jupyter graph visualization → `neo4j/python-graph-visualization` (Python port of NVL)
|
|
17
|
+
- Cypher query authoring → `neo4j-cypher-skill`
|
|
18
|
+
- Driver lifecycle, sessions, `executeQuery` setup → `neo4j-driver-javascript-skill`
|
|
19
|
+
- GDS algorithms → `neo4j-gds-skill` / `neo4j-aura-graph-analytics-skill`
|
|
20
|
+
|
|
21
|
+
**Compatibility:** `@neo4j-nvl` packages 2.0.x; React 19 for `@neo4j-nvl/react`; modern browsers with Canvas2D and WebGL2.
|
|
22
|
+
|
|
23
|
+
**Install:**
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @neo4j-nvl/base
|
|
27
|
+
npm install @neo4j-nvl/interaction-handlers # optional, for vanilla JS interactions
|
|
28
|
+
npm install @neo4j-nvl/react # optional, for React apps
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Starter templates: https://github.com/neo4j-devtools/nvl-boilerplates
|
|
32
|
+
|
|
33
|
+
**Install skill:**
|
|
34
|
+
|
|
35
|
+
This skill ships inside `@neo4j-nvl/base`. After installing the package, sync it into your agent's skills directory:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx skills experimental_sync
|
|
39
|
+
```
|