@planningcenter/chat-react-native 3.15.0-rc.6 → 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/components/display/avatar.d.ts +3 -1
- package/build/components/display/avatar.d.ts.map +1 -1
- package/build/components/display/avatar.js +2 -2
- package/build/components/display/avatar.js.map +1 -1
- package/build/components/display/avatar_group.d.ts +3 -1
- package/build/components/display/avatar_group.d.ts.map +1 -1
- package/build/components/display/avatar_group.js +2 -2
- package/build/components/display/avatar_group.js.map +1 -1
- package/build/components/primitive/avatar_primitive.d.ts +2 -0
- package/build/components/primitive/avatar_primitive.d.ts.map +1 -1
- package/build/components/primitive/avatar_primitive.js +20 -19
- package/build/components/primitive/avatar_primitive.js.map +1 -1
- 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/components/display/avatar.tsx +5 -1
- package/src/components/display/avatar_group.tsx +5 -1
- package/src/components/primitive/avatar_primitive.tsx +35 -19
- 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
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTarget.js","sourceRoot":"","sources":["../../../src/polyfills/events/EventTarget.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 * Implements the `EventTarget` interface from the DOM.\n */\n\nimport Event from './Event'\nimport {\n getStopImmediatePropagationFlag,\n getStopPropagationFlag,\n setComposedPath,\n setCurrentTarget,\n setEventPhase,\n setInPassiveListenerFlag,\n setIsTrusted,\n setStopImmediatePropagationFlag,\n setStopPropagationFlag,\n setTarget,\n} from './internals/EventInternals'\nimport {\n EVENT_TARGET_GET_THE_PARENT_KEY,\n INTERNAL_DISPATCH_METHOD_KEY,\n} from './internals/EventTargetInternals'\nimport { setPlatformObject } from '../webidl/PlatformObjects'\n\nexport type EventCallback = (event: Event) => void\nexport type EventHandler = { handleEvent(event: Event): void }\nexport type EventListener = EventCallback | EventHandler\n\nexport type EventListenerOptions = Readonly<{\n capture?: boolean\n}>\n\nexport type AddEventListenerOptions = Readonly<{\n capture?: boolean\n passive?: boolean\n once?: boolean\n signal?: AbortSignal\n}>\n\ntype EventListenerRegistration = {\n readonly callback: EventListener\n readonly passive: boolean\n readonly once: boolean\n removed: boolean\n}\n\ntype ListenersMap = Map<string, Map<EventListener, EventListenerRegistration>>\n\nexport default class EventTarget {\n addEventListener(\n type: string,\n callback: EventListener | null,\n optionsOrUseCapture: AddEventListenerOptions | boolean = {}\n ): void {\n if (arguments.length < 2) {\n throw new TypeError(\n `Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`\n )\n }\n\n if (callback == null) {\n return\n }\n\n validateCallback(callback, 'addEventListener')\n\n const processedType = String(type)\n\n let capture: boolean\n let passive: boolean\n let once: boolean\n let signal: AbortSignal | null | undefined\n\n if (\n optionsOrUseCapture != null &&\n (typeof optionsOrUseCapture === 'object' || typeof optionsOrUseCapture === 'function')\n ) {\n const opts = optionsOrUseCapture as AddEventListenerOptions\n capture = Boolean(opts.capture)\n passive =\n opts.passive == null ? getDefaultPassiveValue(processedType, this) : Boolean(opts.passive)\n once = Boolean(opts.once)\n signal = opts.signal\n if (signal !== undefined && !(signal instanceof AbortSignal)) {\n throw new TypeError(\n \"Failed to execute 'addEventListener' on 'EventTarget': Failed to read the 'signal' property from 'AddEventListenerOptions': Failed to convert value to 'AbortSignal'.\"\n )\n }\n } else {\n capture = Boolean(optionsOrUseCapture)\n passive = false\n once = false\n signal = null\n }\n\n if (signal?.aborted) {\n return\n }\n\n let listenersByType = getListenersForPhase(this, capture)\n let listeners = listenersByType?.get(processedType)\n if (listeners == null) {\n if (listenersByType == null) {\n listenersByType = new Map()\n setListenersMap(this, capture, listenersByType)\n }\n listeners = new Map()\n listenersByType.set(processedType, listeners)\n } else if (listeners.has(callback)) {\n return\n }\n\n const listener: EventListenerRegistration = {\n callback,\n passive,\n once,\n removed: false,\n }\n listeners.set(callback, listener)\n\n const nonNullListeners = listeners\n\n if (signal != null) {\n signal.addEventListener(\n 'abort',\n () => {\n listener.removed = true\n if (nonNullListeners.get(callback) === listener) {\n nonNullListeners.delete(callback)\n }\n },\n { once: true }\n )\n }\n }\n\n removeEventListener(\n type: string,\n callback: EventListener,\n optionsOrUseCapture: EventListenerOptions | boolean = {}\n ): void {\n if (arguments.length < 2) {\n throw new TypeError(\n `Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`\n )\n }\n\n if (callback == null) {\n return\n }\n\n validateCallback(callback, 'removeEventListener')\n\n const processedType = String(type)\n\n const capture =\n typeof optionsOrUseCapture === 'boolean'\n ? optionsOrUseCapture\n : Boolean((optionsOrUseCapture as EventListenerOptions).capture)\n\n const listenersByType = getListenersForPhase(this, capture)\n const listeners = listenersByType?.get(processedType)\n if (listeners == null) {\n return\n }\n\n const listener = listeners.get(callback)\n if (listener != null) {\n listener.removed = true\n listeners.delete(callback)\n }\n }\n\n dispatchEvent(event: Event): boolean {\n if (!(event instanceof Event)) {\n throw new TypeError(\n \"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.\"\n )\n }\n\n if (getEventDispatchFlag(event)) {\n throw new Error(\n \"Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.\"\n )\n }\n\n setIsTrusted(event, false)\n dispatch(this, event)\n return !event.defaultPrevented\n }\n\n // \"protected\" for subclasses: get the parent (see spec)\n [EVENT_TARGET_GET_THE_PARENT_KEY](): EventTarget | null {\n return null\n }\n\n // \"protected\" to dispatch trusted events\n [INTERNAL_DISPATCH_METHOD_KEY](event: Event): void {\n dispatch(this, event)\n }\n}\n\nsetPlatformObject(EventTarget)\n\nfunction validateCallback(callback: EventListener, methodName: string): void {\n if (typeof callback !== 'function' && typeof callback !== 'object') {\n throw new TypeError(\n `Failed to execute '${methodName}' on 'EventTarget': parameter 2 is not of type 'Object'.`\n )\n }\n}\n\nfunction getDefaultPassiveValue(_type: string, _eventTarget: EventTarget): boolean {\n return false\n}\n\nfunction dispatch(eventTarget: EventTarget, event: Event): void {\n setEventDispatchFlag(event, true)\n\n const eventPath = getEventPath(eventTarget, event)\n setComposedPath(event, eventPath)\n setTarget(event, eventTarget)\n\n for (let i = eventPath.length - 1; i >= 0; i--) {\n if (getStopPropagationFlag(event)) {\n break\n }\n const target = eventPath[i]\n setEventPhase(event, target === eventTarget ? Event.AT_TARGET : Event.CAPTURING_PHASE)\n invoke(target, event, Event.CAPTURING_PHASE)\n }\n\n for (const target of eventPath) {\n if (getStopPropagationFlag(event)) {\n break\n }\n if (!event.bubbles && target !== eventTarget) {\n break\n }\n setEventPhase(event, target === eventTarget ? Event.AT_TARGET : Event.BUBBLING_PHASE)\n invoke(target, event, Event.BUBBLING_PHASE)\n }\n\n setEventPhase(event, Event.NONE)\n setCurrentTarget(event, null)\n setComposedPath(event, [])\n\n setEventDispatchFlag(event, false)\n setStopImmediatePropagationFlag(event, false)\n setStopPropagationFlag(event, false)\n}\n\nfunction getEventPath(eventTarget: EventTarget, _event: Event): ReadonlyArray<EventTarget> {\n const path: EventTarget[] = []\n let target: EventTarget | null = eventTarget\n\n while (target != null) {\n path.push(target)\n target = target[EVENT_TARGET_GET_THE_PARENT_KEY]()\n }\n\n return path\n}\n\nfunction invoke(eventTarget: EventTarget, event: Event, eventPhase: import('./Event').EventPhase) {\n const listenersByType = getListenersForPhase(eventTarget, eventPhase === Event.CAPTURING_PHASE)\n\n setCurrentTarget(event, eventTarget)\n\n const maybeListeners = listenersByType?.get(event.type)\n if (maybeListeners == null) {\n return\n }\n\n const listeners = Array.from(maybeListeners.values())\n setCurrentTarget(event, eventTarget)\n\n for (const listener of listeners) {\n if (listener.removed) {\n continue\n }\n\n if (listener.once) {\n eventTarget.removeEventListener(\n event.type,\n listener.callback,\n eventPhase === Event.CAPTURING_PHASE\n )\n }\n\n if (listener.passive) {\n setInPassiveListenerFlag(event, true)\n }\n\n const currentEvent = (global as any).event\n ;(global as any).event = event\n\n const callback = listener.callback as any\n try {\n if (typeof callback === 'function') {\n callback.call(eventTarget, event)\n } else if (typeof callback.handleEvent === 'function') {\n callback.handleEvent(event)\n }\n } catch (error) {\n // TODO: replace with `reportError` when it's available.\n\n console.error(error)\n }\n\n if (listener.passive) {\n setInPassiveListenerFlag(event, false)\n }\n\n ;(global as any).event = currentEvent\n\n if (getStopImmediatePropagationFlag(event)) {\n break\n }\n }\n}\n\nconst CAPTURING_LISTENERS_KEY = Symbol('capturingListeners')\nconst BUBBLING_LISTENERS_KEY = Symbol('bubblingListeners')\n\nfunction getListenersForPhase(\n eventTarget: EventTarget,\n isCapture: boolean\n): ListenersMap | null | undefined {\n // @ts-expect-error index on symbol\n return isCapture ? eventTarget[CAPTURING_LISTENERS_KEY] : eventTarget[BUBBLING_LISTENERS_KEY]\n}\n\nfunction setListenersMap(\n eventTarget: EventTarget,\n isCapture: boolean,\n listenersMap: ListenersMap\n): void {\n if (isCapture) {\n ;(eventTarget as any)[CAPTURING_LISTENERS_KEY] = listenersMap\n } else {\n ;(eventTarget as any)[BUBBLING_LISTENERS_KEY] = listenersMap\n }\n}\n\nconst EVENT_DISPATCH_FLAG = Symbol('Event.dispatch')\n\nfunction getEventDispatchFlag(event: Event): boolean {\n return (event as any)[EVENT_DISPATCH_FLAG]\n}\n\nfunction setEventDispatchFlag(event: Event, value: boolean): void {\n ;(event as any)[EVENT_DISPATCH_FLAG] = value\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal implementation details for the `Event` module.
|
|
3
|
+
*/
|
|
4
|
+
import type Event from '../Event';
|
|
5
|
+
import type EventTarget from '../EventTarget';
|
|
6
|
+
export declare const COMPOSED_PATH_KEY: unique symbol;
|
|
7
|
+
export declare const CURRENT_TARGET_KEY: unique symbol;
|
|
8
|
+
export declare const EVENT_PHASE_KEY: unique symbol;
|
|
9
|
+
export declare const IN_PASSIVE_LISTENER_FLAG_KEY: unique symbol;
|
|
10
|
+
export declare const IS_TRUSTED_KEY: unique symbol;
|
|
11
|
+
export declare const STOP_IMMEDIATE_PROPAGATION_FLAG_KEY: unique symbol;
|
|
12
|
+
export declare const STOP_PROPAGATION_FLAG_KEY: unique symbol;
|
|
13
|
+
export declare const TARGET_KEY: unique symbol;
|
|
14
|
+
export declare function getCurrentTarget(event: Event): EventTarget | null;
|
|
15
|
+
export declare function setCurrentTarget(event: Event, currentTarget: EventTarget | null): void;
|
|
16
|
+
export declare function getComposedPath(event: Event): ReadonlyArray<EventTarget>;
|
|
17
|
+
export declare function setComposedPath(event: Event, composedPath: ReadonlyArray<EventTarget>): void;
|
|
18
|
+
export declare function getEventPhase(event: Event): import('../Event').EventPhase;
|
|
19
|
+
export declare function setEventPhase(event: Event, eventPhase: import('../Event').EventPhase): void;
|
|
20
|
+
export declare function getInPassiveListenerFlag(event: Event): boolean;
|
|
21
|
+
export declare function setInPassiveListenerFlag(event: Event, value: boolean): void;
|
|
22
|
+
export declare function getIsTrusted(event: Event): boolean;
|
|
23
|
+
export declare function setIsTrusted(event: Event, isTrusted: boolean): void;
|
|
24
|
+
export declare function getStopImmediatePropagationFlag(event: Event): boolean;
|
|
25
|
+
export declare function setStopImmediatePropagationFlag(event: Event, value: boolean): void;
|
|
26
|
+
export declare function getStopPropagationFlag(event: Event): boolean;
|
|
27
|
+
export declare function setStopPropagationFlag(event: Event, value: boolean): void;
|
|
28
|
+
export declare function getTarget(event: Event): EventTarget | null;
|
|
29
|
+
export declare function setTarget(event: Event, target: EventTarget | null): void;
|
|
30
|
+
//# sourceMappingURL=EventInternals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventInternals.d.ts","sourceRoot":"","sources":["../../../../src/polyfills/events/internals/EventInternals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAA+B,CAAA;AACtE,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAAgC,CAAA;AACxE,eAAO,MAAM,eAAe,EAAE,OAAO,MAA6B,CAAA;AAClE,eAAO,MAAM,4BAA4B,EAAE,OAAO,MAAwC,CAAA;AAC1F,eAAO,MAAM,cAAc,EAAE,OAAO,MAA4B,CAAA;AAChE,eAAO,MAAM,mCAAmC,EAAE,OAAO,MAAsC,CAAA;AAC/F,eAAO,MAAM,yBAAyB,EAAE,OAAO,MAAsC,CAAA;AACrF,eAAO,MAAM,UAAU,EAAE,OAAO,MAAyB,CAAA;AAEzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAGjE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAGtF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAGxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAG5F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,UAAU,EAAE,UAAU,CAGzE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,UAAU,EAAE,UAAU,GAAG,IAAI,CAG3F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAG9D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAG3E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGlD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAGnE;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGrE;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGlF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAG5D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGzE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAG1D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAGxE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal implementation details for the `Event` module.
|
|
3
|
+
*/
|
|
4
|
+
export const COMPOSED_PATH_KEY = Symbol('composedPath');
|
|
5
|
+
export const CURRENT_TARGET_KEY = Symbol('currentTarget');
|
|
6
|
+
export const EVENT_PHASE_KEY = Symbol('eventPhase');
|
|
7
|
+
export const IN_PASSIVE_LISTENER_FLAG_KEY = Symbol('inPassiveListenerFlag');
|
|
8
|
+
export const IS_TRUSTED_KEY = Symbol('isTrusted');
|
|
9
|
+
export const STOP_IMMEDIATE_PROPAGATION_FLAG_KEY = Symbol('stopPropagationFlag');
|
|
10
|
+
export const STOP_PROPAGATION_FLAG_KEY = Symbol('stopPropagationFlag');
|
|
11
|
+
export const TARGET_KEY = Symbol('target');
|
|
12
|
+
export function getCurrentTarget(event) {
|
|
13
|
+
// @ts-expect-error index on symbol
|
|
14
|
+
return event[CURRENT_TARGET_KEY];
|
|
15
|
+
}
|
|
16
|
+
export function setCurrentTarget(event, currentTarget) {
|
|
17
|
+
// @ts-expect-error index on symbol
|
|
18
|
+
event[CURRENT_TARGET_KEY] = currentTarget;
|
|
19
|
+
}
|
|
20
|
+
export function getComposedPath(event) {
|
|
21
|
+
// @ts-expect-error index on symbol
|
|
22
|
+
return event[COMPOSED_PATH_KEY];
|
|
23
|
+
}
|
|
24
|
+
export function setComposedPath(event, composedPath) {
|
|
25
|
+
// @ts-expect-error index on symbol
|
|
26
|
+
event[COMPOSED_PATH_KEY] = composedPath;
|
|
27
|
+
}
|
|
28
|
+
export function getEventPhase(event) {
|
|
29
|
+
// @ts-expect-error index on symbol
|
|
30
|
+
return event[EVENT_PHASE_KEY];
|
|
31
|
+
}
|
|
32
|
+
export function setEventPhase(event, eventPhase) {
|
|
33
|
+
// @ts-expect-error index on symbol
|
|
34
|
+
event[EVENT_PHASE_KEY] = eventPhase;
|
|
35
|
+
}
|
|
36
|
+
export function getInPassiveListenerFlag(event) {
|
|
37
|
+
// @ts-expect-error index on symbol
|
|
38
|
+
return event[IN_PASSIVE_LISTENER_FLAG_KEY];
|
|
39
|
+
}
|
|
40
|
+
export function setInPassiveListenerFlag(event, value) {
|
|
41
|
+
// @ts-expect-error index on symbol
|
|
42
|
+
event[IN_PASSIVE_LISTENER_FLAG_KEY] = value;
|
|
43
|
+
}
|
|
44
|
+
export function getIsTrusted(event) {
|
|
45
|
+
// @ts-expect-error index on symbol
|
|
46
|
+
return event[IS_TRUSTED_KEY];
|
|
47
|
+
}
|
|
48
|
+
export function setIsTrusted(event, isTrusted) {
|
|
49
|
+
// @ts-expect-error index on symbol
|
|
50
|
+
event[IS_TRUSTED_KEY] = isTrusted;
|
|
51
|
+
}
|
|
52
|
+
export function getStopImmediatePropagationFlag(event) {
|
|
53
|
+
// @ts-expect-error index on symbol
|
|
54
|
+
return event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY];
|
|
55
|
+
}
|
|
56
|
+
export function setStopImmediatePropagationFlag(event, value) {
|
|
57
|
+
// @ts-expect-error index on symbol
|
|
58
|
+
event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY] = value;
|
|
59
|
+
}
|
|
60
|
+
export function getStopPropagationFlag(event) {
|
|
61
|
+
// @ts-expect-error index on symbol
|
|
62
|
+
return event[STOP_PROPAGATION_FLAG_KEY];
|
|
63
|
+
}
|
|
64
|
+
export function setStopPropagationFlag(event, value) {
|
|
65
|
+
// @ts-expect-error index on symbol
|
|
66
|
+
event[STOP_PROPAGATION_FLAG_KEY] = value;
|
|
67
|
+
}
|
|
68
|
+
export function getTarget(event) {
|
|
69
|
+
// @ts-expect-error index on symbol
|
|
70
|
+
return event[TARGET_KEY];
|
|
71
|
+
}
|
|
72
|
+
export function setTarget(event, target) {
|
|
73
|
+
// @ts-expect-error index on symbol
|
|
74
|
+
event[TARGET_KEY] = target;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=EventInternals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventInternals.js","sourceRoot":"","sources":["../../../../src/polyfills/events/internals/EventInternals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,eAAe,GAAkB,MAAM,CAAC,YAAY,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAkB,MAAM,CAAC,uBAAuB,CAAC,CAAA;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,WAAW,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,mCAAmC,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEzD,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,mCAAmC;IACnC,OAAO,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAY,EAAE,aAAiC;IAC9E,mCAAmC;IACnC,KAAK,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,mCAAmC;IACnC,OAAO,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,YAAwC;IACpF,mCAAmC;IACnC,KAAK,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,mCAAmC;IACnC,OAAO,KAAK,CAAC,eAAe,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,UAAyC;IACnF,mCAAmC;IACnC,KAAK,CAAC,eAAe,CAAC,GAAG,UAAU,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAY;IACnD,mCAAmC;IACnC,OAAO,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAY,EAAE,KAAc;IACnE,mCAAmC;IACnC,KAAK,CAAC,4BAA4B,CAAC,GAAG,KAAK,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,mCAAmC;IACnC,OAAO,KAAK,CAAC,cAAc,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,SAAkB;IAC3D,mCAAmC;IACnC,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAY;IAC1D,mCAAmC;IACnC,OAAO,KAAK,CAAC,mCAAmC,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAY,EAAE,KAAc;IAC1E,mCAAmC;IACnC,KAAK,CAAC,mCAAmC,CAAC,GAAG,KAAK,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAY;IACjD,mCAAmC;IACnC,OAAO,KAAK,CAAC,yBAAyB,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,KAAc;IACjE,mCAAmC;IACnC,KAAK,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,mCAAmC;IACnC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,MAA0B;IAChE,mCAAmC;IACnC,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA;AAC5B,CAAC","sourcesContent":["/**\n * Internal implementation details for the `Event` module.\n */\n\nimport type Event from '../Event'\nimport type EventTarget from '../EventTarget'\n\nexport const COMPOSED_PATH_KEY: unique symbol = Symbol('composedPath')\nexport const CURRENT_TARGET_KEY: unique symbol = Symbol('currentTarget')\nexport const EVENT_PHASE_KEY: unique symbol = Symbol('eventPhase')\nexport const IN_PASSIVE_LISTENER_FLAG_KEY: unique symbol = Symbol('inPassiveListenerFlag')\nexport const IS_TRUSTED_KEY: unique symbol = Symbol('isTrusted')\nexport const STOP_IMMEDIATE_PROPAGATION_FLAG_KEY: unique symbol = Symbol('stopPropagationFlag')\nexport const STOP_PROPAGATION_FLAG_KEY: unique symbol = Symbol('stopPropagationFlag')\nexport const TARGET_KEY: unique symbol = Symbol('target')\n\nexport function getCurrentTarget(event: Event): EventTarget | null {\n // @ts-expect-error index on symbol\n return event[CURRENT_TARGET_KEY]\n}\n\nexport function setCurrentTarget(event: Event, currentTarget: EventTarget | null): void {\n // @ts-expect-error index on symbol\n event[CURRENT_TARGET_KEY] = currentTarget\n}\n\nexport function getComposedPath(event: Event): ReadonlyArray<EventTarget> {\n // @ts-expect-error index on symbol\n return event[COMPOSED_PATH_KEY]\n}\n\nexport function setComposedPath(event: Event, composedPath: ReadonlyArray<EventTarget>): void {\n // @ts-expect-error index on symbol\n event[COMPOSED_PATH_KEY] = composedPath\n}\n\nexport function getEventPhase(event: Event): import('../Event').EventPhase {\n // @ts-expect-error index on symbol\n return event[EVENT_PHASE_KEY]\n}\n\nexport function setEventPhase(event: Event, eventPhase: import('../Event').EventPhase): void {\n // @ts-expect-error index on symbol\n event[EVENT_PHASE_KEY] = eventPhase\n}\n\nexport function getInPassiveListenerFlag(event: Event): boolean {\n // @ts-expect-error index on symbol\n return event[IN_PASSIVE_LISTENER_FLAG_KEY]\n}\n\nexport function setInPassiveListenerFlag(event: Event, value: boolean): void {\n // @ts-expect-error index on symbol\n event[IN_PASSIVE_LISTENER_FLAG_KEY] = value\n}\n\nexport function getIsTrusted(event: Event): boolean {\n // @ts-expect-error index on symbol\n return event[IS_TRUSTED_KEY]\n}\n\nexport function setIsTrusted(event: Event, isTrusted: boolean): void {\n // @ts-expect-error index on symbol\n event[IS_TRUSTED_KEY] = isTrusted\n}\n\nexport function getStopImmediatePropagationFlag(event: Event): boolean {\n // @ts-expect-error index on symbol\n return event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY]\n}\n\nexport function setStopImmediatePropagationFlag(event: Event, value: boolean): void {\n // @ts-expect-error index on symbol\n event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY] = value\n}\n\nexport function getStopPropagationFlag(event: Event): boolean {\n // @ts-expect-error index on symbol\n return event[STOP_PROPAGATION_FLAG_KEY]\n}\n\nexport function setStopPropagationFlag(event: Event, value: boolean): void {\n // @ts-expect-error index on symbol\n event[STOP_PROPAGATION_FLAG_KEY] = value\n}\n\nexport function getTarget(event: Event): EventTarget | null {\n // @ts-expect-error index on symbol\n return event[TARGET_KEY]\n}\n\nexport function setTarget(event: Event, target: EventTarget | null): void {\n // @ts-expect-error index on symbol\n event[TARGET_KEY] = target\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal implementation details for the `EventTarget` module.
|
|
3
|
+
*/
|
|
4
|
+
import type Event from '../Event';
|
|
5
|
+
import type EventTarget from '../EventTarget';
|
|
6
|
+
export declare const EVENT_TARGET_GET_THE_PARENT_KEY: unique symbol;
|
|
7
|
+
export declare const INTERNAL_DISPATCH_METHOD_KEY: unique symbol;
|
|
8
|
+
export declare function dispatchTrustedEvent(eventTarget: EventTarget, event: Event): void;
|
|
9
|
+
//# sourceMappingURL=EventTargetInternals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTargetInternals.d.ts","sourceRoot":"","sources":["../../../../src/polyfills/events/internals/EventTargetInternals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAG7C,eAAO,MAAM,+BAA+B,EAAE,OAAO,MAA8C,CAAA;AAEnG,eAAO,MAAM,4BAA4B,EAAE,OAAO,MAAwC,CAAA;AAE1F,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGjF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal implementation details for the `EventTarget` module.
|
|
3
|
+
*/
|
|
4
|
+
import { setIsTrusted } from './EventInternals';
|
|
5
|
+
export const EVENT_TARGET_GET_THE_PARENT_KEY = Symbol('EventTarget[get the parent]');
|
|
6
|
+
export const INTERNAL_DISPATCH_METHOD_KEY = Symbol('EventTarget[dispatch]');
|
|
7
|
+
export function dispatchTrustedEvent(eventTarget, event) {
|
|
8
|
+
setIsTrusted(event, true);
|
|
9
|
+
return eventTarget[INTERNAL_DISPATCH_METHOD_KEY](event);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=EventTargetInternals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTargetInternals.js","sourceRoot":"","sources":["../../../../src/polyfills/events/internals/EventTargetInternals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,+BAA+B,GAAkB,MAAM,CAAC,6BAA6B,CAAC,CAAA;AAEnG,MAAM,CAAC,MAAM,4BAA4B,GAAkB,MAAM,CAAC,uBAAuB,CAAC,CAAA;AAE1F,MAAM,UAAU,oBAAoB,CAAC,WAAwB,EAAE,KAAY;IACzE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACzB,OAAO,WAAW,CAAC,4BAA4B,CAAC,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC","sourcesContent":["/**\n * Internal implementation details for the `EventTarget` module.\n */\n\nimport type Event from '../Event'\nimport type EventTarget from '../EventTarget'\nimport { setIsTrusted } from './EventInternals'\n\nexport const EVENT_TARGET_GET_THE_PARENT_KEY: unique symbol = Symbol('EventTarget[get the parent]')\n\nexport const INTERNAL_DISPATCH_METHOD_KEY: unique symbol = Symbol('EventTarget[dispatch]')\n\nexport function dispatchTrustedEvent(eventTarget: EventTarget, event: Event): void {\n setIsTrusted(event, true)\n return eventTarget[INTERNAL_DISPATCH_METHOD_KEY](event)\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
type CloneFn<T extends object> = (value: T) => T;
|
|
8
|
+
/**
|
|
9
|
+
* Marks the given object or instances of the given class as platform objects.
|
|
10
|
+
*
|
|
11
|
+
* Optionally, it sets the clone function for that platform object, which is a
|
|
12
|
+
* simplification of the serializable attribute of the Web interface.
|
|
13
|
+
*/
|
|
14
|
+
export declare function setPlatformObject<T extends object>(obj: {
|
|
15
|
+
prototype: unknown;
|
|
16
|
+
}, options?: {
|
|
17
|
+
clone: CloneFn<T>;
|
|
18
|
+
}): void;
|
|
19
|
+
export declare function setPlatformObject<T extends object>(obj: T, options?: {
|
|
20
|
+
clone: CloneFn<T>;
|
|
21
|
+
}): void;
|
|
22
|
+
/**
|
|
23
|
+
* Indicates if the given object is a platform object.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isPlatformObject<T extends object>(obj: T): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Returns the clone function for the given platform object, if it was set.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPlatformObjectClone<T extends object>(obj: T): ((value: T) => T) | undefined;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=PlatformObjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformObjects.d.ts","sourceRoot":"","sources":["../../../src/polyfills/webidl/PlatformObjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;AAEhD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,GAAG,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9B,IAAI,CAAA;AACP,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,IAAI,CAAA;AAelG;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAE9F"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
const IS_PLATFORM_OBJECT_KEY = Symbol('isPlatformObject');
|
|
8
|
+
const CLONE_PLATFORM_OBJECT_KEY = Symbol('clonePlatformObject');
|
|
9
|
+
export function setPlatformObject(obj, options) {
|
|
10
|
+
if (typeof obj === 'function') {
|
|
11
|
+
;
|
|
12
|
+
obj.prototype[IS_PLATFORM_OBJECT_KEY] = true;
|
|
13
|
+
if (options) {
|
|
14
|
+
;
|
|
15
|
+
obj.prototype[CLONE_PLATFORM_OBJECT_KEY] = options.clone;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
;
|
|
20
|
+
obj[IS_PLATFORM_OBJECT_KEY] = true;
|
|
21
|
+
if (options) {
|
|
22
|
+
;
|
|
23
|
+
obj[CLONE_PLATFORM_OBJECT_KEY] = options.clone;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Indicates if the given object is a platform object.
|
|
29
|
+
*/
|
|
30
|
+
export function isPlatformObject(obj) {
|
|
31
|
+
return IS_PLATFORM_OBJECT_KEY in obj;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the clone function for the given platform object, if it was set.
|
|
35
|
+
*/
|
|
36
|
+
export function getPlatformObjectClone(obj) {
|
|
37
|
+
return obj[CLONE_PLATFORM_OBJECT_KEY];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=PlatformObjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformObjects.js","sourceRoot":"","sources":["../../../src/polyfills/webidl/PlatformObjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,sBAAsB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AACzD,MAAM,yBAAyB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAe/D,MAAM,UAAU,iBAAiB,CAAC,GAAQ,EAAE,OAAwC;IAClF,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,CAAC;QAAC,GAAG,CAAC,SAAiB,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAA;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,GAAG,CAAC,SAAiB,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAA;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,CAAC;QAAC,GAAW,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAA;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,GAAW,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAmB,GAAM;IACvD,OAAO,sBAAsB,IAAK,GAAW,CAAA;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAmB,GAAM;IAC7D,OAAQ,GAAW,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC","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\nconst IS_PLATFORM_OBJECT_KEY = Symbol('isPlatformObject')\nconst CLONE_PLATFORM_OBJECT_KEY = Symbol('clonePlatformObject')\n\ntype CloneFn<T extends object> = (value: T) => T\n\n/**\n * Marks the given object or instances of the given class as platform objects.\n *\n * Optionally, it sets the clone function for that platform object, which is a\n * simplification of the serializable attribute of the Web interface.\n */\nexport function setPlatformObject<T extends object>(\n obj: { prototype: unknown },\n options?: { clone: CloneFn<T> }\n): void\nexport function setPlatformObject<T extends object>(obj: T, options?: { clone: CloneFn<T> }): void\nexport function setPlatformObject(obj: any, options?: { clone: (value: any) => any }): void {\n if (typeof obj === 'function') {\n ;(obj.prototype as any)[IS_PLATFORM_OBJECT_KEY] = true\n if (options) {\n ;(obj.prototype as any)[CLONE_PLATFORM_OBJECT_KEY] = options.clone\n }\n } else {\n ;(obj as any)[IS_PLATFORM_OBJECT_KEY] = true\n if (options) {\n ;(obj as any)[CLONE_PLATFORM_OBJECT_KEY] = options.clone\n }\n }\n}\n\n/**\n * Indicates if the given object is a platform object.\n */\nexport function isPlatformObject<T extends object>(obj: T): boolean {\n return IS_PLATFORM_OBJECT_KEY in (obj as any)\n}\n\n/**\n * Returns the clone function for the given platform object, if it was set.\n */\nexport function getPlatformObjectClone<T extends object>(obj: T): ((value: T) => T) | undefined {\n return (obj as any)[CLONE_PLATFORM_OBJECT_KEY]\n}\n"]}
|