@lwc/synthetic-shadow 3.0.1 → 3.0.3
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/dist/env/document.d.ts +2 -2
- package/dist/faux-shadow/legacy-shadow-token.d.ts +2 -0
- package/dist/faux-shadow/node.d.ts +0 -7
- package/dist/faux-shadow/shadow-root.d.ts +0 -7
- package/dist/index.cjs.js +79 -320
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +79 -320
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/polyfills/iframe-content-window/detect.d.ts +0 -1
- package/dist/polyfills/iframe-content-window/main.d.ts +0 -1
- package/dist/polyfills/iframe-content-window/patch.d.ts +0 -1
- package/dist/polyfills/window-event-target/detect.d.ts +0 -1
- package/dist/polyfills/window-event-target/main.d.ts +0 -1
- package/dist/polyfills/window-event-target/polyfill.d.ts +0 -1
package/dist/env/document.d.ts
CHANGED
@@ -2,7 +2,7 @@ declare const DocumentPrototypeActiveElement: (this: Document) => Element | null
|
|
2
2
|
declare const elementFromPoint: (x: number, y: number) => Element | null;
|
3
3
|
declare const elementsFromPoint: (x: number, y: number) => Element[];
|
4
4
|
declare const defaultViewGetter: (this: Document) => Window | null;
|
5
|
-
declare const
|
5
|
+
declare const querySelectorAll: {
|
6
6
|
<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
|
7
7
|
<K_1 extends keyof SVGElementTagNameMap>(selectors: K_1): NodeListOf<SVGElementTagNameMap[K_1]>;
|
8
8
|
<K_2 extends keyof MathMLElementTagNameMap>(selectors: K_2): NodeListOf<MathMLElementTagNameMap[K_2]>;
|
@@ -21,4 +21,4 @@ declare const createComment: (data: string) => Comment, querySelectorAll: {
|
|
21
21
|
(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
|
22
22
|
};
|
23
23
|
declare const getElementsByName: (elementName: string) => NodeListOf<HTMLElement>;
|
24
|
-
export { elementFromPoint, elementsFromPoint,
|
24
|
+
export { elementFromPoint, elementsFromPoint, DocumentPrototypeActiveElement, querySelectorAll, getElementById, getElementsByClassName, getElementsByName, getElementsByTagName, getElementsByTagNameNS, defaultViewGetter, };
|
@@ -5,11 +5,4 @@
|
|
5
5
|
* because we don't want to patch the children getters for those elements.
|
6
6
|
*/
|
7
7
|
export declare function hasMountedChildren(node: Node): boolean;
|
8
|
-
/**
|
9
|
-
* These 2 methods are providing a machinery to understand who is accessing the
|
10
|
-
* .childNodes member property of a node. If it is used from inside the synthetic shadow
|
11
|
-
* or from an external invoker. This helps to produce the right output in one very peculiar
|
12
|
-
* case, the IE11 debugging comment for shadowRoot representation on the devtool.
|
13
|
-
*/
|
14
|
-
export declare function isExternalChildNodeAccessorFlagOn(): boolean;
|
15
8
|
export declare const getInternalChildNodes: (node: Node) => NodeListOf<ChildNode>;
|
@@ -13,10 +13,3 @@ export declare function SyntheticShadowRoot(): void;
|
|
13
13
|
export declare namespace SyntheticShadowRoot {
|
14
14
|
var prototype: any;
|
15
15
|
}
|
16
|
-
/**
|
17
|
-
* This method is only intended to be used in non-production mode in IE11
|
18
|
-
* and its role is to produce a 1-1 mapping between a shadowRoot instance
|
19
|
-
* and a comment node that is intended to use to trick the IE11 DevTools
|
20
|
-
* to show the content of the shadowRoot in the DOM Explorer.
|
21
|
-
*/
|
22
|
-
export declare function getIE11FakeShadowRootPlaceholder(host: Element): Comment;
|
package/dist/index.cjs.js
CHANGED
@@ -111,20 +111,13 @@ const KEY__SHADOW_STATIC = '$shadowStaticNode$';
|
|
111
111
|
const KEY__SHADOW_STATIC_PRIVATE = '$shadowStaticNodeKey$';
|
112
112
|
const KEY__SHADOW_TOKEN = '$shadowToken$';
|
113
113
|
const KEY__SHADOW_TOKEN_PRIVATE = '$$ShadowTokenKey$$';
|
114
|
+
// TODO [#3733]: remove support for legacy scope tokens
|
115
|
+
const KEY__LEGACY_SHADOW_TOKEN = '$legacyShadowToken$';
|
116
|
+
const KEY__LEGACY_SHADOW_TOKEN_PRIVATE = '$$LegacyShadowTokenKey$$';
|
114
117
|
const KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
|
115
118
|
const KEY__NATIVE_GET_ELEMENT_BY_ID = '$nativeGetElementById$';
|
116
119
|
const KEY__NATIVE_QUERY_SELECTOR_ALL = '$nativeQuerySelectorAll$';
|
117
|
-
|
118
|
-
/*
|
119
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
120
|
-
* All rights reserved.
|
121
|
-
* SPDX-License-Identifier: MIT
|
122
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
123
|
-
*/
|
124
|
-
// We use this to detect symbol support in order to avoid the expensive symbol polyfill. Note that
|
125
|
-
// we can't use typeof since it will fail when transpiling.
|
126
|
-
const hasNativeSymbolSupport = /*@__PURE__*/ (() => Symbol('x').toString() === 'Symbol(x)')();
|
127
|
-
/** version: 3.0.1 */
|
120
|
+
/** version: 3.0.3 */
|
128
121
|
|
129
122
|
/**
|
130
123
|
* Copyright (C) 2023 salesforce.com, inc.
|
@@ -133,7 +126,7 @@ const hasNativeSymbolSupport = /*@__PURE__*/ (() => Symbol('x').toString() === '
|
|
133
126
|
if (!_globalThis.lwcRuntimeFlags) {
|
134
127
|
Object.defineProperty(_globalThis, 'lwcRuntimeFlags', { value: create(null) });
|
135
128
|
}
|
136
|
-
/** version: 3.0.
|
129
|
+
/** version: 3.0.3 */
|
137
130
|
|
138
131
|
/*
|
139
132
|
* Copyright (c) 2018, salesforce.com, inc.
|
@@ -153,13 +146,9 @@ const lastChildGetter = getOwnPropertyDescriptor(nodePrototype, 'lastChild').get
|
|
153
146
|
const textContentGetter = getOwnPropertyDescriptor(nodePrototype, 'textContent').get;
|
154
147
|
const parentNodeGetter = getOwnPropertyDescriptor(nodePrototype, 'parentNode').get;
|
155
148
|
const ownerDocumentGetter = getOwnPropertyDescriptor(nodePrototype, 'ownerDocument').get;
|
156
|
-
const parentElementGetter =
|
157
|
-
? getOwnPropertyDescriptor(nodePrototype, 'parentElement').get
|
158
|
-
: getOwnPropertyDescriptor(HTMLElement.prototype, 'parentElement').get; // IE11
|
149
|
+
const parentElementGetter = getOwnPropertyDescriptor(nodePrototype, 'parentElement').get;
|
159
150
|
const textContextSetter = getOwnPropertyDescriptor(nodePrototype, 'textContent').set;
|
160
|
-
const childNodesGetter =
|
161
|
-
? getOwnPropertyDescriptor(nodePrototype, 'childNodes').get
|
162
|
-
: getOwnPropertyDescriptor(HTMLElement.prototype, 'childNodes').get; // IE11
|
151
|
+
const childNodesGetter = getOwnPropertyDescriptor(nodePrototype, 'childNodes').get;
|
163
152
|
const isConnected = hasOwnProperty.call(nodePrototype, 'isConnected')
|
164
153
|
? getOwnPropertyDescriptor(nodePrototype, 'isConnected').get
|
165
154
|
: function () {
|
@@ -202,26 +191,18 @@ const outerTextGetter = outerTextDescriptor
|
|
202
191
|
const outerTextSetter = outerTextDescriptor
|
203
192
|
? outerTextDescriptor.set
|
204
193
|
: null;
|
205
|
-
const innerHTMLDescriptor =
|
206
|
-
? getOwnPropertyDescriptor(Element.prototype, 'innerHTML')
|
207
|
-
: getOwnPropertyDescriptor(HTMLElement.prototype, 'innerHTML'); // IE11
|
194
|
+
const innerHTMLDescriptor = getOwnPropertyDescriptor(Element.prototype, 'innerHTML');
|
208
195
|
const innerHTMLGetter = innerHTMLDescriptor.get;
|
209
196
|
const innerHTMLSetter = innerHTMLDescriptor.set;
|
210
|
-
const outerHTMLDescriptor =
|
211
|
-
? getOwnPropertyDescriptor(Element.prototype, 'outerHTML')
|
212
|
-
: getOwnPropertyDescriptor(HTMLElement.prototype, 'outerHTML'); // IE11
|
197
|
+
const outerHTMLDescriptor = getOwnPropertyDescriptor(Element.prototype, 'outerHTML');
|
213
198
|
const outerHTMLGetter = outerHTMLDescriptor.get;
|
214
199
|
const outerHTMLSetter = outerHTMLDescriptor.set;
|
215
200
|
const tagNameGetter = getOwnPropertyDescriptor(Element.prototype, 'tagName').get;
|
216
201
|
const tabIndexDescriptor = getOwnPropertyDescriptor(HTMLElement.prototype, 'tabIndex');
|
217
202
|
const tabIndexGetter = tabIndexDescriptor.get;
|
218
203
|
const tabIndexSetter = tabIndexDescriptor.set;
|
219
|
-
const matches =
|
220
|
-
|
221
|
-
: Element.prototype.msMatchesSelector; // IE11
|
222
|
-
const childrenGetter = hasOwnProperty.call(Element.prototype, 'children')
|
223
|
-
? getOwnPropertyDescriptor(Element.prototype, 'children').get
|
224
|
-
: getOwnPropertyDescriptor(HTMLElement.prototype, 'children').get; // IE11
|
204
|
+
const matches = Element.prototype.matches;
|
205
|
+
const childrenGetter = getOwnPropertyDescriptor(Element.prototype, 'children').get;
|
225
206
|
// for IE11, access from HTMLElement
|
226
207
|
// for all other browsers access the method from the parent Element interface
|
227
208
|
const { getElementsByClassName: getElementsByClassName$1 } = HTMLElement.prototype;
|
@@ -275,16 +256,12 @@ const composedPath = hasOwnProperty.call(Event.prototype, 'composedPath')
|
|
275
256
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
276
257
|
*/
|
277
258
|
const DocumentPrototypeActiveElement = getOwnPropertyDescriptor(Document.prototype, 'activeElement').get;
|
278
|
-
const elementFromPoint =
|
279
|
-
|
280
|
-
: Document.prototype.msElementFromPoint; // IE11
|
281
|
-
const elementsFromPoint = hasOwnProperty.call(Document.prototype, 'elementsFromPoint')
|
282
|
-
? Document.prototype.elementsFromPoint
|
283
|
-
: Document.prototype.msElementsFromPoint; // IE11
|
259
|
+
const elementFromPoint = Document.prototype.elementFromPoint;
|
260
|
+
const elementsFromPoint = Document.prototype.elementsFromPoint;
|
284
261
|
// defaultView can be null when a document has no browsing context. For example, the owner document
|
285
262
|
// of a node in a template doesn't have a default view: https://jsfiddle.net/hv9z0q5a/
|
286
263
|
const defaultViewGetter = getOwnPropertyDescriptor(Document.prototype, 'defaultView').get;
|
287
|
-
const {
|
264
|
+
const { querySelectorAll, getElementById, getElementsByClassName, getElementsByTagName, getElementsByTagNameNS, } = Document.prototype;
|
288
265
|
// In Firefox v57 and lower, getElementsByName is defined on HTMLDocument.prototype
|
289
266
|
// In all other browsers have the method on Document.prototype
|
290
267
|
const { getElementsByName } = HTMLDocument.prototype;
|
@@ -330,7 +307,7 @@ const isInstanceOfNativeShadowRoot = isNull(NativeShadowRoot)
|
|
330
307
|
* SPDX-License-Identifier: MIT
|
331
308
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
332
309
|
*/
|
333
|
-
function detect$
|
310
|
+
function detect$2 () {
|
334
311
|
return typeof HTMLSlotElement === 'undefined';
|
335
312
|
}
|
336
313
|
|
@@ -345,7 +322,7 @@ const CHAR_S = 115;
|
|
345
322
|
const CHAR_L = 108;
|
346
323
|
const CHAR_O = 111;
|
347
324
|
const CHAR_T = 116;
|
348
|
-
function apply$
|
325
|
+
function apply$2() {
|
349
326
|
// IE11 does not have this element definition
|
350
327
|
// we don't care much about the construction phase, just the prototype
|
351
328
|
class HTMLSlotElement {
|
@@ -380,8 +357,8 @@ function apply$4() {
|
|
380
357
|
* SPDX-License-Identifier: MIT
|
381
358
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
382
359
|
*/
|
383
|
-
if (detect$
|
384
|
-
apply$
|
360
|
+
if (detect$2()) {
|
361
|
+
apply$2();
|
385
362
|
}
|
386
363
|
|
387
364
|
/*
|
@@ -1282,15 +1259,6 @@ function childNodesGetterPatched() {
|
|
1282
1259
|
if (isSyntheticShadowHost(this)) {
|
1283
1260
|
const owner = getNodeOwner(this);
|
1284
1261
|
const childNodes = isNull(owner) ? [] : getAllMatches(owner, getFilteredChildNodes(this));
|
1285
|
-
if (process.env.NODE_ENV !== 'production' &&
|
1286
|
-
isFalse(hasNativeSymbolSupport) &&
|
1287
|
-
isExternalChildNodeAccessorFlagOn()) {
|
1288
|
-
// inserting a comment node as the first childNode to trick the IE11
|
1289
|
-
// DevTool to show the content of the shadowRoot, this should only happen
|
1290
|
-
// in dev-mode and in IE11 (which we detect by looking at the symbol).
|
1291
|
-
// Plus it should only be in place if we know it is an external invoker.
|
1292
|
-
ArrayUnshift.call(childNodes, getIE11FakeShadowRootPlaceholder(this));
|
1293
|
-
}
|
1294
1262
|
return createStaticNodeList(childNodes);
|
1295
1263
|
}
|
1296
1264
|
// nothing to do here since this does not have a synthetic shadow attached to it
|
@@ -1505,40 +1473,9 @@ defineProperties(_Node.prototype, {
|
|
1505
1473
|
},
|
1506
1474
|
},
|
1507
1475
|
});
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
* .childNodes member property of a node. If it is used from inside the synthetic shadow
|
1512
|
-
* or from an external invoker. This helps to produce the right output in one very peculiar
|
1513
|
-
* case, the IE11 debugging comment for shadowRoot representation on the devtool.
|
1514
|
-
*/
|
1515
|
-
function isExternalChildNodeAccessorFlagOn() {
|
1516
|
-
return !internalChildNodeAccessorFlag;
|
1517
|
-
}
|
1518
|
-
const getInternalChildNodes = process.env.NODE_ENV !== 'production' && isFalse(hasNativeSymbolSupport)
|
1519
|
-
? function (node) {
|
1520
|
-
internalChildNodeAccessorFlag = true;
|
1521
|
-
let childNodes;
|
1522
|
-
let error = null;
|
1523
|
-
try {
|
1524
|
-
childNodes = node.childNodes;
|
1525
|
-
}
|
1526
|
-
catch (e) {
|
1527
|
-
// childNodes accessor should never throw, but just in case!
|
1528
|
-
error = e;
|
1529
|
-
}
|
1530
|
-
finally {
|
1531
|
-
internalChildNodeAccessorFlag = false;
|
1532
|
-
if (!isNull(error)) {
|
1533
|
-
// re-throwing after restoring the state machinery for setInternalChildNodeAccessorFlag
|
1534
|
-
throw error; // eslint-disable-line no-unsafe-finally
|
1535
|
-
}
|
1536
|
-
}
|
1537
|
-
return childNodes;
|
1538
|
-
}
|
1539
|
-
: function (node) {
|
1540
|
-
return node.childNodes;
|
1541
|
-
};
|
1476
|
+
const getInternalChildNodes = function (node) {
|
1477
|
+
return node.childNodes;
|
1478
|
+
};
|
1542
1479
|
// IE11 extra patches for wrong prototypes
|
1543
1480
|
if (hasOwnProperty.call(HTMLElement.prototype, 'contains')) {
|
1544
1481
|
defineProperty(HTMLElement.prototype, 'contains', getOwnPropertyDescriptor(_Node.prototype, 'contains'));
|
@@ -2346,42 +2283,6 @@ defineProperty(SyntheticShadowRoot, Symbol.hasInstance, {
|
|
2346
2283
|
getPrototypeOf(object) === SyntheticShadowRoot.prototype));
|
2347
2284
|
},
|
2348
2285
|
});
|
2349
|
-
/**
|
2350
|
-
* This method is only intended to be used in non-production mode in IE11
|
2351
|
-
* and its role is to produce a 1-1 mapping between a shadowRoot instance
|
2352
|
-
* and a comment node that is intended to use to trick the IE11 DevTools
|
2353
|
-
* to show the content of the shadowRoot in the DOM Explorer.
|
2354
|
-
*/
|
2355
|
-
function getIE11FakeShadowRootPlaceholder(host) {
|
2356
|
-
const shadowRoot = getShadowRoot(host);
|
2357
|
-
// @ts-ignore this $$placeholder$$ is not a security issue because you must
|
2358
|
-
// have access to the shadowRoot in order to extract the fake node, which give
|
2359
|
-
// you access to the same childNodes of the shadowRoot, so, who cares.
|
2360
|
-
let c = shadowRoot.$$placeholder$$;
|
2361
|
-
if (!isUndefined(c)) {
|
2362
|
-
return c;
|
2363
|
-
}
|
2364
|
-
const doc = getOwnerDocument(host);
|
2365
|
-
// @ts-ignore $$placeholder$$ is fine, read the node above.
|
2366
|
-
c = shadowRoot.$$placeholder$$ = createComment.call(doc, '');
|
2367
|
-
defineProperties(c, {
|
2368
|
-
childNodes: {
|
2369
|
-
get() {
|
2370
|
-
return shadowRoot.childNodes;
|
2371
|
-
},
|
2372
|
-
enumerable: true,
|
2373
|
-
configurable: true,
|
2374
|
-
},
|
2375
|
-
tagName: {
|
2376
|
-
get() {
|
2377
|
-
return `#shadow-root (${shadowRoot.mode})`;
|
2378
|
-
},
|
2379
|
-
enumerable: true,
|
2380
|
-
configurable: true,
|
2381
|
-
},
|
2382
|
-
});
|
2383
|
-
return c;
|
2384
|
-
}
|
2385
2286
|
|
2386
2287
|
/*
|
2387
2288
|
* Copyright (c) 2018, salesforce.com, inc.
|
@@ -2660,7 +2561,7 @@ Object.defineProperty(window, 'ShadowRoot', {
|
|
2660
2561
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2661
2562
|
*/
|
2662
2563
|
const composedDescriptor = Object.getOwnPropertyDescriptor(Event.prototype, 'composed');
|
2663
|
-
function detect$
|
2564
|
+
function detect$1() {
|
2664
2565
|
if (!composedDescriptor) {
|
2665
2566
|
// No need to apply this polyfill if this client completely lacks
|
2666
2567
|
// support for the composed property.
|
@@ -2692,7 +2593,7 @@ function handleClick(event) {
|
|
2692
2593
|
},
|
2693
2594
|
});
|
2694
2595
|
}
|
2695
|
-
function apply$
|
2596
|
+
function apply$1() {
|
2696
2597
|
HTMLElement.prototype.click = function () {
|
2697
2598
|
addEventListener.call(this, 'click', handleClick);
|
2698
2599
|
try {
|
@@ -2710,8 +2611,8 @@ function apply$3() {
|
|
2710
2611
|
* SPDX-License-Identifier: MIT
|
2711
2612
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2712
2613
|
*/
|
2713
|
-
if (detect$
|
2714
|
-
apply$
|
2614
|
+
if (detect$1()) {
|
2615
|
+
apply$1();
|
2715
2616
|
}
|
2716
2617
|
|
2717
2618
|
/*
|
@@ -2720,7 +2621,7 @@ if (detect$3()) {
|
|
2720
2621
|
* SPDX-License-Identifier: MIT
|
2721
2622
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2722
2623
|
*/
|
2723
|
-
function detect
|
2624
|
+
function detect() {
|
2724
2625
|
return new Event('test', { composed: true }).composed !== true;
|
2725
2626
|
}
|
2726
2627
|
|
@@ -2730,7 +2631,7 @@ function detect$2() {
|
|
2730
2631
|
* SPDX-License-Identifier: MIT
|
2731
2632
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2732
2633
|
*/
|
2733
|
-
function apply
|
2634
|
+
function apply() {
|
2734
2635
|
// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937
|
2735
2636
|
const composedEvents = assign(create(null), {
|
2736
2637
|
beforeinput: 1,
|
@@ -2824,8 +2725,8 @@ function apply$2() {
|
|
2824
2725
|
* SPDX-License-Identifier: MIT
|
2825
2726
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2826
2727
|
*/
|
2827
|
-
if (detect
|
2828
|
-
apply
|
2728
|
+
if (detect()) {
|
2729
|
+
apply();
|
2829
2730
|
}
|
2830
2731
|
|
2831
2732
|
/*
|
@@ -2877,121 +2778,6 @@ if (typeof ClipboardEvent !== 'undefined') {
|
|
2877
2778
|
});
|
2878
2779
|
}
|
2879
2780
|
|
2880
|
-
/*
|
2881
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
2882
|
-
* All rights reserved.
|
2883
|
-
* SPDX-License-Identifier: MIT
|
2884
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2885
|
-
*/
|
2886
|
-
function detect$1() {
|
2887
|
-
// Note: when using this in mobile apps, we might have a DOM that does not support iframes.
|
2888
|
-
const hasIframe = typeof HTMLIFrameElement !== 'undefined';
|
2889
|
-
// This polyfill should only apply in compat mode; see https://github.com/salesforce/lwc/issues/1513
|
2890
|
-
const isCompat = typeof Proxy !== 'undefined' && isTrue(Proxy.isCompat);
|
2891
|
-
return hasIframe && isCompat;
|
2892
|
-
}
|
2893
|
-
|
2894
|
-
/*
|
2895
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
2896
|
-
* All rights reserved.
|
2897
|
-
* SPDX-License-Identifier: MIT
|
2898
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2899
|
-
*/
|
2900
|
-
function apply$1() {
|
2901
|
-
// the iframe property descriptor for `contentWindow` should always be available, otherwise this method should never be called
|
2902
|
-
const desc = getOwnPropertyDescriptor(HTMLIFrameElement.prototype, 'contentWindow');
|
2903
|
-
const { get: originalGetter } = desc;
|
2904
|
-
desc.get = function () {
|
2905
|
-
const original = originalGetter.call(this);
|
2906
|
-
// If the original iframe element is not a keyed node, then do not wrap it
|
2907
|
-
if (isNull(original) || isUndefined(getNodeOwnerKey(this))) {
|
2908
|
-
return original;
|
2909
|
-
}
|
2910
|
-
// only if the element is an iframe inside a shadowRoot, we care about this problem
|
2911
|
-
// because in that case, the code that is accessing the iframe, is very likely code
|
2912
|
-
// compiled with proxy-compat transformation. It is true that other code without those
|
2913
|
-
// transformations might also access an iframe from within a shadowRoot, but in that,
|
2914
|
-
// case, which is more rare, we still return the wrapper, and it should work the same,
|
2915
|
-
// this part is just an optimization.
|
2916
|
-
return wrapIframeWindow(original);
|
2917
|
-
};
|
2918
|
-
defineProperty(HTMLIFrameElement.prototype, 'contentWindow', desc);
|
2919
|
-
}
|
2920
|
-
function wrapIframeWindow(win) {
|
2921
|
-
return {
|
2922
|
-
addEventListener() {
|
2923
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2924
|
-
// @ts-ignore type-mismatch
|
2925
|
-
return win.addEventListener.apply(win, arguments);
|
2926
|
-
},
|
2927
|
-
blur() {
|
2928
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2929
|
-
// @ts-ignore type-mismatch
|
2930
|
-
return win.blur.apply(win, arguments);
|
2931
|
-
},
|
2932
|
-
close() {
|
2933
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2934
|
-
// @ts-ignore type-mismatch
|
2935
|
-
return win.close.apply(win, arguments);
|
2936
|
-
},
|
2937
|
-
focus() {
|
2938
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2939
|
-
// @ts-ignore type-mismatch
|
2940
|
-
return win.focus.apply(win, arguments);
|
2941
|
-
},
|
2942
|
-
postMessage() {
|
2943
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2944
|
-
// @ts-ignore type-mismatch
|
2945
|
-
return win.postMessage.apply(win, arguments);
|
2946
|
-
},
|
2947
|
-
removeEventListener() {
|
2948
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
2949
|
-
// @ts-ignore type-mismatch
|
2950
|
-
return win.removeEventListener.apply(win, arguments);
|
2951
|
-
},
|
2952
|
-
get closed() {
|
2953
|
-
return win.closed;
|
2954
|
-
},
|
2955
|
-
get frames() {
|
2956
|
-
return win.frames;
|
2957
|
-
},
|
2958
|
-
get length() {
|
2959
|
-
return win.length;
|
2960
|
-
},
|
2961
|
-
get location() {
|
2962
|
-
return win.location;
|
2963
|
-
},
|
2964
|
-
set location(value) {
|
2965
|
-
win.location = value;
|
2966
|
-
},
|
2967
|
-
get opener() {
|
2968
|
-
return win.opener;
|
2969
|
-
},
|
2970
|
-
get parent() {
|
2971
|
-
return win.parent;
|
2972
|
-
},
|
2973
|
-
get self() {
|
2974
|
-
return win.self;
|
2975
|
-
},
|
2976
|
-
get top() {
|
2977
|
-
return win.top;
|
2978
|
-
},
|
2979
|
-
get window() {
|
2980
|
-
return win.window;
|
2981
|
-
},
|
2982
|
-
}; // this is limited
|
2983
|
-
}
|
2984
|
-
|
2985
|
-
/*
|
2986
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
2987
|
-
* All rights reserved.
|
2988
|
-
* SPDX-License-Identifier: MIT
|
2989
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
2990
|
-
*/
|
2991
|
-
if (detect$1()) {
|
2992
|
-
apply$1();
|
2993
|
-
}
|
2994
|
-
|
2995
2781
|
/*
|
2996
2782
|
* Copyright (c) 2018, salesforce.com, inc.
|
2997
2783
|
* All rights reserved.
|
@@ -3233,7 +3019,7 @@ defineProperty(window, 'MutationObserver', {
|
|
3233
3019
|
* SPDX-License-Identifier: MIT
|
3234
3020
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
3235
3021
|
*/
|
3236
|
-
function patchedAddEventListener
|
3022
|
+
function patchedAddEventListener(type, listener, optionsOrCapture) {
|
3237
3023
|
if (isSyntheticShadowHost(this)) {
|
3238
3024
|
// Typescript does not like it when you treat the `arguments` object as an array
|
3239
3025
|
// @ts-ignore type-mismatch
|
@@ -3256,7 +3042,7 @@ function patchedAddEventListener$1(type, listener, optionsOrCapture) {
|
|
3256
3042
|
// The third argument is optional, so passing in `undefined` for `optionsOrCapture` gives capture=false
|
3257
3043
|
return addEventListener.call(this, type, wrappedListener, optionsOrCapture);
|
3258
3044
|
}
|
3259
|
-
function patchedRemoveEventListener
|
3045
|
+
function patchedRemoveEventListener(_type, _listener, _optionsOrCapture) {
|
3260
3046
|
if (isSyntheticShadowHost(this)) {
|
3261
3047
|
// Typescript does not like it when you treat the `arguments` object as an array
|
3262
3048
|
// @ts-ignore type-mismatch
|
@@ -3276,87 +3062,19 @@ function patchedRemoveEventListener$1(_type, _listener, _optionsOrCapture) {
|
|
3276
3062
|
}
|
3277
3063
|
defineProperties(eventTargetPrototype, {
|
3278
3064
|
addEventListener: {
|
3279
|
-
value: patchedAddEventListener
|
3065
|
+
value: patchedAddEventListener,
|
3280
3066
|
enumerable: true,
|
3281
3067
|
writable: true,
|
3282
3068
|
configurable: true,
|
3283
3069
|
},
|
3284
3070
|
removeEventListener: {
|
3285
|
-
value: patchedRemoveEventListener
|
3071
|
+
value: patchedRemoveEventListener,
|
3286
3072
|
enumerable: true,
|
3287
3073
|
writable: true,
|
3288
3074
|
configurable: true,
|
3289
3075
|
},
|
3290
3076
|
});
|
3291
3077
|
|
3292
|
-
/*
|
3293
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
3294
|
-
* All rights reserved.
|
3295
|
-
* SPDX-License-Identifier: MIT
|
3296
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
3297
|
-
*/
|
3298
|
-
function detect() {
|
3299
|
-
return typeof EventTarget === 'undefined';
|
3300
|
-
}
|
3301
|
-
|
3302
|
-
/*
|
3303
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
3304
|
-
* All rights reserved.
|
3305
|
-
* SPDX-License-Identifier: MIT
|
3306
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
3307
|
-
*/
|
3308
|
-
function patchedAddEventListener(_type, _listener, _options) {
|
3309
|
-
if (arguments.length > 1) {
|
3310
|
-
const args = ArraySlice.call(arguments);
|
3311
|
-
args[1] = getEventListenerWrapper(args[1]);
|
3312
|
-
// Ignore types because we're passing through to native method
|
3313
|
-
// @ts-ignore type-mismatch
|
3314
|
-
return windowAddEventListener.apply(this, args);
|
3315
|
-
}
|
3316
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
3317
|
-
// @ts-ignore type-mismatch
|
3318
|
-
return windowAddEventListener.apply(this, arguments);
|
3319
|
-
}
|
3320
|
-
function patchedRemoveEventListener(_type, _listener, _options) {
|
3321
|
-
if (arguments.length > 1) {
|
3322
|
-
const args = ArraySlice.call(arguments);
|
3323
|
-
args[1] = getEventListenerWrapper(args[1]);
|
3324
|
-
// Ignore types because we're passing through to native method
|
3325
|
-
// @ts-ignore type-mismatch
|
3326
|
-
windowRemoveEventListener.apply(this, args);
|
3327
|
-
}
|
3328
|
-
// Account for listeners that were added before this polyfill was applied
|
3329
|
-
// Typescript does not like it when you treat the `arguments` object as an array
|
3330
|
-
// @ts-ignore type-mismatch
|
3331
|
-
windowRemoveEventListener.apply(this, arguments);
|
3332
|
-
}
|
3333
|
-
function apply() {
|
3334
|
-
defineProperties(Window.prototype, {
|
3335
|
-
addEventListener: {
|
3336
|
-
value: patchedAddEventListener,
|
3337
|
-
enumerable: true,
|
3338
|
-
writable: true,
|
3339
|
-
configurable: true,
|
3340
|
-
},
|
3341
|
-
removeEventListener: {
|
3342
|
-
value: patchedRemoveEventListener,
|
3343
|
-
enumerable: true,
|
3344
|
-
writable: true,
|
3345
|
-
configurable: true,
|
3346
|
-
},
|
3347
|
-
});
|
3348
|
-
}
|
3349
|
-
|
3350
|
-
/*
|
3351
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
3352
|
-
* All rights reserved.
|
3353
|
-
* SPDX-License-Identifier: MIT
|
3354
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
3355
|
-
*/
|
3356
|
-
if (detect()) {
|
3357
|
-
apply();
|
3358
|
-
}
|
3359
|
-
|
3360
3078
|
/*
|
3361
3079
|
* Copyright (c) 2018, salesforce.com, inc.
|
3362
3080
|
* All rights reserved.
|
@@ -4638,6 +4356,40 @@ defineProperty(Element.prototype, KEY__SHADOW_STATIC, {
|
|
4638
4356
|
configurable: true,
|
4639
4357
|
});
|
4640
4358
|
|
4359
|
+
/*
|
4360
|
+
* Copyright (c) 2023, salesforce.com, inc.
|
4361
|
+
* All rights reserved.
|
4362
|
+
* SPDX-License-Identifier: MIT
|
4363
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
4364
|
+
*/
|
4365
|
+
// TODO [#3733]: remove this entire file when we can remove legacy scope tokens
|
4366
|
+
function getLegacyShadowToken(node) {
|
4367
|
+
return node[KEY__LEGACY_SHADOW_TOKEN];
|
4368
|
+
}
|
4369
|
+
function setLegacyShadowToken(node, shadowToken) {
|
4370
|
+
node[KEY__LEGACY_SHADOW_TOKEN] = shadowToken;
|
4371
|
+
}
|
4372
|
+
/**
|
4373
|
+
* Patching Element.prototype.$legacyShadowToken$ to mark elements a portal:
|
4374
|
+
* Same as $shadowToken$ but for legacy CSS scope tokens.
|
4375
|
+
**/
|
4376
|
+
defineProperty(Element.prototype, KEY__LEGACY_SHADOW_TOKEN, {
|
4377
|
+
set(shadowToken) {
|
4378
|
+
const oldShadowToken = this[KEY__LEGACY_SHADOW_TOKEN_PRIVATE];
|
4379
|
+
if (!isUndefined(oldShadowToken) && oldShadowToken !== shadowToken) {
|
4380
|
+
removeAttribute.call(this, oldShadowToken);
|
4381
|
+
}
|
4382
|
+
if (!isUndefined(shadowToken)) {
|
4383
|
+
setAttribute.call(this, shadowToken, '');
|
4384
|
+
}
|
4385
|
+
this[KEY__LEGACY_SHADOW_TOKEN_PRIVATE] = shadowToken;
|
4386
|
+
},
|
4387
|
+
get() {
|
4388
|
+
return this[KEY__LEGACY_SHADOW_TOKEN_PRIVATE];
|
4389
|
+
},
|
4390
|
+
configurable: true,
|
4391
|
+
});
|
4392
|
+
|
4641
4393
|
/*
|
4642
4394
|
* Copyright (c) 2018, salesforce.com, inc.
|
4643
4395
|
* All rights reserved.
|
@@ -4655,7 +4407,8 @@ let portalObserver;
|
|
4655
4407
|
const portalObserverConfig = {
|
4656
4408
|
childList: true,
|
4657
4409
|
};
|
4658
|
-
|
4410
|
+
// TODO [#3733]: remove support for legacy scope tokens
|
4411
|
+
function adoptChildNode(node, fn, shadowToken, legacyShadowToken) {
|
4659
4412
|
const previousNodeShadowResolver = getShadowRootResolver(node);
|
4660
4413
|
if (previousNodeShadowResolver === fn) {
|
4661
4414
|
return; // nothing to do here, it is already correctly patched
|
@@ -4663,6 +4416,9 @@ function adoptChildNode(node, fn, shadowToken) {
|
|
4663
4416
|
setShadowRootResolver(node, fn);
|
4664
4417
|
if (node instanceof Element) {
|
4665
4418
|
setShadowToken(node, shadowToken);
|
4419
|
+
if (lwcRuntimeFlags.ENABLE_LEGACY_SCOPE_TOKENS) {
|
4420
|
+
setLegacyShadowToken(node, legacyShadowToken);
|
4421
|
+
}
|
4666
4422
|
if (isSyntheticShadowHost(node)) {
|
4667
4423
|
// Root LWC elements can't get content slotted into them, therefore we don't observe their children.
|
4668
4424
|
return;
|
@@ -4674,7 +4430,7 @@ function adoptChildNode(node, fn, shadowToken) {
|
|
4674
4430
|
// recursively patching all children as well
|
4675
4431
|
const childNodes = childNodesGetter.call(node);
|
4676
4432
|
for (let i = 0, len = childNodes.length; i < len; i += 1) {
|
4677
|
-
adoptChildNode(childNodes[i], fn, shadowToken);
|
4433
|
+
adoptChildNode(childNodes[i], fn, shadowToken, legacyShadowToken);
|
4678
4434
|
}
|
4679
4435
|
}
|
4680
4436
|
}
|
@@ -4695,17 +4451,20 @@ function initPortalObserver() {
|
|
4695
4451
|
// the target of the mutation should always have a ShadowRootResolver attached to it
|
4696
4452
|
const fn = getShadowRootResolver(elm);
|
4697
4453
|
const shadowToken = getShadowToken(elm);
|
4454
|
+
const legacyShadowToken = lwcRuntimeFlags.ENABLE_LEGACY_SCOPE_TOKENS
|
4455
|
+
? getLegacyShadowToken(elm)
|
4456
|
+
: undefined;
|
4698
4457
|
// Process removals first to handle the case where an element is removed and reinserted
|
4699
4458
|
for (let i = 0, len = removedNodes.length; i < len; i += 1) {
|
4700
4459
|
const node = removedNodes[i];
|
4701
4460
|
if (!(compareDocumentPosition.call(elm, node) & _Node.DOCUMENT_POSITION_CONTAINED_BY)) {
|
4702
|
-
adoptChildNode(node, DocumentResolverFn, undefined);
|
4461
|
+
adoptChildNode(node, DocumentResolverFn, undefined, undefined);
|
4703
4462
|
}
|
4704
4463
|
}
|
4705
4464
|
for (let i = 0, len = addedNodes.length; i < len; i += 1) {
|
4706
4465
|
const node = addedNodes[i];
|
4707
4466
|
if (compareDocumentPosition.call(elm, node) & _Node.DOCUMENT_POSITION_CONTAINED_BY) {
|
4708
|
-
adoptChildNode(node, fn, shadowToken);
|
4467
|
+
adoptChildNode(node, fn, shadowToken, legacyShadowToken);
|
4709
4468
|
}
|
4710
4469
|
}
|
4711
4470
|
});
|
@@ -4752,5 +4511,5 @@ defineProperty(Element.prototype, '$domManual$', {
|
|
4752
4511
|
},
|
4753
4512
|
configurable: true,
|
4754
4513
|
});
|
4755
|
-
/** version: 3.0.
|
4514
|
+
/** version: 3.0.3 */
|
4756
4515
|
//# sourceMappingURL=index.cjs.js.map
|