@playkit-js/playkit-js
Version:
[](https://github.com/kaltura/playkit-js/actions/workflows/run_canary.yaml) [ • 2.8 kB
text/typescript
//@flow
/**
* Create an Event work-alike object based on the dictionary.
* The event should contain all of the same properties from the dict.
* @param {string} type -
* @param {Object=} opt_dict -
* @constructor
* @extends {Event}
*/
export class FakeEvent {
/** @const {boolean} */
public bubbles: boolean;
/** @const {boolean} */
public cancelable: boolean;
/** @const {boolean} */
public defaultPrevented: boolean;
/**
* According to MDN, Chrome uses high-res timers instead of epoch time.
* Follow suit so that timeStamps on FakeEvents use the same base as
* on native Events.
* @const {number}
* @see https://developer.mozilla.org/en-US/docs/Web/API/Event/timeStamp
*/
public timeStamp: number | Date;
/** @const {string} */
public type: string;
/** @const {boolean} */
public isTrusted: boolean;
/** @type {EventTarget} */
public currentTarget: any;
/** @type {EventTarget} */
public target: any;
/**
* Non-standard property read by FakeEventTarget to stop processing listeners.
* @type {boolean}
*/
public stopped: boolean;
public payload: any;
constructor(type: string, payload?: any) {
// These Properties below cannot be set by dict. They are all provided for
// compatibility with native events.
/** @const {boolean} */
this.bubbles = false;
/** @const {boolean} */
this.cancelable = false;
/** @const {boolean} */
this.defaultPrevented = false;
/**
* According to MDN, Chrome uses high-res timers instead of epoch time.
* Follow suit so that timeStamps on FakeEvents use the same base as
* on native Events.
* @const {number}
* @see https://developer.mozilla.org/en-US/docs/Web/API/Event/timeStamp
*/
this.timeStamp = window.performance ? window.performance.now() : Date.now();
/** @const {string} */
this.type = type;
/** @const {boolean} */
this.isTrusted = false;
/** @type {EventTarget} */
this.currentTarget = null;
/** @type {EventTarget} */
this.target = null;
/**
* Non-standard property read by FakeEventTarget to stop processing listeners.
* @type {boolean}
*/
this.stopped = false;
this.payload = payload;
}
/**
* Does nothing, since FakeEvents have no default. Provided for compatibility
* with native Events.
* @override
*/
public preventDefault(): void {}
/**
* Stops processing event listeners for this event. Provided for compatibility
* with native Events.
* @override
*/
public stopImmediatePropagation(): void {
this.stopped = true;
}
/**
* Does nothing, since FakeEvents do not bubble. Provided for compatibility
* with native Events.
* @override
*/
public stopPropagation(): void {}
}