@cosmos.gl/graph 2.6.3 → 2.6.4

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 (45) hide show
  1. package/dist/{src/config.d.ts → config.d.ts} +18 -2
  2. package/dist/{src/graph → graph}/utils/error-message.d.ts +1 -1
  3. package/dist/helper.d.ts +24 -0
  4. package/dist/{src/index.d.ts → index.d.ts} +5 -28
  5. package/dist/index.js +14658 -14
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.min.js +473 -1057
  8. package/dist/index.min.js.map +1 -1
  9. package/dist/{src/modules → modules}/Clusters/index.d.ts +6 -13
  10. package/dist/{src/modules → modules}/ForceCenter/index.d.ts +3 -11
  11. package/dist/modules/ForceGravity/index.d.ts +6 -0
  12. package/dist/{src/modules → modules}/ForceLink/index.d.ts +4 -10
  13. package/dist/modules/ForceManyBody/index.d.ts +16 -0
  14. package/dist/modules/ForceManyBody/quadtree-frag-shader.d.ts +1 -0
  15. package/dist/modules/ForceManyBodyQuadtree/index.d.ts +15 -0
  16. package/dist/modules/ForceManyBodyQuadtree/quadtree-frag-shader.d.ts +1 -0
  17. package/dist/modules/ForceMouse/index.d.ts +6 -0
  18. package/dist/{src/modules → modules}/Lines/index.d.ts +5 -16
  19. package/dist/{src/modules → modules}/Points/index.d.ts +16 -32
  20. package/dist/modules/Shared/buffer.d.ts +8 -0
  21. package/dist/modules/Store/index.d.ts +75 -0
  22. package/dist/{src/modules → modules}/core-module.d.ts +3 -3
  23. package/dist/{src/variables.d.ts → variables.d.ts} +2 -0
  24. package/package.json +3 -2
  25. package/dist/index-CSMQs8iI.js +0 -19876
  26. package/dist/index-CSMQs8iI.js.map +0 -1
  27. package/dist/src/helper.d.ts +0 -61
  28. package/dist/src/modules/ForceGravity/index.d.ts +0 -13
  29. package/dist/src/modules/ForceManyBody/index.d.ts +0 -26
  30. package/dist/src/modules/ForceMouse/index.d.ts +0 -13
  31. package/dist/src/modules/Shared/buffer.d.ts +0 -1
  32. package/dist/src/modules/Shared/texture-utils.d.ts +0 -8
  33. package/dist/src/modules/Shared/uniform-utils.d.ts +0 -11
  34. package/dist/src/modules/Store/index.d.ts +0 -169
  35. package/dist/vite.config.d.ts +0 -2
  36. package/dist/webgl-device-QoBMYpnS.js +0 -3933
  37. package/dist/webgl-device-QoBMYpnS.js.map +0 -1
  38. /package/dist/{src/modules → modules}/Drag/index.d.ts +0 -0
  39. /package/dist/{src/modules → modules}/FPSMonitor/css.d.ts +0 -0
  40. /package/dist/{src/modules → modules}/FPSMonitor/index.d.ts +0 -0
  41. /package/dist/{src/modules → modules}/ForceLink/force-spring.d.ts +0 -0
  42. /package/dist/{src/modules → modules}/GraphData/index.d.ts +0 -0
  43. /package/dist/{src/modules → modules}/Lines/geometry.d.ts +0 -0
  44. /package/dist/{src/modules → modules}/Points/atlas-utils.d.ts +0 -0
  45. /package/dist/{src/modules → modules}/Zoom/index.d.ts +0 -0
@@ -1,8 +1,12 @@
1
- import { Framebuffer } from '@luma.gl/core';
1
+ import { default as regl } from 'regl';
2
2
  import { CoreModule } from '../core-module';
3
3
  export declare class Clusters extends CoreModule {
4
- centermassFbo: Framebuffer | undefined;
4
+ centermassFbo: regl.Framebuffer2D | undefined;
5
5
  clusterCount: number | undefined;
6
+ private clusterFbo;
7
+ private clusterPositionsFbo;
8
+ private clusterForceCoefficientFbo;
9
+ private clearCentermassCommand;
6
10
  private calculateCentermassCommand;
7
11
  private applyForcesCommand;
8
12
  private clusterTexture;
@@ -11,19 +15,8 @@ export declare class Clusters extends CoreModule {
11
15
  private centermassTexture;
12
16
  private pointIndices;
13
17
  private clustersTextureSize;
14
- private applyForcesVertexCoordBuffer;
15
- private previousPointsTextureSize;
16
- private previousClustersTextureSize;
17
- private previousClusterCount;
18
- private calculateCentermassUniformStore;
19
- private applyForcesUniformStore;
20
18
  create(): void;
21
19
  initPrograms(): void;
22
20
  calculateCentermass(): void;
23
21
  run(): void;
24
- /**
25
- * Destruction order matters
26
- * Models -> Framebuffers -> Textures -> UniformStores -> Buffers
27
- */
28
- destroy(): void;
29
22
  }
@@ -1,20 +1,12 @@
1
1
  import { CoreModule } from '../core-module';
2
2
  export declare class ForceCenter extends CoreModule {
3
- private centermassTexture;
4
3
  private centermassFbo;
5
- private pointIndices;
4
+ private clearCentermassCommand;
6
5
  private calculateCentermassCommand;
7
6
  private runCommand;
8
- private forceVertexCoordBuffer;
9
- private calculateUniformStore;
10
- private forceUniformStore;
11
- private previousPointsTextureSize;
7
+ private centermassTexture;
8
+ private pointIndices;
12
9
  create(): void;
13
10
  initPrograms(): void;
14
11
  run(): void;
15
- /**
16
- * Destruction order matters
17
- * Models -> Framebuffers -> Textures -> UniformStores -> Buffers
18
- */
19
- destroy(): void;
20
12
  }
@@ -0,0 +1,6 @@
1
+ import { CoreModule } from '../core-module';
2
+ export declare class ForceGravity extends CoreModule {
3
+ private runCommand;
4
+ initPrograms(): void;
5
+ run(): void;
6
+ }
@@ -4,15 +4,14 @@ export declare enum LinkDirection {
4
4
  INCOMING = "incoming"
5
5
  }
6
6
  export declare class ForceLink extends CoreModule {
7
+ private linkFirstIndicesAndAmountFbo;
8
+ private indicesFbo;
9
+ private biasAndStrengthFbo;
10
+ private randomDistanceFbo;
7
11
  private linkFirstIndicesAndAmount;
8
12
  private indices;
9
13
  private maxPointDegree;
10
- private previousMaxPointDegree;
11
- private previousPointsTextureSize;
12
- private previousLinksTextureSize;
13
14
  private runCommand;
14
- private vertexCoordBuffer;
15
- private uniformStore;
16
15
  private linkFirstIndicesAndAmountTexture;
17
16
  private indicesTexture;
18
17
  private biasAndStrengthTexture;
@@ -20,9 +19,4 @@ export declare class ForceLink extends CoreModule {
20
19
  create(direction: LinkDirection): void;
21
20
  initPrograms(): void;
22
21
  run(): void;
23
- /**
24
- * Destruction order matters
25
- * Models -> Framebuffers -> Textures -> UniformStores -> Buffers
26
- */
27
- destroy(): void;
28
22
  }
@@ -0,0 +1,16 @@
1
+ import { CoreModule } from '../core-module';
2
+ export declare class ForceManyBody extends CoreModule {
3
+ private randomValuesFbo;
4
+ private levelsFbos;
5
+ private clearLevelsCommand;
6
+ private clearVelocityCommand;
7
+ private calculateLevelsCommand;
8
+ private forceCommand;
9
+ private forceFromItsOwnCentermassCommand;
10
+ private quadtreeLevels;
11
+ private randomValuesTexture;
12
+ private pointIndices;
13
+ create(): void;
14
+ initPrograms(): void;
15
+ run(): void;
16
+ }
@@ -0,0 +1 @@
1
+ export declare function forceFrag(startLevel: number, maxLevels: number): string;
@@ -0,0 +1,15 @@
1
+ import { CoreModule } from '../core-module';
2
+ export declare class ForceManyBodyQuadtree extends CoreModule {
3
+ private randomValuesFbo;
4
+ private levelsTextures;
5
+ private levelsFbos;
6
+ private clearLevelsCommand;
7
+ private calculateLevelsCommand;
8
+ private quadtreeCommand;
9
+ private quadtreeLevels;
10
+ private randomValuesTexture;
11
+ private pointIndices;
12
+ create(): void;
13
+ initPrograms(): void;
14
+ run(): void;
15
+ }
@@ -0,0 +1 @@
1
+ export declare function forceFrag(startLevel: number, maxLevels: number): string;
@@ -0,0 +1,6 @@
1
+ import { CoreModule } from '../core-module';
2
+ export declare class ForceMouse extends CoreModule {
3
+ private runCommand;
4
+ initPrograms(): void;
5
+ run(): void;
6
+ }
@@ -1,12 +1,11 @@
1
- import { Framebuffer, RenderPass } from '@luma.gl/core';
1
+ import { default as regl } from 'regl';
2
2
  import { CoreModule } from '../core-module';
3
3
  export declare class Lines extends CoreModule {
4
- linkIndexFbo: Framebuffer | undefined;
5
- hoveredLineIndexFbo: Framebuffer | undefined;
4
+ linkIndexFbo: regl.Framebuffer2D | undefined;
5
+ hoveredLineIndexFbo: regl.Framebuffer2D | undefined;
6
6
  private drawCurveCommand;
7
7
  private hoveredLineIndexCommand;
8
- private pointABuffer;
9
- private pointBBuffer;
8
+ private pointsBuffer;
10
9
  private colorBuffer;
11
10
  private widthBuffer;
12
11
  private arrowBuffer;
@@ -14,13 +13,8 @@ export declare class Lines extends CoreModule {
14
13
  private curveLineBuffer;
15
14
  private linkIndexBuffer;
16
15
  private quadBuffer;
17
- private linkIndexTexture;
18
- private hoveredLineIndexTexture;
19
- private drawLineUniformStore;
20
- private hoveredLineIndexUniformStore;
21
- private previousScreenSize;
22
16
  initPrograms(): void;
23
- draw(renderPass: RenderPass): void;
17
+ draw(): void;
24
18
  updateLinkIndexFbo(): void;
25
19
  updatePointsBuffer(): void;
26
20
  updateColor(): void;
@@ -28,9 +22,4 @@ export declare class Lines extends CoreModule {
28
22
  updateArrow(): void;
29
23
  updateCurveLineGeometry(): void;
30
24
  findHoveredLine(): void;
31
- /**
32
- * Destruction order matters
33
- * Models -> Framebuffers -> Textures -> UniformStores -> Buffers
34
- */
35
- destroy(): void;
36
25
  }
@@ -1,27 +1,26 @@
1
- import { Framebuffer, Texture, RenderPass } from '@luma.gl/core';
1
+ import { default as regl } from 'regl';
2
2
  import { CoreModule } from '../core-module';
3
3
  export declare class Points extends CoreModule {
4
- currentPositionFbo: Framebuffer | undefined;
5
- previousPositionFbo: Framebuffer | undefined;
6
- velocityFbo: Framebuffer | undefined;
7
- selectedFbo: Framebuffer | undefined;
8
- hoveredFbo: Framebuffer | undefined;
4
+ currentPositionFbo: regl.Framebuffer2D | undefined;
5
+ previousPositionFbo: regl.Framebuffer2D | undefined;
6
+ velocityFbo: regl.Framebuffer2D | undefined;
7
+ selectedFbo: regl.Framebuffer2D | undefined;
8
+ hoveredFbo: regl.Framebuffer2D | undefined;
9
+ greyoutStatusFbo: regl.Framebuffer2D | undefined;
9
10
  scaleX: ((x: number) => number) | undefined;
10
11
  scaleY: ((y: number) => number) | undefined;
11
12
  shouldSkipRescale: boolean | undefined;
12
- imageAtlasTexture: Texture | undefined;
13
+ imageAtlasTexture: regl.Texture2D | undefined;
13
14
  imageCount: number;
14
- currentPositionTexture: Texture | undefined;
15
- previousPositionTexture: Texture | undefined;
16
- velocityTexture: Texture | undefined;
17
- greyoutStatusTexture: Texture | undefined;
18
15
  private colorBuffer;
16
+ private sizeFbo;
19
17
  private sizeBuffer;
20
18
  private shapeBuffer;
21
19
  private imageIndicesBuffer;
22
20
  private imageSizesBuffer;
23
21
  private imageAtlasCoordsTexture;
24
22
  private imageAtlasCoordsTextureSize;
23
+ private trackedIndicesFbo;
25
24
  private trackedPositionsFbo;
26
25
  private sampledPointsFbo;
27
26
  private trackedPositions;
@@ -33,33 +32,23 @@ export declare class Points extends CoreModule {
33
32
  private findPointsOnAreaSelectionCommand;
34
33
  private findPointsOnPolygonSelectionCommand;
35
34
  private findHoveredPointCommand;
35
+ private clearHoveredFboCommand;
36
+ private clearSampledPointsFboCommand;
36
37
  private fillSampledPointsFboCommand;
37
38
  private trackPointsCommand;
38
- private updatePositionVertexCoordBuffer;
39
- private dragPointVertexCoordBuffer;
40
- private findPointsOnAreaSelectionVertexCoordBuffer;
41
- private findPointsOnPolygonSelectionVertexCoordBuffer;
42
- private drawHighlightedVertexCoordBuffer;
43
- private trackPointsVertexCoordBuffer;
44
39
  private trackedIndices;
45
40
  private selectedTexture;
41
+ private greyoutStatusTexture;
46
42
  private pinnedStatusTexture;
43
+ private pinnedStatusFbo;
47
44
  private sizeTexture;
48
45
  private trackedIndicesTexture;
49
46
  private polygonPathTexture;
47
+ private polygonPathFbo;
50
48
  private polygonPathLength;
51
49
  private drawPointIndices;
52
50
  private hoveredPointIndices;
53
51
  private sampledPointIndices;
54
- private updatePositionUniformStore;
55
- private dragPointUniformStore;
56
- private drawUniformStore;
57
- private findPointsOnAreaSelectionUniformStore;
58
- private findPointsOnPolygonSelectionUniformStore;
59
- private findHoveredPointUniformStore;
60
- private fillSampledPointsUniformStore;
61
- private drawHighlightedUniformStore;
62
- private trackPointsUniformStore;
63
52
  updatePositions(): void;
64
53
  initPrograms(): void;
65
54
  updateColor(): void;
@@ -72,7 +61,7 @@ export declare class Points extends CoreModule {
72
61
  createAtlas(): void;
73
62
  updateSampledPointsGrid(): void;
74
63
  trackPoints(): void;
75
- draw(renderPass: RenderPass): void;
64
+ draw(): void;
76
65
  updatePosition(): void;
77
66
  drag(): void;
78
67
  findPointsOnAreaSelection(): void;
@@ -95,11 +84,6 @@ export declare class Points extends CoreModule {
95
84
  positions: number[];
96
85
  };
97
86
  getTrackedPositionsArray(): number[];
98
- /**
99
- * Destruction order matters
100
- * Models -> Framebuffers -> Textures -> UniformStores -> Buffers
101
- * */
102
- destroy(): void;
103
87
  private swapFbo;
104
88
  private rescaleInitialNodePositions;
105
89
  }
@@ -0,0 +1,8 @@
1
+ import { default as regl } from 'regl';
2
+ export declare function createQuadBuffer(reglInstance: regl.Regl): {
3
+ buffer: regl.Buffer;
4
+ size: number;
5
+ };
6
+ export declare function createIndexesForBuffer(textureSize: number): Float32Array;
7
+ export declare function destroyFramebuffer(fbo?: regl.Framebuffer2D): void;
8
+ export declare function destroyBuffer(fbo?: regl.Buffer): void;
@@ -0,0 +1,75 @@
1
+ import { mat3 } from 'gl-matrix';
2
+ import { GraphConfigInterface } from '../../config';
3
+ export declare const ALPHA_MIN = 0.001;
4
+ export declare const MAX_POINT_SIZE = 64;
5
+ /**
6
+ * Maximum number of executions to delay before performing hover detection.
7
+ * This threshold prevents excessive hover detection calls for performance optimization.
8
+ * The `findHoveredItem` method will skip actual detection until this count is reached.
9
+ */
10
+ export declare const MAX_HOVER_DETECTION_DELAY = 4;
11
+ export type Hovered = {
12
+ index: number;
13
+ position: [number, number];
14
+ };
15
+ type Focused = {
16
+ index: number;
17
+ };
18
+ export declare class Store {
19
+ pointsTextureSize: number;
20
+ linksTextureSize: number;
21
+ alpha: number;
22
+ transform: mat3;
23
+ screenSize: [number, number];
24
+ mousePosition: number[];
25
+ screenMousePosition: number[];
26
+ selectedArea: number[][];
27
+ isSimulationRunning: boolean;
28
+ simulationProgress: number;
29
+ selectedIndices: Float32Array | null;
30
+ maxPointSize: number;
31
+ hoveredPoint: Hovered | undefined;
32
+ focusedPoint: Focused | undefined;
33
+ draggingPointIndex: number | undefined;
34
+ hoveredLinkIndex: number | undefined;
35
+ adjustedSpaceSize: number;
36
+ isSpaceKeyPressed: boolean;
37
+ div: HTMLDivElement | undefined;
38
+ webglMaxTextureSize: number;
39
+ hoveredPointRingColor: number[];
40
+ focusedPointRingColor: number[];
41
+ hoveredLinkColor: number[];
42
+ greyoutPointColor: number[];
43
+ isDarkenGreyout: boolean;
44
+ isLinkHoveringEnabled: boolean;
45
+ private alphaTarget;
46
+ private scalePointX;
47
+ private scalePointY;
48
+ private random;
49
+ private _backgroundColor;
50
+ get backgroundColor(): [number, number, number, number];
51
+ set backgroundColor(color: [number, number, number, number]);
52
+ addRandomSeed(seed: number | string): void;
53
+ getRandomFloat(min: number, max: number): number;
54
+ /**
55
+ * If the config parameter `spaceSize` exceeds the limits of WebGL,
56
+ * it reduces the space size without changing the config parameter.
57
+ */
58
+ adjustSpaceSize(configSpaceSize: number, webglMaxTextureSize: number): void;
59
+ /**
60
+ * Sets the WebGL texture size limit for use in atlas creation and other texture operations.
61
+ */
62
+ setWebGLMaxTextureSize(webglMaxTextureSize: number): void;
63
+ updateScreenSize(width: number, height: number): void;
64
+ scaleX(x: number): number;
65
+ scaleY(y: number): number;
66
+ setHoveredPointRingColor(color: string | [number, number, number, number]): void;
67
+ setFocusedPointRingColor(color: string | [number, number, number, number]): void;
68
+ setGreyoutPointColor(color: string | [number, number, number, number] | undefined): void;
69
+ updateLinkHoveringEnabled(config: Pick<GraphConfigInterface, 'onLinkClick' | 'onLinkMouseOver' | 'onLinkMouseOut'>): void;
70
+ setHoveredLinkColor(color?: string | [number, number, number, number]): void;
71
+ setFocusedPoint(index?: number): void;
72
+ addAlpha(decay: number): number;
73
+ private alphaDecay;
74
+ }
75
+ export {};
@@ -1,14 +1,14 @@
1
- import { Device } from '@luma.gl/core';
1
+ import { default as regl } from 'regl';
2
2
  import { GraphConfigInterface } from '../config';
3
3
  import { GraphData } from './GraphData';
4
4
  import { Points } from './Points';
5
5
  import { Store } from './Store';
6
6
  export declare class CoreModule {
7
- readonly device: Device;
7
+ readonly reglInstance: regl.Regl;
8
8
  readonly config: GraphConfigInterface;
9
9
  readonly store: Store;
10
10
  readonly data: GraphData;
11
11
  readonly points: Points | undefined;
12
12
  _debugRandomNumber: number;
13
- constructor(device: Device, config: GraphConfigInterface, store: Store, data: GraphData, points?: Points);
13
+ constructor(reglInstance: regl.Regl, config: GraphConfigInterface, store: Store, data: GraphData, points?: Points);
14
14
  }
@@ -30,12 +30,14 @@ export declare const defaultConfigValues: {
30
30
  hoveredLinkWidthIncrease: number;
31
31
  focusedPointRingColor: string;
32
32
  focusedPointIndex: undefined;
33
+ useClassicQuadtree: boolean;
33
34
  simulation: {
34
35
  decay: number;
35
36
  gravity: number;
36
37
  center: number;
37
38
  repulsion: number;
38
39
  repulsionTheta: number;
40
+ repulsionQuadtreeLevels: number;
39
41
  linkSpring: number;
40
42
  linkDistance: number;
41
43
  linkDistRandomVariationRange: number[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmos.gl/graph",
3
- "version": "2.6.3",
3
+ "version": "2.6.4",
4
4
  "description": "GPU-based force graph layout and rendering",
5
5
  "jsdelivr": "dist/index.min.js",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,8 @@
19
19
  "lint": "eslint --cache ./src --ext .ts --ignore-path .gitignore",
20
20
  "lint:staged": "npx lint-staged",
21
21
  "storybook": "storybook dev -p 6006",
22
- "build:storybook": "storybook build"
22
+ "build:storybook": "storybook build",
23
+ "prepublishOnly": "npm run build:vite"
23
24
  },
24
25
  "engines": {
25
26
  "node": ">=12.2.0",