mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-04 08:50:33 +08:00
109 lines
2.3 KiB
JavaScript
109 lines
2.3 KiB
JavaScript
import IElement from "./IElement"
|
|
import MouseCreateLink from "../input/mouse/MouseCreateLink"
|
|
import PinTemplate from "../template/PinTemplate"
|
|
|
|
/**
|
|
* @typedef {import("./NodeElement").default} NodeElement
|
|
*/
|
|
export default class PinElement extends IElement {
|
|
|
|
static tagName = "ueb-pin"
|
|
|
|
/** @type {NodeElement} */
|
|
nodeElement
|
|
|
|
/** @type {HTMLElement} */
|
|
clickableElement
|
|
|
|
/** @type {String} */
|
|
#color
|
|
|
|
constructor(entity) {
|
|
super(entity, new PinTemplate())
|
|
/** @type {import("../entity/PinEntity").default} */
|
|
this.entity
|
|
/** @type {PinTemplate} */
|
|
this.template
|
|
}
|
|
|
|
connectedCallback() {
|
|
super.connectedCallback()
|
|
this.#color = window.getComputedStyle(this).getPropertyValue("--ueb-pin-color")
|
|
}
|
|
|
|
createInputObjects() {
|
|
return [
|
|
new MouseCreateLink(this.clickableElement, this.blueprint, {
|
|
moveEverywhere: true,
|
|
looseTarget: true
|
|
}),
|
|
]
|
|
}
|
|
|
|
/**
|
|
* @returns {String}
|
|
*/
|
|
getPinName() {
|
|
return this.entity.PinName
|
|
}
|
|
|
|
/**
|
|
* @returns {String}
|
|
*/
|
|
getPinDisplayName() {
|
|
return this.entity.PinFriendlyName
|
|
}
|
|
|
|
isInput() {
|
|
return this.entity.isInput()
|
|
}
|
|
|
|
isOutput() {
|
|
return this.entity.isOutput()
|
|
}
|
|
|
|
isConnected() {
|
|
return this.entity.isConnected()
|
|
}
|
|
|
|
getType() {
|
|
return this.entity.getType()
|
|
}
|
|
|
|
getClickableElement() {
|
|
return this.clickableElement
|
|
}
|
|
|
|
getColor() {
|
|
return this.#color
|
|
}
|
|
|
|
/**
|
|
* Returns The exact location where the link originates from or arrives at.
|
|
* @returns {Number[]} The location array
|
|
*/
|
|
getLinkLocation() {
|
|
return this.template.getLinkLocation(this)
|
|
}
|
|
|
|
getNodeElement() {
|
|
return this.closest("ueb-node")
|
|
}
|
|
|
|
/**
|
|
* @param {PinElement} targetPinElement
|
|
*/
|
|
linkTo(targetPinElement) {
|
|
this.entity.linkTo(targetPinElement.nodeElement.getNodeName(), targetPinElement.entity)
|
|
}
|
|
|
|
/**
|
|
* @param {PinElement} targetPinElement
|
|
*/
|
|
unlinkFrom(targetPinElement) {
|
|
this.entity.unlinkFrom(targetPinElement.nodeElement.getNodeName(), targetPinElement.entity)
|
|
}
|
|
}
|
|
|
|
customElements.define(PinElement.tagName, PinElement)
|