@krainovsd/graph 0.14.0-beta.9 → 0.15.0-beta.1
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.
- package/lib/cjs/index.cjs +636 -375
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/esm/constants/force-controls.js +6 -4
- package/lib/esm/constants/force-controls.js.map +1 -1
- package/lib/esm/constants/highlight-controls.js +6 -3
- package/lib/esm/constants/highlight-controls.js.map +1 -1
- package/lib/esm/constants/link-controls.js +6 -3
- package/lib/esm/constants/link-controls.js.map +1 -1
- package/lib/esm/constants/node-controls.js +6 -3
- package/lib/esm/constants/node-controls.js.map +1 -1
- package/lib/esm/index.js +8 -6
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/module/GraphCanvas/GraphCanvas.js +36 -17
- package/lib/esm/module/GraphCanvas/GraphCanvas.js.map +1 -1
- package/lib/esm/module/GraphCanvas/StaticGraphCanvas.js +127 -0
- package/lib/esm/module/GraphCanvas/StaticGraphCanvas.js.map +1 -0
- package/lib/esm/module/GraphCanvas/constants/graph-settings.js +6 -7
- package/lib/esm/module/GraphCanvas/constants/graph-settings.js.map +1 -1
- package/lib/esm/module/GraphCanvas/constants/highlight-settings.js +1 -4
- package/lib/esm/module/GraphCanvas/constants/highlight-settings.js.map +1 -1
- package/lib/esm/module/GraphCanvas/constants/index.js +6 -4
- package/lib/esm/module/GraphCanvas/constants/index.js.map +1 -1
- package/lib/esm/module/GraphCanvas/constants/link-settings.js +1 -9
- package/lib/esm/module/GraphCanvas/constants/link-settings.js.map +1 -1
- package/lib/esm/module/GraphCanvas/constants/node-settings.js +1 -10
- package/lib/esm/module/GraphCanvas/constants/node-settings.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/force-settings-getter.js +6 -4
- package/lib/esm/module/GraphCanvas/lib/settings/force-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/graph-settings-getter.js +0 -3
- package/lib/esm/module/GraphCanvas/lib/settings/graph-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/highlight-settings-getter.js +6 -3
- package/lib/esm/module/GraphCanvas/lib/settings/highlight-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js +6 -3
- package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js +20 -6
- package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-curve-link-position-by-node.js +6 -4
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-curve-link-position-by-node.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-node.js +6 -4
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-node.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js +25 -27
- package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/is-overlaps-node.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/node-by-pointer-getter.js +2 -1
- package/lib/esm/module/GraphCanvas/lib/utils/node-by-pointer-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/node-highlight.js +7 -11
- package/lib/esm/module/GraphCanvas/lib/utils/node-highlight.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js +3 -0
- package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/precompute-graph.js +24 -0
- package/lib/esm/module/GraphCanvas/lib/utils/precompute-graph.js.map +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/prepare-graph-data.js +49 -0
- package/lib/esm/module/GraphCanvas/lib/utils/prepare-graph-data.js.map +1 -0
- package/lib/esm/module/GraphCanvas/slices/draw-links.js +24 -42
- package/lib/esm/module/GraphCanvas/slices/draw-links.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/draw-nodes.js +80 -168
- package/lib/esm/module/GraphCanvas/slices/draw-nodes.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/draw-text.js +1 -9
- package/lib/esm/module/GraphCanvas/slices/draw-text.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/export-svg.js +4 -5
- package/lib/esm/module/GraphCanvas/slices/export-svg.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/init-dnd.js +15 -3
- package/lib/esm/module/GraphCanvas/slices/init-dnd.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/init-draw.js +212 -8
- package/lib/esm/module/GraphCanvas/slices/init-draw.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/init-pointer.js +6 -8
- package/lib/esm/module/GraphCanvas/slices/init-pointer.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/init-simulation.js +3 -4
- package/lib/esm/module/GraphCanvas/slices/init-simulation.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/init-zoom.js +2 -4
- package/lib/esm/module/GraphCanvas/slices/init-zoom.js.map +1 -1
- package/lib/esm/module/GraphCanvas/slices/update-link-cache.js +5 -5
- package/lib/esm/module/GraphCanvas/slices/update-node-cache.js +17 -29
- package/lib/esm/module/GraphCanvas/slices/update-node-cache.js.map +1 -1
- package/lib/index.d.ts +94 -43
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphCanvas.js","sources":["../../../../src/module/GraphCanvas/GraphCanvas.ts"],"sourcesContent":["import { isArray } from \"@krainovsd/js-helpers\";\nimport { forceLink } from \"d3-force\";\nimport { select as d3Select } from \"d3-selection\";\nimport { ZoomTransform, zoom, zoomIdentity } from \"d3-zoom\";\nimport { GRAPH_CACHE_TYPE } from \"./constants\";\nimport {\n computeGraphBounds,\n extractLinkPointIds,\n forceSettingsGetter,\n graphSettingsGetter,\n highlightSettingsGetter,\n linkSettingsGetter,\n listenersGetter,\n nodeSettingsGetter,\n} from \"./lib\";\nimport {\n exportToSvgSlice,\n initArea,\n initCollideForce,\n initDnd,\n initDraw,\n initPointer,\n initResize,\n initSelection,\n initSimulation,\n initSimulationForces,\n initZoom,\n updateLinkCache,\n updateNodeCache,\n} from \"./slices\";\nimport type {\n ForceSettingsInterface,\n GraphCanvasCacheKeys,\n GraphCanvasInterface,\n GraphCanvasSimulation,\n GraphSettingsInterface,\n HighlightSettingsInterface,\n LinkInterface,\n LinkOptionsInterface,\n LinkParticle,\n LinkSettingsInterface,\n ListenersInterface,\n NodeInterface,\n NodeOptionsInterface,\n NodeSettingsInterface,\n PrecomputeForceSettingsInterface,\n} from \"./types\";\n\nexport class GraphCanvas<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n> {\n /** initial data */\n\n protected nodes: NodeInterface<NodeData>[];\n\n protected links: LinkInterface<NodeData, LinkData>[];\n\n protected particles: (LinkParticle[] | undefined)[] = [];\n\n protected width: number;\n\n protected height: number;\n\n protected root: HTMLElement;\n\n protected container: HTMLDivElement | undefined | null;\n\n protected area: HTMLCanvasElement | null | undefined;\n\n /** settings */\n\n protected graphSettings: Required<GraphSettingsInterface<NodeData>>;\n\n protected forceSettings: Required<ForceSettingsInterface<NodeData, LinkData>>;\n\n protected highlightSettings: Required<HighlightSettingsInterface>;\n\n protected nodeSettings: Required<Omit<NodeSettingsInterface<NodeData, LinkData>, \"options\">> &\n Pick<NodeSettingsInterface<NodeData, LinkData>, \"options\">;\n\n protected linkSettings: Required<Omit<LinkSettingsInterface<NodeData, LinkData>, \"options\">> &\n Pick<LinkSettingsInterface<NodeData, LinkData>, \"options\">;\n\n protected listeners: ListenersInterface<NodeData, LinkData>;\n\n /** service */\n\n protected context: CanvasRenderingContext2D | null | undefined;\n\n protected simulation: GraphCanvasSimulation<NodeData, LinkData> | undefined;\n\n protected areaTransform: ZoomTransform = zoomIdentity;\n\n protected _translateExtent: [[number, number], [number, number]] | undefined;\n\n protected draw: (this: GraphCanvas<NodeData, LinkData>) => void;\n\n protected eventAbortController: AbortController;\n\n protected cachedNodeText: (string[] | undefined)[] = [];\n\n protected cachedNodeLabel: (string[] | undefined)[] = [];\n\n protected linkOptionsCache: (Required<LinkOptionsInterface<NodeData, LinkData>> | undefined)[] =\n [];\n\n protected nodeOptionsCache: (Required<NodeOptionsInterface<NodeData, LinkData>> | undefined)[] =\n [];\n\n protected isDragging: boolean = false;\n\n protected highlightedNode: NodeInterface<NodeData> | null = null;\n\n protected highlightedLink: LinkInterface<NodeData, LinkData> | null = null;\n\n protected highlightedNeighbors: Set<string | number> | null = null;\n\n protected highlightProgress: number = 1;\n\n protected highlightStart: number | null = null;\n\n protected highlightPositive: boolean = false;\n\n protected highlightController: AbortController | undefined;\n\n protected _lastNodeZoomK: number | undefined;\n\n protected _lastLinkZoomK: number | undefined;\n\n protected _zoomAnimating: boolean = false;\n\n protected isSelecting: boolean = false;\n\n protected selectionRect: { x1: number; y1: number; x2: number; y2: number } | null = null;\n\n protected areaRect: DOMRect | undefined;\n // protected get areaRect() {\n // return this.area?.getBoundingClientRect();\n // }\n\n protected get simulationWorking() {\n const simulationAlpha = this.simulation?.alpha?.() ?? 0;\n const simulationAlphaMin = this.simulation?.alphaMin?.() ?? 0;\n const simulationAlphaDecay = this.simulation?.alphaDecay?.() ?? 0;\n const force = (simulationAlpha - simulationAlphaMin) / simulationAlphaDecay;\n\n return force > 0;\n }\n\n constructor({\n links,\n nodes,\n root,\n forceSettings,\n linkSettings,\n listeners,\n nodeSettings,\n graphSettings,\n highlightSettings,\n }: GraphCanvasInterface<NodeData, LinkData>) {\n // root.style.position = \"relative\";\n root.style.overflow = \"hidden\";\n\n this.root = root;\n\n this.forceSettings = forceSettingsGetter(forceSettings);\n this.linkSettings = linkSettingsGetter(linkSettings);\n this.nodeSettings = nodeSettingsGetter(nodeSettings);\n this.listeners = listenersGetter(listeners);\n this.graphSettings = graphSettingsGetter(graphSettings);\n this.highlightSettings = highlightSettingsGetter(highlightSettings);\n\n this.eventAbortController = new AbortController();\n\n this.nodes = nodes;\n this.links = links;\n this.height = 0;\n this.width = 0;\n\n this.draw = initDraw.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDraw>,\n ReturnType<typeof initDraw>\n >(this);\n\n this.init();\n }\n\n get dpi() {\n return devicePixelRatio;\n }\n\n getData = (): Pick<GraphCanvasInterface<NodeData, LinkData>, \"nodes\" | \"links\"> => {\n return {\n links: this.links,\n nodes: this.nodes,\n };\n };\n\n fitToView = (\n margin: number = this.graphSettings.zoomToFitMargin,\n duration: number = this.graphSettings.zoomAnimationDuration,\n ) => {\n const area = this.area;\n if (!area) return;\n\n const bounds = computeGraphBounds(this.nodes);\n if (!bounds) return;\n\n const graphWidth = bounds.maxX - bounds.minX;\n const graphHeight = bounds.maxY - bounds.minY;\n if (graphWidth === 0 || graphHeight === 0) return;\n const graphCenterX = bounds.minX + graphWidth / 2;\n const graphCenterY = bounds.minY + graphHeight / 2;\n const scale = (1 - margin) / Math.max(graphWidth / this.width, graphHeight / this.height);\n\n const clampedScale = Math.min(scale, this.graphSettings.zoomExtent?.[1] ?? scale);\n const target = zoomIdentity\n .translate(this.width / 2, this.height / 2)\n .scale(clampedScale)\n .translate(-graphCenterX, -graphCenterY);\n if (!this.graphSettings.zoomAnimation) {\n this.areaTransform = target;\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), target);\n this.clearCache(true);\n this.tick();\n return;\n }\n this.animateZoom(area, target, this.areaTransform, duration);\n };\n\n focusOnNode = (\n nodeId: string | number,\n scale: number = this.graphSettings.zoomToNodeScale,\n duration: number = this.graphSettings.zoomAnimationDuration,\n ) => {\n const area = this.area;\n if (!area) return;\n\n const node = this.nodes.find((n) => n.id === nodeId);\n if (!node) return;\n if (node.x == undefined || node.y == undefined) return;\n\n const target = zoomIdentity\n .translate(this.width / 2, this.height / 2)\n .scale(scale)\n .translate(-node.x, -node.y);\n if (!this.graphSettings.zoomAnimation) {\n this.areaTransform = target;\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), target);\n this.clearCache(true);\n this.tick();\n return;\n }\n this.animateZoom(area, target, this.areaTransform, duration);\n };\n exportToSvg = (filename: string = \"graph.svg\", fit: boolean = false) => {\n exportToSvgSlice.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof exportToSvgSlice>,\n ReturnType<typeof exportToSvgSlice>\n >(this, filename, fit);\n };\n changeData = (\n options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, \"links\" | \"nodes\">,\n alpha: number = 0.5,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (options.links != undefined) this.links = options.links;\n if (options.nodes != undefined) this.nodes = options.nodes;\n if (options.nodes != undefined || options.links != undefined) {\n this.updateData(alpha, clearCache, precompute);\n }\n };\n\n changeSettings = (\n options: Omit<\n Partial<GraphCanvasInterface<NodeData, LinkData>>,\n \"links\" | \"nodes\" | \"listeners\"\n >,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (options.graphSettings) {\n this.graphSettings = graphSettingsGetter(options.graphSettings, this.graphSettings);\n\n this.draw = initDraw.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDraw>,\n ReturnType<typeof initDraw>\n >(this);\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n }\n if (options.forceSettings) {\n this.forceSettings = forceSettingsGetter(options.forceSettings, this.forceSettings);\n }\n if (options.highlightSettings) {\n this.highlightSettings = highlightSettingsGetter(\n options.highlightSettings,\n this.highlightSettings,\n );\n\n if (clearCache === true) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n GRAPH_CACHE_TYPE.LinkOptions,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.linkSettings) {\n this.linkSettings = linkSettingsGetter(options.linkSettings, this.linkSettings);\n\n if (clearCache) {\n this.clearCache([GRAPH_CACHE_TYPE.LinkOptions]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.nodeSettings) {\n this.nodeSettings = nodeSettingsGetter(options.nodeSettings, this.nodeSettings);\n\n if (clearCache) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n\n initCollideForce.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initCollideForce>,\n ReturnType<typeof initCollideForce>\n >(this, true);\n }\n\n if (options.forceSettings) {\n return void this.updateSimulation(precompute);\n }\n\n this.tick();\n };\n\n updateRect = () => {\n if (!this.area) return;\n this.areaRect = this.area.getBoundingClientRect();\n };\n\n updateSize = () => {\n if (!this.area) return;\n\n const { width, height } = this.root.getBoundingClientRect();\n this.width = width;\n this.height = height;\n this.area.width = this.dpi * this.width;\n this.area.height = this.dpi * this.height;\n this.updateRect();\n this.context = this.area.getContext(\"2d\");\n if (!this.context) throw new Error(\"couldn't create canvas context\");\n this.context.scale(this.dpi, this.dpi);\n this.draw();\n };\n\n clearCache = (keys: boolean | GraphCanvasCacheKeys[]) => {\n if (keys === true) {\n this.nodeOptionsCache.length = 0;\n this.linkOptionsCache.length = 0;\n this.cachedNodeLabel.length = 0;\n this.cachedNodeText.length = 0;\n } else if (isArray(keys)) {\n for (const key of keys) {\n switch (key) {\n case GRAPH_CACHE_TYPE.NodeText: {\n this.cachedNodeText.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.NodeLabel: {\n this.cachedNodeLabel.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.NodeOptions: {\n this.nodeOptionsCache.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.LinkOptions: {\n this.linkOptionsCache.length = 0;\n break;\n }\n default: {\n break;\n }\n }\n }\n }\n\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n };\n\n tick = () => {\n if (!this.simulationWorking) this.draw();\n };\n\n restart = (alpha?: number, options?: Partial<PrecomputeForceSettingsInterface>) => {\n if (!this.simulation) return;\n\n const settings: Required<PrecomputeForceSettingsInterface> = {\n precompute: options?.precompute ?? this.forceSettings.precompute,\n precomputeMaxTimeMs: options?.precomputeMaxTimeMs ?? this.forceSettings?.precomputeMaxTimeMs,\n precomputeMaxTicks:\n options?.precomputeMaxTicks ?? this.forceSettings?.precomputeMaxTicks ?? 300,\n precomputeDisableForcesAfter:\n options?.precomputeDisableForcesAfter ??\n this.forceSettings?.precomputeDisableForcesAfter ??\n false,\n };\n if (!settings.precompute) {\n this.simulation.alpha(alpha ?? 1).restart();\n return;\n }\n if (settings.precomputeDisableForcesAfter) {\n this.forceSettings = forceSettingsGetter({ forces: true }, this.forceSettings);\n }\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.simulation.stop();\n this.simulation.alpha(alpha ?? 1);\n\n const startTime = performance.now();\n let ticks = 0;\n while (\n performance.now() - startTime < settings.precomputeMaxTimeMs &&\n ticks < settings.precomputeMaxTicks\n ) {\n this.simulation.tick(1);\n ticks++;\n if (this.simulation.alpha() <= this.simulation.alphaMin()) break;\n }\n if (settings.precomputeDisableForcesAfter) {\n this.forceSettings = forceSettingsGetter({ forces: false }, this.forceSettings);\n }\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.simulation.restart();\n this.tick();\n };\n\n start = () => {\n if (this.simulation) this.simulation.alpha(1).restart();\n if (this.container) this.container.style.display = \"block\";\n };\n\n stop = () => {\n if (this.simulation) this.simulation.stop();\n if (this.container) this.container.style.display = \"none\";\n };\n\n create = () => {\n this.init();\n };\n\n destroy = () => {\n if (this.simulation) {\n this.simulation.stop();\n this.simulation = undefined;\n }\n\n this.clearHTMLElements();\n this.clearState();\n this.clearCache(true);\n };\n\n protected getPointerAreaPosition = (event: MouseEvent | TouchEvent) => {\n let localX: number;\n let localY: number;\n if (\"offsetX\" in event) {\n // localX = event.offsetX;\n // localY = event.offsetY;\n const rect = this.areaRect;\n if (!rect) return [0, 0];\n localX = event.clientX - rect.left;\n localY = event.clientY - rect.top;\n } else {\n const rect = this.areaRect;\n if (!rect) return [0, 0];\n const clientX = event.touches[0]?.clientX ?? event.changedTouches[0]?.clientX;\n const clientY = event.touches[0]?.clientY ?? event.changedTouches[0]?.clientY;\n localX = clientX - rect.left;\n localY = clientY - rect.top;\n }\n const px = (localX - this.areaTransform.x) / this.areaTransform.k;\n const py = (localY - this.areaTransform.y) / this.areaTransform.k;\n return [px, py];\n };\n\n protected clearHTMLElements = () => {\n this.root.replaceChildren();\n this.area = undefined;\n this.context = undefined;\n this.container = undefined;\n this.eventAbortController.abort();\n this.eventAbortController = new AbortController();\n };\n\n protected updateSimulation = (precompute: boolean = false) => {\n if (this.simulation) {\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.restart(1, { precompute });\n }\n };\n\n protected clearState = () => {\n this.isDragging = false;\n this.highlightedNode = null;\n this.highlightedLink = null;\n this.highlightedNeighbors = null;\n this.highlightProgress = 0;\n this.highlightStart = null;\n this.highlightPositive = false;\n this.isSelecting = false;\n this.selectionRect = null;\n };\n\n protected init = () => {\n initArea.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initArea>,\n ReturnType<typeof initArea>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n initSimulation.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulation>,\n ReturnType<typeof initSimulation>\n >(this);\n this.restart(1);\n initDnd.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDnd>,\n ReturnType<typeof initDnd>\n >(this);\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this);\n initResize.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initResize>,\n ReturnType<typeof initResize>\n >(this);\n initSelection.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSelection>,\n ReturnType<typeof initSelection>\n >(this);\n initPointer.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initPointer>,\n ReturnType<typeof initPointer>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n this.tick();\n };\n\n protected updateData = (\n alpha: number = 0.5,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (clearCache) {\n this.clearCache(clearCache);\n }\n\n if (this.simulation) {\n initCollideForce.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initCollideForce>,\n ReturnType<typeof initCollideForce>\n >(this, false);\n\n this.simulation.nodes(this.nodes).force(\n \"link\",\n forceLink<NodeInterface<NodeData>, LinkInterface<NodeData, LinkData>>(this.links)\n .id(this.nodeSettings.idGetter.bind(this))\n .distance(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkDistance\n : 0,\n )\n .strength(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkStrength\n : 0,\n )\n .iterations(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkIterations\n : 0,\n ),\n );\n this.restart(alpha, { precompute });\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n }\n };\n\n protected animateHighlight = (\n node: NodeInterface<NodeData> | undefined,\n link: LinkInterface<NodeData, LinkData> | undefined,\n baseDuration: number = this.highlightSettings.highlightDuration,\n ) => {\n let positive = true;\n if (node && (this.highlightedNode !== node || !this.highlightPositive)) {\n this.highlightedNode = node;\n this.highlightedNeighbors = new Set(node.neighbors);\n this.particles = [];\n this.highlightedLink = null;\n this.highlightStart = performance.now();\n } else if (link && (this.highlightedLink !== link || !this.highlightPositive)) {\n const { sourceId, targetId } = extractLinkPointIds(link);\n this.highlightProgress = 0;\n this.highlightedLink = link;\n this.highlightedNeighbors = new Set([sourceId, targetId]);\n this.particles = [];\n this.highlightedNode = null;\n this.highlightStart = performance.now();\n } else if (!node && !link && this.highlightPositive) {\n positive = false;\n } else {\n return;\n }\n if (this.highlightController) {\n this.highlightController.abort();\n }\n const controller = new AbortController();\n this.highlightPositive = positive;\n this.highlightController = controller;\n const startTime = performance.now();\n const startProgress = this.highlightProgress;\n const targetProgress = positive ? 1 : 0;\n const delta = targetProgress - startProgress;\n const duration = baseDuration * Math.abs(delta);\n\n const animate = () => {\n if (controller.signal.aborted) return;\n const elapsed = performance.now() - startTime;\n const t = duration === 0 ? 1 : Math.min(elapsed / duration, 1);\n const current = startProgress + delta * t;\n const eased =\n current < 0.5 ? 4 * current * current * current : 1 - (-2 * current + 2) ** 3 / 2;\n this.highlightProgress = eased;\n\n if (t < 1 || positive) {\n requestAnimationFrame(animate);\n this.draw();\n } else {\n this.highlightedNode = null;\n this.highlightedLink = null;\n this.highlightedNeighbors = null;\n this.highlightStart = null;\n this.particles = [];\n this.tick();\n }\n };\n requestAnimationFrame(animate);\n };\n\n protected animateZoom = (\n area: HTMLCanvasElement,\n target: ZoomTransform,\n start: ZoomTransform,\n duration: number,\n ) => {\n this._zoomAnimating = true;\n const startTime = performance.now();\n const animate = () => {\n const elapsed = performance.now() - startTime;\n const t = Math.min(elapsed / duration, 1);\n const eased = t < 0.5 ? 4 * t * t * t : 1 - (-2 * t + 2) ** 3 / 2;\n const x = start.x + (target.x - start.x) * eased;\n const y = start.y + (target.y - start.y) * eased;\n const k = start.k + (target.k - start.k) * eased;\n\n this.areaTransform = new ZoomTransform(k, x, y);\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), this.areaTransform);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n this.tick();\n\n if (t < 1) {\n requestAnimationFrame(animate);\n } else {\n this._zoomAnimating = false;\n this.clearCache(true);\n this.tick();\n }\n };\n requestAnimationFrame(animate);\n };\n}\n"],"names":["d3Select"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GraphCanvas.js","sources":["../../../../src/module/GraphCanvas/GraphCanvas.ts"],"sourcesContent":["import { isArray } from \"@krainovsd/js-helpers\";\nimport { forceLink } from \"d3-force\";\nimport { select as d3Select } from \"d3-selection\";\nimport { ZoomTransform, zoom, zoomIdentity } from \"d3-zoom\";\nimport { GRAPH_CACHE_TYPE } from \"./constants\";\nimport {\n computeGraphBounds,\n extractLinkPointIds,\n forceSettingsGetter,\n graphSettingsGetter,\n highlightSettingsGetter,\n linkSettingsGetter,\n listenersGetter,\n nodeSettingsGetter,\n} from \"./lib\";\nimport {\n exportToSvgSlice,\n initArea,\n initCollideForce,\n initDnd,\n initDraw,\n initPointer,\n initResize,\n initSelection,\n initSimulation,\n initSimulationForces,\n initZoom,\n updateLinkCache,\n updateNodeCache,\n} from \"./slices\";\nimport type {\n ForceSettingsInterface,\n GraphCanvasCacheKeys,\n GraphCanvasInterface,\n GraphCanvasSimulation,\n GraphLinkSettingsInterface,\n GraphNodeSettingsInterface,\n GraphSettingsInterface,\n HighlightSettingsInterface,\n LinkInterface,\n LinkOptionsInterface,\n LinkParticle,\n ListenersInterface,\n NodeInterface,\n NodeOptionsInterface,\n PrecomputeForceSettingsInterface,\n} from \"./types\";\n\nexport class GraphCanvas<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n> {\n /** initial data */\n\n protected nodes: NodeInterface<NodeData>[];\n\n protected links: LinkInterface<NodeData, LinkData>[];\n\n protected particles: (LinkParticle[] | undefined)[] = [];\n\n protected width: number;\n\n protected height: number;\n\n protected root: HTMLElement;\n\n protected container: HTMLDivElement | undefined | null;\n\n protected area: HTMLCanvasElement | null | undefined;\n\n /** settings */\n\n protected graphSettings: Required<GraphSettingsInterface<NodeData>>;\n\n protected forceSettings: Required<ForceSettingsInterface<NodeData, LinkData>>;\n\n protected highlightSettings: Required<HighlightSettingsInterface>;\n\n protected nodeSettings: GraphNodeSettingsInterface<NodeData, LinkData>;\n\n protected linkSettings: GraphLinkSettingsInterface<NodeData, LinkData>;\n\n protected listeners: ListenersInterface<NodeData, LinkData>;\n\n /** service */\n\n protected context: CanvasRenderingContext2D | null | undefined;\n\n protected simulation: GraphCanvasSimulation<NodeData, LinkData> | undefined;\n\n protected areaTransform: ZoomTransform = zoomIdentity;\n\n protected _translateExtent: [[number, number], [number, number]] | undefined;\n\n protected draw: (this: GraphCanvas<NodeData, LinkData>) => void;\n\n protected instantDraw: (this: GraphCanvas<NodeData, LinkData>) => void;\n\n protected eventAbortController: AbortController;\n\n protected cachedNodeText: (string[] | undefined)[] = [];\n\n protected cachedNodeLabel: (string[] | undefined)[] = [];\n\n protected linkOptionsCache: (Required<LinkOptionsInterface<NodeData, LinkData>> | undefined)[] =\n [];\n\n protected nodeOptionsCache: (Required<NodeOptionsInterface<NodeData, LinkData>> | undefined)[] =\n [];\n\n protected isDragging: boolean = false;\n\n protected highlightedNode: NodeInterface<NodeData> | null = null;\n\n protected highlightedLink: LinkInterface<NodeData, LinkData> | null = null;\n\n protected highlightedNeighbors: Set<string | number> | null = null;\n\n protected highlightProgress: number = 1;\n\n protected highlightStart: number | null = null;\n\n protected highlightPositive: boolean = false;\n\n protected highlightController: AbortController | undefined;\n\n protected _lastNodeZoomK: number | undefined;\n\n protected _lastLinkZoomK: number | undefined;\n\n protected _zoomAnimating: boolean = false;\n\n protected isSelecting: boolean = false;\n\n protected selectionRect: { x1: number; y1: number; x2: number; y2: number } | null = null;\n\n protected areaRect: DOMRect | undefined;\n // protected get areaRect() {\n // return this.area?.getBoundingClientRect();\n // }\n\n protected get simulationWorking() {\n const simulationAlpha = this.simulation?.alpha?.() ?? 0;\n const simulationAlphaMin = this.simulation?.alphaMin?.() ?? 0;\n const simulationAlphaDecay = this.simulation?.alphaDecay?.() ?? 0;\n const force = (simulationAlpha - simulationAlphaMin) / simulationAlphaDecay;\n\n return force > 0;\n }\n\n constructor({\n links,\n nodes,\n root,\n forceSettings,\n linkSettings,\n listeners,\n nodeSettings,\n graphSettings,\n highlightSettings,\n }: GraphCanvasInterface<NodeData, LinkData>) {\n // root.style.position = \"relative\";\n root.style.overflow = \"hidden\";\n\n this.root = root;\n\n this.forceSettings = forceSettingsGetter(forceSettings);\n this.linkSettings = linkSettingsGetter(linkSettings);\n this.nodeSettings = nodeSettingsGetter(nodeSettings);\n this.listeners = listenersGetter(listeners);\n this.graphSettings = graphSettingsGetter(graphSettings);\n this.highlightSettings = highlightSettingsGetter(highlightSettings);\n\n this.eventAbortController = new AbortController();\n\n this.nodes = nodes;\n this.links = links;\n this.height = 0;\n this.width = 0;\n\n const draw = initDraw.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDraw>,\n ReturnType<typeof initDraw>\n >(this);\n this.draw = this.initSmartDraw(draw);\n this.instantDraw = draw;\n }\n\n get dpi() {\n return devicePixelRatio;\n }\n\n getData = (): Pick<GraphCanvasInterface<NodeData, LinkData>, \"nodes\" | \"links\"> => {\n return {\n links: this.links,\n nodes: this.nodes,\n };\n };\n\n fitToView = (\n margin: number = this.graphSettings.zoomToFitMargin,\n duration: number = this.graphSettings.zoomAnimationDuration,\n ) => {\n const area = this.area;\n if (!area) return;\n\n const bounds = computeGraphBounds(this.nodes);\n if (!bounds) return;\n\n const graphWidth = bounds.maxX - bounds.minX;\n const graphHeight = bounds.maxY - bounds.minY;\n if (graphWidth === 0 || graphHeight === 0) return;\n const graphCenterX = bounds.minX + graphWidth / 2;\n const graphCenterY = bounds.minY + graphHeight / 2;\n const scale = (1 - margin) / Math.max(graphWidth / this.width, graphHeight / this.height);\n\n const clampedScale = Math.min(scale, this.graphSettings.zoomExtent?.[1] ?? scale);\n const target = zoomIdentity\n .translate(this.width / 2, this.height / 2)\n .scale(clampedScale)\n .translate(-graphCenterX, -graphCenterY);\n if (!this.graphSettings.zoomAnimation) {\n this.areaTransform = target;\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), target);\n this.clearCache(true);\n this.tick();\n return;\n }\n this.animateZoom(area, target, this.areaTransform, duration);\n };\n\n focusOnNode = (\n nodeId: string | number,\n scale: number = this.graphSettings.zoomToNodeScale,\n duration: number = this.graphSettings.zoomAnimationDuration,\n ) => {\n const area = this.area;\n if (!area) return;\n\n const node = this.nodes.find((n) => n.id === nodeId);\n if (!node) return;\n if (node.x == undefined || node.y == undefined) return;\n\n const target = zoomIdentity\n .translate(this.width / 2, this.height / 2)\n .scale(scale)\n .translate(-node.x, -node.y);\n if (!this.graphSettings.zoomAnimation) {\n this.areaTransform = target;\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), target);\n this.clearCache(true);\n this.tick();\n return;\n }\n this.animateZoom(area, target, this.areaTransform, duration);\n };\n\n exportToSvg = (filename: string = \"graph.svg\", fit: boolean = false) => {\n exportToSvgSlice.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof exportToSvgSlice>,\n ReturnType<typeof exportToSvgSlice>\n >(this, filename, fit);\n };\n\n changeData = (\n options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, \"links\" | \"nodes\">,\n alpha: number = 0.5,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (options.links != undefined) this.links = options.links;\n if (options.nodes != undefined) this.nodes = options.nodes;\n if (options.nodes != undefined || options.links != undefined) {\n this.updateData(alpha, clearCache, precompute);\n }\n };\n\n changeSettings = (\n options: Omit<\n Partial<GraphCanvasInterface<NodeData, LinkData>>,\n \"links\" | \"nodes\" | \"listeners\"\n >,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (options.graphSettings) {\n this.graphSettings = graphSettingsGetter(options.graphSettings, this.graphSettings);\n const draw = initDraw.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDraw>,\n ReturnType<typeof initDraw>\n >(this);\n this.draw = this.initSmartDraw(draw);\n this.instantDraw = draw;\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n }\n if (options.forceSettings) {\n this.forceSettings = forceSettingsGetter(options.forceSettings, this.forceSettings);\n }\n if (options.highlightSettings) {\n this.highlightSettings = highlightSettingsGetter(\n options.highlightSettings,\n this.highlightSettings,\n );\n\n if (clearCache === true) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n GRAPH_CACHE_TYPE.LinkOptions,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.linkSettings) {\n this.linkSettings = linkSettingsGetter(options.linkSettings, this.linkSettings);\n\n if (clearCache) {\n this.clearCache([GRAPH_CACHE_TYPE.LinkOptions]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.nodeSettings) {\n this.nodeSettings = nodeSettingsGetter(options.nodeSettings, this.nodeSettings);\n\n if (clearCache) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n\n initCollideForce.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initCollideForce>,\n ReturnType<typeof initCollideForce>\n >(this, true);\n }\n\n if (options.forceSettings) {\n return void this.updateSimulation(precompute);\n }\n\n this.tick();\n };\n\n updateRect = () => {\n if (!this.area) return;\n this.areaRect = this.area.getBoundingClientRect();\n };\n\n updateSize = () => {\n if (!this.area) return;\n\n const { width, height } = this.root.getBoundingClientRect();\n this.width = width;\n this.height = height;\n this.area.width = this.dpi * this.width;\n this.area.height = this.dpi * this.height;\n this.updateRect();\n this.context = this.area.getContext(\"2d\");\n if (!this.context) throw new Error(\"couldn't create canvas context\");\n this.context.scale(this.dpi, this.dpi);\n this.instantDraw();\n };\n\n clearCache = (keys: boolean | GraphCanvasCacheKeys[]) => {\n if (keys === true) {\n this.nodeOptionsCache.length = 0;\n this.linkOptionsCache.length = 0;\n this.cachedNodeLabel.length = 0;\n this.cachedNodeText.length = 0;\n } else if (isArray(keys)) {\n for (const key of keys) {\n switch (key) {\n case GRAPH_CACHE_TYPE.NodeText: {\n this.cachedNodeText.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.NodeLabel: {\n this.cachedNodeLabel.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.NodeOptions: {\n this.nodeOptionsCache.length = 0;\n break;\n }\n case GRAPH_CACHE_TYPE.LinkOptions: {\n this.linkOptionsCache.length = 0;\n break;\n }\n default: {\n break;\n }\n }\n }\n }\n\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n };\n\n tick = () => {\n if (!this.simulationWorking) this.draw();\n };\n\n restart = (alpha?: number, options?: Partial<PrecomputeForceSettingsInterface>) => {\n if (!this.simulation) return;\n\n const settings: Required<PrecomputeForceSettingsInterface> = {\n precompute: options?.precompute ?? this.forceSettings.precompute,\n precomputeMaxTimeMs: options?.precomputeMaxTimeMs ?? this.forceSettings?.precomputeMaxTimeMs,\n precomputeMaxTicks:\n options?.precomputeMaxTicks ?? this.forceSettings?.precomputeMaxTicks ?? 300,\n precomputeDisableForcesAfter:\n options?.precomputeDisableForcesAfter ??\n this.forceSettings?.precomputeDisableForcesAfter ??\n false,\n };\n if (!settings.precompute) {\n this.simulation.alpha(alpha ?? 1).restart();\n return;\n }\n if (settings.precomputeDisableForcesAfter) {\n this.forceSettings = forceSettingsGetter({ forces: true }, this.forceSettings);\n }\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.simulation.stop();\n this.simulation.alpha(alpha ?? 1);\n\n const startTime = performance.now();\n let ticks = 0;\n while (\n performance.now() - startTime < settings.precomputeMaxTimeMs &&\n ticks < settings.precomputeMaxTicks\n ) {\n this.simulation.tick(1);\n ticks++;\n if (this.simulation.alpha() <= this.simulation.alphaMin()) break;\n }\n if (settings.precomputeDisableForcesAfter) {\n this.forceSettings = forceSettingsGetter({ forces: false }, this.forceSettings);\n }\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.simulation.restart();\n this.tick();\n };\n\n create = () => {\n this.init();\n };\n\n destroy = () => {\n if (this.simulation) {\n this.simulation.stop();\n this.simulation = undefined;\n }\n this.clearHTMLElements();\n this.clearState();\n this.clearCache(true);\n };\n\n precompute = () => {\n initArea.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initArea>,\n ReturnType<typeof initArea>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n initSimulation.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulation>,\n ReturnType<typeof initSimulation>\n >(this);\n this.restart(1);\n };\n\n protected initSmartDraw = (draw: ReturnType<typeof initDraw>) => {\n const frameInterval = 1000 / this.graphSettings.maxFps;\n let debouncedDrawId: NodeJS.Timeout | undefined;\n let lastDraw = 0;\n return () => {\n if (debouncedDrawId != undefined) {\n clearTimeout(debouncedDrawId);\n }\n const elapsed = performance.now() - lastDraw;\n if (elapsed < frameInterval) {\n debouncedDrawId = setTimeout(() => {\n debouncedDrawId = undefined;\n this.tick();\n }, frameInterval * 2);\n return;\n }\n lastDraw = performance.now();\n draw();\n };\n };\n\n protected getPointerAreaPosition = (event: MouseEvent | TouchEvent) => {\n let localX: number;\n let localY: number;\n if (\"offsetX\" in event) {\n // localX = event.offsetX;\n // localY = event.offsetY;\n const rect = this.areaRect;\n if (!rect) return [0, 0];\n localX = event.clientX - rect.left;\n localY = event.clientY - rect.top;\n } else {\n const rect = this.areaRect;\n if (!rect) return [0, 0];\n const clientX = event.touches[0]?.clientX ?? event.changedTouches[0]?.clientX;\n const clientY = event.touches[0]?.clientY ?? event.changedTouches[0]?.clientY;\n localX = clientX - rect.left;\n localY = clientY - rect.top;\n }\n const px = (localX - this.areaTransform.x) / this.areaTransform.k;\n const py = (localY - this.areaTransform.y) / this.areaTransform.k;\n return [px, py];\n };\n\n protected clearHTMLElements = () => {\n this.root.replaceChildren();\n this.area = undefined;\n this.context = undefined;\n this.container = undefined;\n this.eventAbortController.abort();\n this.eventAbortController = new AbortController();\n };\n\n protected updateSimulation = (precompute: boolean = false) => {\n if (this.simulation) {\n initSimulationForces.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulationForces>,\n ReturnType<typeof initSimulationForces>\n >(this);\n this.restart(1, { precompute });\n }\n };\n\n protected clearState = () => {\n this.isDragging = false;\n this.highlightedNode = null;\n this.highlightedLink = null;\n this.highlightedNeighbors = null;\n this.highlightProgress = 0;\n this.highlightStart = null;\n this.highlightPositive = false;\n this.isSelecting = false;\n this.selectionRect = null;\n };\n\n protected init = () => {\n initArea.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initArea>,\n ReturnType<typeof initArea>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n initSimulation.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSimulation>,\n ReturnType<typeof initSimulation>\n >(this);\n this.restart(1);\n initDnd.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDnd>,\n ReturnType<typeof initDnd>\n >(this);\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this);\n initResize.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initResize>,\n ReturnType<typeof initResize>\n >(this);\n initSelection.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSelection>,\n ReturnType<typeof initSelection>\n >(this);\n initPointer.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initPointer>,\n ReturnType<typeof initPointer>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n this.tick();\n };\n\n protected updateData = (\n alpha: number = 0.5,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n precompute: boolean = false,\n ) => {\n if (clearCache) {\n this.clearCache(clearCache);\n }\n\n if (this.simulation) {\n initCollideForce.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initCollideForce>,\n ReturnType<typeof initCollideForce>\n >(this, false);\n\n this.simulation.nodes(this.nodes).force(\n \"link\",\n forceLink<NodeInterface<NodeData>, LinkInterface<NodeData, LinkData>>(this.links)\n .id(this.nodeSettings.idGetter.bind(this))\n .distance(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkDistance\n : 0,\n )\n .strength(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkStrength\n : 0,\n )\n .iterations(\n this.forceSettings.forces && this.forceSettings.linkForce\n ? this.forceSettings.linkIterations\n : 0,\n ),\n );\n this.restart(alpha, { precompute });\n initZoom.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n }\n };\n\n protected animateHighlight = (\n node: NodeInterface<NodeData> | undefined,\n link: LinkInterface<NodeData, LinkData> | undefined,\n baseDuration: number = this.highlightSettings.highlightDuration,\n ) => {\n let positive = true;\n if (node && (this.highlightedNode !== node || !this.highlightPositive)) {\n this.highlightedNode = node;\n this.highlightedNeighbors = new Set(node.neighbors);\n this.particles = [];\n this.highlightedLink = null;\n this.highlightStart = performance.now();\n } else if (link && (this.highlightedLink !== link || !this.highlightPositive)) {\n const { sourceId, targetId } = extractLinkPointIds(link);\n this.highlightProgress = 0;\n this.highlightedLink = link;\n this.highlightedNeighbors = new Set([sourceId, targetId]);\n this.particles = [];\n this.highlightedNode = null;\n this.highlightStart = performance.now();\n } else if (!node && !link && this.highlightPositive) {\n positive = false;\n } else {\n return;\n }\n if (this.highlightController) {\n this.highlightController.abort();\n }\n const controller = new AbortController();\n this.highlightPositive = positive;\n this.highlightController = controller;\n const startTime = performance.now();\n const startProgress = this.highlightProgress;\n const targetProgress = positive ? 1 : 0;\n const delta = targetProgress - startProgress;\n const duration = baseDuration * Math.abs(delta);\n\n const animate = () => {\n if (controller.signal.aborted) return;\n const elapsed = performance.now() - startTime;\n const t = duration === 0 ? 1 : Math.min(elapsed / duration, 1);\n const current = startProgress + delta * t;\n const eased =\n current < 0.5 ? 4 * current * current * current : 1 - (-2 * current + 2) ** 3 / 2;\n this.highlightProgress = eased;\n\n if (t < 1 || positive) {\n requestAnimationFrame(animate);\n this.draw();\n } else {\n this.highlightedNode = null;\n this.highlightedLink = null;\n this.highlightedNeighbors = null;\n this.highlightStart = null;\n this.particles = [];\n this.tick();\n }\n };\n requestAnimationFrame(animate);\n };\n\n protected animateZoom = (\n area: HTMLCanvasElement,\n target: ZoomTransform,\n start: ZoomTransform,\n duration: number,\n ) => {\n this._zoomAnimating = true;\n const startTime = performance.now();\n const animate = () => {\n const elapsed = performance.now() - startTime;\n const t = Math.min(elapsed / duration, 1);\n const eased = t < 0.5 ? 4 * t * t * t : 1 - (-2 * t + 2) ** 3 / 2;\n const x = start.x + (target.x - start.x) * eased;\n const y = start.y + (target.y - start.y) * eased;\n const k = start.k + (target.k - start.k) * eased;\n\n this.areaTransform = new ZoomTransform(k, x, y);\n zoom<HTMLCanvasElement, unknown>().transform(d3Select(area), this.areaTransform);\n updateLinkCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n updateNodeCache.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n this.tick();\n\n if (t < 1) {\n requestAnimationFrame(animate);\n } else {\n this._zoomAnimating = false;\n this.clearCache(true);\n this.tick();\n }\n };\n requestAnimationFrame(animate);\n };\n}\n"],"names":["d3Select"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { GraphCanvas } from './GraphCanvas.js';
|
|
2
|
+
import { GRAPH_CACHE_TYPE } from './constants/index.js';
|
|
3
|
+
import { graphSettingsGetter } from './lib/settings/graph-settings-getter.js';
|
|
4
|
+
import { linkSettingsGetter } from './lib/settings/link-settings-getter.js';
|
|
5
|
+
import { nodeSettingsGetter } from './lib/settings/node-settings-getter.js';
|
|
6
|
+
import { highlightSettingsGetter } from './lib/settings/highlight-settings-getter.js';
|
|
7
|
+
import '@krainovsd/js-helpers';
|
|
8
|
+
import 'd3-array';
|
|
9
|
+
import { initArea } from './slices/init-area.js';
|
|
10
|
+
import { initDnd } from './slices/init-dnd.js';
|
|
11
|
+
import { initDraw } from './slices/init-draw.js';
|
|
12
|
+
import { initPointer } from './slices/init-pointer.js';
|
|
13
|
+
import { initResize } from './slices/init-resize.js';
|
|
14
|
+
import { initSelection } from './slices/init-selection.js';
|
|
15
|
+
import 'd3-force';
|
|
16
|
+
import { initZoom } from './slices/init-zoom.js';
|
|
17
|
+
import 'd3-zoom';
|
|
18
|
+
import { updateLinkCache } from './slices/update-link-cache.js';
|
|
19
|
+
import { updateNodeCache } from './slices/update-node-cache.js';
|
|
20
|
+
|
|
21
|
+
class StaticGraphCanvas extends GraphCanvas {
|
|
22
|
+
get simulationWorking() {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
_rafTickId;
|
|
26
|
+
init = () => {
|
|
27
|
+
initArea.call(this);
|
|
28
|
+
updateNodeCache.call(this);
|
|
29
|
+
updateLinkCache.call(this);
|
|
30
|
+
initDnd.call(this, true);
|
|
31
|
+
initZoom.call(this);
|
|
32
|
+
initResize.call(this);
|
|
33
|
+
initSelection.call(this);
|
|
34
|
+
initPointer.call(this);
|
|
35
|
+
updateNodeCache.call(this);
|
|
36
|
+
updateLinkCache.call(this);
|
|
37
|
+
this.fitToView();
|
|
38
|
+
this.tick();
|
|
39
|
+
};
|
|
40
|
+
tick = () => {
|
|
41
|
+
if (this._rafTickId != undefined)
|
|
42
|
+
return;
|
|
43
|
+
this._rafTickId = requestAnimationFrame(() => {
|
|
44
|
+
this._rafTickId = undefined;
|
|
45
|
+
this.draw();
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
restart = () => { };
|
|
49
|
+
changeData = (options, _alpha, clearCache = true) => {
|
|
50
|
+
if (options.links != undefined)
|
|
51
|
+
this.links = options.links;
|
|
52
|
+
if (options.nodes != undefined)
|
|
53
|
+
this.nodes = options.nodes;
|
|
54
|
+
if (options.nodes != undefined || options.links != undefined) {
|
|
55
|
+
this.updateData(undefined, clearCache);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
changeSettings = (options, clearCache = true) => {
|
|
59
|
+
if (options.graphSettings) {
|
|
60
|
+
this.graphSettings = graphSettingsGetter(options.graphSettings, this.graphSettings);
|
|
61
|
+
const draw = initDraw.call(this);
|
|
62
|
+
this.draw = this.initSmartDraw(draw);
|
|
63
|
+
this.instantDraw = draw;
|
|
64
|
+
initZoom.call(this, this.areaTransform);
|
|
65
|
+
}
|
|
66
|
+
if (options.highlightSettings) {
|
|
67
|
+
this.highlightSettings = highlightSettingsGetter(options.highlightSettings, this.highlightSettings);
|
|
68
|
+
if (clearCache === true) {
|
|
69
|
+
this.clearCache([
|
|
70
|
+
GRAPH_CACHE_TYPE.NodeOptions,
|
|
71
|
+
GRAPH_CACHE_TYPE.NodeText,
|
|
72
|
+
GRAPH_CACHE_TYPE.NodeLabel,
|
|
73
|
+
GRAPH_CACHE_TYPE.LinkOptions,
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.clearCache(clearCache);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (options.linkSettings) {
|
|
81
|
+
this.linkSettings = linkSettingsGetter(options.linkSettings, this.linkSettings);
|
|
82
|
+
if (clearCache) {
|
|
83
|
+
this.clearCache([GRAPH_CACHE_TYPE.LinkOptions]);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.clearCache(clearCache);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (options.nodeSettings) {
|
|
90
|
+
this.nodeSettings = nodeSettingsGetter(options.nodeSettings, this.nodeSettings);
|
|
91
|
+
if (clearCache) {
|
|
92
|
+
this.clearCache([
|
|
93
|
+
GRAPH_CACHE_TYPE.NodeOptions,
|
|
94
|
+
GRAPH_CACHE_TYPE.NodeText,
|
|
95
|
+
GRAPH_CACHE_TYPE.NodeLabel,
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.clearCache(clearCache);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
this.tick();
|
|
103
|
+
return undefined;
|
|
104
|
+
};
|
|
105
|
+
destroy = () => {
|
|
106
|
+
if (this._rafTickId != undefined) {
|
|
107
|
+
cancelAnimationFrame(this._rafTickId);
|
|
108
|
+
this._rafTickId = undefined;
|
|
109
|
+
}
|
|
110
|
+
this.clearHTMLElements();
|
|
111
|
+
this.clearState();
|
|
112
|
+
this.clearCache(true);
|
|
113
|
+
};
|
|
114
|
+
updateData = (_alpha, clearCache = true) => {
|
|
115
|
+
if (clearCache) {
|
|
116
|
+
this.clearCache(clearCache);
|
|
117
|
+
}
|
|
118
|
+
updateNodeCache.call(this);
|
|
119
|
+
updateLinkCache.call(this);
|
|
120
|
+
initZoom.call(this, this.areaTransform);
|
|
121
|
+
this.fitToView();
|
|
122
|
+
this.tick();
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export { StaticGraphCanvas };
|
|
127
|
+
//# sourceMappingURL=StaticGraphCanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticGraphCanvas.js","sources":["../../../../src/module/GraphCanvas/StaticGraphCanvas.ts"],"sourcesContent":["import { GraphCanvas } from \"./GraphCanvas\";\nimport { GRAPH_CACHE_TYPE } from \"./constants\";\nimport {\n graphSettingsGetter,\n highlightSettingsGetter,\n linkSettingsGetter,\n nodeSettingsGetter,\n} from \"./lib\";\nimport {\n initArea,\n initDnd,\n initDraw,\n initPointer,\n initResize,\n initSelection,\n initZoom,\n updateLinkCache,\n updateNodeCache,\n} from \"./slices\";\nimport type { GraphCanvasCacheKeys, GraphCanvasInterface } from \"./types\";\n\nexport class StaticGraphCanvas<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n> extends GraphCanvas<NodeData, LinkData> {\n protected override get simulationWorking() {\n return false;\n }\n\n protected _rafTickId: number | undefined;\n\n protected override init = () => {\n initArea.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initArea>,\n ReturnType<typeof initArea>\n >(this);\n updateNodeCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n initDnd.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDnd>,\n ReturnType<typeof initDnd>\n >(this, true);\n initZoom.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this);\n initResize.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initResize>,\n ReturnType<typeof initResize>\n >(this);\n initSelection.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initSelection>,\n ReturnType<typeof initSelection>\n >(this);\n initPointer.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initPointer>,\n ReturnType<typeof initPointer>\n >(this);\n updateNodeCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n this.fitToView();\n this.tick();\n };\n\n override tick = () => {\n if (this._rafTickId != undefined) return;\n this._rafTickId = requestAnimationFrame(() => {\n this._rafTickId = undefined;\n this.draw();\n });\n };\n\n override restart = () => {};\n\n override changeData = (\n options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, \"links\" | \"nodes\">,\n _alpha?: number,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n ) => {\n if (options.links != undefined) this.links = options.links;\n if (options.nodes != undefined) this.nodes = options.nodes;\n if (options.nodes != undefined || options.links != undefined) {\n this.updateData(undefined, clearCache);\n }\n };\n\n override changeSettings = (\n options: Omit<\n Partial<GraphCanvasInterface<NodeData, LinkData>>,\n \"links\" | \"nodes\" | \"listeners\" | \"forceSettings\"\n >,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n ) => {\n if (options.graphSettings) {\n this.graphSettings = graphSettingsGetter(options.graphSettings, this.graphSettings);\n const draw = initDraw.call<\n GraphCanvas<NodeData, LinkData>,\n Parameters<typeof initDraw>,\n ReturnType<typeof initDraw>\n >(this);\n this.draw = this.initSmartDraw(draw);\n this.instantDraw = draw;\n initZoom.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n }\n if (options.highlightSettings) {\n this.highlightSettings = highlightSettingsGetter(\n options.highlightSettings,\n this.highlightSettings,\n );\n\n if (clearCache === true) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n GRAPH_CACHE_TYPE.LinkOptions,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.linkSettings) {\n this.linkSettings = linkSettingsGetter(options.linkSettings, this.linkSettings);\n\n if (clearCache) {\n this.clearCache([GRAPH_CACHE_TYPE.LinkOptions]);\n } else {\n this.clearCache(clearCache);\n }\n }\n if (options.nodeSettings) {\n this.nodeSettings = nodeSettingsGetter(options.nodeSettings, this.nodeSettings);\n\n if (clearCache) {\n this.clearCache([\n GRAPH_CACHE_TYPE.NodeOptions,\n GRAPH_CACHE_TYPE.NodeText,\n GRAPH_CACHE_TYPE.NodeLabel,\n ]);\n } else {\n this.clearCache(clearCache);\n }\n }\n\n this.tick();\n return undefined;\n };\n\n override destroy = () => {\n if (this._rafTickId != undefined) {\n cancelAnimationFrame(this._rafTickId);\n this._rafTickId = undefined;\n }\n this.clearHTMLElements();\n this.clearState();\n this.clearCache(true);\n };\n\n protected override updateData = (\n _alpha?: number,\n clearCache: boolean | GraphCanvasCacheKeys[] = true,\n ) => {\n if (clearCache) {\n this.clearCache(clearCache);\n }\n\n updateNodeCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateNodeCache>,\n ReturnType<typeof updateNodeCache>\n >(this);\n updateLinkCache.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof updateLinkCache>,\n ReturnType<typeof updateLinkCache>\n >(this);\n initZoom.call<\n StaticGraphCanvas<NodeData, LinkData>,\n Parameters<typeof initZoom>,\n ReturnType<typeof initZoom>\n >(this, this.areaTransform);\n this.fitToView();\n this.tick();\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import './force-settings.js';
|
|
2
|
-
import './highlight-settings.js';
|
|
3
|
-
import './link-settings.js';
|
|
4
|
-
import './node-settings.js';
|
|
5
2
|
import '@krainovsd/js-helpers';
|
|
6
3
|
import { dragPlaceCoefficientGetter } from '../lib/utils/drag-place-coefficient-getter.js';
|
|
7
4
|
import 'd3-array';
|
|
5
|
+
import 'd3-force';
|
|
6
|
+
import 'd3-selection';
|
|
7
|
+
import 'd3-zoom';
|
|
8
|
+
import 'd3-drag';
|
|
8
9
|
|
|
9
10
|
const GRAPH_SETTINGS = {
|
|
10
11
|
zoomAnimation: true,
|
|
@@ -20,10 +21,8 @@ const GRAPH_SETTINGS = {
|
|
|
20
21
|
zoomInitial: null,
|
|
21
22
|
showDrawTime: true,
|
|
22
23
|
showDrawTimeEveryTick: false,
|
|
23
|
-
|
|
24
|
-
const PERFORMANCE_GRAPH_SETTINGS = {
|
|
25
|
-
...GRAPH_SETTINGS,
|
|
24
|
+
maxFps: 120,
|
|
26
25
|
};
|
|
27
26
|
|
|
28
|
-
export { GRAPH_SETTINGS
|
|
27
|
+
export { GRAPH_SETTINGS };
|
|
29
28
|
//# sourceMappingURL=graph-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/graph-settings.ts"],"sourcesContent":["import { dragPlaceCoefficientGetter } from \"../lib\";\nimport type { GraphSettingsInterface } from \"../types/graph-settings\";\n\nexport const GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>> = {\n zoomAnimation: true,\n zoomAnimationDuration: 300,\n zoomToNodeScale: 5,\n zoomToFitMargin: 0.25,\n zoomExtent: null,\n zoomExtentMargin: 0.3,\n translateExtent: null,\n translateExtentCoefficient: null,\n translateExtentOverlap: 0.3,\n dragPlaceCoefficient: dragPlaceCoefficientGetter,\n zoomInitial: null,\n showDrawTime: true,\n showDrawTimeEveryTick: false,\n
|
|
1
|
+
{"version":3,"file":"graph-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/graph-settings.ts"],"sourcesContent":["import { dragPlaceCoefficientGetter } from \"../lib\";\nimport type { GraphSettingsInterface } from \"../types/graph-settings\";\n\nexport const GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>> = {\n zoomAnimation: true,\n zoomAnimationDuration: 300,\n zoomToNodeScale: 5,\n zoomToFitMargin: 0.25,\n zoomExtent: null,\n zoomExtentMargin: 0.3,\n translateExtent: null,\n translateExtentCoefficient: null,\n translateExtentOverlap: 0.3,\n dragPlaceCoefficient: dragPlaceCoefficientGetter,\n zoomInitial: null,\n showDrawTime: true,\n showDrawTimeEveryTick: false,\n maxFps: 120,\n};\n"],"names":[],"mappings":";;;;;;;;;AAGa,MAAA,cAAc,GAA8D;AACvF,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,qBAAqB,EAAE,GAAG;AAC1B,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,gBAAgB,EAAE,GAAG;AACrB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,0BAA0B,EAAE,IAAI;AAChC,IAAA,sBAAsB,EAAE,GAAG;AAC3B,IAAA,oBAAoB,EAAE,0BAA0B;AAChD,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,qBAAqB,EAAE,KAAK;AAC5B,IAAA,MAAM,EAAE,GAAG;;;;;"}
|
|
@@ -56,9 +56,6 @@ const HIGHLIGHT_SETTINGS = {
|
|
|
56
56
|
highlightByLinkForArrowBorderColor: null,
|
|
57
57
|
highlightByLinkForArrowBorderSizingAdditional: 0,
|
|
58
58
|
};
|
|
59
|
-
const PERFORMANCE_HIGHLIGHT_SETTINGS = {
|
|
60
|
-
...HIGHLIGHT_SETTINGS,
|
|
61
|
-
};
|
|
62
59
|
|
|
63
|
-
export { HIGHLIGHT_SETTINGS
|
|
60
|
+
export { HIGHLIGHT_SETTINGS };
|
|
64
61
|
//# sourceMappingURL=highlight-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/highlight-settings.ts"],"sourcesContent":["import type { HighlightSettingsInterface } from \"../types/highlight-settings\";\n\nexport const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface> = {\n highlightByHoverNode: true,\n highlightByHoverLink: true,\n highlightDuration: 150,\n linkHoverExtraZone: 2,\n /** Node */\n highlightByNodeOnlyRoot: true,\n highlightByNodeForNodeColorFading: false,\n highlightByNodeForNodeColor: null,\n highlightByNodeForNodeSizingAdditional: 0.5,\n highlightByNodeForNodeSizingAdditionalCoefficient: 0.35,\n highlightByNodeForNodeFadingMin: 0.21,\n highlightByNodeForNodeBorderColor: null,\n highlightByNodeForNodeBorderSizingAdditional: 0,\n\n highlightByLinkForNodeColorFading: false,\n highlightByLinkForNodeColor: null,\n highlightByLinkForNodeSizingAdditional: 0.5,\n highlightByLinkForNodeSizingAdditionalCoefficient: 0.35,\n highlightByLinkForNodeFadingMin: 0.21,\n highlightByLinkForNodeBorderColor: null,\n highlightByLinkForNodeBorderSizingAdditional: 0,\n /** Text */\n highlightByNodeForTextShiftXAdditional: 0,\n highlightByNodeForTextShiftYAdditional: 2,\n highlightByNodeForTextSizingAdditional: 1,\n highlightByNodeForTextWeightAdditional: 0,\n highlightByNodeForTextFadingMin: 0.21,\n\n highlightByLinkForTextShiftXAdditional: 0,\n highlightByLinkForTextShiftYAdditional: 2,\n highlightByLinkForTextSizingAdditional: 1,\n highlightByLinkForTextWeightAdditional: 0,\n highlightByLinkForTextFadingMin: 0.21,\n /** Label */\n highlightByNodeForLabelFadingMin: 0.21,\n highlightByNodeForLabelSizingAdditional: 1,\n highlightByNodeForLabelWeightAdditional: 0,\n\n highlightByLinkForLabelFadingMin: 0.21,\n highlightByLinkForLabelSizingAdditional: 1,\n highlightByLinkForLabelWeightAdditional: 0,\n /** Link */\n highlightByNodeForLinkFadingMin: 0.21,\n highlightByNodeForLinkSizeAdditional: 0,\n highlightByNodeForLinkColor: null,\n\n highlightByLinkForLinkFadingMin: 0.21,\n highlightByLinkForLinkSizeAdditional: 0,\n highlightByLinkForLinkColor: null,\n /** Arrow */\n highlightByNodeForArrowFadingMin: 0.21,\n highlightByNodeForArrowSizeAdditional: 0,\n highlightByNodeForArrowColor: null,\n highlightByNodeForArrowBorderColor: null,\n highlightByNodeForArrowBorderSizingAdditional: 0,\n\n highlightByLinkForArrowFadingMin: 0.21,\n highlightByLinkForArrowSizeAdditional: 0,\n highlightByLinkForArrowColor: null,\n highlightByLinkForArrowBorderColor: null,\n highlightByLinkForArrowBorderSizingAdditional: 0,\n};\n
|
|
1
|
+
{"version":3,"file":"highlight-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/highlight-settings.ts"],"sourcesContent":["import type { HighlightSettingsInterface } from \"../types/highlight-settings\";\n\nexport const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface> = {\n highlightByHoverNode: true,\n highlightByHoverLink: true,\n highlightDuration: 150,\n linkHoverExtraZone: 2,\n /** Node */\n highlightByNodeOnlyRoot: true,\n highlightByNodeForNodeColorFading: false,\n highlightByNodeForNodeColor: null,\n highlightByNodeForNodeSizingAdditional: 0.5,\n highlightByNodeForNodeSizingAdditionalCoefficient: 0.35,\n highlightByNodeForNodeFadingMin: 0.21,\n highlightByNodeForNodeBorderColor: null,\n highlightByNodeForNodeBorderSizingAdditional: 0,\n\n highlightByLinkForNodeColorFading: false,\n highlightByLinkForNodeColor: null,\n highlightByLinkForNodeSizingAdditional: 0.5,\n highlightByLinkForNodeSizingAdditionalCoefficient: 0.35,\n highlightByLinkForNodeFadingMin: 0.21,\n highlightByLinkForNodeBorderColor: null,\n highlightByLinkForNodeBorderSizingAdditional: 0,\n /** Text */\n highlightByNodeForTextShiftXAdditional: 0,\n highlightByNodeForTextShiftYAdditional: 2,\n highlightByNodeForTextSizingAdditional: 1,\n highlightByNodeForTextWeightAdditional: 0,\n highlightByNodeForTextFadingMin: 0.21,\n\n highlightByLinkForTextShiftXAdditional: 0,\n highlightByLinkForTextShiftYAdditional: 2,\n highlightByLinkForTextSizingAdditional: 1,\n highlightByLinkForTextWeightAdditional: 0,\n highlightByLinkForTextFadingMin: 0.21,\n /** Label */\n highlightByNodeForLabelFadingMin: 0.21,\n highlightByNodeForLabelSizingAdditional: 1,\n highlightByNodeForLabelWeightAdditional: 0,\n\n highlightByLinkForLabelFadingMin: 0.21,\n highlightByLinkForLabelSizingAdditional: 1,\n highlightByLinkForLabelWeightAdditional: 0,\n /** Link */\n highlightByNodeForLinkFadingMin: 0.21,\n highlightByNodeForLinkSizeAdditional: 0,\n highlightByNodeForLinkColor: null,\n\n highlightByLinkForLinkFadingMin: 0.21,\n highlightByLinkForLinkSizeAdditional: 0,\n highlightByLinkForLinkColor: null,\n /** Arrow */\n highlightByNodeForArrowFadingMin: 0.21,\n highlightByNodeForArrowSizeAdditional: 0,\n highlightByNodeForArrowColor: null,\n highlightByNodeForArrowBorderColor: null,\n highlightByNodeForArrowBorderSizingAdditional: 0,\n\n highlightByLinkForArrowFadingMin: 0.21,\n highlightByLinkForArrowSizeAdditional: 0,\n highlightByLinkForArrowColor: null,\n highlightByLinkForArrowBorderColor: null,\n highlightByLinkForArrowBorderSizingAdditional: 0,\n};\n"],"names":[],"mappings":"AAEa,MAAA,kBAAkB,GAAyC;AACtE,IAAA,oBAAoB,EAAE,IAAI;AAC1B,IAAA,oBAAoB,EAAE,IAAI;AAC1B,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,kBAAkB,EAAE,CAAC;;AAErB,IAAA,uBAAuB,EAAE,IAAI;AAC7B,IAAA,iCAAiC,EAAE,KAAK;AACxC,IAAA,2BAA2B,EAAE,IAAI;AACjC,IAAA,sCAAsC,EAAE,GAAG;AAC3C,IAAA,iDAAiD,EAAE,IAAI;AACvD,IAAA,+BAA+B,EAAE,IAAI;AACrC,IAAA,iCAAiC,EAAE,IAAI;AACvC,IAAA,4CAA4C,EAAE,CAAC;AAE/C,IAAA,iCAAiC,EAAE,KAAK;AACxC,IAAA,2BAA2B,EAAE,IAAI;AACjC,IAAA,sCAAsC,EAAE,GAAG;AAC3C,IAAA,iDAAiD,EAAE,IAAI;AACvD,IAAA,+BAA+B,EAAE,IAAI;AACrC,IAAA,iCAAiC,EAAE,IAAI;AACvC,IAAA,4CAA4C,EAAE,CAAC;;AAE/C,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,+BAA+B,EAAE,IAAI;AAErC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,sCAAsC,EAAE,CAAC;AACzC,IAAA,+BAA+B,EAAE,IAAI;;AAErC,IAAA,gCAAgC,EAAE,IAAI;AACtC,IAAA,uCAAuC,EAAE,CAAC;AAC1C,IAAA,uCAAuC,EAAE,CAAC;AAE1C,IAAA,gCAAgC,EAAE,IAAI;AACtC,IAAA,uCAAuC,EAAE,CAAC;AAC1C,IAAA,uCAAuC,EAAE,CAAC;;AAE1C,IAAA,+BAA+B,EAAE,IAAI;AACrC,IAAA,oCAAoC,EAAE,CAAC;AACvC,IAAA,2BAA2B,EAAE,IAAI;AAEjC,IAAA,+BAA+B,EAAE,IAAI;AACrC,IAAA,oCAAoC,EAAE,CAAC;AACvC,IAAA,2BAA2B,EAAE,IAAI;;AAEjC,IAAA,gCAAgC,EAAE,IAAI;AACtC,IAAA,qCAAqC,EAAE,CAAC;AACxC,IAAA,4BAA4B,EAAE,IAAI;AAClC,IAAA,kCAAkC,EAAE,IAAI;AACxC,IAAA,6CAA6C,EAAE,CAAC;AAEhD,IAAA,gCAAgC,EAAE,IAAI;AACtC,IAAA,qCAAqC,EAAE,CAAC;AACxC,IAAA,4BAA4B,EAAE,IAAI;AAClC,IAAA,kCAAkC,EAAE,IAAI;AACxC,IAAA,6CAA6C,EAAE,CAAC;;;;;"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { FORCE_SETTINGS, PERFORMANCE_FORCE_SETTINGS } from './force-settings.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import '@krainovsd/js-helpers';
|
|
3
|
+
import 'd3-array';
|
|
4
|
+
import 'd3-force';
|
|
5
|
+
import 'd3-selection';
|
|
6
|
+
import 'd3-zoom';
|
|
7
|
+
import 'd3-drag';
|
|
6
8
|
|
|
7
9
|
const GRAPH_CACHE_TYPE = {
|
|
8
10
|
NodeOptions: "nodeOptions",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/module/GraphCanvas/constants/index.ts"],"sourcesContent":["export * from \"./common-settings\";\nexport * from \"./force-settings\";\nexport * from \"./graph-settings\";\nexport * from \"./highlight-settings\";\nexport * from \"./link-settings\";\nexport * from \"./node-settings\";\n\nexport const GRAPH_CACHE_TYPE = {\n NodeOptions: \"nodeOptions\",\n LinkOptions: \"linkOptions\",\n NodeText: \"nodeText\",\n NodeLabel: \"nodeLabel\",\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/module/GraphCanvas/constants/index.ts"],"sourcesContent":["export * from \"./common-settings\";\nexport * from \"./force-settings\";\nexport * from \"./graph-settings\";\nexport * from \"./highlight-settings\";\nexport * from \"./link-settings\";\nexport * from \"./node-settings\";\n\nexport const GRAPH_CACHE_TYPE = {\n NodeOptions: \"nodeOptions\",\n LinkOptions: \"linkOptions\",\n NodeText: \"nodeText\",\n NodeLabel: \"nodeLabel\",\n} as const;\n"],"names":[],"mappings":";;;;;;;;AAOa,MAAA,gBAAgB,GAAG;AAC9B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,SAAS,EAAE,WAAW;;;;;"}
|
|
@@ -27,14 +27,6 @@ const LINK_OPTIONS = {
|
|
|
27
27
|
particleBorderWidth: 0.1,
|
|
28
28
|
particleRadius: 0.5,
|
|
29
29
|
};
|
|
30
|
-
const PERFORMANCE_LINK_SETTINGS = {
|
|
31
|
-
...LINK_SETTINGS,
|
|
32
|
-
particles: false,
|
|
33
|
-
prettyDraw: false,
|
|
34
|
-
};
|
|
35
|
-
const PERFORMANCE_LINK_OPTIONS = {
|
|
36
|
-
...LINK_OPTIONS,
|
|
37
|
-
};
|
|
38
30
|
|
|
39
|
-
export { LINK_OPTIONS, LINK_SETTINGS
|
|
31
|
+
export { LINK_OPTIONS, LINK_SETTINGS };
|
|
40
32
|
//# sourceMappingURL=link-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/link-settings.ts"],"sourcesContent":["import type { LinkOptionsInterface, LinkSettingsInterface } from \"../types/link-settings\";\n\nexport const LINK_SETTINGS: Omit<\n Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"options\"\n> = {\n smartCache: true,\n prettyDraw: true,\n curve: true,\n linkScaleSwitch: 1,\n linkColorAfterScaleSwitch: \"#C5C5C5FF\",\n linkColorBeforeScaleSwitch: \"#999\",\n linkWidthAfterScaleSwitch: 0.1,\n linkWidthBeforeScaleSwitch: 1,\n arrow: true,\n arrowByHighlight: true,\n particles: true,\n // spawn one more particle for N px\n particleCountByDistance: 25,\n // speed for 1px\n particleSpeedByDistance: 50,\n};\n\nexport const LINK_OPTIONS: Omit<\n Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"color\" | \"width\" | \"drawLink\" | \"drawExtraLink\" | \"arrowColor\"\n> = {\n alpha: 1,\n arrowAlpha: 1,\n arrowSize: 2,\n arrowBorderColor: \"#C5C5C5FF\",\n arrowBorderWidth: 0.1,\n particleAlpha: 1,\n particleColor: \"#C5C5C5FF\",\n particleBorderColor: \"#C5C5C5FF\",\n particleBorderWidth: 0.1,\n particleRadius: 0.5,\n};\n
|
|
1
|
+
{"version":3,"file":"link-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/link-settings.ts"],"sourcesContent":["import type { LinkOptionsInterface, LinkSettingsInterface } from \"../types/link-settings\";\n\nexport const LINK_SETTINGS: Omit<\n Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"options\"\n> = {\n smartCache: true,\n prettyDraw: true,\n curve: true,\n linkScaleSwitch: 1,\n linkColorAfterScaleSwitch: \"#C5C5C5FF\",\n linkColorBeforeScaleSwitch: \"#999\",\n linkWidthAfterScaleSwitch: 0.1,\n linkWidthBeforeScaleSwitch: 1,\n arrow: true,\n arrowByHighlight: true,\n particles: true,\n // spawn one more particle for N px\n particleCountByDistance: 25,\n // speed for 1px\n particleSpeedByDistance: 50,\n};\n\nexport const LINK_OPTIONS: Omit<\n Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"color\" | \"width\" | \"drawLink\" | \"drawExtraLink\" | \"arrowColor\"\n> = {\n alpha: 1,\n arrowAlpha: 1,\n arrowSize: 2,\n arrowBorderColor: \"#C5C5C5FF\",\n arrowBorderWidth: 0.1,\n particleAlpha: 1,\n particleColor: \"#C5C5C5FF\",\n particleBorderColor: \"#C5C5C5FF\",\n particleBorderWidth: 0.1,\n particleRadius: 0.5,\n};\n"],"names":[],"mappings":"AAEa,MAAA,aAAa,GAGtB;AACF,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,yBAAyB,EAAE,WAAW;AACtC,IAAA,0BAA0B,EAAE,MAAM;AAClC,IAAA,yBAAyB,EAAE,GAAG;AAC9B,IAAA,0BAA0B,EAAE,CAAC;AAC7B,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,SAAS,EAAE,IAAI;;AAEf,IAAA,uBAAuB,EAAE,EAAE;;AAE3B,IAAA,uBAAuB,EAAE,EAAE;;AAGhB,MAAA,YAAY,GAGrB;AACF,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,gBAAgB,EAAE,WAAW;AAC7B,IAAA,gBAAgB,EAAE,GAAG;AACrB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,aAAa,EAAE,WAAW;AAC1B,IAAA,mBAAmB,EAAE,WAAW;AAChC,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,cAAc,EAAE,GAAG;;;;;"}
|
|
@@ -41,7 +41,6 @@ const NODE_OPTIONS = {
|
|
|
41
41
|
textStyle: "normal",
|
|
42
42
|
textWeight: 500,
|
|
43
43
|
textGap: 0,
|
|
44
|
-
label: null,
|
|
45
44
|
labelAlpha: 1,
|
|
46
45
|
labelAlign: "center",
|
|
47
46
|
labelColor: "#ffffff",
|
|
@@ -52,14 +51,6 @@ const NODE_OPTIONS = {
|
|
|
52
51
|
labelWeight: 500,
|
|
53
52
|
labelWidth: 20,
|
|
54
53
|
};
|
|
55
|
-
const PERFORMANCE_NODE_SETTINGS = {
|
|
56
|
-
...NODE_SETTINGS,
|
|
57
|
-
nodeRadiusFlexible: false,
|
|
58
|
-
nodeSizeFlexible: false,
|
|
59
|
-
};
|
|
60
|
-
const PERFOMANCE_NODE_OPTIONS = {
|
|
61
|
-
...NODE_OPTIONS,
|
|
62
|
-
};
|
|
63
54
|
|
|
64
|
-
export { NODE_OPTIONS, NODE_SETTINGS
|
|
55
|
+
export { NODE_OPTIONS, NODE_SETTINGS };
|
|
65
56
|
//# sourceMappingURL=node-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/node-settings.ts"],"sourcesContent":["import type { NodeOptionsInterface, NodeSettingsInterface } from \"../types/node-settings\";\n\nexport const NODE_SETTINGS: Omit<\n Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"options\" | \"idGetter\"\n> = {\n smartCache: true,\n textScaleSteps: [],\n nodeRadiusFlexible: true,\n nodeRadiusLinkCountForStep: 5,\n nodeRadiusIncrementByStep: 1,\n nodeRadiusMaxLinearSteps: 5,\n nodeRadiusLinkCountDividerForLog: 25,\n nodeRadiusLogFactor: 2.5,\n nodeSizeFlexible: true,\n nodeSizeLinkCountForStep: 5,\n nodeSizeIncrementByStep: 0.1,\n nodeSizeMaxLinearSteps: 5,\n nodeSizeLinkCountDividerForLog: 25,\n nodeSizeLogFactor: 2.5,\n textScaleMin: 1.5,\n textScaleMax: 18,\n textSizeMin: 3.5,\n textSizeMax: 1.5,\n textShiftYMin: 4,\n textShiftYMax: 2.5,\n textNodeDebug: false,\n};\n\nexport const NODE_OPTIONS: Omit<\n Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>,\n | \"color\"\n | \"text\"\n | \"textVisible\"\n | \"textSize\"\n | \"textShiftY\"\n | \"nodeDraw\"\n | \"nodeExtraDraw\"\n | \"textDraw\"\n | \"textExtraDraw\"\n> = {\n shape: \"circle\",\n height: 10,\n width: 15,\n borderRadius: 0,\n radius: 4,\n alpha: 1,\n labelXPadding: 1,\n labelYPadding: 1,\n borderWidth: 0.1,\n borderColor: \"#000000FF\",\n textAlpha: 1,\n textWidth: 20,\n textShiftX: 0,\n textFont: \"Arial\",\n textAlign: \"center\" as CanvasTextAlign,\n textColor: \"#d2d2d2\",\n textStyle: \"normal\",\n textWeight: 500,\n textGap: 0,\n
|
|
1
|
+
{"version":3,"file":"node-settings.js","sources":["../../../../../src/module/GraphCanvas/constants/node-settings.ts"],"sourcesContent":["import type { NodeOptionsInterface, NodeSettingsInterface } from \"../types/node-settings\";\n\nexport const NODE_SETTINGS: Omit<\n Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>,\n \"options\" | \"idGetter\" | \"text\" | \"label\"\n> = {\n smartCache: true,\n textScaleSteps: [],\n nodeRadiusFlexible: true,\n nodeRadiusLinkCountForStep: 5,\n nodeRadiusIncrementByStep: 1,\n nodeRadiusMaxLinearSteps: 5,\n nodeRadiusLinkCountDividerForLog: 25,\n nodeRadiusLogFactor: 2.5,\n nodeSizeFlexible: true,\n nodeSizeLinkCountForStep: 5,\n nodeSizeIncrementByStep: 0.1,\n nodeSizeMaxLinearSteps: 5,\n nodeSizeLinkCountDividerForLog: 25,\n nodeSizeLogFactor: 2.5,\n textScaleMin: 1.5,\n textScaleMax: 18,\n textSizeMin: 3.5,\n textSizeMax: 1.5,\n textShiftYMin: 4,\n textShiftYMax: 2.5,\n textNodeDebug: false,\n};\n\nexport const NODE_OPTIONS: Omit<\n Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>,\n | \"color\"\n | \"text\"\n | \"textVisible\"\n | \"textSize\"\n | \"textShiftY\"\n | \"nodeDraw\"\n | \"nodeExtraDraw\"\n | \"textDraw\"\n | \"textExtraDraw\"\n> = {\n shape: \"circle\",\n height: 10,\n width: 15,\n borderRadius: 0,\n radius: 4,\n alpha: 1,\n labelXPadding: 1,\n labelYPadding: 1,\n borderWidth: 0.1,\n borderColor: \"#000000FF\",\n textAlpha: 1,\n textWidth: 20,\n textShiftX: 0,\n textFont: \"Arial\",\n textAlign: \"center\" as CanvasTextAlign,\n textColor: \"#d2d2d2\",\n textStyle: \"normal\",\n textWeight: 500,\n textGap: 0,\n labelAlpha: 1,\n labelAlign: \"center\",\n labelColor: \"#ffffff\",\n labelFont: \"Arial\",\n labelGap: 0,\n labelSize: 3.5,\n labelStyle: \"normal\",\n labelWeight: 500,\n labelWidth: 20,\n};\n"],"names":[],"mappings":"AAEa,MAAA,aAAa,GAGtB;AACF,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,0BAA0B,EAAE,CAAC;AAC7B,IAAA,yBAAyB,EAAE,CAAC;AAC5B,IAAA,wBAAwB,EAAE,CAAC;AAC3B,IAAA,gCAAgC,EAAE,EAAE;AACpC,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,wBAAwB,EAAE,CAAC;AAC3B,IAAA,uBAAuB,EAAE,GAAG;AAC5B,IAAA,sBAAsB,EAAE,CAAC;AACzB,IAAA,8BAA8B,EAAE,EAAE;AAClC,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,aAAa,EAAE,KAAK;;AAGT,MAAA,YAAY,GAWrB;AACF,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,SAAS,EAAE,QAA2B;AACtC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,UAAU,EAAE,EAAE;;;;;"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { FORCE_SETTINGS } from '../../constants/force-settings.js';
|
|
2
|
-
import '
|
|
3
|
-
import '
|
|
4
|
-
import '
|
|
5
|
-
import '
|
|
2
|
+
import '@krainovsd/js-helpers';
|
|
3
|
+
import 'd3-array';
|
|
4
|
+
import 'd3-force';
|
|
5
|
+
import 'd3-selection';
|
|
6
|
+
import 'd3-zoom';
|
|
7
|
+
import 'd3-drag';
|
|
6
8
|
|
|
7
9
|
function forceSettingsGetter(settings, prevSettings) {
|
|
8
10
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/force-settings-getter.ts"],"sourcesContent":["import { FORCE_SETTINGS } from \"../../constants\";\nimport type { ForceSettingsInterface } from \"../../types\";\n\nexport function forceSettingsGetter<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(\n settings: ForceSettingsInterface<NodeData, LinkData> | undefined,\n prevSettings?: Required<ForceSettingsInterface<NodeData, LinkData>>,\n): Required<ForceSettingsInterface<NodeData, LinkData>> {\n return {\n ...(prevSettings ?? (FORCE_SETTINGS as Required<ForceSettingsInterface<NodeData, LinkData>>)),\n ...settings,\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"force-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/force-settings-getter.ts"],"sourcesContent":["import { FORCE_SETTINGS } from \"../../constants\";\nimport type { ForceSettingsInterface } from \"../../types\";\n\nexport function forceSettingsGetter<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(\n settings: ForceSettingsInterface<NodeData, LinkData> | undefined,\n prevSettings?: Required<ForceSettingsInterface<NodeData, LinkData>>,\n): Required<ForceSettingsInterface<NodeData, LinkData>> {\n return {\n ...(prevSettings ?? (FORCE_SETTINGS as Required<ForceSettingsInterface<NodeData, LinkData>>)),\n ...settings,\n };\n}\n"],"names":[],"mappings":";;;;;;;;AAGgB,SAAA,mBAAmB,CAIjC,QAAgE,EAChE,YAAmE,EAAA;IAEnE,OAAO;AACL,QAAA,IAAI,YAAY,IAAK,cAAuE,CAAC;AAC7F,QAAA,GAAG,QAAQ;KACZ;AACH;;;;"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import '../../constants/force-settings.js';
|
|
2
2
|
import { GRAPH_SETTINGS } from '../../constants/graph-settings.js';
|
|
3
|
-
import '../../constants/highlight-settings.js';
|
|
4
|
-
import '../../constants/link-settings.js';
|
|
5
|
-
import '../../constants/node-settings.js';
|
|
6
3
|
|
|
7
4
|
function graphSettingsGetter(settings, prevSettings) {
|
|
8
5
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/graph-settings-getter.ts"],"sourcesContent":["import { GRAPH_SETTINGS } from \"../../constants\";\nimport type { GraphSettingsInterface } from \"../../types/graph-settings\";\n\nexport function graphSettingsGetter<NodeData extends Record<string, unknown>>(\n settings: GraphSettingsInterface<NodeData> | undefined,\n prevSettings?: Required<GraphSettingsInterface<NodeData>>,\n): Required<GraphSettingsInterface<NodeData>> {\n return {\n ...(prevSettings ?? GRAPH_SETTINGS),\n ...settings,\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/graph-settings-getter.ts"],"sourcesContent":["import { GRAPH_SETTINGS } from \"../../constants\";\nimport type { GraphSettingsInterface } from \"../../types/graph-settings\";\n\nexport function graphSettingsGetter<NodeData extends Record<string, unknown>>(\n settings: GraphSettingsInterface<NodeData> | undefined,\n prevSettings?: Required<GraphSettingsInterface<NodeData>>,\n): Required<GraphSettingsInterface<NodeData>> {\n return {\n ...(prevSettings ?? GRAPH_SETTINGS),\n ...settings,\n };\n}\n"],"names":[],"mappings":";;;AAGgB,SAAA,mBAAmB,CACjC,QAAsD,EACtD,YAAyD,EAAA;IAEzD,OAAO;AACL,QAAA,IAAI,YAAY,IAAI,cAAc,CAAC;AACnC,QAAA,GAAG,QAAQ;KACZ;AACH;;;;"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import '../../constants/force-settings.js';
|
|
2
|
-
import '
|
|
2
|
+
import '@krainovsd/js-helpers';
|
|
3
|
+
import 'd3-array';
|
|
4
|
+
import 'd3-force';
|
|
5
|
+
import 'd3-selection';
|
|
6
|
+
import 'd3-zoom';
|
|
7
|
+
import 'd3-drag';
|
|
3
8
|
import { HIGHLIGHT_SETTINGS } from '../../constants/highlight-settings.js';
|
|
4
|
-
import '../../constants/link-settings.js';
|
|
5
|
-
import '../../constants/node-settings.js';
|
|
6
9
|
|
|
7
10
|
function highlightSettingsGetter(settings, prevSettings) {
|
|
8
11
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/highlight-settings-getter.ts"],"sourcesContent":["import { HIGHLIGHT_SETTINGS } from \"../../constants\";\nimport type { HighlightSettingsInterface } from \"../../types\";\n\nexport function highlightSettingsGetter(\n settings: HighlightSettingsInterface | undefined,\n prevSettings?: Required<HighlightSettingsInterface>,\n): Required<HighlightSettingsInterface> {\n return {\n ...(prevSettings ?? HIGHLIGHT_SETTINGS),\n ...settings,\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"highlight-settings-getter.js","sources":["../../../../../../src/module/GraphCanvas/lib/settings/highlight-settings-getter.ts"],"sourcesContent":["import { HIGHLIGHT_SETTINGS } from \"../../constants\";\nimport type { HighlightSettingsInterface } from \"../../types\";\n\nexport function highlightSettingsGetter(\n settings: HighlightSettingsInterface | undefined,\n prevSettings?: Required<HighlightSettingsInterface>,\n): Required<HighlightSettingsInterface> {\n return {\n ...(prevSettings ?? HIGHLIGHT_SETTINGS),\n ...settings,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;AAGgB,SAAA,uBAAuB,CACrC,QAAgD,EAChD,YAAmD,EAAA;IAEnD,OAAO;AACL,QAAA,IAAI,YAAY,IAAI,kBAAkB,CAAC;AACvC,QAAA,GAAG,QAAQ;KACZ;AACH;;;;"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import '../../constants/force-settings.js';
|
|
2
|
-
import '
|
|
3
|
-
import '
|
|
2
|
+
import '@krainovsd/js-helpers';
|
|
3
|
+
import 'd3-array';
|
|
4
|
+
import 'd3-force';
|
|
5
|
+
import 'd3-selection';
|
|
6
|
+
import 'd3-zoom';
|
|
7
|
+
import 'd3-drag';
|
|
4
8
|
import { LINK_SETTINGS, LINK_OPTIONS } from '../../constants/link-settings.js';
|
|
5
|
-
import '../../constants/node-settings.js';
|
|
6
9
|
|
|
7
10
|
function linkSettingsGetter(settings, prevSettings) {
|
|
8
11
|
return { ...(prevSettings ?? LINK_SETTINGS), ...settings };
|