lwc 2.14.2 → 2.15.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 (39) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +155 -13
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +156 -12
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +147 -10
  5. package/dist/engine-dom/iife/es5/engine-dom.js +268 -40
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +253 -38
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +156 -12
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +147 -10
  11. package/dist/engine-dom/umd/es5/engine-dom.js +268 -40
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +253 -38
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +129 -29
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +128 -30
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +24 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +24 -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 +24 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +29 -3
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +2 -2
  23. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +29 -3
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +24 -4
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +2 -2
  26. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +24 -4
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +29 -3
  28. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +2 -2
  29. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +29 -3
  30. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  31. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  34. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  35. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  36. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  37. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  38. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  39. package/package.json +7 -7
@@ -305,6 +305,7 @@
305
305
 
306
306
  var KEY__IS_NATIVE_SHADOW_ROOT_DEFINED = '$isNativeShadowRootDefined$';
307
307
  var KEY__SHADOW_RESOLVER = '$shadowResolver$';
308
+ var KEY__SHADOW_STATIC = '$shadowStaticNode$';
308
309
  var KEY__SHADOW_TOKEN = '$shadowToken$';
309
310
  var KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
310
311
  var KEY__SCOPED_CSS = '$scoped$';
@@ -368,9 +369,9 @@
368
369
  */
369
370
  // Increment whenever the LWC template compiler changes
370
371
 
371
- var LWC_VERSION = "2.14.2";
372
+ var LWC_VERSION = "2.15.0";
372
373
  var LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
373
- /** version: 2.14.2 */
374
+ /** version: 2.15.0 */
374
375
 
375
376
  /*
376
377
  * Copyright (c) 2018, salesforce.com, inc.
@@ -549,7 +550,7 @@
549
550
  setFeatureFlag(name, value);
550
551
  }
551
552
  }
552
- /** version: 2.14.2 */
553
+ /** version: 2.15.0 */
553
554
 
554
555
  /*
555
556
  * Copyright (c) 2018, salesforce.com, inc.
@@ -4520,6 +4521,12 @@
4520
4521
  patchComment(n1, n2, renderer);
4521
4522
  break;
4522
4523
 
4524
+ case 4
4525
+ /* Static */
4526
+ :
4527
+ n2.elm = n1.elm;
4528
+ break;
4529
+
4523
4530
  case 2
4524
4531
  /* Element */
4525
4532
  :
@@ -4552,6 +4559,13 @@
4552
4559
  mountComment(node, parent, anchor, renderer);
4553
4560
  break;
4554
4561
 
4562
+ case 4
4563
+ /* Static */
4564
+ :
4565
+ // VStatic cannot have a custom renderer associated to them, using owner's renderer
4566
+ mountStatic(node, parent, anchor, renderer);
4567
+ break;
4568
+
4555
4569
  case 2
4556
4570
  /* Element */
4557
4571
  :
@@ -4622,6 +4636,39 @@
4622
4636
  patchChildren(n1.children, n2.children, elm, renderer);
4623
4637
  }
4624
4638
 
4639
+ function mountStatic(vnode, parent, anchor, renderer) {
4640
+ var owner = vnode.owner;
4641
+ var cloneNode = renderer.cloneNode,
4642
+ isSyntheticShadowDefined = renderer.isSyntheticShadowDefined;
4643
+ var elm = vnode.elm = cloneNode(vnode.fragment, true);
4644
+ linkNodeToShadow(elm, owner, renderer); // Marks this node as Static to propagate the shadow resolver. must happen after elm is assigned to the proper shadow
4645
+
4646
+ var renderMode = owner.renderMode,
4647
+ shadowMode = owner.shadowMode;
4648
+
4649
+ if (isSyntheticShadowDefined) {
4650
+ if (shadowMode === 1
4651
+ /* Synthetic */
4652
+ || renderMode === 0
4653
+ /* Light */
4654
+ ) {
4655
+ elm[KEY__SHADOW_STATIC] = true;
4656
+ }
4657
+ }
4658
+
4659
+ if (process.env.NODE_ENV !== 'production') {
4660
+ var isLight = renderMode === 0
4661
+ /* Light */
4662
+ ;
4663
+ patchElementWithRestrictions(elm, {
4664
+ isPortal: false,
4665
+ isLight: isLight
4666
+ });
4667
+ }
4668
+
4669
+ insertNode(elm, parent, anchor, renderer);
4670
+ }
4671
+
4625
4672
  function mountCustomElement(vnode, parent, anchor, renderer) {
4626
4673
  var sel = vnode.sel,
4627
4674
  owner = vnode.owner;
@@ -5207,6 +5254,20 @@
5207
5254
 
5208
5255
  function addVNodeToChildLWC(vnode) {
5209
5256
  ArrayPush$1.call(getVMBeingRendered().velements, vnode);
5257
+ } // [st]atic node
5258
+
5259
+
5260
+ function st(fragment, key) {
5261
+ return {
5262
+ type: 4
5263
+ /* Static */
5264
+ ,
5265
+ sel: undefined,
5266
+ key: key,
5267
+ elm: undefined,
5268
+ fragment: fragment,
5269
+ owner: getVMBeingRendered()
5270
+ };
5210
5271
  } // [h]tml node
5211
5272
 
5212
5273
 
@@ -5696,6 +5757,7 @@
5696
5757
  co: co,
5697
5758
  dc: dc,
5698
5759
  ti: ti,
5760
+ st: st,
5699
5761
  gid: gid,
5700
5762
  fid: fid,
5701
5763
  shc: shc
@@ -5908,8 +5970,7 @@
5908
5970
  // This works in the client, because the stylesheets are created, and cached in the VM
5909
5971
  // the first time the VM renders.
5910
5972
  // native shadow or light DOM, SSR
5911
- var combinedStylesheetContent = ArrayJoin.call(stylesheets, '\n');
5912
- return createInlineStyleVNode(combinedStylesheetContent);
5973
+ return ArrayMap.call(stylesheets, createInlineStyleVNode);
5913
5974
  } else {
5914
5975
  // native shadow or light DOM, DOM renderer
5915
5976
  var root = getNearestNativeShadowComponent(vm); // null root means a global style
@@ -6095,6 +6156,91 @@
6095
6156
  }
6096
6157
  }
6097
6158
 
6159
+ function buildParseFragmentFn(createFragmentFn) {
6160
+ return function (strings) {
6161
+ for (var _len5 = arguments.length, keys = new Array(_len5 > 1 ? _len5 - 1 : 0), _key3 = 1; _key3 < _len5; _key3++) {
6162
+ keys[_key3 - 1] = arguments[_key3];
6163
+ }
6164
+
6165
+ var cache = create(null);
6166
+ return function () {
6167
+ var _getVMBeingRendered = getVMBeingRendered(),
6168
+ _getVMBeingRendered$c = _getVMBeingRendered.context,
6169
+ hasScopedStyles = _getVMBeingRendered$c.hasScopedStyles,
6170
+ stylesheetToken = _getVMBeingRendered$c.stylesheetToken,
6171
+ shadowMode = _getVMBeingRendered.shadowMode,
6172
+ renderer = _getVMBeingRendered.renderer;
6173
+
6174
+ var hasStyleToken = !isUndefined$1(stylesheetToken);
6175
+ var isSyntheticShadow = shadowMode === 1
6176
+ /* Synthetic */
6177
+ ;
6178
+ var cacheKey = 0;
6179
+
6180
+ if (hasStyleToken && hasScopedStyles) {
6181
+ cacheKey |= 1
6182
+ /* HAS_SCOPED_STYLE */
6183
+ ;
6184
+ }
6185
+
6186
+ if (hasStyleToken && isSyntheticShadow) {
6187
+ cacheKey |= 2
6188
+ /* SHADOW_MODE_SYNTHETIC */
6189
+ ;
6190
+ }
6191
+
6192
+ if (!isUndefined$1(cache[cacheKey])) {
6193
+ return cache[cacheKey];
6194
+ }
6195
+
6196
+ var classToken = hasScopedStyles && hasStyleToken ? ' ' + stylesheetToken : '';
6197
+ var classAttrToken = hasScopedStyles && hasStyleToken ? " class=\"".concat(stylesheetToken, "\"") : '';
6198
+ var attrToken = hasStyleToken && isSyntheticShadow ? ' ' + stylesheetToken : '';
6199
+ var htmlFragment = '';
6200
+
6201
+ for (var _i19 = 0, n = keys.length; _i19 < n; _i19++) {
6202
+ switch (keys[_i19]) {
6203
+ case 0:
6204
+ // styleToken in existing class attr
6205
+ htmlFragment += strings[_i19] + classToken;
6206
+ break;
6207
+
6208
+ case 1:
6209
+ // styleToken for added class attr
6210
+ htmlFragment += strings[_i19] + classAttrToken;
6211
+ break;
6212
+
6213
+ case 2:
6214
+ // styleToken as attr
6215
+ htmlFragment += strings[_i19] + attrToken;
6216
+ break;
6217
+
6218
+ case 3:
6219
+ // ${1}${2}
6220
+ htmlFragment += strings[_i19] + classAttrToken + attrToken;
6221
+ break;
6222
+ }
6223
+ }
6224
+
6225
+ htmlFragment += strings[strings.length - 1];
6226
+ cache[cacheKey] = createFragmentFn(htmlFragment, renderer);
6227
+ return cache[cacheKey];
6228
+ };
6229
+ };
6230
+ } // Note: at the moment this code executes, we don't have a renderer yet.
6231
+
6232
+
6233
+ var parseFragment = buildParseFragmentFn(function (html, renderer) {
6234
+ var createFragment = renderer.createFragment;
6235
+ return createFragment(html);
6236
+ });
6237
+ var parseSVGFragment = buildParseFragmentFn(function (html, renderer) {
6238
+ var createFragment = renderer.createFragment,
6239
+ getFirstChild = renderer.getFirstChild;
6240
+ var fragment = createFragment('<svg>' + html + '</svg>');
6241
+ return getFirstChild(fragment);
6242
+ });
6243
+
6098
6244
  function evaluateTemplate(vm, html) {
6099
6245
  if (process.env.NODE_ENV !== 'production') {
6100
6246
  assert.isTrue(isFunction$1(html), "evaluateTemplate() second argument must be an imported template instead of ".concat(toString$1(html))); // in dev-mode, we support hot swapping of templates, which means that
@@ -6151,7 +6297,7 @@
6151
6297
  // re-rendering.
6152
6298
 
6153
6299
  var stylesheetsContent = getStylesheetsContent(vm, html);
6154
- context.styleVNode = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
6300
+ context.styleVNodes = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
6155
6301
  }
6156
6302
 
6157
6303
  if (process.env.NODE_ENV !== 'production') {
@@ -6167,10 +6313,10 @@
6167
6313
 
6168
6314
  isUpdatingTemplate = true;
6169
6315
  vnodes = html.call(undefined, api, component, cmpSlots, context.tplCache);
6170
- var styleVNode = context.styleVNode;
6316
+ var styleVNodes = context.styleVNodes;
6171
6317
 
6172
- if (!isNull(styleVNode)) {
6173
- ArrayUnshift.call(vnodes, styleVNode);
6318
+ if (!isNull(styleVNodes)) {
6319
+ ArrayUnshift.apply(vnodes, styleVNodes);
6174
6320
  }
6175
6321
  });
6176
6322
  }, function () {
@@ -6193,8 +6339,8 @@
6193
6339
  var stylesheets = template.stylesheets;
6194
6340
 
6195
6341
  if (!isUndefined$1(stylesheets)) {
6196
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
6197
- if (isTrue(stylesheets[_i19][KEY__SCOPED_CSS])) {
6342
+ for (var _i20 = 0; _i20 < stylesheets.length; _i20++) {
6343
+ if (isTrue(stylesheets[_i20][KEY__SCOPED_CSS])) {
6198
6344
  return true;
6199
6345
  }
6200
6346
  }
@@ -6415,8 +6561,8 @@
6415
6561
  assert.isTrue(isObject(service), "Invalid service declaration, ".concat(service, ": service must be an object"));
6416
6562
  }
6417
6563
 
6418
- for (var _i20 = 0; _i20 < hooks.length; ++_i20) {
6419
- var hookName = hooks[_i20];
6564
+ for (var _i21 = 0; _i21 < hooks.length; ++_i21) {
6565
+ var hookName = hooks[_i21];
6420
6566
 
6421
6567
  if (hookName in service) {
6422
6568
  var l = Services[hookName];
@@ -6439,8 +6585,8 @@
6439
6585
  def = vm.def,
6440
6586
  context = vm.context;
6441
6587
 
6442
- for (var _i21 = 0, len = cbs.length; _i21 < len; ++_i21) {
6443
- cbs[_i21].call(undefined, component, {}, def, context);
6588
+ for (var _i22 = 0, len = cbs.length; _i22 < len; ++_i22) {
6589
+ cbs[_i22].call(undefined, component, {}, def, context);
6444
6590
  }
6445
6591
  }
6446
6592
  /*
@@ -6589,7 +6735,7 @@
6589
6735
  hasTokenInClass: undefined,
6590
6736
  hasTokenInAttribute: undefined,
6591
6737
  hasScopedStyles: undefined,
6592
- styleVNode: null,
6738
+ styleVNodes: null,
6593
6739
  tplCache: EmptyObject,
6594
6740
  wiredConnecting: EmptyArray,
6595
6741
  wiredDisconnecting: EmptyArray
@@ -6815,19 +6961,19 @@
6815
6961
  });
6816
6962
  rehydrateQueue = []; // reset to a new queue
6817
6963
 
6818
- for (var _i22 = 0, len = vms.length; _i22 < len; _i22 += 1) {
6819
- var vm = vms[_i22];
6964
+ for (var _i23 = 0, len = vms.length; _i23 < len; _i23 += 1) {
6965
+ var vm = vms[_i23];
6820
6966
 
6821
6967
  try {
6822
6968
  rehydrate(vm);
6823
6969
  } catch (error) {
6824
- if (_i22 + 1 < len) {
6970
+ if (_i23 + 1 < len) {
6825
6971
  // pieces of the queue are still pending to be rehydrated, those should have priority
6826
6972
  if (rehydrateQueue.length === 0) {
6827
6973
  addCallbackToNextTick(flushRehydrationQueue);
6828
6974
  }
6829
6975
 
6830
- ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i22 + 1));
6976
+ ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i23 + 1));
6831
6977
  } // we need to end the measure before throwing.
6832
6978
 
6833
6979
 
@@ -6931,8 +7077,8 @@
6931
7077
  var vCustomElementCollection = vm.velements; // Reporting disconnection for every child in inverse order since they are
6932
7078
  // inserted in reserved order.
6933
7079
 
6934
- for (var _i23 = vCustomElementCollection.length - 1; _i23 >= 0; _i23 -= 1) {
6935
- var elm = vCustomElementCollection[_i23].elm; // There are two cases where the element could be undefined:
7080
+ for (var _i24 = vCustomElementCollection.length - 1; _i24 >= 0; _i24 -= 1) {
7081
+ var elm = vCustomElementCollection[_i24].elm; // There are two cases where the element could be undefined:
6936
7082
  // * when there is an error during the construction phase, and an error
6937
7083
  // boundary picks it, there is a possibility that the VCustomElement
6938
7084
  // is not properly initialized, and therefore is should be ignored.
@@ -6966,8 +7112,8 @@
6966
7112
 
6967
7113
 
6968
7114
  function recursivelyDisconnectChildren(vnodes) {
6969
- for (var _i24 = 0, len = vnodes.length; _i24 < len; _i24 += 1) {
6970
- var vnode = vnodes[_i24];
7115
+ for (var _i25 = 0, len = vnodes.length; _i25 < len; _i25 += 1) {
7116
+ var vnode = vnodes[_i25];
6971
7117
 
6972
7118
  if (!isNull(vnode) && !isUndefined$1(vnode.elm)) {
6973
7119
  switch (vnode.type) {
@@ -6999,8 +7145,8 @@
6999
7145
  renderRoot = vm.renderRoot,
7000
7146
  remove = vm.renderer.remove;
7001
7147
 
7002
- for (var _i25 = 0, len = children.length; _i25 < len; _i25++) {
7003
- var child = children[_i25];
7148
+ for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
7149
+ var child = children[_i26];
7004
7150
 
7005
7151
  if (!isNull(child) && !isUndefined$1(child.elm)) {
7006
7152
  remove(child.elm, renderRoot);
@@ -7377,8 +7523,8 @@
7377
7523
  function connectWireAdapters(vm) {
7378
7524
  var wiredConnecting = vm.context.wiredConnecting;
7379
7525
 
7380
- for (var _i26 = 0, len = wiredConnecting.length; _i26 < len; _i26 += 1) {
7381
- wiredConnecting[_i26]();
7526
+ for (var _i27 = 0, len = wiredConnecting.length; _i27 < len; _i27 += 1) {
7527
+ wiredConnecting[_i27]();
7382
7528
  }
7383
7529
  }
7384
7530
 
@@ -7386,8 +7532,8 @@
7386
7532
  var wiredDisconnecting = vm.context.wiredDisconnecting;
7387
7533
  runWithBoundaryProtection(vm, vm, noop, function () {
7388
7534
  // job
7389
- for (var _i27 = 0, len = wiredDisconnecting.length; _i27 < len; _i27 += 1) {
7390
- wiredDisconnecting[_i27]();
7535
+ for (var _i28 = 0, len = wiredDisconnecting.length; _i28 < len; _i28 += 1) {
7536
+ wiredDisconnecting[_i28]();
7391
7537
  }
7392
7538
  }, noop);
7393
7539
  }
@@ -7513,6 +7659,13 @@
7513
7659
  hydratedNode = hydrateComment(node, vnode, renderer);
7514
7660
  break;
7515
7661
 
7662
+ case 4
7663
+ /* Static */
7664
+ :
7665
+ // VStatic are cacheable and cannot have custom renderer associated to them
7666
+ hydratedNode = hydrateStaticElement(node, vnode, renderer);
7667
+ break;
7668
+
7516
7669
  case 2
7517
7670
  /* Element */
7518
7671
  :
@@ -7579,6 +7732,15 @@
7579
7732
  return node;
7580
7733
  }
7581
7734
 
7735
+ function hydrateStaticElement(elm, vnode, renderer) {
7736
+ if (!areCompatibleNodes(vnode.fragment, elm, vnode, renderer)) {
7737
+ return handleMismatch(elm, vnode, renderer);
7738
+ }
7739
+
7740
+ vnode.elm = elm;
7741
+ return elm;
7742
+ }
7743
+
7582
7744
  function hydrateElement(elm, vnode, renderer) {
7583
7745
  if (!hasCorrectNodeType(vnode, elm, 1
7584
7746
  /* ELEMENT */
@@ -7672,8 +7834,8 @@
7672
7834
  var anchor = null;
7673
7835
  var renderer = owner.renderer;
7674
7836
 
7675
- for (var _i28 = 0; _i28 < children.length; _i28++) {
7676
- var childVnode = children[_i28];
7837
+ for (var _i29 = 0; _i29 < children.length; _i29++) {
7838
+ var childVnode = children[_i29];
7677
7839
 
7678
7840
  if (!isNull(childVnode)) {
7679
7841
  if (nextNode) {
@@ -7769,8 +7931,8 @@
7769
7931
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
7770
7932
  // Note: intentionally ONLY matching vnodes.attrs to elm.attrs, in case SSR is adding extra attributes.
7771
7933
 
7772
- for (var _i29 = 0, _Object$entries = Object.entries(attrs); _i29 < _Object$entries.length; _i29++) {
7773
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i29], 2),
7934
+ for (var _i30 = 0, _Object$entries = Object.entries(attrs); _i30 < _Object$entries.length; _i30++) {
7935
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i30], 2),
7774
7936
  attrName = _Object$entries$_i[0],
7775
7937
  attrValue = _Object$entries$_i[1];
7776
7938
 
@@ -7850,8 +8012,8 @@
7850
8012
  var parsedVnodeStyle = parseStyleText(elmStyle);
7851
8013
  var expectedStyle = []; // styleMap is used when style is set to static value.
7852
8014
 
7853
- for (var _i30 = 0, n = styleDecls.length; _i30 < n; _i30++) {
7854
- var _styleDecls$_i2 = _slicedToArray(styleDecls[_i30], 3),
8015
+ for (var _i31 = 0, n = styleDecls.length; _i31 < n; _i31++) {
8016
+ var _styleDecls$_i2 = _slicedToArray(styleDecls[_i31], 3),
7855
8017
  prop = _styleDecls$_i2[0],
7856
8018
  value = _styleDecls$_i2[1],
7857
8019
  important = _styleDecls$_i2[2];
@@ -7884,6 +8046,60 @@
7884
8046
 
7885
8047
  return nodesAreCompatible;
7886
8048
  }
8049
+
8050
+ function areCompatibleNodes(client, ssr, vnode, renderer) {
8051
+ var getProperty = renderer.getProperty,
8052
+ getAttribute = renderer.getAttribute;
8053
+
8054
+ if (getProperty(client, 'nodeType') === 3
8055
+ /* TEXT */
8056
+ ) {
8057
+ if (!hasCorrectNodeType(vnode, ssr, 3
8058
+ /* TEXT */
8059
+ , renderer)) {
8060
+ return false;
8061
+ }
8062
+
8063
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
8064
+ }
8065
+
8066
+ if (getProperty(client, 'nodeType') === 8
8067
+ /* COMMENT */
8068
+ ) {
8069
+ if (!hasCorrectNodeType(vnode, ssr, 8
8070
+ /* COMMENT */
8071
+ , renderer)) {
8072
+ return false;
8073
+ }
8074
+
8075
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
8076
+ }
8077
+
8078
+ if (!hasCorrectNodeType(vnode, ssr, 1
8079
+ /* ELEMENT */
8080
+ , renderer)) {
8081
+ return false;
8082
+ }
8083
+
8084
+ var isCompatibleElements = true;
8085
+
8086
+ if (getProperty(client, 'tagName') !== getProperty(ssr, 'tagName')) {
8087
+ if (process.env.NODE_ENV !== 'production') {
8088
+ logError("Hydration mismatch: expecting element with tag \"".concat(getProperty(client, 'tagName').toLowerCase(), "\" but found \"").concat(getProperty(ssr, 'tagName').toLowerCase(), "\"."), vnode.owner);
8089
+ }
8090
+
8091
+ return false;
8092
+ }
8093
+
8094
+ var clientAttrsNames = getProperty(client, 'getAttributeNames').call(client);
8095
+ clientAttrsNames.forEach(function (attrName) {
8096
+ if (getAttribute(client, attrName) !== getAttribute(ssr, attrName)) {
8097
+ logError("Mismatch hydrating element <".concat(getProperty(client, 'tagName').toLowerCase(), ">: attribute \"").concat(attrName, "\" has different values, expected \"").concat(getAttribute(client, attrName), "\" but found \"").concat(getAttribute(ssr, attrName), "\""), vnode.owner);
8098
+ isCompatibleElements = false;
8099
+ }
8100
+ });
8101
+ return isCompatibleElements;
8102
+ }
7887
8103
  /*
7888
8104
  * Copyright (c) 2018, salesforce.com, inc.
7889
8105
  * All rights reserved.
@@ -8056,7 +8272,7 @@
8056
8272
 
8057
8273
  return ctor;
8058
8274
  }
8059
- /* version: 2.14.2 */
8275
+ /* version: 2.15.0 */
8060
8276
 
8061
8277
  /*
8062
8278
  * Copyright (c) 2018, salesforce.com, inc.
@@ -8319,6 +8535,14 @@
8319
8535
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
8320
8536
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
8321
8537
 
8538
+ function cloneNode(node, deep) {
8539
+ return node.cloneNode(deep);
8540
+ }
8541
+
8542
+ function createFragment(html) {
8543
+ return document.createRange().createContextualFragment(html).firstChild;
8544
+ }
8545
+
8322
8546
  function createElement$1(tagName, namespace) {
8323
8547
  return isUndefined$1(namespace) ? document.createElement(tagName) : document.createElementNS(namespace, tagName);
8324
8548
  }
@@ -8469,6 +8693,8 @@
8469
8693
  isHydrating: isHydrating,
8470
8694
  insert: insert,
8471
8695
  remove: remove,
8696
+ cloneNode: cloneNode,
8697
+ createFragment: createFragment,
8472
8698
  createElement: createElement$1,
8473
8699
  createText: createText,
8474
8700
  createComment: createComment,
@@ -8533,8 +8759,8 @@
8533
8759
  hydrated: true
8534
8760
  });
8535
8761
 
8536
- for (var _i31 = 0, _Object$entries2 = Object.entries(props); _i31 < _Object$entries2.length; _i31++) {
8537
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i31], 2),
8762
+ for (var _i32 = 0, _Object$entries2 = Object.entries(props); _i32 < _Object$entries2.length; _i32++) {
8763
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i32], 2),
8538
8764
  key = _Object$entries2$_i[0],
8539
8765
  value = _Object$entries2$_i[1];
8540
8766
 
@@ -8866,7 +9092,7 @@
8866
9092
  });
8867
9093
  freeze(LightningElement);
8868
9094
  seal(LightningElement.prototype);
8869
- /* version: 2.14.2 */
9095
+ /* version: 2.15.0 */
8870
9096
 
8871
9097
  exports.LightningElement = LightningElement;
8872
9098
  exports.__unstable__ProfilerControl = profilerControl;
@@ -8880,6 +9106,8 @@
8880
9106
  exports.hydrateComponent = hydrateComponent;
8881
9107
  exports.isComponentConstructor = isComponentConstructor;
8882
9108
  exports.isNodeFromTemplate = isNodeShadowed;
9109
+ exports.parseFragment = parseFragment;
9110
+ exports.parseSVGFragment = parseSVGFragment;
8883
9111
  exports.readonly = readonly;
8884
9112
  exports.register = register;
8885
9113
  exports.registerComponent = registerComponent;