@vue/compat 3.5.6 → 3.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.6
2
+ * @vue/compat v3.5.8
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -717,7 +717,7 @@ function prepareDeps(sub) {
717
717
  link.dep.activeLink = link;
718
718
  }
719
719
  }
720
- function cleanupDeps(sub) {
720
+ function cleanupDeps(sub, fromComputed = false) {
721
721
  let head;
722
722
  let tail = sub.depsTail;
723
723
  let link = tail;
@@ -725,7 +725,7 @@ function cleanupDeps(sub) {
725
725
  const prev = link.prevDep;
726
726
  if (link.version === -1) {
727
727
  if (link === tail) tail = prev;
728
- removeSub(link);
728
+ removeSub(link, fromComputed);
729
729
  removeDep(link);
730
730
  } else {
731
731
  head = link;
@@ -780,11 +780,11 @@ function refreshComputed(computed) {
780
780
  } finally {
781
781
  activeSub = prevSub;
782
782
  shouldTrack = prevShouldTrack;
783
- cleanupDeps(computed);
783
+ cleanupDeps(computed, true);
784
784
  computed.flags &= ~2;
785
785
  }
786
786
  }
787
- function removeSub(link) {
787
+ function removeSub(link, fromComputed = false) {
788
788
  const { dep, prevSub, nextSub } = link;
789
789
  if (prevSub) {
790
790
  prevSub.nextSub = nextSub;
@@ -797,10 +797,18 @@ function removeSub(link) {
797
797
  if (dep.subs === link) {
798
798
  dep.subs = prevSub;
799
799
  }
800
- if (!dep.subs && dep.computed) {
801
- dep.computed.flags &= ~4;
802
- for (let l = dep.computed.deps; l; l = l.nextDep) {
803
- removeSub(l);
800
+ if (dep.subsHead === link) {
801
+ dep.subsHead = nextSub;
802
+ }
803
+ if (!dep.subs) {
804
+ if (dep.computed) {
805
+ dep.computed.flags &= ~4;
806
+ for (let l = dep.computed.deps; l; l = l.nextDep) {
807
+ removeSub(l, true);
808
+ }
809
+ } else if (dep.map && !fromComputed) {
810
+ dep.map.delete(dep.key);
811
+ if (!dep.map.size) targetMap.delete(dep.target);
804
812
  }
805
813
  }
806
814
  }
@@ -881,6 +889,12 @@ class Dep {
881
889
  * Doubly linked list representing the subscribing effects (tail)
882
890
  */
883
891
  this.subs = void 0;
892
+ /**
893
+ * For object property deps cleanup
894
+ */
895
+ this.target = void 0;
896
+ this.map = void 0;
897
+ this.key = void 0;
884
898
  {
885
899
  this.subsHead = void 0;
886
900
  }
@@ -1001,6 +1015,9 @@ function track(target, type, key) {
1001
1015
  let dep = depsMap.get(key);
1002
1016
  if (!dep) {
1003
1017
  depsMap.set(key, dep = new Dep());
1018
+ dep.target = target;
1019
+ dep.map = depsMap;
1020
+ dep.key = key;
1004
1021
  }
1005
1022
  {
1006
1023
  dep.track({
@@ -1877,13 +1894,15 @@ class RefImpl {
1877
1894
  }
1878
1895
  }
1879
1896
  function triggerRef(ref2) {
1880
- {
1881
- ref2.dep.trigger({
1882
- target: ref2,
1883
- type: "set",
1884
- key: "value",
1885
- newValue: ref2._value
1886
- });
1897
+ if (ref2.dep) {
1898
+ {
1899
+ ref2.dep.trigger({
1900
+ target: ref2,
1901
+ type: "set",
1902
+ key: "value",
1903
+ newValue: ref2._value
1904
+ });
1905
+ }
1887
1906
  }
1888
1907
  }
1889
1908
  function unref(ref2) {
@@ -2631,7 +2650,9 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
2631
2650
  cb.flags &= ~1;
2632
2651
  }
2633
2652
  cb();
2634
- cb.flags &= ~1;
2653
+ if (!(cb.flags & 4)) {
2654
+ cb.flags &= ~1;
2655
+ }
2635
2656
  }
2636
2657
  }
2637
2658
  }
@@ -2687,7 +2708,9 @@ function flushJobs(seen) {
2687
2708
  job.i,
2688
2709
  job.i ? 15 : 14
2689
2710
  );
2690
- job.flags &= ~1;
2711
+ if (!(job.flags & 4)) {
2712
+ job.flags &= ~1;
2713
+ }
2691
2714
  }
2692
2715
  }
2693
2716
  } finally {
@@ -5017,6 +5040,11 @@ const hydrateOnIdle = (timeout = 1e4) => (hydrate) => {
5017
5040
  const id = requestIdleCallback(hydrate, { timeout });
5018
5041
  return () => cancelIdleCallback(id);
5019
5042
  };
5043
+ function elementIsVisibleInViewport(el) {
5044
+ const { top, left, bottom, right } = el.getBoundingClientRect();
5045
+ const { innerHeight, innerWidth } = window;
5046
+ return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);
5047
+ }
5020
5048
  const hydrateOnVisible = (opts) => (hydrate, forEach) => {
5021
5049
  const ob = new IntersectionObserver((entries) => {
5022
5050
  for (const e of entries) {
@@ -5026,7 +5054,15 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
5026
5054
  break;
5027
5055
  }
5028
5056
  }, opts);
5029
- forEach((el) => ob.observe(el));
5057
+ forEach((el) => {
5058
+ if (!(el instanceof Element)) return;
5059
+ if (elementIsVisibleInViewport(el)) {
5060
+ hydrate();
5061
+ ob.disconnect();
5062
+ return false;
5063
+ }
5064
+ ob.observe(el);
5065
+ });
5030
5066
  return () => ob.disconnect();
5031
5067
  };
5032
5068
  const hydrateOnMediaQuery = (query) => (hydrate) => {
@@ -5071,7 +5107,10 @@ function forEachElement(node, cb) {
5071
5107
  let next = node.nextSibling;
5072
5108
  while (next) {
5073
5109
  if (next.nodeType === 1) {
5074
- cb(next);
5110
+ const result = cb(next);
5111
+ if (result === false) {
5112
+ break;
5113
+ }
5075
5114
  } else if (isComment(next)) {
5076
5115
  if (next.data === "]") {
5077
5116
  if (--depth === 0) break;
@@ -7164,7 +7203,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7164
7203
  return vm;
7165
7204
  }
7166
7205
  }
7167
- Vue.version = `2.6.14-compat:${"3.5.6"}`;
7206
+ Vue.version = `2.6.14-compat:${"3.5.8"}`;
7168
7207
  Vue.config = singletonApp.config;
7169
7208
  Vue.use = (plugin, ...options) => {
7170
7209
  if (plugin && isFunction(plugin.install)) {
@@ -12279,7 +12318,7 @@ function isMemoSame(cached, memo) {
12279
12318
  return true;
12280
12319
  }
12281
12320
 
12282
- const version = "3.5.6";
12321
+ const version = "3.5.8";
12283
12322
  const warn = warn$1 ;
12284
12323
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12285
12324
  const devtools = devtools$1 ;
@@ -12622,7 +12661,7 @@ function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
12622
12661
  resolve();
12623
12662
  }
12624
12663
  };
12625
- if (explicitTimeout) {
12664
+ if (explicitTimeout != null) {
12626
12665
  return setTimeout(resolveIfNotStale, explicitTimeout);
12627
12666
  }
12628
12667
  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
@@ -20403,7 +20442,7 @@ const transformModel$1 = (dir, node, context) => {
20403
20442
  );
20404
20443
  return createTransformProps();
20405
20444
  }
20406
- const rawExp = exp.loc.source;
20445
+ const rawExp = exp.loc.source.trim();
20407
20446
  const expString = exp.type === 4 ? exp.content : rawExp;
20408
20447
  const bindingType = context.bindingMetadata[rawExp];
20409
20448
  if (bindingType === "props" || bindingType === "props-aliased") {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.6
2
+ * @vue/compat v3.5.8
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -623,7 +623,7 @@ function prepareDeps(sub) {
623
623
  link.dep.activeLink = link;
624
624
  }
625
625
  }
626
- function cleanupDeps(sub) {
626
+ function cleanupDeps(sub, fromComputed = false) {
627
627
  let head;
628
628
  let tail = sub.depsTail;
629
629
  let link = tail;
@@ -631,7 +631,7 @@ function cleanupDeps(sub) {
631
631
  const prev = link.prevDep;
632
632
  if (link.version === -1) {
633
633
  if (link === tail) tail = prev;
634
- removeSub(link);
634
+ removeSub(link, fromComputed);
635
635
  removeDep(link);
636
636
  } else {
637
637
  head = link;
@@ -686,11 +686,11 @@ function refreshComputed(computed) {
686
686
  } finally {
687
687
  activeSub = prevSub;
688
688
  shouldTrack = prevShouldTrack;
689
- cleanupDeps(computed);
689
+ cleanupDeps(computed, true);
690
690
  computed.flags &= ~2;
691
691
  }
692
692
  }
693
- function removeSub(link) {
693
+ function removeSub(link, fromComputed = false) {
694
694
  const { dep, prevSub, nextSub } = link;
695
695
  if (prevSub) {
696
696
  prevSub.nextSub = nextSub;
@@ -703,10 +703,15 @@ function removeSub(link) {
703
703
  if (dep.subs === link) {
704
704
  dep.subs = prevSub;
705
705
  }
706
- if (!dep.subs && dep.computed) {
707
- dep.computed.flags &= ~4;
708
- for (let l = dep.computed.deps; l; l = l.nextDep) {
709
- removeSub(l);
706
+ if (!dep.subs) {
707
+ if (dep.computed) {
708
+ dep.computed.flags &= ~4;
709
+ for (let l = dep.computed.deps; l; l = l.nextDep) {
710
+ removeSub(l, true);
711
+ }
712
+ } else if (dep.map && !fromComputed) {
713
+ dep.map.delete(dep.key);
714
+ if (!dep.map.size) targetMap.delete(dep.target);
710
715
  }
711
716
  }
712
717
  }
@@ -787,6 +792,12 @@ class Dep {
787
792
  * Doubly linked list representing the subscribing effects (tail)
788
793
  */
789
794
  this.subs = void 0;
795
+ /**
796
+ * For object property deps cleanup
797
+ */
798
+ this.target = void 0;
799
+ this.map = void 0;
800
+ this.key = void 0;
790
801
  }
791
802
  track(debugInfo) {
792
803
  if (!activeSub || !shouldTrack || activeSub === this.computed) {
@@ -878,6 +889,9 @@ function track(target, type, key) {
878
889
  let dep = depsMap.get(key);
879
890
  if (!dep) {
880
891
  depsMap.set(key, dep = new Dep());
892
+ dep.target = target;
893
+ dep.map = depsMap;
894
+ dep.key = key;
881
895
  }
882
896
  {
883
897
  dep.track();
@@ -1693,8 +1707,10 @@ class RefImpl {
1693
1707
  }
1694
1708
  }
1695
1709
  function triggerRef(ref2) {
1696
- {
1697
- ref2.dep.trigger();
1710
+ if (ref2.dep) {
1711
+ {
1712
+ ref2.dep.trigger();
1713
+ }
1698
1714
  }
1699
1715
  }
1700
1716
  function unref(ref2) {
@@ -2276,7 +2292,9 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
2276
2292
  cb.flags &= ~1;
2277
2293
  }
2278
2294
  cb();
2279
- cb.flags &= ~1;
2295
+ if (!(cb.flags & 4)) {
2296
+ cb.flags &= ~1;
2297
+ }
2280
2298
  }
2281
2299
  }
2282
2300
  }
@@ -2320,7 +2338,9 @@ function flushJobs(seen) {
2320
2338
  job.i,
2321
2339
  job.i ? 15 : 14
2322
2340
  );
2323
- job.flags &= ~1;
2341
+ if (!(job.flags & 4)) {
2342
+ job.flags &= ~1;
2343
+ }
2324
2344
  }
2325
2345
  }
2326
2346
  } finally {
@@ -3905,6 +3925,11 @@ const hydrateOnIdle = (timeout = 1e4) => (hydrate) => {
3905
3925
  const id = requestIdleCallback(hydrate, { timeout });
3906
3926
  return () => cancelIdleCallback(id);
3907
3927
  };
3928
+ function elementIsVisibleInViewport(el) {
3929
+ const { top, left, bottom, right } = el.getBoundingClientRect();
3930
+ const { innerHeight, innerWidth } = window;
3931
+ return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);
3932
+ }
3908
3933
  const hydrateOnVisible = (opts) => (hydrate, forEach) => {
3909
3934
  const ob = new IntersectionObserver((entries) => {
3910
3935
  for (const e of entries) {
@@ -3914,7 +3939,15 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
3914
3939
  break;
3915
3940
  }
3916
3941
  }, opts);
3917
- forEach((el) => ob.observe(el));
3942
+ forEach((el) => {
3943
+ if (!(el instanceof Element)) return;
3944
+ if (elementIsVisibleInViewport(el)) {
3945
+ hydrate();
3946
+ ob.disconnect();
3947
+ return false;
3948
+ }
3949
+ ob.observe(el);
3950
+ });
3918
3951
  return () => ob.disconnect();
3919
3952
  };
3920
3953
  const hydrateOnMediaQuery = (query) => (hydrate) => {
@@ -3959,7 +3992,10 @@ function forEachElement(node, cb) {
3959
3992
  let next = node.nextSibling;
3960
3993
  while (next) {
3961
3994
  if (next.nodeType === 1) {
3962
- cb(next);
3995
+ const result = cb(next);
3996
+ if (result === false) {
3997
+ break;
3998
+ }
3963
3999
  } else if (isComment(next)) {
3964
4000
  if (next.data === "]") {
3965
4001
  if (--depth === 0) break;
@@ -5756,7 +5792,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5756
5792
  return vm;
5757
5793
  }
5758
5794
  }
5759
- Vue.version = `2.6.14-compat:${"3.5.6"}`;
5795
+ Vue.version = `2.6.14-compat:${"3.5.8"}`;
5760
5796
  Vue.config = singletonApp.config;
5761
5797
  Vue.use = (plugin, ...options) => {
5762
5798
  if (plugin && isFunction(plugin.install)) {
@@ -9877,7 +9913,7 @@ function isMemoSame(cached, memo) {
9877
9913
  return true;
9878
9914
  }
9879
9915
 
9880
- const version = "3.5.6";
9916
+ const version = "3.5.8";
9881
9917
  const warn$1 = NOOP;
9882
9918
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9883
9919
  const devtools = void 0;
@@ -10216,7 +10252,7 @@ function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
10216
10252
  resolve();
10217
10253
  }
10218
10254
  };
10219
- if (explicitTimeout) {
10255
+ if (explicitTimeout != null) {
10220
10256
  return setTimeout(resolveIfNotStale, explicitTimeout);
10221
10257
  }
10222
10258
  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
@@ -17658,7 +17694,7 @@ const transformModel$1 = (dir, node, context) => {
17658
17694
  );
17659
17695
  return createTransformProps();
17660
17696
  }
17661
- const rawExp = exp.loc.source;
17697
+ const rawExp = exp.loc.source.trim();
17662
17698
  const expString = exp.type === 4 ? exp.content : rawExp;
17663
17699
  const bindingType = context.bindingMetadata[rawExp];
17664
17700
  if (bindingType === "props" || bindingType === "props-aliased") {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.6
2
+ * @vue/compat v3.5.8
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -664,7 +664,7 @@ function prepareDeps(sub) {
664
664
  link.dep.activeLink = link;
665
665
  }
666
666
  }
667
- function cleanupDeps(sub) {
667
+ function cleanupDeps(sub, fromComputed = false) {
668
668
  let head;
669
669
  let tail = sub.depsTail;
670
670
  let link = tail;
@@ -672,7 +672,7 @@ function cleanupDeps(sub) {
672
672
  const prev = link.prevDep;
673
673
  if (link.version === -1) {
674
674
  if (link === tail) tail = prev;
675
- removeSub(link);
675
+ removeSub(link, fromComputed);
676
676
  removeDep(link);
677
677
  } else {
678
678
  head = link;
@@ -727,11 +727,11 @@ function refreshComputed(computed) {
727
727
  } finally {
728
728
  activeSub = prevSub;
729
729
  shouldTrack = prevShouldTrack;
730
- cleanupDeps(computed);
730
+ cleanupDeps(computed, true);
731
731
  computed.flags &= ~2;
732
732
  }
733
733
  }
734
- function removeSub(link) {
734
+ function removeSub(link, fromComputed = false) {
735
735
  const { dep, prevSub, nextSub } = link;
736
736
  if (prevSub) {
737
737
  prevSub.nextSub = nextSub;
@@ -744,10 +744,18 @@ function removeSub(link) {
744
744
  if (dep.subs === link) {
745
745
  dep.subs = prevSub;
746
746
  }
747
- if (!dep.subs && dep.computed) {
748
- dep.computed.flags &= ~4;
749
- for (let l = dep.computed.deps; l; l = l.nextDep) {
750
- removeSub(l);
747
+ if (dep.subsHead === link) {
748
+ dep.subsHead = nextSub;
749
+ }
750
+ if (!dep.subs) {
751
+ if (dep.computed) {
752
+ dep.computed.flags &= ~4;
753
+ for (let l = dep.computed.deps; l; l = l.nextDep) {
754
+ removeSub(l, true);
755
+ }
756
+ } else if (dep.map && !fromComputed) {
757
+ dep.map.delete(dep.key);
758
+ if (!dep.map.size) targetMap.delete(dep.target);
751
759
  }
752
760
  }
753
761
  }
@@ -828,6 +836,12 @@ class Dep {
828
836
  * Doubly linked list representing the subscribing effects (tail)
829
837
  */
830
838
  this.subs = void 0;
839
+ /**
840
+ * For object property deps cleanup
841
+ */
842
+ this.target = void 0;
843
+ this.map = void 0;
844
+ this.key = void 0;
831
845
  {
832
846
  this.subsHead = void 0;
833
847
  }
@@ -948,6 +962,9 @@ function track(target, type, key) {
948
962
  let dep = depsMap.get(key);
949
963
  if (!dep) {
950
964
  depsMap.set(key, dep = new Dep());
965
+ dep.target = target;
966
+ dep.map = depsMap;
967
+ dep.key = key;
951
968
  }
952
969
  {
953
970
  dep.track({
@@ -1824,13 +1841,15 @@ class RefImpl {
1824
1841
  }
1825
1842
  }
1826
1843
  function triggerRef(ref2) {
1827
- {
1828
- ref2.dep.trigger({
1829
- target: ref2,
1830
- type: "set",
1831
- key: "value",
1832
- newValue: ref2._value
1833
- });
1844
+ if (ref2.dep) {
1845
+ {
1846
+ ref2.dep.trigger({
1847
+ target: ref2,
1848
+ type: "set",
1849
+ key: "value",
1850
+ newValue: ref2._value
1851
+ });
1852
+ }
1834
1853
  }
1835
1854
  }
1836
1855
  function unref(ref2) {
@@ -2578,7 +2597,9 @@ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
2578
2597
  cb.flags &= ~1;
2579
2598
  }
2580
2599
  cb();
2581
- cb.flags &= ~1;
2600
+ if (!(cb.flags & 4)) {
2601
+ cb.flags &= ~1;
2602
+ }
2582
2603
  }
2583
2604
  }
2584
2605
  }
@@ -2634,7 +2655,9 @@ function flushJobs(seen) {
2634
2655
  job.i,
2635
2656
  job.i ? 15 : 14
2636
2657
  );
2637
- job.flags &= ~1;
2658
+ if (!(job.flags & 4)) {
2659
+ job.flags &= ~1;
2660
+ }
2638
2661
  }
2639
2662
  }
2640
2663
  } finally {
@@ -4964,6 +4987,11 @@ const hydrateOnIdle = (timeout = 1e4) => (hydrate) => {
4964
4987
  const id = requestIdleCallback(hydrate, { timeout });
4965
4988
  return () => cancelIdleCallback(id);
4966
4989
  };
4990
+ function elementIsVisibleInViewport(el) {
4991
+ const { top, left, bottom, right } = el.getBoundingClientRect();
4992
+ const { innerHeight, innerWidth } = window;
4993
+ return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);
4994
+ }
4967
4995
  const hydrateOnVisible = (opts) => (hydrate, forEach) => {
4968
4996
  const ob = new IntersectionObserver((entries) => {
4969
4997
  for (const e of entries) {
@@ -4973,7 +5001,15 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
4973
5001
  break;
4974
5002
  }
4975
5003
  }, opts);
4976
- forEach((el) => ob.observe(el));
5004
+ forEach((el) => {
5005
+ if (!(el instanceof Element)) return;
5006
+ if (elementIsVisibleInViewport(el)) {
5007
+ hydrate();
5008
+ ob.disconnect();
5009
+ return false;
5010
+ }
5011
+ ob.observe(el);
5012
+ });
4977
5013
  return () => ob.disconnect();
4978
5014
  };
4979
5015
  const hydrateOnMediaQuery = (query) => (hydrate) => {
@@ -5018,7 +5054,10 @@ function forEachElement(node, cb) {
5018
5054
  let next = node.nextSibling;
5019
5055
  while (next) {
5020
5056
  if (next.nodeType === 1) {
5021
- cb(next);
5057
+ const result = cb(next);
5058
+ if (result === false) {
5059
+ break;
5060
+ }
5022
5061
  } else if (isComment(next)) {
5023
5062
  if (next.data === "]") {
5024
5063
  if (--depth === 0) break;
@@ -7111,7 +7150,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7111
7150
  return vm;
7112
7151
  }
7113
7152
  }
7114
- Vue.version = `2.6.14-compat:${"3.5.6"}`;
7153
+ Vue.version = `2.6.14-compat:${"3.5.8"}`;
7115
7154
  Vue.config = singletonApp.config;
7116
7155
  Vue.use = (plugin, ...options) => {
7117
7156
  if (plugin && isFunction(plugin.install)) {
@@ -12226,7 +12265,7 @@ function isMemoSame(cached, memo) {
12226
12265
  return true;
12227
12266
  }
12228
12267
 
12229
- const version = "3.5.6";
12268
+ const version = "3.5.8";
12230
12269
  const warn = warn$1 ;
12231
12270
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12232
12271
  const devtools = devtools$1 ;
@@ -12569,7 +12608,7 @@ function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
12569
12608
  resolve();
12570
12609
  }
12571
12610
  };
12572
- if (explicitTimeout) {
12611
+ if (explicitTimeout != null) {
12573
12612
  return setTimeout(resolveIfNotStale, explicitTimeout);
12574
12613
  }
12575
12614
  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
@@ -19423,7 +19462,7 @@ const transformModel$1 = (dir, node, context) => {
19423
19462
  );
19424
19463
  return createTransformProps();
19425
19464
  }
19426
- const rawExp = exp.loc.source;
19465
+ const rawExp = exp.loc.source.trim();
19427
19466
  const expString = exp.type === 4 ? exp.content : rawExp;
19428
19467
  const bindingType = context.bindingMetadata[rawExp];
19429
19468
  if (bindingType === "props" || bindingType === "props-aliased") {