@lwc/engine-core 2.23.4 → 2.23.5
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/engine-core.cjs.js +71 -6
- package/dist/engine-core.js +71 -6
- package/package.json +3 -3
- package/types/framework/api.d.ts +3 -1
- package/types/framework/vnodes.d.ts +14 -6
package/dist/engine-core.cjs.js
CHANGED
|
@@ -3453,6 +3453,12 @@ function patch(n1, n2, parent, renderer) {
|
|
|
3453
3453
|
n2.elm = n1.elm;
|
|
3454
3454
|
break;
|
|
3455
3455
|
|
|
3456
|
+
case 5
|
|
3457
|
+
/* VNodeType.Fragment */
|
|
3458
|
+
:
|
|
3459
|
+
patchFragment(n1, n2, parent, renderer);
|
|
3460
|
+
break;
|
|
3461
|
+
|
|
3456
3462
|
case 2
|
|
3457
3463
|
/* VNodeType.Element */
|
|
3458
3464
|
:
|
|
@@ -3492,6 +3498,12 @@ function mount(node, parent, renderer, anchor) {
|
|
|
3492
3498
|
mountStatic(node, parent, anchor, renderer);
|
|
3493
3499
|
break;
|
|
3494
3500
|
|
|
3501
|
+
case 5
|
|
3502
|
+
/* VNodeType.Fragment */
|
|
3503
|
+
:
|
|
3504
|
+
mountFragment(node, parent, anchor, renderer);
|
|
3505
|
+
break;
|
|
3506
|
+
|
|
3495
3507
|
case 2
|
|
3496
3508
|
/* VNodeType.Element */
|
|
3497
3509
|
:
|
|
@@ -3549,6 +3561,31 @@ function mountComment(vnode, parent, anchor, renderer) {
|
|
|
3549
3561
|
insertNode(commentNode, parent, anchor, renderer);
|
|
3550
3562
|
}
|
|
3551
3563
|
|
|
3564
|
+
function mountFragment(vnode, parent, anchor, renderer) {
|
|
3565
|
+
const {
|
|
3566
|
+
children
|
|
3567
|
+
} = vnode;
|
|
3568
|
+
mountVNodes(children, parent, renderer, anchor); // children of a fragment will always have at least the two delimiters.
|
|
3569
|
+
|
|
3570
|
+
vnode.elm = children[children.length - 1].elm;
|
|
3571
|
+
}
|
|
3572
|
+
|
|
3573
|
+
function patchFragment(n1, n2, parent, renderer) {
|
|
3574
|
+
const {
|
|
3575
|
+
children,
|
|
3576
|
+
stable
|
|
3577
|
+
} = n2;
|
|
3578
|
+
|
|
3579
|
+
if (stable) {
|
|
3580
|
+
updateStaticChildren(n1.children, children, parent, renderer);
|
|
3581
|
+
} else {
|
|
3582
|
+
updateDynamicChildren(n1.children, children, parent, renderer);
|
|
3583
|
+
} // Note: not reusing n1.elm, because during patching, it may be patched with another text node.
|
|
3584
|
+
|
|
3585
|
+
|
|
3586
|
+
n2.elm = children[children.length - 1].elm;
|
|
3587
|
+
}
|
|
3588
|
+
|
|
3552
3589
|
function mountElement(vnode, parent, anchor, renderer) {
|
|
3553
3590
|
const {
|
|
3554
3591
|
sel,
|
|
@@ -3716,9 +3753,15 @@ function unmount(vnode, parent, renderer, doRemove = false) {
|
|
|
3716
3753
|
// subtree root, is the only element worth unmounting from the subtree.
|
|
3717
3754
|
|
|
3718
3755
|
if (doRemove) {
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3756
|
+
if (type === 5
|
|
3757
|
+
/* VNodeType.Fragment */
|
|
3758
|
+
) {
|
|
3759
|
+
unmountVNodes(vnode.children, parent, renderer, doRemove);
|
|
3760
|
+
} else {
|
|
3761
|
+
// The vnode might or might not have a data.renderer associated to it
|
|
3762
|
+
// but the removal used here is from the owner instead.
|
|
3763
|
+
removeNode(elm, parent, renderer);
|
|
3764
|
+
}
|
|
3722
3765
|
}
|
|
3723
3766
|
|
|
3724
3767
|
switch (type) {
|
|
@@ -4225,6 +4268,18 @@ function st(fragment, key) {
|
|
|
4225
4268
|
owner: getVMBeingRendered(),
|
|
4226
4269
|
};
|
|
4227
4270
|
}
|
|
4271
|
+
// [fr]agment node
|
|
4272
|
+
function fr(key, children, stable) {
|
|
4273
|
+
return {
|
|
4274
|
+
type: 5 /* VNodeType.Fragment */,
|
|
4275
|
+
sel: undefined,
|
|
4276
|
+
key,
|
|
4277
|
+
elm: undefined,
|
|
4278
|
+
children: [t(''), ...children, t('')],
|
|
4279
|
+
stable,
|
|
4280
|
+
owner: getVMBeingRendered(),
|
|
4281
|
+
};
|
|
4282
|
+
}
|
|
4228
4283
|
// [h]tml node
|
|
4229
4284
|
function h(sel, data, children = EmptyArray) {
|
|
4230
4285
|
const vmBeingRendered = getVMBeingRendered();
|
|
@@ -4444,13 +4499,13 @@ function t(text) {
|
|
|
4444
4499
|
}
|
|
4445
4500
|
// [co]mment node
|
|
4446
4501
|
function co(text) {
|
|
4447
|
-
let sel,
|
|
4502
|
+
let sel, elm;
|
|
4448
4503
|
return {
|
|
4449
4504
|
type: 1 /* VNodeType.Comment */,
|
|
4450
4505
|
sel,
|
|
4451
4506
|
text,
|
|
4452
4507
|
elm,
|
|
4453
|
-
key,
|
|
4508
|
+
key: 'c',
|
|
4454
4509
|
owner: getVMBeingRendered(),
|
|
4455
4510
|
};
|
|
4456
4511
|
}
|
|
@@ -4595,6 +4650,7 @@ const api = shared.freeze({
|
|
|
4595
4650
|
k,
|
|
4596
4651
|
co,
|
|
4597
4652
|
dc,
|
|
4653
|
+
fr,
|
|
4598
4654
|
ti,
|
|
4599
4655
|
st,
|
|
4600
4656
|
gid,
|
|
@@ -6151,6 +6207,10 @@ function hydrateNode(node, vnode, renderer) {
|
|
|
6151
6207
|
// VStatic are cacheable and cannot have custom renderer associated to them
|
|
6152
6208
|
hydratedNode = hydrateStaticElement(node, vnode, renderer);
|
|
6153
6209
|
break;
|
|
6210
|
+
case 5 /* VNodeType.Fragment */:
|
|
6211
|
+
// a fragment does not represent any element, therefore there is no need to use a custom renderer.
|
|
6212
|
+
hydratedNode = hydrateFragment(node, vnode, renderer);
|
|
6213
|
+
break;
|
|
6154
6214
|
case 2 /* VNodeType.Element */:
|
|
6155
6215
|
hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
|
|
6156
6216
|
break;
|
|
@@ -6202,6 +6262,11 @@ function hydrateStaticElement(elm, vnode, renderer) {
|
|
|
6202
6262
|
vnode.elm = elm;
|
|
6203
6263
|
return elm;
|
|
6204
6264
|
}
|
|
6265
|
+
function hydrateFragment(elm, vnode, renderer) {
|
|
6266
|
+
const { children, owner } = vnode;
|
|
6267
|
+
hydrateChildren(elm, children, renderer.getProperty(elm, 'parentNode'), owner);
|
|
6268
|
+
return (vnode.elm = children[children.length - 1].elm);
|
|
6269
|
+
}
|
|
6205
6270
|
function hydrateElement(elm, vnode, renderer) {
|
|
6206
6271
|
if (!hasCorrectNodeType(vnode, elm, 1 /* EnvNodeTypes.ELEMENT */, renderer) ||
|
|
6207
6272
|
!isMatchingElement(vnode, elm, renderer)) {
|
|
@@ -6660,4 +6725,4 @@ exports.swapTemplate = swapTemplate;
|
|
|
6660
6725
|
exports.track = track;
|
|
6661
6726
|
exports.unwrap = unwrap;
|
|
6662
6727
|
exports.wire = wire;
|
|
6663
|
-
/* version: 2.23.
|
|
6728
|
+
/* version: 2.23.5 */
|
package/dist/engine-core.js
CHANGED
|
@@ -3450,6 +3450,12 @@ function patch(n1, n2, parent, renderer) {
|
|
|
3450
3450
|
n2.elm = n1.elm;
|
|
3451
3451
|
break;
|
|
3452
3452
|
|
|
3453
|
+
case 5
|
|
3454
|
+
/* VNodeType.Fragment */
|
|
3455
|
+
:
|
|
3456
|
+
patchFragment(n1, n2, parent, renderer);
|
|
3457
|
+
break;
|
|
3458
|
+
|
|
3453
3459
|
case 2
|
|
3454
3460
|
/* VNodeType.Element */
|
|
3455
3461
|
:
|
|
@@ -3489,6 +3495,12 @@ function mount(node, parent, renderer, anchor) {
|
|
|
3489
3495
|
mountStatic(node, parent, anchor, renderer);
|
|
3490
3496
|
break;
|
|
3491
3497
|
|
|
3498
|
+
case 5
|
|
3499
|
+
/* VNodeType.Fragment */
|
|
3500
|
+
:
|
|
3501
|
+
mountFragment(node, parent, anchor, renderer);
|
|
3502
|
+
break;
|
|
3503
|
+
|
|
3492
3504
|
case 2
|
|
3493
3505
|
/* VNodeType.Element */
|
|
3494
3506
|
:
|
|
@@ -3546,6 +3558,31 @@ function mountComment(vnode, parent, anchor, renderer) {
|
|
|
3546
3558
|
insertNode(commentNode, parent, anchor, renderer);
|
|
3547
3559
|
}
|
|
3548
3560
|
|
|
3561
|
+
function mountFragment(vnode, parent, anchor, renderer) {
|
|
3562
|
+
const {
|
|
3563
|
+
children
|
|
3564
|
+
} = vnode;
|
|
3565
|
+
mountVNodes(children, parent, renderer, anchor); // children of a fragment will always have at least the two delimiters.
|
|
3566
|
+
|
|
3567
|
+
vnode.elm = children[children.length - 1].elm;
|
|
3568
|
+
}
|
|
3569
|
+
|
|
3570
|
+
function patchFragment(n1, n2, parent, renderer) {
|
|
3571
|
+
const {
|
|
3572
|
+
children,
|
|
3573
|
+
stable
|
|
3574
|
+
} = n2;
|
|
3575
|
+
|
|
3576
|
+
if (stable) {
|
|
3577
|
+
updateStaticChildren(n1.children, children, parent, renderer);
|
|
3578
|
+
} else {
|
|
3579
|
+
updateDynamicChildren(n1.children, children, parent, renderer);
|
|
3580
|
+
} // Note: not reusing n1.elm, because during patching, it may be patched with another text node.
|
|
3581
|
+
|
|
3582
|
+
|
|
3583
|
+
n2.elm = children[children.length - 1].elm;
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3549
3586
|
function mountElement(vnode, parent, anchor, renderer) {
|
|
3550
3587
|
const {
|
|
3551
3588
|
sel,
|
|
@@ -3713,9 +3750,15 @@ function unmount(vnode, parent, renderer, doRemove = false) {
|
|
|
3713
3750
|
// subtree root, is the only element worth unmounting from the subtree.
|
|
3714
3751
|
|
|
3715
3752
|
if (doRemove) {
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3753
|
+
if (type === 5
|
|
3754
|
+
/* VNodeType.Fragment */
|
|
3755
|
+
) {
|
|
3756
|
+
unmountVNodes(vnode.children, parent, renderer, doRemove);
|
|
3757
|
+
} else {
|
|
3758
|
+
// The vnode might or might not have a data.renderer associated to it
|
|
3759
|
+
// but the removal used here is from the owner instead.
|
|
3760
|
+
removeNode(elm, parent, renderer);
|
|
3761
|
+
}
|
|
3719
3762
|
}
|
|
3720
3763
|
|
|
3721
3764
|
switch (type) {
|
|
@@ -4222,6 +4265,18 @@ function st(fragment, key) {
|
|
|
4222
4265
|
owner: getVMBeingRendered(),
|
|
4223
4266
|
};
|
|
4224
4267
|
}
|
|
4268
|
+
// [fr]agment node
|
|
4269
|
+
function fr(key, children, stable) {
|
|
4270
|
+
return {
|
|
4271
|
+
type: 5 /* VNodeType.Fragment */,
|
|
4272
|
+
sel: undefined,
|
|
4273
|
+
key,
|
|
4274
|
+
elm: undefined,
|
|
4275
|
+
children: [t(''), ...children, t('')],
|
|
4276
|
+
stable,
|
|
4277
|
+
owner: getVMBeingRendered(),
|
|
4278
|
+
};
|
|
4279
|
+
}
|
|
4225
4280
|
// [h]tml node
|
|
4226
4281
|
function h(sel, data, children = EmptyArray) {
|
|
4227
4282
|
const vmBeingRendered = getVMBeingRendered();
|
|
@@ -4441,13 +4496,13 @@ function t(text) {
|
|
|
4441
4496
|
}
|
|
4442
4497
|
// [co]mment node
|
|
4443
4498
|
function co(text) {
|
|
4444
|
-
let sel,
|
|
4499
|
+
let sel, elm;
|
|
4445
4500
|
return {
|
|
4446
4501
|
type: 1 /* VNodeType.Comment */,
|
|
4447
4502
|
sel,
|
|
4448
4503
|
text,
|
|
4449
4504
|
elm,
|
|
4450
|
-
key,
|
|
4505
|
+
key: 'c',
|
|
4451
4506
|
owner: getVMBeingRendered(),
|
|
4452
4507
|
};
|
|
4453
4508
|
}
|
|
@@ -4592,6 +4647,7 @@ const api = freeze({
|
|
|
4592
4647
|
k,
|
|
4593
4648
|
co,
|
|
4594
4649
|
dc,
|
|
4650
|
+
fr,
|
|
4595
4651
|
ti,
|
|
4596
4652
|
st,
|
|
4597
4653
|
gid,
|
|
@@ -6148,6 +6204,10 @@ function hydrateNode(node, vnode, renderer) {
|
|
|
6148
6204
|
// VStatic are cacheable and cannot have custom renderer associated to them
|
|
6149
6205
|
hydratedNode = hydrateStaticElement(node, vnode, renderer);
|
|
6150
6206
|
break;
|
|
6207
|
+
case 5 /* VNodeType.Fragment */:
|
|
6208
|
+
// a fragment does not represent any element, therefore there is no need to use a custom renderer.
|
|
6209
|
+
hydratedNode = hydrateFragment(node, vnode, renderer);
|
|
6210
|
+
break;
|
|
6151
6211
|
case 2 /* VNodeType.Element */:
|
|
6152
6212
|
hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
|
|
6153
6213
|
break;
|
|
@@ -6199,6 +6259,11 @@ function hydrateStaticElement(elm, vnode, renderer) {
|
|
|
6199
6259
|
vnode.elm = elm;
|
|
6200
6260
|
return elm;
|
|
6201
6261
|
}
|
|
6262
|
+
function hydrateFragment(elm, vnode, renderer) {
|
|
6263
|
+
const { children, owner } = vnode;
|
|
6264
|
+
hydrateChildren(elm, children, renderer.getProperty(elm, 'parentNode'), owner);
|
|
6265
|
+
return (vnode.elm = children[children.length - 1].elm);
|
|
6266
|
+
}
|
|
6202
6267
|
function hydrateElement(elm, vnode, renderer) {
|
|
6203
6268
|
if (!hasCorrectNodeType(vnode, elm, 1 /* EnvNodeTypes.ELEMENT */, renderer) ||
|
|
6204
6269
|
!isMatchingElement(vnode, elm, renderer)) {
|
|
@@ -6620,4 +6685,4 @@ function getComponentConstructor(elm) {
|
|
|
6620
6685
|
}
|
|
6621
6686
|
|
|
6622
6687
|
export { LightningElement, profilerControl as __unstable__ProfilerControl, api$1 as api, connectRootElement, createContextProvider, createVM, disconnectRootElement, freezeTemplate, getAssociatedVMIfPresent, getComponentConstructor, getComponentDef, getComponentHtmlPrototype, getUpgradableConstructor, hydrateRoot, isComponentConstructor, parseFragment, parseSVGFragment, readonly, register, registerComponent, registerDecorators, registerTemplate, sanitizeAttribute, setHooks, swapComponent, swapStyle, swapTemplate, track, unwrap, wire };
|
|
6623
|
-
/* version: 2.23.
|
|
6688
|
+
/* version: 2.23.5 */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lwc/engine-core",
|
|
3
|
-
"version": "2.23.
|
|
3
|
+
"version": "2.23.5",
|
|
4
4
|
"description": "Core LWC engine APIs.",
|
|
5
5
|
"homepage": "https://lwc.dev/",
|
|
6
6
|
"repository": {
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"types/"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@lwc/features": "2.23.
|
|
28
|
-
"@lwc/shared": "2.23.
|
|
27
|
+
"@lwc/features": "2.23.5",
|
|
28
|
+
"@lwc/shared": "2.23.5"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"observable-membrane": "2.0.0"
|
package/types/framework/api.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SlotSet } from './vm';
|
|
2
2
|
import { LightningElementConstructor } from './base-lightning-element';
|
|
3
|
-
import { VNode, VNodes, VElement, VText, VCustomElement, VComment, VElementData, VStatic, Key } from './vnodes';
|
|
3
|
+
import { VNode, VNodes, VElement, VText, VCustomElement, VComment, VElementData, VStatic, Key, VFragment } from './vnodes';
|
|
4
4
|
declare function st(fragment: Element, key: Key): VStatic;
|
|
5
|
+
declare function fr(key: Key, children: VNodes, stable: 0 | 1): VFragment;
|
|
5
6
|
declare function h(sel: string, data: VElementData, children?: VNodes): VElement;
|
|
6
7
|
declare function ti(value: any): number;
|
|
7
8
|
declare function s(slotName: string, data: VElementData, children: VNodes, slotset: SlotSet | undefined): VElement | VNodes;
|
|
@@ -40,6 +41,7 @@ declare const api: Readonly<{
|
|
|
40
41
|
k: typeof k;
|
|
41
42
|
co: typeof co;
|
|
42
43
|
dc: typeof dc;
|
|
44
|
+
fr: typeof fr;
|
|
43
45
|
ti: typeof ti;
|
|
44
46
|
st: typeof st;
|
|
45
47
|
gid: typeof gid;
|
|
@@ -6,11 +6,15 @@ export declare const enum VNodeType {
|
|
|
6
6
|
Comment = 1,
|
|
7
7
|
Element = 2,
|
|
8
8
|
CustomElement = 3,
|
|
9
|
-
Static = 4
|
|
9
|
+
Static = 4,
|
|
10
|
+
Fragment = 5
|
|
10
11
|
}
|
|
11
|
-
export declare type VNode = VText | VComment | VElement | VCustomElement | VStatic;
|
|
12
|
-
export declare type VParentElement = VElement | VCustomElement;
|
|
12
|
+
export declare type VNode = VText | VComment | VElement | VCustomElement | VStatic | VFragment;
|
|
13
|
+
export declare type VParentElement = VElement | VCustomElement | VFragment;
|
|
13
14
|
export declare type VNodes = Readonly<Array<VNode | null>>;
|
|
15
|
+
export interface BaseVParent {
|
|
16
|
+
children: VNodes;
|
|
17
|
+
}
|
|
14
18
|
export interface BaseVNode {
|
|
15
19
|
type: VNodeType;
|
|
16
20
|
elm: Node | undefined;
|
|
@@ -24,6 +28,11 @@ export interface VStatic extends BaseVNode {
|
|
|
24
28
|
key: Key;
|
|
25
29
|
fragment: Element;
|
|
26
30
|
}
|
|
31
|
+
export interface VFragment extends BaseVNode, BaseVParent {
|
|
32
|
+
sel: undefined;
|
|
33
|
+
type: VNodeType.Fragment;
|
|
34
|
+
stable: 0 | 1;
|
|
35
|
+
}
|
|
27
36
|
export interface VText extends BaseVNode {
|
|
28
37
|
type: VNodeType.Text;
|
|
29
38
|
sel: undefined;
|
|
@@ -34,12 +43,11 @@ export interface VComment extends BaseVNode {
|
|
|
34
43
|
type: VNodeType.Comment;
|
|
35
44
|
sel: undefined;
|
|
36
45
|
text: string;
|
|
37
|
-
key:
|
|
46
|
+
key: 'c';
|
|
38
47
|
}
|
|
39
|
-
export interface VBaseElement extends BaseVNode {
|
|
48
|
+
export interface VBaseElement extends BaseVNode, BaseVParent {
|
|
40
49
|
sel: string;
|
|
41
50
|
data: VElementData;
|
|
42
|
-
children: VNodes;
|
|
43
51
|
elm: Element | undefined;
|
|
44
52
|
key: Key;
|
|
45
53
|
}
|