@vue/runtime-dom 3.2.34-beta.1 → 3.2.34

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.
@@ -1345,27 +1345,25 @@ const vModelDynamic = {
1345
1345
  callModelHook(el, binding, vnode, prevVNode, 'updated');
1346
1346
  }
1347
1347
  };
1348
- function callModelHook(el, binding, vnode, prevVNode, hook) {
1349
- let modelToUse;
1350
- switch (el.tagName) {
1348
+ function resolveDynamicModel(tagName, type) {
1349
+ switch (tagName) {
1351
1350
  case 'SELECT':
1352
- modelToUse = vModelSelect;
1353
- break;
1351
+ return vModelSelect;
1354
1352
  case 'TEXTAREA':
1355
- modelToUse = vModelText;
1356
- break;
1353
+ return vModelText;
1357
1354
  default:
1358
- switch (vnode.props && vnode.props.type) {
1355
+ switch (type) {
1359
1356
  case 'checkbox':
1360
- modelToUse = vModelCheckbox;
1361
- break;
1357
+ return vModelCheckbox;
1362
1358
  case 'radio':
1363
- modelToUse = vModelRadio;
1364
- break;
1359
+ return vModelRadio;
1365
1360
  default:
1366
- modelToUse = vModelText;
1361
+ return vModelText;
1367
1362
  }
1368
1363
  }
1364
+ }
1365
+ function callModelHook(el, binding, vnode, prevVNode, hook) {
1366
+ const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);
1369
1367
  const fn = modelToUse[hook];
1370
1368
  fn && fn(el, binding, vnode, prevVNode);
1371
1369
  }
@@ -1393,6 +1391,17 @@ function initVModelForSSR() {
1393
1391
  return { checked: true };
1394
1392
  }
1395
1393
  };
1394
+ vModelDynamic.getSSRProps = (binding, vnode) => {
1395
+ if (typeof vnode.type !== 'string') {
1396
+ return;
1397
+ }
1398
+ const modelToUse = resolveDynamicModel(
1399
+ // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase
1400
+ vnode.type.toUpperCase(), vnode.props && vnode.props.type);
1401
+ if (modelToUse.getSSRProps) {
1402
+ return modelToUse.getSSRProps(binding, vnode);
1403
+ }
1404
+ };
1396
1405
  }
1397
1406
 
1398
1407
  const systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];
@@ -1296,27 +1296,25 @@ const vModelDynamic = {
1296
1296
  callModelHook(el, binding, vnode, prevVNode, 'updated');
1297
1297
  }
1298
1298
  };
1299
- function callModelHook(el, binding, vnode, prevVNode, hook) {
1300
- let modelToUse;
1301
- switch (el.tagName) {
1299
+ function resolveDynamicModel(tagName, type) {
1300
+ switch (tagName) {
1302
1301
  case 'SELECT':
1303
- modelToUse = vModelSelect;
1304
- break;
1302
+ return vModelSelect;
1305
1303
  case 'TEXTAREA':
1306
- modelToUse = vModelText;
1307
- break;
1304
+ return vModelText;
1308
1305
  default:
1309
- switch (vnode.props && vnode.props.type) {
1306
+ switch (type) {
1310
1307
  case 'checkbox':
1311
- modelToUse = vModelCheckbox;
1312
- break;
1308
+ return vModelCheckbox;
1313
1309
  case 'radio':
1314
- modelToUse = vModelRadio;
1315
- break;
1310
+ return vModelRadio;
1316
1311
  default:
1317
- modelToUse = vModelText;
1312
+ return vModelText;
1318
1313
  }
1319
1314
  }
1315
+ }
1316
+ function callModelHook(el, binding, vnode, prevVNode, hook) {
1317
+ const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);
1320
1318
  const fn = modelToUse[hook];
1321
1319
  fn && fn(el, binding, vnode, prevVNode);
1322
1320
  }
@@ -1344,6 +1342,17 @@ function initVModelForSSR() {
1344
1342
  return { checked: true };
1345
1343
  }
1346
1344
  };
1345
+ vModelDynamic.getSSRProps = (binding, vnode) => {
1346
+ if (typeof vnode.type !== 'string') {
1347
+ return;
1348
+ }
1349
+ const modelToUse = resolveDynamicModel(
1350
+ // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase
1351
+ vnode.type.toUpperCase(), vnode.props && vnode.props.type);
1352
+ if (modelToUse.getSSRProps) {
1353
+ return modelToUse.getSSRProps(binding, vnode);
1354
+ }
1355
+ };
1347
1356
  }
1348
1357
 
1349
1358
  const systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];
@@ -3867,11 +3867,6 @@ const KeepAliveImpl = {
3867
3867
  // The whole point of this is to avoid importing KeepAlive directly in the
3868
3868
  // renderer to facilitate tree-shaking.
3869
3869
  const sharedContext = instance.ctx;
3870
- // if the internal renderer is not registered, it indicates that this is server-side rendering,
3871
- // for KeepAlive, we just need to render its children
3872
- if (!sharedContext.renderer) {
3873
- return slots.default;
3874
- }
3875
3870
  const cache = new Map();
3876
3871
  const keys = new Set();
3877
3872
  let current = null;
@@ -5999,7 +5994,7 @@ const isComment = (node) => node.nodeType === 8 /* COMMENT */;
5999
5994
  // Hydration also depends on some renderer internal logic which needs to be
6000
5995
  // passed in via arguments.
6001
5996
  function createHydrationFunctions(rendererInternals) {
6002
- const { mt: mountComponent, p: patch, o: { patchProp, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
5997
+ const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
6003
5998
  const hydrate = (vnode, container) => {
6004
5999
  if (!container.hasChildNodes()) {
6005
6000
  warn$1(`Attempting to hydrate existing markup but container is empty. ` +
@@ -6030,7 +6025,15 @@ function createHydrationFunctions(rendererInternals) {
6030
6025
  switch (type) {
6031
6026
  case Text:
6032
6027
  if (domType !== 3 /* TEXT */) {
6033
- nextNode = onMismatch();
6028
+ // #5728 empty text node inside a slot can cause hydration failure
6029
+ // because the server rendered HTML won't contain a text node
6030
+ if (vnode.children === '') {
6031
+ insert((vnode.el = createText('')), node.parentElement, node);
6032
+ nextNode = node;
6033
+ }
6034
+ else {
6035
+ nextNode = onMismatch();
6036
+ }
6034
6037
  }
6035
6038
  else {
6036
6039
  if (node.data !== vnode.children) {
@@ -6104,6 +6107,12 @@ function createHydrationFunctions(rendererInternals) {
6104
6107
  nextNode = isFragmentStart
6105
6108
  ? locateClosingAsyncAnchor(node)
6106
6109
  : nextSibling(node);
6110
+ // #4293 teleport as component root
6111
+ if (nextNode &&
6112
+ isComment(nextNode) &&
6113
+ nextNode.data === 'teleport end') {
6114
+ nextNode = nextSibling(nextNode);
6115
+ }
6107
6116
  // #3787
6108
6117
  // if component is async, it may get moved / unmounted before its
6109
6118
  // inner component is loaded, so we need to give it a placeholder
@@ -6767,8 +6776,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6767
6776
  const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));
6768
6777
  const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));
6769
6778
  let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
6770
- if (isHmrUpdating) {
6771
- // HMR updated, force full diff
6779
+ if (// #5523 dev root fragment may inherit directives
6780
+ (isHmrUpdating || patchFlag & 2048 /* DEV_ROOT_FRAGMENT */)) {
6781
+ // HMR updated / Dev root fragment (w/ comments), force full diff
6772
6782
  patchFlag = 0;
6773
6783
  optimized = false;
6774
6784
  dynamicChildren = null;
@@ -6790,8 +6800,6 @@ function baseCreateRenderer(options, createHydrationFns) {
6790
6800
  else {
6791
6801
  if (patchFlag > 0 &&
6792
6802
  patchFlag & 64 /* STABLE_FRAGMENT */ &&
6793
- // #5523 dev root fragment may inherit directives so always force update
6794
- !(patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) &&
6795
6803
  dynamicChildren &&
6796
6804
  // #2715 the previous fragment could've been a BAILed one as a result
6797
6805
  // of renderSlot() with no valid children
@@ -7877,10 +7885,23 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
7877
7885
  }
7878
7886
  else {
7879
7887
  vnode.anchor = nextSibling(node);
7880
- vnode.targetAnchor = hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
7888
+ // lookahead until we find the target anchor
7889
+ // we cannot rely on return value of hydrateChildren() because there
7890
+ // could be nested teleports
7891
+ let targetAnchor = targetNode;
7892
+ while (targetAnchor) {
7893
+ targetAnchor = nextSibling(targetAnchor);
7894
+ if (targetAnchor &&
7895
+ targetAnchor.nodeType === 8 &&
7896
+ targetAnchor.data === 'teleport anchor') {
7897
+ vnode.targetAnchor = targetAnchor;
7898
+ target._lpa =
7899
+ vnode.targetAnchor && nextSibling(vnode.targetAnchor);
7900
+ break;
7901
+ }
7902
+ }
7903
+ hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
7881
7904
  }
7882
- target._lpa =
7883
- vnode.targetAnchor && nextSibling(vnode.targetAnchor);
7884
7905
  }
7885
7906
  }
7886
7907
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -9165,7 +9186,7 @@ function isMemoSame(cached, memo) {
9165
9186
  }
9166
9187
 
9167
9188
  // Core API ------------------------------------------------------------------
9168
- const version = "3.2.34-beta.1";
9189
+ const version = "3.2.34";
9169
9190
  /**
9170
9191
  * SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
9171
9192
  * @internal
@@ -10570,27 +10591,25 @@ const vModelDynamic = {
10570
10591
  callModelHook(el, binding, vnode, prevVNode, 'updated');
10571
10592
  }
10572
10593
  };
10573
- function callModelHook(el, binding, vnode, prevVNode, hook) {
10574
- let modelToUse;
10575
- switch (el.tagName) {
10594
+ function resolveDynamicModel(tagName, type) {
10595
+ switch (tagName) {
10576
10596
  case 'SELECT':
10577
- modelToUse = vModelSelect;
10578
- break;
10597
+ return vModelSelect;
10579
10598
  case 'TEXTAREA':
10580
- modelToUse = vModelText;
10581
- break;
10599
+ return vModelText;
10582
10600
  default:
10583
- switch (vnode.props && vnode.props.type) {
10601
+ switch (type) {
10584
10602
  case 'checkbox':
10585
- modelToUse = vModelCheckbox;
10586
- break;
10603
+ return vModelCheckbox;
10587
10604
  case 'radio':
10588
- modelToUse = vModelRadio;
10589
- break;
10605
+ return vModelRadio;
10590
10606
  default:
10591
- modelToUse = vModelText;
10607
+ return vModelText;
10592
10608
  }
10593
10609
  }
10610
+ }
10611
+ function callModelHook(el, binding, vnode, prevVNode, hook) {
10612
+ const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);
10594
10613
  const fn = modelToUse[hook];
10595
10614
  fn && fn(el, binding, vnode, prevVNode);
10596
10615
  }