@vue/compat 3.4.5 → 3.4.6

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/vue.cjs.js CHANGED
@@ -1940,7 +1940,9 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
1940
1940
  }
1941
1941
  function flushPostFlushCbs(seen) {
1942
1942
  if (pendingPostFlushCbs.length) {
1943
- const deduped = [...new Set(pendingPostFlushCbs)];
1943
+ const deduped = [...new Set(pendingPostFlushCbs)].sort(
1944
+ (a, b) => getId(a) - getId(b)
1945
+ );
1944
1946
  pendingPostFlushCbs.length = 0;
1945
1947
  if (activePostFlushCbs) {
1946
1948
  activePostFlushCbs.push(...deduped);
@@ -1950,7 +1952,6 @@ function flushPostFlushCbs(seen) {
1950
1952
  {
1951
1953
  seen = seen || /* @__PURE__ */ new Map();
1952
1954
  }
1953
- activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
1954
1955
  for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
1955
1956
  if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
1956
1957
  continue;
@@ -3564,6 +3565,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3564
3565
  {
3565
3566
  assertNumber(timeout, `Suspense timeout`);
3566
3567
  }
3568
+ const initialAnchor = anchor;
3567
3569
  const suspense = {
3568
3570
  vnode,
3569
3571
  parent: parentSuspense,
@@ -3571,7 +3573,6 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3571
3573
  namespace,
3572
3574
  container,
3573
3575
  hiddenContainer,
3574
- anchor,
3575
3576
  deps: 0,
3576
3577
  pendingId: suspenseId++,
3577
3578
  timeout: typeof timeout === "number" ? timeout : -1,
@@ -3614,20 +3615,21 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3614
3615
  move(
3615
3616
  pendingBranch,
3616
3617
  container2,
3617
- next(activeBranch),
3618
+ anchor === initialAnchor ? next(activeBranch) : anchor,
3618
3619
  0
3619
3620
  );
3620
3621
  queuePostFlushCb(effects);
3621
3622
  }
3622
3623
  };
3623
3624
  }
3624
- let { anchor: anchor2 } = suspense;
3625
3625
  if (activeBranch) {
3626
- anchor2 = next(activeBranch);
3626
+ if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {
3627
+ anchor = next(activeBranch);
3628
+ }
3627
3629
  unmount(activeBranch, parentComponent2, suspense, true);
3628
3630
  }
3629
3631
  if (!delayEnter) {
3630
- move(pendingBranch, container2, anchor2, 0);
3632
+ move(pendingBranch, container2, anchor, 0);
3631
3633
  }
3632
3634
  }
3633
3635
  setActiveBranch(suspense, pendingBranch);
@@ -6602,7 +6604,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6602
6604
  return vm;
6603
6605
  }
6604
6606
  }
6605
- Vue.version = `2.6.14-compat:${"3.4.5"}`;
6607
+ Vue.version = `2.6.14-compat:${"3.4.6"}`;
6606
6608
  Vue.config = singletonApp.config;
6607
6609
  Vue.use = (p, ...options) => {
6608
6610
  if (p && isFunction(p.install)) {
@@ -8147,7 +8149,7 @@ Server rendered element contains more child nodes than client vdom.`
8147
8149
  if (props) {
8148
8150
  {
8149
8151
  for (const key in props) {
8150
- if (propHasMismatch(el, key, props[key])) {
8152
+ if (propHasMismatch(el, key, props[key], vnode)) {
8151
8153
  hasMismatch = true;
8152
8154
  }
8153
8155
  if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
@@ -8322,7 +8324,7 @@ Server rendered element contains fewer child nodes than client vdom.`
8322
8324
  };
8323
8325
  return [hydrate, hydrateNode];
8324
8326
  }
8325
- function propHasMismatch(el, key, clientValue) {
8327
+ function propHasMismatch(el, key, clientValue, vnode) {
8326
8328
  let mismatchType;
8327
8329
  let mismatchKey;
8328
8330
  let actual;
@@ -8334,14 +8336,23 @@ function propHasMismatch(el, key, clientValue) {
8334
8336
  mismatchType = mismatchKey = `class`;
8335
8337
  }
8336
8338
  } else if (key === "style") {
8337
- actual = el.getAttribute("style");
8338
- expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));
8339
- if (actual !== expected) {
8339
+ actual = toStyleMap(el.getAttribute("style") || "");
8340
+ expected = toStyleMap(
8341
+ isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue))
8342
+ );
8343
+ if (vnode.dirs) {
8344
+ for (const { dir, value } of vnode.dirs) {
8345
+ if (dir.name === "show" && !value) {
8346
+ expected.set("display", "none");
8347
+ }
8348
+ }
8349
+ }
8350
+ if (!isMapEqual(actual, expected)) {
8340
8351
  mismatchType = mismatchKey = "style";
8341
8352
  }
8342
8353
  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
8343
- actual = el.hasAttribute(key) && el.getAttribute(key);
8344
- expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? false : String(clientValue);
8354
+ actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8355
+ expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? "" : String(clientValue);
8345
8356
  if (actual !== expected) {
8346
8357
  mismatchType = `attribute`;
8347
8358
  mismatchKey = key;
@@ -8376,6 +8387,29 @@ function isSetEqual(a, b) {
8376
8387
  }
8377
8388
  return true;
8378
8389
  }
8390
+ function toStyleMap(str) {
8391
+ const styleMap = /* @__PURE__ */ new Map();
8392
+ for (const item of str.split(";")) {
8393
+ let [key, value] = item.split(":");
8394
+ key = key == null ? void 0 : key.trim();
8395
+ value = value == null ? void 0 : value.trim();
8396
+ if (key && value) {
8397
+ styleMap.set(key, value);
8398
+ }
8399
+ }
8400
+ return styleMap;
8401
+ }
8402
+ function isMapEqual(a, b) {
8403
+ if (a.size !== b.size) {
8404
+ return false;
8405
+ }
8406
+ for (const [key, value] of a) {
8407
+ if (value !== b.get(key)) {
8408
+ return false;
8409
+ }
8410
+ }
8411
+ return true;
8412
+ }
8379
8413
 
8380
8414
  let supported;
8381
8415
  let perf;
@@ -8964,7 +8998,11 @@ function baseCreateRenderer(options, createHydrationFns) {
8964
8998
  hostInsert(fragmentStartAnchor, container, anchor);
8965
8999
  hostInsert(fragmentEndAnchor, container, anchor);
8966
9000
  mountChildren(
8967
- n2.children,
9001
+ // #10007
9002
+ // such fragment like `<></>` will be compiled into
9003
+ // a fragment which doesn't have a children.
9004
+ // In this case fallback to an empty array
9005
+ n2.children || [],
8968
9006
  container,
8969
9007
  fragmentEndAnchor,
8970
9008
  parentComponent,
@@ -9832,6 +9870,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9832
9870
  }
9833
9871
  return hostNextSibling(vnode.anchor || vnode.el);
9834
9872
  };
9873
+ let isFlushing = false;
9835
9874
  const render = (vnode, container, namespace) => {
9836
9875
  if (vnode == null) {
9837
9876
  if (container._vnode) {
@@ -9848,8 +9887,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9848
9887
  namespace
9849
9888
  );
9850
9889
  }
9851
- flushPreFlushCbs();
9852
- flushPostFlushCbs();
9890
+ if (!isFlushing) {
9891
+ isFlushing = true;
9892
+ flushPreFlushCbs();
9893
+ flushPostFlushCbs();
9894
+ isFlushing = false;
9895
+ }
9853
9896
  container._vnode = vnode;
9854
9897
  };
9855
9898
  const internals = {
@@ -10753,7 +10796,14 @@ function createComponentInstance(vnode, parent, suspense) {
10753
10796
  return instance;
10754
10797
  }
10755
10798
  let currentInstance = null;
10756
- const getCurrentInstance = () => currentInstance || currentRenderingInstance;
10799
+ const getCurrentInstance = () => {
10800
+ if (isInComputedGetter) {
10801
+ warn$1(
10802
+ `getCurrentInstance() called inside a computed getter. This is incorrect usage as computed getters are not guaranteed to be executed with an active component instance. If you are using a composable inside a computed getter, move it ouside to the setup scope.`
10803
+ );
10804
+ }
10805
+ return currentInstance || currentRenderingInstance;
10806
+ };
10757
10807
  let internalSetCurrentInstance;
10758
10808
  let setInSSRSetupState;
10759
10809
  {
@@ -11096,7 +11146,25 @@ function isClassComponent(value) {
11096
11146
  return isFunction(value) && "__vccOpts" in value;
11097
11147
  }
11098
11148
 
11149
+ let isInComputedGetter = false;
11150
+ function wrapComputedGetter(getter) {
11151
+ return () => {
11152
+ isInComputedGetter = true;
11153
+ try {
11154
+ return getter();
11155
+ } finally {
11156
+ isInComputedGetter = false;
11157
+ }
11158
+ };
11159
+ }
11099
11160
  const computed = (getterOrOptions, debugOptions) => {
11161
+ {
11162
+ if (isFunction(getterOrOptions)) {
11163
+ getterOrOptions = wrapComputedGetter(getterOrOptions);
11164
+ } else {
11165
+ getterOrOptions.get = wrapComputedGetter(getterOrOptions.get);
11166
+ }
11167
+ }
11100
11168
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
11101
11169
  };
11102
11170
 
@@ -11322,7 +11390,7 @@ function isMemoSame(cached, memo) {
11322
11390
  return true;
11323
11391
  }
11324
11392
 
11325
- const version = "3.4.5";
11393
+ const version = "3.4.6";
11326
11394
  const warn = warn$1 ;
11327
11395
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11328
11396
  const devtools = devtools$1 ;
@@ -11771,6 +11839,9 @@ const vShow = {
11771
11839
  setDisplay(el, value);
11772
11840
  }
11773
11841
  };
11842
+ {
11843
+ vShow.name = "show";
11844
+ }
11774
11845
  function setDisplay(el, value) {
11775
11846
  el.style.display = value ? el[vShowOldKey] : "none";
11776
11847
  }
@@ -1657,14 +1657,15 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
1657
1657
  }
1658
1658
  function flushPostFlushCbs(seen) {
1659
1659
  if (pendingPostFlushCbs.length) {
1660
- const deduped = [...new Set(pendingPostFlushCbs)];
1660
+ const deduped = [...new Set(pendingPostFlushCbs)].sort(
1661
+ (a, b) => getId(a) - getId(b)
1662
+ );
1661
1663
  pendingPostFlushCbs.length = 0;
1662
1664
  if (activePostFlushCbs) {
1663
1665
  activePostFlushCbs.push(...deduped);
1664
1666
  return;
1665
1667
  }
1666
1668
  activePostFlushCbs = deduped;
1667
- activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
1668
1669
  for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
1669
1670
  activePostFlushCbs[postFlushIndex]();
1670
1671
  }
@@ -2617,6 +2618,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2617
2618
  }
2618
2619
  }
2619
2620
  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;
2621
+ const initialAnchor = anchor;
2620
2622
  const suspense = {
2621
2623
  vnode,
2622
2624
  parent: parentSuspense,
@@ -2624,7 +2626,6 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2624
2626
  namespace,
2625
2627
  container,
2626
2628
  hiddenContainer,
2627
- anchor,
2628
2629
  deps: 0,
2629
2630
  pendingId: suspenseId++,
2630
2631
  timeout: typeof timeout === "number" ? timeout : -1,
@@ -2655,20 +2656,21 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2655
2656
  move(
2656
2657
  pendingBranch,
2657
2658
  container2,
2658
- next(activeBranch),
2659
+ anchor === initialAnchor ? next(activeBranch) : anchor,
2659
2660
  0
2660
2661
  );
2661
2662
  queuePostFlushCb(effects);
2662
2663
  }
2663
2664
  };
2664
2665
  }
2665
- let { anchor: anchor2 } = suspense;
2666
2666
  if (activeBranch) {
2667
- anchor2 = next(activeBranch);
2667
+ if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {
2668
+ anchor = next(activeBranch);
2669
+ }
2668
2670
  unmount(activeBranch, parentComponent2, suspense, true);
2669
2671
  }
2670
2672
  if (!delayEnter) {
2671
- move(pendingBranch, container2, anchor2, 0);
2673
+ move(pendingBranch, container2, anchor, 0);
2672
2674
  }
2673
2675
  }
2674
2676
  setActiveBranch(suspense, pendingBranch);
@@ -5283,7 +5285,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5283
5285
  return vm;
5284
5286
  }
5285
5287
  }
5286
- Vue.version = `2.6.14-compat:${"3.4.5"}`;
5288
+ Vue.version = `2.6.14-compat:${"3.4.6"}`;
5287
5289
  Vue.config = singletonApp.config;
5288
5290
  Vue.use = (p, ...options) => {
5289
5291
  if (p && isFunction(p.install)) {
@@ -7180,7 +7182,11 @@ function baseCreateRenderer(options, createHydrationFns) {
7180
7182
  hostInsert(fragmentStartAnchor, container, anchor);
7181
7183
  hostInsert(fragmentEndAnchor, container, anchor);
7182
7184
  mountChildren(
7183
- n2.children,
7185
+ // #10007
7186
+ // such fragment like `<></>` will be compiled into
7187
+ // a fragment which doesn't have a children.
7188
+ // In this case fallback to an empty array
7189
+ n2.children || [],
7184
7190
  container,
7185
7191
  fragmentEndAnchor,
7186
7192
  parentComponent,
@@ -7962,6 +7968,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7962
7968
  }
7963
7969
  return hostNextSibling(vnode.anchor || vnode.el);
7964
7970
  };
7971
+ let isFlushing = false;
7965
7972
  const render = (vnode, container, namespace) => {
7966
7973
  if (vnode == null) {
7967
7974
  if (container._vnode) {
@@ -7978,8 +7985,12 @@ function baseCreateRenderer(options, createHydrationFns) {
7978
7985
  namespace
7979
7986
  );
7980
7987
  }
7981
- flushPreFlushCbs();
7982
- flushPostFlushCbs();
7988
+ if (!isFlushing) {
7989
+ isFlushing = true;
7990
+ flushPreFlushCbs();
7991
+ flushPostFlushCbs();
7992
+ isFlushing = false;
7993
+ }
7983
7994
  container._vnode = vnode;
7984
7995
  };
7985
7996
  const internals = {
@@ -8823,7 +8834,9 @@ function createComponentInstance(vnode, parent, suspense) {
8823
8834
  return instance;
8824
8835
  }
8825
8836
  let currentInstance = null;
8826
- const getCurrentInstance = () => currentInstance || currentRenderingInstance;
8837
+ const getCurrentInstance = () => {
8838
+ return currentInstance || currentRenderingInstance;
8839
+ };
8827
8840
  let internalSetCurrentInstance;
8828
8841
  let setInSSRSetupState;
8829
8842
  {
@@ -9083,7 +9096,7 @@ function isMemoSame(cached, memo) {
9083
9096
  return true;
9084
9097
  }
9085
9098
 
9086
- const version = "3.4.5";
9099
+ const version = "3.4.6";
9087
9100
  const warn$1 = NOOP;
9088
9101
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9089
9102
  const devtools = void 0;
@@ -1889,7 +1889,9 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
1889
1889
  }
1890
1890
  function flushPostFlushCbs(seen) {
1891
1891
  if (pendingPostFlushCbs.length) {
1892
- const deduped = [...new Set(pendingPostFlushCbs)];
1892
+ const deduped = [...new Set(pendingPostFlushCbs)].sort(
1893
+ (a, b) => getId(a) - getId(b)
1894
+ );
1893
1895
  pendingPostFlushCbs.length = 0;
1894
1896
  if (activePostFlushCbs) {
1895
1897
  activePostFlushCbs.push(...deduped);
@@ -1899,7 +1901,6 @@ function flushPostFlushCbs(seen) {
1899
1901
  {
1900
1902
  seen = seen || /* @__PURE__ */ new Map();
1901
1903
  }
1902
- activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
1903
1904
  for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
1904
1905
  if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
1905
1906
  continue;
@@ -3513,6 +3514,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3513
3514
  {
3514
3515
  assertNumber(timeout, `Suspense timeout`);
3515
3516
  }
3517
+ const initialAnchor = anchor;
3516
3518
  const suspense = {
3517
3519
  vnode,
3518
3520
  parent: parentSuspense,
@@ -3520,7 +3522,6 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3520
3522
  namespace,
3521
3523
  container,
3522
3524
  hiddenContainer,
3523
- anchor,
3524
3525
  deps: 0,
3525
3526
  pendingId: suspenseId++,
3526
3527
  timeout: typeof timeout === "number" ? timeout : -1,
@@ -3563,20 +3564,21 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3563
3564
  move(
3564
3565
  pendingBranch,
3565
3566
  container2,
3566
- next(activeBranch),
3567
+ anchor === initialAnchor ? next(activeBranch) : anchor,
3567
3568
  0
3568
3569
  );
3569
3570
  queuePostFlushCb(effects);
3570
3571
  }
3571
3572
  };
3572
3573
  }
3573
- let { anchor: anchor2 } = suspense;
3574
3574
  if (activeBranch) {
3575
- anchor2 = next(activeBranch);
3575
+ if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {
3576
+ anchor = next(activeBranch);
3577
+ }
3576
3578
  unmount(activeBranch, parentComponent2, suspense, true);
3577
3579
  }
3578
3580
  if (!delayEnter) {
3579
- move(pendingBranch, container2, anchor2, 0);
3581
+ move(pendingBranch, container2, anchor, 0);
3580
3582
  }
3581
3583
  }
3582
3584
  setActiveBranch(suspense, pendingBranch);
@@ -6524,7 +6526,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6524
6526
  return vm;
6525
6527
  }
6526
6528
  }
6527
- Vue.version = `2.6.14-compat:${"3.4.5"}`;
6529
+ Vue.version = `2.6.14-compat:${"3.4.6"}`;
6528
6530
  Vue.config = singletonApp.config;
6529
6531
  Vue.use = (p, ...options) => {
6530
6532
  if (p && isFunction(p.install)) {
@@ -8069,7 +8071,7 @@ Server rendered element contains more child nodes than client vdom.`
8069
8071
  if (props) {
8070
8072
  {
8071
8073
  for (const key in props) {
8072
- if (propHasMismatch(el, key, props[key])) {
8074
+ if (propHasMismatch(el, key, props[key], vnode)) {
8073
8075
  hasMismatch = true;
8074
8076
  }
8075
8077
  if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
@@ -8244,7 +8246,7 @@ Server rendered element contains fewer child nodes than client vdom.`
8244
8246
  };
8245
8247
  return [hydrate, hydrateNode];
8246
8248
  }
8247
- function propHasMismatch(el, key, clientValue) {
8249
+ function propHasMismatch(el, key, clientValue, vnode) {
8248
8250
  let mismatchType;
8249
8251
  let mismatchKey;
8250
8252
  let actual;
@@ -8256,14 +8258,23 @@ function propHasMismatch(el, key, clientValue) {
8256
8258
  mismatchType = mismatchKey = `class`;
8257
8259
  }
8258
8260
  } else if (key === "style") {
8259
- actual = el.getAttribute("style");
8260
- expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));
8261
- if (actual !== expected) {
8261
+ actual = toStyleMap(el.getAttribute("style") || "");
8262
+ expected = toStyleMap(
8263
+ isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue))
8264
+ );
8265
+ if (vnode.dirs) {
8266
+ for (const { dir, value } of vnode.dirs) {
8267
+ if (dir.name === "show" && !value) {
8268
+ expected.set("display", "none");
8269
+ }
8270
+ }
8271
+ }
8272
+ if (!isMapEqual(actual, expected)) {
8262
8273
  mismatchType = mismatchKey = "style";
8263
8274
  }
8264
8275
  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
8265
- actual = el.hasAttribute(key) && el.getAttribute(key);
8266
- expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? false : String(clientValue);
8276
+ actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8277
+ expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? "" : String(clientValue);
8267
8278
  if (actual !== expected) {
8268
8279
  mismatchType = `attribute`;
8269
8280
  mismatchKey = key;
@@ -8298,6 +8309,29 @@ function isSetEqual(a, b) {
8298
8309
  }
8299
8310
  return true;
8300
8311
  }
8312
+ function toStyleMap(str) {
8313
+ const styleMap = /* @__PURE__ */ new Map();
8314
+ for (const item of str.split(";")) {
8315
+ let [key, value] = item.split(":");
8316
+ key = key == null ? void 0 : key.trim();
8317
+ value = value == null ? void 0 : value.trim();
8318
+ if (key && value) {
8319
+ styleMap.set(key, value);
8320
+ }
8321
+ }
8322
+ return styleMap;
8323
+ }
8324
+ function isMapEqual(a, b) {
8325
+ if (a.size !== b.size) {
8326
+ return false;
8327
+ }
8328
+ for (const [key, value] of a) {
8329
+ if (value !== b.get(key)) {
8330
+ return false;
8331
+ }
8332
+ }
8333
+ return true;
8334
+ }
8301
8335
 
8302
8336
  let supported;
8303
8337
  let perf;
@@ -8886,7 +8920,11 @@ function baseCreateRenderer(options, createHydrationFns) {
8886
8920
  hostInsert(fragmentStartAnchor, container, anchor);
8887
8921
  hostInsert(fragmentEndAnchor, container, anchor);
8888
8922
  mountChildren(
8889
- n2.children,
8923
+ // #10007
8924
+ // such fragment like `<></>` will be compiled into
8925
+ // a fragment which doesn't have a children.
8926
+ // In this case fallback to an empty array
8927
+ n2.children || [],
8890
8928
  container,
8891
8929
  fragmentEndAnchor,
8892
8930
  parentComponent,
@@ -9754,6 +9792,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9754
9792
  }
9755
9793
  return hostNextSibling(vnode.anchor || vnode.el);
9756
9794
  };
9795
+ let isFlushing = false;
9757
9796
  const render = (vnode, container, namespace) => {
9758
9797
  if (vnode == null) {
9759
9798
  if (container._vnode) {
@@ -9770,8 +9809,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9770
9809
  namespace
9771
9810
  );
9772
9811
  }
9773
- flushPreFlushCbs();
9774
- flushPostFlushCbs();
9812
+ if (!isFlushing) {
9813
+ isFlushing = true;
9814
+ flushPreFlushCbs();
9815
+ flushPostFlushCbs();
9816
+ isFlushing = false;
9817
+ }
9775
9818
  container._vnode = vnode;
9776
9819
  };
9777
9820
  const internals = {
@@ -10675,7 +10718,14 @@ function createComponentInstance(vnode, parent, suspense) {
10675
10718
  return instance;
10676
10719
  }
10677
10720
  let currentInstance = null;
10678
- const getCurrentInstance = () => currentInstance || currentRenderingInstance;
10721
+ const getCurrentInstance = () => {
10722
+ if (isInComputedGetter) {
10723
+ warn$1(
10724
+ `getCurrentInstance() called inside a computed getter. This is incorrect usage as computed getters are not guaranteed to be executed with an active component instance. If you are using a composable inside a computed getter, move it ouside to the setup scope.`
10725
+ );
10726
+ }
10727
+ return currentInstance || currentRenderingInstance;
10728
+ };
10679
10729
  let internalSetCurrentInstance;
10680
10730
  let setInSSRSetupState;
10681
10731
  {
@@ -11001,7 +11051,25 @@ function isClassComponent(value) {
11001
11051
  return isFunction(value) && "__vccOpts" in value;
11002
11052
  }
11003
11053
 
11054
+ let isInComputedGetter = false;
11055
+ function wrapComputedGetter(getter) {
11056
+ return () => {
11057
+ isInComputedGetter = true;
11058
+ try {
11059
+ return getter();
11060
+ } finally {
11061
+ isInComputedGetter = false;
11062
+ }
11063
+ };
11064
+ }
11004
11065
  const computed = (getterOrOptions, debugOptions) => {
11066
+ {
11067
+ if (isFunction(getterOrOptions)) {
11068
+ getterOrOptions = wrapComputedGetter(getterOrOptions);
11069
+ } else {
11070
+ getterOrOptions.get = wrapComputedGetter(getterOrOptions.get);
11071
+ }
11072
+ }
11005
11073
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
11006
11074
  };
11007
11075
 
@@ -11227,7 +11295,7 @@ function isMemoSame(cached, memo) {
11227
11295
  return true;
11228
11296
  }
11229
11297
 
11230
- const version = "3.4.5";
11298
+ const version = "3.4.6";
11231
11299
  const warn = warn$1 ;
11232
11300
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11233
11301
  const devtools = devtools$1 ;
@@ -11668,6 +11736,9 @@ const vShow = {
11668
11736
  setDisplay(el, value);
11669
11737
  }
11670
11738
  };
11739
+ {
11740
+ vShow.name = "show";
11741
+ }
11671
11742
  function setDisplay(el, value) {
11672
11743
  el.style.display = value ? el[vShowOldKey] : "none";
11673
11744
  }