@lapis-notes/graph 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 (51) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE.md +8 -0
  3. package/README.md +20 -0
  4. package/dist/embed.d.ts +5 -0
  5. package/dist/embed.js +4 -0
  6. package/dist/graph-build-generation.d.ts +6 -0
  7. package/dist/graph-build-generation.js +13 -0
  8. package/dist/graph-controls-overlay.svelte +840 -0
  9. package/dist/graph-controls-overlay.svelte.d.ts +30 -0
  10. package/dist/graph-data-coordinator.d.ts +41 -0
  11. package/dist/graph-data-coordinator.js +265 -0
  12. package/dist/graph-data.d.ts +23 -0
  13. package/dist/graph-data.js +493 -0
  14. package/dist/graph-embed.svelte +92 -0
  15. package/dist/graph-embed.svelte.d.ts +12 -0
  16. package/dist/graph-file-preview.svelte +115 -0
  17. package/dist/graph-file-preview.svelte.d.ts +12 -0
  18. package/dist/graph-hover-intent.d.ts +22 -0
  19. package/dist/graph-hover-intent.js +85 -0
  20. package/dist/graph-load-alignment.d.ts +2 -0
  21. package/dist/graph-load-alignment.js +3 -0
  22. package/dist/graph-navigation.d.ts +7 -0
  23. package/dist/graph-navigation.js +78 -0
  24. package/dist/graph-node-activation.d.ts +4 -0
  25. package/dist/graph-node-activation.js +16 -0
  26. package/dist/graph-plugin.d.ts +38 -0
  27. package/dist/graph-plugin.js +177 -0
  28. package/dist/graph-problems.d.ts +15 -0
  29. package/dist/graph-problems.js +46 -0
  30. package/dist/graph-query-resolution.d.ts +9 -0
  31. package/dist/graph-query-resolution.js +44 -0
  32. package/dist/graph-renderer.d.ts +226 -0
  33. package/dist/graph-renderer.js +1350 -0
  34. package/dist/graph-settings.d.ts +20 -0
  35. package/dist/graph-settings.js +125 -0
  36. package/dist/graph-types.d.ts +74 -0
  37. package/dist/graph-types.js +1 -0
  38. package/dist/graph-view.d.ts +62 -0
  39. package/dist/graph-view.js +553 -0
  40. package/dist/graph-viewport-alignment.d.ts +6 -0
  41. package/dist/graph-viewport-alignment.js +9 -0
  42. package/dist/index.d.ts +9 -0
  43. package/dist/index.js +8 -0
  44. package/dist/mount-local-component.svelte.d.ts +7 -0
  45. package/dist/mount-local-component.svelte.js +12 -0
  46. package/dist/public-components.d.ts +2 -0
  47. package/dist/public-components.js +2 -0
  48. package/dist/styles.css +441 -0
  49. package/manifest.json +30 -0
  50. package/package.json +84 -0
  51. package/styles.css +1 -0
@@ -0,0 +1,226 @@
1
+ import { type SimulationLinkDatum, type SimulationNodeDatum } from "d3-force";
2
+ import type { GraphData, GraphNode, GraphSettings } from "./graph-types";
3
+ export interface GraphRenderNode extends GraphNode, SimulationNodeDatum {
4
+ radius: number;
5
+ }
6
+ export interface GraphRenderLink extends SimulationLinkDatum<GraphRenderNode> {
7
+ id: string;
8
+ count: number;
9
+ directed: boolean;
10
+ }
11
+ interface GraphRendererCallbacks {
12
+ onNodeClick: (node: GraphNode, event: MouseEvent) => void;
13
+ onNodeContextMenu: (node: GraphNode, event: MouseEvent) => void;
14
+ onLayoutComplete?: (summary: {
15
+ animated: boolean;
16
+ durationMs: number;
17
+ nodeCount: number;
18
+ linkCount: number;
19
+ }) => void;
20
+ onTimeLapseStateChange?: (state: {
21
+ running: boolean;
22
+ reason: "started" | "stopped" | "completed" | "graph-changed";
23
+ }) => void;
24
+ onNodePreviewChange?: (preview: GraphNodePreview | null) => void;
25
+ }
26
+ export interface GraphPreviewAnchor {
27
+ getBoundingClientRect(): DOMRect;
28
+ }
29
+ export interface GraphNodePreview {
30
+ node: GraphNode;
31
+ anchor: GraphPreviewAnchor;
32
+ }
33
+ export type GraphViewportTransform = {
34
+ x: number;
35
+ y: number;
36
+ k: number;
37
+ };
38
+ type Bounds = {
39
+ minX: number;
40
+ minY: number;
41
+ maxX: number;
42
+ maxY: number;
43
+ };
44
+ export declare const GRAPH_D3_ALPHA_DECAY: number;
45
+ export declare const GRAPH_D3_VELOCITY_DECAY = 0.4;
46
+ export declare function graphPhyllotaxisPosition(index: number, spacing?: number): {
47
+ x: number;
48
+ y: number;
49
+ };
50
+ export declare function graphNodeWorldRadius(baseRadius: number, zoom: number): number;
51
+ export declare function graphNodeScreenRadius(baseRadius: number, zoom: number): number;
52
+ export declare function graphNodeSupportsPreview(node: GraphNode): boolean;
53
+ export declare function graphNodePreviewRect(options: {
54
+ node: GraphRenderNode;
55
+ transform: GraphViewportTransform;
56
+ canvasRect: Pick<DOMRect, "left" | "top">;
57
+ }): {
58
+ x: number;
59
+ y: number;
60
+ width: number;
61
+ height: number;
62
+ };
63
+ export declare function graphEmphasisAlpha(kind: "node" | "link" | "label", active: boolean, progress: number): number;
64
+ export declare function advanceGraphEmphasis(previous: number, target: number, elapsedMs: number): number;
65
+ export declare function graphLinkScreenWidth(value: number): number;
66
+ export declare function graphLinkUsesAccentPaint(hasEmphasis: boolean, incidentToSource: boolean): boolean;
67
+ export declare function createGraphLinkDegreeMap(nodes: GraphRenderNode[], links: GraphRenderLink[]): ReadonlyMap<string, number>;
68
+ export declare function graphDegreeNormalizedLinkStrength(link: GraphRenderLink, degrees: ReadonlyMap<string, number>, sliderValue: number): number;
69
+ export declare function createGraphForceSimulation(nodes: GraphRenderNode[], links: GraphRenderLink[], settings: GraphSettings): import("d3-force").Simulation<GraphRenderNode, undefined>;
70
+ export declare function createGraphTimeLapsePlan(graph: GraphData): string[];
71
+ export declare function graphTimeLapseVisibleCount(elapsedMs: number, durationMs: number, total: number): number;
72
+ export declare function graphNodeIntersectsViewport(options: {
73
+ nodeX: number;
74
+ nodeY: number;
75
+ screenRadius: number;
76
+ transform: GraphViewportTransform;
77
+ viewportWidth: number;
78
+ viewportHeight: number;
79
+ margin?: number;
80
+ }): boolean;
81
+ export declare function graphLinkIntersectsViewport(options: {
82
+ sourceX: number;
83
+ sourceY: number;
84
+ targetX: number;
85
+ targetY: number;
86
+ transform: GraphViewportTransform;
87
+ viewportWidth: number;
88
+ viewportHeight: number;
89
+ margin?: number;
90
+ }): boolean;
91
+ export declare const GRAPH_MIN_ZOOM: number;
92
+ export declare const GRAPH_MAX_ZOOM = 8;
93
+ export declare const GRAPH_MAX_FIT_ZOOM = 1.35;
94
+ export declare const GRAPH_FOCUS_ZOOM = 1.1;
95
+ export declare const GRAPH_ZOOM_STEP = 1.5;
96
+ export declare function clampGraphZoom(value: number): number;
97
+ export declare function graphFitScale(options: {
98
+ viewportWidth: number;
99
+ viewportHeight: number;
100
+ contentWidth: number;
101
+ contentHeight: number;
102
+ padding: number;
103
+ }): number;
104
+ export declare function graphFitTransform(options: {
105
+ viewportWidth: number;
106
+ viewportHeight: number;
107
+ bounds: Bounds;
108
+ padding: number;
109
+ }): GraphViewportTransform;
110
+ export declare function graphFocusTransform(options: {
111
+ viewportWidth: number;
112
+ viewportHeight: number;
113
+ nodeX: number;
114
+ nodeY: number;
115
+ currentScale: number;
116
+ }): GraphViewportTransform;
117
+ export declare function graphNodeLabelAlpha(options: {
118
+ zoom: number;
119
+ textFadeThreshold: number;
120
+ hovered: boolean;
121
+ context: boolean;
122
+ }): number;
123
+ export type GraphFocusOptions = {
124
+ zoom?: boolean;
125
+ };
126
+ export declare class GraphRenderer {
127
+ private readonly wrapperEl;
128
+ private readonly canvasEl;
129
+ private readonly emptyStateEl;
130
+ private readonly context;
131
+ private readonly callbacks;
132
+ private simulation;
133
+ private graph;
134
+ private settings;
135
+ private nodes;
136
+ private links;
137
+ private neighborMap;
138
+ private positions;
139
+ private resizeObserver;
140
+ private animationFrame;
141
+ private timeLapseFrame;
142
+ private timeLapseStartedAt;
143
+ private timeLapseDurationMs;
144
+ private timeLapseOrder;
145
+ private visibleTimeLapseNodes;
146
+ private hoveredNodeId;
147
+ private emphasisNodeId;
148
+ private focusedNodeId;
149
+ private emphasisProgress;
150
+ private emphasisTarget;
151
+ private emphasisFrameAt;
152
+ private layoutStartedAt;
153
+ private readonly reducedMotion;
154
+ private autoCenterNodeId;
155
+ private autoCenterZoom;
156
+ private autoFitViewport;
157
+ private pendingCenterNodeId;
158
+ private pendingFitViewport;
159
+ private hasFittedViewport;
160
+ private lastViewportWidth;
161
+ private lastViewportHeight;
162
+ private viewportAdjustedByUser;
163
+ private pointerMode;
164
+ private pointerId;
165
+ private pointerDownNodeId;
166
+ private pointerMoved;
167
+ private dragNode;
168
+ private pointerStart;
169
+ private panStart;
170
+ private transform;
171
+ private readonly hoverIntent;
172
+ private modifierDown;
173
+ private previewNodeId;
174
+ private previewSuppressedNodeId;
175
+ private readonly handleDocumentKeyDown;
176
+ private readonly handleDocumentKeyUp;
177
+ constructor(containerEl: HTMLElement, callbacks: GraphRendererCallbacks);
178
+ setGraph(graph: GraphData, settings: GraphSettings): void;
179
+ private hasSameTopology;
180
+ focusNode(nodeId: string | null, options?: GraphFocusOptions): void;
181
+ zoomIn(): void;
182
+ zoomOut(): void;
183
+ resetView(): void;
184
+ refreshViewport(): void;
185
+ startTimeLapse(durationMs?: number): void;
186
+ stopTimeLapse(reason?: "stopped" | "completed" | "graph-changed", notify?: boolean): void;
187
+ isTimeLapseRunning(): boolean;
188
+ dismissPreview(): void;
189
+ destroy(): void;
190
+ private observeResize;
191
+ private bindEvents;
192
+ private resize;
193
+ private hasViewportSize;
194
+ private centerNodeInViewport;
195
+ private applyFocusAlignment;
196
+ private applyResizeAlignment;
197
+ private storePositions;
198
+ private fitGraphToViewport;
199
+ private getBounds;
200
+ private rebuildNeighborMap;
201
+ private restartSimulation;
202
+ private prepareInitialFit;
203
+ private applyAutoCenter;
204
+ private applyFinalAlignment;
205
+ private updateEmphasisTarget;
206
+ private advanceEmphasis;
207
+ private scheduleTimeLapseFrame;
208
+ private isNodeVisibleInTimeLapse;
209
+ private queueRender;
210
+ private render;
211
+ private drawLink;
212
+ private drawNode;
213
+ private drawLabel;
214
+ private isNodeActive;
215
+ private hasEmphasisSource;
216
+ private isLinkActive;
217
+ private hitTest;
218
+ private openPreviewForHoveredNode;
219
+ private openPreview;
220
+ private closePreview;
221
+ private screenToWorld;
222
+ private pointerDistance;
223
+ private endPointerInteraction;
224
+ private zoomAtCenter;
225
+ }
226
+ export {};