@neo4j-nvl/base 2.0.0-c8e499dc → 2.0.0-ec6fdba7

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 (227) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/base.mjs +1062 -1058
  3. package/dist/types/index.d.ts +382 -385
  4. package/dist/types/layouts/animatedlayout/AnimatedLayout.d.ts +23 -23
  5. package/dist/types/layouts/animatedlayout/animationUtils.d.ts +3 -3
  6. package/dist/types/layouts/circularLayout/CircularLayout.d.ts +14 -14
  7. package/dist/types/layouts/d3forcelayout/circularLayout.d.ts +4 -4
  8. package/dist/types/layouts/d3forcelayout/constants.d.ts +3 -3
  9. package/dist/types/layouts/d3forcelayout/d3ForceLayout.d.ts +31 -31
  10. package/dist/types/layouts/d3forcelayout/types.d.ts +7 -7
  11. package/dist/types/layouts/forcedirectedlayout/PhysLayout.d.ts +261 -261
  12. package/dist/types/layouts/forcedirectedlayout/clustering/ClusterByMerger.d.ts +52 -52
  13. package/dist/types/layouts/forcedirectedlayout/clustering/SolarMerger.d.ts +49 -49
  14. package/dist/types/layouts/forcedirectedlayout/clustering/clustering-utils.d.ts +35 -35
  15. package/dist/types/layouts/forcedirectedlayout/clustering/types.d.ts +39 -39
  16. package/dist/types/layouts/forcedirectedlayout/glwrapper.d.ts +3 -3
  17. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-fragment.d.ts +1 -1
  18. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-repulsive-fragment.d.ts +1 -1
  19. package/dist/types/layouts/forcedirectedlayout/shaders/multilevel-update-fragment.d.ts +1 -1
  20. package/dist/types/layouts/forcedirectedlayout/shaders/sim-vertex.d.ts +1 -1
  21. package/dist/types/layouts/freeLayout/FreeLayout.d.ts +23 -23
  22. package/dist/types/layouts/gridLayout/GridLayout.d.ts +26 -26
  23. package/dist/types/layouts/hierarchicallayout/HierarchicalLayout.d.ts +28 -28
  24. package/dist/types/layouts/hierarchicallayout/constants.d.ts +2 -2
  25. package/dist/types/modules/CallbackHelper.d.ts +23 -23
  26. package/dist/types/modules/ExternalCallbackHandler.d.ts +33 -33
  27. package/dist/types/modules/NvlController.d.ts +212 -209
  28. package/dist/types/modules/Shader.d.ts +17 -17
  29. package/dist/types/modules/ZoomTransitionHandler.d.ts +24 -24
  30. package/dist/types/modules/dataset.d.ts +24 -24
  31. package/dist/types/modules/logging.d.ts +4 -4
  32. package/dist/types/modules/state/constants.d.ts +2 -2
  33. package/dist/types/modules/state/state.d.ts +2 -2
  34. package/dist/types/modules/state/types.d.ts +296 -288
  35. package/dist/types/modules/state/utils.d.ts +36 -36
  36. package/dist/types/renderers/ClusterOverlay.d.ts +67 -67
  37. package/dist/types/renderers/domrenderer/BaseRenderer.d.ts +69 -69
  38. package/dist/types/renderers/domrenderer/canvasrenderer/Animation.d.ts +57 -57
  39. package/dist/types/renderers/domrenderer/canvasrenderer/AnimationHandler.d.ts +65 -65
  40. package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.d.ts +84 -85
  41. package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.d.ts +31 -31
  42. package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.d.ts +32 -32
  43. package/dist/types/renderers/domrenderer/shared/ImageCache.d.ts +16 -16
  44. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.d.ts +89 -89
  45. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.d.ts +42 -42
  46. package/dist/types/renderers/domrenderer/shared/arrows/arrows.d.ts +49 -49
  47. package/dist/types/renderers/domrenderer/shared/arrows/constants.d.ts +4 -4
  48. package/dist/types/renderers/domrenderer/shared/nodes/nodes.d.ts +21 -21
  49. package/dist/types/renderers/domrenderer/shared/types.d.ts +29 -29
  50. package/dist/types/renderers/domrenderer/shared/util.d.ts +4 -4
  51. package/dist/types/renderers/domrenderer/shared/vectorUtils.d.ts +10 -10
  52. package/dist/types/renderers/domrenderer/shared/wordwrap.d.ts +10 -10
  53. package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.d.ts +18 -19
  54. package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.d.ts +15 -15
  55. package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.d.ts +4 -4
  56. package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.d.ts +21 -21
  57. package/dist/types/renderers/webglrenderer/Controller.d.ts +83 -82
  58. package/dist/types/renderers/webglrenderer/IconLayerRegistry.d.ts +8 -8
  59. package/dist/types/renderers/webglrenderer/Renderer.d.ts +89 -89
  60. package/dist/types/renderers/webglrenderer/node-animation-fragment.d.ts +1 -1
  61. package/dist/types/renderers/webglrenderer/node-animation-vertex.d.ts +1 -1
  62. package/dist/types/renderers/webglrenderer/node-fragment-point.d.ts +1 -1
  63. package/dist/types/renderers/webglrenderer/node-vertex-point.d.ts +1 -1
  64. package/dist/types/renderers/webglrenderer/rel-fragment-line.d.ts +1 -1
  65. package/dist/types/renderers/webglrenderer/rel-glsl-utils.d.ts +1 -1
  66. package/dist/types/renderers/webglrenderer/rel-vertex-arrow.d.ts +1 -1
  67. package/dist/types/renderers/webglrenderer/rel-vertex-line.d.ts +1 -1
  68. package/dist/types/renderers/webglrenderer/viewport-box-fragment.d.ts +1 -1
  69. package/dist/types/renderers/webglrenderer/viewport-box-vertex.d.ts +1 -1
  70. package/dist/types/types/graph-element.d.ts +103 -103
  71. package/dist/types/types/nvl-window-functions.d.ts +12 -13
  72. package/dist/types/types/utils.d.ts +1 -1
  73. package/dist/types/utils/ariaUtils.d.ts +2 -2
  74. package/dist/types/utils/canvasManagement.d.ts +1 -1
  75. package/dist/types/utils/circularUtils.d.ts +2 -2
  76. package/dist/types/utils/clusterGeometry.d.ts +3 -3
  77. package/dist/types/utils/clusterHitRegions.d.ts +12 -12
  78. package/dist/types/utils/colorUtils.d.ts +2 -2
  79. package/dist/types/utils/constants.d.ts +6 -6
  80. package/dist/types/utils/errors.d.ts +6 -6
  81. package/dist/types/utils/geometry.d.ts +48 -48
  82. package/dist/types/utils/graphObjectUtils.d.ts +9 -9
  83. package/dist/types/utils/hitTest.d.ts +47 -47
  84. package/dist/types/utils/jsDriverResultTransformer.d.ts +16 -16
  85. package/dist/types/utils/layoutSeeding.d.ts +2 -2
  86. package/dist/types/utils/mouseUtils.d.ts +5 -5
  87. package/dist/types/utils/segmentAnalytics.d.ts +42 -42
  88. package/dist/types/utils/webWorkerUtils.d.ts +1 -1
  89. package/dist/types/utils/zoomFunctions.d.ts +16 -15
  90. package/package.json +12 -10
  91. package/skills/neo4j-nvl-skill/SKILL.md +238 -398
  92. package/skills/neo4j-nvl-skill/references/api/base/classes/NVL.md +977 -0
  93. package/skills/neo4j-nvl-skill/references/api/base/functions/getZoomTargetForNodePositions.md +37 -0
  94. package/skills/neo4j-nvl-skill/references/api/base/index.md +71 -0
  95. package/skills/neo4j-nvl-skill/references/api/base/interfaces/CircularOptions.md +11 -0
  96. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ClusteringOptions.md +14 -0
  97. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ExternalCallbacks.md +18 -0
  98. package/skills/neo4j-nvl-skill/references/api/base/interfaces/ForceDirectedOptions.md +12 -0
  99. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HierarchicalOptions.md +13 -0
  100. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetCluster.md +13 -0
  101. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetNode.md +16 -0
  102. package/skills/neo4j-nvl-skill/references/api/base/interfaces/HitTargetRelationship.md +15 -0
  103. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Node.md +32 -0
  104. package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlMouseEvent.md +16 -0
  105. package/skills/neo4j-nvl-skill/references/api/base/interfaces/NvlOptions.md +38 -0
  106. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Point.md +12 -0
  107. package/skills/neo4j-nvl-skill/references/api/base/interfaces/Relationship.md +32 -0
  108. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/CanvasRendererType.md +14 -0
  109. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Cluster.md +20 -0
  110. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterByFn.md +20 -0
  111. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ClusterId.md +10 -0
  112. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTargets.md +22 -0
  113. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/HitTestTarget.md +7 -0
  114. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Layout.md +15 -0
  115. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/LayoutOptions.md +12 -0
  116. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/NodeWithClientPosition.md +18 -0
  117. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialNode.md +17 -0
  118. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/PartialRelationship.md +17 -0
  119. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/Renderer.md +9 -0
  120. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/StyledCaption.md +21 -0
  121. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/WebGLRendererType.md +14 -0
  122. package/skills/neo4j-nvl-skill/references/api/base/type-aliases/ZoomOptions.md +25 -0
  123. package/skills/neo4j-nvl-skill/references/api/base/variables/CircularLayoutType.md +11 -0
  124. package/skills/neo4j-nvl-skill/references/api/base/variables/ForceDirectedLayoutType.md +9 -0
  125. package/skills/neo4j-nvl-skill/references/api/base/variables/FreeLayoutType.md +9 -0
  126. package/skills/neo4j-nvl-skill/references/api/base/variables/GridLayoutType.md +9 -0
  127. package/skills/neo4j-nvl-skill/references/api/base/variables/HierarchicalLayoutType.md +9 -0
  128. package/skills/neo4j-nvl-skill/references/api/base/variables/d3ForceLayoutType.md +9 -0
  129. package/skills/neo4j-nvl-skill/references/api/base/variables/nvlResultTransformer.md +38 -0
  130. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/BoxSelectInteraction.md +163 -0
  131. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ClickInteraction.md +163 -0
  132. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/DragNodeInteraction.md +164 -0
  133. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/HoverInteraction.md +160 -0
  134. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/KeyboardInteraction.md +185 -0
  135. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/LassoInteraction.md +163 -0
  136. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/PanInteraction.md +196 -0
  137. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/classes/ZoomInteraction.md +164 -0
  138. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/index.md +37 -0
  139. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionCallbacks.md +19 -0
  140. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/BoxSelectInteractionOptions.md +17 -0
  141. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionCallbacks.md +39 -0
  142. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ClickInteractionOptions.md +17 -0
  143. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DragNodeInteractionCallbacks.md +21 -0
  144. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/DrawInteractionOptions.md +22 -0
  145. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionCallbacks.md +17 -0
  146. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/HoverInteractionOptions.md +17 -0
  147. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionCallbacks.md +35 -0
  148. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/KeyboardInteractionOptions.md +55 -0
  149. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionCallbacks.md +19 -0
  150. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/LassoInteractionOptions.md +17 -0
  151. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionCallbacks.md +17 -0
  152. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/PanInteractionOptions.md +19 -0
  153. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionCallbacks.md +17 -0
  154. package/skills/neo4j-nvl-skill/references/api/interaction-handlers/type-aliases/ZoomInteractionOptions.md +17 -0
  155. package/skills/neo4j-nvl-skill/references/api/react/functions/StaticPictureWrapper.md +35 -0
  156. package/skills/neo4j-nvl-skill/references/api/react/index.md +34 -0
  157. package/skills/neo4j-nvl-skill/references/api/react/interfaces/BasicReactWrapperProps.md +24 -0
  158. package/skills/neo4j-nvl-skill/references/api/react/interfaces/InteractiveNvlWrapperProps.md +27 -0
  159. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/InteractionOptions.md +10 -0
  160. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEvent.md +7 -0
  161. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/KeyboardEventCallbacks.md +10 -0
  162. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEvent.md +10 -0
  163. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/MouseEventCallbacks.md +10 -0
  164. package/skills/neo4j-nvl-skill/references/api/react/type-aliases/StaticPictureWrapperProps.md +27 -0
  165. package/skills/neo4j-nvl-skill/references/api/react/variables/BasicNvlWrapper.md +50 -0
  166. package/skills/neo4j-nvl-skill/references/api/react/variables/InteractiveNvlWrapper.md +17 -0
  167. package/skills/neo4j-nvl-skill/references/clustering.md +87 -0
  168. package/skills/neo4j-nvl-skill/references/data-from-neo4j.md +67 -0
  169. package/skills/neo4j-nvl-skill/references/labels-and-overlays.md +76 -0
  170. package/skills/neo4j-nvl-skill/references/layouts-and-positions.md +65 -0
  171. package/skills/neo4j-nvl-skill/references/lifecycle-and-updates.md +65 -0
  172. package/skills/neo4j-nvl-skill/references/migrating-1x-to-2.md +50 -0
  173. package/skills/neo4j-nvl-skill/references/react-wrappers.md +88 -0
  174. package/skills/neo4j-nvl-skill/references/verifying-nvl-apps.md +52 -0
  175. package/skills/neo4j-nvl-skill/references/vite-and-bundlers.md +62 -0
  176. package/dist/types/layouts/animatedlayout/AnimatedLayout.test.d.ts +0 -1
  177. package/dist/types/layouts/animatedlayout/animationUtils.test.d.ts +0 -1
  178. package/dist/types/layouts/d3forcelayout/__mocks__/d3ForceLayout.d.ts +0 -10
  179. package/dist/types/layouts/d3forcelayout/circularLayout.test.d.ts +0 -1
  180. package/dist/types/layouts/d3forcelayout/d3ForceLayout.test.d.ts +0 -1
  181. package/dist/types/layouts/forcedirectedlayout/PhysLayout.test.d.ts +0 -1
  182. package/dist/types/layouts/forcedirectedlayout/clustering/ClusterByMerger.test.d.ts +0 -1
  183. package/dist/types/layouts/forcedirectedlayout/clustering/SolarMerger.bench.d.ts +0 -1
  184. package/dist/types/layouts/forcedirectedlayout/clustering/SolarMerger.test.d.ts +0 -1
  185. package/dist/types/layouts/forcedirectedlayout/clustering/clustering-utils.test.d.ts +0 -1
  186. package/dist/types/modules/NvlController.test.d.ts +0 -1
  187. package/dist/types/modules/ZoomTransitionHandler.test.d.ts +0 -1
  188. package/dist/types/modules/dataset.test.d.ts +0 -1
  189. package/dist/types/modules/state/state.test.d.ts +0 -1
  190. package/dist/types/modules/state/utils.test.d.ts +0 -1
  191. package/dist/types/renderers/ClusterOverlay.test.d.ts +0 -1
  192. package/dist/types/renderers/domrenderer/BaseRenderer.test.d.ts +0 -1
  193. package/dist/types/renderers/domrenderer/canvasrenderer/Animation.test.d.ts +0 -1
  194. package/dist/types/renderers/domrenderer/canvasrenderer/CanvasRenderer.test.d.ts +0 -1
  195. package/dist/types/renderers/domrenderer/canvasrenderer/arrowDrawing.test.d.ts +0 -1
  196. package/dist/types/renderers/domrenderer/canvasrenderer/nodeDrawing.test.d.ts +0 -1
  197. package/dist/types/renderers/domrenderer/shared/ImageCache.test.d.ts +0 -1
  198. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundle.test.d.ts +0 -1
  199. package/dist/types/renderers/domrenderer/shared/arrows/ArrowBundler.test.d.ts +0 -1
  200. package/dist/types/renderers/domrenderer/shared/arrows/arrows.test.d.ts +0 -1
  201. package/dist/types/renderers/domrenderer/shared/nodes/nodes.test.d.ts +0 -1
  202. package/dist/types/renderers/domrenderer/shared/util.test.d.ts +0 -1
  203. package/dist/types/renderers/domrenderer/shared/wordwrap.test.d.ts +0 -1
  204. package/dist/types/renderers/domrenderer/svgrenderer/SvgRenderer.test.d.ts +0 -1
  205. package/dist/types/renderers/domrenderer/svgrenderer/arrowDrawing.test.d.ts +0 -1
  206. package/dist/types/renderers/domrenderer/svgrenderer/nodeDrawing.test.d.ts +0 -1
  207. package/dist/types/renderers/domrenderer/svgrenderer/svgUtils.test.d.ts +0 -1
  208. package/dist/types/renderers/webglrenderer/Controller.test.d.ts +0 -1
  209. package/dist/types/renderers/webglrenderer/IconLayerRegistry.test.d.ts +0 -1
  210. package/dist/types/renderers/webglrenderer/Renderer.test.d.ts +0 -1
  211. package/dist/types/utils/ariaUtils.test.d.ts +0 -1
  212. package/dist/types/utils/canvasManagement.test.d.ts +0 -1
  213. package/dist/types/utils/circularUtils.test.d.ts +0 -1
  214. package/dist/types/utils/clusterGeometry.test.d.ts +0 -1
  215. package/dist/types/utils/clusterHitRegions.test.d.ts +0 -1
  216. package/dist/types/utils/colorUtils.test.d.ts +0 -1
  217. package/dist/types/utils/errors.test.d.ts +0 -1
  218. package/dist/types/utils/geometry.test.d.ts +0 -1
  219. package/dist/types/utils/graphObjectUtils.test.d.ts +0 -1
  220. package/dist/types/utils/hitTest.test.d.ts +0 -1
  221. package/dist/types/utils/jsDriverResultTransformer.test.d.ts +0 -1
  222. package/dist/types/utils/layoutSeeding.test.d.ts +0 -1
  223. package/dist/types/utils/mouseUtils.test.d.ts +0 -1
  224. package/dist/types/utils/webWorkerUtils.test.d.ts +0 -1
  225. package/dist/types/utils/zoomFunctions.test.d.ts +0 -1
  226. package/skills/neo4j-nvl-skill/references/api-surface.md +0 -596
  227. package/skills/neo4j-nvl-skill/references/troubleshooting.md +0 -317
@@ -10,13 +10,13 @@
10
10
  * @param isDisabled - Whether the icon should be disabled
11
11
  */
12
12
  export declare const createSvgIconElement: (options: {
13
- nodeX: number;
14
- nodeY: number;
15
- iconXPos: number;
16
- iconYPos: number;
17
- iconSize: number;
18
- image: HTMLCanvasElement;
19
- isDisabled: boolean;
13
+ nodeX: number;
14
+ nodeY: number;
15
+ iconXPos: number;
16
+ iconYPos: number;
17
+ iconSize: number;
18
+ image: HTMLCanvasElement;
19
+ isDisabled: boolean;
20
20
  }) => SVGImageElement;
21
21
  /**
22
22
  * Calculates the SVG transform string for viewport positioning
@@ -51,17 +51,17 @@ export declare const applySvgTextStyles: (tspanElem: SVGTSpanElement, styleStr:
51
51
  * @returns SVG text element with tspan children
52
52
  */
53
53
  export declare const createStyledTextElement: (options: {
54
- x: number;
55
- y: number;
56
- fontSize: number;
57
- fontFace: string;
58
- fontColor: string;
59
- textAnchor: string;
60
- dominantBaseline: string;
61
- lineSpans: {
62
- text: string;
63
- style: string;
64
- }[];
65
- transform?: string;
66
- fontWeight?: string;
67
- }) => SVGTextElement;
54
+ x: number;
55
+ y: number;
56
+ fontSize: number;
57
+ fontFace: string;
58
+ fontColor: string;
59
+ textAnchor: string;
60
+ dominantBaseline: string;
61
+ lineSpans: {
62
+ text: string;
63
+ style: string;
64
+ }[];
65
+ transform?: string;
66
+ fontWeight?: string;
67
+ }) => SVGTextElement;
@@ -1,87 +1,88 @@
1
- import type { Node, Relationship } from '../../index';
2
- import type { DataSet } from '../../modules/dataset';
3
- import type { NvlState } from '../../modules/state/types';
4
- import type Renderer from './Renderer';
1
+ import { Node, Relationship } from "../../types/graph-element.js";
2
+ import { DataSet } from "../../modules/dataset.js";
3
+ import { NvlState } from "../../modules/state/types.js";
4
+ import "../../index.js";
5
+ import Renderer from "./Renderer.js";
5
6
  export interface ControllerInterface {
6
- mainSceneRenderer: Renderer;
7
- minimapRenderer: Renderer;
8
- needsRun: boolean;
9
- minimapMouseDown: boolean;
10
- stateDisposers: NvlState['autorun'][];
11
- state: NvlState;
12
- needsToRun: () => boolean;
13
- renderMainScene: (positionArray: Node[], positionsChanged?: boolean) => void;
14
- renderMainSceneFromTexture: (positionTexture: WebGLTexture) => void;
15
- setPositionTexelIndices: (map: Readonly<Record<string, number>> | null) => void;
16
- renderMinimap: (positionArray: Node[], positionsChanged?: boolean) => void;
17
- checkForUpdates: (nodes: DataSet<Node>, rels: DataSet<Relationship>) => void;
18
- onResize: () => void;
19
- updateMainViewport: (zoom: number, panX: number, panY: number) => void;
20
- updateMinimapViewport: (zoom: number, panX: number, panY: number) => void;
21
- handleMinimapDrag: (e: MouseEvent) => void;
22
- handleMinimapWheel: (evt: MouseEvent) => void;
23
- setupMinimapInteractions: () => void;
24
- destroy: () => void;
7
+ mainSceneRenderer: Renderer;
8
+ minimapRenderer: Renderer;
9
+ needsRun: boolean;
10
+ minimapMouseDown: boolean;
11
+ stateDisposers: NvlState['autorun'][];
12
+ state: NvlState;
13
+ needsToRun: () => boolean;
14
+ renderMainScene: (positionArray: Node[], positionsChanged?: boolean) => void;
15
+ renderMainSceneFromTexture: (positionTexture: WebGLTexture) => void;
16
+ setPositionTexelIndices: (map: Readonly<Record<string, number>> | null) => void;
17
+ renderMinimap: (positionArray: Node[], positionsChanged?: boolean) => void;
18
+ checkForUpdates: (nodes: DataSet<Node>, rels: DataSet<Relationship>) => void;
19
+ onResize: () => void;
20
+ updateMainViewport: (zoom: number, panX: number, panY: number) => void;
21
+ updateMinimapViewport: (zoom: number, panX: number, panY: number) => void;
22
+ handleMinimapDrag: (e: MouseEvent) => void;
23
+ handleMinimapWheel: (evt: MouseEvent) => void;
24
+ setupMinimapInteractions: () => void;
25
+ destroy: () => void;
25
26
  }
26
27
  export default class Controller implements ControllerInterface {
27
- mainSceneRenderer: Renderer;
28
- minimapRenderer: Renderer;
29
- needsRun: boolean;
30
- minimapMouseDown: boolean;
31
- stateDisposers: NvlState['autorun'][];
32
- state: NvlState;
33
- constructor(options: {
34
- mainSceneRenderer?: Renderer;
35
- minimapRenderer?: Renderer;
36
- state?: NvlState;
37
- });
38
- needsToRun(): boolean;
39
- renderMainScene(positionArray: Node[], positionsChanged?: boolean): void;
40
- /**
41
- * Renders the main scene from a GPU position texture instead of a
42
- * CPU position array, avoiding the readback + upload round trip.
43
- * @param positionTexture - Live GPU node-position texture to render from.
44
- */
45
- renderMainSceneFromTexture(positionTexture: WebGLTexture): void;
46
- /**
47
- * Sets the node-id -> texel-index map for the main scene renderer so it
48
- * samples a shared position texture in the layout's order. Pass null to use
49
- * insertion order.
50
- * @param map - The node-id-to-texel-index map, or null.
51
- *
52
- * @note The minimap keeps insertion-order sampling and uploads lagged CPU
53
- * positions (async PhysLayout cache) while the main scene may sample the
54
- * shared GPU texture.
55
- */
56
- setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
57
- renderMinimap(positionArray: Node[], positionsChanged?: boolean): void;
58
- checkForUpdates(nodes: DataSet<Node>, rels: DataSet<Relationship>): void;
59
- onResize(): void;
60
- updateMainViewport(zoom: number, panX: number, panY: number): void;
61
- updateMinimapViewport(zoom: number, panX: number, panY: number): void;
62
- handleMinimapDrag(e: MouseEvent): void;
63
- handleMinimapWheel(evt: WheelEvent): void;
64
- setupMinimapInteractions(): void;
65
- destroy(): void;
28
+ mainSceneRenderer: Renderer;
29
+ minimapRenderer: Renderer;
30
+ needsRun: boolean;
31
+ minimapMouseDown: boolean;
32
+ stateDisposers: NvlState['autorun'][];
33
+ state: NvlState;
34
+ constructor(options: {
35
+ mainSceneRenderer?: Renderer;
36
+ minimapRenderer?: Renderer;
37
+ state?: NvlState;
38
+ });
39
+ needsToRun(): boolean;
40
+ renderMainScene(positionArray: Node[], positionsChanged?: boolean): void;
41
+ /**
42
+ * Renders the main scene from a GPU position texture instead of a
43
+ * CPU position array, avoiding the readback + upload round trip.
44
+ * @param positionTexture - Live GPU node-position texture to render from.
45
+ */
46
+ renderMainSceneFromTexture(positionTexture: WebGLTexture): void;
47
+ /**
48
+ * Sets the node-id -> texel-index map for the main scene renderer so it
49
+ * samples a shared position texture in the layout's order. Pass null to use
50
+ * insertion order.
51
+ * @param map - The node-id-to-texel-index map, or null.
52
+ *
53
+ * @note The minimap keeps insertion-order sampling and uploads lagged CPU
54
+ * positions (async PhysLayout cache) while the main scene may sample the
55
+ * shared GPU texture.
56
+ */
57
+ setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
58
+ renderMinimap(positionArray: Node[], positionsChanged?: boolean): void;
59
+ checkForUpdates(nodes: DataSet<Node>, rels: DataSet<Relationship>): void;
60
+ onResize(): void;
61
+ updateMainViewport(zoom: number, panX: number, panY: number): void;
62
+ updateMinimapViewport(zoom: number, panX: number, panY: number): void;
63
+ handleMinimapDrag(e: MouseEvent): void;
64
+ handleMinimapWheel(evt: WheelEvent): void;
65
+ setupMinimapInteractions(): void;
66
+ destroy(): void;
66
67
  }
67
68
  export declare class DummyController implements ControllerInterface {
68
- mainSceneRenderer: Renderer;
69
- minimapRenderer: Renderer;
70
- needsRun: boolean;
71
- minimapMouseDown: boolean;
72
- stateDisposers: NvlState['autorun'][];
73
- state: NvlState;
74
- renderMainScene(positionArray: Node[], positionsChanged?: boolean): void;
75
- renderMainSceneFromTexture(positionTexture: WebGLTexture): void;
76
- setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
77
- renderMinimap(positionArray: Node[], positionsChanged?: boolean): void;
78
- checkForUpdates(nodes: DataSet<Node>, rels: DataSet<Relationship>): void;
79
- onResize(): void;
80
- updateMainViewport(zoom: number, panX: number, panY: number): void;
81
- updateMinimapViewport(zoom: number, panX: number, panY: number): void;
82
- handleMinimapDrag(e: MouseEvent): void;
83
- handleMinimapWheel(e: MouseEvent): void;
84
- setupMinimapInteractions(): void;
85
- destroy(): void;
86
- needsToRun(): boolean;
87
- }
69
+ mainSceneRenderer: Renderer;
70
+ minimapRenderer: Renderer;
71
+ needsRun: boolean;
72
+ minimapMouseDown: boolean;
73
+ stateDisposers: NvlState['autorun'][];
74
+ state: NvlState;
75
+ renderMainScene(positionArray: Node[], positionsChanged?: boolean): void;
76
+ renderMainSceneFromTexture(positionTexture: WebGLTexture): void;
77
+ setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
78
+ renderMinimap(positionArray: Node[], positionsChanged?: boolean): void;
79
+ checkForUpdates(nodes: DataSet<Node>, rels: DataSet<Relationship>): void;
80
+ onResize(): void;
81
+ updateMainViewport(zoom: number, panX: number, panY: number): void;
82
+ updateMinimapViewport(zoom: number, panX: number, panY: number): void;
83
+ handleMinimapDrag(e: MouseEvent): void;
84
+ handleMinimapWheel(e: MouseEvent): void;
85
+ setupMinimapInteractions(): void;
86
+ destroy(): void;
87
+ needsToRun(): boolean;
88
+ }
@@ -4,11 +4,11 @@ export declare const MaxIconLayers = 256;
4
4
  * Delegates image loading and rasterization to {@link ImageCache}.
5
5
  */
6
6
  export declare class IconLayerRegistry {
7
- private readonly imageCache;
8
- private readonly layerMap;
9
- constructor(onImageLoaded?: () => void);
10
- getLayer(url: string, inverted: boolean): number | null;
11
- hasLoadingLayers(): boolean;
12
- layerCount(): number;
13
- getAvailableCanvases(): Map<number, HTMLCanvasElement>;
14
- }
7
+ private readonly imageCache;
8
+ private readonly layerMap;
9
+ constructor(onImageLoaded?: () => void);
10
+ getLayer(url: string, inverted: boolean): number | null;
11
+ hasLoadingLayers(): boolean;
12
+ layerCount(): number;
13
+ getAvailableCanvases(): Map<number, HTMLCanvasElement>;
14
+ }
@@ -1,92 +1,92 @@
1
- import { mat4 } from 'gl-matrix';
2
- import type { DataSet } from '../../modules/dataset';
3
- import type { NvlState } from '../../modules/state/types';
4
- import type { Node, Relationship } from '../../types/graph-element';
1
+ import { Node, Relationship } from "../../types/graph-element.js";
2
+ import { DataSet } from "../../modules/dataset.js";
3
+ import { NvlState } from "../../modules/state/types.js";
4
+ import { mat4 } from "gl-matrix";
5
5
  export type RendererOptions = {
6
- enableIcons?: boolean;
6
+ enableIcons?: boolean;
7
7
  };
8
8
  export default class Renderer {
9
- private readonly nodeShader;
10
- private readonly nodeAnimShader;
11
- private readonly relShader;
12
- private readonly arrowShader;
13
- private relDataBuffer;
14
- private arrowDataBuffer;
15
- private arrowData;
16
- private readonly viewportBoxShader;
17
- private readonly defaultRelColor;
18
- private readonly defaultNodeColor;
19
- private readonly disableRelColor;
20
- private readonly disableNodeColor;
21
- private readonly gl;
22
- activeNodes: Record<string, boolean>;
23
- numActiveNodes: number;
24
- readonly canvas: HTMLCanvasElement;
25
- projection: mat4;
26
- private idToIndex;
27
- /** Node-id → texel-index map for GPU-shared rendering; null falls back to insertion order. */
28
- private texelIndexForId;
29
- /** texelIndexForId value when vertex buffers were last built; used to detect changes in the texel-index mapping. */
30
- private texelMapAtBuild;
31
- private lastNodes;
32
- private lastBundledRels;
33
- private idToSize;
34
- private posBuffer;
35
- private positionsDirty;
36
- private numRels;
37
- private numNodes;
38
- private nodeDataByte;
39
- private relIdToIndex;
40
- private relData;
41
- private viewportBoxBuffer;
42
- private readonly viewportBoxVertices;
43
- private relBuffer;
44
- private arrowBuffer;
45
- private nodeBuffer;
46
- private posTexture;
47
- private iconTexture;
48
- private nodeVao;
49
- private relVao;
50
- private arrowVao;
51
- private nodeAnimVao;
52
- private readonly iconLayers;
53
- private uploadedIconLayers;
54
- private nodeColors;
55
- private nodeDisabled;
56
- constructor(gl: WebGL2RenderingContext, nodes: DataSet<Node>, rels: DataSet<Relationship>, state: NvlState, options?: RendererOptions);
57
- private setShaderUniforms;
58
- setData(data: {
59
- nodes: Node[];
60
- rels: Relationship[];
61
- }): void;
62
- /** Sets the texel-index map for GPU-shared rendering, or null for insertion order. */
63
- setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
64
- /** Texel index for a node id; falls back to insertion index, or 0 if the id is unknown. */
65
- private getTexelIndex;
66
- /**
67
- * Rebuilds vertex buffers when the texel-index mapping has changed since the last build.
68
- */
69
- private rebuildBuffersIfTexelMappingChanged;
70
- render(positionArray: Node[], positionsChanged?: boolean): void;
71
- /** Renders using a GPU position texture directly as `u_positions` */
72
- renderFromGpuTexture(positionTexture: WebGLTexture): void;
73
- private renderRelationships;
74
- renderViewbox(): void;
75
- updateNodes(updates: Node[]): void;
76
- updateRelationships(relItems: Relationship[]): void;
77
- private createPositionTexture;
78
- private createIconTexture;
79
- private uploadPendingIconLayers;
80
- hasPendingIcons(): boolean;
81
- updateViewportBox(zoom: number, panX: number, panY: number, viewportWidth: number, viewportHeight: number): void;
82
- updateViewport(zoom: number, panX: number, panY: number): void;
83
- private setupViewportRendering;
84
- private resolveNodeColor;
85
- private setupNodeRendering;
86
- private setupRelationshipRendering;
87
- private setupArrowRendering;
88
- private getRelBufferAttributes;
89
- private updateEndpointSizesForNode;
90
- private renderAnimations;
91
- destroy(): void;
92
- }
9
+ private readonly nodeShader;
10
+ private readonly nodeAnimShader;
11
+ private readonly relShader;
12
+ private readonly arrowShader;
13
+ private relDataBuffer;
14
+ private arrowDataBuffer;
15
+ private arrowData;
16
+ private readonly viewportBoxShader;
17
+ private readonly defaultRelColor;
18
+ private readonly defaultNodeColor;
19
+ private readonly disableRelColor;
20
+ private readonly disableNodeColor;
21
+ private readonly gl;
22
+ activeNodes: Record<string, boolean>;
23
+ numActiveNodes: number;
24
+ readonly canvas: HTMLCanvasElement;
25
+ projection: mat4;
26
+ private idToIndex;
27
+ /** Node-id → texel-index map for GPU-shared rendering; null falls back to insertion order. */
28
+ private texelIndexForId;
29
+ /** texelIndexForId value when vertex buffers were last built; used to detect changes in the texel-index mapping. */
30
+ private texelMapAtBuild;
31
+ private lastNodes;
32
+ private lastBundledRels;
33
+ private idToSize;
34
+ private posBuffer;
35
+ private positionsDirty;
36
+ private numRels;
37
+ private numNodes;
38
+ private nodeDataByte;
39
+ private relIdToIndex;
40
+ private relData;
41
+ private viewportBoxBuffer;
42
+ private readonly viewportBoxVertices;
43
+ private relBuffer;
44
+ private arrowBuffer;
45
+ private nodeBuffer;
46
+ private posTexture;
47
+ private iconTexture;
48
+ private nodeVao;
49
+ private relVao;
50
+ private arrowVao;
51
+ private nodeAnimVao;
52
+ private readonly iconLayers;
53
+ private uploadedIconLayers;
54
+ private nodeColors;
55
+ private nodeDisabled;
56
+ constructor(gl: WebGL2RenderingContext, nodes: DataSet<Node>, rels: DataSet<Relationship>, state: NvlState, options?: RendererOptions);
57
+ private setShaderUniforms;
58
+ setData(data: {
59
+ nodes: Node[];
60
+ rels: Relationship[];
61
+ }): void;
62
+ /** Sets the texel-index map for GPU-shared rendering, or null for insertion order. */
63
+ setPositionTexelIndices(map: Readonly<Record<string, number>> | null): void;
64
+ /** Texel index for a node id; falls back to insertion index, or 0 if the id is unknown. */
65
+ private getTexelIndex;
66
+ /**
67
+ * Rebuilds vertex buffers when the texel-index mapping has changed since the last build.
68
+ */
69
+ private rebuildBuffersIfTexelMappingChanged;
70
+ render(positionArray: Node[], positionsChanged?: boolean): void;
71
+ /** Renders using a GPU position texture directly as `u_positions` */
72
+ renderFromGpuTexture(positionTexture: WebGLTexture): void;
73
+ private renderRelationships;
74
+ renderViewbox(): void;
75
+ updateNodes(updates: Node[]): void;
76
+ updateRelationships(relItems: Relationship[]): void;
77
+ private createPositionTexture;
78
+ private createIconTexture;
79
+ private uploadPendingIconLayers;
80
+ hasPendingIcons(): boolean;
81
+ updateViewportBox(zoom: number, panX: number, panY: number, viewportWidth: number, viewportHeight: number): void;
82
+ updateViewport(zoom: number, panX: number, panY: number): void;
83
+ private setupViewportRendering;
84
+ private resolveNodeColor;
85
+ private setupNodeRendering;
86
+ private setupRelationshipRendering;
87
+ private setupArrowRendering;
88
+ private getRelBufferAttributes;
89
+ private updateEndpointSizesForNode;
90
+ private renderAnimations;
91
+ destroy(): void;
92
+ }
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nprecision mediump float;\n\nuniform mediump float u_zoom;\nuniform lowp float u_animPos;\nuniform mediump float u_glAdjust;\n\nin lowp vec4 color;\nin mediump float varNodeSize;\n\nout vec4 fragColor;\n\nconst float pulseCircleEdge = 0.50;\n\nvoid main(void) {\n float dist = distance(gl_PointCoord, vec2(0.5));\n\n if (dist > 0.51) {\n discard;\n } else {\n float alpha = 1.0 - smoothstep(pulseCircleEdge - (1.0 / (varNodeSize * 2.0 * u_zoom * u_glAdjust)), pulseCircleEdge, dist);\n float pulseAlpha = 0.9 - 0.9 * u_animPos;\n fragColor = vec4(color.xyz, 1.0) * alpha * pulseAlpha;\n }\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nuniform mat4 u_projection;\nuniform sampler2D u_positions;\nuniform lowp float u_animPos;\nuniform mediump float u_zoom;\nuniform mediump float u_glAdjust;\n\nin float a_size;\nin highp vec2 a_index;\nin lowp vec4 a_color;\nin lowp float a_active;\n\nout mediump float varNodeSize;\nout lowp vec4 color;\n\nvoid main(void) {\n vec4 data = texture(u_positions, a_index);\n\n gl_Position = u_projection * vec4(data.xy, 0.0, 1.0);\n\n float nodeSize = a_size * u_zoom * u_glAdjust;\n nodeSize = nodeSize * 0.8;\n\n gl_PointSize = a_active > 0.5\n ? nodeSize + 0.88 * nodeSize * u_animPos\n : 0.0;\n\n color = a_color;\n varNodeSize = a_size;\n}";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nprecision mediump float;\n\nuniform lowp vec3 u_nodeBorderColor;\nuniform lowp vec3 u_selectedBorderColor;\nuniform lowp vec3 u_selectedInnerBorderColor;\nuniform lowp vec3 u_shadowColor;\nuniform lowp float u_drawDefaultBorder;\nuniform lowp sampler2DArray u_icons;\nuniform mediump float u_minIconScreenPx;\n\nin lowp vec4 color;\nin lowp float selected;\nin lowp float hovered;\nin mediump float varNodeSize;\nin mediump float iconLayer;\nin lowp float hasIcon;\n\nout vec4 fragColor;\n\nconst float circleSize = 0.40;\nconst float defaultBorderSize = 0.42;\nconst float innerSelectedRingSize = 0.43;\nconst float outerSelectedRingSize = 0.47;\nconst float shadowSize = 0.51;\n\nfloat getShadowAlpha(float size, float dist) {\n return (1.0 - smoothstep(size, shadowSize, dist)) * 0.25;\n}\n\nfloat getCircleAlpha(float ringSize, float nodeSize, float dist) {\n return color.w - smoothstep(ringSize - nodeSize, ringSize, dist);\n}\n\nvoid main() {\n float dist = distance(gl_PointCoord, vec2(0.5));\n\n if (dist > 0.51) {\n discard;\n } else {\n float nodeSize = 1.0 / varNodeSize;\n float nodeAlpha = getCircleAlpha(circleSize, nodeSize, dist);\n float borderAlpha = getCircleAlpha(defaultBorderSize, nodeSize, dist);\n float ringAlpha = getCircleAlpha(innerSelectedRingSize, nodeSize, dist);\n vec3 finalColor = color.xyz;\n float finalAlpha = nodeAlpha;\n\n if (selected > 0.0) {\n float shadowAlpha = getShadowAlpha(outerSelectedRingSize, dist);\n float ringAlpha2 = getCircleAlpha(outerSelectedRingSize, nodeSize, dist);\n\n if (u_drawDefaultBorder > 0.0) {\n finalColor = mix(u_nodeBorderColor, finalColor, nodeAlpha);\n finalColor = mix(u_selectedInnerBorderColor, finalColor, borderAlpha);\n finalColor = mix(u_selectedBorderColor, finalColor, ringAlpha);\n finalColor = mix(u_shadowColor, finalColor, ringAlpha2);\n finalAlpha = max(shadowAlpha, max(nodeAlpha, max(borderAlpha, ringAlpha2)));\n } else {\n finalColor = mix(u_selectedInnerBorderColor, finalColor, nodeAlpha);\n finalColor = mix(u_selectedBorderColor, finalColor, ringAlpha);\n finalColor = mix(u_shadowColor, finalColor, ringAlpha2);\n finalAlpha = max(shadowAlpha, max(nodeAlpha, max(ringAlpha, ringAlpha2)));\n }\n } else if (hovered > 0.0) {\n if (u_drawDefaultBorder > 0.0) {\n float shadowAlpha = getShadowAlpha(defaultBorderSize, dist);\n finalColor = mix(u_nodeBorderColor, finalColor, nodeAlpha);\n finalColor = mix(u_shadowColor, finalColor, borderAlpha);\n finalAlpha = max(shadowAlpha, max(nodeAlpha, ringAlpha));\n } else {\n float shadowAlpha = getShadowAlpha(circleSize, dist);\n finalColor = mix(u_shadowColor, finalColor, nodeAlpha);\n finalAlpha = max(shadowAlpha, nodeAlpha);\n }\n } else {\n if (u_drawDefaultBorder > 0.0) {\n finalColor = mix(u_nodeBorderColor, finalColor, nodeAlpha);\n finalAlpha = borderAlpha;\n }\n }\n\n bool iconLargeEnough = varNodeSize * circleSize >= u_minIconScreenPx;\n if (hasIcon > 0.5 && iconLargeEnough) {\n vec2 uv = (gl_PointCoord - vec2(0.5)) / circleSize + 0.5;\n\n float inX = step(0.0, uv.x) - step(1.0, uv.x);\n float inY = step(0.0, uv.y) - step(1.0, uv.y);\n float isInside = inX * inY;\n\n vec4 ic = texture(u_icons, vec3(uv, iconLayer));\n finalColor = mix(finalColor, ic.rgb, ic.a * isInside);\n }\n\n fragColor = vec4(finalColor, 1.0) * finalAlpha;\n }\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nuniform mat4 u_projection;\nuniform sampler2D u_positions;\nuniform mediump float u_zoom;\nuniform mediump float u_glAdjust;\n\nin float a_size;\nin highp vec2 a_index;\nin lowp vec4 a_color;\nin lowp float a_selected;\nin lowp float a_hovered;\nin lowp float a_iconLayer;\nin lowp float a_hasIcon;\n\nout lowp vec4 color;\nout lowp float selected;\nout lowp float hovered;\nout mediump float varNodeSize;\nout mediump float iconLayer;\nout lowp float hasIcon;\n\nconst float MinNodeSize = 5.0;\n\nvoid main(void) {\n vec4 data = texture(u_positions, a_index);\n gl_Position = u_projection * vec4(data.xy, 0.0, 1.0);\n\n float nodeSize = max(a_size * u_zoom * u_glAdjust, MinNodeSize);\n gl_PointSize = nodeSize;\n varNodeSize = nodeSize;\n\n color = a_color;\n selected = a_selected;\n hovered = a_hovered;\n iconLayer = a_iconLayer * 255.0;\n hasIcon = a_hasIcon;\n}";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nprecision lowp float;\n\nin lowp vec4 color;\n\nout vec4 fragColor;\n\nvoid main(void) {\n fragColor = vec4(color.xyz, 1.0) * color.w;\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1 +1 @@
1
- export declare const arrowShaderUtilsGLSL = "\nconst float CircleSize = 0.40;\nconst float HeadHalfWidthScale = 4.0;\nconst float HeadLengthScale = 2.5;\nconst float MaxHeadHalfWidthRatio = 0.6;\nconst float MaxHeadLengthRatio = 1.0;\n\n// Self-referencing relationships aren't supported in WebGL yet.\nbool relationshipIsSelfLoop(vec2 fromTexel, vec2 toTexel) {\n return all(equal(fromTexel, toTexel));\n}\n\nvec2 perpendicular(vec2 dir) {\n return vec2(-dir.y, dir.x);\n}\n\nfloat nodeRadiusFromSize(float size) {\n return size * u_glAdjust * CircleSize;\n}\n\nfloat relationshipHalfWidth(float width) {\n return width * u_glAdjust * 0.25;\n}\n\nfloat naturalArrowHeadHalfWidth(float lineHalfWidth) {\n return lineHalfWidth * HeadHalfWidthScale + u_glAdjust;\n}\n\nfloat naturalArrowHeadLength(float headHalfWidth) {\n return headHalfWidth * HeadLengthScale;\n}\n\nfloat clampArrowHeadHalfWidth(float lineHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadHalfWidth(lineHalfWidth);\n float minHalfWidth = lineHalfWidth;\n float maxHalfWidth = max(minHalfWidth, nodeRadius * MaxHeadHalfWidthRatio);\n return clamp(natural, minHalfWidth, maxHalfWidth);\n}\n\nfloat clampArrowHeadLength(float headHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadLength(headHalfWidth);\n float maxLength = nodeRadius * MaxHeadLengthRatio;\n return min(natural, maxLength);\n}\n\nfloat arrowHeadClearance(float lineHalfWidth, float nodeRadius) {\n float headHalfWidth = clampArrowHeadHalfWidth(lineHalfWidth, nodeRadius);\n return clampArrowHeadLength(headHalfWidth, nodeRadius);\n}\n";
1
+ export declare const arrowShaderUtilsGLSL = "\nconst float CircleSize = 0.40;\nconst float HeadHalfWidthScale = 4.0;\nconst float HeadLengthScale = 2.5;\nconst float MaxHeadHalfWidthRatio = 0.6;\nconst float MaxHeadLengthRatio = 1.0;\n\n// Self-referencing relationships aren't supported in WebGL yet.\nbool relationshipIsSelfLoop(vec2 fromTexel, vec2 toTexel) {\n return all(equal(fromTexel, toTexel));\n}\n\nvec2 perpendicular(vec2 dir) {\n return vec2(-dir.y, dir.x);\n}\n\nfloat nodeRadiusFromSize(float size) {\n return size * u_glAdjust * CircleSize;\n}\n\nfloat relationshipHalfWidth(float width) {\n return width * u_glAdjust * 0.25;\n}\n\nfloat naturalArrowHeadHalfWidth(float lineHalfWidth) {\n return lineHalfWidth * HeadHalfWidthScale + u_glAdjust;\n}\n\nfloat naturalArrowHeadLength(float headHalfWidth) {\n return headHalfWidth * HeadLengthScale;\n}\n\nfloat clampArrowHeadHalfWidth(float lineHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadHalfWidth(lineHalfWidth);\n float minHalfWidth = lineHalfWidth;\n float maxHalfWidth = max(minHalfWidth, nodeRadius * MaxHeadHalfWidthRatio);\n return clamp(natural, minHalfWidth, maxHalfWidth);\n}\n\nfloat clampArrowHeadLength(float headHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadLength(headHalfWidth);\n float maxLength = nodeRadius * MaxHeadLengthRatio;\n return min(natural, maxLength);\n}\n\nfloat arrowHeadClearance(float lineHalfWidth, float nodeRadius) {\n float headHalfWidth = clampArrowHeadHalfWidth(lineHalfWidth, nodeRadius);\n return clampArrowHeadLength(headHalfWidth, nodeRadius);\n}\n";
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nuniform mat4 u_projection;\nuniform sampler2D u_positions;\nuniform mediump float u_glAdjust;\n\nin vec2 a_from;\nin vec2 a_to;\nin lowp vec4 a_color;\nin float a_width;\nin float a_toSize;\n\nout lowp vec4 color;\n\n\nconst float CircleSize = 0.40;\nconst float HeadHalfWidthScale = 4.0;\nconst float HeadLengthScale = 2.5;\nconst float MaxHeadHalfWidthRatio = 0.6;\nconst float MaxHeadLengthRatio = 1.0;\n\n// Self-referencing relationships aren't supported in WebGL yet.\nbool relationshipIsSelfLoop(vec2 fromTexel, vec2 toTexel) {\n return all(equal(fromTexel, toTexel));\n}\n\nvec2 perpendicular(vec2 dir) {\n return vec2(-dir.y, dir.x);\n}\n\nfloat nodeRadiusFromSize(float size) {\n return size * u_glAdjust * CircleSize;\n}\n\nfloat relationshipHalfWidth(float width) {\n return width * u_glAdjust * 0.25;\n}\n\nfloat naturalArrowHeadHalfWidth(float lineHalfWidth) {\n return lineHalfWidth * HeadHalfWidthScale + u_glAdjust;\n}\n\nfloat naturalArrowHeadLength(float headHalfWidth) {\n return headHalfWidth * HeadLengthScale;\n}\n\nfloat clampArrowHeadHalfWidth(float lineHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadHalfWidth(lineHalfWidth);\n float minHalfWidth = lineHalfWidth;\n float maxHalfWidth = max(minHalfWidth, nodeRadius * MaxHeadHalfWidthRatio);\n return clamp(natural, minHalfWidth, maxHalfWidth);\n}\n\nfloat clampArrowHeadLength(float headHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadLength(headHalfWidth);\n float maxLength = nodeRadius * MaxHeadLengthRatio;\n return min(natural, maxLength);\n}\n\nfloat arrowHeadClearance(float lineHalfWidth, float nodeRadius) {\n float headHalfWidth = clampArrowHeadHalfWidth(lineHalfWidth, nodeRadius);\n return clampArrowHeadLength(headHalfWidth, nodeRadius);\n}\n\n\nvoid main(void) {\n vec4 from = texture(u_positions, a_from);\n vec4 to = texture(u_positions, a_to);\n\n if (relationshipIsSelfLoop(a_from, a_to)) {\n color = a_color;\n gl_Position = u_projection * vec4(from.xy, 0.0, 1.0);\n return;\n }\n\n vec2 delta = to.xy - from.xy;\n vec2 dir = normalize(delta);\n vec2 perp = perpendicular(dir);\n\n float toRadius = nodeRadiusFromSize(a_toSize);\n float lineHalfWidth = relationshipHalfWidth(a_width);\n float headHalfWidth = clampArrowHeadHalfWidth(lineHalfWidth, toRadius);\n float headLength = clampArrowHeadLength(headHalfWidth, toRadius);\n\n vec2 tip = to.xy - dir * toRadius;\n vec2 baseCenter = tip - dir * headLength;\n\n int corner = gl_VertexID % 3;\n float isTip = float(corner == 0);\n float perpSign = float(corner == 1) - float(corner == 2);\n vec2 basePos = mix(baseCenter, tip, isTip);\n vec2 vertexPosition = basePos + perp * (headHalfWidth * perpSign);\n\n color = a_color;\n gl_Position = u_projection * vec4(vertexPosition, 0.0, 1.0);\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nuniform mat4 u_projection;\nuniform sampler2D u_positions;\nuniform mediump float u_glAdjust;\n\nin vec2 a_from;\nin vec2 a_to;\nin lowp vec4 a_color;\nin lowp float a_triside;\nin lowp float a_isTarget;\nin float a_endpointSize;\nin float a_otherEndpointSize;\nin float a_width;\n\nout lowp vec4 color;\n\n\nconst float CircleSize = 0.40;\nconst float HeadHalfWidthScale = 4.0;\nconst float HeadLengthScale = 2.5;\nconst float MaxHeadHalfWidthRatio = 0.6;\nconst float MaxHeadLengthRatio = 1.0;\n\n// Self-referencing relationships aren't supported in WebGL yet.\nbool relationshipIsSelfLoop(vec2 fromTexel, vec2 toTexel) {\n return all(equal(fromTexel, toTexel));\n}\n\nvec2 perpendicular(vec2 dir) {\n return vec2(-dir.y, dir.x);\n}\n\nfloat nodeRadiusFromSize(float size) {\n return size * u_glAdjust * CircleSize;\n}\n\nfloat relationshipHalfWidth(float width) {\n return width * u_glAdjust * 0.25;\n}\n\nfloat naturalArrowHeadHalfWidth(float lineHalfWidth) {\n return lineHalfWidth * HeadHalfWidthScale + u_glAdjust;\n}\n\nfloat naturalArrowHeadLength(float headHalfWidth) {\n return headHalfWidth * HeadLengthScale;\n}\n\nfloat clampArrowHeadHalfWidth(float lineHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadHalfWidth(lineHalfWidth);\n float minHalfWidth = lineHalfWidth;\n float maxHalfWidth = max(minHalfWidth, nodeRadius * MaxHeadHalfWidthRatio);\n return clamp(natural, minHalfWidth, maxHalfWidth);\n}\n\nfloat clampArrowHeadLength(float headHalfWidth, float nodeRadius) {\n float natural = naturalArrowHeadLength(headHalfWidth);\n float maxLength = nodeRadius * MaxHeadLengthRatio;\n return min(natural, maxLength);\n}\n\nfloat arrowHeadClearance(float lineHalfWidth, float nodeRadius) {\n float headHalfWidth = clampArrowHeadHalfWidth(lineHalfWidth, nodeRadius);\n return clampArrowHeadLength(headHalfWidth, nodeRadius);\n}\n\n\nvoid main(void) {\n vec4 from = texture(u_positions, a_from);\n vec4 to = texture(u_positions, a_to);\n\n if (relationshipIsSelfLoop(a_from, a_to)) {\n color = a_color;\n gl_Position = u_projection * vec4(from.xy, 0.0, 1.0);\n return;\n }\n\n vec2 delta = from.xy - to.xy;\n float halfWidth = relationshipHalfWidth(a_width);\n float ownRadius = nodeRadiusFromSize(a_endpointSize);\n float otherRadius = nodeRadiusFromSize(a_otherEndpointSize);\n float toRadius = mix(otherRadius, ownRadius, a_isTarget);\n float arrowClearance = arrowHeadClearance(halfWidth, toRadius);\n float endpointClearance = ownRadius + a_isTarget * arrowClearance;\n\n vec2 along = normalize(delta);\n from.xy -= along * endpointClearance;\n\n float sideSign = 1.0 - 2.0 * a_triside;\n from.xy += sideSign * halfWidth * perpendicular(along);\n\n color = a_color;\n gl_Position = u_projection * vec4(from.xy, 0.0, 1.0);\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nprecision lowp float;\n\nuniform lowp vec4 u_minimapViewportBoxColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n fragColor = u_minimapViewportBoxColor;\n}\n";
2
- export default _default;
2
+ export { _default as default };
@@ -1,2 +1,2 @@
1
1
  declare const _default: "#version 300 es\nin vec2 coordinates;\nuniform mat4 u_projection;\n\nvoid main(void) {\n gl_Position = u_projection * vec4(coordinates, 0.0, 1.0);\n}\n";
2
- export default _default;
2
+ export { _default as default };