@vue/compat 3.5.13 → 3.5.15

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.13
2
+ * @vue/compat v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -396,6 +396,10 @@ class EffectScope {
396
396
  * @internal
397
397
  */
398
398
  this._active = true;
399
+ /**
400
+ * @internal track `on` calls, allow `on` call multiple times
401
+ */
402
+ this._on = 0;
399
403
  /**
400
404
  * @internal
401
405
  */
@@ -466,14 +470,20 @@ class EffectScope {
466
470
  * @internal
467
471
  */
468
472
  on() {
469
- activeEffectScope = this;
473
+ if (++this._on === 1) {
474
+ this.prevScope = activeEffectScope;
475
+ activeEffectScope = this;
476
+ }
470
477
  }
471
478
  /**
472
479
  * This should only be called on non-detached scopes
473
480
  * @internal
474
481
  */
475
482
  off() {
476
- activeEffectScope = this.parent;
483
+ if (this._on > 0 && --this._on === 0) {
484
+ activeEffectScope = this.prevScope;
485
+ this.prevScope = void 0;
486
+ }
477
487
  }
478
488
  stop(fromParent) {
479
489
  if (this._active) {
@@ -555,7 +565,7 @@ class ReactiveEffect {
555
565
  }
556
566
  resume() {
557
567
  if (this.flags & 64) {
558
- this.flags &= ~64;
568
+ this.flags &= -65;
559
569
  if (pausedQueueEffects.has(this)) {
560
570
  pausedQueueEffects.delete(this);
561
571
  this.trigger();
@@ -595,7 +605,7 @@ class ReactiveEffect {
595
605
  cleanupDeps(this);
596
606
  activeSub = prevEffect;
597
607
  shouldTrack = prevShouldTrack;
598
- this.flags &= ~2;
608
+ this.flags &= -3;
599
609
  }
600
610
  }
601
611
  stop() {
@@ -606,7 +616,7 @@ class ReactiveEffect {
606
616
  this.deps = this.depsTail = void 0;
607
617
  cleanupEffect(this);
608
618
  this.onStop && this.onStop();
609
- this.flags &= ~1;
619
+ this.flags &= -2;
610
620
  }
611
621
  }
612
622
  trigger() {
@@ -656,7 +666,7 @@ function endBatch() {
656
666
  while (e) {
657
667
  const next = e.next;
658
668
  e.next = void 0;
659
- e.flags &= ~8;
669
+ e.flags &= -9;
660
670
  e = next;
661
671
  }
662
672
  }
@@ -667,7 +677,7 @@ function endBatch() {
667
677
  while (e) {
668
678
  const next = e.next;
669
679
  e.next = void 0;
670
- e.flags &= ~8;
680
+ e.flags &= -9;
671
681
  if (e.flags & 1) {
672
682
  try {
673
683
  ;
@@ -723,17 +733,16 @@ function refreshComputed(computed) {
723
733
  if (computed.flags & 4 && !(computed.flags & 16)) {
724
734
  return;
725
735
  }
726
- computed.flags &= ~16;
736
+ computed.flags &= -17;
727
737
  if (computed.globalVersion === globalVersion) {
728
738
  return;
729
739
  }
730
740
  computed.globalVersion = globalVersion;
731
- const dep = computed.dep;
732
- computed.flags |= 2;
733
- if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) {
734
- computed.flags &= ~2;
741
+ if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {
735
742
  return;
736
743
  }
744
+ computed.flags |= 2;
745
+ const dep = computed.dep;
737
746
  const prevSub = activeSub;
738
747
  const prevShouldTrack = shouldTrack;
739
748
  activeSub = computed;
@@ -742,6 +751,7 @@ function refreshComputed(computed) {
742
751
  prepareDeps(computed);
743
752
  const value = computed.fn(computed._value);
744
753
  if (dep.version === 0 || hasChanged(value, computed._value)) {
754
+ computed.flags |= 128;
745
755
  computed._value = value;
746
756
  dep.version++;
747
757
  }
@@ -752,7 +762,7 @@ function refreshComputed(computed) {
752
762
  activeSub = prevSub;
753
763
  shouldTrack = prevShouldTrack;
754
764
  cleanupDeps(computed);
755
- computed.flags &= ~2;
765
+ computed.flags &= -3;
756
766
  }
757
767
  }
758
768
  function removeSub(link, soft = false) {
@@ -771,7 +781,7 @@ function removeSub(link, soft = false) {
771
781
  if (dep.subs === link) {
772
782
  dep.subs = prevSub;
773
783
  if (!prevSub && dep.computed) {
774
- dep.computed.flags &= ~4;
784
+ dep.computed.flags &= -5;
775
785
  for (let l = dep.computed.deps; l; l = l.nextDep) {
776
786
  removeSub(l, true);
777
787
  }
@@ -1704,14 +1714,14 @@ function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandl
1704
1714
  if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
1705
1715
  return target;
1706
1716
  }
1707
- const existingProxy = proxyMap.get(target);
1708
- if (existingProxy) {
1709
- return existingProxy;
1710
- }
1711
1717
  const targetType = getTargetType(target);
1712
1718
  if (targetType === 0 /* INVALID */) {
1713
1719
  return target;
1714
1720
  }
1721
+ const existingProxy = proxyMap.get(target);
1722
+ if (existingProxy) {
1723
+ return existingProxy;
1724
+ }
1715
1725
  const proxy = new Proxy(
1716
1726
  target,
1717
1727
  targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
@@ -2134,11 +2144,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2134
2144
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2135
2145
  boundCleanup
2136
2146
  ];
2147
+ oldValue = newValue;
2137
2148
  call ? call(cb, 3, args) : (
2138
2149
  // @ts-expect-error
2139
2150
  cb(...args)
2140
2151
  );
2141
- oldValue = newValue;
2142
2152
  } finally {
2143
2153
  activeWatcher = currentWatcher;
2144
2154
  }
@@ -2555,11 +2565,11 @@ function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2555
2565
  queue.splice(i, 1);
2556
2566
  i--;
2557
2567
  if (cb.flags & 4) {
2558
- cb.flags &= ~1;
2568
+ cb.flags &= -2;
2559
2569
  }
2560
2570
  cb();
2561
2571
  if (!(cb.flags & 4)) {
2562
- cb.flags &= ~1;
2572
+ cb.flags &= -2;
2563
2573
  }
2564
2574
  }
2565
2575
  }
@@ -2584,10 +2594,10 @@ function flushPostFlushCbs(seen) {
2584
2594
  continue;
2585
2595
  }
2586
2596
  if (cb.flags & 4) {
2587
- cb.flags &= ~1;
2597
+ cb.flags &= -2;
2588
2598
  }
2589
2599
  if (!(cb.flags & 8)) cb();
2590
- cb.flags &= ~1;
2600
+ cb.flags &= -2;
2591
2601
  }
2592
2602
  activePostFlushCbs = null;
2593
2603
  postFlushIndex = 0;
@@ -2623,7 +2633,7 @@ function flushJobs(seen) {
2623
2633
  for (; flushIndex < queue.length; flushIndex++) {
2624
2634
  const job = queue[flushIndex];
2625
2635
  if (job) {
2626
- job.flags &= ~1;
2636
+ job.flags &= -2;
2627
2637
  }
2628
2638
  }
2629
2639
  flushIndex = -1;
@@ -3591,15 +3601,16 @@ const TeleportImpl = {
3591
3601
  updateCssVars(n2, true);
3592
3602
  }
3593
3603
  if (isTeleportDeferred(n2.props)) {
3604
+ n2.el.__isMounted = false;
3594
3605
  queuePostRenderEffect(() => {
3595
3606
  mountToTarget();
3596
- n2.el.__isMounted = true;
3607
+ delete n2.el.__isMounted;
3597
3608
  }, parentSuspense);
3598
3609
  } else {
3599
3610
  mountToTarget();
3600
3611
  }
3601
3612
  } else {
3602
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
3613
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
3603
3614
  queuePostRenderEffect(() => {
3604
3615
  TeleportImpl.process(
3605
3616
  n1,
@@ -3613,7 +3624,6 @@ const TeleportImpl = {
3613
3624
  optimized,
3614
3625
  internals
3615
3626
  );
3616
- delete n1.el.__isMounted;
3617
3627
  }, parentSuspense);
3618
3628
  return;
3619
3629
  }
@@ -3640,7 +3650,7 @@ const TeleportImpl = {
3640
3650
  namespace,
3641
3651
  slotScopeIds
3642
3652
  );
3643
- traverseStaticChildren(n1, n2, true);
3653
+ traverseStaticChildren(n1, n2, false);
3644
3654
  } else if (!optimized) {
3645
3655
  patchChildren(
3646
3656
  n1,
@@ -4604,6 +4614,8 @@ function createHydrationFunctions(rendererInternals) {
4604
4614
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
4605
4615
  const content = el.content.firstChild;
4606
4616
  if (needCallTransitionHooks) {
4617
+ const cls = content.getAttribute("class");
4618
+ if (cls) content.$cls = cls;
4607
4619
  transition.beforeEnter(content);
4608
4620
  }
4609
4621
  replaceNode(content, el, parentComponent);
@@ -4856,7 +4868,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
4856
4868
  let actual;
4857
4869
  let expected;
4858
4870
  if (key === "class") {
4859
- actual = el.getAttribute("class");
4871
+ if (el.$cls) {
4872
+ actual = el.$cls;
4873
+ delete el.$cls;
4874
+ } else {
4875
+ actual = el.getAttribute("class");
4876
+ }
4860
4877
  expected = normalizeClass(clientValue);
4861
4878
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
4862
4879
  mismatchType = 2 /* CLASS */;
@@ -5151,14 +5168,25 @@ function defineAsyncComponent(source) {
5151
5168
  name: "AsyncComponentWrapper",
5152
5169
  __asyncLoader: load,
5153
5170
  __asyncHydrate(el, instance, hydrate) {
5171
+ let patched = false;
5154
5172
  const doHydrate = hydrateStrategy ? () => {
5173
+ const performHydrate = () => {
5174
+ if (patched) {
5175
+ warn$1(
5176
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5177
+ );
5178
+ return;
5179
+ }
5180
+ hydrate();
5181
+ };
5155
5182
  const teardown = hydrateStrategy(
5156
- hydrate,
5183
+ performHydrate,
5157
5184
  (cb) => forEachElement(el, cb)
5158
5185
  );
5159
5186
  if (teardown) {
5160
5187
  (instance.bum || (instance.bum = [])).push(teardown);
5161
5188
  }
5189
+ (instance.u || (instance.u = [])).push(() => patched = true);
5162
5190
  } : hydrate;
5163
5191
  if (resolvedComp) {
5164
5192
  doHydrate();
@@ -5328,6 +5356,9 @@ const KeepAliveImpl = {
5328
5356
  {
5329
5357
  devtoolsComponentAdded(instance2);
5330
5358
  }
5359
+ {
5360
+ instance2.__keepAliveStorageContainer = storageContainer;
5361
+ }
5331
5362
  };
5332
5363
  function unmount(vnode) {
5333
5364
  resetShapeFlag(vnode);
@@ -5415,7 +5446,7 @@ const KeepAliveImpl = {
5415
5446
  );
5416
5447
  const { include, exclude, max } = props;
5417
5448
  if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {
5418
- vnode.shapeFlag &= ~256;
5449
+ vnode.shapeFlag &= -257;
5419
5450
  current = vnode;
5420
5451
  return rawVNode;
5421
5452
  }
@@ -5506,8 +5537,8 @@ function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
5506
5537
  }, target);
5507
5538
  }
5508
5539
  function resetShapeFlag(vnode) {
5509
- vnode.shapeFlag &= ~256;
5510
- vnode.shapeFlag &= ~512;
5540
+ vnode.shapeFlag &= -257;
5541
+ vnode.shapeFlag &= -513;
5511
5542
  }
5512
5543
  function getInnerChild(vnode) {
5513
5544
  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
@@ -5909,14 +5940,16 @@ function renderList(source, renderItem, cache, index) {
5909
5940
  if (sourceIsArray || isString(source)) {
5910
5941
  const sourceIsReactiveArray = sourceIsArray && isReactive(source);
5911
5942
  let needsWrap = false;
5943
+ let isReadonlySource = false;
5912
5944
  if (sourceIsReactiveArray) {
5913
5945
  needsWrap = !isShallow(source);
5946
+ isReadonlySource = isReadonly(source);
5914
5947
  source = shallowReadArray(source);
5915
5948
  }
5916
5949
  ret = new Array(source.length);
5917
5950
  for (let i = 0, l = source.length; i < l; i++) {
5918
5951
  ret[i] = renderItem(
5919
- needsWrap ? toReactive(source[i]) : source[i],
5952
+ needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],
5920
5953
  i,
5921
5954
  void 0,
5922
5955
  cached && cached[i]
@@ -7168,7 +7201,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7168
7201
  return vm;
7169
7202
  }
7170
7203
  }
7171
- Vue.version = `2.6.14-compat:${"3.5.13"}`;
7204
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
7172
7205
  Vue.config = singletonApp.config;
7173
7206
  Vue.use = (plugin, ...options) => {
7174
7207
  if (plugin && isFunction(plugin.install)) {
@@ -7662,11 +7695,9 @@ function createAppAPI(render, hydrate) {
7662
7695
  }
7663
7696
  {
7664
7697
  context.reload = () => {
7665
- render(
7666
- cloneVNode(vnode),
7667
- rootContainer,
7668
- namespace
7669
- );
7698
+ const cloned = cloneVNode(vnode);
7699
+ cloned.el = null;
7700
+ render(cloned, rootContainer, namespace);
7670
7701
  };
7671
7702
  }
7672
7703
  if (isHydrate && hydrate) {
@@ -7716,9 +7747,15 @@ If you want to remount the same app, move your app creation logic into a factory
7716
7747
  },
7717
7748
  provide(key, value) {
7718
7749
  if (key in context.provides) {
7719
- warn$1(
7720
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7721
- );
7750
+ if (hasOwn(context.provides, key)) {
7751
+ warn$1(
7752
+ `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7753
+ );
7754
+ } else {
7755
+ warn$1(
7756
+ `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.`
7757
+ );
7758
+ }
7722
7759
  }
7723
7760
  context.provides[key] = value;
7724
7761
  return app;
@@ -7758,7 +7795,7 @@ function provide(key, value) {
7758
7795
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7759
7796
  const instance = currentInstance || currentRenderingInstance;
7760
7797
  if (instance || currentApp) {
7761
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7798
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7762
7799
  if (provides && key in provides) {
7763
7800
  return provides[key];
7764
7801
  } else if (arguments.length > 1) {
@@ -8264,7 +8301,7 @@ const normalizeSlot = (key, rawSlot, ctx) => {
8264
8301
  return rawSlot;
8265
8302
  }
8266
8303
  const normalized = withCtx((...args) => {
8267
- if (currentInstance && (!ctx || ctx.root === currentInstance.root)) {
8304
+ if (currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) {
8268
8305
  warn$1(
8269
8306
  `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
8270
8307
  );
@@ -8303,7 +8340,7 @@ const normalizeVNodeSlots = (instance, children) => {
8303
8340
  };
8304
8341
  const assignSlots = (slots, children, optimized) => {
8305
8342
  for (const key in children) {
8306
- if (optimized || key !== "_") {
8343
+ if (optimized || !isInternalKey(key)) {
8307
8344
  slots[key] = children[key];
8308
8345
  }
8309
8346
  }
@@ -8827,7 +8864,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8827
8864
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8828
8865
  // which also requires the correct parent container
8829
8866
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8830
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
8867
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8831
8868
  // In other cases, the parent container is not actually used so we
8832
8869
  // just pass the block element here to avoid a DOM parentNode call.
8833
8870
  fallbackContainer
@@ -8990,8 +9027,8 @@ function baseCreateRenderer(options, createHydrationFns) {
8990
9027
  endMeasure(instance, `init`);
8991
9028
  }
8992
9029
  }
9030
+ if (isHmrUpdating) initialVNode.el = null;
8993
9031
  if (instance.asyncDep) {
8994
- if (isHmrUpdating) initialVNode.el = null;
8995
9032
  parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
8996
9033
  if (!initialVNode.el) {
8997
9034
  const placeholder = instance.subTree = createVNode(Comment);
@@ -9577,7 +9614,13 @@ function baseCreateRenderer(options, createHydrationFns) {
9577
9614
  queuePostRenderEffect(() => transition.enter(el), parentSuspense);
9578
9615
  } else {
9579
9616
  const { leave, delayLeave, afterLeave } = transition;
9580
- const remove2 = () => hostInsert(el, container, anchor);
9617
+ const remove2 = () => {
9618
+ if (vnode.ctx.isUnmounted) {
9619
+ hostRemove(el);
9620
+ } else {
9621
+ hostInsert(el, container, anchor);
9622
+ }
9623
+ };
9581
9624
  const performLeave = () => {
9582
9625
  leave(el, () => {
9583
9626
  remove2();
@@ -9610,7 +9653,9 @@ function baseCreateRenderer(options, createHydrationFns) {
9610
9653
  optimized = false;
9611
9654
  }
9612
9655
  if (ref != null) {
9656
+ pauseTracking();
9613
9657
  setRef(ref, null, parentSuspense, vnode, true);
9658
+ resetTracking();
9614
9659
  }
9615
9660
  if (cacheIndex != null) {
9616
9661
  parentComponent.renderCache[cacheIndex] = void 0;
@@ -9722,12 +9767,27 @@ function baseCreateRenderer(options, createHydrationFns) {
9722
9767
  if (instance.type.__hmrId) {
9723
9768
  unregisterHMR(instance);
9724
9769
  }
9725
- const { bum, scope, job, subTree, um, m, a } = instance;
9770
+ const {
9771
+ bum,
9772
+ scope,
9773
+ job,
9774
+ subTree,
9775
+ um,
9776
+ m,
9777
+ a,
9778
+ parent,
9779
+ slots: { __: slotCacheKeys }
9780
+ } = instance;
9726
9781
  invalidateMount(m);
9727
9782
  invalidateMount(a);
9728
9783
  if (bum) {
9729
9784
  invokeArrayFns(bum);
9730
9785
  }
9786
+ if (parent && isArray(slotCacheKeys)) {
9787
+ slotCacheKeys.forEach((v) => {
9788
+ parent.renderCache[v] = void 0;
9789
+ });
9790
+ }
9731
9791
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) {
9732
9792
  instance.emit("hook:beforeDestroy");
9733
9793
  }
@@ -9832,8 +9892,8 @@ function toggleRecurse({ effect, job }, allowed) {
9832
9892
  effect.flags |= 32;
9833
9893
  job.flags |= 4;
9834
9894
  } else {
9835
- effect.flags &= ~32;
9836
- job.flags &= ~4;
9895
+ effect.flags &= -33;
9896
+ job.flags &= -5;
9837
9897
  }
9838
9898
  }
9839
9899
  function needTransition(parentSuspense, transition) {
@@ -9860,6 +9920,9 @@ function traverseStaticChildren(n1, n2, shallow = false) {
9860
9920
  if (c2.type === Comment && !c2.el) {
9861
9921
  c2.el = c1.el;
9862
9922
  }
9923
+ {
9924
+ c2.el && (c2.el.__vnode = c2);
9925
+ }
9863
9926
  }
9864
9927
  }
9865
9928
  }
@@ -11290,8 +11353,8 @@ function isSameVNodeType(n1, n2) {
11290
11353
  if (n2.shapeFlag & 6 && n1.component) {
11291
11354
  const dirtyInstances = hmrDirtyComponents.get(n2.type);
11292
11355
  if (dirtyInstances && dirtyInstances.has(n1.component)) {
11293
- n1.shapeFlag &= ~256;
11294
- n2.shapeFlag &= ~512;
11356
+ n1.shapeFlag &= -257;
11357
+ n2.shapeFlag &= -513;
11295
11358
  return false;
11296
11359
  }
11297
11360
  }
@@ -11762,7 +11825,7 @@ function setupComponent(instance, isSSR = false, optimized = false) {
11762
11825
  const { props, children } = instance.vnode;
11763
11826
  const isStateful = isStatefulComponent(instance);
11764
11827
  initProps(instance, props, isStateful, isSSR);
11765
- initSlots(instance, children, optimized);
11828
+ initSlots(instance, children, optimized || isSSR);
11766
11829
  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
11767
11830
  isSSR && setInSSRSetupState(false);
11768
11831
  return setupResult;
@@ -12105,13 +12168,15 @@ function initCustomFormatter() {
12105
12168
  if (obj.__isVue) {
12106
12169
  return ["div", vueStyle, `VueInstance`];
12107
12170
  } else if (isRef(obj)) {
12171
+ pauseTracking();
12172
+ const value = obj.value;
12173
+ resetTracking();
12108
12174
  return [
12109
12175
  "div",
12110
12176
  {},
12111
12177
  ["span", vueStyle, genRefFlag(obj)],
12112
12178
  "<",
12113
- // avoid debugger accessing value affecting behavior
12114
- formatValue("_value" in obj ? obj._value : obj),
12179
+ formatValue(value),
12115
12180
  `>`
12116
12181
  ];
12117
12182
  } else if (isReactive(obj)) {
@@ -12292,7 +12357,7 @@ function isMemoSame(cached, memo) {
12292
12357
  return true;
12293
12358
  }
12294
12359
 
12295
- const version = "3.5.13";
12360
+ const version = "3.5.15";
12296
12361
  const warn = warn$1 ;
12297
12362
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12298
12363
  const devtools = devtools$1 ;
@@ -12992,7 +13057,7 @@ function compatCoerceAttr(el, key, value, instance = null) {
12992
13057
  el.setAttribute(key, v2CoercedValue);
12993
13058
  return true;
12994
13059
  }
12995
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13060
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
12996
13061
  compatUtils.warnDeprecation(
12997
13062
  "ATTR_FALSE_VALUE",
12998
13063
  instance,
@@ -13198,7 +13263,7 @@ function shouldSetAsProp(el, key, value, isSVG) {
13198
13263
  }
13199
13264
  return false;
13200
13265
  }
13201
- if (key === "spellcheck" || key === "draggable" || key === "translate") {
13266
+ if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
13202
13267
  return false;
13203
13268
  }
13204
13269
  if (key === "form") {
@@ -13281,13 +13346,10 @@ class VueElement extends BaseClass {
13281
13346
  this._root = this;
13282
13347
  }
13283
13348
  }
13284
- if (!this._def.__asyncLoader) {
13285
- this._resolveProps(this._def);
13286
- }
13287
13349
  }
13288
13350
  connectedCallback() {
13289
13351
  if (!this.isConnected) return;
13290
- if (!this.shadowRoot) {
13352
+ if (!this.shadowRoot && !this._resolved) {
13291
13353
  this._parseSlots();
13292
13354
  }
13293
13355
  this._connected = true;
@@ -13300,8 +13362,7 @@ class VueElement extends BaseClass {
13300
13362
  }
13301
13363
  if (!this._instance) {
13302
13364
  if (this._resolved) {
13303
- this._setParent();
13304
- this._update();
13365
+ this._mount(this._def);
13305
13366
  } else {
13306
13367
  if (parent && parent._pendingResolve) {
13307
13368
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13317,7 +13378,15 @@ class VueElement extends BaseClass {
13317
13378
  _setParent(parent = this._parent) {
13318
13379
  if (parent) {
13319
13380
  this._instance.parent = parent._instance;
13320
- this._instance.provides = parent._instance.provides;
13381
+ this._inheritParentContext(parent);
13382
+ }
13383
+ }
13384
+ _inheritParentContext(parent = this._parent) {
13385
+ if (parent && this._app) {
13386
+ Object.setPrototypeOf(
13387
+ this._app._context.provides,
13388
+ parent._instance.provides
13389
+ );
13321
13390
  }
13322
13391
  }
13323
13392
  disconnectedCallback() {
@@ -13367,9 +13436,7 @@ class VueElement extends BaseClass {
13367
13436
  }
13368
13437
  }
13369
13438
  this._numberProps = numberProps;
13370
- if (isAsync) {
13371
- this._resolveProps(def);
13372
- }
13439
+ this._resolveProps(def);
13373
13440
  if (this.shadowRoot) {
13374
13441
  this._applyStyles(styles);
13375
13442
  } else if (styles) {
@@ -13393,6 +13460,7 @@ class VueElement extends BaseClass {
13393
13460
  def.name = "VueElement";
13394
13461
  }
13395
13462
  this._app = this._createApp(def);
13463
+ this._inheritParentContext();
13396
13464
  if (def.configureApp) {
13397
13465
  def.configureApp(this._app);
13398
13466
  }
@@ -13477,7 +13545,9 @@ class VueElement extends BaseClass {
13477
13545
  }
13478
13546
  }
13479
13547
  _update() {
13480
- render(this._createVNode(), this._root);
13548
+ const vnode = this._createVNode();
13549
+ if (this._app) vnode.appContext = this._app._context;
13550
+ render(vnode, this._root);
13481
13551
  }
13482
13552
  _createVNode() {
13483
13553
  const baseProps = {};
@@ -13690,6 +13760,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
13690
13760
  instance.vnode.el,
13691
13761
  moveClass
13692
13762
  )) {
13763
+ prevChildren = [];
13693
13764
  return;
13694
13765
  }
13695
13766
  prevChildren.forEach(callPendingCbs);
@@ -13713,6 +13784,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
13713
13784
  };
13714
13785
  el.addEventListener("transitionend", cb);
13715
13786
  });
13787
+ prevChildren = [];
13716
13788
  });
13717
13789
  return () => {
13718
13790
  const rawProps = toRaw(props);
@@ -16210,7 +16282,7 @@ const tokenizer = new Tokenizer(stack, {
16210
16282
  "COMPILER_V_BIND_SYNC",
16211
16283
  currentOptions,
16212
16284
  currentProp.loc,
16213
- currentProp.rawName
16285
+ currentProp.arg.loc.source
16214
16286
  )) {
16215
16287
  currentProp.name = "model";
16216
16288
  currentProp.modifiers.splice(syncIndex, 1);
@@ -16786,6 +16858,7 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16786
16858
  }
16787
16859
  }
16788
16860
  let cachedAsArray = false;
16861
+ const slotCacheKeys = [];
16789
16862
  if (toCache.length === children.length && node.type === 1) {
16790
16863
  if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {
16791
16864
  node.codegenNode.children = getCacheExpression(
@@ -16795,6 +16868,7 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16795
16868
  } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {
16796
16869
  const slot = getSlotNode(node.codegenNode, "default");
16797
16870
  if (slot) {
16871
+ slotCacheKeys.push(context.cached.length);
16798
16872
  slot.returns = getCacheExpression(
16799
16873
  createArrayExpression(slot.returns)
16800
16874
  );
@@ -16804,6 +16878,7 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16804
16878
  const slotName = findDir(node, "slot", true);
16805
16879
  const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg);
16806
16880
  if (slot) {
16881
+ slotCacheKeys.push(context.cached.length);
16807
16882
  slot.returns = getCacheExpression(
16808
16883
  createArrayExpression(slot.returns)
16809
16884
  );
@@ -16813,9 +16888,18 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16813
16888
  }
16814
16889
  if (!cachedAsArray) {
16815
16890
  for (const child of toCache) {
16891
+ slotCacheKeys.push(context.cached.length);
16816
16892
  child.codegenNode = context.cache(child.codegenNode);
16817
16893
  }
16818
16894
  }
16895
+ if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {
16896
+ node.codegenNode.children.properties.push(
16897
+ createObjectProperty(
16898
+ `__`,
16899
+ createSimpleExpression(JSON.stringify(slotCacheKeys), false)
16900
+ )
16901
+ );
16902
+ }
16819
16903
  function getCacheExpression(value) {
16820
16904
  const exp = context.cache(value);
16821
16905
  if (inFor && context.hmr) {
@@ -18976,9 +19060,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
18976
19060
  hasDynamicKeys = true;
18977
19061
  if (exp) {
18978
19062
  if (isVBind) {
18979
- pushRefVForMarker();
18980
- pushMergeArg();
18981
19063
  {
19064
+ pushMergeArg();
18982
19065
  {
18983
19066
  const hasOverridableKeys = mergeArgs.some((arg2) => {
18984
19067
  if (arg2.type === 15) {
@@ -19008,6 +19091,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19008
19091
  continue;
19009
19092
  }
19010
19093
  }
19094
+ pushRefVForMarker();
19095
+ pushMergeArg();
19011
19096
  mergeArgs.push(exp);
19012
19097
  } else {
19013
19098
  pushMergeArg({
@@ -19516,8 +19601,7 @@ const transformModel$1 = (dir, node, context) => {
19516
19601
  context.onError(createCompilerError(44, exp.loc));
19517
19602
  return createTransformProps();
19518
19603
  }
19519
- const maybeRef = false;
19520
- if (!expString.trim() || !isMemberExpression(exp) && !maybeRef) {
19604
+ if (!expString.trim() || !isMemberExpression(exp) && true) {
19521
19605
  context.onError(
19522
19606
  createCompilerError(42, exp.loc)
19523
19607
  );
@@ -20241,6 +20325,9 @@ const ignoreSideEffectTags = (node, context) => {
20241
20325
  };
20242
20326
 
20243
20327
  function isValidHTMLNesting(parent, child) {
20328
+ if (parent === "template") {
20329
+ return true;
20330
+ }
20244
20331
  if (parent in onlyValidChildren) {
20245
20332
  return onlyValidChildren[parent].has(child);
20246
20333
  }