@krainovsd/graph 0.8.3 → 0.9.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.
@@ -1,6 +1,12 @@
1
1
  function pointerGetter(mouseEvent, areaRect, areaTransform) {
2
- const px = (mouseEvent.clientX - areaRect.left - areaTransform.x) / areaTransform.k;
3
- const py = (mouseEvent.clientY - areaRect.top - areaTransform.y) / areaTransform.k;
2
+ const clientX = "clientX" in mouseEvent
3
+ ? mouseEvent.clientX
4
+ : (mouseEvent.touches[0]?.clientX ?? mouseEvent.changedTouches[0]?.clientX);
5
+ const clientY = "clientX" in mouseEvent
6
+ ? mouseEvent.clientY
7
+ : (mouseEvent.touches[0]?.clientY ?? mouseEvent.changedTouches[0]?.clientY);
8
+ const px = (clientX - areaRect.left - areaTransform.x) / areaTransform.k;
9
+ const py = (clientY - areaRect.top - areaTransform.y) / areaTransform.k;
4
10
  return [px, py];
5
11
  }
6
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"pointer-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/pointer-getter.ts"],"sourcesContent":["import type { ZoomTransform } from \"d3-zoom\";\n\nexport function pointerGetter(\n mouseEvent: MouseEvent,\n areaRect: DOMRect,\n areaTransform: ZoomTransform,\n) {\n const px = (mouseEvent.clientX - areaRect.left - areaTransform.x) / areaTransform.k;\n const py = (mouseEvent.clientY - areaRect.top - areaTransform.y) / areaTransform.k;\n\n return [px, py];\n}\n"],"names":[],"mappings":"SAEgB,aAAa,CAC3B,UAAsB,EACtB,QAAiB,EACjB,aAA4B,EAAA;AAE5B,IAAA,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;AACnF,IAAA,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;AAElF,IAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB;;;;"}
1
+ {"version":3,"file":"pointer-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/pointer-getter.ts"],"sourcesContent":["import type { ZoomTransform } from \"d3-zoom\";\n\nexport function pointerGetter(\n mouseEvent: MouseEvent | TouchEvent,\n areaRect: DOMRect,\n areaTransform: ZoomTransform,\n) {\n const clientX =\n \"clientX\" in mouseEvent\n ? mouseEvent.clientX\n : (mouseEvent.touches[0]?.clientX ?? mouseEvent.changedTouches[0]?.clientX);\n const clientY =\n \"clientX\" in mouseEvent\n ? mouseEvent.clientY\n : (mouseEvent.touches[0]?.clientY ?? mouseEvent.changedTouches[0]?.clientY);\n\n const px = (clientX - areaRect.left - areaTransform.x) / areaTransform.k;\n const py = (clientY - areaRect.top - areaTransform.y) / areaTransform.k;\n\n return [px, py];\n}\n"],"names":[],"mappings":"SAEgB,aAAa,CAC3B,UAAmC,EACnC,QAAiB,EACjB,aAA4B,EAAA;AAE5B,IAAA,MAAM,OAAO,GACX,SAAS,IAAI;UACT,UAAU,CAAC;WACV,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAC/E,IAAA,MAAM,OAAO,GACX,SAAS,IAAI;UACT,UAAU,CAAC;WACV,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAE/E,IAAA,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;AACxE,IAAA,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;AAEvE,IAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB;;;;"}
package/lib/index.d.ts CHANGED
@@ -22,11 +22,11 @@ interface LinkInterface<NodeData extends Record<string, unknown>, LinkData exten
22
22
  type ZoomEventInterface = D3ZoomEvent<HTMLCanvasElement, unknown>;
23
23
  type DragEventInterface<NodeData extends Record<string, unknown>> = D3DragEvent<HTMLElement, unknown, NodeInterface<NodeData>>;
24
24
  type ListenersInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
25
- onContextMenu?: (event: MouseEvent, node?: NodeInterface<NodeData>) => void;
26
- onClick?: (event: MouseEvent, node?: NodeInterface<NodeData>) => void;
27
- onDoubleClick?: (event: MouseEvent, node?: NodeInterface<NodeData>) => void;
28
- onWheelClick?: (event: MouseEvent, node?: NodeInterface<NodeData>) => void;
29
- onMove?: (event: MouseEvent, node?: NodeInterface<NodeData>) => void;
25
+ onContextMenu?: (event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
26
+ onClick?: (event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
27
+ onDoubleClick?: (event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
28
+ onWheelClick?: (event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
29
+ onMove?: (event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
30
30
  onZoom?: (event: ZoomEventInterface) => void;
31
31
  onDragSubject?: (event: DragEventInterface<NodeData>, state: GraphState<NodeData, LinkData>) => NodeInterface<NodeData> | undefined;
32
32
  onDraw?: (state: GraphState<NodeData, LinkData>, toggleHighlightStatus: (status: boolean) => void, clearHighlightState: () => void) => void;
@@ -38,19 +38,33 @@ type ListenersInterface<NodeData extends Record<string, unknown>, LinkData exten
38
38
  };
39
39
 
40
40
  type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
41
- highlightOnlyRoot?: boolean;
42
- highlightFadingMin?: number;
43
- highlightLinkFadingMin?: number;
44
- highlightArrowFadingMin?: number;
45
- highlightColorFadingMin?: number;
46
- highlightTextFadingMin?: number;
47
- highlightSizingAdditional?: number;
48
- highlightTextSizingAdditional?: number;
49
- highlightTextShiftXAdditional?: number;
50
- highlightTextShiftYAdditional?: number;
51
- highlightTextWeightAdditional?: number;
52
- highlightTextWidthAdditional?: number;
53
- highlightByHover?: boolean;
41
+ highlightByNodeOnlyRoot?: boolean;
42
+ highlightByNodeNodeFadingMin?: number;
43
+ highlightByNodeLinkFadingMin?: number;
44
+ highlightByNodeArrowFadingMin?: number;
45
+ highlightByNodeNodeColorFadingMin?: number;
46
+ highlightByNodeTextFadingMin?: number;
47
+ highlightByNodeNodeSizingAdditional?: number;
48
+ highlightByNodeTextSizingAdditional?: number;
49
+ highlightByNodeTextShiftXAdditional?: number;
50
+ highlightByNodeTextShiftYAdditional?: number;
51
+ highlightByNodeTextWeightAdditional?: number;
52
+ highlightByNodeTextWidthAdditional?: number;
53
+ highlightByLinkOnlyRoot?: boolean;
54
+ highlightByLinkNodeFadingMin?: number;
55
+ highlightByLinkLinkFadingMin?: number;
56
+ highlightByLinkArrowFadingMin?: number;
57
+ highlightByLinkNodeColorFadingMin?: number;
58
+ highlightByLinkTextFadingMin?: number;
59
+ highlightByLinkNodeSizingAdditional?: number;
60
+ highlightByLinkTextSizingAdditional?: number;
61
+ highlightByLinkTextShiftXAdditional?: number;
62
+ highlightByLinkTextShiftYAdditional?: number;
63
+ highlightByLinkTextWeightAdditional?: number;
64
+ highlightByLinkTextWidthAdditional?: number;
65
+ highlightByHoverNode?: boolean;
66
+ highlightByHoverLink?: boolean;
67
+ hoverLinkThreshold?: number;
54
68
  highlightDownStep?: number;
55
69
  highlightUpStep?: number;
56
70
  stickAfterDrag?: boolean;
@@ -107,11 +121,16 @@ type NodeOptionsInterface<NodeData extends Record<string, unknown>, LinkData ext
107
121
  textDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
108
122
  nodeExtraDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
109
123
  textExtraDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
110
- highlightFading?: boolean;
111
- highlightSizing?: boolean;
112
- highlightTextFading?: boolean;
113
- highlightTextSizing?: boolean;
114
- highlightColor?: boolean;
124
+ highlightByNodeNodeFading?: boolean;
125
+ highlightByNodeNodeSizing?: boolean;
126
+ highlightByNodeTextFading?: boolean;
127
+ highlightByNodeTextSizing?: boolean;
128
+ highlightByNodeNodeColor?: boolean;
129
+ highlightByLinkNodeFading?: boolean;
130
+ highlightByLinkNodeSizing?: boolean;
131
+ highlightByLinkTextFading?: boolean;
132
+ highlightByLinkTextSizing?: boolean;
133
+ highlightByLinkNodeColor?: boolean;
115
134
  borderColor?: string;
116
135
  borderWidth?: number;
117
136
  radius?: number;
@@ -143,13 +162,15 @@ type LinkOptionsInterface<NodeData extends Record<string, unknown>, LinkData ext
143
162
  alpha?: number;
144
163
  color?: string;
145
164
  width?: number;
146
- highlightFading?: boolean;
165
+ highlightByNodeLinkFading?: boolean;
166
+ highlightByNodeArrowFading?: boolean;
167
+ highlightByLinkLinkFading?: boolean;
168
+ highlightByLinkArrowFading?: boolean;
147
169
  pretty?: boolean;
148
170
  arrow?: boolean;
149
171
  arrowAlpha?: number;
150
172
  arrowColor?: string;
151
173
  arrowSize?: number;
152
- arrowHighlightFading?: boolean;
153
174
  arrowReverseAppear?: boolean;
154
175
  particleAlpha?: number;
155
176
  particleColor?: string;
@@ -180,6 +201,7 @@ type GraphState<NodeData extends Record<string, unknown>, LinkData extends Recor
180
201
  simulationWorking: boolean;
181
202
  isDragging: boolean;
182
203
  highlightedNode: NodeInterface<NodeData> | null;
204
+ highlightedLink: LinkInterface<NodeData, LinkData> | null;
183
205
  highlightedNeighbors: Set<string | number> | null;
184
206
  highlightProgress: number;
185
207
  highlightWorking: boolean;
@@ -235,6 +257,7 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
235
257
  private nodeOptionsCache;
236
258
  private isDragging;
237
259
  private highlightedNode;
260
+ private highlightedLink;
238
261
  private highlightedNeighbors;
239
262
  private highlightProgress;
240
263
  private highlightWorking;
@@ -246,6 +269,7 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
246
269
  getData(): Pick<GraphCanvasInterface<NodeData, LinkData>, "nodes" | "links">;
247
270
  changeData(options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes">, alpha?: number): void;
248
271
  changeSettings(options: Omit<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes" | "listeners">): undefined;
272
+ updateRect(): void;
249
273
  clearCache(): void;
250
274
  tick(): void;
251
275
  restart(alpha?: number): void;
@@ -286,6 +310,15 @@ declare function nodeRadiusGetter({ radiusFlexible, radiusInitial, linkCount, ra
286
310
  declare function linkIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[]>(link: LinkInterface<NodeData, LinkData>, i: number, links: LinkInterface<NodeData, LinkData>[], state: GraphState<NodeData, LinkData>, option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: undefined): Result;
287
311
  declare function linkIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[]>(link: LinkInterface<NodeData, LinkData>, i: number, links: LinkInterface<NodeData, LinkData>[], state: GraphState<NodeData, LinkData>, option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: LinkIterationPropsInterface<NodeData, LinkData, Required<Result>> | Required<Result>): Required<Result>;
288
312
 
313
+ type NodeByPointerGetterOptions<NodeData extends Record<string, unknown>> = {
314
+ mouseEvent: MouseEvent | TouchEvent;
315
+ areaRect: DOMRect | undefined;
316
+ areaTransform: ZoomTransform;
317
+ nodes: NodeInterface<NodeData>[];
318
+ graphSettings: Required<GraphSettingsInterface<NodeData>>;
319
+ };
320
+ declare function nodeByPointerGetter<NodeData extends Record<string, unknown>>({ areaRect, areaTransform, mouseEvent, nodes, graphSettings, }: NodeByPointerGetterOptions<NodeData>): NodeInterface<NodeData> | undefined;
321
+
289
322
  declare function nodeIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null>(node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[], state: GraphState<NodeData, LinkData>, option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: undefined): Result;
290
323
  declare function nodeIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null>(node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[], state: GraphState<NodeData, LinkData>, option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result): Required<Result>;
291
324
 
@@ -326,6 +359,15 @@ type GetParticlePositionOptions = {
326
359
  };
327
360
  declare function getParticlePosition(opts: GetParticlePositionOptions): void;
328
361
 
362
+ type LinkByPointerGetterOptions<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
363
+ mouseEvent: MouseEvent | TouchEvent;
364
+ areaRect: DOMRect | undefined;
365
+ areaTransform: ZoomTransform;
366
+ links: LinkInterface<NodeData, LinkData>[];
367
+ graphSettings: Required<GraphSettingsInterface<NodeData>>;
368
+ };
369
+ declare function linkByPointerGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>({ areaRect, areaTransform, mouseEvent, links, graphSettings, }: LinkByPointerGetterOptions<NodeData, LinkData>): LinkInterface<NodeData, LinkData> | undefined;
370
+
329
371
  declare function colorToRgb(color: string): string | null;
330
372
 
331
373
  declare function extractRgb(color: string | null): {
@@ -366,4 +408,4 @@ declare function getGraphControls<NodeData extends Record<string, unknown>>(keys
366
408
  declare function getNodeControls<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(keys?: (keyof NodeOptionsInterface<NodeData, LinkData>)[]): GraphSettingsInputInterface<keyof NodeOptionsInterface<NodeData, LinkData>>[];
367
409
  declare function getLinkControls<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(keys?: (keyof LinkOptionsInterface<NodeData, LinkData>)[]): GraphSettingsInputInterface<keyof LinkOptionsInterface<NodeData, LinkData>>[];
368
410
 
369
- export { type CachedNodeTextInterface, type DragEventInterface, type ForceSettingsInterface, GraphCanvas, type GraphCanvasInterface, type GraphCanvasSimulation, type GraphParticle, type GraphSettingsInterface, type GraphState, type LinkInterface, type LinkIterationPropsInterface, type LinkOptionsInterface, type LinkSettingsInterface, type ListenersInterface, type NodeInterface, type NodeIterationPropsInterface, type NodeOptionsInterface, type NodeSettingsInterface, type RGB, type TextStyleEnum, type ZoomEventInterface, animationByProgress, calculateLinkPositionByRadius, colorToRgb, drawText, extractRgb, fadeRgb, getForceControls, getGraphControls, getLinkControls, getNodeControls, getParticlePosition, linkIterationExtractor, linkOptionsGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, rgbAnimationByProgress };
411
+ export { type CachedNodeTextInterface, type DragEventInterface, type ForceSettingsInterface, GraphCanvas, type GraphCanvasInterface, type GraphCanvasSimulation, type GraphParticle, type GraphSettingsInterface, type GraphState, type LinkInterface, type LinkIterationPropsInterface, type LinkOptionsInterface, type LinkSettingsInterface, type ListenersInterface, type NodeInterface, type NodeIterationPropsInterface, type NodeOptionsInterface, type NodeSettingsInterface, type RGB, type TextStyleEnum, type ZoomEventInterface, animationByProgress, calculateLinkPositionByRadius, colorToRgb, drawText, extractRgb, fadeRgb, getForceControls, getGraphControls, getLinkControls, getNodeControls, getParticlePosition, linkByPointerGetter, linkIterationExtractor, linkOptionsGetter, nodeByPointerGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, rgbAnimationByProgress };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/graph",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "Krainov graph",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",