diff --git a/src/common/TransformEvent.ts b/src/common/TransformEvent.ts new file mode 100644 index 0000000..146982c --- /dev/null +++ b/src/common/TransformEvent.ts @@ -0,0 +1,61 @@ +import type { TransformDOMRectReadonly } from './TransformDOMRect'; + +// TODO: expose previous and current rects +export class TransformEvent extends Event { + readonly #current: TransformDOMRectReadonly; + readonly #previous: TransformDOMRectReadonly; + + constructor(current: TransformDOMRectReadonly, previous?: TransformDOMRectReadonly) { + super('transform', { cancelable: true, bubbles: true }); + this.#current = current; + this.#previous = previous ?? current; + } + + get current() { + return this.#current; + } + + get previous() { + return this.#previous; + } + + #xPrevented = false; + get xPrevented() { + return this.defaultPrevented || this.#xPrevented; + } + preventX() { + this.#xPrevented = true; + } + + #yPrevented = false; + get yPrevented() { + return this.defaultPrevented || this.#yPrevented; + } + preventY() { + this.#yPrevented = true; + } + + #heightPrevented = false; + get heightPrevented() { + return this.defaultPrevented || this.#heightPrevented; + } + preventHeight() { + this.#heightPrevented = true; + } + + #widthPrevented = false; + get widthPrevented() { + return this.defaultPrevented || this.#widthPrevented; + } + preventWidth() { + this.#widthPrevented = true; + } + + #rotatePrevented = false; + get rotatePrevented() { + return this.defaultPrevented || this.#rotatePrevented; + } + preventRotate() { + this.#rotatePrevented = true; + } +}