emit mutable rect

This commit is contained in:
Orion Reed 2024-12-14 14:01:42 -05:00
parent f93afb7314
commit 20c5f528db
1 changed files with 12 additions and 11 deletions

View File

@ -472,30 +472,31 @@ export class FolkShape extends HTMLElement {
} }
#dispatchTransformEvent() { #dispatchTransformEvent() {
this.#readonlyRect = new DOMRectTransformReadonly(this.#rect); const emmittedRect = new DOMRectTransform(this.#rect);
const event = new TransformEvent(emmittedRect, this.#previousRect);
const event = new TransformEvent(this.#readonlyRect, this.#previousRect);
this.dispatchEvent(event); this.dispatchEvent(event);
if (event.xPrevented) { if (event.xPrevented) {
this.#rect.x = this.#previousRect.x; emmittedRect.x = this.#previousRect.x;
} }
if (event.yPrevented) { if (event.yPrevented) {
this.#rect.y = this.#previousRect.y; emmittedRect.y = this.#previousRect.y;
} }
if (event.widthPrevented) { if (event.widthPrevented) {
this.#rect.width = this.#previousRect.width; emmittedRect.width = this.#previousRect.width;
} }
if (event.heightPrevented) { if (event.heightPrevented) {
this.#rect.height = this.#previousRect.height; emmittedRect.height = this.#previousRect.height;
} }
if (event.rotatePrevented) { if (event.rotatePrevented) {
this.#rect.rotation = this.#previousRect.rotation; emmittedRect.rotation = this.#previousRect.rotation;
} }
this.style.transform = this.#rect.toCssString(); this.style.transform = emmittedRect.toCssString();
this.style.width = this.#attrWidth === 'auto' ? '' : `${this.#rect.width}px`; this.style.width = this.#attrWidth === 'auto' ? '' : `${emmittedRect.width}px`;
this.style.height = this.#attrHeight === 'auto' ? '' : `${this.#rect.height}px`; this.style.height = this.#attrHeight === 'auto' ? '' : `${emmittedRect.height}px`;
this.#readonlyRect = new DOMRectTransformReadonly(emmittedRect);
} }
#onAutoResize = (entry: ResizeObserverEntry) => { #onAutoResize = (entry: ResizeObserverEntry) => {