@vue/compat 3.5.42 → 3.5.44

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.42
2
+ * @vue/compat v3.5.44
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -128,10 +128,10 @@ function normalizeStyle(value) {
128
128
  }
129
129
  const listDelimiterRE = /;(?![^(]*\))/g;
130
130
  const propertyDelimiterRE = /:([^]+)/;
131
- const styleCommentRE = /\/\*[^]*?\*\//g;
131
+ const styleCommentRE = /"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;
132
132
  function parseStringStyle(cssText) {
133
133
  const ret = {};
134
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
134
+ cssText.replace(styleCommentRE, (match) => match.startsWith("/*") ? "" : match).split(listDelimiterRE).forEach((item) => {
135
135
  if (item) {
136
136
  const tmp = item.split(propertyDelimiterRE);
137
137
  tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
@@ -191,7 +191,7 @@ const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
191
191
  const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
192
192
  const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
193
193
 
194
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
194
+ const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`;
195
195
  const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
196
196
  const isBooleanAttr = /* @__PURE__ */ makeMap(
197
197
  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
@@ -221,22 +221,22 @@ function getEscapedCssVarName(key, doubleEscape) {
221
221
  );
222
222
  }
223
223
 
224
- function looseCompareArrays(a, b) {
224
+ function looseCompareArrays(a, b, seen) {
225
225
  if (a.length !== b.length) return false;
226
226
  let equal = true;
227
227
  for (let i = 0; equal && i < a.length; i++) {
228
- equal = looseEqual(a[i], b[i]);
228
+ equal = looseEqual(a[i], b[i], seen);
229
229
  }
230
230
  return equal;
231
231
  }
232
- function looseCompareCollections(a, b) {
232
+ function looseCompareCollections(a, b, seen) {
233
233
  if (a.size !== b.size) return false;
234
234
  const candidates = Array.from(b);
235
235
  const matched = new Uint8Array(candidates.length);
236
236
  for (const item of a) {
237
237
  let index = -1;
238
238
  for (let i = 0; i < candidates.length; i++) {
239
- if (!matched[i] && looseEqual(item, candidates[i])) {
239
+ if (!matched[i] && looseEqual(item, candidates[i], seen)) {
240
240
  index = i;
241
241
  break;
242
242
  }
@@ -246,7 +246,47 @@ function looseCompareCollections(a, b) {
246
246
  }
247
247
  return true;
248
248
  }
249
- function looseEqual(a, b) {
249
+ function looseCompareObjects(a, b, seen) {
250
+ let aValidType = isMap(a);
251
+ let bValidType = isMap(b);
252
+ if (aValidType || bValidType) {
253
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
254
+ }
255
+ aValidType = isSet(a);
256
+ bValidType = isSet(b);
257
+ if (aValidType || bValidType) {
258
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
259
+ }
260
+ const aKeysCount = Object.keys(a).length;
261
+ const bKeysCount = Object.keys(b).length;
262
+ if (aKeysCount !== bKeysCount) {
263
+ return false;
264
+ }
265
+ for (const key in a) {
266
+ const aHasKey = a.hasOwnProperty(key);
267
+ const bHasKey = b.hasOwnProperty(key);
268
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key], seen)) {
269
+ return false;
270
+ }
271
+ }
272
+ return String(a) === String(b);
273
+ }
274
+ function looseCompareNested(a, b, seen, compare) {
275
+ if (!seen) {
276
+ seen = [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map()];
277
+ }
278
+ const [seenA, seenB] = seen;
279
+ if (seenA.has(a) || seenB.has(b)) {
280
+ return seenA.get(a) === b && seenB.get(b) === a;
281
+ }
282
+ seenA.set(a, b);
283
+ seenB.set(b, a);
284
+ const equal = compare(a, b, seen);
285
+ seenA.delete(a);
286
+ seenB.delete(b);
287
+ return equal;
288
+ }
289
+ function looseEqual(a, b, seen) {
250
290
  if (a === b) return true;
251
291
  let aValidType = isDate(a);
252
292
  let bValidType = isDate(b);
@@ -261,7 +301,7 @@ function looseEqual(a, b) {
261
301
  aValidType = isArray(a);
262
302
  bValidType = isArray(b);
263
303
  if (aValidType || bValidType) {
264
- return aValidType && bValidType ? looseCompareArrays(a, b) : false;
304
+ return aValidType && bValidType ? looseCompareNested(a, b, seen, looseCompareArrays) : false;
265
305
  }
266
306
  aValidType = isObject(a);
267
307
  bValidType = isObject(b);
@@ -269,28 +309,7 @@ function looseEqual(a, b) {
269
309
  if (!aValidType || !bValidType) {
270
310
  return false;
271
311
  }
272
- aValidType = isMap(a);
273
- bValidType = isMap(b);
274
- if (aValidType || bValidType) {
275
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
276
- }
277
- aValidType = isSet(a);
278
- bValidType = isSet(b);
279
- if (aValidType || bValidType) {
280
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
281
- }
282
- const aKeysCount = Object.keys(a).length;
283
- const bKeysCount = Object.keys(b).length;
284
- if (aKeysCount !== bKeysCount) {
285
- return false;
286
- }
287
- for (const key in a) {
288
- const aHasKey = a.hasOwnProperty(key);
289
- const bHasKey = b.hasOwnProperty(key);
290
- if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
291
- return false;
292
- }
293
- }
312
+ return looseCompareNested(a, b, seen, looseCompareObjects);
294
313
  }
295
314
  return String(a) === String(b);
296
315
  }
@@ -1095,7 +1114,9 @@ function reactiveReadArray(array) {
1095
1114
  const raw = toRaw(array);
1096
1115
  if (raw === array) return raw;
1097
1116
  track(raw, "iterate", ARRAY_ITERATE_KEY);
1098
- return isShallow(array) ? raw : raw.map(toReactive);
1117
+ if (isShallow(array)) return raw;
1118
+ if (!isReadonly(array)) return raw.map(toReactive);
1119
+ return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly);
1099
1120
  }
1100
1121
  function shallowReadArray(arr) {
1101
1122
  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
@@ -1222,19 +1243,41 @@ const arrayInstrumentations = {
1222
1243
  };
1223
1244
  function iterator(self, method, wrapValue) {
1224
1245
  const arr = shallowReadArray(self);
1225
- const iter = arr[method]();
1246
+ const methodFn = arr[method];
1247
+ const iter = methodFn.call(arr);
1226
1248
  if (arr !== self && !isShallow(self)) {
1227
- iter._next = iter.next;
1228
- iter.next = () => {
1229
- const result = iter._next();
1230
- if (!result.done) {
1231
- result.value = wrapValue(result.value);
1249
+ if (iter[Symbol.toStringTag] === "Array Iterator") {
1250
+ const wrapped = Object.create(Object.getPrototypeOf(iter));
1251
+ wrapped.next = () => wrapResult(iter.next(), wrapValue);
1252
+ if (methodFn !== arrayProto[method]) {
1253
+ Object.defineProperties(wrapped, {
1254
+ return: {
1255
+ get() {
1256
+ const fn = iter.return;
1257
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1258
+ }
1259
+ },
1260
+ throw: {
1261
+ get() {
1262
+ const fn = iter.throw;
1263
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1264
+ }
1265
+ }
1266
+ });
1232
1267
  }
1233
- return result;
1234
- };
1268
+ return wrapped;
1269
+ }
1270
+ iter._next = iter.next;
1271
+ iter.next = () => wrapResult(iter._next(), wrapValue);
1235
1272
  }
1236
1273
  return iter;
1237
1274
  }
1275
+ function wrapResult(result, wrapValue) {
1276
+ if (!result.done) {
1277
+ result.value = wrapValue(result.value);
1278
+ }
1279
+ return result;
1280
+ }
1238
1281
  const arrayProto = Array.prototype;
1239
1282
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1240
1283
  const arr = shallowReadArray(self);
@@ -1657,6 +1700,8 @@ function createInstrumentationGetter(isReadonly2, shallow) {
1657
1700
  return !isReadonly2;
1658
1701
  } else if (key === "__v_isReadonly") {
1659
1702
  return isReadonly2;
1703
+ } else if (key === "__v_isShallow") {
1704
+ return shallow;
1660
1705
  } else if (key === "__v_raw") {
1661
1706
  return target;
1662
1707
  }
@@ -2208,9 +2253,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2208
2253
  if (once && cb) {
2209
2254
  const _cb = cb;
2210
2255
  cb = (...args) => {
2211
- const res = _cb(...args);
2212
- watchHandle();
2213
- return res;
2256
+ try {
2257
+ return _cb(...args);
2258
+ } finally {
2259
+ watchHandle();
2260
+ }
2214
2261
  };
2215
2262
  }
2216
2263
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -2221,12 +2268,13 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2221
2268
  if (cb) {
2222
2269
  const newValue = effect.run();
2223
2270
  if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2224
- if (cleanup) {
2225
- cleanup();
2226
- }
2227
2271
  const currentWatcher = activeWatcher;
2228
- activeWatcher = effect;
2272
+ pauseTracking();
2229
2273
  try {
2274
+ if (cleanup) {
2275
+ cleanup();
2276
+ }
2277
+ activeWatcher = effect;
2230
2278
  const args = [
2231
2279
  newValue,
2232
2280
  // pass undefined as the old value when it's changed for the first time
@@ -2240,6 +2288,7 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2240
2288
  );
2241
2289
  } finally {
2242
2290
  activeWatcher = currentWatcher;
2291
+ resetTracking();
2243
2292
  }
2244
2293
  }
2245
2294
  } else {
@@ -2645,21 +2694,21 @@ function queuePostFlushCb(cb) {
2645
2694
  }
2646
2695
  queueFlush();
2647
2696
  }
2648
- function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2697
+ function flushPreFlushCbs(instance, minUid, seen, i = flushIndex + 1) {
2649
2698
  if (!!(process.env.NODE_ENV !== "production")) {
2650
2699
  seen = seen || /* @__PURE__ */ new Map();
2651
2700
  }
2652
2701
  for (; i < queue.length; i++) {
2653
2702
  const cb = queue[i];
2654
2703
  if (cb && cb.flags & 2) {
2655
- if (instance && cb.id !== instance.uid) {
2704
+ if (instance && cb.id !== instance.uid || minUid !== void 0 && !(cb.id >= minUid)) {
2656
2705
  continue;
2657
2706
  }
2658
2707
  if (!!(process.env.NODE_ENV !== "production") && checkRecursiveUpdates(seen, cb)) {
2659
2708
  continue;
2660
2709
  }
2661
2710
  queue.splice(i, 1);
2662
- i--;
2711
+ i = instance ? i - 1 : flushIndex;
2663
2712
  if (cb.flags & 4) {
2664
2713
  cb.flags &= -2;
2665
2714
  }
@@ -2670,12 +2719,23 @@ function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2670
2719
  }
2671
2720
  }
2672
2721
  }
2673
- function flushPostFlushCbs(seen) {
2722
+ function flushPostFlushCbs(seen, skip, minUid = 0) {
2674
2723
  if (pendingPostFlushCbs.length) {
2675
- const deduped = [...new Set(pendingPostFlushCbs)].sort(
2676
- (a, b) => getId(a) - getId(b)
2677
- );
2678
- pendingPostFlushCbs.length = 0;
2724
+ let cbs = pendingPostFlushCbs;
2725
+ let kept = 0;
2726
+ if (skip) {
2727
+ cbs = [];
2728
+ for (let i = 0; i < pendingPostFlushCbs.length; i++) {
2729
+ const cb = pendingPostFlushCbs[i];
2730
+ if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) {
2731
+ pendingPostFlushCbs[kept++] = cb;
2732
+ } else {
2733
+ cbs.push(cb);
2734
+ }
2735
+ }
2736
+ }
2737
+ const deduped = [...new Set(cbs)].sort((a, b) => getId(a) - getId(b));
2738
+ pendingPostFlushCbs.length = kept;
2679
2739
  if (activePostFlushCbs) {
2680
2740
  for (let i = 0; i < deduped.length; i++) {
2681
2741
  activePostFlushCbs.push(deduped[i]);
@@ -2701,6 +2761,22 @@ function flushPostFlushCbs(seen) {
2701
2761
  postFlushIndex = 0;
2702
2762
  }
2703
2763
  }
2764
+ let isFlushing = false;
2765
+ function flushOnAppMount(fn, minUid) {
2766
+ if (isFlushing) {
2767
+ fn();
2768
+ return;
2769
+ }
2770
+ const queued = minUid === void 0 ? void 0 : new Set(pendingPostFlushCbs);
2771
+ fn();
2772
+ isFlushing = true;
2773
+ try {
2774
+ flushPreFlushCbs(void 0, minUid);
2775
+ flushPostFlushCbs(void 0, queued, minUid);
2776
+ } finally {
2777
+ isFlushing = false;
2778
+ }
2779
+ }
2704
2780
  const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
2705
2781
  function flushJobs(seen) {
2706
2782
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -3674,6 +3750,7 @@ function doWatch(source, cb, options = EMPTY_OBJ) {
3674
3750
  let isPre = false;
3675
3751
  if (flush === "post") {
3676
3752
  baseWatchOptions.scheduler = (job) => {
3753
+ job.i = instance;
3677
3754
  queuePostRenderEffect(job, instance && instance.suspense);
3678
3755
  };
3679
3756
  } else if (flush !== "sync") {
@@ -3975,7 +4052,11 @@ const TeleportImpl = {
3975
4052
  };
3976
4053
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
3977
4054
  if (moveType === 0) {
4055
+ if (vnode.targetStart) {
4056
+ insert(vnode.targetStart, container, parentAnchor);
4057
+ }
3978
4058
  insert(vnode.targetAnchor, container, parentAnchor);
4059
+ parentAnchor = vnode.targetAnchor;
3979
4060
  }
3980
4061
  const { el, anchor, shapeFlag, children, props } = vnode;
3981
4062
  const isReorder = moveType === 2;
@@ -4144,10 +4225,6 @@ const BaseTransitionPropsValidators = {
4144
4225
  onAfterAppear: TransitionHookValidator,
4145
4226
  onAppearCancelled: TransitionHookValidator
4146
4227
  };
4147
- const recursiveGetSubtree = (instance) => {
4148
- const subTree = instance.subTree;
4149
- return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
4150
- };
4151
4228
  const BaseTransitionImpl = {
4152
4229
  name: `BaseTransition`,
4153
4230
  props: BaseTransitionPropsValidators,
@@ -4188,7 +4265,7 @@ const BaseTransitionImpl = {
4188
4265
  setTransitionHooks(innerChild, enterHooks);
4189
4266
  }
4190
4267
  let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
4191
- if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
4268
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && getTransitionRoot(instance.subTree)) {
4192
4269
  let leavingHooks = resolveTransitionHooks(
4193
4270
  oldInnerChild,
4194
4271
  rawProps,
@@ -4325,8 +4402,15 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4325
4402
  );
4326
4403
  }
4327
4404
  const leavingVNode = leavingVNodesCache[key];
4328
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
4329
- leavingVNode.el[leaveCbKey]();
4405
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
4406
+ let leavingCb = leavingVNode.el[leaveCbKey];
4407
+ if (!leavingCb) {
4408
+ const leavingRoot = getTransitionRoot(leavingVNode);
4409
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
4410
+ }
4411
+ if (leavingCb) {
4412
+ leavingCb();
4413
+ }
4330
4414
  }
4331
4415
  callHook(hook, [el]);
4332
4416
  },
@@ -4454,6 +4538,12 @@ function setTransitionHooks(vnode, hooks) {
4454
4538
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
4455
4539
  } else {
4456
4540
  vnode.transition = hooks;
4541
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4542
+ const child = filterSingleRoot(vnode.children, false);
4543
+ if (child) {
4544
+ setTransitionHooks(child, hooks);
4545
+ }
4546
+ }
4457
4547
  }
4458
4548
  }
4459
4549
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -4478,6 +4568,18 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
4478
4568
  }
4479
4569
  return ret;
4480
4570
  }
4571
+ function getTransitionRoot(vnode) {
4572
+ if (vnode.component) {
4573
+ return getTransitionRoot(vnode.component.subTree);
4574
+ }
4575
+ if (vnode.type === Fragment) {
4576
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4577
+ return child ? getTransitionRoot(child) : void 0;
4578
+ }
4579
+ if (vnode.type !== Comment) {
4580
+ return vnode;
4581
+ }
4582
+ }
4481
4583
 
4482
4584
  // @__NO_SIDE_EFFECTS__
4483
4585
  function defineComponent(options, extraOptions) {
@@ -4851,13 +4953,15 @@ function createHydrationFunctions(rendererInternals) {
4851
4953
  getContainerType(container),
4852
4954
  optimized
4853
4955
  );
4854
- if (isAsyncWrapper(vnode) && !vnode.component.subTree) {
4956
+ if ((isAsyncWrapper(vnode) || vnode.component.asyncDep) && !vnode.component.subTree) {
4855
4957
  let subTree;
4856
4958
  if (isFragmentStart) {
4857
4959
  subTree = createVNode(Static);
4858
4960
  subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
4859
4961
  } else {
4860
- subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
4962
+ subTree = node.nodeType === 3 ? createTextVNode("") : createVNode(
4963
+ node.nodeType === 8 ? Comment : "div"
4964
+ );
4861
4965
  }
4862
4966
  subTree.el = node;
4863
4967
  vnode.component.subTree = subTree;
@@ -5393,14 +5497,22 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
5393
5497
  break;
5394
5498
  }
5395
5499
  }, opts);
5396
- forEach((el) => {
5397
- if (!(el instanceof Element)) return;
5500
+ const observe = (el) => {
5398
5501
  if (elementIsVisibleInViewport(el)) {
5399
5502
  hydrate();
5400
5503
  ob.disconnect();
5401
5504
  return false;
5402
5505
  }
5506
+ if (getComputedStyle(el).display === "contents") {
5507
+ for (let i = 0; i < el.children.length; i++) {
5508
+ if (observe(el.children[i]) === false) return false;
5509
+ }
5510
+ }
5403
5511
  ob.observe(el);
5512
+ };
5513
+ forEach((el) => {
5514
+ if (!(el instanceof Element)) return;
5515
+ return observe(el);
5404
5516
  });
5405
5517
  return () => ob.disconnect();
5406
5518
  };
@@ -5757,6 +5869,7 @@ const KeepAliveImpl = {
5757
5869
  unmount(cached);
5758
5870
  } else if (current) {
5759
5871
  resetShapeFlag(current);
5872
+ if (cached) resetShapeFlag(cached);
5760
5873
  }
5761
5874
  cache.delete(key);
5762
5875
  keys.delete(key);
@@ -6338,10 +6451,12 @@ function renderList(source, renderItem, cache, index) {
6338
6451
  );
6339
6452
  }
6340
6453
  } else if (typeof source === "number") {
6341
- if (!!(process.env.NODE_ENV !== "production") && (!Number.isInteger(source) || source < 0)) {
6342
- warn$1(
6343
- `The v-for range expects a positive integer value but got ${source}.`
6344
- );
6454
+ if (!Number.isInteger(source) || source < 0) {
6455
+ if (!!(process.env.NODE_ENV !== "production")) {
6456
+ warn$1(
6457
+ `The v-for range expects a positive integer value but got ${source}.`
6458
+ );
6459
+ }
6345
6460
  ret = [];
6346
6461
  } else {
6347
6462
  ret = new Array(source);
@@ -6660,6 +6775,7 @@ function installCompatInstanceProperties(map) {
6660
6775
  $vnode: (i) => i.vnode,
6661
6776
  // some private properties that are likely accessed...
6662
6777
  _self: (i) => i.proxy,
6778
+ _setupProxy: (i) => i.setupState,
6663
6779
  _uid: (i) => i.uid,
6664
6780
  _data: (i) => i.data,
6665
6781
  _isMounted: (i) => i.isMounted,
@@ -7649,7 +7765,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7649
7765
  return vm;
7650
7766
  }
7651
7767
  }
7652
- Vue.version = `2.6.14-compat:${"3.5.42"}`;
7768
+ Vue.version = `2.6.14-compat:${"3.5.44"}`;
7653
7769
  Vue.config = singletonApp.config;
7654
7770
  Vue.use = (plugin, ...options) => {
7655
7771
  if (plugin && isFunction(plugin.install)) {
@@ -8808,7 +8924,7 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8808
8924
  }
8809
8925
  for (let i = 0; i < nextKeys.length; i++) {
8810
8926
  const key = nextKeys[i];
8811
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8927
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8812
8928
  return true;
8813
8929
  }
8814
8930
  }
@@ -9534,6 +9650,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9534
9650
  optimized = false;
9535
9651
  n2.dynamicChildren = null;
9536
9652
  }
9653
+ if (n2.dynamicChildren && n1 && n1.dynamicChildren && n1.dynamicChildren.hasOnce) {
9654
+ if (n2.dynamicChildren === EMPTY_ARR) {
9655
+ n2.dynamicChildren = [];
9656
+ }
9657
+ n2.dynamicChildren.hasOnce = true;
9658
+ }
9537
9659
  const { type, ref, shapeFlag } = n2;
9538
9660
  switch (type) {
9539
9661
  case Text:
@@ -9940,15 +10062,16 @@ function baseCreateRenderer(options, createHydrationFns) {
9940
10062
  for (let i = 0; i < newChildren.length; i++) {
9941
10063
  const oldVNode = oldChildren[i];
9942
10064
  const newVNode = newChildren[i];
10065
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
9943
10066
  const container = (
9944
10067
  // oldVNode may be an errored async setup() component inside Suspense
9945
10068
  // which will not have a mounted element
9946
- oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
10069
+ oldEl && // - In the case of a Fragment, we need to provide the actual parent
9947
10070
  // of the Fragment itself so it can move its children.
9948
10071
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
9949
10072
  // which also requires the correct parent container
9950
10073
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
9951
- oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
10074
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldEl) : (
9952
10075
  // In other cases, the parent container is not actually used so we
9953
10076
  // just pass the block element here to avoid a DOM parentNode call.
9954
10077
  fallbackContainer
@@ -10124,7 +10247,12 @@ function baseCreateRenderer(options, createHydrationFns) {
10124
10247
  }
10125
10248
  if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) initialVNode.el = null;
10126
10249
  if (instance.asyncDep) {
10127
- parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
10250
+ parentSuspense && parentSuspense.registerDep(
10251
+ instance,
10252
+ setupRenderEffect,
10253
+ optimized,
10254
+ namespace
10255
+ );
10128
10256
  if (!initialVNode.el) {
10129
10257
  const placeholder = instance.subTree = createVNode(Comment);
10130
10258
  processCommentNode(null, placeholder, container, anchor);
@@ -10153,6 +10281,8 @@ function baseCreateRenderer(options, createHydrationFns) {
10153
10281
  if (!!(process.env.NODE_ENV !== "production")) {
10154
10282
  pushWarningContext(n2);
10155
10283
  }
10284
+ n2.el = n1.el;
10285
+ n2.placeholder = n1.placeholder;
10156
10286
  updateComponentPreRender(instance, n2, optimized);
10157
10287
  if (!!(process.env.NODE_ENV !== "production")) {
10158
10288
  popWarningContext();
@@ -10164,6 +10294,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10164
10294
  }
10165
10295
  } else {
10166
10296
  n2.el = n1.el;
10297
+ n2.placeholder = n1.placeholder;
10167
10298
  instance.vnode = n2;
10168
10299
  }
10169
10300
  };
@@ -10768,7 +10899,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10768
10899
  cacheIndex,
10769
10900
  memo
10770
10901
  } = vnode;
10771
- if (patchFlag === -2) {
10902
+ if (patchFlag === -2 || dynamicChildren && dynamicChildren.hasOnce) {
10772
10903
  optimized = false;
10773
10904
  }
10774
10905
  if (ref != null) {
@@ -10776,7 +10907,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10776
10907
  setRef(ref, null, parentSuspense, vnode, true);
10777
10908
  resetTracking();
10778
10909
  }
10779
- if (cacheIndex != null) {
10910
+ if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) {
10780
10911
  parentComponent.renderCache[cacheIndex] = void 0;
10781
10912
  }
10782
10913
  if (shapeFlag & 256) {
@@ -10841,35 +10972,37 @@ function baseCreateRenderer(options, createHydrationFns) {
10841
10972
  };
10842
10973
  const remove = (vnode) => {
10843
10974
  const { type, el, anchor, transition } = vnode;
10844
- if (type === Fragment) {
10845
- if (!!(process.env.NODE_ENV !== "production") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {
10846
- vnode.children.forEach((child) => {
10847
- if (child.type === Comment) {
10848
- hostRemove(child.el);
10849
- } else {
10850
- remove(child);
10851
- }
10852
- });
10853
- } else {
10854
- removeFragment(el, anchor);
10855
- }
10975
+ const isFragment = type === Fragment;
10976
+ if (isFragment && !transition) {
10977
+ removeFragment(el, anchor);
10856
10978
  return;
10857
10979
  }
10858
10980
  if (type === Static) {
10859
10981
  removeStaticNode(vnode);
10982
+ if (transition && !transition.persisted && transition.afterLeave) {
10983
+ transition.afterLeave();
10984
+ }
10860
10985
  return;
10861
10986
  }
10987
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
10862
10988
  const performRemove = () => {
10863
- hostRemove(el);
10989
+ if (isFragment) {
10990
+ if (hostParentNode(el)) {
10991
+ removeFragment(el, anchor);
10992
+ }
10993
+ } else {
10994
+ hostRemove(el);
10995
+ }
10864
10996
  if (transition && !transition.persisted && transition.afterLeave) {
10865
10997
  transition.afterLeave();
10866
10998
  }
10867
10999
  };
10868
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
11000
+ if (leavingNode && leavingNode.shapeFlag & 1 && transition && !transition.persisted) {
10869
11001
  const { leave, delayLeave } = transition;
10870
- const performLeave = () => leave(el, performRemove);
11002
+ const leavingEl = leavingNode.el;
11003
+ const performLeave = () => leave(leavingEl, performRemove);
10871
11004
  if (delayLeave) {
10872
- delayLeave(vnode.el, performRemove, performLeave);
11005
+ delayLeave(leavingEl, performRemove, performLeave);
10873
11006
  } else {
10874
11007
  performLeave();
10875
11008
  }
@@ -10903,6 +11036,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10903
11036
  if (job) {
10904
11037
  job.flags |= 8;
10905
11038
  unmount(subTree, instance, parentSuspense, doRemove);
11039
+ } else if (instance.vnode.el && subTree) {
11040
+ subTree.transition = instance.vnode.transition;
11041
+ unmount(subTree, instance, parentSuspense, doRemove);
10906
11042
  }
10907
11043
  if (um) {
10908
11044
  queuePostRenderEffect(um, parentSuspense);
@@ -10936,32 +11072,26 @@ function baseCreateRenderer(options, createHydrationFns) {
10936
11072
  const teleportEnd = el && el[TeleportEndKey];
10937
11073
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
10938
11074
  };
10939
- let isFlushing = false;
10940
11075
  const render = (vnode, container, namespace) => {
10941
- let instance;
10942
- if (vnode == null) {
10943
- if (container._vnode) {
10944
- unmount(container._vnode, null, null, true);
10945
- instance = container._vnode.component;
11076
+ const minUid = vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid();
11077
+ flushOnAppMount(() => {
11078
+ if (vnode == null) {
11079
+ if (container._vnode) {
11080
+ unmount(container._vnode, null, null, true);
11081
+ }
11082
+ } else {
11083
+ patch(
11084
+ container._vnode || null,
11085
+ vnode,
11086
+ container,
11087
+ null,
11088
+ null,
11089
+ null,
11090
+ namespace
11091
+ );
10946
11092
  }
10947
- } else {
10948
- patch(
10949
- container._vnode || null,
10950
- vnode,
10951
- container,
10952
- null,
10953
- null,
10954
- null,
10955
- namespace
10956
- );
10957
- }
10958
- container._vnode = vnode;
10959
- if (!isFlushing) {
10960
- isFlushing = true;
10961
- flushPreFlushCbs(instance);
10962
- flushPostFlushCbs();
10963
- isFlushing = false;
10964
- }
11093
+ container._vnode = vnode;
11094
+ }, minUid);
10965
11095
  };
10966
11096
  const internals = {
10967
11097
  p: patch,
@@ -11123,7 +11253,7 @@ const SuspenseImpl = {
11123
11253
  rendererInternals
11124
11254
  );
11125
11255
  } else {
11126
- if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
11256
+ if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) {
11127
11257
  n2.suspense = n1.suspense;
11128
11258
  n2.suspense.vnode = n2;
11129
11259
  n2.el = n1.el;
@@ -11209,10 +11339,12 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11209
11339
  if (pendingBranch) {
11210
11340
  suspense.pendingBranch = newBranch;
11211
11341
  if (isSameVNodeType(pendingBranch, newBranch)) {
11342
+ suspense.deps++;
11212
11343
  patch(
11213
11344
  pendingBranch,
11214
11345
  newBranch,
11215
- suspense.hiddenContainer,
11346
+ // a hydrating pending branch is adopted SSR DOM, already in place
11347
+ isHydrating ? container : suspense.hiddenContainer,
11216
11348
  null,
11217
11349
  parentComponent,
11218
11350
  suspense,
@@ -11220,6 +11352,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11220
11352
  slotScopeIds,
11221
11353
  optimized
11222
11354
  );
11355
+ suspense.deps--;
11223
11356
  if (suspense.deps <= 0) {
11224
11357
  suspense.resolve();
11225
11358
  } else if (isInFallback) {
@@ -11485,6 +11618,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11485
11618
  suspense.effects = [];
11486
11619
  if (isSuspensible) {
11487
11620
  if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
11621
+ parentSuspenseId = void 0;
11488
11622
  parentSuspense.deps--;
11489
11623
  if (parentSuspense.deps === 0 && !sync) {
11490
11624
  parentSuspense.resolve();
@@ -11545,7 +11679,10 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11545
11679
  next() {
11546
11680
  return suspense.activeBranch && next(suspense.activeBranch);
11547
11681
  },
11548
- registerDep(instance, setupRenderEffect, optimized2) {
11682
+ // `namespace` intentionally shadows the boundary's own: the dep must be
11683
+ // mounted with the namespace of the position it was rendered at, which can
11684
+ // differ from the boundary's (e.g. a component nested inside an <svg>).
11685
+ registerDep(instance, setupRenderEffect, optimized2, namespace2) {
11549
11686
  const isInPendingSuspense = !!suspense.pendingBranch;
11550
11687
  if (isInPendingSuspense) {
11551
11688
  suspense.deps++;
@@ -11558,6 +11695,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11558
11695
  return;
11559
11696
  }
11560
11697
  unsetCurrentInstance();
11698
+ if (!instance.scope.active) {
11699
+ if (isInPendingSuspense && --suspense.deps === 0) {
11700
+ suspense.resolve();
11701
+ }
11702
+ return;
11703
+ }
11561
11704
  instance.asyncResolved = true;
11562
11705
  const { vnode: vnode2 } = instance;
11563
11706
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -11579,7 +11722,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11579
11722
  // consider the comment placeholder case.
11580
11723
  hydratedEl ? null : next(instance.subTree),
11581
11724
  suspense,
11582
- namespace,
11725
+ namespace2,
11583
11726
  optimized2
11584
11727
  );
11585
11728
  if (placeholder) {
@@ -12043,7 +12186,8 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
12043
12186
  el: vnode.el,
12044
12187
  anchor: vnode.anchor,
12045
12188
  ctx: vnode.ctx,
12046
- ce: vnode.ce
12189
+ ce: vnode.ce,
12190
+ cacheIndex: vnode.cacheIndex
12047
12191
  };
12048
12192
  if (transition && cloneTransition) {
12049
12193
  setTransitionHooks(
@@ -12179,6 +12323,9 @@ function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
12179
12323
 
12180
12324
  const emptyAppContext = createAppContext();
12181
12325
  let uid = 0;
12326
+ function getNextUid() {
12327
+ return uid;
12328
+ }
12182
12329
  function createComponentInstance(vnode, parent, suspense) {
12183
12330
  const type = vnode.type;
12184
12331
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -12877,7 +13024,7 @@ function isMemoSame(cached, memo) {
12877
13024
  return true;
12878
13025
  }
12879
13026
 
12880
- const version = "3.5.42";
13027
+ const version = "3.5.44";
12881
13028
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12882
13029
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12883
13030
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -13497,7 +13644,9 @@ function patchStyle(el, prev, next) {
13497
13644
  }
13498
13645
  }
13499
13646
  if (vShowOriginalDisplay in el) {
13500
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
13647
+ if (!isCssString || prev !== next) {
13648
+ el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
13649
+ }
13501
13650
  if (el[vShowHidden]) {
13502
13651
  style.display = "none";
13503
13652
  }
@@ -14023,7 +14172,9 @@ class VueElement extends BaseClass {
14023
14172
  "Custom element style injection is not supported when using shadowRoot: false"
14024
14173
  );
14025
14174
  }
14026
- this._mount(def);
14175
+ if (this._connected) {
14176
+ this._mount(def);
14177
+ }
14027
14178
  };
14028
14179
  const asyncDef = this._def.__asyncLoader;
14029
14180
  if (asyncDef) {
@@ -14393,6 +14544,7 @@ const positionMap = /* @__PURE__ */ new WeakMap();
14393
14544
  const newPositionMap = /* @__PURE__ */ new WeakMap();
14394
14545
  const moveCbKey = /* @__PURE__ */ Symbol("_moveCb");
14395
14546
  const enterCbKey = /* @__PURE__ */ Symbol("_enterCb");
14547
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
14396
14548
  const decorate = (t) => {
14397
14549
  delete t.props.mode;
14398
14550
  {
@@ -14411,21 +14563,30 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14411
14563
  const state = useTransitionState();
14412
14564
  let prevChildren;
14413
14565
  let children;
14414
- onUpdated(() => {
14415
- if (!prevChildren.length) {
14416
- return;
14566
+ let origins;
14567
+ let moves;
14568
+ const willMove = () => {
14569
+ if (moves === void 0) {
14570
+ moves = prevChildren.length > 0 && hasCSSTransform(
14571
+ prevChildren[0].el,
14572
+ instance.vnode.el,
14573
+ resolveMoveClass(props)
14574
+ );
14417
14575
  }
14418
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
14419
- if (!hasCSSTransform(
14420
- prevChildren[0].el,
14421
- instance.vnode.el,
14422
- moveClass
14423
- )) {
14576
+ return moves;
14577
+ };
14578
+ onUpdated(() => {
14579
+ pendingGroups.delete(instance);
14580
+ if (!willMove()) {
14424
14581
  prevChildren = [];
14582
+ origins = void 0;
14425
14583
  return;
14426
14584
  }
14585
+ const moveClass = resolveMoveClass(props);
14427
14586
  prevChildren.forEach(callPendingCbs);
14428
- prevChildren.forEach(recordPosition);
14587
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
14588
+ origins = void 0;
14589
+ prevChildren.forEach((c) => recordPosition(c, shift));
14429
14590
  const movedChildren = prevChildren.filter(applyTranslation);
14430
14591
  forceReflow(instance.vnode.el);
14431
14592
  movedChildren.forEach((c) => {
@@ -14458,6 +14619,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14458
14619
  tag = "span";
14459
14620
  }
14460
14621
  prevChildren = [];
14622
+ moves = void 0;
14461
14623
  if (children) {
14462
14624
  for (let i = 0; i < children.length; i++) {
14463
14625
  const child = children[i];
@@ -14489,6 +14651,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14489
14651
  warn(`<TransitionGroup> children must be keyed.`);
14490
14652
  }
14491
14653
  }
14654
+ if (prevChildren.length) {
14655
+ origins = getOrigins(instance);
14656
+ pendingGroups.set(instance, willMove);
14657
+ }
14492
14658
  return createVNode(tag, null, children);
14493
14659
  };
14494
14660
  }
@@ -14503,8 +14669,11 @@ function callPendingCbs(c) {
14503
14669
  el[enterCbKey]();
14504
14670
  }
14505
14671
  }
14506
- function recordPosition(c) {
14507
- newPositionMap.set(c, getPosition(c.el));
14672
+ function resolveMoveClass(props) {
14673
+ return props.moveClass || `${props.name || "v"}-move`;
14674
+ }
14675
+ function recordPosition(c, shift) {
14676
+ newPositionMap.set(c, getPosition(c.el, shift));
14508
14677
  }
14509
14678
  function applyTranslation(c) {
14510
14679
  const oldPos = positionMap.get(c);
@@ -14528,13 +14697,41 @@ function applyTranslation(c) {
14528
14697
  return c;
14529
14698
  }
14530
14699
  }
14531
- function getPosition(el) {
14700
+ function getPosition(el, shift) {
14532
14701
  const rect = el.getBoundingClientRect();
14533
14702
  return {
14534
- left: rect.left,
14535
- top: rect.top
14703
+ left: rect.left - (shift ? shift.left : 0),
14704
+ top: rect.top - (shift ? shift.top : 0)
14536
14705
  };
14537
14706
  }
14707
+ function getOrigins(instance) {
14708
+ let origins;
14709
+ for (let group = instance.parent; group; group = group.parent) {
14710
+ const willMove = pendingGroups.get(group);
14711
+ if (willMove) {
14712
+ const item = findItem(group.vnode.el, instance.vnode.el);
14713
+ if (item) {
14714
+ (origins || (origins = [])).push(
14715
+ extend(getPosition(item), { item, willMove })
14716
+ );
14717
+ }
14718
+ }
14719
+ }
14720
+ return origins;
14721
+ }
14722
+ function findItem(root, node) {
14723
+ const container = root.nodeType === 1 ? root : root.parentNode;
14724
+ while (node && node.parentNode !== container) {
14725
+ node = node.parentNode;
14726
+ }
14727
+ if (node && node.nodeType === 1) {
14728
+ return node;
14729
+ }
14730
+ }
14731
+ function getOriginShift(origins, root) {
14732
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
14733
+ return origin && getPosition(origin.item, origin);
14734
+ }
14538
14735
  function hasCSSTransform(el, root, moveClass) {
14539
14736
  const clone = el.cloneNode();
14540
14737
  const _vtc = el[vtcKey];