@kortexya/nodus 0.1.0

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 (252) hide show
  1. package/LICENSE +37 -0
  2. package/README.md +60 -0
  3. package/__vite-plugin-wasm-helper-1Aiokjk5.js +24 -0
  4. package/assets/hypergraphWorker-DV0aFI3L.js +1 -0
  5. package/assets/layoutWorker-DwDJwbgr.js +285 -0
  6. package/assets/nodus_wasm-C0vDfO5K.js +1 -0
  7. package/chunk-DmhlhrBa.js +11 -0
  8. package/nodus.src.bundle.js +33577 -0
  9. package/nodus_render_wasm-Bs6hlsx-.js +2617 -0
  10. package/nodus_wasm-DKYQVSUZ.js +2789 -0
  11. package/package.json +61 -0
  12. package/types/Nodus.d.ts +100 -0
  13. package/types/algorithms/concentric/index.d.ts +29 -0
  14. package/types/algorithms/concentricFactory.d.ts +43 -0
  15. package/types/algorithms/force/Alea.d.ts +13 -0
  16. package/types/algorithms/force/BVH.d.ts +35 -0
  17. package/types/algorithms/force/LayoutData.d.ts +40 -0
  18. package/types/algorithms/force/Packing.d.ts +31 -0
  19. package/types/algorithms/force/Physics.d.ts +61 -0
  20. package/types/algorithms/force/SEC.d.ts +14 -0
  21. package/types/algorithms/force/Topology.d.ts +3 -0
  22. package/types/algorithms/force/index.d.ts +54 -0
  23. package/types/algorithms/force-gpu/ParticleSystem.d.ts +45 -0
  24. package/types/algorithms/force-gpu/Settings.d.ts +60 -0
  25. package/types/algorithms/force-gpu/Simulation.d.ts +7 -0
  26. package/types/algorithms/force-gpu/getGlContext.d.ts +10 -0
  27. package/types/algorithms/force-gpu/gpuLayout.d.ts +14 -0
  28. package/types/algorithms/force-gpu/index.d.ts +2 -0
  29. package/types/algorithms/force-gpu/kernels/index.d.ts +176 -0
  30. package/types/algorithms/force-gpu/kernels/utils.d.ts +31 -0
  31. package/types/algorithms/force-gpu/shaders/aabb.d.ts +2 -0
  32. package/types/algorithms/force-gpu/shaders/bhExpand.d.ts +2 -0
  33. package/types/algorithms/force-gpu/shaders/bhTranslate.d.ts +2 -0
  34. package/types/algorithms/force-gpu/shaders/cellLookup.d.ts +2 -0
  35. package/types/algorithms/force-gpu/shaders/index.d.ts +9 -0
  36. package/types/algorithms/force-gpu/shaders/integrate.d.ts +2 -0
  37. package/types/algorithms/force-gpu/shaders/morton.d.ts +2 -0
  38. package/types/algorithms/force-gpu/shaders/sortIntervals.d.ts +2 -0
  39. package/types/algorithms/force-gpu/shaders/sortKeys.d.ts +2 -0
  40. package/types/algorithms/force-gpu/shaders/types.d.ts +10 -0
  41. package/types/algorithms/force-gpu/webgl/helpers.d.ts +24 -0
  42. package/types/algorithms/force-gpu/webgl/index.d.ts +4 -0
  43. package/types/algorithms/force-gpu/webgl/program.d.ts +15 -0
  44. package/types/algorithms/forceFactory.d.ts +55 -0
  45. package/types/algorithms/forceLinkFactory.d.ts +40 -0
  46. package/types/algorithms/grid/index.d.ts +26 -0
  47. package/types/algorithms/gridFactory.d.ts +30 -0
  48. package/types/algorithms/hierarchical/index.d.ts +80 -0
  49. package/types/algorithms/hierarchical/sugiyama.d.ts +144 -0
  50. package/types/algorithms/hierarchicalFactory.d.ts +49 -0
  51. package/types/algorithms/index.d.ts +13 -0
  52. package/types/algorithms/radial/index.d.ts +33 -0
  53. package/types/algorithms/radialFactory.d.ts +54 -0
  54. package/types/algorithms/sequential/index.d.ts +37 -0
  55. package/types/algorithms/sequentialFactory.d.ts +37 -0
  56. package/types/core/Edge.d.ts +67 -0
  57. package/types/core/EdgeList.d.ts +86 -0
  58. package/types/core/Node.d.ts +89 -0
  59. package/types/core/NodeList.d.ts +105 -0
  60. package/types/core/Transformation.d.ts +108 -0
  61. package/types/core/enums.d.ts +16 -0
  62. package/types/geometry/BoundingBox.d.ts +41 -0
  63. package/types/geometry/index.d.ts +276 -0
  64. package/types/geometry/types.d.ts +27 -0
  65. package/types/hypergraph/Hypergraph.d.ts +74 -0
  66. package/types/hypergraph/KoenigGraph.d.ts +29 -0
  67. package/types/hypergraph/Simplifier.d.ts +39 -0
  68. package/types/hypergraph/Statistics.d.ts +55 -0
  69. package/types/hypergraph/forbidden/StrangledHyperedge.d.ts +12 -0
  70. package/types/hypergraph/forbidden/StrangledVertex.d.ts +16 -0
  71. package/types/hypergraph/forbidden/ThreeAdjacentCluster2.d.ts +10 -0
  72. package/types/hypergraph/forbidden/TwoAdjacentCluster3.d.ts +14 -0
  73. package/types/hypergraph/forbidden/index.d.ts +22 -0
  74. package/types/hypergraph/index.d.ts +21 -0
  75. package/types/hypergraph/layout/Adam.d.ts +12 -0
  76. package/types/hypergraph/layout/Energy.d.ts +55 -0
  77. package/types/hypergraph/layout/LBFGS.d.ts +32 -0
  78. package/types/hypergraph/layout/Optimizer.d.ts +60 -0
  79. package/types/hypergraph/layout/Reverser.d.ts +42 -0
  80. package/types/hypergraph/operations/AtomicOperation.d.ts +54 -0
  81. package/types/hypergraph/operations/HyperedgeMerger.d.ts +30 -0
  82. package/types/hypergraph/operations/HyperedgeRemoval.d.ts +27 -0
  83. package/types/hypergraph/operations/VertexMerger.d.ts +32 -0
  84. package/types/hypergraph/operations/VertexRemoval.d.ts +30 -0
  85. package/types/hypergraph/operations/index.d.ts +19 -0
  86. package/types/hypergraph/osfkb/adapter.d.ts +315 -0
  87. package/types/hypergraph/render/Interaction.d.ts +40 -0
  88. package/types/hypergraph/render/PolygonRenderer.d.ts +50 -0
  89. package/types/hypergraph/render/SVGPolygonRenderer.d.ts +7 -0
  90. package/types/hypergraph/types.d.ts +170 -0
  91. package/types/index.d.ts +21 -0
  92. package/types/internals/Algorithms.d.ts +68 -0
  93. package/types/internals/AlgorithmsPrimitives.d.ts +18 -0
  94. package/types/internals/Animations.d.ts +39 -0
  95. package/types/internals/AttributePathPrimitives.d.ts +2 -0
  96. package/types/internals/Brand.d.ts +22 -0
  97. package/types/internals/Camera.d.ts +115 -0
  98. package/types/internals/CameraInteractions.d.ts +15 -0
  99. package/types/internals/CameraInteractionsPrimitives.d.ts +18 -0
  100. package/types/internals/Captor.d.ts +56 -0
  101. package/types/internals/CaptorPrimitives.d.ts +9 -0
  102. package/types/internals/ClassModule.d.ts +42 -0
  103. package/types/internals/ConnectNodes.d.ts +23 -0
  104. package/types/internals/CurvatureManager.d.ts +14 -0
  105. package/types/internals/DataModule.d.ts +29 -0
  106. package/types/internals/Disabled.d.ts +27 -0
  107. package/types/internals/DomModule.d.ts +87 -0
  108. package/types/internals/DragModule.d.ts +14 -0
  109. package/types/internals/ElementSet.d.ts +17 -0
  110. package/types/internals/EventsModule.d.ts +41 -0
  111. package/types/internals/FlexArray.d.ts +54 -0
  112. package/types/internals/Geo.d.ts +127 -0
  113. package/types/internals/Graph.d.ts +109 -0
  114. package/types/internals/Graphics.d.ts +112 -0
  115. package/types/internals/GraphicsEngine.d.ts +96 -0
  116. package/types/internals/Hover.d.ts +32 -0
  117. package/types/internals/Hypergraph.d.ts +112 -0
  118. package/types/internals/IndexList.d.ts +28 -0
  119. package/types/internals/IndividualAttributes.d.ts +27 -0
  120. package/types/internals/Interactions.d.ts +45 -0
  121. package/types/internals/Keyboard.d.ts +25 -0
  122. package/types/internals/LabelManager.d.ts +56 -0
  123. package/types/internals/Lasso.d.ts +22 -0
  124. package/types/internals/Layers.d.ts +79 -0
  125. package/types/internals/LayersPrimitives.d.ts +5 -0
  126. package/types/internals/Layouts.d.ts +35 -0
  127. package/types/internals/LayoutsInternal.d.ts +37 -0
  128. package/types/internals/LayoutsPrimitives.d.ts +23 -0
  129. package/types/internals/Legend.d.ts +33 -0
  130. package/types/internals/LegendPrimitives.d.ts +3 -0
  131. package/types/internals/Locate.d.ts +43 -0
  132. package/types/internals/LocatePrimitives.d.ts +20 -0
  133. package/types/internals/MappingManager.d.ts +27 -0
  134. package/types/internals/MappingPrimitives.d.ts +29 -0
  135. package/types/internals/Module.d.ts +23 -0
  136. package/types/internals/Mouse.d.ts +42 -0
  137. package/types/internals/NodusModules.d.ts +99 -0
  138. package/types/internals/PositionModule.d.ts +10 -0
  139. package/types/internals/PulseModule.d.ts +29 -0
  140. package/types/internals/Quadtree.d.ts +100 -0
  141. package/types/internals/RectangleSelect.d.ts +18 -0
  142. package/types/internals/Resizing.d.ts +48 -0
  143. package/types/internals/Rewiring.d.ts +64 -0
  144. package/types/internals/SchemaWatchPrimitives.d.ts +75 -0
  145. package/types/internals/Selection.d.ts +52 -0
  146. package/types/internals/SelectionModule.d.ts +27 -0
  147. package/types/internals/Settings.d.ts +20 -0
  148. package/types/internals/Snapping.d.ts +54 -0
  149. package/types/internals/Spatial.d.ts +50 -0
  150. package/types/internals/SpatialPrimitives.d.ts +75 -0
  151. package/types/internals/Storage.d.ts +46 -0
  152. package/types/internals/StyleRulesModule.d.ts +21 -0
  153. package/types/internals/Synchronizer.d.ts +17 -0
  154. package/types/internals/Tooltip.d.ts +25 -0
  155. package/types/internals/TooltipPrimitives.d.ts +21 -0
  156. package/types/internals/Topology.d.ts +50 -0
  157. package/types/internals/Touch.d.ts +16 -0
  158. package/types/internals/Transformations.d.ts +36 -0
  159. package/types/internals/VirtualMouse.d.ts +52 -0
  160. package/types/internals/WasmHGrid.d.ts +25 -0
  161. package/types/internals/WatcherModule.d.ts +25 -0
  162. package/types/internals/Workers.d.ts +79 -0
  163. package/types/internals/algorithmExports.d.ts +333 -0
  164. package/types/internals/algorithmHelpers.d.ts +36 -0
  165. package/types/internals/attributes/AttributesManager.d.ts +216 -0
  166. package/types/internals/attributes/ElementAttributesManager.d.ts +119 -0
  167. package/types/internals/attributes/attributeHelpers.d.ts +70 -0
  168. package/types/internals/attributes/flexArrayFactories.d.ts +277 -0
  169. package/types/internals/easing.d.ts +15 -0
  170. package/types/internals/helpers.d.ts +79 -0
  171. package/types/internals/hypergraphWorker.d.ts +37 -0
  172. package/types/internals/hypergraphWorkerHost.d.ts +40 -0
  173. package/types/internals/labels/SpatialGrid.d.ts +29 -0
  174. package/types/internals/labels/fillEdgeTexts.d.ts +25 -0
  175. package/types/internals/labels/fillNodeTexts.d.ts +24 -0
  176. package/types/internals/labels/helpers.d.ts +180 -0
  177. package/types/internals/layoutWorker.d.ts +21 -0
  178. package/types/internals/rendering/BoundariesManager.d.ts +53 -0
  179. package/types/internals/rendering/Buffer2.d.ts +91 -0
  180. package/types/internals/rendering/BufferList.d.ts +86 -0
  181. package/types/internals/rendering/CpuRenderer.d.ts +128 -0
  182. package/types/internals/rendering/EasingManager.d.ts +40 -0
  183. package/types/internals/rendering/EdgeDrawer.d.ts +54 -0
  184. package/types/internals/rendering/ElementGroup.d.ts +66 -0
  185. package/types/internals/rendering/MemoryManager.d.ts +71 -0
  186. package/types/internals/rendering/NodeDrawer.d.ts +49 -0
  187. package/types/internals/rendering/PatternManager.d.ts +29 -0
  188. package/types/internals/rendering/RENDER_MAPPING.d.ts +5 -0
  189. package/types/internals/rendering/RendererBase.d.ts +127 -0
  190. package/types/internals/rendering/ShapeManager.d.ts +46 -0
  191. package/types/internals/rendering/TextManager.d.ts +112 -0
  192. package/types/internals/rendering/canvasHelpers.d.ts +5 -0
  193. package/types/internals/rendering/constants.d.ts +125 -0
  194. package/types/internals/rendering/curveHelpers.d.ts +96 -0
  195. package/types/internals/rendering/drawerHelpers.d.ts +32 -0
  196. package/types/internals/rendering/float16.d.ts +25 -0
  197. package/types/internals/rendering/hitDetection.d.ts +89 -0
  198. package/types/internals/rendering/loadGraph.d.ts +103 -0
  199. package/types/internals/rendering/objectInfo.d.ts +46 -0
  200. package/types/internals/rendering/packing.d.ts +46 -0
  201. package/types/internals/rendering/shapeHelpers.d.ts +26 -0
  202. package/types/internals/rendering/types.d.ts +143 -0
  203. package/types/internals/renderingBinaryPrimitives.d.ts +110 -0
  204. package/types/internals/utilsExports.d.ts +408 -0
  205. package/types/internals/wasmBackend.d.ts +38 -0
  206. package/types/internals/wasmColumns.d.ts +61 -0
  207. package/types/internals/wasmInit.d.ts +1 -0
  208. package/types/modules/APIModule.d.ts +8 -0
  209. package/types/modules/AlgorithmsAPI.d.ts +15 -0
  210. package/types/modules/BrandAPI.d.ts +6 -0
  211. package/types/modules/CaptorAPI.d.ts +9 -0
  212. package/types/modules/ClassesAPI.d.ts +9 -0
  213. package/types/modules/DebugAPI.d.ts +18 -0
  214. package/types/modules/DisabledAPI.d.ts +11 -0
  215. package/types/modules/DomAPI.d.ts +9 -0
  216. package/types/modules/EventsAPI.d.ts +16 -0
  217. package/types/modules/ExportAPI.d.ts +23 -0
  218. package/types/modules/GeneratorsAPI.d.ts +12 -0
  219. package/types/modules/GeoAPI.d.ts +20 -0
  220. package/types/modules/GraphAPI.d.ts +26 -0
  221. package/types/modules/GraphicsAPI.d.ts +8 -0
  222. package/types/modules/HypergraphAPI.d.ts +71 -0
  223. package/types/modules/KeyboardAPI.d.ts +6 -0
  224. package/types/modules/LayersAPI.d.ts +7 -0
  225. package/types/modules/LayoutsAPI.d.ts +25 -0
  226. package/types/modules/LegendAPI.d.ts +9 -0
  227. package/types/modules/MouseAPI.d.ts +16 -0
  228. package/types/modules/ParseAPI.d.ts +83 -0
  229. package/types/modules/RulesAPI.d.ts +7 -0
  230. package/types/modules/SchemaAPI.d.ts +9 -0
  231. package/types/modules/SelectionAPI.d.ts +12 -0
  232. package/types/modules/SettingsAPI.d.ts +9 -0
  233. package/types/modules/StylesAPI.d.ts +64 -0
  234. package/types/modules/ToolsAPI.d.ts +68 -0
  235. package/types/modules/TransformationsAPI.d.ts +30 -0
  236. package/types/modules/ViewAPI.d.ts +52 -0
  237. package/types/publicTypes.d.ts +56 -0
  238. package/types/renderers/CanvasRenderer.d.ts +86 -0
  239. package/types/renderers/Renderer.d.ts +13 -0
  240. package/types/renderers/SVGRenderer.d.ts +57 -0
  241. package/types/renderers/WasmGraphRenderer.d.ts +118 -0
  242. package/types/renderers/WasmRendererAdapter.d.ts +38 -0
  243. package/types/tools/ConnectNodesAPI.d.ts +42 -0
  244. package/types/tools/LassoAPI.d.ts +78 -0
  245. package/types/tools/RectangleSelectAPI.d.ts +51 -0
  246. package/types/tools/ResizingAPI.d.ts +62 -0
  247. package/types/tools/RewiringAPI.d.ts +78 -0
  248. package/types/tools/SnappingAPI.d.ts +71 -0
  249. package/types/tools/ToolsAPI.d.ts +46 -0
  250. package/types/tools/TooltipAPI.d.ts +141 -0
  251. package/types/transformations/TransformationsEngine.d.ts +602 -0
  252. package/types/utils/index.d.ts +6 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * A fixed-capacity group of {@link ElementInfo} entries that are batch-
3
+ * written into a GPU buffer block.
4
+ *
5
+ * Each group maps 1:1 to a block inside a {@link Buffer2}. The renderer
6
+ * fills the group via {@link next} / {@link nextAndReset} and then writes
7
+ * the whole block to the buffer in one go.
8
+ */
9
+ import type { ElementInfo } from './types';
10
+ export declare class ElementGroup {
11
+ /** Maximum number of elements this group can hold (= BLOCK_SIZE). */
12
+ private _capacity;
13
+ /** Block id used to locate this group in the buffer list. */
14
+ private _id;
15
+ /** Number of elements currently populated. */
16
+ size: number;
17
+ /** Draw-order depth. */
18
+ depth: number;
19
+ /** Whether the group carries animation data. */
20
+ animated: boolean;
21
+ /** Stencil mode for all elements in this group. */
22
+ stencilUsage: number;
23
+ /** Element type (ELT_GENERIC, ELT_TEXT, ELT_CURVE). */
24
+ type: number;
25
+ /** Pre-allocated element info array (size = _capacity). */
26
+ private _list;
27
+ constructor();
28
+ /**
29
+ * Prepare the group for a new batch of elements.
30
+ *
31
+ * @param elementType - ELT_GENERIC | ELT_TEXT | ELT_CURVE.
32
+ * @param animated - Whether the elements are animated.
33
+ * @param depth - Draw-order depth.
34
+ * @param id - Optional block id override.
35
+ * @returns `this` for chaining.
36
+ */
37
+ reset(elementType: number, animated: boolean, depth: number, id?: number): this;
38
+ /**
39
+ * Advance to the next empty slot and return its {@link ElementInfo}.
40
+ * Throws if the group is already full.
41
+ */
42
+ next(): ElementInfo;
43
+ /**
44
+ * Like {@link next}, but also resets the start / end object info and the
45
+ * animation info of the returned element.
46
+ */
47
+ nextAndReset(): ElementInfo;
48
+ /** Iterate over all pre-allocated element slots. */
49
+ forEach(callback: (info: ElementInfo, index: number) => void): void;
50
+ /** Get the element at a specific index. */
51
+ getElement(index: number): ElementInfo;
52
+ /** Get the most recently added element. */
53
+ getCurrentElement(): ElementInfo;
54
+ /** Return the full pre-allocated element array. */
55
+ getElements(): ElementInfo[];
56
+ /** Block id used for buffer-list addressing. */
57
+ getId(): number;
58
+ /**
59
+ * Apply the same animation timing to every populated element in this group.
60
+ *
61
+ * @param duration - Duration in milliseconds.
62
+ * @param beginTime - Animation start timestamp.
63
+ * @param easing - Easing function name.
64
+ */
65
+ setGlobalAnimation(duration: number, beginTime: number, easing: string): void;
66
+ }
@@ -0,0 +1,71 @@
1
+ import type { GenericObjectInfo, ElementInfo, PatternDefinition, ExtractionScaleFactors } from './types';
2
+ import type { PatternManager } from './PatternManager';
3
+ import type { ShapeManager } from './ShapeManager';
4
+ interface BufferOffsetToId {
5
+ get(groupId: number, offset: number): number | undefined;
6
+ }
7
+ interface TextManager {
8
+ extractTextFromDataView(dataView: DataView, start: number, end: number): PatternDefinition;
9
+ }
10
+ interface ElementGroup {
11
+ type: number;
12
+ animated: boolean;
13
+ elementSize: number;
14
+ getDataView(): DataView;
15
+ getSideDataView(): DataView;
16
+ getTotalSideElementsSize(): number;
17
+ getId(): number;
18
+ }
19
+ type ColorParser = (color: string) => [number, number, number, number];
20
+ export declare class MemoryManager {
21
+ private _littleEndian;
22
+ private _maxScaledSize;
23
+ private _maxMinVisibleSize;
24
+ private _maxSymbolicSize;
25
+ private _maxDashLength;
26
+ private _maxGapLength;
27
+ private _maxPatternScale;
28
+ private _actualScaledSizeToBytes;
29
+ private _actualMinVisibleSizeToBytes;
30
+ private _actualSymbolicSizeToBytes;
31
+ private _actualDashLengthToBytes;
32
+ private _actualGapLengthToBytes;
33
+ private _actualPatternScaleToBytes;
34
+ private _genericObject;
35
+ private _shapeManager;
36
+ private _patternManager;
37
+ private _textManager;
38
+ private _bufferOffsetToId;
39
+ private _colorParser;
40
+ constructor(patternManager: PatternManager, shapeManager: ShapeManager, textManager: TextManager, bufferOffsetToId: BufferOffsetToId, colorParser: ColorParser);
41
+ resizeBoundaries(maxScaledSize: number, maxMinVisibleSize: number, maxSymbolicSize: number, maxDashLength: number, maxGapLength: number, maxPatternScale: number): void;
42
+ storeGenericObject(dataView: DataView, byteOffset: number, obj: GenericObjectInfo): void;
43
+ private _setUint16;
44
+ private _setFloat16;
45
+ private _setInt16;
46
+ private _setFloat32;
47
+ private _colorToBytes;
48
+ private _scaledSizeToBytes;
49
+ private _fixedSizeToBytes;
50
+ private _minVisibleSizeToBytes;
51
+ private _symbolicSizeToBytes;
52
+ private _dashLengthToBytes;
53
+ private _gapLengthToBytes;
54
+ private _patternScaleToBytes;
55
+ private _offsetAngleToBytes;
56
+ private _opacityToBytes;
57
+ private _curvatureToBytes;
58
+ private _signedToUnsignedByte;
59
+ private _signedToUnsignedInt16;
60
+ storeAnimationInformation(dataView: DataView, byteOffset: number, { beginTime, duration }: {
61
+ beginTime: number;
62
+ duration: number;
63
+ }, easingCoefficients: number[]): void;
64
+ private _setAnimationBeginTime;
65
+ private _setAnimationDuration;
66
+ private _setAnimationEasing;
67
+ extractGenericElement(group: ElementGroup, index: number, scaleFactors: ExtractionScaleFactors): ElementInfo;
68
+ private _extractGenericObject;
69
+ private _extractAnimationInformation;
70
+ }
71
+ export {};
@@ -0,0 +1,49 @@
1
+ /**
2
+ * NodeDrawer — responsible for drawing nodes (body, halo, outline, text,
3
+ * badges) into GPU buffer groups.
4
+ *
5
+ * Each node is decomposed into a fixed set of visual pieces (body, halo,
6
+ * halo stroke, outer stroke, outline, pie chart, image, icon, badges and
7
+ * text) that are written into per-layer GPU groups, with optional
8
+ * start/end states for animated transitions.
9
+ */
10
+ declare class NodeDrawer {
11
+ private _fullComponents;
12
+ private _startComponents;
13
+ private _endComponents;
14
+ private _startFlags;
15
+ private _endFlags;
16
+ private _startInput;
17
+ private _endInput;
18
+ private _depthInfo;
19
+ private _nodePatternAssigned;
20
+ private _nullElt;
21
+ private _engine;
22
+ private _attributes;
23
+ private _attributesPrev;
24
+ private _helper;
25
+ private _layers;
26
+ private _blockIds;
27
+ constructor({ engine, imageManager, fontManager, formatText, attributes, attributesPrev, }: {
28
+ engine: any;
29
+ imageManager: any;
30
+ fontManager: any;
31
+ formatText: (v: any) => any;
32
+ attributes: any;
33
+ attributesPrev: any;
34
+ });
35
+ drawNode(index: number): void;
36
+ private _computeBlockIds;
37
+ private _prepareBlocks;
38
+ private _storeBlocks;
39
+ private _freeBlocks;
40
+ private _setBlocksAnimation;
41
+ private _initComponents;
42
+ private _initBaseComponents;
43
+ private _initBadgeComponents;
44
+ private _initTextComponents;
45
+ private _nextElement;
46
+ private _getNodePatternElement;
47
+ }
48
+ export { NodeDrawer };
49
+ export default NodeDrawer;
@@ -0,0 +1,29 @@
1
+ import type { PatternDefinition, PatternType } from './types';
2
+ export declare class PatternManager {
3
+ private _pixelRatio;
4
+ private _nextPatternId;
5
+ private _version;
6
+ private _mustUpdate;
7
+ private _patterns;
8
+ private _patternsByHash;
9
+ private _nullPattern;
10
+ constructor();
11
+ reset(): void;
12
+ private _init_;
13
+ private _increaseNextId;
14
+ private _createPattern;
15
+ private _getAttributes;
16
+ getPatternList(): PatternDefinition[];
17
+ update(): void;
18
+ setPixelRatio(value: number): void;
19
+ getPixelRatio(): number;
20
+ notifyUpdate(): void;
21
+ getIdFromDefinition(definition: {
22
+ type: PatternType;
23
+ attributes: Record<string, any>;
24
+ }): number;
25
+ private _addPattern;
26
+ private _getPatternHash;
27
+ getDefinitionFromId(id: number): PatternDefinition;
28
+ getVersion(): number;
29
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * RENDER_MAPPING — registry of renderer type names to their implementing
3
+ * classes. Used by GraphicsEngine to instantiate the appropriate renderer.
4
+ */
5
+ export declare const RENDER_MAPPING: Record<string, any>;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * RendererBase — the core rendering abstraction used by the GraphicsEngine.
3
+ *
4
+ * Named "RendererBase" to avoid conflict with the simpler src/renderers/Renderer.ts.
5
+ *
6
+ * Extends a lightweight EventTarget (on/off/fire) and manages per-frame change
7
+ * detection, scale-factor computation, and lifecycle hooks that concrete
8
+ * renderers (WebGL, Canvas 2D, SVG) override.
9
+ */
10
+ import type { BufferList } from './BufferList';
11
+ import type { PatternManager } from './PatternManager';
12
+ import type { BoundariesManager } from './BoundariesManager';
13
+ import type { ShapeManager } from './ShapeManager';
14
+ import type TextManager from './TextManager';
15
+ import type { MemoryManager } from './MemoryManager';
16
+ import type { ElementInfo, ExtractionScaleFactors } from './types';
17
+ type EventHandler = (...args: any[]) => void;
18
+ declare class EventTarget {
19
+ private _events;
20
+ on(name: string, handler: EventHandler): this;
21
+ off(name: string, handler?: EventHandler): this;
22
+ fire(name: string, ...args: any[]): this;
23
+ once(name: string, handler: EventHandler): this;
24
+ hasListener(name: string, handler: EventHandler): boolean;
25
+ clearEvents(): void;
26
+ getListeners(name: string): EventHandler[] | null | undefined;
27
+ }
28
+ export interface RenderFrameView {
29
+ x: number;
30
+ y: number;
31
+ zoom: number;
32
+ angle: number;
33
+ width: number;
34
+ height: number;
35
+ pixelRatio: number;
36
+ backgroundColor: string;
37
+ currentTime: number;
38
+ isBufferDisplayable: ((buffer: any) => boolean) | undefined;
39
+ hideImages: boolean;
40
+ renderBackground: boolean;
41
+ }
42
+ /** Flags passed to _render() indicating what changed since last frame. */
43
+ export interface ChangeFlags {
44
+ shapesChanged: boolean;
45
+ patternsChanged: boolean;
46
+ boundariesChanged: boolean;
47
+ textsChanged: boolean;
48
+ dimensionsChanged: boolean;
49
+ viewChanged: boolean;
50
+ currentTimeChanged: boolean;
51
+ backgroundColorChanged: boolean;
52
+ isBufferDisplayableChanged: boolean;
53
+ isHideImagesChanged: boolean;
54
+ }
55
+ export interface RendererBaseOptions {
56
+ bufferList: BufferList;
57
+ patternManager: PatternManager;
58
+ boundariesManager: BoundariesManager;
59
+ shapeManager: ShapeManager;
60
+ textManager: TextManager;
61
+ memoryManager: MemoryManager;
62
+ }
63
+ export declare class RendererBase extends EventTarget {
64
+ static edgeArrowSizeRatio: number;
65
+ static minEdgeTipSize: number;
66
+ static openArrowsId: number;
67
+ protected _firstFrame: boolean;
68
+ protected _width: number;
69
+ protected _height: number;
70
+ protected _pixelRatio: number;
71
+ protected _viewX: number;
72
+ protected _viewY: number;
73
+ protected _viewZoom: number;
74
+ protected _viewAngle: number;
75
+ protected _viewAngleCos: number;
76
+ protected _viewAngleSin: number;
77
+ protected _currentTime: number;
78
+ protected _backgroundColor: string | undefined;
79
+ protected _renderBackground: boolean;
80
+ protected _hideImages: boolean;
81
+ protected _backgroundRgba: number[];
82
+ protected _isBufferDisplayable?: (buffer: any) => boolean;
83
+ private _shapesVersion;
84
+ private _patternsVersion;
85
+ private _boundariesVersion;
86
+ private _textsVersion;
87
+ protected _scales: ExtractionScaleFactors;
88
+ protected _bufferList: BufferList;
89
+ protected _shapeManager: ShapeManager;
90
+ protected _patternManager: PatternManager;
91
+ protected _boundariesManager: BoundariesManager;
92
+ protected _textManager: TextManager;
93
+ protected _memoryManager: MemoryManager;
94
+ protected _genericObject: ElementInfo;
95
+ protected _littleEndian: boolean;
96
+ constructor({ bufferList, patternManager, boundariesManager, shapeManager, textManager, memoryManager, }: RendererBaseOptions);
97
+ static createInitData(): any;
98
+ static getName(): string | null;
99
+ static isAvailable(): boolean;
100
+ static setEdgeArrowSizeRatio(ratio: number): void;
101
+ static setMinEdgeTipSize(size: number): void;
102
+ getDomElement(): HTMLElement | null;
103
+ /** Sets up a canvas element for rendering. */
104
+ protected _initCanvas(domElement: HTMLElement): void;
105
+ updateOpenArrowsId(): void;
106
+ export(_options?: any): Promise<void>;
107
+ extractElement(buffer: any, index: number): ElementInfo;
108
+ private _compareDimensions;
109
+ private _compareView;
110
+ private _compareCurrentTime;
111
+ private _compareBackgroundColor;
112
+ private _compareShapes;
113
+ private _comparePatterns;
114
+ private _compareBoundaries;
115
+ private _compareTexts;
116
+ private _compareIsDisplayableBuffer;
117
+ private _compareHideImages;
118
+ renderFrame(view: RenderFrameView): void;
119
+ protected _render(_changeFlags: ChangeFlags): void;
120
+ protected _beforeFirstFrame(): void;
121
+ protected _afterFirstFrame(): void;
122
+ destroy(): void;
123
+ ensureAnimationsReady(): void;
124
+ getImageData(): ImageData | null;
125
+ setViewportClipping(_enabled: boolean): void;
126
+ }
127
+ export { RendererBase as Renderer };
@@ -0,0 +1,46 @@
1
+ export interface ShapePoint {
2
+ x: number;
3
+ y: number;
4
+ r: number;
5
+ }
6
+ export interface ShapeDefinition {
7
+ id: number;
8
+ name: string;
9
+ getDistanceFromStrokeVertically: () => number;
10
+ getDistanceFromStrokeHorizontally: () => number;
11
+ points: ShapePoint[];
12
+ hole: ShapePoint[] | null;
13
+ isSimple: boolean;
14
+ }
15
+ interface ShapeRegistrationOptions {
16
+ getDistanceFromStrokeVertically: () => number;
17
+ getDistanceFromStrokeHorizontally: () => number;
18
+ points: Array<{
19
+ x: number;
20
+ y: number;
21
+ r?: number;
22
+ }>;
23
+ hole: Array<{
24
+ x: number;
25
+ y: number;
26
+ r?: number;
27
+ }> | null;
28
+ isSimple: boolean;
29
+ }
30
+ export declare class ShapeManager {
31
+ private _version;
32
+ private _mustUpdate;
33
+ private _lineId;
34
+ private _byName;
35
+ private _byId;
36
+ constructor();
37
+ register(name: string, { getDistanceFromStrokeVertically, getDistanceFromStrokeHorizontally, points, hole, isSimple, }: ShapeRegistrationOptions): ShapeDefinition | undefined;
38
+ updateShape(name: string, options: ShapeRegistrationOptions): void;
39
+ getIdFromName(name: string): number;
40
+ getNameFromId(id: number): string;
41
+ getDefinitionFromName(name: string): ShapeDefinition;
42
+ update(): void;
43
+ getVersion(): number;
44
+ getShapeList(): ShapeDefinition[];
45
+ }
46
+ export {};
@@ -0,0 +1,112 @@
1
+ /**
2
+ * TextManager — manages text measurement, glyph atlas caching,
3
+ * and encoding/decoding of text into binary DataView buffers for
4
+ * the WebGL rendering pipeline.
5
+ *
6
+ * Glyph widths and per-character pattern ids are cached in layered
7
+ * atlases keyed by font family, style, size and alignment so that
8
+ * repeated text can be measured and packed without re-measuring the
9
+ * canvas. Packed buffers can be round-tripped back into text patterns.
10
+ */
11
+ /** Pattern definition for a text glyph used by PatternManager. */
12
+ interface TextPatternDefinition {
13
+ id: number;
14
+ type: number;
15
+ attributes: {
16
+ text: string;
17
+ font: string;
18
+ style: string;
19
+ size: number;
20
+ align: string;
21
+ };
22
+ }
23
+ /** Text pattern returned by extractTextFromDataView. */
24
+ interface TextPattern {
25
+ id: number;
26
+ type: number;
27
+ attributes: {
28
+ text: string;
29
+ font: string;
30
+ size: number;
31
+ style: string;
32
+ align: string;
33
+ };
34
+ dimensions: {
35
+ width: number;
36
+ height: number;
37
+ };
38
+ }
39
+ /** Minimal PatternManager interface consumed by TextManager. */
40
+ interface PatternManager {
41
+ getIdFromDefinition(def: TextPatternDefinition): number;
42
+ getDefinitionFromId(id: number): TextPatternDefinition;
43
+ }
44
+ export default class TextManager {
45
+ private _widthAtlases;
46
+ private _patternManager;
47
+ private _canvas;
48
+ private _ctx;
49
+ private _processBidirectionalText;
50
+ private _cornerRadius;
51
+ private _version;
52
+ private _textPattern;
53
+ private _textDimensions;
54
+ private _lineWidthList;
55
+ private _mustClear;
56
+ private _byFont;
57
+ constructor(patternManager: PatternManager);
58
+ private _init;
59
+ reset(): void;
60
+ clear(): void;
61
+ update(): void;
62
+ getVersion(): number;
63
+ getCornerRadius(): number;
64
+ setCornerRadius(value: number): void;
65
+ /**
66
+ * Measure a single character and return its width normalised to 1 em.
67
+ */
68
+ private _measureChar;
69
+ /**
70
+ * Get (or lazily create) the per-character atlas for a given font /
71
+ * style / size / alignment combination.
72
+ */
73
+ private _getAtlas;
74
+ /**
75
+ * Get (or lazily create) a width-measurement atlas for a given font
76
+ * family and style.
77
+ */
78
+ private _getMeasurementAtlas;
79
+ /**
80
+ * Measure a multi-line text string and return its bounding dimensions
81
+ * (width in em-units, height in line count), optionally scaled.
82
+ */
83
+ measureText(text: string | null, fontFamily: string, fontStyle: string, scale?: number): {
84
+ width: number;
85
+ height: number;
86
+ };
87
+ /**
88
+ * Retrieve (or create) CharInfo for a character code, registering the
89
+ * glyph with the PatternManager if it hasn't been seen before.
90
+ */
91
+ private _getCharInfo;
92
+ /**
93
+ * Encode a text pattern into a DataView buffer, packing each glyph's
94
+ * pattern-id and its (x, y) offset into `SIDE_ELEMENT_SIZE` bytes.
95
+ *
96
+ * @param dataView - target DataView
97
+ * @param offset - byte offset to begin writing at
98
+ * @param endOffset - byte offset where writing must stop
99
+ * @param pattern - the text pattern definition (may be null)
100
+ */
101
+ storeTextInDataView(dataView: DataView, offset: number, endOffset: number, pattern: TextPatternDefinition | null): void;
102
+ /**
103
+ * Decode a text pattern from a DataView buffer that was previously
104
+ * written by `storeTextInDataView`.
105
+ */
106
+ extractTextFromDataView(dataView: DataView, startOffset: number, endOffset: number): TextPattern;
107
+ /** Zero-fill remaining bytes in the side-element region. */
108
+ private _fillWithZeros;
109
+ /** Reset all cached atlas data. */
110
+ private _clear;
111
+ }
112
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Canvas 2D rendering helpers shared by the canvas/svg renderers (independent of any GPU backend).
3
+ */
4
+ /** Draw equal-angle pie-chart slices (one per colour) on a 2D canvas context. */
5
+ export declare function drawPieChart(ctx: CanvasRenderingContext2D, colors: any[], cx: number, cy: number, radius: number): void;
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Rendering constants for GPU buffer management, element types, patterns,
3
+ * pieces, stencil modes, depth ordering, and visual styling.
4
+ */
5
+ /** Number of elements a single GPU buffer can hold */
6
+ export declare const BUFFER_CAPACITY = 512;
7
+ /** Number of elements per block within a buffer */
8
+ export declare const BLOCK_SIZE = 128;
9
+ /** log2(BUFFER_CAPACITY) — used for bit-shift addressing */
10
+ export declare const BUFFER_CAPACITY_SHIFT: number;
11
+ /** log2(BLOCK_SIZE) — used for bit-shift addressing */
12
+ export declare const BLOCK_SIZE_SHIFT: number;
13
+ /** Combined shift for encoding a full block address (buffer + block) */
14
+ export declare const BLOCK_ADDRESS_SHIFT: number;
15
+ export declare const MAX_UBYTE_VALUE = 255;
16
+ export declare const MAX_SHORT_VALUE = 32767;
17
+ export declare const MAX_USHORT_VALUE = 65535;
18
+ export declare const MAX_FLOAT16_VALUE = 16384;
19
+ export declare const MAX_4BITS_VALUE = 15;
20
+ export declare const MAX_2BITS_VALUE = 3;
21
+ export declare const MAX_SHAPES = 15;
22
+ export declare const SIMPLE_SHAPE_SAMPLING_SIZE = 32;
23
+ export declare const COMPLEX_SHAPE_SAMPLING_SIZE = 128;
24
+ export declare const FIRST_COMPLEX_SHAPE_ID = 8;
25
+ export declare const SHAPE_SAMPLING_BUFFER_RATIO: number;
26
+ export declare const SHAPES_PER_ROW: number;
27
+ export declare const SHAPE_TEXTURE_SIZE: number;
28
+ export declare const PATTERN_UNIT_SIZE = 16;
29
+ export declare const PATTERN_PADDING = 1;
30
+ export declare const MAX_IMAGE_SIZE = 256;
31
+ export declare const PIE_CHART_SAMPLING_SIZE = 128;
32
+ export declare const ICON_SAMPLING_SIZE = 128;
33
+ export declare const BADGE_ICON_SAMPLING_SIZE = 32;
34
+ export declare const TEXT_HEIGHT_MULTIPLIER = 1.5;
35
+ export declare const TEXT_WIDTH_MULTIPLIER = 1;
36
+ /** Byte size of a single element in the buffer */
37
+ export declare const ELEMENT_BYTESIZE = 56;
38
+ /** Byte size of the animation metadata stored alongside an animated element */
39
+ export declare const ANIMATION_DATA_BYTESIZE = 16;
40
+ /**
41
+ * Total byte size for an animated element: start state + end state +
42
+ * animation metadata.
43
+ */
44
+ export declare const ELEMENT_BYTESIZE_ANIMATED: number;
45
+ /** Byte size of a single side-element (e.g. badge, arrow) */
46
+ export declare const SIDE_ELEMENT_SIZE = 6;
47
+ /** Unit size used to round side-element allocation */
48
+ export declare const NB_SIDE_ELT_UNIT_SIZE = 8;
49
+ export declare const DEFAULT_EDGE_ARROW_SIZE_RATIO = 3;
50
+ export declare const MIN_EDGE_TIP_SIZE = 3;
51
+ export declare const CURVE_SUBDIVISIONS = 41;
52
+ export declare const CURVATURE_RATIO = 5;
53
+ export declare const SELF_LOOP_CURVATURE_RATIO = 5;
54
+ export declare const SELF_LOOP_TO_CIRCLE_APPROX = 0.9721;
55
+ export declare const SDF_FONT_SIZE = 24;
56
+ export declare const SDF_GAMMA = 1.4142;
57
+ /** Generic geometry element (node body, edge body, halo, etc.) */
58
+ export declare const ELT_GENERIC = 1;
59
+ /** Text element */
60
+ export declare const ELT_TEXT = 2;
61
+ /** Curve element (edge body drawn as a curve) */
62
+ export declare const ELT_CURVE = 3;
63
+ export declare const PATTERN_NONE = 1;
64
+ export declare const PATTERN_IMAGE = 2;
65
+ export declare const PATTERN_TEXT = 3;
66
+ export declare const PATTERN_PIE_CHART = 4;
67
+ export declare const PATTERN_ICON = 5;
68
+ export declare const PATTERN_BADGE_ICON = 6;
69
+ export declare const PATTERN_TEXT_OPT = 7;
70
+ export declare const PIECE_NODE_COMPONENT = 1;
71
+ export declare const PIECE_EDGE_BODY = 2;
72
+ export declare const PIECE_EDGE_HEAD = 3;
73
+ export declare const PIECE_EDGE_TAIL = 4;
74
+ export declare const PIECE_EDGE_TEXT = 5;
75
+ export declare const PIECE_TEXT_BOX = 6;
76
+ export declare const STENCIL_IGNORE = 1;
77
+ export declare const STENCIL_DEFINE_MASK = 2;
78
+ export declare const STENCIL_USE_MASK = 3;
79
+ export declare const NODE_BODY_BLOCK_ID_OFFSET = 0;
80
+ export declare const NODE_TEXT_BLOCK_ID_OFFSET = 1;
81
+ export declare const NODE_TEXT_BG_BLOCK_ID_OFFSET = 2;
82
+ export declare const NODE_HALO_BLOCK_ID_OFFSET = 3;
83
+ export declare const NODE_HALO_STROKE_BLOCK_ID_OFFSET = 4;
84
+ export declare const EDGE_BODY_BLOCK_ID_OFFSET = 5;
85
+ export declare const EDGE_TEXT_BLOCK_ID_OFFSET = 6;
86
+ export declare const EDGE_TEXT_BG_BLOCK_ID_OFFSET = 7;
87
+ export declare const EDGE_HALO_BLOCK_ID_OFFSET = 8;
88
+ export declare const MISC_BLOCK_ID_OFFSET = 9;
89
+ /** Total number of blocks allocated per element index */
90
+ export declare const NB_BLOCK_PER_INDEX = 10;
91
+ export declare const FIXED_EDGE_HALO_DEPTH = 0;
92
+ export declare const FIXED_NODE_HALO_STROKE_DEPTH = 1;
93
+ export declare const FIXED_NODE_HALO_DEPTH = 2;
94
+ export declare const FIRST_LAYER_DEPENDENT_DEPTH = 30;
95
+ export declare const MIN_LAYER_VALUE = -100;
96
+ export declare const MAX_LAYER_VALUE = 400;
97
+ export declare const RELATIVE_EDGE_BODY_DEPTH = 0;
98
+ export declare const RELATIVE_EDGE_TEXT_BG_DEPTH = 1;
99
+ export declare const RELATIVE_EDGE_TEXT_DEPTH = 2;
100
+ export declare const RELATIVE_NODE_BODY_DEPTH = 3;
101
+ export declare const RELATIVE_NODE_TEXT_BG_DEPTH = 4;
102
+ export declare const RELATIVE_NODE_TEXT_DEPTH = 5;
103
+ export declare const NB_RELATIVE_DEPTH = 6;
104
+ export declare const EPSILON3 = 0.000001;
105
+ export declare const PI: number;
106
+ export declare const PI2: number;
107
+ export declare const TOP_LEFT_BADGE_ANGLE: number;
108
+ export declare const TOP_RIGHT_BADGE_ANGLE: number;
109
+ export declare const BOTTOM_LEFT_BADGE_ANGLE: number;
110
+ export declare const BOTTOM_RIGHT_BADGE_ANGLE: number;
111
+ export declare const NODE_OUTLINE_RELATIVE_SIZE = 1.1;
112
+ export declare const NODE_OUTLINE_RELATIVE_OFFSET = 0.07;
113
+ export declare const NODE_OUTLINE_ABSOLUTE_OFFSET_Y = 1;
114
+ export declare const EDGE_OUTLINE_RELATIVE_SIZE = 1;
115
+ export declare const EDGE_OUTLINE_RELATIVE_OFFSET_Y = 0.17;
116
+ export declare const EDGE_OUTLINE_ABSOLUTE_OFFSET_Y = 1;
117
+ export declare const EDGE_PRIMARY_TEXT_OFFSET_ANGLE: number;
118
+ export declare const EDGE_SECONDARY_TEXT_OFFSET_ANGLE: number;
119
+ export declare const EDGE_STYLE: Record<string, {
120
+ dash: number;
121
+ gap: number;
122
+ }>;
123
+ export declare const POSITION_TO_ANGLE: Record<string, number>;
124
+ export declare const POSITION_TO_TIP_ANGLE: Record<string, number>;
125
+ export declare const ROUNDED_CORNER_STEPS = 8;