@krainovsd/graph 0.12.0-beta.6 → 0.13.0-beta1

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 +1 @@
1
- {"version":3,"file":"update-node-cache.js","sources":["../../../../../src/module/GraphCanvas/slices/update-node-cache.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\nimport {\n nodeIterationExtractor,\n nodeOptionsGetter,\n nodeRadiusGetter,\n nodeSizeGetter,\n} from \"../lib\";\nimport { getTextLines } from \"./draw-text\";\n\nexport function updateNodeCache<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n this.nodeOptionsCache = {};\n if (!this.context) return;\n\n for (let i = 0; i < this.nodes.length; i++) {\n const node = this.nodes[i];\n const nodeOptions = nodeIterationExtractor(\n node,\n i,\n this.nodes,\n this,\n this.nodeSettings.options ?? {},\n nodeOptionsGetter,\n );\n const radius =\n nodeOptions.shape === \"circle\"\n ? nodeRadiusGetter({\n radiusFlexible: this.nodeSettings.nodeRadiusFlexible,\n radiusInitial: nodeOptions.radius,\n radiusIncrementByStep: this.nodeSettings.nodeRadiusIncrementByStep,\n radiusLinkCountForStep: this.nodeSettings.nodeRadiusLinkCountForStep,\n radiusMaxLinearSteps: this.nodeSettings.nodeRadiusMaxLinearSteps,\n radiusLogFactor: this.nodeSettings.nodeRadiusLogFactor,\n radiusLinkCountDividerForLog: this.nodeSettings.nodeRadiusLinkCountDividerForLog,\n linkCount: node.linkCount,\n })\n : nodeOptions.radius;\n\n let width = nodeOptions.width;\n let height = nodeOptions.height;\n let labelSize = nodeOptions.labelSize;\n if (nodeOptions.shape === \"square\") {\n const size = nodeSizeGetter({\n heightInitial: nodeOptions.height,\n widthInitial: nodeOptions.width,\n linkCount: node.linkCount,\n sizeFlexible: this.nodeSettings.nodeSizeFlexible,\n sizeIncrementByStep: this.nodeSettings.nodeSizeIncrementByStep,\n sizeLinkCountForStep: this.nodeSettings.nodeSizeLinkCountForStep,\n sizeMaxLinearSteps: this.nodeSettings.nodeSizeMaxLinearSteps,\n sizeLogFactor: this.nodeSettings.nodeSizeLogFactor,\n sizeLinkCountDividerForLog: this.nodeSettings.nodeSizeLinkCountDividerForLog,\n });\n width = size.width;\n height = size.height;\n }\n if (nodeOptions.shape === \"text\") {\n width = nodeOptions.width;\n const size = nodeSizeGetter({\n heightInitial: nodeOptions.height,\n widthInitial: width,\n linkCount: node.linkCount,\n sizeFlexible: this.nodeSettings.nodeSizeFlexible,\n sizeIncrementByStep: this.nodeSettings.nodeSizeIncrementByStep,\n sizeLinkCountForStep: this.nodeSettings.nodeSizeLinkCountForStep,\n sizeMaxLinearSteps: this.nodeSettings.nodeSizeMaxLinearSteps,\n sizeLogFactor: this.nodeSettings.nodeSizeLogFactor,\n sizeLinkCountDividerForLog: this.nodeSettings.nodeSizeLinkCountDividerForLog,\n });\n\n labelSize *= size.additionalSizeCoefficient;\n }\n /** label in not text shape */\n if (nodeOptions.shape !== \"text\" && nodeOptions.label) {\n this.context.font = `${nodeOptions.labelStyle} normal ${nodeOptions.labelWeight} ${nodeOptions.labelSize}px ${nodeOptions.labelFont}`;\n this.context.fillStyle = nodeOptions.labelColor;\n this.context.textAlign = nodeOptions.labelAlign;\n\n if (\n nodeOptions.labelWidth == undefined ||\n this.context.measureText(nodeOptions.label).width <= nodeOptions.labelWidth\n ) {\n this.cachedNodeLabel[node.id] = [nodeOptions.label];\n }\n\n const { lines } = getTextLines({\n context: this.context,\n maxWidth: nodeOptions.labelWidth,\n text: nodeOptions.label,\n textAlign: nodeOptions.labelAlign,\n textColor: nodeOptions.labelColor,\n textFont: nodeOptions.labelFont,\n textSize: nodeOptions.labelSize,\n textStyle: nodeOptions.labelStyle,\n textWeight: nodeOptions.labelWeight,\n });\n this.cachedNodeLabel[node.id] = lines;\n }\n /** label in text shape */\n if (nodeOptions.shape === \"text\" && nodeOptions.label) {\n const textInfo = getTextLines({\n context: this.context,\n text: nodeOptions.label,\n textAlign: nodeOptions.labelAlign,\n textColor: nodeOptions.labelColor,\n textFont: nodeOptions.labelFont,\n textSize: labelSize,\n maxWidth: nodeOptions.labelWidth,\n textStyle: nodeOptions.labelStyle,\n textWeight: nodeOptions.textWeight,\n });\n const textNodeParameters = [textInfo.currentMaxSize, labelSize];\n const lines = textInfo.lines;\n const textSizeCoefficient = labelSize / textNodeParameters[1];\n const maxSize = textNodeParameters[0] * textSizeCoefficient;\n\n height =\n lines.length * labelSize +\n (lines.length - 1) * nodeOptions.labelGap +\n nodeOptions.labelYPadding;\n\n width = maxSize + nodeOptions.labelXPadding;\n this.cachedNodeLabel[node.id] = lines;\n }\n\n nodeOptions.width = node.visible === false ? 0 : width;\n nodeOptions.height = node.visible === false ? 0 : height;\n nodeOptions.radius = node.visible === false ? 0 : radius;\n nodeOptions.labelSize = labelSize;\n\n /** text */\n if (nodeOptions.text) {\n this.context.font = `${nodeOptions.textStyle} normal ${nodeOptions.textWeight} ${nodeOptions.textSize}px ${nodeOptions.textFont}`;\n this.context.fillStyle = nodeOptions.textColor;\n this.context.textAlign = nodeOptions.textAlign;\n\n if (\n nodeOptions.textWidth == undefined ||\n this.context.measureText(nodeOptions.text).width <= nodeOptions.textWidth\n ) {\n this.cachedNodeText[node.id] = [nodeOptions.text];\n }\n\n const { lines } = getTextLines({\n context: this.context,\n maxWidth: nodeOptions.textWidth,\n text: nodeOptions.text,\n textAlign: nodeOptions.textAlign,\n textColor: nodeOptions.textColor,\n textFont: nodeOptions.textFont,\n textSize: nodeOptions.textSize,\n textStyle: nodeOptions.textStyle,\n textWeight: nodeOptions.textWeight,\n });\n this.cachedNodeText[node.id] = lines;\n }\n\n this.nodeOptionsCache[node.id] = nodeOptions;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-node-cache.js","sources":["../../../../../src/module/GraphCanvas/slices/update-node-cache.ts"],"sourcesContent":["import { isObject } from \"@krainovsd/js-helpers\";\nimport type { GraphCanvas } from \"../GraphCanvas\";\nimport {\n nodeIterationExtractor,\n nodeOptionsGetter,\n nodeRadiusGetter,\n nodeSizeGetter,\n} from \"../lib\";\nimport { getTextLines } from \"./draw-text\";\n\ntype NodeCache = {\n options: boolean;\n text: boolean;\n label: boolean;\n};\n\nexport function updateNodeCache<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>, types: boolean | NodeCache) {\n this.nodeOptionsCache = {};\n if (!this.context) return;\n\n for (let i = 0; i < this.nodes.length; i++) {\n const node = this.nodes[i];\n if (types === true || (isObject(types) && types.options)) {\n const nodeOptions = nodeIterationExtractor(\n node,\n i,\n this.nodes,\n this,\n this.nodeSettings.options ?? {},\n nodeOptionsGetter,\n );\n const radius =\n nodeOptions.shape === \"circle\"\n ? nodeRadiusGetter({\n radiusFlexible: this.nodeSettings.nodeRadiusFlexible,\n radiusInitial: nodeOptions.radius,\n radiusIncrementByStep: this.nodeSettings.nodeRadiusIncrementByStep,\n radiusLinkCountForStep: this.nodeSettings.nodeRadiusLinkCountForStep,\n radiusMaxLinearSteps: this.nodeSettings.nodeRadiusMaxLinearSteps,\n radiusLogFactor: this.nodeSettings.nodeRadiusLogFactor,\n radiusLinkCountDividerForLog: this.nodeSettings.nodeRadiusLinkCountDividerForLog,\n linkCount: node.linkCount,\n })\n : nodeOptions.radius;\n\n let width = nodeOptions.width;\n let height = nodeOptions.height;\n let labelSize = nodeOptions.labelSize;\n if (nodeOptions.shape === \"square\") {\n const size = nodeSizeGetter({\n heightInitial: nodeOptions.height,\n widthInitial: nodeOptions.width,\n linkCount: node.linkCount,\n sizeFlexible: this.nodeSettings.nodeSizeFlexible,\n sizeIncrementByStep: this.nodeSettings.nodeSizeIncrementByStep,\n sizeLinkCountForStep: this.nodeSettings.nodeSizeLinkCountForStep,\n sizeMaxLinearSteps: this.nodeSettings.nodeSizeMaxLinearSteps,\n sizeLogFactor: this.nodeSettings.nodeSizeLogFactor,\n sizeLinkCountDividerForLog: this.nodeSettings.nodeSizeLinkCountDividerForLog,\n });\n width = size.width;\n height = size.height;\n }\n if (nodeOptions.shape === \"text\") {\n width = nodeOptions.width;\n const size = nodeSizeGetter({\n heightInitial: nodeOptions.height,\n widthInitial: width,\n linkCount: node.linkCount,\n sizeFlexible: this.nodeSettings.nodeSizeFlexible,\n sizeIncrementByStep: this.nodeSettings.nodeSizeIncrementByStep,\n sizeLinkCountForStep: this.nodeSettings.nodeSizeLinkCountForStep,\n sizeMaxLinearSteps: this.nodeSettings.nodeSizeMaxLinearSteps,\n sizeLogFactor: this.nodeSettings.nodeSizeLogFactor,\n sizeLinkCountDividerForLog: this.nodeSettings.nodeSizeLinkCountDividerForLog,\n });\n\n labelSize *= size.additionalSizeCoefficient;\n }\n\n nodeOptions.width = node.visible === false ? 0 : width;\n nodeOptions.height = node.visible === false ? 0 : height;\n nodeOptions.radius = node.visible === false ? 0 : radius;\n nodeOptions.labelSize = labelSize;\n this.nodeOptionsCache[node.id] = nodeOptions;\n }\n\n const nodeOptions = this.nodeOptionsCache[node.id];\n /** label */\n if (types === true || (isObject(types) && types.label)) {\n /** label in not text shape */\n if (nodeOptions.shape !== \"text\" && nodeOptions.label) {\n this.context.font = `${nodeOptions.labelStyle} normal ${nodeOptions.labelWeight} ${nodeOptions.labelSize}px ${nodeOptions.labelFont}`;\n this.context.fillStyle = nodeOptions.labelColor;\n this.context.textAlign = nodeOptions.labelAlign;\n\n if (\n nodeOptions.labelWidth == undefined ||\n this.context.measureText(nodeOptions.label).width <= nodeOptions.labelWidth\n ) {\n this.cachedNodeLabel[node.id] = [nodeOptions.label];\n }\n\n const { lines } = getTextLines({\n context: this.context,\n maxWidth: nodeOptions.labelWidth,\n text: nodeOptions.label,\n textAlign: nodeOptions.labelAlign,\n textColor: nodeOptions.labelColor,\n textFont: nodeOptions.labelFont,\n textSize: nodeOptions.labelSize,\n textStyle: nodeOptions.labelStyle,\n textWeight: nodeOptions.labelWeight,\n });\n this.cachedNodeLabel[node.id] = lines;\n /** label in text shape */\n } else if (nodeOptions.shape === \"text\" && nodeOptions.label) {\n const textInfo = getTextLines({\n context: this.context,\n text: nodeOptions.label,\n textAlign: nodeOptions.labelAlign,\n textColor: nodeOptions.labelColor,\n textFont: nodeOptions.labelFont,\n textSize: nodeOptions.labelSize,\n maxWidth: nodeOptions.labelWidth,\n textStyle: nodeOptions.labelStyle,\n textWeight: nodeOptions.textWeight,\n });\n const textNodeParameters = [textInfo.currentMaxSize, nodeOptions.labelSize];\n const lines = textInfo.lines;\n const textSizeCoefficient = nodeOptions.labelSize / textNodeParameters[1];\n const maxSize = textNodeParameters[0] * textSizeCoefficient;\n\n nodeOptions.height =\n lines.length * nodeOptions.labelSize +\n (lines.length - 1) * nodeOptions.labelGap +\n nodeOptions.labelYPadding;\n\n nodeOptions.width = maxSize + nodeOptions.labelXPadding;\n this.cachedNodeLabel[node.id] = lines;\n }\n }\n\n /** text */\n if (nodeOptions.text && (types === true || (isObject(types) && types.text))) {\n this.context.font = `${nodeOptions.textStyle} normal ${nodeOptions.textWeight} ${nodeOptions.textSize}px ${nodeOptions.textFont}`;\n this.context.fillStyle = nodeOptions.textColor;\n this.context.textAlign = nodeOptions.textAlign;\n\n if (\n nodeOptions.textWidth == undefined ||\n this.context.measureText(nodeOptions.text).width <= nodeOptions.textWidth\n ) {\n this.cachedNodeText[node.id] = [nodeOptions.text];\n }\n\n const { lines } = getTextLines({\n context: this.context,\n maxWidth: nodeOptions.textWidth,\n text: nodeOptions.text,\n textAlign: nodeOptions.textAlign,\n textColor: nodeOptions.textColor,\n textFont: nodeOptions.textFont,\n textSize: nodeOptions.textSize,\n textStyle: nodeOptions.textStyle,\n textWeight: nodeOptions.textWeight,\n });\n this.cachedNodeText[node.id] = lines;\n }\n }\n}\n"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import { D3ZoomEvent, ZoomTransform } from 'd3-zoom';
2
+ import { ValueOf } from '@krainovsd/js-helpers';
2
3
  import { SimulationNodeDatum, SimulationLinkDatum, Simulation } from 'd3-force';
3
4
  import { D3DragEvent } from 'd3-drag';
4
5
 
6
+ declare const COMMON_SETTINGS: {
7
+ nodeRadius: number;
8
+ nodeSize: number;
9
+ };
10
+
5
11
  interface NodeInterface<NodeData extends Record<string, unknown>> extends SimulationNodeDatum {
6
12
  id: number | string;
7
13
  linkCount?: number;
@@ -79,6 +85,8 @@ type ForceSettingsInterface<NodeData extends Record<string, unknown>, LinkData e
79
85
  yStrength?: NodeIterationPropsNoThisInterface<NodeData> | number;
80
86
  };
81
87
 
88
+ declare const FORCE_SETTINGS: Required<ForceSettingsInterface<Record<string, unknown>, Record<string, unknown>>>;
89
+
82
90
  type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
83
91
  zoomExtent?: [number, number];
84
92
  translateExtent?: [[number?, number?], [number?, number?]];
@@ -94,6 +102,8 @@ type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
94
102
  showDrawTimeEveryTick?: boolean;
95
103
  };
96
104
 
105
+ declare const GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>>;
106
+
97
107
  type HighlightSettingsInterface = HighlighCommonSettingsInterface & HighlightByNodeForNodeSettingsInterface & HighlightByNodeForLabelSettingsInterface & HighlightByNodeForTextSettingsInterface & HighlightByNodeForLinkSettingsInterface & HighlightByNodeForArrowSettingsInterface & HighlightByLinkForNodeSettingsInterface & HighlightByLinkForTextSettingsInterface & HighlightByLinkForLabelSettingsInterface & HighlightByLinkForLinkSettingsInterface & HighlightByLinkForArrowSettingsInterface;
98
108
  type HighlighCommonSettingsInterface = {
99
109
  highlightDownFrames?: number;
@@ -170,6 +180,8 @@ type HighlightByLinkForArrowSettingsInterface = {
170
180
  highlightByLinkForArrowBorderColor?: string | null;
171
181
  };
172
182
 
183
+ declare const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface>;
184
+
173
185
  type LinkSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
174
186
  prettyDraw?: boolean;
175
187
  arrow?: boolean;
@@ -210,23 +222,8 @@ type LinkOptionsParticleInterface = {
210
222
  particleBorderColor?: string;
211
223
  };
212
224
 
213
- type ZoomEventInterface = D3ZoomEvent<HTMLCanvasElement, unknown>;
214
- type DragEventInterface<NodeData extends Record<string, unknown>> = D3DragEvent<HTMLElement, unknown, NodeInterface<NodeData>>;
215
- type ListenersInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
216
- onContextMenu?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
217
- onClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
218
- onDoubleClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
219
- onWheelClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
220
- onMove?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
221
- onZoom?: (this: GraphCanvas<NodeData, LinkData>, event: ZoomEventInterface) => void;
222
- onDragSubject?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => NodeInterface<NodeData> | undefined;
223
- onDraw?: (this: GraphCanvas<NodeData, LinkData>) => void;
224
- onStartDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
225
- onMoveDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
226
- onEndDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
227
- onDrawFinished?: (this: GraphCanvas<NodeData, LinkData>) => void;
228
- onSimulationEnd?: (this: GraphCanvas<NodeData, LinkData>) => void;
229
- };
225
+ declare const LINK_SETTINGS: Omit<Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options">;
226
+ declare const LINK_OPTIONS: Omit<Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "width" | "drawLink" | "drawExtraLink" | "arrowColor">;
230
227
 
231
228
  type NodeSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
232
229
  nodeRadiusFlexible?: boolean;
@@ -298,6 +295,34 @@ type NodeOptionsLabelInterface = {
298
295
  label?: string | null;
299
296
  };
300
297
 
298
+ declare const NODE_SETTINGS: Omit<Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options" | "idGetter">;
299
+ declare const NODE_OPTIONS: Omit<Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "text" | "textVisible" | "textSize" | "textShiftY" | "nodeDraw" | "nodeExtraDraw" | "textDraw" | "textExtraDraw">;
300
+
301
+ declare const GRAPH_CACHE_TYPE: {
302
+ readonly NodeOptions: "nodeOptions";
303
+ readonly LinkOptions: "linkOptions";
304
+ readonly NodeText: "nodeText";
305
+ readonly NodeLabel: "nodeLabel";
306
+ };
307
+
308
+ type ZoomEventInterface = D3ZoomEvent<HTMLCanvasElement, unknown>;
309
+ type DragEventInterface<NodeData extends Record<string, unknown>> = D3DragEvent<HTMLElement, unknown, NodeInterface<NodeData>>;
310
+ type ListenersInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
311
+ onContextMenu?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
312
+ onClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
313
+ onDoubleClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
314
+ onWheelClick?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
315
+ onMove?: (this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent, node: NodeInterface<NodeData> | undefined, link: LinkInterface<NodeData, LinkData> | undefined) => void;
316
+ onZoom?: (this: GraphCanvas<NodeData, LinkData>, event: ZoomEventInterface) => void;
317
+ onDragSubject?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => NodeInterface<NodeData> | undefined;
318
+ onDraw?: (this: GraphCanvas<NodeData, LinkData>) => void;
319
+ onStartDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
320
+ onMoveDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
321
+ onEndDragFinished?: (this: GraphCanvas<NodeData, LinkData>, event: DragEventInterface<NodeData>) => void;
322
+ onDrawFinished?: (this: GraphCanvas<NodeData, LinkData>) => void;
323
+ onSimulationEnd?: (this: GraphCanvas<NodeData, LinkData>) => void;
324
+ };
325
+
301
326
  type GraphCanvasInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
302
327
  nodes: NodeInterface<NodeData>[];
303
328
  links: LinkInterface<NodeData, LinkData>[];
@@ -310,6 +335,7 @@ type GraphCanvasInterface<NodeData extends Record<string, unknown>, LinkData ext
310
335
  highlightSettings?: HighlightSettingsInterface;
311
336
  };
312
337
  type GraphCanvasSimulation<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = Simulation<NodeInterface<NodeData>, LinkInterface<NodeData, LinkData>>;
338
+ type GraphCanvasCacheKeys = ValueOf<typeof GRAPH_CACHE_TYPE>;
313
339
 
314
340
  declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> {
315
341
  /** initial data */
@@ -349,11 +375,11 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
349
375
  constructor({ links, nodes, root, forceSettings, linkSettings, listeners, nodeSettings, graphSettings, highlightSettings, }: GraphCanvasInterface<NodeData, LinkData>);
350
376
  get dpi(): number;
351
377
  getData(): Pick<GraphCanvasInterface<NodeData, LinkData>, "nodes" | "links">;
352
- changeData(options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes">, alpha?: number, clearCache?: boolean): void;
353
- changeSettings(options: Omit<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes" | "listeners">, clearCache?: boolean): undefined;
378
+ changeData(options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes">, alpha?: number, clearCache?: boolean | GraphCanvasCacheKeys[]): void;
379
+ changeSettings(options: Omit<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes" | "listeners">, clearCache?: boolean | GraphCanvasCacheKeys[]): undefined;
354
380
  updateRect(): void;
355
381
  updateSize(): void;
356
- clearCache(keys?: ("nodeOptionsCache" | "linkOptionsCache")[]): void;
382
+ clearCache(keys: boolean | GraphCanvasCacheKeys[]): void;
357
383
  tick(): void;
358
384
  restart(alpha?: number): void;
359
385
  start(): void;
@@ -363,7 +389,7 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
363
389
  protected clearHTMLElements(): void;
364
390
  protected updateSimulation(): void;
365
391
  protected clearState(): void;
366
- protected updateData(alpha?: number, clearCache?: boolean): void;
392
+ protected updateData(alpha?: number, clearCache?: boolean | GraphCanvasCacheKeys[]): void;
367
393
  protected init(): void;
368
394
  }
369
395
 
@@ -575,23 +601,6 @@ type DrawTextOptions = {
575
601
  };
576
602
  declare function drawText({ context, textAlign, textColor, textFont, textStyle, textGap, textWeight, textSize, x, y, lines, }: DrawTextOptions): void;
577
603
 
578
- declare const COMMON_SETTINGS: {
579
- nodeRadius: number;
580
- nodeSize: number;
581
- };
582
-
583
- declare const FORCE_SETTINGS: Required<ForceSettingsInterface<Record<string, unknown>, Record<string, unknown>>>;
584
-
585
- declare const GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>>;
586
-
587
- declare const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface>;
588
-
589
- declare const LINK_SETTINGS: Omit<Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options">;
590
- declare const LINK_OPTIONS: Omit<Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "width" | "drawLink" | "drawExtraLink" | "arrowColor">;
591
-
592
- declare const NODE_SETTINGS: Omit<Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options" | "idGetter">;
593
- declare const NODE_OPTIONS: Omit<Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "text" | "textVisible" | "textSize" | "textShiftY" | "nodeDraw" | "nodeExtraDraw" | "textDraw" | "textExtraDraw">;
594
-
595
604
  type GraphSettingsInputRange<I extends string> = {
596
605
  type: "range";
597
606
  min: number;
@@ -673,5 +682,5 @@ declare const NODE_OPTIONS_NODE_CONTROLS: GraphSettingsInputInterface<keyof Node
673
682
  declare const NODE_OPTIONS_TEXT_CONTROLS: GraphSettingsInputInterface<keyof NodeOptionsTextInterface>[];
674
683
  declare const NODE_OPTIONS_LABEL_CONTROLS: GraphSettingsInputInterface<keyof NodeOptionsLabelInterface>[];
675
684
 
676
- export { COMMON_SETTINGS, FORCE_CONTROLS, FORCE_SETTINGS, GRAPH_SETTINGS, GraphCanvas, HIGHLIGHT_BY_LINK_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LINK_CONTROLS, HIGHLIGHT_BY_LINK_FOR_NODE_CONTROLS, HIGHLIGHT_BY_LINK_FOR_TEXT_CONTROLS, HIGHLIGHT_BY_NODE_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LINK_CONTROLS, HIGHLIGHT_BY_NODE_FOR_NODE_CONTROLS, HIGHLIGHT_BY_NODE_FOR_TEXT_CONTROLS, HIGHLIGHT_COMMON_CONTROLS, HIGHLIGHT_SETTINGS, LINK_OPTIONS, LINK_OPTIONS_ARROW_CONTROLS, LINK_OPTIONS_LINK_CONTROLS, LINK_OPTIONS_PARTICLE_CONTROLS, LINK_SETTINGS, LINK_SETTINGS_CONTROLS, NODE_OPTIONS, NODE_OPTIONS_LABEL_CONTROLS, NODE_OPTIONS_NODE_CONTROLS, NODE_OPTIONS_TEXT_CONTROLS, NODE_SETTINGS, NODE_SETTINGS_CONTROLS, animationByProgress, calculateLinkPositionByNode, colorGetter, colorToRgb, dragPlaceCoefficientGetter, drawText, extractLinkPointIds, extractRgb, fadeRgb, forceSettingsGetter, getDrawLink, getDrawNode, getParticlePosition, graphSettingsGetter, highlightSettingsGetter, isNodeVisible, isOverlapsNode, linkByPointerGetter, linkFade, linkHighlight, linkIterationExtractor, linkOptionsGetter, linkSettingsGetter, listenersGetter, nodeByPointerGetter, nodeFade, nodeHighlight, nodeIdGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, nodeSettingsGetter, nodeSizeGetter, nodeTextSizeGetter, pointerGetter, rgbAnimationByProgress };
677
- export type { CachedNodeTextInterface, DragEventInterface, ForceSettingsInterface, GraphCanvasInterface, GraphCanvasSimulation, GraphSettingsInputInterface, GraphSettingsInterface, HighlighCommonSettingsInterface, HighlightByLinkForArrowSettingsInterface, HighlightByLinkForLabelSettingsInterface, HighlightByLinkForLinkSettingsInterface, HighlightByLinkForNodeSettingsInterface, HighlightByLinkForTextSettingsInterface, HighlightByNodeForArrowSettingsInterface, HighlightByNodeForLabelSettingsInterface, HighlightByNodeForLinkSettingsInterface, HighlightByNodeForNodeSettingsInterface, HighlightByNodeForTextSettingsInterface, HighlightSettingsInterface, LinkByPointerGetterOptions, LinkInterface, LinkIterationPropsInterface, LinkIterationPropsNoThisInterface, LinkOptionsArrowInterface, LinkOptionsInterface, LinkOptionsLinkInterface, LinkOptionsParticleInterface, LinkParticle, LinkSettingsInterface, ListenersInterface, NodeByPointerGetterOptions, NodeInterface, NodeIterationPropsInterface, NodeIterationPropsNoThisInterface, NodeOptionsInterface, NodeOptionsLabelInterface, NodeOptionsNodeInterface, NodeOptionsTextInterface, NodeRadiusGetterOptions, NodeSettingsInterface, NodeShape, NodeSizeGetterOptions, RGB, TextStyleEnum, ZoomEventInterface };
685
+ export { COMMON_SETTINGS, FORCE_CONTROLS, FORCE_SETTINGS, GRAPH_CACHE_TYPE, GRAPH_SETTINGS, GraphCanvas, HIGHLIGHT_BY_LINK_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LINK_CONTROLS, HIGHLIGHT_BY_LINK_FOR_NODE_CONTROLS, HIGHLIGHT_BY_LINK_FOR_TEXT_CONTROLS, HIGHLIGHT_BY_NODE_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LINK_CONTROLS, HIGHLIGHT_BY_NODE_FOR_NODE_CONTROLS, HIGHLIGHT_BY_NODE_FOR_TEXT_CONTROLS, HIGHLIGHT_COMMON_CONTROLS, HIGHLIGHT_SETTINGS, LINK_OPTIONS, LINK_OPTIONS_ARROW_CONTROLS, LINK_OPTIONS_LINK_CONTROLS, LINK_OPTIONS_PARTICLE_CONTROLS, LINK_SETTINGS, LINK_SETTINGS_CONTROLS, NODE_OPTIONS, NODE_OPTIONS_LABEL_CONTROLS, NODE_OPTIONS_NODE_CONTROLS, NODE_OPTIONS_TEXT_CONTROLS, NODE_SETTINGS, NODE_SETTINGS_CONTROLS, animationByProgress, calculateLinkPositionByNode, colorGetter, colorToRgb, dragPlaceCoefficientGetter, drawText, extractLinkPointIds, extractRgb, fadeRgb, forceSettingsGetter, getDrawLink, getDrawNode, getParticlePosition, graphSettingsGetter, highlightSettingsGetter, isNodeVisible, isOverlapsNode, linkByPointerGetter, linkFade, linkHighlight, linkIterationExtractor, linkOptionsGetter, linkSettingsGetter, listenersGetter, nodeByPointerGetter, nodeFade, nodeHighlight, nodeIdGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, nodeSettingsGetter, nodeSizeGetter, nodeTextSizeGetter, pointerGetter, rgbAnimationByProgress };
686
+ export type { CachedNodeTextInterface, DragEventInterface, ForceSettingsInterface, GraphCanvasCacheKeys, GraphCanvasInterface, GraphCanvasSimulation, GraphSettingsInputInterface, GraphSettingsInterface, HighlighCommonSettingsInterface, HighlightByLinkForArrowSettingsInterface, HighlightByLinkForLabelSettingsInterface, HighlightByLinkForLinkSettingsInterface, HighlightByLinkForNodeSettingsInterface, HighlightByLinkForTextSettingsInterface, HighlightByNodeForArrowSettingsInterface, HighlightByNodeForLabelSettingsInterface, HighlightByNodeForLinkSettingsInterface, HighlightByNodeForNodeSettingsInterface, HighlightByNodeForTextSettingsInterface, HighlightSettingsInterface, LinkByPointerGetterOptions, LinkInterface, LinkIterationPropsInterface, LinkIterationPropsNoThisInterface, LinkOptionsArrowInterface, LinkOptionsInterface, LinkOptionsLinkInterface, LinkOptionsParticleInterface, LinkParticle, LinkSettingsInterface, ListenersInterface, NodeByPointerGetterOptions, NodeInterface, NodeIterationPropsInterface, NodeIterationPropsNoThisInterface, NodeOptionsInterface, NodeOptionsLabelInterface, NodeOptionsNodeInterface, NodeOptionsTextInterface, NodeRadiusGetterOptions, NodeSettingsInterface, NodeShape, NodeSizeGetterOptions, RGB, TextStyleEnum, ZoomEventInterface };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/graph",
3
- "version": "0.12.0-beta.6",
3
+ "version": "0.13.0-beta1",
4
4
  "description": "Krainov graph",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",
@@ -28,6 +28,7 @@
28
28
  ],
29
29
  "scripts": {
30
30
  "publish-package": "npm run lint && npm run build && npm publish",
31
+ "publish-package-beta": "npm run lint && npm run build && npm publish --tag beta",
31
32
  "dev": "vite --host --force",
32
33
  "clear": "rm -rf ./lib",
33
34
  "build-dev": "vite build",
@@ -43,7 +44,7 @@
43
44
  "type-debug": "tsc --showConfig > typescript-config.json"
44
45
  },
45
46
  "devDependencies": {
46
- "@krainovsd/presets": "0.3.6",
47
+ "@krainovsd/presets": "0.4.0",
47
48
  "rollup": "4.34.9",
48
49
  "prettier": "3.6.1",
49
50
  "eslint": "9.29.0",