@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
  **/
@@ -199,10 +199,10 @@ function normalizeStyle(value) {
199
199
  }
200
200
  const listDelimiterRE = /;(?![^(]*\))/g;
201
201
  const propertyDelimiterRE = /:([^]+)/;
202
- const styleCommentRE = /\/\*[^]*?\*\//g;
202
+ const styleCommentRE = /"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;
203
203
  function parseStringStyle(cssText) {
204
204
  const ret = {};
205
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
205
+ cssText.replace(styleCommentRE, (match) => match.startsWith("/*") ? "" : match).split(listDelimiterRE).forEach((item) => {
206
206
  if (item) {
207
207
  const tmp = item.split(propertyDelimiterRE);
208
208
  tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
@@ -264,7 +264,7 @@ const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
264
264
  const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
265
265
  const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
266
266
 
267
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
267
+ const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`;
268
268
  const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
269
269
  const isBooleanAttr = /* @__PURE__ */ makeMap(
270
270
  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
@@ -294,22 +294,22 @@ function getEscapedCssVarName(key, doubleEscape) {
294
294
  );
295
295
  }
296
296
 
297
- function looseCompareArrays(a, b) {
297
+ function looseCompareArrays(a, b, seen) {
298
298
  if (a.length !== b.length) return false;
299
299
  let equal = true;
300
300
  for (let i = 0; equal && i < a.length; i++) {
301
- equal = looseEqual(a[i], b[i]);
301
+ equal = looseEqual(a[i], b[i], seen);
302
302
  }
303
303
  return equal;
304
304
  }
305
- function looseCompareCollections(a, b) {
305
+ function looseCompareCollections(a, b, seen) {
306
306
  if (a.size !== b.size) return false;
307
307
  const candidates = Array.from(b);
308
308
  const matched = new Uint8Array(candidates.length);
309
309
  for (const item of a) {
310
310
  let index = -1;
311
311
  for (let i = 0; i < candidates.length; i++) {
312
- if (!matched[i] && looseEqual(item, candidates[i])) {
312
+ if (!matched[i] && looseEqual(item, candidates[i], seen)) {
313
313
  index = i;
314
314
  break;
315
315
  }
@@ -319,7 +319,47 @@ function looseCompareCollections(a, b) {
319
319
  }
320
320
  return true;
321
321
  }
322
- function looseEqual(a, b) {
322
+ function looseCompareObjects(a, b, seen) {
323
+ let aValidType = isMap(a);
324
+ let bValidType = isMap(b);
325
+ if (aValidType || bValidType) {
326
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
327
+ }
328
+ aValidType = isSet(a);
329
+ bValidType = isSet(b);
330
+ if (aValidType || bValidType) {
331
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
332
+ }
333
+ const aKeysCount = Object.keys(a).length;
334
+ const bKeysCount = Object.keys(b).length;
335
+ if (aKeysCount !== bKeysCount) {
336
+ return false;
337
+ }
338
+ for (const key in a) {
339
+ const aHasKey = a.hasOwnProperty(key);
340
+ const bHasKey = b.hasOwnProperty(key);
341
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key], seen)) {
342
+ return false;
343
+ }
344
+ }
345
+ return String(a) === String(b);
346
+ }
347
+ function looseCompareNested(a, b, seen, compare) {
348
+ if (!seen) {
349
+ seen = [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map()];
350
+ }
351
+ const [seenA, seenB] = seen;
352
+ if (seenA.has(a) || seenB.has(b)) {
353
+ return seenA.get(a) === b && seenB.get(b) === a;
354
+ }
355
+ seenA.set(a, b);
356
+ seenB.set(b, a);
357
+ const equal = compare(a, b, seen);
358
+ seenA.delete(a);
359
+ seenB.delete(b);
360
+ return equal;
361
+ }
362
+ function looseEqual(a, b, seen) {
323
363
  if (a === b) return true;
324
364
  let aValidType = isDate(a);
325
365
  let bValidType = isDate(b);
@@ -334,7 +374,7 @@ function looseEqual(a, b) {
334
374
  aValidType = isArray(a);
335
375
  bValidType = isArray(b);
336
376
  if (aValidType || bValidType) {
337
- return aValidType && bValidType ? looseCompareArrays(a, b) : false;
377
+ return aValidType && bValidType ? looseCompareNested(a, b, seen, looseCompareArrays) : false;
338
378
  }
339
379
  aValidType = isObject(a);
340
380
  bValidType = isObject(b);
@@ -342,28 +382,7 @@ function looseEqual(a, b) {
342
382
  if (!aValidType || !bValidType) {
343
383
  return false;
344
384
  }
345
- aValidType = isMap(a);
346
- bValidType = isMap(b);
347
- if (aValidType || bValidType) {
348
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
349
- }
350
- aValidType = isSet(a);
351
- bValidType = isSet(b);
352
- if (aValidType || bValidType) {
353
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
354
- }
355
- const aKeysCount = Object.keys(a).length;
356
- const bKeysCount = Object.keys(b).length;
357
- if (aKeysCount !== bKeysCount) {
358
- return false;
359
- }
360
- for (const key in a) {
361
- const aHasKey = a.hasOwnProperty(key);
362
- const bHasKey = b.hasOwnProperty(key);
363
- if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
364
- return false;
365
- }
366
- }
385
+ return looseCompareNested(a, b, seen, looseCompareObjects);
367
386
  }
368
387
  return String(a) === String(b);
369
388
  }
@@ -1168,7 +1187,9 @@ function reactiveReadArray(array) {
1168
1187
  const raw = toRaw(array);
1169
1188
  if (raw === array) return raw;
1170
1189
  track(raw, "iterate", ARRAY_ITERATE_KEY);
1171
- return isShallow(array) ? raw : raw.map(toReactive);
1190
+ if (isShallow(array)) return raw;
1191
+ if (!isReadonly(array)) return raw.map(toReactive);
1192
+ return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly);
1172
1193
  }
1173
1194
  function shallowReadArray(arr) {
1174
1195
  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
@@ -1295,19 +1316,41 @@ const arrayInstrumentations = {
1295
1316
  };
1296
1317
  function iterator(self, method, wrapValue) {
1297
1318
  const arr = shallowReadArray(self);
1298
- const iter = arr[method]();
1319
+ const methodFn = arr[method];
1320
+ const iter = methodFn.call(arr);
1299
1321
  if (arr !== self && !isShallow(self)) {
1300
- iter._next = iter.next;
1301
- iter.next = () => {
1302
- const result = iter._next();
1303
- if (!result.done) {
1304
- result.value = wrapValue(result.value);
1322
+ if (iter[Symbol.toStringTag] === "Array Iterator") {
1323
+ const wrapped = Object.create(Object.getPrototypeOf(iter));
1324
+ wrapped.next = () => wrapResult(iter.next(), wrapValue);
1325
+ if (methodFn !== arrayProto[method]) {
1326
+ Object.defineProperties(wrapped, {
1327
+ return: {
1328
+ get() {
1329
+ const fn = iter.return;
1330
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1331
+ }
1332
+ },
1333
+ throw: {
1334
+ get() {
1335
+ const fn = iter.throw;
1336
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1337
+ }
1338
+ }
1339
+ });
1305
1340
  }
1306
- return result;
1307
- };
1341
+ return wrapped;
1342
+ }
1343
+ iter._next = iter.next;
1344
+ iter.next = () => wrapResult(iter._next(), wrapValue);
1308
1345
  }
1309
1346
  return iter;
1310
1347
  }
1348
+ function wrapResult(result, wrapValue) {
1349
+ if (!result.done) {
1350
+ result.value = wrapValue(result.value);
1351
+ }
1352
+ return result;
1353
+ }
1311
1354
  const arrayProto = Array.prototype;
1312
1355
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1313
1356
  const arr = shallowReadArray(self);
@@ -1730,6 +1773,8 @@ function createInstrumentationGetter(isReadonly2, shallow) {
1730
1773
  return !isReadonly2;
1731
1774
  } else if (key === "__v_isReadonly") {
1732
1775
  return isReadonly2;
1776
+ } else if (key === "__v_isShallow") {
1777
+ return shallow;
1733
1778
  } else if (key === "__v_raw") {
1734
1779
  return target;
1735
1780
  }
@@ -2281,9 +2326,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2281
2326
  if (once && cb) {
2282
2327
  const _cb = cb;
2283
2328
  cb = (...args) => {
2284
- const res = _cb(...args);
2285
- watchHandle();
2286
- return res;
2329
+ try {
2330
+ return _cb(...args);
2331
+ } finally {
2332
+ watchHandle();
2333
+ }
2287
2334
  };
2288
2335
  }
2289
2336
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -2294,12 +2341,13 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2294
2341
  if (cb) {
2295
2342
  const newValue = effect.run();
2296
2343
  if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2297
- if (cleanup) {
2298
- cleanup();
2299
- }
2300
2344
  const currentWatcher = activeWatcher;
2301
- activeWatcher = effect;
2345
+ pauseTracking();
2302
2346
  try {
2347
+ if (cleanup) {
2348
+ cleanup();
2349
+ }
2350
+ activeWatcher = effect;
2303
2351
  const args = [
2304
2352
  newValue,
2305
2353
  // pass undefined as the old value when it's changed for the first time
@@ -2313,6 +2361,7 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2313
2361
  );
2314
2362
  } finally {
2315
2363
  activeWatcher = currentWatcher;
2364
+ resetTracking();
2316
2365
  }
2317
2366
  }
2318
2367
  } else {
@@ -2718,21 +2767,21 @@ function queuePostFlushCb(cb) {
2718
2767
  }
2719
2768
  queueFlush();
2720
2769
  }
2721
- function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2770
+ function flushPreFlushCbs(instance, minUid, seen, i = flushIndex + 1) {
2722
2771
  if (!!(process.env.NODE_ENV !== "production")) {
2723
2772
  seen = seen || /* @__PURE__ */ new Map();
2724
2773
  }
2725
2774
  for (; i < queue.length; i++) {
2726
2775
  const cb = queue[i];
2727
2776
  if (cb && cb.flags & 2) {
2728
- if (instance && cb.id !== instance.uid) {
2777
+ if (instance && cb.id !== instance.uid || minUid !== void 0 && !(cb.id >= minUid)) {
2729
2778
  continue;
2730
2779
  }
2731
2780
  if (!!(process.env.NODE_ENV !== "production") && checkRecursiveUpdates(seen, cb)) {
2732
2781
  continue;
2733
2782
  }
2734
2783
  queue.splice(i, 1);
2735
- i--;
2784
+ i = instance ? i - 1 : flushIndex;
2736
2785
  if (cb.flags & 4) {
2737
2786
  cb.flags &= -2;
2738
2787
  }
@@ -2743,12 +2792,23 @@ function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2743
2792
  }
2744
2793
  }
2745
2794
  }
2746
- function flushPostFlushCbs(seen) {
2795
+ function flushPostFlushCbs(seen, skip, minUid = 0) {
2747
2796
  if (pendingPostFlushCbs.length) {
2748
- const deduped = [...new Set(pendingPostFlushCbs)].sort(
2749
- (a, b) => getId(a) - getId(b)
2750
- );
2751
- pendingPostFlushCbs.length = 0;
2797
+ let cbs = pendingPostFlushCbs;
2798
+ let kept = 0;
2799
+ if (skip) {
2800
+ cbs = [];
2801
+ for (let i = 0; i < pendingPostFlushCbs.length; i++) {
2802
+ const cb = pendingPostFlushCbs[i];
2803
+ if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) {
2804
+ pendingPostFlushCbs[kept++] = cb;
2805
+ } else {
2806
+ cbs.push(cb);
2807
+ }
2808
+ }
2809
+ }
2810
+ const deduped = [...new Set(cbs)].sort((a, b) => getId(a) - getId(b));
2811
+ pendingPostFlushCbs.length = kept;
2752
2812
  if (activePostFlushCbs) {
2753
2813
  for (let i = 0; i < deduped.length; i++) {
2754
2814
  activePostFlushCbs.push(deduped[i]);
@@ -2774,6 +2834,22 @@ function flushPostFlushCbs(seen) {
2774
2834
  postFlushIndex = 0;
2775
2835
  }
2776
2836
  }
2837
+ let isFlushing = false;
2838
+ function flushOnAppMount(fn, minUid) {
2839
+ if (isFlushing) {
2840
+ fn();
2841
+ return;
2842
+ }
2843
+ const queued = minUid === void 0 ? void 0 : new Set(pendingPostFlushCbs);
2844
+ fn();
2845
+ isFlushing = true;
2846
+ try {
2847
+ flushPreFlushCbs(void 0, minUid);
2848
+ flushPostFlushCbs(void 0, queued, minUid);
2849
+ } finally {
2850
+ isFlushing = false;
2851
+ }
2852
+ }
2777
2853
  const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
2778
2854
  function flushJobs(seen) {
2779
2855
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -3747,6 +3823,7 @@ function doWatch(source, cb, options = EMPTY_OBJ) {
3747
3823
  let isPre = false;
3748
3824
  if (flush === "post") {
3749
3825
  baseWatchOptions.scheduler = (job) => {
3826
+ job.i = instance;
3750
3827
  queuePostRenderEffect(job, instance && instance.suspense);
3751
3828
  };
3752
3829
  } else if (flush !== "sync") {
@@ -4048,7 +4125,11 @@ const TeleportImpl = {
4048
4125
  };
4049
4126
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
4050
4127
  if (moveType === 0) {
4128
+ if (vnode.targetStart) {
4129
+ insert(vnode.targetStart, container, parentAnchor);
4130
+ }
4051
4131
  insert(vnode.targetAnchor, container, parentAnchor);
4132
+ parentAnchor = vnode.targetAnchor;
4052
4133
  }
4053
4134
  const { el, anchor, shapeFlag, children, props } = vnode;
4054
4135
  const isReorder = moveType === 2;
@@ -4217,10 +4298,6 @@ const BaseTransitionPropsValidators = {
4217
4298
  onAfterAppear: TransitionHookValidator,
4218
4299
  onAppearCancelled: TransitionHookValidator
4219
4300
  };
4220
- const recursiveGetSubtree = (instance) => {
4221
- const subTree = instance.subTree;
4222
- return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
4223
- };
4224
4301
  const BaseTransitionImpl = {
4225
4302
  name: `BaseTransition`,
4226
4303
  props: BaseTransitionPropsValidators,
@@ -4261,7 +4338,7 @@ const BaseTransitionImpl = {
4261
4338
  setTransitionHooks(innerChild, enterHooks);
4262
4339
  }
4263
4340
  let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
4264
- if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
4341
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && getTransitionRoot(instance.subTree)) {
4265
4342
  let leavingHooks = resolveTransitionHooks(
4266
4343
  oldInnerChild,
4267
4344
  rawProps,
@@ -4398,8 +4475,15 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4398
4475
  );
4399
4476
  }
4400
4477
  const leavingVNode = leavingVNodesCache[key];
4401
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
4402
- leavingVNode.el[leaveCbKey]();
4478
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
4479
+ let leavingCb = leavingVNode.el[leaveCbKey];
4480
+ if (!leavingCb) {
4481
+ const leavingRoot = getTransitionRoot(leavingVNode);
4482
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
4483
+ }
4484
+ if (leavingCb) {
4485
+ leavingCb();
4486
+ }
4403
4487
  }
4404
4488
  callHook(hook, [el]);
4405
4489
  },
@@ -4527,6 +4611,12 @@ function setTransitionHooks(vnode, hooks) {
4527
4611
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
4528
4612
  } else {
4529
4613
  vnode.transition = hooks;
4614
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4615
+ const child = filterSingleRoot(vnode.children, false);
4616
+ if (child) {
4617
+ setTransitionHooks(child, hooks);
4618
+ }
4619
+ }
4530
4620
  }
4531
4621
  }
4532
4622
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -4551,6 +4641,18 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
4551
4641
  }
4552
4642
  return ret;
4553
4643
  }
4644
+ function getTransitionRoot(vnode) {
4645
+ if (vnode.component) {
4646
+ return getTransitionRoot(vnode.component.subTree);
4647
+ }
4648
+ if (vnode.type === Fragment) {
4649
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4650
+ return child ? getTransitionRoot(child) : void 0;
4651
+ }
4652
+ if (vnode.type !== Comment) {
4653
+ return vnode;
4654
+ }
4655
+ }
4554
4656
 
4555
4657
  // @__NO_SIDE_EFFECTS__
4556
4658
  function defineComponent(options, extraOptions) {
@@ -4924,13 +5026,15 @@ function createHydrationFunctions(rendererInternals) {
4924
5026
  getContainerType(container),
4925
5027
  optimized
4926
5028
  );
4927
- if (isAsyncWrapper(vnode) && !vnode.component.subTree) {
5029
+ if ((isAsyncWrapper(vnode) || vnode.component.asyncDep) && !vnode.component.subTree) {
4928
5030
  let subTree;
4929
5031
  if (isFragmentStart) {
4930
5032
  subTree = createVNode(Static);
4931
5033
  subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
4932
5034
  } else {
4933
- subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
5035
+ subTree = node.nodeType === 3 ? createTextVNode("") : createVNode(
5036
+ node.nodeType === 8 ? Comment : "div"
5037
+ );
4934
5038
  }
4935
5039
  subTree.el = node;
4936
5040
  vnode.component.subTree = subTree;
@@ -5466,14 +5570,22 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
5466
5570
  break;
5467
5571
  }
5468
5572
  }, opts);
5469
- forEach((el) => {
5470
- if (!(el instanceof Element)) return;
5573
+ const observe = (el) => {
5471
5574
  if (elementIsVisibleInViewport(el)) {
5472
5575
  hydrate();
5473
5576
  ob.disconnect();
5474
5577
  return false;
5475
5578
  }
5579
+ if (getComputedStyle(el).display === "contents") {
5580
+ for (let i = 0; i < el.children.length; i++) {
5581
+ if (observe(el.children[i]) === false) return false;
5582
+ }
5583
+ }
5476
5584
  ob.observe(el);
5585
+ };
5586
+ forEach((el) => {
5587
+ if (!(el instanceof Element)) return;
5588
+ return observe(el);
5477
5589
  });
5478
5590
  return () => ob.disconnect();
5479
5591
  };
@@ -5830,6 +5942,7 @@ const KeepAliveImpl = {
5830
5942
  unmount(cached);
5831
5943
  } else if (current) {
5832
5944
  resetShapeFlag(current);
5945
+ if (cached) resetShapeFlag(cached);
5833
5946
  }
5834
5947
  cache.delete(key);
5835
5948
  keys.delete(key);
@@ -6411,10 +6524,12 @@ function renderList(source, renderItem, cache, index) {
6411
6524
  );
6412
6525
  }
6413
6526
  } else if (typeof source === "number") {
6414
- if (!!(process.env.NODE_ENV !== "production") && (!Number.isInteger(source) || source < 0)) {
6415
- warn$1(
6416
- `The v-for range expects a positive integer value but got ${source}.`
6417
- );
6527
+ if (!Number.isInteger(source) || source < 0) {
6528
+ if (!!(process.env.NODE_ENV !== "production")) {
6529
+ warn$1(
6530
+ `The v-for range expects a positive integer value but got ${source}.`
6531
+ );
6532
+ }
6418
6533
  ret = [];
6419
6534
  } else {
6420
6535
  ret = new Array(source);
@@ -6733,6 +6848,7 @@ function installCompatInstanceProperties(map) {
6733
6848
  $vnode: (i) => i.vnode,
6734
6849
  // some private properties that are likely accessed...
6735
6850
  _self: (i) => i.proxy,
6851
+ _setupProxy: (i) => i.setupState,
6736
6852
  _uid: (i) => i.uid,
6737
6853
  _data: (i) => i.data,
6738
6854
  _isMounted: (i) => i.isMounted,
@@ -7722,7 +7838,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7722
7838
  return vm;
7723
7839
  }
7724
7840
  }
7725
- Vue.version = `2.6.14-compat:${"3.5.42"}`;
7841
+ Vue.version = `2.6.14-compat:${"3.5.44"}`;
7726
7842
  Vue.config = singletonApp.config;
7727
7843
  Vue.use = (plugin, ...options) => {
7728
7844
  if (plugin && isFunction(plugin.install)) {
@@ -8881,7 +8997,7 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8881
8997
  }
8882
8998
  for (let i = 0; i < nextKeys.length; i++) {
8883
8999
  const key = nextKeys[i];
8884
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
9000
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8885
9001
  return true;
8886
9002
  }
8887
9003
  }
@@ -9607,6 +9723,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9607
9723
  optimized = false;
9608
9724
  n2.dynamicChildren = null;
9609
9725
  }
9726
+ if (n2.dynamicChildren && n1 && n1.dynamicChildren && n1.dynamicChildren.hasOnce) {
9727
+ if (n2.dynamicChildren === EMPTY_ARR) {
9728
+ n2.dynamicChildren = [];
9729
+ }
9730
+ n2.dynamicChildren.hasOnce = true;
9731
+ }
9610
9732
  const { type, ref, shapeFlag } = n2;
9611
9733
  switch (type) {
9612
9734
  case Text:
@@ -10013,15 +10135,16 @@ function baseCreateRenderer(options, createHydrationFns) {
10013
10135
  for (let i = 0; i < newChildren.length; i++) {
10014
10136
  const oldVNode = oldChildren[i];
10015
10137
  const newVNode = newChildren[i];
10138
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
10016
10139
  const container = (
10017
10140
  // oldVNode may be an errored async setup() component inside Suspense
10018
10141
  // which will not have a mounted element
10019
- oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
10142
+ oldEl && // - In the case of a Fragment, we need to provide the actual parent
10020
10143
  // of the Fragment itself so it can move its children.
10021
10144
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
10022
10145
  // which also requires the correct parent container
10023
10146
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
10024
- oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
10147
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldEl) : (
10025
10148
  // In other cases, the parent container is not actually used so we
10026
10149
  // just pass the block element here to avoid a DOM parentNode call.
10027
10150
  fallbackContainer
@@ -10197,7 +10320,12 @@ function baseCreateRenderer(options, createHydrationFns) {
10197
10320
  }
10198
10321
  if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) initialVNode.el = null;
10199
10322
  if (instance.asyncDep) {
10200
- parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
10323
+ parentSuspense && parentSuspense.registerDep(
10324
+ instance,
10325
+ setupRenderEffect,
10326
+ optimized,
10327
+ namespace
10328
+ );
10201
10329
  if (!initialVNode.el) {
10202
10330
  const placeholder = instance.subTree = createVNode(Comment);
10203
10331
  processCommentNode(null, placeholder, container, anchor);
@@ -10226,6 +10354,8 @@ function baseCreateRenderer(options, createHydrationFns) {
10226
10354
  if (!!(process.env.NODE_ENV !== "production")) {
10227
10355
  pushWarningContext(n2);
10228
10356
  }
10357
+ n2.el = n1.el;
10358
+ n2.placeholder = n1.placeholder;
10229
10359
  updateComponentPreRender(instance, n2, optimized);
10230
10360
  if (!!(process.env.NODE_ENV !== "production")) {
10231
10361
  popWarningContext();
@@ -10237,6 +10367,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10237
10367
  }
10238
10368
  } else {
10239
10369
  n2.el = n1.el;
10370
+ n2.placeholder = n1.placeholder;
10240
10371
  instance.vnode = n2;
10241
10372
  }
10242
10373
  };
@@ -10841,7 +10972,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10841
10972
  cacheIndex,
10842
10973
  memo
10843
10974
  } = vnode;
10844
- if (patchFlag === -2) {
10975
+ if (patchFlag === -2 || dynamicChildren && dynamicChildren.hasOnce) {
10845
10976
  optimized = false;
10846
10977
  }
10847
10978
  if (ref != null) {
@@ -10849,7 +10980,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10849
10980
  setRef(ref, null, parentSuspense, vnode, true);
10850
10981
  resetTracking();
10851
10982
  }
10852
- if (cacheIndex != null) {
10983
+ if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) {
10853
10984
  parentComponent.renderCache[cacheIndex] = void 0;
10854
10985
  }
10855
10986
  if (shapeFlag & 256) {
@@ -10914,35 +11045,37 @@ function baseCreateRenderer(options, createHydrationFns) {
10914
11045
  };
10915
11046
  const remove = (vnode) => {
10916
11047
  const { type, el, anchor, transition } = vnode;
10917
- if (type === Fragment) {
10918
- if (!!(process.env.NODE_ENV !== "production") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {
10919
- vnode.children.forEach((child) => {
10920
- if (child.type === Comment) {
10921
- hostRemove(child.el);
10922
- } else {
10923
- remove(child);
10924
- }
10925
- });
10926
- } else {
10927
- removeFragment(el, anchor);
10928
- }
11048
+ const isFragment = type === Fragment;
11049
+ if (isFragment && !transition) {
11050
+ removeFragment(el, anchor);
10929
11051
  return;
10930
11052
  }
10931
11053
  if (type === Static) {
10932
11054
  removeStaticNode(vnode);
11055
+ if (transition && !transition.persisted && transition.afterLeave) {
11056
+ transition.afterLeave();
11057
+ }
10933
11058
  return;
10934
11059
  }
11060
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
10935
11061
  const performRemove = () => {
10936
- hostRemove(el);
11062
+ if (isFragment) {
11063
+ if (hostParentNode(el)) {
11064
+ removeFragment(el, anchor);
11065
+ }
11066
+ } else {
11067
+ hostRemove(el);
11068
+ }
10937
11069
  if (transition && !transition.persisted && transition.afterLeave) {
10938
11070
  transition.afterLeave();
10939
11071
  }
10940
11072
  };
10941
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
11073
+ if (leavingNode && leavingNode.shapeFlag & 1 && transition && !transition.persisted) {
10942
11074
  const { leave, delayLeave } = transition;
10943
- const performLeave = () => leave(el, performRemove);
11075
+ const leavingEl = leavingNode.el;
11076
+ const performLeave = () => leave(leavingEl, performRemove);
10944
11077
  if (delayLeave) {
10945
- delayLeave(vnode.el, performRemove, performLeave);
11078
+ delayLeave(leavingEl, performRemove, performLeave);
10946
11079
  } else {
10947
11080
  performLeave();
10948
11081
  }
@@ -10976,6 +11109,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10976
11109
  if (job) {
10977
11110
  job.flags |= 8;
10978
11111
  unmount(subTree, instance, parentSuspense, doRemove);
11112
+ } else if (instance.vnode.el && subTree) {
11113
+ subTree.transition = instance.vnode.transition;
11114
+ unmount(subTree, instance, parentSuspense, doRemove);
10979
11115
  }
10980
11116
  if (um) {
10981
11117
  queuePostRenderEffect(um, parentSuspense);
@@ -11009,32 +11145,26 @@ function baseCreateRenderer(options, createHydrationFns) {
11009
11145
  const teleportEnd = el && el[TeleportEndKey];
11010
11146
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
11011
11147
  };
11012
- let isFlushing = false;
11013
11148
  const render = (vnode, container, namespace) => {
11014
- let instance;
11015
- if (vnode == null) {
11016
- if (container._vnode) {
11017
- unmount(container._vnode, null, null, true);
11018
- instance = container._vnode.component;
11149
+ const minUid = vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid();
11150
+ flushOnAppMount(() => {
11151
+ if (vnode == null) {
11152
+ if (container._vnode) {
11153
+ unmount(container._vnode, null, null, true);
11154
+ }
11155
+ } else {
11156
+ patch(
11157
+ container._vnode || null,
11158
+ vnode,
11159
+ container,
11160
+ null,
11161
+ null,
11162
+ null,
11163
+ namespace
11164
+ );
11019
11165
  }
11020
- } else {
11021
- patch(
11022
- container._vnode || null,
11023
- vnode,
11024
- container,
11025
- null,
11026
- null,
11027
- null,
11028
- namespace
11029
- );
11030
- }
11031
- container._vnode = vnode;
11032
- if (!isFlushing) {
11033
- isFlushing = true;
11034
- flushPreFlushCbs(instance);
11035
- flushPostFlushCbs();
11036
- isFlushing = false;
11037
- }
11166
+ container._vnode = vnode;
11167
+ }, minUid);
11038
11168
  };
11039
11169
  const internals = {
11040
11170
  p: patch,
@@ -11196,7 +11326,7 @@ const SuspenseImpl = {
11196
11326
  rendererInternals
11197
11327
  );
11198
11328
  } else {
11199
- if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
11329
+ if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) {
11200
11330
  n2.suspense = n1.suspense;
11201
11331
  n2.suspense.vnode = n2;
11202
11332
  n2.el = n1.el;
@@ -11282,10 +11412,12 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11282
11412
  if (pendingBranch) {
11283
11413
  suspense.pendingBranch = newBranch;
11284
11414
  if (isSameVNodeType(pendingBranch, newBranch)) {
11415
+ suspense.deps++;
11285
11416
  patch(
11286
11417
  pendingBranch,
11287
11418
  newBranch,
11288
- suspense.hiddenContainer,
11419
+ // a hydrating pending branch is adopted SSR DOM, already in place
11420
+ isHydrating ? container : suspense.hiddenContainer,
11289
11421
  null,
11290
11422
  parentComponent,
11291
11423
  suspense,
@@ -11293,6 +11425,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11293
11425
  slotScopeIds,
11294
11426
  optimized
11295
11427
  );
11428
+ suspense.deps--;
11296
11429
  if (suspense.deps <= 0) {
11297
11430
  suspense.resolve();
11298
11431
  } else if (isInFallback) {
@@ -11558,6 +11691,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11558
11691
  suspense.effects = [];
11559
11692
  if (isSuspensible) {
11560
11693
  if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
11694
+ parentSuspenseId = void 0;
11561
11695
  parentSuspense.deps--;
11562
11696
  if (parentSuspense.deps === 0 && !sync) {
11563
11697
  parentSuspense.resolve();
@@ -11618,7 +11752,10 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11618
11752
  next() {
11619
11753
  return suspense.activeBranch && next(suspense.activeBranch);
11620
11754
  },
11621
- registerDep(instance, setupRenderEffect, optimized2) {
11755
+ // `namespace` intentionally shadows the boundary's own: the dep must be
11756
+ // mounted with the namespace of the position it was rendered at, which can
11757
+ // differ from the boundary's (e.g. a component nested inside an <svg>).
11758
+ registerDep(instance, setupRenderEffect, optimized2, namespace2) {
11622
11759
  const isInPendingSuspense = !!suspense.pendingBranch;
11623
11760
  if (isInPendingSuspense) {
11624
11761
  suspense.deps++;
@@ -11631,6 +11768,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11631
11768
  return;
11632
11769
  }
11633
11770
  unsetCurrentInstance();
11771
+ if (!instance.scope.active) {
11772
+ if (isInPendingSuspense && --suspense.deps === 0) {
11773
+ suspense.resolve();
11774
+ }
11775
+ return;
11776
+ }
11634
11777
  instance.asyncResolved = true;
11635
11778
  const { vnode: vnode2 } = instance;
11636
11779
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -11652,7 +11795,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11652
11795
  // consider the comment placeholder case.
11653
11796
  hydratedEl ? null : next(instance.subTree),
11654
11797
  suspense,
11655
- namespace,
11798
+ namespace2,
11656
11799
  optimized2
11657
11800
  );
11658
11801
  if (placeholder) {
@@ -12116,7 +12259,8 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
12116
12259
  el: vnode.el,
12117
12260
  anchor: vnode.anchor,
12118
12261
  ctx: vnode.ctx,
12119
- ce: vnode.ce
12262
+ ce: vnode.ce,
12263
+ cacheIndex: vnode.cacheIndex
12120
12264
  };
12121
12265
  if (transition && cloneTransition) {
12122
12266
  setTransitionHooks(
@@ -12252,6 +12396,9 @@ function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
12252
12396
 
12253
12397
  const emptyAppContext = createAppContext();
12254
12398
  let uid = 0;
12399
+ function getNextUid() {
12400
+ return uid;
12401
+ }
12255
12402
  function createComponentInstance(vnode, parent, suspense) {
12256
12403
  const type = vnode.type;
12257
12404
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -12950,7 +13097,7 @@ function isMemoSame(cached, memo) {
12950
13097
  return true;
12951
13098
  }
12952
13099
 
12953
- const version = "3.5.42";
13100
+ const version = "3.5.44";
12954
13101
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12955
13102
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12956
13103
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -13570,7 +13717,9 @@ function patchStyle(el, prev, next) {
13570
13717
  }
13571
13718
  }
13572
13719
  if (vShowOriginalDisplay in el) {
13573
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
13720
+ if (!isCssString || prev !== next) {
13721
+ el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
13722
+ }
13574
13723
  if (el[vShowHidden]) {
13575
13724
  style.display = "none";
13576
13725
  }
@@ -14096,7 +14245,9 @@ class VueElement extends BaseClass {
14096
14245
  "Custom element style injection is not supported when using shadowRoot: false"
14097
14246
  );
14098
14247
  }
14099
- this._mount(def);
14248
+ if (this._connected) {
14249
+ this._mount(def);
14250
+ }
14100
14251
  };
14101
14252
  const asyncDef = this._def.__asyncLoader;
14102
14253
  if (asyncDef) {
@@ -14466,6 +14617,7 @@ const positionMap = /* @__PURE__ */ new WeakMap();
14466
14617
  const newPositionMap = /* @__PURE__ */ new WeakMap();
14467
14618
  const moveCbKey = /* @__PURE__ */ Symbol("_moveCb");
14468
14619
  const enterCbKey = /* @__PURE__ */ Symbol("_enterCb");
14620
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
14469
14621
  const decorate = (t) => {
14470
14622
  delete t.props.mode;
14471
14623
  {
@@ -14484,21 +14636,30 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14484
14636
  const state = useTransitionState();
14485
14637
  let prevChildren;
14486
14638
  let children;
14487
- onUpdated(() => {
14488
- if (!prevChildren.length) {
14489
- return;
14639
+ let origins;
14640
+ let moves;
14641
+ const willMove = () => {
14642
+ if (moves === void 0) {
14643
+ moves = prevChildren.length > 0 && hasCSSTransform(
14644
+ prevChildren[0].el,
14645
+ instance.vnode.el,
14646
+ resolveMoveClass(props)
14647
+ );
14490
14648
  }
14491
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
14492
- if (!hasCSSTransform(
14493
- prevChildren[0].el,
14494
- instance.vnode.el,
14495
- moveClass
14496
- )) {
14649
+ return moves;
14650
+ };
14651
+ onUpdated(() => {
14652
+ pendingGroups.delete(instance);
14653
+ if (!willMove()) {
14497
14654
  prevChildren = [];
14655
+ origins = void 0;
14498
14656
  return;
14499
14657
  }
14658
+ const moveClass = resolveMoveClass(props);
14500
14659
  prevChildren.forEach(callPendingCbs);
14501
- prevChildren.forEach(recordPosition);
14660
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
14661
+ origins = void 0;
14662
+ prevChildren.forEach((c) => recordPosition(c, shift));
14502
14663
  const movedChildren = prevChildren.filter(applyTranslation);
14503
14664
  forceReflow(instance.vnode.el);
14504
14665
  movedChildren.forEach((c) => {
@@ -14531,6 +14692,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14531
14692
  tag = "span";
14532
14693
  }
14533
14694
  prevChildren = [];
14695
+ moves = void 0;
14534
14696
  if (children) {
14535
14697
  for (let i = 0; i < children.length; i++) {
14536
14698
  const child = children[i];
@@ -14562,6 +14724,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14562
14724
  warn(`<TransitionGroup> children must be keyed.`);
14563
14725
  }
14564
14726
  }
14727
+ if (prevChildren.length) {
14728
+ origins = getOrigins(instance);
14729
+ pendingGroups.set(instance, willMove);
14730
+ }
14565
14731
  return createVNode(tag, null, children);
14566
14732
  };
14567
14733
  }
@@ -14576,8 +14742,11 @@ function callPendingCbs(c) {
14576
14742
  el[enterCbKey]();
14577
14743
  }
14578
14744
  }
14579
- function recordPosition(c) {
14580
- newPositionMap.set(c, getPosition(c.el));
14745
+ function resolveMoveClass(props) {
14746
+ return props.moveClass || `${props.name || "v"}-move`;
14747
+ }
14748
+ function recordPosition(c, shift) {
14749
+ newPositionMap.set(c, getPosition(c.el, shift));
14581
14750
  }
14582
14751
  function applyTranslation(c) {
14583
14752
  const oldPos = positionMap.get(c);
@@ -14601,13 +14770,41 @@ function applyTranslation(c) {
14601
14770
  return c;
14602
14771
  }
14603
14772
  }
14604
- function getPosition(el) {
14773
+ function getPosition(el, shift) {
14605
14774
  const rect = el.getBoundingClientRect();
14606
14775
  return {
14607
- left: rect.left,
14608
- top: rect.top
14776
+ left: rect.left - (shift ? shift.left : 0),
14777
+ top: rect.top - (shift ? shift.top : 0)
14609
14778
  };
14610
14779
  }
14780
+ function getOrigins(instance) {
14781
+ let origins;
14782
+ for (let group = instance.parent; group; group = group.parent) {
14783
+ const willMove = pendingGroups.get(group);
14784
+ if (willMove) {
14785
+ const item = findItem(group.vnode.el, instance.vnode.el);
14786
+ if (item) {
14787
+ (origins || (origins = [])).push(
14788
+ extend(getPosition(item), { item, willMove })
14789
+ );
14790
+ }
14791
+ }
14792
+ }
14793
+ return origins;
14794
+ }
14795
+ function findItem(root, node) {
14796
+ const container = root.nodeType === 1 ? root : root.parentNode;
14797
+ while (node && node.parentNode !== container) {
14798
+ node = node.parentNode;
14799
+ }
14800
+ if (node && node.nodeType === 1) {
14801
+ return node;
14802
+ }
14803
+ }
14804
+ function getOriginShift(origins, root) {
14805
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
14806
+ return origin && getPosition(origin.item, origin);
14807
+ }
14611
14808
  function hasCSSTransform(el, root, moveClass) {
14612
14809
  const clone = el.cloneNode();
14613
14810
  const _vtc = el[vtcKey];
@@ -16584,7 +16781,8 @@ const errorMessages = {
16584
16781
  [42]: `v-model value must be a valid JavaScript member expression.`,
16585
16782
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
16586
16783
  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
16587
- Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
16784
+ Use a v-bind binding combined with a v-on listener that emits update:x event instead.
16785
+ For props declared with defineModel(), assign the returned ref to a variable and use v-model on that variable.`,
16588
16786
  [45]: `v-model cannot be used on a const binding because it is not writable.`,
16589
16787
  [46]: `Error parsing JavaScript expression: `,
16590
16788
  [47]: `<KeepAlive> expects exactly one child component.`,
@@ -19178,7 +19376,7 @@ const transformFor = createStructuralDirectiveTransform(
19178
19376
  createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
19179
19377
  createCompoundExpression([
19180
19378
  `if (_cached && _cached.el`,
19181
- ...keyExp ? [` && _cached.key === `, keyExp] : [],
19379
+ ...keyExp ? [` && _cached.key === (`, keyExp, `)`] : [],
19182
19380
  ` && ${context.helperString(
19183
19381
  IS_MEMO_SAME
19184
19382
  )}(_cached, _memo)) return _cached`
@@ -21117,7 +21315,8 @@ const transformTransition = (node, context) => {
21117
21315
  if (!node.children.length) {
21118
21316
  return;
21119
21317
  }
21120
- if (hasMultipleChildren(node)) {
21318
+ const multipleChildren = hasMultipleChildren(node);
21319
+ if (!!(process.env.NODE_ENV !== "production") && multipleChildren) {
21121
21320
  context.onError(
21122
21321
  createDOMCompilerError(
21123
21322
  63,
@@ -21344,7 +21543,8 @@ const validateHtmlNesting = (node, context) => {
21344
21543
 
21345
21544
  const DOMNodeTransforms = [
21346
21545
  transformStyle,
21347
- ...!!(process.env.NODE_ENV !== "production") ? [transformTransition, validateHtmlNesting] : []
21546
+ transformTransition,
21547
+ ...!!(process.env.NODE_ENV !== "production") ? [validateHtmlNesting] : []
21348
21548
  ];
21349
21549
  const DOMDirectiveTransforms = {
21350
21550
  cloak: noopDirectiveTransform,