@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.
- package/nodeGraphSystem/nodeLink.js +7 -6
- package/nodeGraphSystem/nodeLink.js.map +1 -1
- package/nodeGraphSystem/stateManager.d.ts +1 -0
- package/nodeGraphSystem/stateManager.js.map +1 -1
- package/package.json +1 -1
- package/styleHelper.d.ts +1 -1
- package/styleHelper.js +14 -4
- package/styleHelper.js.map +1 -1
@@ -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.
|
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 &&
|
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_${
|
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",
|
129
|
+
stop1.setAttribute("stop-color", extractedColorA);
|
129
130
|
stop2.setAttribute("offset", "100%");
|
130
|
-
stop2.setAttribute("stop-color",
|
131
|
+
stop2.setAttribute("stop-color", extractedColorB);
|
131
132
|
this._path.setAttribute("stroke", `url(#${gradientId})`);
|
132
133
|
}
|
133
134
|
else {
|
134
|
-
this._path.setAttribute("stroke",
|
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;
|
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
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:
|
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 =
|
9
|
+
const newStyle = source.createElement("style");
|
10
10
|
newStyle.textContent = style.textContent;
|
11
|
-
target.head
|
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 =
|
20
|
+
const newLink = source.createElement("link");
|
16
21
|
newLink.rel = "stylesheet";
|
17
22
|
newLink.href = link.href;
|
18
|
-
target.head
|
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
|
package/styleHelper.js.map
CHANGED
@@ -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,
|
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"]}
|