lwc 2.27.0 → 2.28.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.
Files changed (37) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +95 -32
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +95 -32
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +79 -30
  5. package/dist/engine-dom/iife/es5/engine-dom.js +134 -46
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +115 -44
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +95 -32
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +79 -30
  11. package/dist/engine-dom/umd/es5/engine-dom.js +134 -46
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +115 -44
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +57 -26
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +57 -26
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +4 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +4 -4
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +2 -2
  20. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +4 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
  23. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +4 -4
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +2 -2
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +4 -4
  26. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
  28. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  29. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  30. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  31. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  32. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  33. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  34. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  35. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  36. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  37. package/package.json +7 -7
@@ -351,7 +351,7 @@
351
351
  CACHED_PROPERTY_ATTRIBUTE_MAPPING.set(propName, attributeName);
352
352
  return attributeName;
353
353
  }
354
- /** version: 2.27.0 */
354
+ /** version: 2.28.0 */
355
355
 
356
356
  /**
357
357
  * Copyright (C) 2018 salesforce.com, inc.
@@ -445,7 +445,7 @@
445
445
  patch$1(propName);
446
446
  }
447
447
  }
448
- /** version: 2.27.0 */
448
+ /** version: 2.28.0 */
449
449
 
450
450
  /**
451
451
  * Copyright (C) 2018 salesforce.com, inc.
@@ -3835,9 +3835,14 @@
3835
3835
  if (lwcRuntimeFlags.ENABLE_NATIVE_CUSTOM_ELEMENT_LIFECYCLE) {
3836
3836
  disconnectRootElement(elm);
3837
3837
  }
3838
- };
3838
+ }; // Should never get a tag with upper case letter at this point; the compiler
3839
+ // should produce only tags with lowercase letters. However, the Java
3840
+ // compiler may generate tagnames with uppercase letters so - for backwards
3841
+ // compatibility, we lower case the tagname here.
3842
+
3839
3843
 
3840
- var elm = createCustomElement(sel, upgradeCallback, connectedCallback, disconnectedCallback);
3844
+ var normalizedTagname = sel.toLowerCase();
3845
+ var elm = createCustomElement(normalizedTagname, upgradeCallback, connectedCallback, disconnectedCallback);
3841
3846
  vnode.elm = elm;
3842
3847
  vnode.vm = vm;
3843
3848
  linkNodeToShadow(elm, owner, renderer);
@@ -4448,27 +4453,42 @@
4448
4453
  function s(slotName, data, children, slotset) {
4449
4454
 
4450
4455
  if (!isUndefined$1(slotset) && !isUndefined$1(slotset.slotAssignments) && !isUndefined$1(slotset.slotAssignments[slotName]) && slotset.slotAssignments[slotName].length !== 0) {
4451
- children = slotset.slotAssignments[slotName].reduce(function (acc, vnode) {
4452
- // If the passed slot content is factory, evaluate it and use the produced vnodes
4453
- if (vnode && isVScopedSlotFragment(vnode)) {
4454
- var vmBeingRenderedInception = getVMBeingRendered();
4455
- var _children = []; // Evaluate in the scope of the slot content's owner
4456
- // if a slotset is provided, there will always be an owner. The only case where owner is
4457
- // undefined is for root components, but root components cannot accept slotted content
4458
-
4459
- setVMBeingRendered(slotset.owner);
4460
-
4461
- try {
4462
- _children = vnode.factory(data.slotData);
4463
- } finally {
4464
- setVMBeingRendered(vmBeingRenderedInception);
4465
- }
4456
+ children = slotset.slotAssignments[slotName].reduce(function (accumulator, vnode) {
4457
+ if (vnode) {
4458
+ var assignedNodeIsScopedSlot = isVScopedSlotFragment(vnode); // The only sniff test for a scoped <slot> element is the presence of `slotData`
4466
4459
 
4467
- return ArrayConcat$1.call(acc, _children);
4468
- } else {
4469
- // If the slot content is a static list of child nodes provided by the parent, nothing to do
4470
- return ArrayConcat$1.call(acc, vnode);
4460
+ var isScopedSlotElement = !isUndefined$1(data.slotData); // Check if slot types of parent and child are matching
4461
+
4462
+ if (assignedNodeIsScopedSlot !== isScopedSlotElement) {
4463
+
4464
+
4465
+ return accumulator;
4466
+ } // If the passed slot content is factory, evaluate it and add the produced vnodes
4467
+
4468
+
4469
+ if (assignedNodeIsScopedSlot) {
4470
+ var vmBeingRenderedInception = getVMBeingRendered();
4471
+ var scopedSlotChildren = []; // Evaluate in the scope of the slot content's owner
4472
+ // if a slotset is provided, there will always be an owner. The only case where owner is
4473
+ // undefined is for root components, but root components cannot accept slotted content
4474
+
4475
+ setVMBeingRendered(slotset.owner);
4476
+
4477
+ try {
4478
+ scopedSlotChildren = vnode.factory(data.slotData);
4479
+ } finally {
4480
+ setVMBeingRendered(vmBeingRenderedInception);
4481
+ }
4482
+
4483
+ return ArrayConcat$1.call(accumulator, scopedSlotChildren);
4484
+ } else {
4485
+ // If the slot content is standard type, the content is static, no additional
4486
+ // processing needed on the vnode
4487
+ return ArrayConcat$1.call(accumulator, vnode);
4488
+ }
4471
4489
  }
4490
+
4491
+ return accumulator;
4472
4492
  }, []);
4473
4493
  }
4474
4494
 
@@ -6716,7 +6736,7 @@
6716
6736
 
6717
6737
  return ctor;
6718
6738
  }
6719
- /* version: 2.27.0 */
6739
+ /* version: 2.28.0 */
6720
6740
 
6721
6741
  /*
6722
6742
  * Copyright (c) 2018, salesforce.com, inc.
@@ -7042,10 +7062,12 @@
7042
7062
  var pendingRegistryForElement = new WeakMap();
7043
7063
  var definitionForConstructor = new WeakMap();
7044
7064
  var registeredUserCtors = new WeakSet();
7065
+ var registeredPivotCtors = new WeakSet();
7045
7066
  var pivotCtorByTag = new Map();
7046
7067
  var globalDefinitionsByTag = new Map();
7047
7068
  var globalDefinitionsByClass = new Map();
7048
7069
  var awaitingUpgrade = new Map();
7070
+ var pendingWhenDefinedCallbacks = new Map();
7049
7071
  var EMPTY_SET = new Set();
7050
7072
 
7051
7073
  function createDefinitionRecord(constructor) {
@@ -7187,6 +7209,7 @@
7187
7209
  }(NativeHTMLElement);
7188
7210
 
7189
7211
  PivotCtor.observedAttributes = _toConsumableArray(registeredDefinition.observedAttributes);
7212
+ registeredPivotCtors.add(PivotCtor);
7190
7213
  return PivotCtor;
7191
7214
  }
7192
7215
 
@@ -7337,6 +7360,43 @@
7337
7360
  }
7338
7361
 
7339
7362
  return createDefinitionRecord(constructor);
7363
+ } // Defer a `whenDefined()` callback until an externally-visible custom element is defined
7364
+
7365
+
7366
+ function createPendingWhenDefinedCallback(tagName) {
7367
+ return new Promise(function (resolve) {
7368
+ var resolvers = pendingWhenDefinedCallbacks.get(tagName);
7369
+
7370
+ if (isUndefined$1(resolvers)) {
7371
+ resolvers = [];
7372
+ pendingWhenDefinedCallbacks.set(tagName, resolvers);
7373
+ }
7374
+
7375
+ resolvers.push(resolve);
7376
+ });
7377
+ } // Call any pending `whenDefined()` callbacks
7378
+
7379
+
7380
+ function flushPendingWhenDefinedCallbacks(tagName, ctor) {
7381
+ var resolvers = pendingWhenDefinedCallbacks.get(tagName);
7382
+
7383
+ if (!isUndefined$1(resolvers)) {
7384
+ var _iterator6 = _createForOfIteratorHelper(resolvers),
7385
+ _step6;
7386
+
7387
+ try {
7388
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
7389
+ var resolver = _step6.value;
7390
+ resolver(ctor);
7391
+ }
7392
+ } catch (err) {
7393
+ _iterator6.e(err);
7394
+ } finally {
7395
+ _iterator6.f();
7396
+ }
7397
+ }
7398
+
7399
+ pendingWhenDefinedCallbacks.delete(tagName);
7340
7400
  }
7341
7401
 
7342
7402
  var _window2 = window,
@@ -7391,12 +7451,12 @@
7391
7451
  if (!isUndefined$1(awaiting)) {
7392
7452
  awaitingUpgrade.delete(tagName);
7393
7453
 
7394
- var _iterator6 = _createForOfIteratorHelper(awaiting),
7395
- _step6;
7454
+ var _iterator7 = _createForOfIteratorHelper(awaiting),
7455
+ _step7;
7396
7456
 
7397
7457
  try {
7398
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
7399
- var element = _step6.value;
7458
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
7459
+ var element = _step7.value;
7400
7460
  var registeredDefinition = pendingRegistryForElement.get(element); // At this point, registeredDefinition should never be undefined because awaitingUpgrade
7401
7461
  // is only populated when we haven't run internalUpgrade yet, and we only populate
7402
7462
  // pendingRegistryForElement when internalUpgrade hasn't run yet.
@@ -7408,11 +7468,14 @@
7408
7468
  }
7409
7469
  }
7410
7470
  } catch (err) {
7411
- _iterator6.e(err);
7471
+ _iterator7.e(err);
7412
7472
  } finally {
7413
- _iterator6.f();
7473
+ _iterator7.f();
7414
7474
  }
7415
- }
7475
+ } // If anyone called customElements.whenDefined() and is still waiting for a promise resolution, resolve now
7476
+
7477
+
7478
+ flushPendingWhenDefinedCallbacks(tagName, constructor);
7416
7479
  };
7417
7480
 
7418
7481
  CustomElementRegistry.prototype.get = function get(tagName) {
@@ -7423,10 +7486,13 @@
7423
7486
 
7424
7487
  if (!isUndefined$1(definition)) {
7425
7488
  return definition.UserCtor; // defined by the patched custom elements registry
7426
- } // TODO [#3073]: return undefined rather than the pivot constructor (NativeCtor)
7489
+ }
7427
7490
 
7491
+ if (registeredPivotCtors.has(NativeCtor)) {
7492
+ return undefined; // pivot constructors should not be observable, return undefined
7493
+ }
7428
7494
 
7429
- return NativeCtor; // return the pivot constructor or constructor that existed before patching
7495
+ return NativeCtor; // constructor that existed before patching
7430
7496
  }
7431
7497
  };
7432
7498
 
@@ -7436,15 +7502,20 @@
7436
7502
 
7437
7503
  if (!isUndefined$1(definition)) {
7438
7504
  return definition.UserCtor;
7439
- } // TODO [#3073]: return undefined rather than the pivot constructor (NativeCtor)
7440
- // In this case, the custom element must have been defined before the registry patches
7505
+ } // In this case, the custom element must have been defined before the registry patches
7441
7506
  // were applied. So return the non-pivot constructor
7442
7507
 
7443
7508
 
7444
7509
  if (isUndefined$1(NativeCtor)) {
7445
7510
  // Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335247
7446
7511
  // We can patch the correct behavior using customElements.get()
7447
- return nativeGet.call(nativeRegistry, tagName);
7512
+ NativeCtor = nativeGet.call(nativeRegistry, tagName);
7513
+ }
7514
+
7515
+ if (registeredPivotCtors.has(NativeCtor)) {
7516
+ // Pivot constructors should not be observable. Wait to resolve the promise
7517
+ // if a constructor is ever defined in userland
7518
+ return createPendingWhenDefinedCallback(tagName);
7448
7519
  }
7449
7520
 
7450
7521
  return NativeCtor;
@@ -7708,7 +7779,7 @@
7708
7779
  function isNull(obj) {
7709
7780
  return obj === null;
7710
7781
  }
7711
- /** version: 2.27.0 */
7782
+ /** version: 2.28.0 */
7712
7783
 
7713
7784
  /*
7714
7785
  * Copyright (c) 2018, salesforce.com, inc.
@@ -7776,18 +7847,18 @@
7776
7847
  var wrapperTags = topLevelWrappingMap[getTagName(html)];
7777
7848
 
7778
7849
  if (!isUndefined(wrapperTags)) {
7779
- var _iterator7 = _createForOfIteratorHelper(wrapperTags),
7780
- _step7;
7850
+ var _iterator8 = _createForOfIteratorHelper(wrapperTags),
7851
+ _step8;
7781
7852
 
7782
7853
  try {
7783
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
7784
- var wrapperTag = _step7.value;
7854
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
7855
+ var wrapperTag = _step8.value;
7785
7856
  html = "<".concat(wrapperTag, ">").concat(html, "</").concat(wrapperTag, ">");
7786
7857
  }
7787
7858
  } catch (err) {
7788
- _iterator7.e(err);
7859
+ _iterator8.e(err);
7789
7860
  } finally {
7790
- _iterator7.f();
7861
+ _iterator8.f();
7791
7862
  }
7792
7863
  } // For IE11, the document title must not be undefined, but it can be an empty string
7793
7864
  // https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createHTMLDocument#browser_compatibility
@@ -8368,7 +8439,7 @@
8368
8439
  });
8369
8440
  freeze(LightningElement);
8370
8441
  seal(LightningElement.prototype);
8371
- /* version: 2.27.0 */
8442
+ /* version: 2.28.0 */
8372
8443
 
8373
8444
  exports.LightningElement = LightningElement;
8374
8445
  exports.__unstable__ProfilerControl = profilerControl;
@@ -47,7 +47,7 @@ var assert = /*#__PURE__*/Object.freeze({
47
47
  */
48
48
  const { assign, create, defineProperties, defineProperty, freeze, getOwnPropertyDescriptor: getOwnPropertyDescriptor$1, getOwnPropertyNames: getOwnPropertyNames$1, getPrototypeOf: getPrototypeOf$1, hasOwnProperty: hasOwnProperty$1, isFrozen, keys, seal, setPrototypeOf, } = Object;
49
49
  const { isArray: isArray$1 } = Array;
50
- const { concat: ArrayConcat$1, copyWithin: ArrayCopyWithin, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
50
+ const { concat: ArrayConcat$1, copyWithin: ArrayCopyWithin, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, some: ArraySome, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
51
51
  const { fromCharCode: StringFromCharCode } = String;
52
52
  const { charCodeAt: StringCharCodeAt, replace: StringReplace, slice: StringSlice, toLowerCase: StringToLowerCase, } = String.prototype;
53
53
  function isUndefined$1(obj) {
@@ -436,9 +436,9 @@ function htmlEscape(str, attrMode = false) {
436
436
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
437
437
  */
438
438
  // Increment whenever the LWC template compiler changes
439
- const LWC_VERSION = "2.27.0";
439
+ const LWC_VERSION = "2.28.0";
440
440
  const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
441
- /** version: 2.27.0 */
441
+ /** version: 2.28.0 */
442
442
 
443
443
  /*
444
444
  * Copyright (c) 2020, salesforce.com, inc.
@@ -550,7 +550,7 @@ function setFeatureFlagForTest(name, value) {
550
550
  setFeatureFlag(name, value);
551
551
  }
552
552
  }
553
- /** version: 2.27.0 */
553
+ /** version: 2.28.0 */
554
554
 
555
555
  /* proxy-compat-disable */
556
556
 
@@ -3960,9 +3960,14 @@ function mountCustomElement(vnode, parent, anchor, renderer) {
3960
3960
  if (lwcRuntimeFlags.ENABLE_NATIVE_CUSTOM_ELEMENT_LIFECYCLE) {
3961
3961
  disconnectRootElement(elm);
3962
3962
  }
3963
- };
3963
+ }; // Should never get a tag with upper case letter at this point; the compiler
3964
+ // should produce only tags with lowercase letters. However, the Java
3965
+ // compiler may generate tagnames with uppercase letters so - for backwards
3966
+ // compatibility, we lower case the tagname here.
3967
+
3964
3968
 
3965
- const elm = createCustomElement(sel, upgradeCallback, connectedCallback, disconnectedCallback);
3969
+ const normalizedTagname = sel.toLowerCase();
3970
+ const elm = createCustomElement(normalizedTagname, upgradeCallback, connectedCallback, disconnectedCallback);
3966
3971
  vnode.elm = elm;
3967
3972
  vnode.vm = vm;
3968
3973
  linkNodeToShadow(elm, owner, renderer);
@@ -4256,6 +4261,17 @@ function allocateChildren(vnode, vm) {
4256
4261
  shadowMode
4257
4262
  } = vm;
4258
4263
 
4264
+ if (process.env.NODE_ENV !== 'production') {
4265
+ // If any of the children being allocated is a scoped slot fragment, make sure the receiving
4266
+ // component is a light DOM component. This is mainly to validate light dom parent running
4267
+ // in native shadow mode.
4268
+ if (renderMode !== 0
4269
+ /* RenderMode.Light */
4270
+ && ArraySome.call(children, child => !isNull(child) && isVScopedSlotFragment(child))) {
4271
+ logError(`Invalid usage of 'lwc:slot-data' on ${getComponentTag(vm)} tag. Scoped slot content can only be passed to a light dom child.`);
4272
+ }
4273
+ }
4274
+
4259
4275
  if (shadowMode === 1
4260
4276
  /* ShadowMode.Synthetic */
4261
4277
  || renderMode === 0
@@ -4650,27 +4666,42 @@ function s(slotName, data, children, slotset) {
4650
4666
  !isUndefined$1(slotset.slotAssignments) &&
4651
4667
  !isUndefined$1(slotset.slotAssignments[slotName]) &&
4652
4668
  slotset.slotAssignments[slotName].length !== 0) {
4653
- children = slotset.slotAssignments[slotName].reduce((acc, vnode) => {
4654
- // If the passed slot content is factory, evaluate it and use the produced vnodes
4655
- if (vnode && isVScopedSlotFragment(vnode)) {
4656
- const vmBeingRenderedInception = getVMBeingRendered();
4657
- let children = [];
4658
- // Evaluate in the scope of the slot content's owner
4659
- // if a slotset is provided, there will always be an owner. The only case where owner is
4660
- // undefined is for root components, but root components cannot accept slotted content
4661
- setVMBeingRendered(slotset.owner);
4662
- try {
4663
- children = vnode.factory(data.slotData);
4669
+ children = slotset.slotAssignments[slotName].reduce((accumulator, vnode) => {
4670
+ if (vnode) {
4671
+ const assignedNodeIsScopedSlot = isVScopedSlotFragment(vnode);
4672
+ // The only sniff test for a scoped <slot> element is the presence of `slotData`
4673
+ const isScopedSlotElement = !isUndefined$1(data.slotData);
4674
+ // Check if slot types of parent and child are matching
4675
+ if (assignedNodeIsScopedSlot !== isScopedSlotElement) {
4676
+ if (process.env.NODE_ENV !== 'production') {
4677
+ logError(`Mismatched slot types for ${slotName === '' ? '(default)' : slotName} slot. Both parent and child component must use standard type or scoped type for a given slot.`, slotset.owner);
4678
+ }
4679
+ // Ignore slot content from parent
4680
+ return accumulator;
4664
4681
  }
4665
- finally {
4666
- setVMBeingRendered(vmBeingRenderedInception);
4682
+ // If the passed slot content is factory, evaluate it and add the produced vnodes
4683
+ if (assignedNodeIsScopedSlot) {
4684
+ const vmBeingRenderedInception = getVMBeingRendered();
4685
+ let scopedSlotChildren = [];
4686
+ // Evaluate in the scope of the slot content's owner
4687
+ // if a slotset is provided, there will always be an owner. The only case where owner is
4688
+ // undefined is for root components, but root components cannot accept slotted content
4689
+ setVMBeingRendered(slotset.owner);
4690
+ try {
4691
+ scopedSlotChildren = vnode.factory(data.slotData);
4692
+ }
4693
+ finally {
4694
+ setVMBeingRendered(vmBeingRenderedInception);
4695
+ }
4696
+ return ArrayConcat$1.call(accumulator, scopedSlotChildren);
4697
+ }
4698
+ else {
4699
+ // If the slot content is standard type, the content is static, no additional
4700
+ // processing needed on the vnode
4701
+ return ArrayConcat$1.call(accumulator, vnode);
4667
4702
  }
4668
- return ArrayConcat$1.call(acc, children);
4669
- }
4670
- else {
4671
- // If the slot content is a static list of child nodes provided by the parent, nothing to do
4672
- return ArrayConcat$1.call(acc, vnode);
4673
4703
  }
4704
+ return accumulator;
4674
4705
  }, []);
4675
4706
  }
4676
4707
  const vmBeingRendered = getVMBeingRendered();
@@ -6456,7 +6487,7 @@ function freezeTemplate(tmpl) {
6456
6487
  });
6457
6488
  }
6458
6489
  }
6459
- /* version: 2.27.0 */
6490
+ /* version: 2.28.0 */
6460
6491
 
6461
6492
  /*
6462
6493
  * Copyright (c) 2020, salesforce.com, inc.
@@ -6921,7 +6952,7 @@ function renderComponent(tagName, Ctor, props = {}) {
6921
6952
  */
6922
6953
  freeze(LightningElement);
6923
6954
  seal(LightningElement.prototype);
6924
- /* version: 2.27.0 */
6955
+ /* version: 2.28.0 */
6925
6956
 
6926
6957
  exports.LightningElement = LightningElement;
6927
6958
  exports.api = api$1;