1 | import { __read, __spreadArray } from "tslib";
|
2 | import { EventEmitter } from 'eventemitter3';
|
3 | import { CustomEvent } from './CustomEvent';
|
4 | import { FederatedEvent } from './FederatedEvent';
|
5 | import { isFunction, isBoolean, isObject } from '../utils';
|
6 | export var DELEGATION_SPLITTER = ':';
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | var EventTarget =
|
14 |
|
15 | function () {
|
16 | function EventTarget() {
|
17 | |
18 |
|
19 |
|
20 | this.emitter = new EventEmitter();
|
21 | }
|
22 | |
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | EventTarget.prototype.on = function (type, listener, options) {
|
29 | this.addEventListener(type, listener, options);
|
30 | return this;
|
31 | };
|
32 | |
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 | EventTarget.prototype.addEventListener = function (type, listener, options) {
|
39 | var capture = isBoolean(options) && options || isObject(options) && options.capture;
|
40 | var once = isObject(options) && options.once;
|
41 | var context = isFunction(listener) ? undefined : listener;
|
42 |
|
43 |
|
44 | var useDelegatedName = false;
|
45 | var delegatedName = '';
|
46 |
|
47 | if (type.indexOf(DELEGATION_SPLITTER) > -1) {
|
48 | var _a = __read(type.split(DELEGATION_SPLITTER), 2),
|
49 | name_1 = _a[0],
|
50 | eventType = _a[1];
|
51 |
|
52 | type = eventType;
|
53 | delegatedName = name_1;
|
54 | useDelegatedName = true;
|
55 | }
|
56 |
|
57 | type = capture ? "".concat(type, "capture") : type;
|
58 | listener = isFunction(listener) ? listener : listener.handleEvent;
|
59 |
|
60 | if (useDelegatedName) {
|
61 | var originListener_1 = listener;
|
62 |
|
63 | listener = function listener() {
|
64 | var _a;
|
65 |
|
66 | var args = [];
|
67 |
|
68 | for (var _i = 0; _i < arguments.length; _i++) {
|
69 | args[_i] = arguments[_i];
|
70 | }
|
71 |
|
72 | if (((_a = args[0].target) === null || _a === void 0 ? void 0 : _a.name) !== delegatedName) {
|
73 | return;
|
74 | }
|
75 |
|
76 |
|
77 | originListener_1.apply(void 0, __spreadArray([], __read(args), false));
|
78 | };
|
79 | }
|
80 |
|
81 | if (once) {
|
82 | this.emitter.once(type, listener, context);
|
83 | } else {
|
84 | this.emitter.on(type, listener, context);
|
85 | }
|
86 |
|
87 | return this;
|
88 | };
|
89 | |
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 | EventTarget.prototype.off = function (type, listener, options) {
|
96 | if (type) {
|
97 | this.removeEventListener(type, listener, options);
|
98 | } else {
|
99 |
|
100 | this.removeAllEventListeners();
|
101 | }
|
102 |
|
103 | return this;
|
104 | };
|
105 |
|
106 | EventTarget.prototype.removeAllEventListeners = function () {
|
107 | this.emitter.removeAllListeners();
|
108 | };
|
109 |
|
110 | EventTarget.prototype.removeEventListener = function (type, listener, options) {
|
111 | var capture = isBoolean(options) && options || isObject(options) && options.capture;
|
112 | var context = isFunction(listener) ? undefined : listener;
|
113 | type = capture ? "".concat(type, "capture") : type;
|
114 | listener = isFunction(listener) ? listener : listener === null || listener === void 0 ? void 0 : listener.handleEvent;
|
115 | this.emitter.off(type, listener, context);
|
116 | return this;
|
117 | };
|
118 | |
119 |
|
120 |
|
121 |
|
122 |
|
123 |
|
124 |
|
125 | EventTarget.prototype.emit = function (eventName, object) {
|
126 | this.dispatchEvent(new CustomEvent(eventName, object));
|
127 | };
|
128 | |
129 |
|
130 |
|
131 |
|
132 |
|
133 | EventTarget.prototype.dispatchEvent = function (e) {
|
134 | var _a, _b;
|
135 |
|
136 | if (!(e instanceof FederatedEvent)) {
|
137 | throw new Error('DisplayObject cannot propagate events outside of the Federated Events API');
|
138 | }
|
139 |
|
140 | var document =
|
141 | this.ownerDocument || this.document;
|
142 |
|
143 | if (document) {
|
144 | e.manager = ((_a = document.defaultView) === null || _a === void 0 ? void 0 : _a.getEventService()) || null;
|
145 | e.defaultPrevented = false;
|
146 | e.path = [];
|
147 | e.target = this;
|
148 | (_b = e.manager) === null || _b === void 0 ? void 0 : _b.dispatchEvent(e);
|
149 | }
|
150 |
|
151 | return !e.defaultPrevented;
|
152 | };
|
153 |
|
154 | return EventTarget;
|
155 | }();
|
156 |
|
157 | export { EventTarget }; |
\ | No newline at end of file |