126 lines
4.1 KiB
JavaScript
126 lines
4.1 KiB
JavaScript
'use strict';
|
|
|
|
var Point = require('../maths/point/Point.js');
|
|
|
|
"use strict";
|
|
class FederatedEvent {
|
|
/**
|
|
* @param manager - The event boundary which manages this event. Propagation can only occur
|
|
* within the boundary's jurisdiction.
|
|
*/
|
|
constructor(manager) {
|
|
/** Flags whether this event bubbles. This will take effect only if it is set before propagation. */
|
|
this.bubbles = true;
|
|
/** @deprecated since 7.0.0 */
|
|
this.cancelBubble = true;
|
|
/**
|
|
* Flags whether this event can be canceled using {@link FederatedEvent.preventDefault}. This is always
|
|
* false (for now).
|
|
*/
|
|
this.cancelable = false;
|
|
/**
|
|
* Flag added for compatibility with DOM {@code Event}. It is not used in the Federated Events
|
|
* API.
|
|
* @see https://dom.spec.whatwg.org/#dom-event-composed
|
|
*/
|
|
this.composed = false;
|
|
/** Flags whether the default response of the user agent was prevent through this event. */
|
|
this.defaultPrevented = false;
|
|
/**
|
|
* The propagation phase.
|
|
* @default {@link FederatedEvent.NONE}
|
|
*/
|
|
this.eventPhase = FederatedEvent.prototype.NONE;
|
|
/** Flags whether propagation was stopped. */
|
|
this.propagationStopped = false;
|
|
/** Flags whether propagation was immediately stopped. */
|
|
this.propagationImmediatelyStopped = false;
|
|
/** The coordinates of the event relative to the nearest DOM layer. This is a non-standard property. */
|
|
this.layer = new Point.Point();
|
|
/** The coordinates of the event relative to the DOM document. This is a non-standard property. */
|
|
this.page = new Point.Point();
|
|
this.NONE = 0;
|
|
this.CAPTURING_PHASE = 1;
|
|
this.AT_TARGET = 2;
|
|
this.BUBBLING_PHASE = 3;
|
|
this.manager = manager;
|
|
}
|
|
/** @readonly */
|
|
get layerX() {
|
|
return this.layer.x;
|
|
}
|
|
/** @readonly */
|
|
get layerY() {
|
|
return this.layer.y;
|
|
}
|
|
/** @readonly */
|
|
get pageX() {
|
|
return this.page.x;
|
|
}
|
|
/** @readonly */
|
|
get pageY() {
|
|
return this.page.y;
|
|
}
|
|
/**
|
|
* Fallback for the deprecated @code{InteractionEvent.data}.
|
|
* @deprecated since 7.0.0
|
|
*/
|
|
get data() {
|
|
return this;
|
|
}
|
|
/** The propagation path for this event. Alias for {@link EventBoundary.propagationPath}. */
|
|
composedPath() {
|
|
if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {
|
|
this.path = this.target ? this.manager.propagationPath(this.target) : [];
|
|
}
|
|
return this.path;
|
|
}
|
|
/**
|
|
* Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.
|
|
* @deprecated
|
|
* @param _type
|
|
* @param _bubbles
|
|
* @param _cancelable
|
|
*/
|
|
initEvent(_type, _bubbles, _cancelable) {
|
|
throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.");
|
|
}
|
|
/**
|
|
* Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.
|
|
* @deprecated
|
|
* @param _typeArg
|
|
* @param _bubblesArg
|
|
* @param _cancelableArg
|
|
* @param _viewArg
|
|
* @param _detailArg
|
|
*/
|
|
initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {
|
|
throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.");
|
|
}
|
|
/** Prevent default behavior of PixiJS and the user agent. */
|
|
preventDefault() {
|
|
if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {
|
|
this.nativeEvent.preventDefault();
|
|
}
|
|
this.defaultPrevented = true;
|
|
}
|
|
/**
|
|
* Stop this event from propagating to any addition listeners, including on the
|
|
* {@link FederatedEventTarget.currentTarget currentTarget} and also the following
|
|
* event targets on the propagation path.
|
|
*/
|
|
stopImmediatePropagation() {
|
|
this.propagationImmediatelyStopped = true;
|
|
}
|
|
/**
|
|
* Stop this event from propagating to the next {@link FederatedEventTarget}. The rest of the listeners
|
|
* on the {@link FederatedEventTarget.currentTarget currentTarget} will still be notified.
|
|
*/
|
|
stopPropagation() {
|
|
this.propagationStopped = true;
|
|
}
|
|
}
|
|
|
|
exports.FederatedEvent = FederatedEvent;
|
|
//# sourceMappingURL=FederatedEvent.js.map
|