@babylonjs/shared-ui-components 7.37.1 → 7.37.2

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.
@@ -97,14 +97,15 @@ export class NodeLink {
97
97
  }
98
98
  // No red as it means no type yet
99
99
  let extractedColorB = "";
100
+ const extractedColorA = this._graphCanvas.stateManager.getPortColor(this._portA.portData);
100
101
  if (this._portB) {
101
- extractedColorB = this._portB?.element.style.backgroundColor.replace(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/, "$1_$2_$3");
102
+ extractedColorB = this._graphCanvas.stateManager.getPortColor(this._portB.portData);
102
103
  const splitComponents = extractedColorB.split("_").map((v) => parseInt(v));
103
104
  if (splitComponents[0] > 0 && splitComponents[1] === 0 && splitComponents[2] === 0) {
104
105
  extractedColorB = "";
105
106
  }
106
107
  }
107
- if (extractedColorB && this._portA.element.style.backgroundColor !== this._portB?.element.style.backgroundColor) {
108
+ if (extractedColorB && extractedColorA !== extractedColorB) {
108
109
  // Gradient
109
110
  const svg = this._graphCanvas.svgCanvas;
110
111
  const defs = svg.querySelector("defs") || svg.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "defs"));
@@ -118,20 +119,20 @@ export class NodeLink {
118
119
  }
119
120
  const stop1 = this._gradient.children[0];
120
121
  const stop2 = this._gradient.children[1];
121
- const gradientId = `linkGradient_${this._portA.element.style.backgroundColor.replace(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/, "$1_$2_$3")}_${extractedColorB}`;
122
+ const gradientId = `linkGradient_${extractedColorA}_${extractedColorB}`;
122
123
  this._gradient.id = gradientId;
123
124
  this._gradient.setAttribute("x1", startX < endX ? "0" : "1");
124
125
  this._gradient.setAttribute("y1", "0");
125
126
  this._gradient.setAttribute("x2", startX < endX ? "1" : "0");
126
127
  this._gradient.setAttribute("y2", "0");
127
128
  stop1.setAttribute("offset", "0%");
128
- stop1.setAttribute("stop-color", this._portA.element.style.backgroundColor);
129
+ stop1.setAttribute("stop-color", extractedColorA);
129
130
  stop2.setAttribute("offset", "100%");
130
- stop2.setAttribute("stop-color", this._portB?.element.style.backgroundColor);
131
+ stop2.setAttribute("stop-color", extractedColorB);
131
132
  this._path.setAttribute("stroke", `url(#${gradientId})`);
132
133
  }
133
134
  else {
134
- this._path.setAttribute("stroke", this._portA.element.style.backgroundColor);
135
+ this._path.setAttribute("stroke", extractedColorA);
135
136
  }
136
137
  }
137
138
  get path() {
@@ -1 +1 @@
1
- {"version":3,"file":"nodeLink.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/nodeLink.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { NodePort } from \"./nodePort\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { GraphCanvasComponent } from \"./graphCanvas\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport { RefreshNode } from \"./tools\";\r\nimport * as commonStyles from \"./common.module.scss\";\r\nimport * as styles from \"./nodeLink.module.scss\";\r\n\r\nexport class NodeLink {\r\n private _graphCanvas: GraphCanvasComponent;\r\n private _portA: NodePort | FrameNodePort;\r\n private _portB?: NodePort | FrameNodePort;\r\n private _nodeA: GraphNode;\r\n private _nodeB?: GraphNode;\r\n private _path: SVGPathElement;\r\n private _selectionPath: SVGPathElement;\r\n private _onSelectionChangedObserver: Nullable<Observer<Nullable<ISelectionChangedOptions>>>;\r\n private _isVisible = true;\r\n private _isTargetCandidate = false;\r\n private _gradient: Nullable<SVGLinearGradientElement>;\r\n\r\n public onDisposedObservable = new Observable<NodeLink>();\r\n\r\n public get isTargetCandidate() {\r\n return this._isTargetCandidate;\r\n }\r\n\r\n public set isTargetCandidate(value: boolean) {\r\n if (this._isTargetCandidate === value) {\r\n return;\r\n }\r\n\r\n this._isTargetCandidate = value;\r\n\r\n if (value) {\r\n this._path.classList.add(styles[\"target-candidate\"]);\r\n } else {\r\n this._path.classList.remove(styles[\"target-candidate\"]);\r\n }\r\n }\r\n\r\n public get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n public set isVisible(value: boolean) {\r\n this._isVisible = value;\r\n\r\n if (!value) {\r\n this._path.classList.add(commonStyles[\"hidden\"]);\r\n this._selectionPath.classList.add(commonStyles[\"hidden\"]);\r\n } else {\r\n this._path.classList.remove(commonStyles[\"hidden\"]);\r\n this._selectionPath.classList.remove(commonStyles[\"hidden\"]);\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n public get portA() {\r\n return this._portA;\r\n }\r\n\r\n public get portB() {\r\n return this._portB;\r\n }\r\n\r\n public get nodeA() {\r\n return this._nodeA;\r\n }\r\n\r\n public get nodeB() {\r\n return this._nodeB;\r\n }\r\n\r\n public intersectsWith(rect: DOMRect) {\r\n const locatRect = this._path.getBoundingClientRect();\r\n if (rect.left > locatRect.right || rect.right < locatRect.left || rect.top > locatRect.bottom || rect.bottom < locatRect.top) {\r\n return false;\r\n }\r\n\r\n const zoom = this._graphCanvas.zoom;\r\n const svg = this._graphCanvas.svgCanvas as any as SVGSVGElement;\r\n const rootRect = svg.getBoundingClientRect();\r\n\r\n const left = (rect.x - rootRect.x) / zoom;\r\n const top = (rect.y - rootRect.y) / zoom;\r\n const right = left + rect.width / zoom;\r\n const bottom = top + rect.height / zoom;\r\n\r\n const sampleRate = 10; // Checking 10 times on the path should be enough\r\n\r\n for (let index = 0; index < 1; index += 1 / sampleRate) {\r\n const point = this._path.getPointAtLength(index * this._path.getTotalLength());\r\n if (left < point.x && right > point.x && top < point.y && bottom > point.y) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public update(endX = 0, endY = 0, straight = false) {\r\n const rectA = this._portA.element.getBoundingClientRect();\r\n const rootRect = this._graphCanvas.canvasContainer.getBoundingClientRect();\r\n const zoom = this._graphCanvas.zoom;\r\n const xOffset = rootRect.left;\r\n const yOffset = rootRect.top;\r\n\r\n const startX = (rectA.left - xOffset + 0.5 * rectA.width) / zoom;\r\n const startY = (rectA.top - yOffset + 0.5 * rectA.height) / zoom;\r\n\r\n if (this._portB) {\r\n const rectB = this._portB.element.getBoundingClientRect();\r\n endX = (rectB.left - xOffset + 0.5 * rectB.width) / zoom;\r\n endY = (rectB.top - yOffset + 0.5 * rectB.height) / zoom;\r\n }\r\n\r\n // We need a volume to allow gradient to work\r\n if (startY === endY) {\r\n endY += 0.01;\r\n }\r\n\r\n if (straight) {\r\n this._path.setAttribute(\"d\", `M${startX},${startY} L${endX},${endY}`);\r\n this._path.setAttribute(\"stroke-dasharray\", \"10, 10\");\r\n this._path.setAttribute(\"stroke-linecap\", \"round\");\r\n } else {\r\n const deltaX = endX - startX;\r\n const deltaY = endY - startY;\r\n const tangentLength = Math.min(Math.sqrt(deltaX * deltaX + deltaY * deltaY) * 0.5, 300);\r\n this._path.setAttribute(\"d\", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);\r\n this._selectionPath.setAttribute(\"d\", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);\r\n }\r\n\r\n // No red as it means no type yet\r\n let extractedColorB = \"\";\r\n if (this._portB) {\r\n extractedColorB = this._portB?.element.style.backgroundColor.replace(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/, \"$1_$2_$3\");\r\n const splitComponents = extractedColorB.split(\"_\").map((v) => parseInt(v));\r\n if (splitComponents[0] > 0 && splitComponents[1] === 0 && splitComponents[2] === 0) {\r\n extractedColorB = \"\";\r\n }\r\n }\r\n\r\n if (extractedColorB && this._portA.element.style.backgroundColor !== this._portB?.element.style.backgroundColor) {\r\n // Gradient\r\n const svg = this._graphCanvas.svgCanvas;\r\n const defs = svg.querySelector(\"defs\") || svg.appendChild(document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\"));\r\n\r\n if (!this._gradient) {\r\n this._gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\r\n defs.appendChild(this._gradient);\r\n const stop1 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\r\n this._gradient.appendChild(stop1);\r\n const stop2 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\r\n this._gradient.appendChild(stop2);\r\n }\r\n\r\n const stop1 = this._gradient.children[0] as SVGStopElement;\r\n const stop2 = this._gradient.children[1] as SVGStopElement;\r\n\r\n const gradientId = `linkGradient_${this._portA.element.style.backgroundColor.replace(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/, \"$1_$2_$3\")}_${extractedColorB}`;\r\n this._gradient.id = gradientId;\r\n\r\n this._gradient.setAttribute(\"x1\", startX < endX ? \"0\" : \"1\");\r\n this._gradient.setAttribute(\"y1\", \"0\");\r\n this._gradient.setAttribute(\"x2\", startX < endX ? \"1\" : \"0\");\r\n this._gradient.setAttribute(\"y2\", \"0\");\r\n\r\n stop1.setAttribute(\"offset\", \"0%\");\r\n stop1.setAttribute(\"stop-color\", this._portA.element.style.backgroundColor!);\r\n\r\n stop2.setAttribute(\"offset\", \"100%\");\r\n stop2.setAttribute(\"stop-color\", this._portB?.element.style.backgroundColor!);\r\n\r\n this._path.setAttribute(\"stroke\", `url(#${gradientId})`);\r\n } else {\r\n this._path.setAttribute(\"stroke\", this._portA.element.style.backgroundColor!);\r\n }\r\n }\r\n\r\n public get path() {\r\n return this._path;\r\n }\r\n\r\n public get selectionPath() {\r\n return this._selectionPath;\r\n }\r\n\r\n public constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode) {\r\n this._portA = portA;\r\n this._portB = portB;\r\n this._nodeA = nodeA;\r\n this._nodeB = nodeB;\r\n this._graphCanvas = graphCanvas;\r\n\r\n const document = portA.element.ownerDocument!;\r\n const svg = graphCanvas.svgCanvas;\r\n\r\n // Create path\r\n this._path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\r\n this._path.setAttribute(\"fill\", \"none\");\r\n this._path.classList.add(styles[\"link\"]);\r\n\r\n svg.appendChild(this._path);\r\n\r\n this._selectionPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\r\n this._selectionPath.setAttribute(\"fill\", \"none\");\r\n this._selectionPath.classList.add(styles[\"selection-link\"]);\r\n\r\n svg.appendChild(this._selectionPath);\r\n\r\n this._selectionPath.onmousedown = (evt: MouseEvent) => this.onClick(evt);\r\n\r\n if (this._portB) {\r\n // Update\r\n this.update();\r\n }\r\n\r\n this._onSelectionChangedObserver = this._graphCanvas.stateManager.onSelectionChangedObservable.add((options) => {\r\n const { selection } = options || {};\r\n if (selection === this) {\r\n this._path.classList.add(styles[\"selected\"]);\r\n this._selectionPath.classList.add(styles[\"selected\"]);\r\n } else {\r\n this._path.classList.remove(styles[\"selected\"]);\r\n this._selectionPath.classList.remove(styles[\"selected\"]);\r\n }\r\n });\r\n }\r\n\r\n onClick(evt: MouseEvent) {\r\n const stateManager = this._graphCanvas.stateManager;\r\n const nodeA = this._nodeA;\r\n const pointA = this._portA.portData;\r\n const nodeB = this._nodeB!;\r\n const pointB = this._portB!.portData;\r\n\r\n const reconnect = (newNode: GraphNode) => {\r\n const newBlock = newNode.content.data as any;\r\n\r\n // Delete previous link\r\n this.dispose();\r\n\r\n // Connect to the new block\r\n this._graphCanvas.connectNodes(nodeA, pointA, newNode, newNode.getPortDataForPortDataContent(newBlock.input)!);\r\n this._graphCanvas.connectNodes(newNode, newNode.getPortDataForPortDataContent(newBlock.output)!, nodeB, pointB);\r\n\r\n stateManager.onRebuildRequiredObservable.notifyObservers();\r\n };\r\n\r\n if (evt.altKey) {\r\n if (!stateManager.isElbowConnectionAllowed(this._portA, this._portB!)) {\r\n return;\r\n }\r\n\r\n // Create an elbow at the clicked location\r\n stateManager.onNewNodeCreatedObservable.addOnce(reconnect);\r\n\r\n stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: \"ElbowBlock\",\r\n targetX: evt.clientX,\r\n targetY: evt.clientY,\r\n needRepositioning: true,\r\n });\r\n\r\n // Make sure the undo/redo stack is reverted as we did 2 actions (create and connect)\r\n stateManager.historyStack.collapseLastTwo();\r\n\r\n return;\r\n }\r\n\r\n if (evt.ctrlKey) {\r\n if (!stateManager.isDebugConnectionAllowed(this._portA, this._portB!)) {\r\n return;\r\n }\r\n\r\n // Create a debug at the clicked location\r\n stateManager.onNewNodeCreatedObservable.addOnce(reconnect);\r\n\r\n stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: \"DebugBlock\",\r\n targetX: evt.clientX,\r\n targetY: evt.clientY,\r\n needRepositioning: true,\r\n });\r\n\r\n // Make sure the undo/redo stack is reverted as we did 2 actions (create and connect)\r\n stateManager.historyStack.collapseLastTwo();\r\n return;\r\n }\r\n\r\n stateManager.onSelectionChangedObservable.notifyObservers({ selection: this });\r\n }\r\n\r\n public dispose(notify = true) {\r\n this._graphCanvas.stateManager.onSelectionChangedObservable.remove(this._onSelectionChangedObserver);\r\n\r\n if (this._path.parentElement) {\r\n this._path.parentElement.removeChild(this._path);\r\n }\r\n\r\n if (this._selectionPath.parentElement) {\r\n this._selectionPath.parentElement.removeChild(this._selectionPath);\r\n }\r\n\r\n if (this._gradient) {\r\n if (this._gradient.parentElement) {\r\n this._gradient.parentElement.removeChild(this._gradient);\r\n }\r\n }\r\n\r\n if (this._nodeB) {\r\n this._nodeA.links.splice(this._nodeA.links.indexOf(this), 1);\r\n this._nodeB.links.splice(this._nodeB.links.indexOf(this), 1);\r\n this._graphCanvas.links.splice(this._graphCanvas.links.indexOf(this), 1);\r\n\r\n this._portA.portData.disconnectFrom(this._portB!.portData);\r\n\r\n RefreshNode(this._nodeB, undefined, undefined, this._graphCanvas);\r\n }\r\n\r\n if (notify) {\r\n this.onDisposedObservable.notifyObservers(this);\r\n\r\n this.onDisposedObservable.clear();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeLink.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/nodeLink.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { NodePort } from \"./nodePort\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { GraphCanvasComponent } from \"./graphCanvas\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport { RefreshNode } from \"./tools\";\r\nimport * as commonStyles from \"./common.module.scss\";\r\nimport * as styles from \"./nodeLink.module.scss\";\r\n\r\nexport class NodeLink {\r\n private _graphCanvas: GraphCanvasComponent;\r\n private _portA: NodePort | FrameNodePort;\r\n private _portB?: NodePort | FrameNodePort;\r\n private _nodeA: GraphNode;\r\n private _nodeB?: GraphNode;\r\n private _path: SVGPathElement;\r\n private _selectionPath: SVGPathElement;\r\n private _onSelectionChangedObserver: Nullable<Observer<Nullable<ISelectionChangedOptions>>>;\r\n private _isVisible = true;\r\n private _isTargetCandidate = false;\r\n private _gradient: Nullable<SVGLinearGradientElement>;\r\n\r\n public onDisposedObservable = new Observable<NodeLink>();\r\n\r\n public get isTargetCandidate() {\r\n return this._isTargetCandidate;\r\n }\r\n\r\n public set isTargetCandidate(value: boolean) {\r\n if (this._isTargetCandidate === value) {\r\n return;\r\n }\r\n\r\n this._isTargetCandidate = value;\r\n\r\n if (value) {\r\n this._path.classList.add(styles[\"target-candidate\"]);\r\n } else {\r\n this._path.classList.remove(styles[\"target-candidate\"]);\r\n }\r\n }\r\n\r\n public get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n public set isVisible(value: boolean) {\r\n this._isVisible = value;\r\n\r\n if (!value) {\r\n this._path.classList.add(commonStyles[\"hidden\"]);\r\n this._selectionPath.classList.add(commonStyles[\"hidden\"]);\r\n } else {\r\n this._path.classList.remove(commonStyles[\"hidden\"]);\r\n this._selectionPath.classList.remove(commonStyles[\"hidden\"]);\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n public get portA() {\r\n return this._portA;\r\n }\r\n\r\n public get portB() {\r\n return this._portB;\r\n }\r\n\r\n public get nodeA() {\r\n return this._nodeA;\r\n }\r\n\r\n public get nodeB() {\r\n return this._nodeB;\r\n }\r\n\r\n public intersectsWith(rect: DOMRect) {\r\n const locatRect = this._path.getBoundingClientRect();\r\n if (rect.left > locatRect.right || rect.right < locatRect.left || rect.top > locatRect.bottom || rect.bottom < locatRect.top) {\r\n return false;\r\n }\r\n\r\n const zoom = this._graphCanvas.zoom;\r\n const svg = this._graphCanvas.svgCanvas as any as SVGSVGElement;\r\n const rootRect = svg.getBoundingClientRect();\r\n\r\n const left = (rect.x - rootRect.x) / zoom;\r\n const top = (rect.y - rootRect.y) / zoom;\r\n const right = left + rect.width / zoom;\r\n const bottom = top + rect.height / zoom;\r\n\r\n const sampleRate = 10; // Checking 10 times on the path should be enough\r\n\r\n for (let index = 0; index < 1; index += 1 / sampleRate) {\r\n const point = this._path.getPointAtLength(index * this._path.getTotalLength());\r\n if (left < point.x && right > point.x && top < point.y && bottom > point.y) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public update(endX = 0, endY = 0, straight = false) {\r\n const rectA = this._portA.element.getBoundingClientRect();\r\n const rootRect = this._graphCanvas.canvasContainer.getBoundingClientRect();\r\n const zoom = this._graphCanvas.zoom;\r\n const xOffset = rootRect.left;\r\n const yOffset = rootRect.top;\r\n\r\n const startX = (rectA.left - xOffset + 0.5 * rectA.width) / zoom;\r\n const startY = (rectA.top - yOffset + 0.5 * rectA.height) / zoom;\r\n\r\n if (this._portB) {\r\n const rectB = this._portB.element.getBoundingClientRect();\r\n endX = (rectB.left - xOffset + 0.5 * rectB.width) / zoom;\r\n endY = (rectB.top - yOffset + 0.5 * rectB.height) / zoom;\r\n }\r\n\r\n // We need a volume to allow gradient to work\r\n if (startY === endY) {\r\n endY += 0.01;\r\n }\r\n\r\n if (straight) {\r\n this._path.setAttribute(\"d\", `M${startX},${startY} L${endX},${endY}`);\r\n this._path.setAttribute(\"stroke-dasharray\", \"10, 10\");\r\n this._path.setAttribute(\"stroke-linecap\", \"round\");\r\n } else {\r\n const deltaX = endX - startX;\r\n const deltaY = endY - startY;\r\n const tangentLength = Math.min(Math.sqrt(deltaX * deltaX + deltaY * deltaY) * 0.5, 300);\r\n this._path.setAttribute(\"d\", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);\r\n this._selectionPath.setAttribute(\"d\", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);\r\n }\r\n\r\n // No red as it means no type yet\r\n let extractedColorB = \"\";\r\n const extractedColorA = this._graphCanvas.stateManager.getPortColor(this._portA.portData);\r\n\r\n if (this._portB) {\r\n extractedColorB = this._graphCanvas.stateManager.getPortColor(this._portB.portData);\r\n const splitComponents = extractedColorB.split(\"_\").map((v) => parseInt(v));\r\n if (splitComponents[0] > 0 && splitComponents[1] === 0 && splitComponents[2] === 0) {\r\n extractedColorB = \"\";\r\n }\r\n }\r\n\r\n if (extractedColorB && extractedColorA !== extractedColorB) {\r\n // Gradient\r\n const svg = this._graphCanvas.svgCanvas;\r\n const defs = svg.querySelector(\"defs\") || svg.appendChild(document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\"));\r\n\r\n if (!this._gradient) {\r\n this._gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\r\n defs.appendChild(this._gradient);\r\n const stop1 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\r\n this._gradient.appendChild(stop1);\r\n const stop2 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\r\n this._gradient.appendChild(stop2);\r\n }\r\n\r\n const stop1 = this._gradient.children[0] as SVGStopElement;\r\n const stop2 = this._gradient.children[1] as SVGStopElement;\r\n\r\n const gradientId = `linkGradient_${extractedColorA}_${extractedColorB}`;\r\n this._gradient.id = gradientId;\r\n\r\n this._gradient.setAttribute(\"x1\", startX < endX ? \"0\" : \"1\");\r\n this._gradient.setAttribute(\"y1\", \"0\");\r\n this._gradient.setAttribute(\"x2\", startX < endX ? \"1\" : \"0\");\r\n this._gradient.setAttribute(\"y2\", \"0\");\r\n\r\n stop1.setAttribute(\"offset\", \"0%\");\r\n stop1.setAttribute(\"stop-color\", extractedColorA);\r\n\r\n stop2.setAttribute(\"offset\", \"100%\");\r\n stop2.setAttribute(\"stop-color\", extractedColorB);\r\n\r\n this._path.setAttribute(\"stroke\", `url(#${gradientId})`);\r\n } else {\r\n this._path.setAttribute(\"stroke\", extractedColorA);\r\n }\r\n }\r\n\r\n public get path() {\r\n return this._path;\r\n }\r\n\r\n public get selectionPath() {\r\n return this._selectionPath;\r\n }\r\n\r\n public constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode) {\r\n this._portA = portA;\r\n this._portB = portB;\r\n this._nodeA = nodeA;\r\n this._nodeB = nodeB;\r\n this._graphCanvas = graphCanvas;\r\n\r\n const document = portA.element.ownerDocument!;\r\n const svg = graphCanvas.svgCanvas;\r\n\r\n // Create path\r\n this._path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\r\n this._path.setAttribute(\"fill\", \"none\");\r\n this._path.classList.add(styles[\"link\"]);\r\n\r\n svg.appendChild(this._path);\r\n\r\n this._selectionPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\r\n this._selectionPath.setAttribute(\"fill\", \"none\");\r\n this._selectionPath.classList.add(styles[\"selection-link\"]);\r\n\r\n svg.appendChild(this._selectionPath);\r\n\r\n this._selectionPath.onmousedown = (evt: MouseEvent) => this.onClick(evt);\r\n\r\n if (this._portB) {\r\n // Update\r\n this.update();\r\n }\r\n\r\n this._onSelectionChangedObserver = this._graphCanvas.stateManager.onSelectionChangedObservable.add((options) => {\r\n const { selection } = options || {};\r\n if (selection === this) {\r\n this._path.classList.add(styles[\"selected\"]);\r\n this._selectionPath.classList.add(styles[\"selected\"]);\r\n } else {\r\n this._path.classList.remove(styles[\"selected\"]);\r\n this._selectionPath.classList.remove(styles[\"selected\"]);\r\n }\r\n });\r\n }\r\n\r\n onClick(evt: MouseEvent) {\r\n const stateManager = this._graphCanvas.stateManager;\r\n const nodeA = this._nodeA;\r\n const pointA = this._portA.portData;\r\n const nodeB = this._nodeB!;\r\n const pointB = this._portB!.portData;\r\n\r\n const reconnect = (newNode: GraphNode) => {\r\n const newBlock = newNode.content.data as any;\r\n\r\n // Delete previous link\r\n this.dispose();\r\n\r\n // Connect to the new block\r\n this._graphCanvas.connectNodes(nodeA, pointA, newNode, newNode.getPortDataForPortDataContent(newBlock.input)!);\r\n this._graphCanvas.connectNodes(newNode, newNode.getPortDataForPortDataContent(newBlock.output)!, nodeB, pointB);\r\n\r\n stateManager.onRebuildRequiredObservable.notifyObservers();\r\n };\r\n\r\n if (evt.altKey) {\r\n if (!stateManager.isElbowConnectionAllowed(this._portA, this._portB!)) {\r\n return;\r\n }\r\n\r\n // Create an elbow at the clicked location\r\n stateManager.onNewNodeCreatedObservable.addOnce(reconnect);\r\n\r\n stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: \"ElbowBlock\",\r\n targetX: evt.clientX,\r\n targetY: evt.clientY,\r\n needRepositioning: true,\r\n });\r\n\r\n // Make sure the undo/redo stack is reverted as we did 2 actions (create and connect)\r\n stateManager.historyStack.collapseLastTwo();\r\n\r\n return;\r\n }\r\n\r\n if (evt.ctrlKey) {\r\n if (!stateManager.isDebugConnectionAllowed(this._portA, this._portB!)) {\r\n return;\r\n }\r\n\r\n // Create a debug at the clicked location\r\n stateManager.onNewNodeCreatedObservable.addOnce(reconnect);\r\n\r\n stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: \"DebugBlock\",\r\n targetX: evt.clientX,\r\n targetY: evt.clientY,\r\n needRepositioning: true,\r\n });\r\n\r\n // Make sure the undo/redo stack is reverted as we did 2 actions (create and connect)\r\n stateManager.historyStack.collapseLastTwo();\r\n return;\r\n }\r\n\r\n stateManager.onSelectionChangedObservable.notifyObservers({ selection: this });\r\n }\r\n\r\n public dispose(notify = true) {\r\n this._graphCanvas.stateManager.onSelectionChangedObservable.remove(this._onSelectionChangedObserver);\r\n\r\n if (this._path.parentElement) {\r\n this._path.parentElement.removeChild(this._path);\r\n }\r\n\r\n if (this._selectionPath.parentElement) {\r\n this._selectionPath.parentElement.removeChild(this._selectionPath);\r\n }\r\n\r\n if (this._gradient) {\r\n if (this._gradient.parentElement) {\r\n this._gradient.parentElement.removeChild(this._gradient);\r\n }\r\n }\r\n\r\n if (this._nodeB) {\r\n this._nodeA.links.splice(this._nodeA.links.indexOf(this), 1);\r\n this._nodeB.links.splice(this._nodeB.links.indexOf(this), 1);\r\n this._graphCanvas.links.splice(this._graphCanvas.links.indexOf(this), 1);\r\n\r\n this._portA.portData.disconnectFrom(this._portB!.portData);\r\n\r\n RefreshNode(this._nodeB, undefined, undefined, this._graphCanvas);\r\n }\r\n\r\n if (notify) {\r\n this.onDisposedObservable.notifyObservers(this);\r\n\r\n this.onDisposedObservable.clear();\r\n }\r\n }\r\n}\r\n"]}
@@ -50,6 +50,7 @@ export declare class StateManager {
50
50
  isElbowConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;
51
51
  isDebugConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;
52
52
  applyNodePortDesign: (data: IPortData, element: HTMLElement, img: HTMLImageElement, pip: HTMLDivElement) => void;
53
+ getPortColor: (portData: IPortData) => string;
53
54
  storeEditorData: (serializationObject: any, frame?: Nullable<GraphFrame>) => void;
54
55
  getEditorDataMap: () => {
55
56
  [key: number]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"stateManager.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/stateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,2CAA6B;AAalD,MAAM,OAAO,YAAY;IAAzB;QAQI,kCAA6B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAC3E,iCAA4B,GAAG,IAAI,UAAU,EAAsC,CAAC;QACpF,6BAAwB,GAAG,IAAI,UAAU,EAAc,CAAC;QACxD,+BAA0B,GAAG,IAAI,UAAU,EAAiB,CAAC;QAC7D,iCAA4B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC3D,wBAAmB,GAAG,IAAI,UAAU,EAAwB,CAAC;QAC7D,yBAAoB,GAAG,IAAI,UAAU,EAAqB,CAAC;QAC3D,sCAAiC,GAAG,IAAI,UAAU,EAAsC,CAAC;QACzF,+BAA0B,GAAG,IAAI,UAAU,EAAa,CAAC;QACzD,gCAA2B,GAAG,IAAI,UAAU,EAAQ,CAAC;QACrD,0BAAqB,GAAG,IAAI,UAAU,EAAa,CAAC;QACpD,2CAAsC,GAAG,IAAI,UAAU,EAAU,CAAC;QAClE,kCAA6B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC5D,sBAAiB,GAAG,IAAI,UAAU,EAAQ,CAAC;QAC3C,iCAA4B,GAAG,IAAI,UAAU,EAAuG,CAAC;QACrJ,8BAAyB,GAAG,IAAI,UAAU,EAAkC,CAAC;QAC7E,8BAAyB,GAAG,IAAI,UAAU,EAAW,CAAC;IAc1D,CAAC;CAAA","sourcesContent":["import type { Vector2 } from \"core/Maths/math.vector\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { GraphFrame } from \"./graphFrame\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport type { INodeData } from \"./interfaces/nodeData\";\r\nimport type { IPortData } from \"./interfaces/portData\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport type { NodePort } from \"./nodePort\";\r\nimport type { HistoryStack } from \"../historyStack\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\nexport class StateManager {\r\n data: any;\r\n hostDocument: Document;\r\n lockObject: any;\r\n modalIsDisplayed: boolean;\r\n\r\n historyStack: HistoryStack;\r\n\r\n onSearchBoxRequiredObservable = new Observable<{ x: number; y: number }>();\r\n onSelectionChangedObservable = new Observable<Nullable<ISelectionChangedOptions>>();\r\n onFrameCreatedObservable = new Observable<GraphFrame>();\r\n onUpdateRequiredObservable = new Observable<Nullable<any>>();\r\n onGraphNodeRemovalObservable = new Observable<GraphNode>();\r\n onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();\r\n onCandidateLinkMoved = new Observable<Nullable<Vector2>>();\r\n onCandidatePortSelectedObservable = new Observable<Nullable<NodePort | FrameNodePort>>();\r\n onNewNodeCreatedObservable = new Observable<GraphNode>();\r\n onRebuildRequiredObservable = new Observable<void>();\r\n onNodeMovedObservable = new Observable<GraphNode>();\r\n onErrorMessageDialogRequiredObservable = new Observable<string>();\r\n onExposePortOnFrameObservable = new Observable<GraphNode>();\r\n onGridSizeChanged = new Observable<void>();\r\n onNewBlockRequiredObservable = new Observable<{ type: string; targetX: number; targetY: number; needRepositioning?: boolean; smartAdd?: boolean }>();\r\n onHighlightNodeObservable = new Observable<{ data: any; active: boolean }>();\r\n onPreviewCommandActivated = new Observable<boolean>();\r\n\r\n exportData: (data: any, frame?: Nullable<GraphFrame>) => string;\r\n isElbowConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n isDebugConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n applyNodePortDesign: (data: IPortData, element: HTMLElement, img: HTMLImageElement, pip: HTMLDivElement) => void;\r\n\r\n storeEditorData: (serializationObject: any, frame?: Nullable<GraphFrame>) => void;\r\n\r\n getEditorDataMap: () => { [key: number]: number };\r\n\r\n getScene?: () => Scene;\r\n\r\n createDefaultInputData: (rootData: any, portData: IPortData, nodeContainer: INodeContainer) => Nullable<{ data: INodeData; name: string }>;\r\n}\r\n"]}
1
+ {"version":3,"file":"stateManager.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/stateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,2CAA6B;AAalD,MAAM,OAAO,YAAY;IAAzB;QAQI,kCAA6B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAC3E,iCAA4B,GAAG,IAAI,UAAU,EAAsC,CAAC;QACpF,6BAAwB,GAAG,IAAI,UAAU,EAAc,CAAC;QACxD,+BAA0B,GAAG,IAAI,UAAU,EAAiB,CAAC;QAC7D,iCAA4B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC3D,wBAAmB,GAAG,IAAI,UAAU,EAAwB,CAAC;QAC7D,yBAAoB,GAAG,IAAI,UAAU,EAAqB,CAAC;QAC3D,sCAAiC,GAAG,IAAI,UAAU,EAAsC,CAAC;QACzF,+BAA0B,GAAG,IAAI,UAAU,EAAa,CAAC;QACzD,gCAA2B,GAAG,IAAI,UAAU,EAAQ,CAAC;QACrD,0BAAqB,GAAG,IAAI,UAAU,EAAa,CAAC;QACpD,2CAAsC,GAAG,IAAI,UAAU,EAAU,CAAC;QAClE,kCAA6B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC5D,sBAAiB,GAAG,IAAI,UAAU,EAAQ,CAAC;QAC3C,iCAA4B,GAAG,IAAI,UAAU,EAAuG,CAAC;QACrJ,8BAAyB,GAAG,IAAI,UAAU,EAAkC,CAAC;QAC7E,8BAAyB,GAAG,IAAI,UAAU,EAAW,CAAC;IAgB1D,CAAC;CAAA","sourcesContent":["import type { Vector2 } from \"core/Maths/math.vector\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { GraphFrame } from \"./graphFrame\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport type { INodeData } from \"./interfaces/nodeData\";\r\nimport type { IPortData } from \"./interfaces/portData\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport type { NodePort } from \"./nodePort\";\r\nimport type { HistoryStack } from \"../historyStack\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\nexport class StateManager {\r\n data: any;\r\n hostDocument: Document;\r\n lockObject: any;\r\n modalIsDisplayed: boolean;\r\n\r\n historyStack: HistoryStack;\r\n\r\n onSearchBoxRequiredObservable = new Observable<{ x: number; y: number }>();\r\n onSelectionChangedObservable = new Observable<Nullable<ISelectionChangedOptions>>();\r\n onFrameCreatedObservable = new Observable<GraphFrame>();\r\n onUpdateRequiredObservable = new Observable<Nullable<any>>();\r\n onGraphNodeRemovalObservable = new Observable<GraphNode>();\r\n onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();\r\n onCandidateLinkMoved = new Observable<Nullable<Vector2>>();\r\n onCandidatePortSelectedObservable = new Observable<Nullable<NodePort | FrameNodePort>>();\r\n onNewNodeCreatedObservable = new Observable<GraphNode>();\r\n onRebuildRequiredObservable = new Observable<void>();\r\n onNodeMovedObservable = new Observable<GraphNode>();\r\n onErrorMessageDialogRequiredObservable = new Observable<string>();\r\n onExposePortOnFrameObservable = new Observable<GraphNode>();\r\n onGridSizeChanged = new Observable<void>();\r\n onNewBlockRequiredObservable = new Observable<{ type: string; targetX: number; targetY: number; needRepositioning?: boolean; smartAdd?: boolean }>();\r\n onHighlightNodeObservable = new Observable<{ data: any; active: boolean }>();\r\n onPreviewCommandActivated = new Observable<boolean>();\r\n\r\n exportData: (data: any, frame?: Nullable<GraphFrame>) => string;\r\n isElbowConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n isDebugConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n applyNodePortDesign: (data: IPortData, element: HTMLElement, img: HTMLImageElement, pip: HTMLDivElement) => void;\r\n\r\n getPortColor: (portData: IPortData) => string;\r\n\r\n storeEditorData: (serializationObject: any, frame?: Nullable<GraphFrame>) => void;\r\n\r\n getEditorDataMap: () => { [key: number]: number };\r\n\r\n getScene?: () => Scene;\r\n\r\n createDefaultInputData: (rootData: any, portData: IPortData, nodeContainer: INodeContainer) => Nullable<{ data: INodeData; name: string }>;\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/shared-ui-components",
3
- "version": "7.37.1",
3
+ "version": "7.37.2",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
package/styleHelper.d.ts CHANGED
@@ -3,4 +3,4 @@
3
3
  * @param source document to copy styles from
4
4
  * @param target document or shadow root to copy styles to
5
5
  */
6
- export declare function CopyStyles(source: Document, target: Document): void;
6
+ export declare function CopyStyles(source: Document, target: DocumentOrShadowRoot): void;
package/styleHelper.js CHANGED
@@ -6,16 +6,26 @@
6
6
  export function CopyStyles(source, target) {
7
7
  // Copy all <style> elements
8
8
  Array.from(source.querySelectorAll("style")).forEach((style) => {
9
- const newStyle = target.createElement("style");
9
+ const newStyle = source.createElement("style");
10
10
  newStyle.textContent = style.textContent;
11
- target.head.appendChild(newStyle);
11
+ if (target.head) {
12
+ target.head.appendChild(newStyle);
13
+ }
14
+ else {
15
+ target.appendChild(newStyle);
16
+ }
12
17
  });
13
18
  // Copy all <link> elements for stylesheets
14
19
  Array.from(source.querySelectorAll('link[rel="stylesheet"]')).forEach((link) => {
15
- const newLink = target.createElement("link");
20
+ const newLink = source.createElement("link");
16
21
  newLink.rel = "stylesheet";
17
22
  newLink.href = link.href;
18
- target.head.appendChild(newLink);
23
+ if (target.head) {
24
+ target.head.appendChild(newLink);
25
+ }
26
+ else {
27
+ target.appendChild(newLink);
28
+ }
19
29
  });
20
30
  }
21
31
  //# sourceMappingURL=styleHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styleHelper.js","sourceRoot":"","sources":["../../../dev/sharedUiComponents/src/styleHelper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,MAAgB;IACzD,4BAA4B;IAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/C,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;QAC3B,OAAO,CAAC,IAAI,GAAI,IAAwB,CAAC,IAAI,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/**\r\n * Copy all styles from a document to another document or shadow root\r\n * @param source document to copy styles from\r\n * @param target document or shadow root to copy styles to\r\n */\r\nexport function CopyStyles(source: Document, target: Document) {\r\n // Copy all <style> elements\r\n Array.from(source.querySelectorAll(\"style\")).forEach((style) => {\r\n const newStyle = target.createElement(\"style\");\r\n newStyle.textContent = style.textContent;\r\n target.head.appendChild(newStyle);\r\n });\r\n\r\n // Copy all <link> elements for stylesheets\r\n Array.from(source.querySelectorAll('link[rel=\"stylesheet\"]')).forEach((link) => {\r\n const newLink = target.createElement(\"link\");\r\n newLink.rel = \"stylesheet\";\r\n newLink.href = (link as HTMLLinkElement).href;\r\n target.head.appendChild(newLink);\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"styleHelper.js","sourceRoot":"","sources":["../../../dev/sharedUiComponents/src/styleHelper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,MAA4B;IACrE,4BAA4B;IAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/C,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACzC,IAAK,MAAmB,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACH,MAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;QAC3B,OAAO,CAAC,IAAI,GAAI,IAAwB,CAAC,IAAI,CAAC;QAC9C,IAAK,MAAmB,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACH,MAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/**\r\n * Copy all styles from a document to another document or shadow root\r\n * @param source document to copy styles from\r\n * @param target document or shadow root to copy styles to\r\n */\r\nexport function CopyStyles(source: Document, target: DocumentOrShadowRoot) {\r\n // Copy all <style> elements\r\n Array.from(source.querySelectorAll(\"style\")).forEach((style) => {\r\n const newStyle = source.createElement(\"style\");\r\n newStyle.textContent = style.textContent;\r\n if ((target as Document).head) {\r\n (target as Document).head.appendChild(newStyle);\r\n } else {\r\n (target as ShadowRoot).appendChild(newStyle);\r\n }\r\n });\r\n\r\n // Copy all <link> elements for stylesheets\r\n Array.from(source.querySelectorAll('link[rel=\"stylesheet\"]')).forEach((link) => {\r\n const newLink = source.createElement(\"link\");\r\n newLink.rel = \"stylesheet\";\r\n newLink.href = (link as HTMLLinkElement).href;\r\n if ((target as Document).head) {\r\n (target as Document).head.appendChild(newLink);\r\n } else {\r\n (target as ShadowRoot).appendChild(newLink);\r\n }\r\n });\r\n}\r\n"]}