@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.
@@ -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
- // The vnode might or might not have a data.renderer associated to it
3720
- // but the removal used here is from the owner instead.
3721
- removeNode(elm, parent, renderer);
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, key, elm;
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.4 */
6728
+ /* version: 2.23.5 */
@@ -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
- // The vnode might or might not have a data.renderer associated to it
3717
- // but the removal used here is from the owner instead.
3718
- removeNode(elm, parent, renderer);
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, key, elm;
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.4 */
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.4",
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.4",
28
- "@lwc/shared": "2.23.4"
27
+ "@lwc/features": "2.23.5",
28
+ "@lwc/shared": "2.23.5"
29
29
  },
30
30
  "devDependencies": {
31
31
  "observable-membrane": "2.0.0"
@@ -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: undefined;
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
  }