@krainovsd/graph 0.13.0-beta1 → 0.13.0-beta3

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":"draw-links.js","sources":["../../../../../src/module/GraphCanvas/slices/draw-links.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\nimport { calculateLinkPositionByNode, getParticlePosition, linkFade, linkHighlight } from \"../lib\";\nimport type { LinkInterface, LinkParticle } from \"../types\";\n\nexport function getDrawLink<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>() {\n return function drawLink(\n this: GraphCanvas<NodeData, LinkData>,\n link: LinkInterface<NodeData, LinkData>,\n ) {\n if (\n !this.context ||\n typeof link.source !== \"object\" ||\n typeof link.target !== \"object\" ||\n !link.source.x ||\n !link.source.y ||\n !link.target.x ||\n !link.target.y\n )\n return;\n\n if (\n (link.visible != undefined && !link.visible) ||\n (link.source.visible != undefined && !link.source.visible) ||\n (link.target.visible != undefined && !link.target.visible)\n )\n return;\n\n if (!link.source._visible && !link.target._visible) return;\n\n const id = `${link.target.id}${link.source.id}`;\n const linkOptions = this.linkOptionsCache[id];\n if (!linkOptions) return;\n\n if (linkOptions.drawLink) {\n linkOptions.drawLink.call(this, link, linkOptions);\n\n return;\n }\n\n let alpha = linkOptions.alpha;\n let color = linkOptions.color;\n let width = linkOptions.width;\n let arrowAlpha = this.linkSettings.arrowByHighlight ? 0 : linkOptions.arrowAlpha;\n let arrowColor = linkOptions.arrowColor;\n let arrowSize = linkOptions.arrowSize;\n let arrowBorderWidth = linkOptions.arrowBorderWidth;\n let arrowBorderColor = linkOptions.arrowBorderColor;\n\n /** Highlight */\n if (this.highlightedNeighbors && this.highlightedNode) {\n /** By Node Not Highlight */\n if (this.highlightedNode.id != link.source.id && this.highlightedNode.id != link.target.id) {\n const fadeOptions = linkFade({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowFadingMin: this.highlightSettings.highlightByNodeForArrowFadingMin,\n highlightForLinkFadingMin: this.highlightSettings.highlightByNodeForLinkFadingMin,\n });\n alpha = fadeOptions.alpha;\n arrowAlpha = fadeOptions.arrowAlpha;\n } else {\n const highlightOptions = linkHighlight({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowBorderColor: this.highlightSettings.highlightByNodeForArrowBorderColor,\n highlightForArrowBorderSizingAdditional:\n this.highlightSettings.highlightByNodeForArrowBorderSizingAdditional,\n highlightForArrowColor: this.highlightSettings.highlightByNodeForArrowColor,\n highlightForArrowSizeAdditional:\n this.highlightSettings.highlightByNodeForArrowSizeAdditional,\n highlightForLinkColor: this.highlightSettings.highlightByNodeForLinkColor,\n highlightForLinkSizeAdditional:\n this.highlightSettings.highlightByNodeForLinkSizeAdditional,\n });\n arrowAlpha = highlightOptions.arrowAlpha;\n color = highlightOptions.color;\n width = highlightOptions.width;\n arrowColor = highlightOptions.arrowColor;\n arrowSize = highlightOptions.arrowSize;\n arrowBorderWidth = highlightOptions.arrowBorderWidth;\n arrowBorderColor = highlightOptions.arrowBorderColor;\n }\n }\n if (this.highlightedNeighbors && this.highlightedLink) {\n /** By Link Not Highlight */\n if (this.highlightedLink !== link) {\n const fadeOptions = linkFade({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowFadingMin: this.highlightSettings.highlightByLinkForArrowFadingMin,\n highlightForLinkFadingMin: this.highlightSettings.highlightByLinkForLinkFadingMin,\n });\n alpha = fadeOptions.alpha;\n arrowAlpha = fadeOptions.arrowAlpha;\n } else {\n /** By Link Highlight */\n const highlightOptions = linkHighlight({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowBorderColor: this.highlightSettings.highlightByLinkForArrowBorderColor,\n highlightForArrowBorderSizingAdditional:\n this.highlightSettings.highlightByLinkForArrowBorderSizingAdditional,\n highlightForArrowColor: this.highlightSettings.highlightByLinkForArrowColor,\n highlightForArrowSizeAdditional:\n this.highlightSettings.highlightByLinkForArrowSizeAdditional,\n highlightForLinkColor: this.highlightSettings.highlightByLinkForLinkColor,\n highlightForLinkSizeAdditional:\n this.highlightSettings.highlightByLinkForLinkSizeAdditional,\n });\n arrowAlpha = highlightOptions.arrowAlpha;\n color = highlightOptions.color;\n width = highlightOptions.width;\n arrowColor = highlightOptions.arrowColor;\n arrowSize = highlightOptions.arrowSize;\n arrowBorderWidth = highlightOptions.arrowBorderWidth;\n arrowBorderColor = highlightOptions.arrowBorderColor;\n }\n }\n\n /** Link */\n this.context.beginPath();\n\n this.context.globalAlpha = alpha;\n this.context.strokeStyle = color;\n this.context.lineWidth = width;\n\n let xStart = link.source.x;\n let yStart = link.source.y;\n let xEnd = link.target.x;\n let yEnd = link.target.y;\n let linkDistance = 0;\n if (\n this.linkSettings.prettyDraw ||\n this.linkSettings.particleFlexSpeed ||\n (this.linkSettings.arrow && arrowAlpha > 0)\n ) {\n const isHasArrow = this.linkSettings.arrow && arrowAlpha > 0;\n const position = calculateLinkPositionByNode(link, isHasArrow ? arrowSize : 0);\n\n if (position) {\n xStart = position.x1;\n xEnd = position.x2;\n yStart = position.y1;\n yEnd = position.y2;\n linkDistance = position.distance;\n }\n }\n this.context.moveTo(xStart, yStart);\n this.context.lineTo(xEnd, yEnd);\n this.context.stroke();\n\n /** Particle */\n if (\n this.linkSettings.particles &&\n ((this.highlightedNode &&\n (this.highlightedNode.id === link.source.id ||\n this.highlightedNode.id === link.target.id)) ||\n (this.highlightedLink && this.highlightedLink === link))\n ) {\n const particleSteps = this.linkSettings.particleFlexSpeed\n ? linkDistance <= 0\n ? 0\n : linkDistance * this.linkSettings.particleFlexSpeedCoefficient\n : linkOptions.particleSteps;\n const particleCount = linkOptions.particleCount;\n\n if (!this.particles[id]) {\n const sourceId = link.source.id;\n const targetId = link.target.id;\n\n const particles: LinkParticle[] = [];\n let prevParticle: LinkParticle | undefined;\n\n for (let i = 0; i < particleCount; i++) {\n const particle: LinkParticle = {\n step: 0,\n sourceId,\n targetId,\n prev: prevParticle,\n next: undefined,\n index: i,\n };\n if (prevParticle) prevParticle.next = particle;\n particles.push(particle);\n prevParticle = particle;\n }\n if (particles.length >= 2) {\n particles[0].prev = particles[particles.length - 1];\n particles[particles.length - 1].next = particles[0];\n }\n this.particles[id] = particles;\n }\n\n if (particleSteps !== 0) {\n this.particles[id].forEach((particle) => {\n if (!this.context) return;\n\n const distance = particleSteps / particleCount;\n getParticlePosition({\n distance,\n particle,\n totalSteps: particleSteps,\n totalCount: particleCount,\n xEnd,\n xStart,\n yEnd,\n yStart,\n });\n if (particle.x != undefined && particle.y != undefined) {\n this.context.beginPath();\n this.context.strokeStyle = linkOptions.particleBorderColor;\n this.context.lineWidth = linkOptions.particleBorderWidth;\n this.context.arc(particle.x, particle.y, linkOptions.particleRadius, 0, Math.PI * 2);\n this.context.fillStyle = linkOptions.particleColor;\n this.context.fill();\n if (linkOptions.particleBorderWidth > 0) {\n this.context.stroke();\n }\n }\n });\n }\n }\n\n /** Arrow */\n if (this.linkSettings.arrow && arrowAlpha > 0) {\n this.context.beginPath();\n this.context.globalAlpha = arrowAlpha;\n this.context.strokeStyle = arrowBorderColor;\n this.context.lineWidth = arrowBorderWidth;\n this.context.fillStyle = arrowColor;\n const angle = Math.atan2(yEnd - yStart, xEnd - xStart);\n this.context.moveTo(xEnd, yEnd);\n this.context.lineTo(\n xEnd - arrowSize * Math.cos(angle - Math.PI / 6),\n yEnd - arrowSize * Math.sin(angle - Math.PI / 6),\n );\n this.context.lineTo(\n xEnd - arrowSize * Math.cos(angle + Math.PI / 6),\n yEnd - arrowSize * Math.sin(angle + Math.PI / 6),\n );\n this.context.closePath();\n this.context.fill();\n if (arrowBorderWidth > 0) {\n this.context.stroke();\n }\n }\n\n if (linkOptions.drawExtraLink) {\n linkOptions.drawExtraLink.call(this, link, { ...linkOptions, alpha });\n }\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draw-links.js","sources":["../../../../../src/module/GraphCanvas/slices/draw-links.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\nimport { calculateLinkPositionByNode, getParticlePosition, linkFade, linkHighlight } from \"../lib\";\nimport { calculateCurveLinkPositionByNode } from \"../lib/utils/calculate-curve-link-position-by-node\";\nimport type { LinkInterface, LinkParticle } from \"../types\";\n\nexport function getDrawLink<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>() {\n return function drawLink(\n this: GraphCanvas<NodeData, LinkData>,\n link: LinkInterface<NodeData, LinkData>,\n ) {\n if (\n !this.context ||\n typeof link.source !== \"object\" ||\n typeof link.target !== \"object\" ||\n !link.source.x ||\n !link.source.y ||\n !link.target.x ||\n !link.target.y\n )\n return;\n\n if (\n (link.visible != undefined && !link.visible) ||\n (link.source.visible != undefined && !link.source.visible) ||\n (link.target.visible != undefined && !link.target.visible)\n )\n return;\n\n if (!link.source._visible && !link.target._visible) return;\n\n const id = `${link.target.id}${link.source.id}`;\n const linkOptions = this.linkOptionsCache[id];\n if (!linkOptions) return;\n\n if (linkOptions.drawLink) {\n linkOptions.drawLink.call(this, link, linkOptions);\n\n return;\n }\n\n let alpha = linkOptions.alpha;\n let color = linkOptions.color;\n let width = linkOptions.width;\n let arrowAlpha = this.linkSettings.arrowByHighlight ? 0 : linkOptions.arrowAlpha;\n let arrowColor = linkOptions.arrowColor;\n let arrowSize = linkOptions.arrowSize;\n let arrowBorderWidth = linkOptions.arrowBorderWidth;\n let arrowBorderColor = linkOptions.arrowBorderColor;\n\n /** Highlight */\n if (this.highlightedNeighbors && this.highlightedNode) {\n /** By Node Not Highlight */\n if (this.highlightedNode.id != link.source.id && this.highlightedNode.id != link.target.id) {\n const fadeOptions = linkFade({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowFadingMin: this.highlightSettings.highlightByNodeForArrowFadingMin,\n highlightForLinkFadingMin: this.highlightSettings.highlightByNodeForLinkFadingMin,\n });\n alpha = fadeOptions.alpha;\n arrowAlpha = fadeOptions.arrowAlpha;\n } else {\n const highlightOptions = linkHighlight({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowBorderColor: this.highlightSettings.highlightByNodeForArrowBorderColor,\n highlightForArrowBorderSizingAdditional:\n this.highlightSettings.highlightByNodeForArrowBorderSizingAdditional,\n highlightForArrowColor: this.highlightSettings.highlightByNodeForArrowColor,\n highlightForArrowSizeAdditional:\n this.highlightSettings.highlightByNodeForArrowSizeAdditional,\n highlightForLinkColor: this.highlightSettings.highlightByNodeForLinkColor,\n highlightForLinkSizeAdditional:\n this.highlightSettings.highlightByNodeForLinkSizeAdditional,\n });\n arrowAlpha = highlightOptions.arrowAlpha;\n color = highlightOptions.color;\n width = highlightOptions.width;\n arrowColor = highlightOptions.arrowColor;\n arrowSize = highlightOptions.arrowSize;\n arrowBorderWidth = highlightOptions.arrowBorderWidth;\n arrowBorderColor = highlightOptions.arrowBorderColor;\n }\n }\n if (this.highlightedNeighbors && this.highlightedLink) {\n /** By Link Not Highlight */\n if (this.highlightedLink !== link) {\n const fadeOptions = linkFade({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowFadingMin: this.highlightSettings.highlightByLinkForArrowFadingMin,\n highlightForLinkFadingMin: this.highlightSettings.highlightByLinkForLinkFadingMin,\n });\n alpha = fadeOptions.alpha;\n arrowAlpha = fadeOptions.arrowAlpha;\n } else {\n /** By Link Highlight */\n const highlightOptions = linkHighlight({\n arrow: this.linkSettings.arrow,\n arrowByHighlight: this.linkSettings.arrowByHighlight,\n linkOptions,\n highlightProgress: this.highlightProgress,\n highlightForArrowBorderColor: this.highlightSettings.highlightByLinkForArrowBorderColor,\n highlightForArrowBorderSizingAdditional:\n this.highlightSettings.highlightByLinkForArrowBorderSizingAdditional,\n highlightForArrowColor: this.highlightSettings.highlightByLinkForArrowColor,\n highlightForArrowSizeAdditional:\n this.highlightSettings.highlightByLinkForArrowSizeAdditional,\n highlightForLinkColor: this.highlightSettings.highlightByLinkForLinkColor,\n highlightForLinkSizeAdditional:\n this.highlightSettings.highlightByLinkForLinkSizeAdditional,\n });\n arrowAlpha = highlightOptions.arrowAlpha;\n color = highlightOptions.color;\n width = highlightOptions.width;\n arrowColor = highlightOptions.arrowColor;\n arrowSize = highlightOptions.arrowSize;\n arrowBorderWidth = highlightOptions.arrowBorderWidth;\n arrowBorderColor = highlightOptions.arrowBorderColor;\n }\n }\n\n /** Link */\n this.context.beginPath();\n\n this.context.globalAlpha = alpha;\n this.context.strokeStyle = color;\n this.context.lineWidth = width;\n\n let xStart = link.source.x;\n let yStart = link.source.y;\n let xEnd = link.target.x;\n let yEnd = link.target.y;\n let xControl = 0;\n let yControl = 0;\n let xEndArrow = xEnd;\n let yEndArrow = yEnd;\n let linkDistance = 0;\n const isHasArrow = this.linkSettings.arrow && arrowAlpha > 0;\n if (!this.linkSettings.curve) {\n if (\n this.linkSettings.prettyDraw ||\n this.linkSettings.particleFlexSpeed ||\n (this.linkSettings.arrow && arrowAlpha > 0)\n ) {\n const position = calculateLinkPositionByNode(\n xStart,\n yStart,\n xEnd,\n yEnd,\n link.source,\n link.target,\n isHasArrow ? arrowSize : 0,\n );\n\n xStart = position.xStart;\n xEnd = position.xEnd;\n yStart = position.yStart;\n yEnd = position.yEnd;\n xEndArrow = position.xEndArrow;\n yEndArrow = position.yEndArrow;\n linkDistance = position.distance;\n }\n link._x1 = xStart;\n link._y1 = yStart;\n link._x2 = xEnd;\n link._y2 = yEnd;\n link._ax = xEndArrow;\n link._ay = yEndArrow;\n this.context.moveTo(xStart, yStart);\n this.context.lineTo(xEnd, yEnd);\n this.context.stroke();\n } else {\n const position = calculateCurveLinkPositionByNode(\n xStart,\n yStart,\n xEnd,\n yEnd,\n link.source,\n link.target,\n link._groupIndex ?? 0,\n isHasArrow ? arrowSize : 0,\n );\n xStart = position.xStart;\n yStart = position.yStart;\n xEnd = position.xEnd;\n yEnd = position.yEnd;\n xControl = position.xControl;\n yControl = position.yControl;\n xEndArrow = position.xEndArrow;\n yEndArrow = position.yEndArrow;\n link._x1 = position.xStart;\n link._y1 = position.yStart;\n link._x2 = position.xEnd;\n link._y2 = position.yEnd;\n link._cx = position.xControl;\n link._cy = position.yControl;\n link._ax = position.xEndArrow;\n link._ay = position.yEndArrow;\n this.context.beginPath();\n this.context.moveTo(position.xStart, position.yStart);\n this.context.quadraticCurveTo(\n position.xControl,\n position.yControl,\n position.xEnd,\n position.yEnd,\n );\n this.context.setLineDash([]);\n // if (isDashed) {\n // this.context.setLineDash([10, 5]);\n // }\n this.context.stroke();\n }\n\n /** Particle */\n if (\n this.linkSettings.particles &&\n ((this.highlightedNode &&\n (this.highlightedNode.id === link.source.id ||\n this.highlightedNode.id === link.target.id)) ||\n (this.highlightedLink && this.highlightedLink === link))\n ) {\n const particleSteps = this.linkSettings.particleFlexSpeed\n ? linkDistance <= 0\n ? 0\n : linkDistance * this.linkSettings.particleFlexSpeedCoefficient\n : linkOptions.particleSteps;\n const particleCount = linkOptions.particleCount;\n\n if (!this.particles[id]) {\n const sourceId = link.source.id;\n const targetId = link.target.id;\n\n const particles: LinkParticle[] = [];\n let prevParticle: LinkParticle | undefined;\n\n for (let i = 0; i < particleCount; i++) {\n const particle: LinkParticle = {\n step: 0,\n sourceId,\n targetId,\n prev: prevParticle,\n next: undefined,\n index: i,\n };\n if (prevParticle) prevParticle.next = particle;\n particles.push(particle);\n prevParticle = particle;\n }\n if (particles.length >= 2) {\n particles[0].prev = particles[particles.length - 1];\n particles[particles.length - 1].next = particles[0];\n }\n this.particles[id] = particles;\n }\n\n if (particleSteps !== 0) {\n this.particles[id].forEach((particle) => {\n if (!this.context) return;\n\n const distance = particleSteps / particleCount;\n getParticlePosition({\n distance,\n particle,\n totalSteps: particleSteps,\n totalCount: particleCount,\n xEnd,\n xStart,\n yEnd,\n yStart,\n });\n if (particle.x != undefined && particle.y != undefined) {\n this.context.beginPath();\n this.context.strokeStyle = linkOptions.particleBorderColor;\n this.context.lineWidth = linkOptions.particleBorderWidth;\n this.context.arc(particle.x, particle.y, linkOptions.particleRadius, 0, Math.PI * 2);\n this.context.fillStyle = linkOptions.particleColor;\n this.context.fill();\n if (linkOptions.particleBorderWidth > 0) {\n this.context.stroke();\n }\n }\n });\n }\n }\n\n /** Arrow */\n if (this.linkSettings.arrow && arrowAlpha > 0) {\n let angle = 0;\n if (!this.linkSettings.curve) {\n angle = Math.atan2(yEndArrow - yStart, xEndArrow - xStart);\n } else {\n const tangentX = 2 * (xEndArrow - xControl);\n const tangentY = 2 * (yEndArrow - yControl);\n if (Math.abs(tangentX) < 0.001 && Math.abs(tangentY) < 0.001) {\n angle = Math.atan2(yEndArrow - yControl, xEndArrow - xControl);\n } else {\n angle = Math.atan2(tangentY, tangentX);\n }\n }\n this.context.beginPath();\n this.context.globalAlpha = arrowAlpha;\n this.context.strokeStyle = arrowBorderColor;\n this.context.lineWidth = arrowBorderWidth;\n this.context.fillStyle = arrowColor;\n this.context.moveTo(xEndArrow, yEndArrow);\n this.context.lineTo(\n xEndArrow - arrowSize * Math.cos(angle - Math.PI / 6),\n yEndArrow - arrowSize * Math.sin(angle - Math.PI / 6),\n );\n this.context.lineTo(\n xEndArrow - arrowSize * Math.cos(angle + Math.PI / 6),\n yEndArrow - arrowSize * Math.sin(angle + Math.PI / 6),\n );\n this.context.closePath();\n this.context.fill();\n if (arrowBorderWidth > 0) {\n this.context.stroke();\n }\n }\n\n if (linkOptions.drawExtraLink) {\n linkOptions.drawExtraLink.call(this, link, { ...linkOptions, alpha });\n }\n };\n}\n"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ function initPointer() {
36
36
  areaTransform: this.areaTransform,
37
37
  mouseEvent: event,
38
38
  links: this.links,
39
+ curve: this.linkSettings.curve,
39
40
  });
40
41
  if (currentLink?.highlight != undefined)
41
42
  highlightLink = currentLink?.highlight;
@@ -97,6 +98,7 @@ function initPointer() {
97
98
  areaTransform: this.areaTransform,
98
99
  mouseEvent: event,
99
100
  links: this.links,
101
+ curve: this.linkSettings.curve,
100
102
  });
101
103
  }
102
104
  if (!currentNode)
@@ -121,6 +123,7 @@ function initPointer() {
121
123
  areaTransform: this.areaTransform,
122
124
  mouseEvent: event,
123
125
  links: this.links,
126
+ curve: this.linkSettings.curve,
124
127
  });
125
128
  return void this.listeners.onWheelClick.call(this, event, undefined, currentLink);
126
129
  }
@@ -142,6 +145,7 @@ function initPointer() {
142
145
  areaTransform: this.areaTransform,
143
146
  mouseEvent: event,
144
147
  links: this.links,
148
+ curve: this.linkSettings.curve,
145
149
  });
146
150
  return void this.listeners.onContextMenu.call(this, event, undefined, currentLink);
147
151
  }
@@ -163,6 +167,7 @@ function initPointer() {
163
167
  areaTransform: this.areaTransform,
164
168
  mouseEvent: event,
165
169
  links: this.links,
170
+ curve: this.linkSettings.curve,
166
171
  });
167
172
  return void this.listeners.onDoubleClick.call(this, event, undefined, currentLink);
168
173
  }
@@ -184,6 +189,7 @@ function initPointer() {
184
189
  areaTransform: this.areaTransform,
185
190
  mouseEvent: event,
186
191
  links: this.links,
192
+ curve: this.linkSettings.curve,
187
193
  });
188
194
  return void this.listeners.onClick.call(this, event, undefined, currentLink);
189
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init-pointer.js","sources":["../../../../../src/module/GraphCanvas/slices/init-pointer.ts"],"sourcesContent":["import { isObject } from \"lodash\";\nimport { checkType } from \"@/lib\";\nimport type { GraphCanvas } from \"../GraphCanvas\";\nimport { linkByPointerGetter, nodeByPointerGetter } from \"../lib\";\nimport type { LinkInterface, NodeInterface } from \"../types\";\n\nexport function initPointer<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n if (!this.area || !this.nodes) throw new Error(\"bad init data\");\n\n function onHover(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (!this.area) return;\n\n let currentNode: NodeInterface<NodeData> | undefined;\n let currentLink: LinkInterface<NodeData, LinkData> | undefined;\n const checkHighlightNode = this.highlightSettings.highlightByHoverNode && !this.isDragging;\n const checkHighlightLink = this.highlightSettings.highlightByHoverLink && !this.isDragging;\n let highlightNode = true;\n let highlightLink = true;\n\n if (checkHighlightNode) {\n currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (currentNode?.highlight != undefined) highlightNode = currentNode.highlight;\n }\n if (currentNode && highlightNode) {\n this.area.style.cursor = \"pointer\";\n } else if (checkHighlightLink) {\n currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n if (currentLink?.highlight != undefined) highlightLink = currentLink?.highlight;\n\n if (currentLink && highlightLink) {\n this.area.style.cursor = \"pointer\";\n } else {\n this.area.style.cursor = \"default\";\n }\n } else {\n this.area.style.cursor = \"default\";\n }\n if (currentNode && highlightNode && this.highlightedNode !== currentNode) {\n this.highlightedNode = currentNode;\n this.highlightedLink = null;\n this.highlightedNeighbors = new Set(this.highlightedNode?.neighbors ?? []);\n this.highlightWorking = true;\n\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n } else if (\n currentLink &&\n highlightLink &&\n checkType<NodeInterface<NodeData>>(currentLink.source, isObject(currentLink.source)) &&\n checkType<NodeInterface<NodeData>>(currentLink.target, isObject(currentLink.target)) &&\n this.highlightedLink !== currentLink\n ) {\n this.highlightProgress = 0;\n this.highlightedLink = currentLink;\n this.highlightedNode = null;\n this.highlightedNeighbors = new Set([currentLink.source.id, currentLink.target.id]);\n this.highlightWorking = true;\n\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n } else if (!currentNode && !currentLink && (this.highlightedNode || this.highlightedLink)) {\n this.highlightWorking = false;\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n }\n\n if (!this.listeners.onMove) return;\n\n if (!currentNode && !checkHighlightNode)\n currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode && (!checkHighlightNode || (!checkHighlightLink && !currentLink))) {\n currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n }\n\n if (!currentNode) return void this.listeners.onMove.call(this, event, currentNode, currentLink);\n }\n function onWheelClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (\n this.isDragging ||\n !this.listeners.onWheelClick ||\n !(\"button\" in event) ||\n event.button !== 1\n )\n return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n\n return void this.listeners.onWheelClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onWheelClick.call(this, event, currentNode, undefined);\n }\n function onRightClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent) {\n if (!this.listeners.onContextMenu) return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n\n return void this.listeners.onContextMenu.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onContextMenu.call(this, event, currentNode, undefined);\n }\n function onDoubleClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (!this.listeners.onDoubleClick) return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n\n return void this.listeners.onDoubleClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onDoubleClick.call(this, event, currentNode, undefined);\n }\n function onClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (this.isDragging || !this.listeners.onClick || (\"button\" in event && event.button !== 0))\n return;\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n });\n\n return void this.listeners.onClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onClick.call(this, event, currentNode, undefined);\n }\n\n /** hover */\n this.area.addEventListener(\"mousemove\", onHover.bind(this), {\n signal: this.eventAbortController.signal,\n });\n this.area.addEventListener(\"touchmove\", onHover.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** dblclick */\n this.area.addEventListener(\"dblclick\", onDoubleClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** wheel click */\n this.area.addEventListener(\"mousedown\", onWheelClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** click */\n this.area.addEventListener(\"click\", onClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** right click */\n this.area.addEventListener(\"contextmenu\", onRightClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-pointer.js","sources":["../../../../../src/module/GraphCanvas/slices/init-pointer.ts"],"sourcesContent":["import { isObject } from \"lodash\";\nimport { checkType } from \"@/lib\";\nimport type { GraphCanvas } from \"../GraphCanvas\";\nimport { linkByPointerGetter, nodeByPointerGetter } from \"../lib\";\nimport type { LinkInterface, NodeInterface } from \"../types\";\n\nexport function initPointer<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n if (!this.area || !this.nodes) throw new Error(\"bad init data\");\n\n function onHover(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (!this.area) return;\n\n let currentNode: NodeInterface<NodeData> | undefined;\n let currentLink: LinkInterface<NodeData, LinkData> | undefined;\n const checkHighlightNode = this.highlightSettings.highlightByHoverNode && !this.isDragging;\n const checkHighlightLink = this.highlightSettings.highlightByHoverLink && !this.isDragging;\n let highlightNode = true;\n let highlightLink = true;\n\n if (checkHighlightNode) {\n currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (currentNode?.highlight != undefined) highlightNode = currentNode.highlight;\n }\n if (currentNode && highlightNode) {\n this.area.style.cursor = \"pointer\";\n } else if (checkHighlightLink) {\n currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n if (currentLink?.highlight != undefined) highlightLink = currentLink?.highlight;\n\n if (currentLink && highlightLink) {\n this.area.style.cursor = \"pointer\";\n } else {\n this.area.style.cursor = \"default\";\n }\n } else {\n this.area.style.cursor = \"default\";\n }\n if (currentNode && highlightNode && this.highlightedNode !== currentNode) {\n this.highlightedNode = currentNode;\n this.highlightedLink = null;\n this.highlightedNeighbors = new Set(this.highlightedNode?.neighbors ?? []);\n this.highlightWorking = true;\n\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n } else if (\n currentLink &&\n highlightLink &&\n checkType<NodeInterface<NodeData>>(currentLink.source, isObject(currentLink.source)) &&\n checkType<NodeInterface<NodeData>>(currentLink.target, isObject(currentLink.target)) &&\n this.highlightedLink !== currentLink\n ) {\n this.highlightProgress = 0;\n this.highlightedLink = currentLink;\n this.highlightedNode = null;\n this.highlightedNeighbors = new Set([currentLink.source.id, currentLink.target.id]);\n this.highlightWorking = true;\n\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n } else if (!currentNode && !currentLink && (this.highlightedNode || this.highlightedLink)) {\n this.highlightWorking = false;\n if (!this.simulationWorking)\n requestAnimationFrame(() => {\n this.draw();\n });\n }\n\n if (!this.listeners.onMove) return;\n\n if (!currentNode && !checkHighlightNode)\n currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode && (!checkHighlightNode || (!checkHighlightLink && !currentLink))) {\n currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n }\n\n if (!currentNode) return void this.listeners.onMove.call(this, event, currentNode, currentLink);\n }\n function onWheelClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (\n this.isDragging ||\n !this.listeners.onWheelClick ||\n !(\"button\" in event) ||\n event.button !== 1\n )\n return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n\n return void this.listeners.onWheelClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onWheelClick.call(this, event, currentNode, undefined);\n }\n function onRightClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent) {\n if (!this.listeners.onContextMenu) return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n\n return void this.listeners.onContextMenu.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onContextMenu.call(this, event, currentNode, undefined);\n }\n function onDoubleClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (!this.listeners.onDoubleClick) return;\n\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n\n return void this.listeners.onDoubleClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onDoubleClick.call(this, event, currentNode, undefined);\n }\n function onClick(this: GraphCanvas<NodeData, LinkData>, event: MouseEvent | TouchEvent) {\n if (this.isDragging || !this.listeners.onClick || (\"button\" in event && event.button !== 0))\n return;\n const currentNode = nodeByPointerGetter({\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n nodes: this.nodes,\n });\n if (!currentNode) {\n const currentLink = linkByPointerGetter({\n linkHoverExtraZone: this.highlightSettings.linkHoverExtraZone,\n areaRect: this.areaRect,\n areaTransform: this.areaTransform,\n mouseEvent: event,\n links: this.links,\n curve: this.linkSettings.curve,\n });\n\n return void this.listeners.onClick.call(this, event, undefined, currentLink);\n }\n\n return void this.listeners.onClick.call(this, event, currentNode, undefined);\n }\n\n /** hover */\n this.area.addEventListener(\"mousemove\", onHover.bind(this), {\n signal: this.eventAbortController.signal,\n });\n this.area.addEventListener(\"touchmove\", onHover.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** dblclick */\n this.area.addEventListener(\"dblclick\", onDoubleClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** wheel click */\n this.area.addEventListener(\"mousedown\", onWheelClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** click */\n this.area.addEventListener(\"click\", onClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n\n /** right click */\n this.area.addEventListener(\"contextmenu\", onRightClick.bind(this), {\n signal: this.eventAbortController.signal,\n });\n}\n"],"names":[],"mappings":"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"}
@@ -13,12 +13,19 @@ function initResize() {
13
13
  return;
14
14
  }
15
15
  this.updateSize();
16
+ requestAnimationFrame(() => {
17
+ this.updateSize();
18
+ });
16
19
  });
17
20
  document.addEventListener("scroll", this.updateRect.bind(this), {
18
21
  capture: true,
19
22
  passive: true,
20
23
  signal: abortController.signal,
21
24
  });
25
+ document.addEventListener("visibilitychange", () => {
26
+ if (!document.hidden)
27
+ this.updateRect();
28
+ }, { signal: abortController.signal });
22
29
  observer.observe(this.area);
23
30
  }
24
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"init-resize.js","sources":["../../../../../src/module/GraphCanvas/slices/init-resize.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\n\nexport function initResize<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n if (!this.area) throw new Error(\"bad init data\");\n\n let initialResizeCall = true;\n\n const abortController = this.eventAbortController;\n const observer = new ResizeObserver(() => {\n if (initialResizeCall) {\n initialResizeCall = false;\n\n return;\n }\n\n if (abortController.signal.aborted) {\n observer.disconnect();\n\n return;\n }\n\n this.updateSize();\n });\n\n document.addEventListener(\"scroll\", this.updateRect.bind(this), {\n capture: true,\n passive: true,\n signal: abortController.signal,\n });\n\n observer.observe(this.area);\n}\n"],"names":[],"mappings":"SAEgB,UAAU,GAAA;IAIxB,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;IAEhD,IAAI,iBAAiB,GAAG,IAAI;AAE5B,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB;AACjD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;QACvC,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,GAAG,KAAK;YAEzB;;AAGF,QAAA,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,QAAQ,CAAC,UAAU,EAAE;YAErB;;QAGF,IAAI,CAAC,UAAU,EAAE;AACnB,KAAC,CAAC;AAEF,IAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9D,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,eAAe,CAAC,MAAM;AAC/B,KAAA,CAAC;AAEF,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B;;;;"}
1
+ {"version":3,"file":"init-resize.js","sources":["../../../../../src/module/GraphCanvas/slices/init-resize.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\n\nexport function initResize<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n if (!this.area) throw new Error(\"bad init data\");\n\n let initialResizeCall = true;\n\n const abortController = this.eventAbortController;\n const observer = new ResizeObserver(() => {\n if (initialResizeCall) {\n initialResizeCall = false;\n\n return;\n }\n\n if (abortController.signal.aborted) {\n observer.disconnect();\n\n return;\n }\n\n this.updateSize();\n requestAnimationFrame(() => {\n this.updateSize();\n });\n });\n\n document.addEventListener(\"scroll\", this.updateRect.bind(this), {\n capture: true,\n passive: true,\n signal: abortController.signal,\n });\n\n document.addEventListener(\n \"visibilitychange\",\n () => {\n if (!document.hidden) this.updateRect();\n },\n { signal: abortController.signal },\n );\n\n observer.observe(this.area);\n}\n"],"names":[],"mappings":"SAEgB,UAAU,GAAA;IAIxB,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;IAEhD,IAAI,iBAAiB,GAAG,IAAI;AAE5B,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB;AACjD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;QACvC,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,GAAG,KAAK;YAEzB;;AAGF,QAAA,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,QAAQ,CAAC,UAAU,EAAE;YAErB;;QAGF,IAAI,CAAC,UAAU,EAAE;QACjB,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;AACJ,KAAC,CAAC;AAEF,IAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9D,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,eAAe,CAAC,MAAM;AAC/B,KAAA,CAAC;AAEF,IAAA,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,MAAK;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,IAAI,CAAC,UAAU,EAAE;KACxC,EACD,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CACnC;AAED,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B;;;;"}
@@ -6,13 +6,43 @@ import { extractLinkPointIds } from '../lib/utils/extract-link-point-ids.js';
6
6
 
7
7
  function updateLinkCache() {
8
8
  this.linkOptionsCache = {};
9
+ const groupMap = {};
10
+ const groupSelfMap = {};
9
11
  for (let i = 0; i < this.links.length; i++) {
10
12
  const link = this.links[i];
11
13
  const { sourceId, targetId } = extractLinkPointIds(link);
12
14
  const linkOptions = linkIterationExtractor(link, i, this.links, this, this.linkSettings.options ?? {}, linkOptionsGetter);
13
15
  const id = `${targetId}${sourceId}`;
14
16
  this.linkOptionsCache[id] = linkOptions;
17
+ if (this.linkSettings.curve) {
18
+ if (sourceId === targetId) {
19
+ groupSelfMap[id] ??= 0;
20
+ link._groupIndex = ++groupSelfMap[id];
21
+ link._self = true;
22
+ continue;
23
+ }
24
+ const reverseId = `${sourceId}${targetId}`;
25
+ groupMap[reverseId] ??= 0;
26
+ groupMap[reverseId]++;
27
+ groupMap[id] ??= 0;
28
+ link._groupIndex = indexToPosition(++groupMap[id]);
29
+ link._self = false;
30
+ }
15
31
  }
32
+ if (this.linkSettings.curve) {
33
+ for (const link of this.links) {
34
+ const { sourceId, targetId } = extractLinkPointIds(link);
35
+ const id = `${targetId}${sourceId}`;
36
+ link._groupSize = link._self ? (groupSelfMap[id] ?? 1) : (groupMap[id] ?? 1);
37
+ }
38
+ }
39
+ }
40
+ function indexToPosition(n) {
41
+ if (n === 1)
42
+ return 0;
43
+ const index = n >> 1;
44
+ return n & 1 ? -(index * 2) : index * 2;
45
+ // return n & 1 ? -(n >> 1) : n >> 1;
16
46
  }
17
47
 
18
48
  export { updateLinkCache };
@@ -1 +1 @@
1
- {"version":3,"file":"update-link-cache.js","sources":["../../../../../src/module/GraphCanvas/slices/update-link-cache.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\nimport { extractLinkPointIds, linkIterationExtractor, linkOptionsGetter } from \"../lib\";\n\nexport function updateLinkCache<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n this.linkOptionsCache = {};\n\n for (let i = 0; i < this.links.length; i++) {\n const link = this.links[i];\n const { sourceId, targetId } = extractLinkPointIds(link);\n\n const linkOptions = linkIterationExtractor(\n link,\n i,\n this.links,\n this,\n this.linkSettings.options ?? {},\n linkOptionsGetter,\n );\n const id = `${targetId}${sourceId}`;\n this.linkOptionsCache[id] = linkOptions;\n }\n}\n"],"names":[],"mappings":";;;;;;SAGgB,eAAe,GAAA;AAI7B,IAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAE1B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAExD,MAAM,WAAW,GAAG,sBAAsB,CACxC,IAAI,EACJ,CAAC,EACD,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,EAC/B,iBAAiB,CAClB;AACD,QAAA,MAAM,EAAE,GAAG,CAAA,EAAG,QAAQ,CAAG,EAAA,QAAQ,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,WAAW;;AAE3C;;;;"}
1
+ {"version":3,"file":"update-link-cache.js","sources":["../../../../../src/module/GraphCanvas/slices/update-link-cache.ts"],"sourcesContent":["import type { GraphCanvas } from \"../GraphCanvas\";\nimport { extractLinkPointIds, linkIterationExtractor, linkOptionsGetter } from \"../lib\";\n\nexport function updateLinkCache<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n>(this: GraphCanvas<NodeData, LinkData>) {\n this.linkOptionsCache = {};\n\n const groupMap: Record<string, number> = {};\n const groupSelfMap: Record<string, number> = {};\n for (let i = 0; i < this.links.length; i++) {\n const link = this.links[i];\n const { sourceId, targetId } = extractLinkPointIds(link);\n\n const linkOptions = linkIterationExtractor(\n link,\n i,\n this.links,\n this,\n this.linkSettings.options ?? {},\n linkOptionsGetter,\n );\n const id = `${targetId}${sourceId}`;\n this.linkOptionsCache[id] = linkOptions;\n\n if (this.linkSettings.curve) {\n if (sourceId === targetId) {\n groupSelfMap[id] ??= 0;\n link._groupIndex = ++groupSelfMap[id];\n link._self = true;\n continue;\n }\n const reverseId = `${sourceId}${targetId}`;\n groupMap[reverseId] ??= 0;\n groupMap[reverseId]++;\n groupMap[id] ??= 0;\n link._groupIndex = indexToPosition(++groupMap[id]);\n link._self = false;\n }\n }\n if (this.linkSettings.curve) {\n for (const link of this.links) {\n const { sourceId, targetId } = extractLinkPointIds(link);\n const id = `${targetId}${sourceId}`;\n link._groupSize = link._self ? (groupSelfMap[id] ?? 1) : (groupMap[id] ?? 1);\n }\n }\n}\n\nfunction indexToPosition(n: number): number {\n if (n === 1) return 0;\n\n const index = n >> 1;\n return n & 1 ? -(index * 2) : index * 2;\n\n // return n & 1 ? -(n >> 1) : n >> 1;\n}\n"],"names":[],"mappings":";;;;;;SAGgB,eAAe,GAAA;AAI7B,IAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAE1B,MAAM,QAAQ,GAA2B,EAAE;IAC3C,MAAM,YAAY,GAA2B,EAAE;AAC/C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAExD,MAAM,WAAW,GAAG,sBAAsB,CACxC,IAAI,EACJ,CAAC,EACD,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,EAC/B,iBAAiB,CAClB;AACD,QAAA,MAAM,EAAE,GAAG,CAAA,EAAG,QAAQ,CAAG,EAAA,QAAQ,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,WAAW;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,gBAAA,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;gBACjB;;AAEF,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,QAAQ,CAAG,EAAA,QAAQ,EAAE;AAC1C,YAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;AACzB,YAAA,QAAQ,CAAC,SAAS,CAAC,EAAE;AACrB,YAAA,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAGtB,IAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACxD,YAAA,MAAM,EAAE,GAAG,CAAA,EAAG,QAAQ,CAAG,EAAA,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;;AAGlF;AAEA,SAAS,eAAe,CAAC,CAAS,EAAA;IAChC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC;AAErB,IAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;AACpB,IAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;;AAGzC;;;;"}
package/lib/index.d.ts CHANGED
@@ -36,6 +36,17 @@ interface LinkInterface<NodeData extends Record<string, unknown>, LinkData exten
36
36
  data?: LinkData;
37
37
  highlight?: boolean;
38
38
  visible?: boolean;
39
+ _groupIndex?: number;
40
+ _groupSize?: number;
41
+ _self?: boolean;
42
+ _x1?: number;
43
+ _y1?: number;
44
+ _x2?: number;
45
+ _y2?: number;
46
+ _cx?: number;
47
+ _cy?: number;
48
+ _ax?: number;
49
+ _ay?: number;
39
50
  }
40
51
  type LinkParticle = {
41
52
  step: number;
@@ -184,6 +195,7 @@ declare const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface>;
184
195
 
185
196
  type LinkSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
186
197
  prettyDraw?: boolean;
198
+ curve?: boolean;
187
199
  arrow?: boolean;
188
200
  arrowByHighlight?: boolean;
189
201
  particles?: boolean;
@@ -459,13 +471,15 @@ declare function nodeByPointerGetter<NodeData extends Record<string, unknown>>({
459
471
  declare function nodeIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null>(node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[], state: GraphCanvas<NodeData, LinkData>, option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: undefined): Result;
460
472
  declare function nodeIterationExtractor<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null>(node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[], state: GraphCanvas<NodeData, LinkData>, option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result, optionConstantGetter: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result): Required<Result>;
461
473
 
462
- declare function calculateLinkPositionByNode<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(link: LinkInterface<NodeData, LinkData>, arrowSize?: number): {
463
- x1: number;
464
- y1: number;
465
- x2: number;
466
- y2: number;
474
+ declare function calculateLinkPositionByNode<NodeData extends Record<string, unknown>>(xStart: number, yStart: number, xEnd: number, yEnd: number, sourceNode: NodeInterface<NodeData>, targetNode: NodeInterface<NodeData>, arrowSize?: number): {
475
+ xStart: number;
476
+ yStart: number;
477
+ xEnd: number;
478
+ yEnd: number;
479
+ xEndArrow: number;
480
+ yEndArrow: number;
467
481
  distance: number;
468
- } | null;
482
+ };
469
483
 
470
484
  declare function animationByProgress(initial: number, additional: number, progress: number): number;
471
485
 
@@ -495,8 +509,9 @@ type LinkByPointerGetterOptions<NodeData extends Record<string, unknown>, LinkDa
495
509
  areaTransform: ZoomTransform;
496
510
  links: LinkInterface<NodeData, LinkData>[];
497
511
  linkHoverExtraZone: number;
512
+ curve: boolean;
498
513
  };
499
- declare function linkByPointerGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>({ areaRect, areaTransform, mouseEvent, links, linkHoverExtraZone, }: LinkByPointerGetterOptions<NodeData, LinkData>): LinkInterface<NodeData, LinkData> | undefined;
514
+ declare function linkByPointerGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>({ areaRect, areaTransform, mouseEvent, links, linkHoverExtraZone, curve, }: LinkByPointerGetterOptions<NodeData, LinkData>): LinkInterface<NodeData, LinkData> | undefined;
500
515
 
501
516
  type NodeHighlightOptions<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
502
517
  nodeOptions: Required<NodeOptionsInterface<NodeData, LinkData>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/graph",
3
- "version": "0.13.0-beta1",
3
+ "version": "0.13.0-beta3",
4
4
  "description": "Krainov graph",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",