UNPKG

@pixi/events

Version:

Federated Events API, the plumbing behind the propagation of UI events into the PixiJS scene graph.

551 lines (550 loc) 23 kB
import type { FederatedEventTarget } from './FederatedEventTarget'; /** * The tracking data for each pointer held in the state of an {@link PIXI.EventBoundary}. * * ```ts * pressTargetsByButton: { * [id: number]: FederatedEventTarget[]; * }; * clicksByButton: { * [id: number]: { * clickCount: number; * target: FederatedEventTarget; * timeStamp: number; * }; * }; * overTargets: FederatedEventTarget[]; * ``` * @typedef {object} TrackingData * @property {Record.<number, PIXI.FederatedEventTarget>} pressTargetsByButton - The pressed display objects' * propagation paths by each button of the pointer. * @property {Record.<number, object>} clicksByButton - Holds clicking data for each button of the pointer. * @property {PIXI.DisplayObject[]} overTargets - The DisplayObject propagation path over which the pointer is hovering. * @memberof PIXI */ export type TrackingData = { pressTargetsByButton: { [id: number]: FederatedEventTarget[]; }; clicksByButton: { [id: number]: { clickCount: number; target: FederatedEventTarget; timeStamp: number; }; }; overTargets: FederatedEventTarget[]; }; /** * Internal storage of an event listener in EventEmitter. * @ignore */ type EmitterListener = { fn(...args: any[]): any; context: any; once: boolean; }; /** * Internal storage of event listeners in EventEmitter. * @ignore */ export type EmitterListeners = Record<string, EmitterListener | EmitterListener[]>; export {}; /** * Fired when a mouse button (usually a mouse left-button) is pressed on the display. * object. DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mousedown * @param {PIXI.FederatedPointerEvent} event - The mousedown event. */ /** * Capture phase equivalent of {@code mousedown}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mousedowncapture * @param {PIXI.FederatedPointerEvent} event - The capture phase mousedown. */ /** * Fired when a pointer device secondary button (usually a mouse right-button) is pressed * on the display object. DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightdown * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code rightdown}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightdowncapture * @param {PIXI.FederatedPointerEvent} event - The rightdowncapture event. */ /** * Fired when a pointer device button (usually a mouse left-button) is released over the display * object. DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseup * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mouseup}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseupcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device secondary button (usually a mouse right-button) is released * over the display object. DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightup * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code rightup}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightupcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button (usually a mouse left-button) is pressed and released on * the display object. DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * A {@code click} event fires after the {@code pointerdown} and {@code pointerup} events, in that * order. If the mouse is moved over another DisplayObject after the {@code pointerdown} event, the * {@code click} event is fired on the most specific common ancestor of the two target DisplayObjects. * * The {@code detail} property of the event is the number of clicks that occurred within a 200ms * window of each other upto the current click. For example, it will be {@code 2} for a double click. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#click * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code click}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#clickcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device secondary button (usually a mouse right-button) is pressed * and released on the display object. DisplayObject's `eventMode` * property must be set to `static` or 'dynamic' to fire event. * * This event follows the semantics of {@code click}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightclick * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code rightclick}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightclickcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button (usually a mouse left-button) is released outside the * display object that initially registered a * [mousedown]{@link PIXI.DisplayObject#event:mousedown}. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * This event is specific to the Federated Events API. It does not have a capture phase, unlike most of the * other events. It only bubbles to the most specific ancestor of the targets of the corresponding {@code pointerdown} * and {@code pointerup} events, i.e. the target of the {@code click} event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseupoutside * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mouseupoutside}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseupoutsidecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device secondary button (usually a mouse right-button) is released * outside the display object that initially registered a * [rightdown]{@link PIXI.DisplayObject#event:rightdown}. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightupoutside * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code rightupoutside}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#rightupoutsidecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device (usually a mouse) is moved globally over the scene. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#globalmousemove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device (usually a mouse) is moved while over the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mousemove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mousemove}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mousemovecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device (usually a mouse) is moved onto the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseover * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mouseover}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseovercapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the mouse pointer is moved over a DisplayObject and its descendant's hit testing boundaries. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseenter * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mouseenter} * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseentercapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device (usually a mouse) is moved off the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * This may be fired on a DisplayObject that was removed from the scene graph immediately after * a {@code mouseover} event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseout * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code mouseout}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseoutcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the mouse pointer exits a DisplayObject and its descendants. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseleave * @param {PIXI.FederatedPointerEvent} event */ /** * Capture phase equivalent of {@code mouseleave}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#mouseleavecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button is pressed on the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerdown * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerdown}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerdowncapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button is released over the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerup * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerup}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerupcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the operating system cancels a pointer event. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointercancel * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointercancel}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointercancelcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button is pressed and released on the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointertap * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointertap}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointertapcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device button is released outside the display object that initially * registered a [pointerdown]{@link PIXI.DisplayObject#event:pointerdown}. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * This event is specific to the Federated Events API. It does not have a capture phase, unlike most of the * other events. It only bubbles to the most specific ancestor of the targets of the corresponding {@code pointerdown} * and {@code pointerup} events, i.e. the target of the {@code click} event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerupoutside * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerupoutside}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerupoutsidecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device is moved globally over the scene. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#globalpointermove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device is moved while over the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointermove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointermove}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointermovecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device is moved onto the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerover * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerover}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerovercapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the pointer is moved over a DisplayObject and its descendant's hit testing boundaries. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerenter * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerenter} * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerentercapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a pointer device is moved off the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerout * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code pointerout}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointeroutcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the pointer leaves the hit testing boundaries of a DisplayObject and its descendants. * * This event notifies only the target and does not bubble. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerleave * @param {PIXI.FederatedPointerEvent} event - The `pointerleave` event. */ /** * Capture phase equivalent of {@code pointerleave}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#pointerleavecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is placed on the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchstart * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code touchstart}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchstartcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is removed from the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchend * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code touchend}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchendcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when the operating system cancels a touch. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchcancel * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code touchcancel}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchcancelcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is placed and removed from the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#tap * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code tap}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#tapcapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is removed outside of the display object that initially * registered a [touchstart]{@link PIXI.DisplayObject#event:touchstart}. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchendoutside * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code touchendoutside}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchendoutsidecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is moved globally over the scene. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#globaltouchmove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a touch point is moved along the display object. * DisplayObject's `eventMode` property must be set to `static` or 'dynamic' to fire event. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchmove * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Capture phase equivalent of {@code touchmove}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#touchmovecapture * @param {PIXI.FederatedPointerEvent} event - Event */ /** * Fired when a the user scrolls with the mouse cursor over a DisplayObject. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#wheel * @type {PIXI.FederatedWheelEvent} */ /** * Capture phase equivalent of {@code wheel}. * * These events are propagating from the {@link PIXI.EventSystem EventSystem} in @pixi/events. * @event PIXI.DisplayObject#wheelcapture * @type {PIXI.FederatedWheelEvent} */