rspace-online/lib/TransformEvent.ts

67 lines
1.3 KiB
TypeScript

import type { DOMRectTransformReadonly } from "./DOMRectTransform";
declare global {
interface HTMLElementEventMap {
transform: TransformEvent;
}
}
export class TransformEvent extends Event {
readonly #current: DOMRectTransformReadonly;
readonly #previous: DOMRectTransformReadonly;
constructor(current: DOMRectTransformReadonly, previous?: DOMRectTransformReadonly) {
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;
}
}