@lwc/synthetic-shadow 6.3.3 → 6.4.0
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/node.d.ts +2 -1
- package/dist/index.cjs.js +23 -8
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +23 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -208,7 +208,7 @@ const KEY__LEGACY_SHADOW_TOKEN_PRIVATE = '$$LegacyShadowTokenKey$$';
|
|
208
208
|
const KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
|
209
209
|
const KEY__NATIVE_GET_ELEMENT_BY_ID = '$nativeGetElementById$';
|
210
210
|
const KEY__NATIVE_QUERY_SELECTOR_ALL = '$nativeQuerySelectorAll$';
|
211
|
-
/** version: 6.
|
211
|
+
/** version: 6.4.0 */
|
212
212
|
|
213
213
|
/**
|
214
214
|
* Copyright (c) 2024 Salesforce, Inc.
|
@@ -216,7 +216,7 @@ const KEY__NATIVE_QUERY_SELECTOR_ALL = '$nativeQuerySelectorAll$';
|
|
216
216
|
if (!globalThis.lwcRuntimeFlags) {
|
217
217
|
Object.defineProperty(globalThis, 'lwcRuntimeFlags', { value: create(null) });
|
218
218
|
}
|
219
|
-
/** version: 6.
|
219
|
+
/** version: 6.4.0 */
|
220
220
|
|
221
221
|
/*
|
222
222
|
* Copyright (c) 2018, salesforce.com, inc.
|
@@ -239,6 +239,7 @@ const ownerDocumentGetter = getOwnPropertyDescriptor(nodePrototype, 'ownerDocume
|
|
239
239
|
const parentElementGetter = getOwnPropertyDescriptor(nodePrototype, 'parentElement').get;
|
240
240
|
const textContextSetter = getOwnPropertyDescriptor(nodePrototype, 'textContent').set;
|
241
241
|
const childNodesGetter = getOwnPropertyDescriptor(nodePrototype, 'childNodes').get;
|
242
|
+
const nextSiblingGetter = getOwnPropertyDescriptor(nodePrototype, 'nextSibling').get;
|
242
243
|
const isConnected = hasOwnProperty.call(nodePrototype, 'isConnected')
|
243
244
|
? getOwnPropertyDescriptor(nodePrototype, 'isConnected').get
|
244
245
|
: function () {
|
@@ -425,6 +426,8 @@ function getNodeNearestOwnerKey(node) {
|
|
425
426
|
return hostKey;
|
426
427
|
}
|
427
428
|
host = parentNodeGetter.call(host);
|
429
|
+
// Elements slotted from top level light DOM into synthetic shadow
|
430
|
+
// reach the slot tag from the shadow element first
|
428
431
|
if (!isNull(host) && isSyntheticSlotElement(host)) {
|
429
432
|
return undefined;
|
430
433
|
}
|
@@ -1225,7 +1228,11 @@ function cloneNodePatched(deep) {
|
|
1225
1228
|
function childNodesGetterPatched() {
|
1226
1229
|
if (isSyntheticShadowHost(this)) {
|
1227
1230
|
const owner = getNodeOwner(this);
|
1228
|
-
const
|
1231
|
+
const filteredChildNodes = getFilteredChildNodes(this);
|
1232
|
+
// No need to filter by owner for non-shadowed nodes
|
1233
|
+
const childNodes = isNull(owner)
|
1234
|
+
? filteredChildNodes
|
1235
|
+
: getAllMatches(owner, filteredChildNodes);
|
1229
1236
|
return createStaticNodeList(childNodes);
|
1230
1237
|
}
|
1231
1238
|
// nothing to do here since this does not have a synthetic shadow attached to it
|
@@ -3354,7 +3361,11 @@ function shadowRootGetterPatched() {
|
|
3354
3361
|
}
|
3355
3362
|
function childrenGetterPatched() {
|
3356
3363
|
const owner = getNodeOwner(this);
|
3357
|
-
const
|
3364
|
+
const filteredChildNodes = getFilteredChildNodes(this);
|
3365
|
+
// No need to filter by owner for non-shadowed nodes
|
3366
|
+
const childNodes = isNull(owner)
|
3367
|
+
? filteredChildNodes
|
3368
|
+
: getAllMatches(owner, filteredChildNodes);
|
3358
3369
|
return createStaticHTMLCollection(ArrayFilter.call(childNodes, (node) => node instanceof Element));
|
3359
3370
|
}
|
3360
3371
|
function childElementCountGetterPatched() {
|
@@ -4190,9 +4201,13 @@ defineProperty(Element.prototype, KEY__SHADOW_TOKEN, {
|
|
4190
4201
|
});
|
4191
4202
|
function recursivelySetShadowResolver(node, fn) {
|
4192
4203
|
node[KEY__SHADOW_RESOLVER] = fn;
|
4193
|
-
|
4194
|
-
|
4195
|
-
|
4204
|
+
// Recurse using firstChild/nextSibling because browsers use a linked list under the hood to
|
4205
|
+
// represent the DOM, so childNodes/children would cause an unnecessary array allocation.
|
4206
|
+
// https://viethung.space/blog/2020/09/01/Browser-from-Scratch-DOM-API/#Choosing-DOM-tree-data-structure
|
4207
|
+
let child = firstChildGetter.call(node);
|
4208
|
+
while (!isNull(child)) {
|
4209
|
+
recursivelySetShadowResolver(child, fn);
|
4210
|
+
child = nextSiblingGetter.call(child);
|
4196
4211
|
}
|
4197
4212
|
}
|
4198
4213
|
defineProperty(Element.prototype, KEY__SHADOW_STATIC, {
|
@@ -4361,6 +4376,6 @@ defineProperty(Element.prototype, '$domManual$', {
|
|
4361
4376
|
},
|
4362
4377
|
configurable: true,
|
4363
4378
|
});
|
4364
|
-
/** version: 6.
|
4379
|
+
/** version: 6.4.0 */
|
4365
4380
|
}
|
4366
4381
|
//# sourceMappingURL=index.js.map
|