@planningcenter/chat-react-native 3.15.0-rc.7 → 3.15.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/polyfills/events/CustomEvent.d.ts +21 -0
- package/build/polyfills/events/CustomEvent.d.ts.map +1 -0
- package/build/polyfills/events/CustomEvent.js +22 -0
- package/build/polyfills/events/CustomEvent.js.map +1 -0
- package/build/polyfills/events/Event.d.ts +49 -0
- package/build/polyfills/events/Event.d.ts.map +1 -0
- package/build/polyfills/events/Event.js +125 -0
- package/build/polyfills/events/Event.js.map +1 -0
- package/build/polyfills/events/EventHandlerAttributes.d.ts +8 -0
- package/build/polyfills/events/EventHandlerAttributes.d.ts.map +1 -0
- package/build/polyfills/events/EventHandlerAttributes.js +46 -0
- package/build/polyfills/events/EventHandlerAttributes.js.map +1 -0
- package/build/polyfills/events/EventTarget.d.ts +33 -0
- package/build/polyfills/events/EventTarget.d.ts.map +1 -0
- package/build/polyfills/events/EventTarget.js +238 -0
- package/build/polyfills/events/EventTarget.js.map +1 -0
- package/build/polyfills/events/internals/EventInternals.d.ts +30 -0
- package/build/polyfills/events/internals/EventInternals.d.ts.map +1 -0
- package/build/polyfills/events/internals/EventInternals.js +76 -0
- package/build/polyfills/events/internals/EventInternals.js.map +1 -0
- package/build/polyfills/events/internals/EventTargetInternals.d.ts +9 -0
- package/build/polyfills/events/internals/EventTargetInternals.d.ts.map +1 -0
- package/build/polyfills/events/internals/EventTargetInternals.js +11 -0
- package/build/polyfills/events/internals/EventTargetInternals.js.map +1 -0
- package/build/polyfills/webidl/PlatformObjects.d.ts +31 -0
- package/build/polyfills/webidl/PlatformObjects.d.ts.map +1 -0
- package/build/polyfills/webidl/PlatformObjects.js +39 -0
- package/build/polyfills/webidl/PlatformObjects.js.map +1 -0
- package/package.json +5 -5
- package/src/__tests__/event-polyfill.test.ts +314 -0
- package/src/index.tsx +2 -0
- package/src/polyfills/events/CustomEvent.ts +32 -0
- package/src/polyfills/events/Event.ts +186 -0
- package/src/polyfills/events/EventHandlerAttributes.ts +67 -0
- package/src/polyfills/events/EventTarget.ts +360 -0
- package/src/polyfills/events/README.md +1 -0
- package/src/polyfills/events/internals/EventInternals.ts +95 -0
- package/src/polyfills/events/internals/EventTargetInternals.ts +16 -0
- package/src/polyfills/webidl/PlatformObjects.ts +50 -0
package/build/index.d.ts
CHANGED
|
@@ -8,4 +8,6 @@ export * from './types';
|
|
|
8
8
|
export { platformFontWeightBold, Session, TemporaryDefaultColorsType, Uri } from './utils';
|
|
9
9
|
export * from './utils/client';
|
|
10
10
|
export * from './utils/native_adapters';
|
|
11
|
+
export { default as Event } from './polyfills/events/Event';
|
|
12
|
+
export { CustomEvent } from './polyfills/events/CustomEvent';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACvF,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,0BAA0B,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC1F,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACvF,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,0BAA0B,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC1F,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA"}
|
package/build/index.js
CHANGED
|
@@ -8,4 +8,6 @@ export * from './types';
|
|
|
8
8
|
export { platformFontWeightBold, Session, Uri } from './utils';
|
|
9
9
|
export * from './utils/client';
|
|
10
10
|
export * from './utils/native_adapters';
|
|
11
|
+
export { default as Event } from './polyfills/events/Event';
|
|
12
|
+
export { CustomEvent } from './polyfills/events/CustomEvent';
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACvF,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAA8B,GAAG,EAAE,MAAM,SAAS,CAAA;AAC1F,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA","sourcesContent":["export { GroupConversations } from './components'\nexport { ApiProvider, chatQueryClient, useFocusManager } from './contexts/api_provider'\nexport * from './contexts/chat_context'\nexport * from './navigation'\nexport { ScreenLayout } from './navigation/screenLayout'\nexport * from './screens'\nexport * from './types'\nexport { platformFontWeightBold, Session, TemporaryDefaultColorsType, Uri } from './utils'\nexport * from './utils/client'\nexport * from './utils/native_adapters'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACvF,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAA8B,GAAG,EAAE,MAAM,SAAS,CAAA;AAC1F,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA","sourcesContent":["export { GroupConversations } from './components'\nexport { ApiProvider, chatQueryClient, useFocusManager } from './contexts/api_provider'\nexport * from './contexts/chat_context'\nexport * from './navigation'\nexport { ScreenLayout } from './navigation/screenLayout'\nexport * from './screens'\nexport * from './types'\nexport { platformFontWeightBold, Session, TemporaryDefaultColorsType, Uri } from './utils'\nexport * from './utils/client'\nexport * from './utils/native_adapters'\nexport { default as Event } from './polyfills/events/Event'\nexport { CustomEvent } from './polyfills/events/CustomEvent'\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* This module implements the `CustomEvent` interface from the DOM.
|
|
9
|
+
* See https://dom.spec.whatwg.org/#interface-customevent.
|
|
10
|
+
*/
|
|
11
|
+
import Event from './Event';
|
|
12
|
+
import type { EventInit as RNEventInit } from './Event';
|
|
13
|
+
export interface CustomEventInit extends RNEventInit {
|
|
14
|
+
detail?: unknown;
|
|
15
|
+
}
|
|
16
|
+
export declare class CustomEvent extends Event {
|
|
17
|
+
private _detail;
|
|
18
|
+
constructor(type: string, options?: CustomEventInit);
|
|
19
|
+
get detail(): unknown;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=CustomEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomEvent.d.ts","sourceRoot":"","sources":["../../../src/polyfills/events/CustomEvent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AAEH,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAA;AAEvD,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAMnD,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* This module implements the `CustomEvent` interface from the DOM.
|
|
9
|
+
* See https://dom.spec.whatwg.org/#interface-customevent.
|
|
10
|
+
*/
|
|
11
|
+
import Event from './Event';
|
|
12
|
+
export class CustomEvent extends Event {
|
|
13
|
+
_detail;
|
|
14
|
+
constructor(type, options) {
|
|
15
|
+
super(type, options);
|
|
16
|
+
this._detail = options?.detail;
|
|
17
|
+
}
|
|
18
|
+
get detail() {
|
|
19
|
+
return this._detail;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=CustomEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomEvent.js","sourceRoot":"","sources":["../../../src/polyfills/events/CustomEvent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AAEH,OAAO,KAAK,MAAM,SAAS,CAAA;AAO3B,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC5B,OAAO,CAAS;IAExB,YAAY,IAAY,EAAE,OAAyB;QACjD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,CAAA;IAChC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * This module implements the `CustomEvent` interface from the DOM.\n * See https://dom.spec.whatwg.org/#interface-customevent.\n */\n\nimport Event from './Event'\nimport type { EventInit as RNEventInit } from './Event'\n\nexport interface CustomEventInit extends RNEventInit {\n detail?: unknown\n}\n\nexport class CustomEvent extends Event {\n private _detail: unknown\n\n constructor(type: string, options?: CustomEventInit) {\n super(type, options)\n\n this._detail = options?.detail\n }\n\n get detail(): unknown {\n return this._detail\n }\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* This module implements the `Event` interface from the DOM.
|
|
9
|
+
* See https://dom.spec.whatwg.org/#interface-event.
|
|
10
|
+
*/
|
|
11
|
+
import type RNEventTarget from './EventTarget';
|
|
12
|
+
export interface EventInit {
|
|
13
|
+
bubbles?: boolean;
|
|
14
|
+
cancelable?: boolean;
|
|
15
|
+
composed?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type EventPhase = 0 | 1 | 2 | 3;
|
|
18
|
+
export default class Event {
|
|
19
|
+
static NONE: 0;
|
|
20
|
+
static CAPTURING_PHASE: 1;
|
|
21
|
+
static AT_TARGET: 2;
|
|
22
|
+
static BUBBLING_PHASE: 3;
|
|
23
|
+
readonly NONE: 0;
|
|
24
|
+
readonly CAPTURING_PHASE: 1;
|
|
25
|
+
readonly AT_TARGET: 2;
|
|
26
|
+
readonly BUBBLING_PHASE: 3;
|
|
27
|
+
private _bubbles;
|
|
28
|
+
private _cancelable;
|
|
29
|
+
private _composed;
|
|
30
|
+
private _type;
|
|
31
|
+
private _defaultPrevented;
|
|
32
|
+
private _timeStamp;
|
|
33
|
+
constructor(type: string, options?: EventInit | null);
|
|
34
|
+
get bubbles(): boolean;
|
|
35
|
+
get cancelable(): boolean;
|
|
36
|
+
get composed(): boolean;
|
|
37
|
+
get currentTarget(): RNEventTarget | null;
|
|
38
|
+
get defaultPrevented(): boolean;
|
|
39
|
+
get eventPhase(): EventPhase;
|
|
40
|
+
get isTrusted(): boolean;
|
|
41
|
+
get target(): RNEventTarget | null;
|
|
42
|
+
get timeStamp(): number;
|
|
43
|
+
get type(): string;
|
|
44
|
+
composedPath(): ReadonlyArray<RNEventTarget>;
|
|
45
|
+
preventDefault(): void;
|
|
46
|
+
stopImmediatePropagation(): void;
|
|
47
|
+
stopPropagation(): void;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=Event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../../src/polyfills/events/Event.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AAEH,OAAO,KAAK,aAAa,MAAM,eAAe,CAAA;AAe9C,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACd,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;IACzB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACnB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;IAExB,QAAQ,CAAC,IAAI,EAAG,CAAC,CAAA;IACjB,QAAQ,CAAC,eAAe,EAAG,CAAC,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAG,CAAC,CAAA;IACtB,QAAQ,CAAC,cAAc,EAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,UAAU,CAA4B;gBAIlC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI;IAsBpD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,IAAI,CAExC;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,aAAa,GAAG,IAAI,CAEjC;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,YAAY,IAAI,aAAa,CAAC,aAAa,CAAC;IAI5C,cAAc,IAAI,IAAI;IAatB,wBAAwB,IAAI,IAAI;IAKhC,eAAe,IAAI,IAAI;CAGxB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { getComposedPath, getCurrentTarget, getEventPhase, getInPassiveListenerFlag, getIsTrusted, getTarget, setStopImmediatePropagationFlag, setStopPropagationFlag, setIsTrusted, setEventPhase, } from './internals/EventInternals';
|
|
8
|
+
import { setPlatformObject } from '../webidl/PlatformObjects';
|
|
9
|
+
export default class Event {
|
|
10
|
+
static NONE;
|
|
11
|
+
static CAPTURING_PHASE;
|
|
12
|
+
static AT_TARGET;
|
|
13
|
+
static BUBBLING_PHASE;
|
|
14
|
+
NONE;
|
|
15
|
+
CAPTURING_PHASE;
|
|
16
|
+
AT_TARGET;
|
|
17
|
+
BUBBLING_PHASE;
|
|
18
|
+
_bubbles;
|
|
19
|
+
_cancelable;
|
|
20
|
+
_composed;
|
|
21
|
+
_type;
|
|
22
|
+
_defaultPrevented = false;
|
|
23
|
+
_timeStamp = performance.now();
|
|
24
|
+
// Symbol-keyed fields are internal and managed via helpers; not declared here.
|
|
25
|
+
constructor(type, options) {
|
|
26
|
+
if (arguments.length < 1) {
|
|
27
|
+
throw new TypeError("Failed to construct 'Event': 1 argument required, but only 0 present.");
|
|
28
|
+
}
|
|
29
|
+
const typeOfOptions = typeof options;
|
|
30
|
+
if (options != null && typeOfOptions !== 'object' && typeOfOptions !== 'function') {
|
|
31
|
+
throw new TypeError("Failed to construct 'Event': The provided value is not of type 'EventInit'.");
|
|
32
|
+
}
|
|
33
|
+
this._type = String(type);
|
|
34
|
+
this._bubbles = Boolean(options?.bubbles);
|
|
35
|
+
this._cancelable = Boolean(options?.cancelable);
|
|
36
|
+
this._composed = Boolean(options?.composed);
|
|
37
|
+
// Initialize internal flags
|
|
38
|
+
setIsTrusted(this, false);
|
|
39
|
+
setEventPhase(this, 0);
|
|
40
|
+
}
|
|
41
|
+
get bubbles() {
|
|
42
|
+
return this._bubbles;
|
|
43
|
+
}
|
|
44
|
+
get cancelable() {
|
|
45
|
+
return this._cancelable;
|
|
46
|
+
}
|
|
47
|
+
get composed() {
|
|
48
|
+
return this._composed;
|
|
49
|
+
}
|
|
50
|
+
get currentTarget() {
|
|
51
|
+
return getCurrentTarget(this);
|
|
52
|
+
}
|
|
53
|
+
get defaultPrevented() {
|
|
54
|
+
return this._defaultPrevented;
|
|
55
|
+
}
|
|
56
|
+
get eventPhase() {
|
|
57
|
+
return getEventPhase(this);
|
|
58
|
+
}
|
|
59
|
+
get isTrusted() {
|
|
60
|
+
return getIsTrusted(this);
|
|
61
|
+
}
|
|
62
|
+
get target() {
|
|
63
|
+
return getTarget(this);
|
|
64
|
+
}
|
|
65
|
+
get timeStamp() {
|
|
66
|
+
return this._timeStamp;
|
|
67
|
+
}
|
|
68
|
+
get type() {
|
|
69
|
+
return this._type;
|
|
70
|
+
}
|
|
71
|
+
composedPath() {
|
|
72
|
+
return getComposedPath(this).slice();
|
|
73
|
+
}
|
|
74
|
+
preventDefault() {
|
|
75
|
+
if (!this._cancelable) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (getInPassiveListenerFlag(this)) {
|
|
79
|
+
console.error(new Error('Unable to preventDefault inside passive event listener invocation.'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this._defaultPrevented = true;
|
|
83
|
+
}
|
|
84
|
+
stopImmediatePropagation() {
|
|
85
|
+
setStopPropagationFlag(this, true);
|
|
86
|
+
setStopImmediatePropagationFlag(this, true);
|
|
87
|
+
}
|
|
88
|
+
stopPropagation() {
|
|
89
|
+
setStopPropagationFlag(this, true);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
Object.defineProperty(Event, 'NONE', {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
value: 0,
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(Event.prototype, 'NONE', {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
value: 0,
|
|
99
|
+
});
|
|
100
|
+
Object.defineProperty(Event, 'CAPTURING_PHASE', {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
value: 1,
|
|
103
|
+
});
|
|
104
|
+
Object.defineProperty(Event.prototype, 'CAPTURING_PHASE', {
|
|
105
|
+
enumerable: true,
|
|
106
|
+
value: 1,
|
|
107
|
+
});
|
|
108
|
+
Object.defineProperty(Event, 'AT_TARGET', {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
value: 2,
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(Event.prototype, 'AT_TARGET', {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
value: 2,
|
|
115
|
+
});
|
|
116
|
+
Object.defineProperty(Event, 'BUBBLING_PHASE', {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
value: 3,
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(Event.prototype, 'BUBBLING_PHASE', {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
value: 3,
|
|
123
|
+
});
|
|
124
|
+
setPlatformObject(Event);
|
|
125
|
+
//# sourceMappingURL=Event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../src/polyfills/events/Event.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * This module implements the `Event` interface from the DOM.\n * See https://dom.spec.whatwg.org/#interface-event.\n */\n\nimport type RNEventTarget from './EventTarget'\nimport {\n getComposedPath,\n getCurrentTarget,\n getEventPhase,\n getInPassiveListenerFlag,\n getIsTrusted,\n getTarget,\n setStopImmediatePropagationFlag,\n setStopPropagationFlag,\n setIsTrusted,\n setEventPhase,\n} from './internals/EventInternals'\nimport { setPlatformObject } from '../webidl/PlatformObjects'\n\nexport interface EventInit {\n bubbles?: boolean\n cancelable?: boolean\n composed?: boolean\n}\n\nexport type EventPhase = 0 | 1 | 2 | 3\n\nexport default class Event {\n static NONE: 0\n static CAPTURING_PHASE: 1\n static AT_TARGET: 2\n static BUBBLING_PHASE: 3\n\n readonly NONE!: 0\n readonly CAPTURING_PHASE!: 1\n readonly AT_TARGET!: 2\n readonly BUBBLING_PHASE!: 3\n\n private _bubbles: boolean\n private _cancelable: boolean\n private _composed: boolean\n private _type: string\n\n private _defaultPrevented: boolean = false\n private _timeStamp: number = performance.now()\n\n // Symbol-keyed fields are internal and managed via helpers; not declared here.\n\n constructor(type: string, options?: EventInit | null) {\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'Event': 1 argument required, but only 0 present.\")\n }\n\n const typeOfOptions = typeof options\n if (options != null && typeOfOptions !== 'object' && typeOfOptions !== 'function') {\n throw new TypeError(\n \"Failed to construct 'Event': The provided value is not of type 'EventInit'.\"\n )\n }\n\n this._type = String(type)\n this._bubbles = Boolean((options as EventInit | undefined)?.bubbles)\n this._cancelable = Boolean((options as EventInit | undefined)?.cancelable)\n this._composed = Boolean((options as EventInit | undefined)?.composed)\n\n // Initialize internal flags\n setIsTrusted(this, false)\n setEventPhase(this, 0 as 0)\n }\n\n get bubbles(): boolean {\n return this._bubbles\n }\n\n get cancelable(): boolean {\n return this._cancelable\n }\n\n get composed(): boolean {\n return this._composed\n }\n\n get currentTarget(): RNEventTarget | null {\n return getCurrentTarget(this)\n }\n\n get defaultPrevented(): boolean {\n return this._defaultPrevented\n }\n\n get eventPhase(): EventPhase {\n return getEventPhase(this)\n }\n\n get isTrusted(): boolean {\n return getIsTrusted(this)\n }\n\n get target(): RNEventTarget | null {\n return getTarget(this)\n }\n\n get timeStamp(): number {\n return this._timeStamp\n }\n\n get type(): string {\n return this._type\n }\n\n composedPath(): ReadonlyArray<RNEventTarget> {\n return getComposedPath(this).slice()\n }\n\n preventDefault(): void {\n if (!this._cancelable) {\n return\n }\n\n if (getInPassiveListenerFlag(this)) {\n console.error(new Error('Unable to preventDefault inside passive event listener invocation.'))\n return\n }\n\n this._defaultPrevented = true\n }\n\n stopImmediatePropagation(): void {\n setStopPropagationFlag(this, true)\n setStopImmediatePropagationFlag(this, true)\n }\n\n stopPropagation(): void {\n setStopPropagationFlag(this, true)\n }\n}\n\nObject.defineProperty(Event, 'NONE', {\n enumerable: true,\n value: 0,\n})\n\nObject.defineProperty(Event.prototype, 'NONE', {\n enumerable: true,\n value: 0,\n})\n\nObject.defineProperty(Event, 'CAPTURING_PHASE', {\n enumerable: true,\n value: 1,\n})\n\nObject.defineProperty(Event.prototype, 'CAPTURING_PHASE', {\n enumerable: true,\n value: 1,\n})\n\nObject.defineProperty(Event, 'AT_TARGET', {\n enumerable: true,\n value: 2,\n})\n\nObject.defineProperty(Event.prototype, 'AT_TARGET', {\n enumerable: true,\n value: 2,\n})\n\nObject.defineProperty(Event, 'BUBBLING_PHASE', {\n enumerable: true,\n value: 3,\n})\n\nObject.defineProperty(Event.prototype, 'BUBBLING_PHASE', {\n enumerable: true,\n value: 3,\n})\n\nsetPlatformObject(Event)\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers to implement event handler IDL attributes.
|
|
3
|
+
*/
|
|
4
|
+
import type EventTarget from './EventTarget';
|
|
5
|
+
import type { EventCallback } from './EventTarget';
|
|
6
|
+
export declare function getEventHandlerAttribute(target: EventTarget, type: string): EventCallback | null;
|
|
7
|
+
export declare function setEventHandlerAttribute(target: EventTarget, type: string, callback: EventCallback | null | undefined): void;
|
|
8
|
+
//# sourceMappingURL=EventHandlerAttributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventHandlerAttributes.d.ts","sourceRoot":"","sources":["../../../src/polyfills/events/EventHandlerAttributes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAmBlD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAGhG;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACzC,IAAI,CAiCN"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers to implement event handler IDL attributes.
|
|
3
|
+
*/
|
|
4
|
+
const EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY = Symbol('eventHandlerAttributeMap');
|
|
5
|
+
function getEventHandlerAttributeMap(target) {
|
|
6
|
+
return target[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY];
|
|
7
|
+
}
|
|
8
|
+
function setEventHandlerAttributeMap(target, map) {
|
|
9
|
+
;
|
|
10
|
+
target[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY] = map;
|
|
11
|
+
}
|
|
12
|
+
export function getEventHandlerAttribute(target, type) {
|
|
13
|
+
const listener = getEventHandlerAttributeMap(target)?.get(type);
|
|
14
|
+
return listener != null ? listener.handleEvent : null;
|
|
15
|
+
}
|
|
16
|
+
export function setEventHandlerAttribute(target, type, callback) {
|
|
17
|
+
let map = getEventHandlerAttributeMap(target);
|
|
18
|
+
if (map != null) {
|
|
19
|
+
const currentListener = map.get(type);
|
|
20
|
+
if (currentListener) {
|
|
21
|
+
target.removeEventListener(type, currentListener);
|
|
22
|
+
map.delete(type);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (callback != null &&
|
|
26
|
+
(typeof callback === 'function' || typeof callback === 'object')) {
|
|
27
|
+
const listener = {
|
|
28
|
+
handleEvent: callback,
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
target.addEventListener(type, listener);
|
|
32
|
+
if (map == null) {
|
|
33
|
+
map = new Map();
|
|
34
|
+
setEventHandlerAttributeMap(target, map);
|
|
35
|
+
}
|
|
36
|
+
map.set(type, listener);
|
|
37
|
+
}
|
|
38
|
+
catch (_e) {
|
|
39
|
+
// Assigning incorrect listener does not throw in setters.
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (map != null && map.size === 0) {
|
|
43
|
+
setEventHandlerAttributeMap(target, null);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=EventHandlerAttributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventHandlerAttributes.js","sourceRoot":"","sources":["../../../src/polyfills/events/EventHandlerAttributes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,uCAAuC,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAElF,SAAS,2BAA2B,CAClC,MAAmB;IAEnB,OAAQ,MAAc,CAAC,uCAAuC,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAmB,EAAE,GAAoC;IAC5F,CAAC;IAAC,MAAc,CAAC,uCAAuC,CAAC,GAAG,GAAG,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAmB,EAAE,IAAY;IACxE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/D,OAAO,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAmB,EACnB,IAAY,EACZ,QAA0C;IAE1C,IAAI,GAAG,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;YACjD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IAED,IACE,QAAQ,IAAI,IAAI;QAChB,CAAC,OAAO,QAAQ,KAAK,UAAU,IAAI,OAAQ,QAAgB,KAAK,QAAQ,CAAC,EACzE,CAAC;QACD,MAAM,QAAQ,GAAiB;YAC7B,WAAW,EAAE,QAAyB;SACvC,CAAA;QAED,IAAI,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;gBACf,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC1C,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC","sourcesContent":["/**\n * Helpers to implement event handler IDL attributes.\n */\n\nimport type EventTarget from './EventTarget'\nimport type { EventCallback } from './EventTarget'\n\ntype EventHandler = Readonly<{\n handleEvent: EventCallback\n}>\ntype EventHandlerAttributeMap = Map<string, EventHandler | null>\n\nconst EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY = Symbol('eventHandlerAttributeMap')\n\nfunction getEventHandlerAttributeMap(\n target: EventTarget\n): EventHandlerAttributeMap | null | undefined {\n return (target as any)[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY]\n}\n\nfunction setEventHandlerAttributeMap(target: EventTarget, map: EventHandlerAttributeMap | null) {\n ;(target as any)[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY] = map\n}\n\nexport function getEventHandlerAttribute(target: EventTarget, type: string): EventCallback | null {\n const listener = getEventHandlerAttributeMap(target)?.get(type)\n return listener != null ? listener.handleEvent : null\n}\n\nexport function setEventHandlerAttribute(\n target: EventTarget,\n type: string,\n callback: EventCallback | null | undefined\n): void {\n let map = getEventHandlerAttributeMap(target)\n if (map != null) {\n const currentListener = map.get(type)\n if (currentListener) {\n target.removeEventListener(type, currentListener)\n map.delete(type)\n }\n }\n\n if (\n callback != null &&\n (typeof callback === 'function' || typeof (callback as any) === 'object')\n ) {\n const listener: EventHandler = {\n handleEvent: callback as EventCallback,\n }\n\n try {\n target.addEventListener(type, listener)\n if (map == null) {\n map = new Map()\n setEventHandlerAttributeMap(target, map)\n }\n map.set(type, listener)\n } catch (_e) {\n // Assigning incorrect listener does not throw in setters.\n }\n }\n\n if (map != null && map.size === 0) {\n setEventHandlerAttributeMap(target, null)\n }\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Implements the `EventTarget` interface from the DOM.
|
|
9
|
+
*/
|
|
10
|
+
import Event from './Event';
|
|
11
|
+
import { EVENT_TARGET_GET_THE_PARENT_KEY, INTERNAL_DISPATCH_METHOD_KEY } from './internals/EventTargetInternals';
|
|
12
|
+
export type EventCallback = (event: Event) => void;
|
|
13
|
+
export type EventHandler = {
|
|
14
|
+
handleEvent(event: Event): void;
|
|
15
|
+
};
|
|
16
|
+
export type EventListener = EventCallback | EventHandler;
|
|
17
|
+
export type EventListenerOptions = Readonly<{
|
|
18
|
+
capture?: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
export type AddEventListenerOptions = Readonly<{
|
|
21
|
+
capture?: boolean;
|
|
22
|
+
passive?: boolean;
|
|
23
|
+
once?: boolean;
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
}>;
|
|
26
|
+
export default class EventTarget {
|
|
27
|
+
addEventListener(type: string, callback: EventListener | null, optionsOrUseCapture?: AddEventListenerOptions | boolean): void;
|
|
28
|
+
removeEventListener(type: string, callback: EventListener, optionsOrUseCapture?: EventListenerOptions | boolean): void;
|
|
29
|
+
dispatchEvent(event: Event): boolean;
|
|
30
|
+
[EVENT_TARGET_GET_THE_PARENT_KEY](): EventTarget | null;
|
|
31
|
+
[INTERNAL_DISPATCH_METHOD_KEY](event: Event): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=EventTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTarget.d.ts","sourceRoot":"","sources":["../../../src/polyfills/events/EventTarget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AAEH,OAAO,KAAK,MAAM,SAAS,CAAA;AAa3B,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC7B,MAAM,kCAAkC,CAAA;AAGzC,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;AAClD,MAAM,MAAM,YAAY,GAAG;IAAE,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAA;AAC9D,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,YAAY,CAAA;AAExD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAC,CAAA;AAWF,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,mBAAmB,GAAE,uBAAuB,GAAG,OAAY,GAC1D,IAAI;IAmFP,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,mBAAmB,GAAE,oBAAoB,GAAG,OAAY,GACvD,IAAI;IAiCP,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAmBpC,CAAC,+BAA+B,CAAC,IAAI,WAAW,GAAG,IAAI;IAKvD,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAGnD"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Implements the `EventTarget` interface from the DOM.
|
|
9
|
+
*/
|
|
10
|
+
import Event from './Event';
|
|
11
|
+
import { getStopImmediatePropagationFlag, getStopPropagationFlag, setComposedPath, setCurrentTarget, setEventPhase, setInPassiveListenerFlag, setIsTrusted, setStopImmediatePropagationFlag, setStopPropagationFlag, setTarget, } from './internals/EventInternals';
|
|
12
|
+
import { EVENT_TARGET_GET_THE_PARENT_KEY, INTERNAL_DISPATCH_METHOD_KEY, } from './internals/EventTargetInternals';
|
|
13
|
+
import { setPlatformObject } from '../webidl/PlatformObjects';
|
|
14
|
+
export default class EventTarget {
|
|
15
|
+
addEventListener(type, callback, optionsOrUseCapture = {}) {
|
|
16
|
+
if (arguments.length < 2) {
|
|
17
|
+
throw new TypeError(`Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`);
|
|
18
|
+
}
|
|
19
|
+
if (callback == null) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
validateCallback(callback, 'addEventListener');
|
|
23
|
+
const processedType = String(type);
|
|
24
|
+
let capture;
|
|
25
|
+
let passive;
|
|
26
|
+
let once;
|
|
27
|
+
let signal;
|
|
28
|
+
if (optionsOrUseCapture != null &&
|
|
29
|
+
(typeof optionsOrUseCapture === 'object' || typeof optionsOrUseCapture === 'function')) {
|
|
30
|
+
const opts = optionsOrUseCapture;
|
|
31
|
+
capture = Boolean(opts.capture);
|
|
32
|
+
passive =
|
|
33
|
+
opts.passive == null ? getDefaultPassiveValue(processedType, this) : Boolean(opts.passive);
|
|
34
|
+
once = Boolean(opts.once);
|
|
35
|
+
signal = opts.signal;
|
|
36
|
+
if (signal !== undefined && !(signal instanceof AbortSignal)) {
|
|
37
|
+
throw new TypeError("Failed to execute 'addEventListener' on 'EventTarget': Failed to read the 'signal' property from 'AddEventListenerOptions': Failed to convert value to 'AbortSignal'.");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
capture = Boolean(optionsOrUseCapture);
|
|
42
|
+
passive = false;
|
|
43
|
+
once = false;
|
|
44
|
+
signal = null;
|
|
45
|
+
}
|
|
46
|
+
if (signal?.aborted) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
let listenersByType = getListenersForPhase(this, capture);
|
|
50
|
+
let listeners = listenersByType?.get(processedType);
|
|
51
|
+
if (listeners == null) {
|
|
52
|
+
if (listenersByType == null) {
|
|
53
|
+
listenersByType = new Map();
|
|
54
|
+
setListenersMap(this, capture, listenersByType);
|
|
55
|
+
}
|
|
56
|
+
listeners = new Map();
|
|
57
|
+
listenersByType.set(processedType, listeners);
|
|
58
|
+
}
|
|
59
|
+
else if (listeners.has(callback)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const listener = {
|
|
63
|
+
callback,
|
|
64
|
+
passive,
|
|
65
|
+
once,
|
|
66
|
+
removed: false,
|
|
67
|
+
};
|
|
68
|
+
listeners.set(callback, listener);
|
|
69
|
+
const nonNullListeners = listeners;
|
|
70
|
+
if (signal != null) {
|
|
71
|
+
signal.addEventListener('abort', () => {
|
|
72
|
+
listener.removed = true;
|
|
73
|
+
if (nonNullListeners.get(callback) === listener) {
|
|
74
|
+
nonNullListeners.delete(callback);
|
|
75
|
+
}
|
|
76
|
+
}, { once: true });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
removeEventListener(type, callback, optionsOrUseCapture = {}) {
|
|
80
|
+
if (arguments.length < 2) {
|
|
81
|
+
throw new TypeError(`Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`);
|
|
82
|
+
}
|
|
83
|
+
if (callback == null) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
validateCallback(callback, 'removeEventListener');
|
|
87
|
+
const processedType = String(type);
|
|
88
|
+
const capture = typeof optionsOrUseCapture === 'boolean'
|
|
89
|
+
? optionsOrUseCapture
|
|
90
|
+
: Boolean(optionsOrUseCapture.capture);
|
|
91
|
+
const listenersByType = getListenersForPhase(this, capture);
|
|
92
|
+
const listeners = listenersByType?.get(processedType);
|
|
93
|
+
if (listeners == null) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const listener = listeners.get(callback);
|
|
97
|
+
if (listener != null) {
|
|
98
|
+
listener.removed = true;
|
|
99
|
+
listeners.delete(callback);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
dispatchEvent(event) {
|
|
103
|
+
if (!(event instanceof Event)) {
|
|
104
|
+
throw new TypeError("Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.");
|
|
105
|
+
}
|
|
106
|
+
if (getEventDispatchFlag(event)) {
|
|
107
|
+
throw new Error("Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.");
|
|
108
|
+
}
|
|
109
|
+
setIsTrusted(event, false);
|
|
110
|
+
dispatch(this, event);
|
|
111
|
+
return !event.defaultPrevented;
|
|
112
|
+
}
|
|
113
|
+
// "protected" for subclasses: get the parent (see spec)
|
|
114
|
+
[EVENT_TARGET_GET_THE_PARENT_KEY]() {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
// "protected" to dispatch trusted events
|
|
118
|
+
[INTERNAL_DISPATCH_METHOD_KEY](event) {
|
|
119
|
+
dispatch(this, event);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
setPlatformObject(EventTarget);
|
|
123
|
+
function validateCallback(callback, methodName) {
|
|
124
|
+
if (typeof callback !== 'function' && typeof callback !== 'object') {
|
|
125
|
+
throw new TypeError(`Failed to execute '${methodName}' on 'EventTarget': parameter 2 is not of type 'Object'.`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function getDefaultPassiveValue(_type, _eventTarget) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
function dispatch(eventTarget, event) {
|
|
132
|
+
setEventDispatchFlag(event, true);
|
|
133
|
+
const eventPath = getEventPath(eventTarget, event);
|
|
134
|
+
setComposedPath(event, eventPath);
|
|
135
|
+
setTarget(event, eventTarget);
|
|
136
|
+
for (let i = eventPath.length - 1; i >= 0; i--) {
|
|
137
|
+
if (getStopPropagationFlag(event)) {
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
const target = eventPath[i];
|
|
141
|
+
setEventPhase(event, target === eventTarget ? Event.AT_TARGET : Event.CAPTURING_PHASE);
|
|
142
|
+
invoke(target, event, Event.CAPTURING_PHASE);
|
|
143
|
+
}
|
|
144
|
+
for (const target of eventPath) {
|
|
145
|
+
if (getStopPropagationFlag(event)) {
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
if (!event.bubbles && target !== eventTarget) {
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
setEventPhase(event, target === eventTarget ? Event.AT_TARGET : Event.BUBBLING_PHASE);
|
|
152
|
+
invoke(target, event, Event.BUBBLING_PHASE);
|
|
153
|
+
}
|
|
154
|
+
setEventPhase(event, Event.NONE);
|
|
155
|
+
setCurrentTarget(event, null);
|
|
156
|
+
setComposedPath(event, []);
|
|
157
|
+
setEventDispatchFlag(event, false);
|
|
158
|
+
setStopImmediatePropagationFlag(event, false);
|
|
159
|
+
setStopPropagationFlag(event, false);
|
|
160
|
+
}
|
|
161
|
+
function getEventPath(eventTarget, _event) {
|
|
162
|
+
const path = [];
|
|
163
|
+
let target = eventTarget;
|
|
164
|
+
while (target != null) {
|
|
165
|
+
path.push(target);
|
|
166
|
+
target = target[EVENT_TARGET_GET_THE_PARENT_KEY]();
|
|
167
|
+
}
|
|
168
|
+
return path;
|
|
169
|
+
}
|
|
170
|
+
function invoke(eventTarget, event, eventPhase) {
|
|
171
|
+
const listenersByType = getListenersForPhase(eventTarget, eventPhase === Event.CAPTURING_PHASE);
|
|
172
|
+
setCurrentTarget(event, eventTarget);
|
|
173
|
+
const maybeListeners = listenersByType?.get(event.type);
|
|
174
|
+
if (maybeListeners == null) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const listeners = Array.from(maybeListeners.values());
|
|
178
|
+
setCurrentTarget(event, eventTarget);
|
|
179
|
+
for (const listener of listeners) {
|
|
180
|
+
if (listener.removed) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (listener.once) {
|
|
184
|
+
eventTarget.removeEventListener(event.type, listener.callback, eventPhase === Event.CAPTURING_PHASE);
|
|
185
|
+
}
|
|
186
|
+
if (listener.passive) {
|
|
187
|
+
setInPassiveListenerFlag(event, true);
|
|
188
|
+
}
|
|
189
|
+
const currentEvent = global.event;
|
|
190
|
+
global.event = event;
|
|
191
|
+
const callback = listener.callback;
|
|
192
|
+
try {
|
|
193
|
+
if (typeof callback === 'function') {
|
|
194
|
+
callback.call(eventTarget, event);
|
|
195
|
+
}
|
|
196
|
+
else if (typeof callback.handleEvent === 'function') {
|
|
197
|
+
callback.handleEvent(event);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
// TODO: replace with `reportError` when it's available.
|
|
202
|
+
console.error(error);
|
|
203
|
+
}
|
|
204
|
+
if (listener.passive) {
|
|
205
|
+
setInPassiveListenerFlag(event, false);
|
|
206
|
+
}
|
|
207
|
+
;
|
|
208
|
+
global.event = currentEvent;
|
|
209
|
+
if (getStopImmediatePropagationFlag(event)) {
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const CAPTURING_LISTENERS_KEY = Symbol('capturingListeners');
|
|
215
|
+
const BUBBLING_LISTENERS_KEY = Symbol('bubblingListeners');
|
|
216
|
+
function getListenersForPhase(eventTarget, isCapture) {
|
|
217
|
+
// @ts-expect-error index on symbol
|
|
218
|
+
return isCapture ? eventTarget[CAPTURING_LISTENERS_KEY] : eventTarget[BUBBLING_LISTENERS_KEY];
|
|
219
|
+
}
|
|
220
|
+
function setListenersMap(eventTarget, isCapture, listenersMap) {
|
|
221
|
+
if (isCapture) {
|
|
222
|
+
;
|
|
223
|
+
eventTarget[CAPTURING_LISTENERS_KEY] = listenersMap;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
;
|
|
227
|
+
eventTarget[BUBBLING_LISTENERS_KEY] = listenersMap;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const EVENT_DISPATCH_FLAG = Symbol('Event.dispatch');
|
|
231
|
+
function getEventDispatchFlag(event) {
|
|
232
|
+
return event[EVENT_DISPATCH_FLAG];
|
|
233
|
+
}
|
|
234
|
+
function setEventDispatchFlag(event, value) {
|
|
235
|
+
;
|
|
236
|
+
event[EVENT_DISPATCH_FLAG] = value;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=EventTarget.js.map
|