import { css, html } from "lit" import Configuration from "../Configuration" import IResizeableTemplate from "./IResizeableTemplate" import LinearColorEntity from "../entity/LinearColorEntity" /** * @typedef {import("../element/NodeElement").default} NodeElement * @typedef {import("../element/PinElement").default} PinElement */ export default class CommentNodeTemplate extends IResizeableTemplate { #color = LinearColorEntity.getWhite() /** @param {NodeElement} element */ constructed(element) { if (element.entity.CommentColor) { this.#color.setFromRGBANumber(element.entity.CommentColor.toNumber()) this.#color.setFromHSVA(this.#color.H.value, this.#color.S.value, Math.pow(this.#color.V.value, 0.45) * 0.67) } element.classList.add("ueb-node-style-comment", "ueb-node-resizeable") element.sizeX ??= 25 * Configuration.gridSize element.sizeY ??= 6 * Configuration.gridSize super.constructed(element) // Keep it at the end because it calls this.getColor() where this.#color must be initialized } getColor() { return css`${Math.round(this.#color.R.value * 255)}, ${Math.round(this.#color.G.value * 255)}, ${Math.round(this.#color.B.value * 255)}` } getDraggableElement() { return this.element.querySelector(".ueb-node-top") } render() { return html`
${this.element.entity.NodeComment}
` } /** @param {Number} value */ setSizeX(value) { value = Math.round(value) if (value >= Configuration.gridSet * Configuration.gridSize) { this.element.setNodeWidth(value) return true } return false } /** @param {Number} value */ setSizeY(value) { value = Math.round(value) if (value >= 3 * Configuration.gridSize) { this.element.setNodeHeight(value) return true } return false } }