@graphty/cytoscape-extensions 0.0.28 → 0.0.29

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 (72) hide show
  1. package/dist/algorithm-options.d.ts +5 -0
  2. package/dist/algorithm-options.d.ts.map +1 -0
  3. package/dist/algorithm-options.js +285 -0
  4. package/dist/algorithm-options.js.map +1 -0
  5. package/dist/algorithms.d.ts +489 -0
  6. package/dist/algorithms.d.ts.map +1 -0
  7. package/dist/algorithms.js +1184 -0
  8. package/dist/algorithms.js.map +1 -0
  9. package/dist/cdn/chunks/elements-DkrLtNP8.js +1 -0
  10. package/dist/cdn/chunks/gpu-platform-browser-VBah74fl.js +2825 -0
  11. package/dist/cdn/chunks/index-C4RZkds_.js +10 -0
  12. package/dist/cdn/chunks/index-CAhmhhmb.js +1 -0
  13. package/dist/cdn/chunks/io-Da5POp5D.js +268 -0
  14. package/dist/cdn/chunks/preload-helper-DEpZAvig.js +1 -0
  15. package/dist/cdn/chunks/samples-BkLzaDJ3.js +1 -0
  16. package/dist/cdn/chunks/sigv4-EokFic1V-CWJiFeEe.js +3 -0
  17. package/dist/cdn/chunks/sources-cypher-BGGD4kJ9.js +5 -0
  18. package/dist/cdn/chunks/sources-ndex-CxnPOYff.js +1 -0
  19. package/dist/cdn/chunks/sources-rest-BPNV8mX-.js +1 -0
  20. package/dist/cdn/chunks/sources-sparql-BiqRQuHD.js +5 -0
  21. package/dist/cdn/cytoscape-extensions.js +1 -0
  22. package/dist/cdn/io.js +1 -0
  23. package/dist/cytoscape-extensions.bundle.js +2825 -0
  24. package/dist/elements.d.ts +69 -0
  25. package/dist/elements.d.ts.map +1 -0
  26. package/dist/elements.js +343 -0
  27. package/dist/elements.js.map +1 -0
  28. package/dist/gpu-platform-browser.d.ts +11 -0
  29. package/dist/gpu-platform-browser.d.ts.map +1 -0
  30. package/dist/gpu-platform-browser.js +22 -0
  31. package/dist/gpu-platform-browser.js.map +1 -0
  32. package/dist/gpu-platform-node.d.ts +15 -0
  33. package/dist/gpu-platform-node.d.ts.map +1 -0
  34. package/dist/gpu-platform-node.js +27 -0
  35. package/dist/gpu-platform-node.js.map +1 -0
  36. package/dist/gpu.d.ts +149 -0
  37. package/dist/gpu.d.ts.map +1 -0
  38. package/dist/gpu.js +312 -0
  39. package/dist/gpu.js.map +1 -0
  40. package/dist/graph-data.d.ts +101 -0
  41. package/dist/graph-data.d.ts.map +1 -0
  42. package/dist/graph-data.js +147 -0
  43. package/dist/graph-data.js.map +1 -0
  44. package/dist/index.d.ts +36 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +48 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/io.d.ts +111 -0
  49. package/dist/io.d.ts.map +1 -0
  50. package/dist/io.js +258 -0
  51. package/dist/io.js.map +1 -0
  52. package/dist/layouts.d.ts +207 -0
  53. package/dist/layouts.d.ts.map +1 -0
  54. package/dist/layouts.js +615 -0
  55. package/dist/layouts.js.map +1 -0
  56. package/dist/lazy.d.ts +21 -0
  57. package/dist/lazy.d.ts.map +1 -0
  58. package/dist/lazy.js +32 -0
  59. package/dist/lazy.js.map +1 -0
  60. package/dist/samples.d.ts +115 -0
  61. package/dist/samples.d.ts.map +1 -0
  62. package/dist/samples.js +237 -0
  63. package/dist/samples.js.map +1 -0
  64. package/dist/snapshot.d.ts +81 -0
  65. package/dist/snapshot.d.ts.map +1 -0
  66. package/dist/snapshot.js +225 -0
  67. package/dist/snapshot.js.map +1 -0
  68. package/dist/webgpu-provider.d.ts +25 -0
  69. package/dist/webgpu-provider.d.ts.map +1 -0
  70. package/dist/webgpu-provider.js +53 -0
  71. package/dist/webgpu-provider.js.map +1 -0
  72. package/package.json +13 -9
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Every @graphty/layout layout as a Cytoscape.js 3.x layout extension, named "graphty-<name>".
3
+ *
4
+ * Two kinds:
5
+ * - static layouts compute once and hand their positions to Cytoscape's `layoutPositions`, which supplies the
6
+ * events, `fit`, `spacingFactor`, `transform` and the tween for any truthy `animate`;
7
+ * - the force simulations (ForceAtlas2, Fruchterman-Reingold, spring-electrical) step a `LayoutSimulation`. With
8
+ * `animate: true` they draw every frame and own their events; otherwise they run to the end and finish through
9
+ * `layoutPositions` like a static layout.
10
+ *
11
+ * Positions are 2D. A 3D run (`dim: 3`) is projected onto the x-y plane.
12
+ */
13
+ import { type ArfOptions, type BipartiteLayoutOptions, type ForceAtlas2Options, type FruchtermanReingoldOptions, type GridLayoutOptions, type KamadaKawaiOptions, type LayoutAccelerator, type SimulationType, type SpiralLayoutOptions, type SpringElectricalOptions } from "@graphty/layout";
14
+ import type { BoundingBox12, BoundingBoxWH, Collection, LayoutHandler, Layouts as CytoscapeLayouts, NodeSingular, Position } from "cytoscape";
15
+ import { type Backend, type GpuMode } from "./gpu.js";
16
+ import { type NodeSelection } from "./snapshot.js";
17
+ /**
18
+ * Every option this package defines for the "graphty-*" layouts, shared and per layout. A layout takes the shared ones
19
+ * and its own (see GraphtyLayoutOptionsByName); its other options go to the @graphty/layout function unchanged.
20
+ * Exported for scripts/reference.ts, which documents every layout option from it.
21
+ * @internal
22
+ */
23
+ export interface LayoutOptionFields {
24
+ readonly name: GraphtyLayoutName;
25
+ /** Set by `cy.layout()` / `eles.layout()`. */
26
+ readonly eles?: Collection;
27
+ /** false: jump; "end" or any truthy value on a static layout: tween to the result; true on a simulation: draw every frame. */
28
+ readonly animate?: boolean | "end";
29
+ /** Length of the tween, in milliseconds. */
30
+ readonly animationDuration?: number;
31
+ /** Easing of the tween, as Cytoscape's built-in layouts take it (for example "ease-out"). */
32
+ readonly animationEasing?: string;
33
+ /** Tween only the nodes for which this returns true; the others jump to their positions. */
34
+ readonly animateFilter?: (node: NodeSingular, i: number) => boolean;
35
+ /** Fit the viewport to the result. Default true. */
36
+ readonly fit?: boolean;
37
+ /** Space around the result when `fit` is true, in pixels. */
38
+ readonly padding?: number;
39
+ /**
40
+ * Where to place the result. Default: the viewport, which is 1 x 1 pixel on a headless core. The result keeps its
41
+ * shape: its centroid goes to the center of the box, and it is scaled so the node farthest from the centroid is
42
+ * half the box's shorter side away. A box wider than it is tall is therefore not filled from side to side. A
43
+ * simulation with locked nodes keeps them in place and scales the free nodes around them instead.
44
+ */
45
+ readonly boundingBox?: BoundingBox12 | BoundingBoxWH;
46
+ /**
47
+ * Expands (above 1) or compresses (below 1) the area the result takes up, after it is fitted to `boundingBox`, so
48
+ * a value above 1 can put nodes outside the box.
49
+ */
50
+ readonly spacingFactor?: number;
51
+ /** Changes each final position: called with the node and its computed position, returns the position to use. */
52
+ readonly transform?: (node: NodeSingular, position: Position) => Position;
53
+ /** Called on layoutready. */
54
+ readonly ready?: LayoutHandler;
55
+ /** Called on layoutstop. */
56
+ readonly stop?: LayoutHandler;
57
+ /**
58
+ * 2 (default) or 3. With 3, graphty-circular puts the nodes on a sphere, and graphty-random, graphty-kamada-kawai,
59
+ * graphty-arf and the simulations place them in 3D; z is then dropped, so the drawing is that 3D result seen from
60
+ * above and no longer looks like the 2D layout (circular is no longer a circle). The other layouts ignore it.
61
+ * Cytoscape draws in 2D, so 3 only gives a different flattened drawing; it is there because the underlying layout
62
+ * functions take it.
63
+ */
64
+ readonly dim?: 2 | 3;
65
+ /**
66
+ * Seed of the layouts that draw random numbers: graphty-random, graphty-spectral (above 500 nodes), graphty-arf
67
+ * and the three simulations. The same seed gives the same positions; without one, positions that depend on random
68
+ * numbers differ from run to run. The other layouts ignore it.
69
+ */
70
+ readonly seed?: number;
71
+ /**
72
+ * Edge data field holding the weight; a function of the edge also works at runtime. An edge without a number
73
+ * counts as 1. Only graphty-forceatlas2 and graphty-kamada-kawai read it, in opposite directions: forceatlas2
74
+ * treats it as attraction (higher pulls the ends closer), kamada-kawai as edge length (higher pushes them
75
+ * apart). Default: unweighted.
76
+ */
77
+ readonly weight?: string;
78
+ /** Simulations: start from random positions (true, default) or from the current ones. Locked nodes never move. */
79
+ readonly randomize?: boolean;
80
+ /** Simulations with `animate: true`: iterations per frame. Default 1. */
81
+ readonly refresh?: number;
82
+ /**
83
+ * Simulations: "auto" (default) runs on the core's GPU when the runtime has a usable WebGPU device, else on the
84
+ * CPU. In Node or a browser with `navigator.gpu`, a run that has to look for a device finishes after `run()`
85
+ * returns, whichever it picks, so listen for layoutstop. "off" runs on the CPU, synchronously when `animate` is false; "require" emits layouterror instead of running on the CPU. `layout.backend` says which ran. Any other value makes `run()` throw a TypeError.
86
+ */
87
+ readonly gpu?: GpuMode;
88
+ /**
89
+ * Simulations: an accelerator the caller built and owns (for example the `createAccelerator` of
90
+ * `@graphty/webgpu-graph-algorithms`); overrides `gpu`. null forces the CPU.
91
+ */
92
+ readonly accelerator?: LayoutAccelerator | null;
93
+ /** shell: the shells, innermost first. */
94
+ readonly nlist?: readonly NodeSelection[];
95
+ /**
96
+ * multipartite: a node data field whose value names the layer (default "subset"), or the layers in order. Layers
97
+ * named by a field are ordered by value, numbers ascending and other values alphabetically. A node with no value in
98
+ * the field is not placed and keeps its position, so on a graph where no node has the field nothing moves.
99
+ */
100
+ readonly subsets?: string | readonly NodeSelection[];
101
+ /**
102
+ * bipartite: the nodes of the first line, the left column when `align` is "vertical" and the top row when it is
103
+ * "horizontal". Absent: the first, third, fifth and so on of the laid-out nodes.
104
+ */
105
+ readonly top?: NodeSelection;
106
+ /**
107
+ * multipartite, bipartite and bfs: "vertical" (default) puts each layer in a column, its nodes sharing one x;
108
+ * "horizontal" puts each layer in a row, its nodes sharing one y.
109
+ */
110
+ readonly align?: "vertical" | "horizontal";
111
+ /**
112
+ * bfs: the start node, default the first node; radial: the center node, default the node with the most neighbors.
113
+ */
114
+ readonly root?: NodeSelection;
115
+ /**
116
+ * forceatlas2: each node's mass. The name of a node data field (a node without a number there gets the default),
117
+ * an object keyed by node id, or one number per node in node order (an array or a typed array; see Per-node
118
+ * arrays). Default: the node's degree + 1.
119
+ */
120
+ readonly nodeMass?: string | ArrayLike<number> | Readonly<Record<string, number>>;
121
+ /** forceatlas2: accepted in the same forms as `nodeMass` and not used yet: nodes are treated as points. */
122
+ readonly nodeSize?: string | ArrayLike<number> | Readonly<Record<string, number>>;
123
+ }
124
+ /** The options of LayoutOptionFields that only some layouts take. */
125
+ type PerLayoutField = "nlist" | "subsets" | "top" | "align" | "root" | "nodeMass" | "nodeSize";
126
+ /** The options every layout takes. */
127
+ type Shared = Omit<LayoutOptionFields, "name" | PerLayoutField>;
128
+ /** Some of the per-layout options. */
129
+ type Own<K extends PerLayoutField> = Pick<LayoutOptionFields, K>;
130
+ /**
131
+ * A @graphty/layout options type without what this package sets itself (the frame and the stepping, `fixed` from
132
+ * locked nodes) or spells its own way (bfs `start` is `root` here).
133
+ */
134
+ type Library<T, Drop extends string = never> = Omit<T, keyof LayoutOptionFields | "scale" | "center" | "iterationsPerStep" | "fixed" | "start" | "weights" | "weighted" | Drop>;
135
+ /**
136
+ * The options of each "graphty-*" layout, by name. A simulation's `pos` is the nodes' current positions, so only the
137
+ * static layouts that take a start (arf, kamada-kawai) list it.
138
+ */
139
+ export interface GraphtyLayoutOptionsByName {
140
+ "graphty-random": Shared;
141
+ "graphty-circular": Shared;
142
+ "graphty-spiral": Shared & Library<SpiralLayoutOptions>;
143
+ "graphty-grid": Shared & Library<GridLayoutOptions>;
144
+ "graphty-spectral": Shared;
145
+ "graphty-planar": Shared;
146
+ "graphty-arf": Shared & Library<ArfOptions>;
147
+ "graphty-kamada-kawai": Shared & Library<KamadaKawaiOptions>;
148
+ "graphty-shell": Shared & Own<"nlist">;
149
+ "graphty-multipartite": Shared & Own<"subsets" | "align">;
150
+ "graphty-bipartite": Shared & Own<"top" | "align"> & Library<BipartiteLayoutOptions>;
151
+ "graphty-bfs": Shared & Own<"root" | "align">;
152
+ "graphty-radial": Shared & Own<"root">;
153
+ "graphty-forceatlas2": Shared & Own<"nodeMass" | "nodeSize"> & Library<ForceAtlas2Options>;
154
+ "graphty-fruchterman-reingold": Shared & Library<FruchtermanReingoldOptions, "pos">;
155
+ "graphty-spring-electrical": Shared & Library<SpringElectricalOptions, "pos">;
156
+ }
157
+ /** Every layout this package registers, by its registered name. */
158
+ export type GraphtyLayoutName = keyof GraphtyLayoutOptionsByName;
159
+ /**
160
+ * The options of a "graphty-*" layout: a union over the layout names, so a variable annotated with it keeps its
161
+ * layout's options type, and a misspelled name or option does not compile. `GraphtyLayoutOptions<"graphty-bfs">` is
162
+ * one layout's.
163
+ */
164
+ export type GraphtyLayoutOptions<N extends GraphtyLayoutName = GraphtyLayoutName> = N extends GraphtyLayoutName ? GraphtyLayoutOptionsByName[N] & {
165
+ readonly name: N;
166
+ } : never;
167
+ /**
168
+ * The layout a "graphty-*" layout name gives. `backend` is set on a simulation (forceatlas2, fruchterman-reingold,
169
+ * spring-electrical) once it has decided between GPU and CPU, before layoutready; static layouts leave it unset.
170
+ */
171
+ export type GraphtyLayouts = CytoscapeLayouts & {
172
+ readonly backend?: Backend;
173
+ };
174
+ declare module "cytoscape" {
175
+ interface CoreLayout {
176
+ layout(options: GraphtyLayoutOptions): GraphtyLayouts;
177
+ makeLayout(options: GraphtyLayoutOptions): GraphtyLayouts;
178
+ createLayout(options: GraphtyLayoutOptions): GraphtyLayouts;
179
+ }
180
+ interface CollectionLayout {
181
+ layout(options: GraphtyLayoutOptions): GraphtyLayouts;
182
+ makeLayout(options: GraphtyLayoutOptions): GraphtyLayouts;
183
+ createLayout(options: GraphtyLayoutOptions): GraphtyLayouts;
184
+ }
185
+ }
186
+ export declare const DEFAULTS: {
187
+ readonly animate: false;
188
+ readonly animationDuration: 500;
189
+ readonly fit: true;
190
+ readonly padding: 30;
191
+ readonly randomize: true;
192
+ readonly refresh: 1;
193
+ };
194
+ export declare const SIMULATION_DEFAULTS: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
195
+ /** Registered name suffix -> @graphty/layout simulation type. */
196
+ export declare const SIMULATIONS: Readonly<Record<string, SimulationType>>;
197
+ /** Every layout name this package registers, without the "graphty-" prefix. */
198
+ export declare const LAYOUT_NAMES: readonly string[];
199
+ /** The registration function Cytoscape's `use()` calls. */
200
+ type Register = (type: string, name: string, registrant: unknown) => void;
201
+ /**
202
+ * Registers every graphty layout as "graphty-<name>": `cytoscape.use(graphtyCytoscape)`.
203
+ * @param cytoscape - the cytoscape function
204
+ */
205
+ export declare function registerLayouts(cytoscape: Register): void;
206
+ export {};
207
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../src/layouts.ts"],"names":[],"mappings":"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"}