{"version":3,"file":"FederatedEvent.mjs","sources":["../src/FederatedEvent.ts"],"sourcesContent":["import { Point } from 'pixijs/core';\n\nimport type { EventBoundary } from './EventBoundary';\nimport type { FederatedEventTarget } from './FederatedEventTarget';\n\n/**\n * An DOM-compatible synthetic event implementation that is \"forwarded\" on behalf of an original\n * FederatedEvent or native {@link https://dom.spec.whatwg.org/#event Event}.\n * @memberof PIXI\n * @typeParam N - The type of native event held.\n */\nexport class FederatedEvent<N extends UIEvent = UIEvent> implements UIEvent\n{\n    /** Flags whether this event bubbles. This will take effect only if it is set before propagation. */\n    public bubbles = true;\n\n    /** @deprecated since 7.0.0 */\n    public cancelBubble = true;\n\n    /**\n     * Flags whether this event can be canceled using {@link FederatedEvent.preventDefault}. This is always\n     * false (for now).\n     */\n    public readonly cancelable = false;\n\n    /**\n     * Flag added for compatibility with DOM {@code Event}. It is not used in the Federated Events\n     * API.\n     * @see https://dom.spec.whatwg.org/#dom-event-composed\n     */\n    public readonly composed = false;\n\n    /** The listeners of the event target that are being notified. */\n    public currentTarget: FederatedEventTarget;\n\n    /** Flags whether the default response of the user agent was prevent through this event. */\n    public defaultPrevented = false;\n\n    /**\n     * The propagation phase.\n     * @default {@link FederatedEvent.NONE}\n     */\n    public eventPhase = FederatedEvent.prototype.NONE;\n\n    /** Flags whether this is a user-trusted event */\n    public isTrusted: boolean;\n\n    /** @deprecated since 7.0.0 */\n    public returnValue: boolean;\n\n    /** @deprecated since 7.0.0 */\n    public srcElement: EventTarget;\n\n    /** The event target that this will be dispatched to. */\n    public target: FederatedEventTarget;\n\n    /** The timestamp of when the event was created. */\n    public timeStamp: number;\n\n    /** The type of event, e.g. {@code \"mouseup\"}. */\n    public type: string;\n\n    /** The native event that caused the foremost original event. */\n    public nativeEvent: N;\n\n    /** The original event that caused this event, if any. */\n    public originalEvent: FederatedEvent<N>;\n\n    /** Flags whether propagation was stopped. */\n    public propagationStopped = false;\n\n    /** Flags whether propagation was immediately stopped. */\n    public propagationImmediatelyStopped = false;\n\n    /** The composed path of the event's propagation. The {@code target} is at the end. */\n    public path: FederatedEventTarget[];\n\n    /** The {@link EventBoundary} that manages this event. Null for root events. */\n    public readonly manager: EventBoundary;\n\n    /** Event-specific detail */\n    public detail: number;\n\n    /** The global Window object. */\n    public view: WindowProxy;\n\n    /**\n     * Not supported.\n     * @deprecated since 7.0.0\n     */\n    public which: number;\n\n    /** The coordinates of the evnet relative to the nearest DOM layer. This is a non-standard property. */\n    public layer: Point = new Point();\n\n    /** @readonly */\n    get layerX(): number { return this.layer.x; }\n\n    /** @readonly */\n    get layerY(): number { return this.layer.y; }\n\n    /** The coordinates of the event relative to the DOM document. This is a non-standard property. */\n    public page: Point = new Point();\n\n    /** @readonly */\n    get pageX(): number { return this.page.x; }\n\n    /** @readonly */\n    get pageY(): number { return this.page.y; }\n\n    /**\n     * @param manager - The event boundary which manages this event. Propagation can only occur\n     *  within the boundary's jurisdiction.\n     */\n    constructor(manager: EventBoundary)\n    {\n        this.manager = manager;\n    }\n\n    /**\n     * Fallback for the deprecated {@link PIXI.InteractionEvent.data}.\n     * @deprecated since 7.0.0\n     */\n    get data(): this\n    {\n        return this;\n    }\n\n    /** The propagation path for this event. Alias for {@link EventBoundary.propagationPath}. */\n    composedPath(): FederatedEventTarget[]\n    {\n        // Find the propagation path if it isn't cached or if the target has changed since since\n        // the last evaluation.\n        if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target))\n        {\n            this.path = this.target ? this.manager.propagationPath(this.target) : [];\n        }\n\n        return this.path;\n    }\n\n    /**\n     * Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.\n     * @deprecated\n     * @param _type\n     * @param _bubbles\n     * @param _cancelable\n     */\n    initEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean): void\n    {\n        throw new Error('initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.');\n    }\n\n    /**\n     * Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.\n     * @deprecated\n     * @param _typeArg\n     * @param _bubblesArg\n     * @param _cancelableArg\n     * @param _viewArg\n     * @param _detailArg\n     */\n    initUIEvent(_typeArg: string, _bubblesArg?: boolean, _cancelableArg?: boolean, _viewArg?: Window | null,\n        _detailArg?: number): void\n    {\n        throw new Error('initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.');\n    }\n\n    /** Prevent default behavior of PixiJS and the user agent. */\n    preventDefault(): void\n    {\n        if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable)\n        {\n            this.nativeEvent.preventDefault();\n        }\n\n        this.defaultPrevented = true;\n    }\n\n    /**\n     * Stop this event from propagating to any addition listeners, including on the\n     * {@link FederatedEventTarget.currentTarget currentTarget} and also the following\n     * event targets on the propagation path.\n     */\n    stopImmediatePropagation(): void\n    {\n        this.propagationImmediatelyStopped = true;\n    }\n\n    /**\n     * Stop this event from propagating to the next {@link FederatedEventTarget}. The rest of the listeners\n     * on the {@link FederatedEventTarget.currentTarget currentTarget} will still be notified.\n     */\n    stopPropagation(): void\n    {\n        this.propagationStopped = true;\n    }\n\n    AT_TARGET = 1;\n    BUBBLING_PHASE = 2;\n    CAPTURING_PHASE = 3;\n    NONE = 0;\n}\n"],"names":[],"mappings":"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"}