Files
ueblueprint/js/template/IFromToPositionedTemplate.js
2025-01-25 16:12:44 +02:00

34 lines
1.2 KiB
JavaScript
Executable File

import ITemplate from "./ITemplate.js"
/**
* @template {IFromToPositionedElement} T
* @extends {ITemplate<T>}
*/
export default class IFromToPositionedTemplate extends ITemplate {
/** @param {PropertyValues} changedProperties */
update(changedProperties) {
super.update(changedProperties)
const [originX, originY, targetX, targetY] = [
Math.round(this.element.originX),
Math.round(this.element.originY),
Math.round(this.element.targetX),
Math.round(this.element.targetY),
]
const [left, top, width, height] = [
Math.min(originX, targetX),
Math.min(originY, targetY),
Math.abs(originX - targetX),
Math.abs(originY - targetY),
]
if (changedProperties.has("originX") || changedProperties.has("targetX")) {
this.element.style.left = `${left}px`
this.element.style.width = `${width}px`
}
if (changedProperties.has("originY") || changedProperties.has("targetY")) {
this.element.style.top = `${top}px`
this.element.style.height = `${height}px`
}
}
}