@vue/compat 3.2.27 → 3.2.31

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.
@@ -206,8 +206,20 @@ const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,col
206
206
  'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
207
207
  'text,textPath,title,tspan,unknown,use,view';
208
208
  const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
209
+ /**
210
+ * Compiler only.
211
+ * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
212
+ */
209
213
  const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
214
+ /**
215
+ * Compiler only.
216
+ * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
217
+ */
210
218
  const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
219
+ /**
220
+ * Compiler only.
221
+ * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
222
+ */
211
223
  const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
212
224
 
213
225
  function looseCompareArrays(a, b) {
@@ -265,13 +277,15 @@ function looseIndexOf(arr, val) {
265
277
  * @private
266
278
  */
267
279
  const toDisplayString = (val) => {
268
- return val == null
269
- ? ''
270
- : isArray(val) ||
271
- (isObject(val) &&
272
- (val.toString === objectToString || !isFunction(val.toString)))
273
- ? JSON.stringify(val, replacer, 2)
274
- : String(val);
280
+ return isString(val)
281
+ ? val
282
+ : val == null
283
+ ? ''
284
+ : isArray(val) ||
285
+ (isObject(val) &&
286
+ (val.toString === objectToString || !isFunction(val.toString)))
287
+ ? JSON.stringify(val, replacer, 2)
288
+ : String(val);
275
289
  };
276
290
  const replacer = (_key, val) => {
277
291
  // can't use isRef here since @vue/shared has no deps
@@ -346,6 +360,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
346
360
  'onVnodeBeforeMount,onVnodeMounted,' +
347
361
  'onVnodeBeforeUpdate,onVnodeUpdated,' +
348
362
  'onVnodeBeforeUnmount,onVnodeUnmounted');
363
+ const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
349
364
  const cacheStringFunction = (fn) => {
350
365
  const cache = Object.create(null);
351
366
  return ((str) => {
@@ -411,7 +426,6 @@ function warn(msg, ...args) {
411
426
  }
412
427
 
413
428
  let activeEffectScope;
414
- const effectScopeStack = [];
415
429
  class EffectScope {
416
430
  constructor(detached = false) {
417
431
  this.active = true;
@@ -426,11 +440,11 @@ class EffectScope {
426
440
  run(fn) {
427
441
  if (this.active) {
428
442
  try {
429
- this.on();
443
+ activeEffectScope = this;
430
444
  return fn();
431
445
  }
432
446
  finally {
433
- this.off();
447
+ activeEffectScope = this.parent;
434
448
  }
435
449
  }
436
450
  else if ((process.env.NODE_ENV !== 'production')) {
@@ -438,23 +452,24 @@ class EffectScope {
438
452
  }
439
453
  }
440
454
  on() {
441
- if (this.active) {
442
- effectScopeStack.push(this);
443
- activeEffectScope = this;
444
- }
455
+ activeEffectScope = this;
445
456
  }
446
457
  off() {
447
- if (this.active) {
448
- effectScopeStack.pop();
449
- activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
450
- }
458
+ activeEffectScope = this.parent;
451
459
  }
452
460
  stop(fromParent) {
453
461
  if (this.active) {
454
- this.effects.forEach(e => e.stop());
455
- this.cleanups.forEach(cleanup => cleanup());
462
+ let i, l;
463
+ for (i = 0, l = this.effects.length; i < l; i++) {
464
+ this.effects[i].stop();
465
+ }
466
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
467
+ this.cleanups[i]();
468
+ }
456
469
  if (this.scopes) {
457
- this.scopes.forEach(e => e.stop(true));
470
+ for (i = 0, l = this.scopes.length; i < l; i++) {
471
+ this.scopes[i].stop(true);
472
+ }
458
473
  }
459
474
  // nested scope, dereference from parent to avoid memory leaks
460
475
  if (this.parent && !fromParent) {
@@ -472,8 +487,7 @@ class EffectScope {
472
487
  function effectScope(detached) {
473
488
  return new EffectScope(detached);
474
489
  }
475
- function recordEffectScope(effect, scope) {
476
- scope = scope || activeEffectScope;
490
+ function recordEffectScope(effect, scope = activeEffectScope) {
477
491
  if (scope && scope.active) {
478
492
  scope.effects.push(effect);
479
493
  }
@@ -536,7 +550,6 @@ let trackOpBit = 1;
536
550
  * When recursion depth is greater, fall back to using a full cleanup.
537
551
  */
538
552
  const maxMarkerBits = 30;
539
- const effectStack = [];
540
553
  let activeEffect;
541
554
  const ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');
542
555
  const MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');
@@ -546,35 +559,42 @@ class ReactiveEffect {
546
559
  this.scheduler = scheduler;
547
560
  this.active = true;
548
561
  this.deps = [];
562
+ this.parent = undefined;
549
563
  recordEffectScope(this, scope);
550
564
  }
551
565
  run() {
552
566
  if (!this.active) {
553
567
  return this.fn();
554
568
  }
555
- if (!effectStack.includes(this)) {
556
- try {
557
- effectStack.push((activeEffect = this));
558
- enableTracking();
559
- trackOpBit = 1 << ++effectTrackDepth;
560
- if (effectTrackDepth <= maxMarkerBits) {
561
- initDepMarkers(this);
562
- }
563
- else {
564
- cleanupEffect(this);
565
- }
566
- return this.fn();
569
+ let parent = activeEffect;
570
+ let lastShouldTrack = shouldTrack;
571
+ while (parent) {
572
+ if (parent === this) {
573
+ return;
567
574
  }
568
- finally {
569
- if (effectTrackDepth <= maxMarkerBits) {
570
- finalizeDepMarkers(this);
571
- }
572
- trackOpBit = 1 << --effectTrackDepth;
573
- resetTracking();
574
- effectStack.pop();
575
- const n = effectStack.length;
576
- activeEffect = n > 0 ? effectStack[n - 1] : undefined;
575
+ parent = parent.parent;
576
+ }
577
+ try {
578
+ this.parent = activeEffect;
579
+ activeEffect = this;
580
+ shouldTrack = true;
581
+ trackOpBit = 1 << ++effectTrackDepth;
582
+ if (effectTrackDepth <= maxMarkerBits) {
583
+ initDepMarkers(this);
584
+ }
585
+ else {
586
+ cleanupEffect(this);
587
+ }
588
+ return this.fn();
589
+ }
590
+ finally {
591
+ if (effectTrackDepth <= maxMarkerBits) {
592
+ finalizeDepMarkers(this);
577
593
  }
594
+ trackOpBit = 1 << --effectTrackDepth;
595
+ activeEffect = this.parent;
596
+ shouldTrack = lastShouldTrack;
597
+ this.parent = undefined;
578
598
  }
579
599
  }
580
600
  stop() {
@@ -622,33 +642,25 @@ function pauseTracking() {
622
642
  trackStack.push(shouldTrack);
623
643
  shouldTrack = false;
624
644
  }
625
- function enableTracking() {
626
- trackStack.push(shouldTrack);
627
- shouldTrack = true;
628
- }
629
645
  function resetTracking() {
630
646
  const last = trackStack.pop();
631
647
  shouldTrack = last === undefined ? true : last;
632
648
  }
633
649
  function track(target, type, key) {
634
- if (!isTracking()) {
635
- return;
636
- }
637
- let depsMap = targetMap.get(target);
638
- if (!depsMap) {
639
- targetMap.set(target, (depsMap = new Map()));
640
- }
641
- let dep = depsMap.get(key);
642
- if (!dep) {
643
- depsMap.set(key, (dep = createDep()));
650
+ if (shouldTrack && activeEffect) {
651
+ let depsMap = targetMap.get(target);
652
+ if (!depsMap) {
653
+ targetMap.set(target, (depsMap = new Map()));
654
+ }
655
+ let dep = depsMap.get(key);
656
+ if (!dep) {
657
+ depsMap.set(key, (dep = createDep()));
658
+ }
659
+ const eventInfo = (process.env.NODE_ENV !== 'production')
660
+ ? { effect: activeEffect, target, type, key }
661
+ : undefined;
662
+ trackEffects(dep, eventInfo);
644
663
  }
645
- const eventInfo = (process.env.NODE_ENV !== 'production')
646
- ? { effect: activeEffect, target, type, key }
647
- : undefined;
648
- trackEffects(dep, eventInfo);
649
- }
650
- function isTracking() {
651
- return shouldTrack && activeEffect !== undefined;
652
664
  }
653
665
  function trackEffects(dep, debuggerEventExtraInfo) {
654
666
  let shouldTrack = false;
@@ -816,6 +828,9 @@ function createGetter(isReadonly = false, shallow = false) {
816
828
  else if (key === "__v_isReadonly" /* IS_READONLY */) {
817
829
  return isReadonly;
818
830
  }
831
+ else if (key === "__v_isShallow" /* IS_SHALLOW */) {
832
+ return shallow;
833
+ }
819
834
  else if (key === "__v_raw" /* RAW */ &&
820
835
  receiver ===
821
836
  (isReadonly
@@ -860,9 +875,14 @@ const shallowSet = /*#__PURE__*/ createSetter(true);
860
875
  function createSetter(shallow = false) {
861
876
  return function set(target, key, value, receiver) {
862
877
  let oldValue = target[key];
878
+ if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
879
+ return false;
880
+ }
863
881
  if (!shallow && !isReadonly(value)) {
864
- value = toRaw(value);
865
- oldValue = toRaw(oldValue);
882
+ if (!isShallow(value)) {
883
+ value = toRaw(value);
884
+ oldValue = toRaw(oldValue);
885
+ }
866
886
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
867
887
  oldValue.value = value;
868
888
  return true;
@@ -1250,7 +1270,7 @@ function getTargetType(value) {
1250
1270
  }
1251
1271
  function reactive(target) {
1252
1272
  // if trying to observe a readonly proxy, return the readonly version.
1253
- if (target && target["__v_isReadonly" /* IS_READONLY */]) {
1273
+ if (isReadonly(target)) {
1254
1274
  return target;
1255
1275
  }
1256
1276
  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
@@ -1315,6 +1335,9 @@ function isReactive(value) {
1315
1335
  function isReadonly(value) {
1316
1336
  return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
1317
1337
  }
1338
+ function isShallow(value) {
1339
+ return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
1340
+ }
1318
1341
  function isProxy(value) {
1319
1342
  return isReactive(value) || isReadonly(value);
1320
1343
  }
@@ -1330,20 +1353,17 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
1330
1353
  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
1331
1354
 
1332
1355
  function trackRefValue(ref) {
1333
- if (isTracking()) {
1356
+ if (shouldTrack && activeEffect) {
1334
1357
  ref = toRaw(ref);
1335
- if (!ref.dep) {
1336
- ref.dep = createDep();
1337
- }
1338
1358
  if ((process.env.NODE_ENV !== 'production')) {
1339
- trackEffects(ref.dep, {
1359
+ trackEffects(ref.dep || (ref.dep = createDep()), {
1340
1360
  target: ref,
1341
1361
  type: "get" /* GET */,
1342
1362
  key: 'value'
1343
1363
  });
1344
1364
  }
1345
1365
  else {
1346
- trackEffects(ref.dep);
1366
+ trackEffects(ref.dep || (ref.dep = createDep()));
1347
1367
  }
1348
1368
  }
1349
1369
  }
@@ -1364,7 +1384,7 @@ function triggerRefValue(ref, newVal) {
1364
1384
  }
1365
1385
  }
1366
1386
  function isRef(r) {
1367
- return Boolean(r && r.__v_isRef === true);
1387
+ return !!(r && r.__v_isRef === true);
1368
1388
  }
1369
1389
  function ref(value) {
1370
1390
  return createRef(value, false);
@@ -1379,22 +1399,22 @@ function createRef(rawValue, shallow) {
1379
1399
  return new RefImpl(rawValue, shallow);
1380
1400
  }
1381
1401
  class RefImpl {
1382
- constructor(value, _shallow) {
1383
- this._shallow = _shallow;
1402
+ constructor(value, __v_isShallow) {
1403
+ this.__v_isShallow = __v_isShallow;
1384
1404
  this.dep = undefined;
1385
1405
  this.__v_isRef = true;
1386
- this._rawValue = _shallow ? value : toRaw(value);
1387
- this._value = _shallow ? value : toReactive(value);
1406
+ this._rawValue = __v_isShallow ? value : toRaw(value);
1407
+ this._value = __v_isShallow ? value : toReactive(value);
1388
1408
  }
1389
1409
  get value() {
1390
1410
  trackRefValue(this);
1391
1411
  return this._value;
1392
1412
  }
1393
1413
  set value(newVal) {
1394
- newVal = this._shallow ? newVal : toRaw(newVal);
1414
+ newVal = this.__v_isShallow ? newVal : toRaw(newVal);
1395
1415
  if (hasChanged(newVal, this._rawValue)) {
1396
1416
  this._rawValue = newVal;
1397
- this._value = this._shallow ? newVal : toReactive(newVal);
1417
+ this._value = this.__v_isShallow ? newVal : toReactive(newVal);
1398
1418
  triggerRefValue(this, newVal);
1399
1419
  }
1400
1420
  }
@@ -1477,22 +1497,23 @@ class ComputedRefImpl {
1477
1497
  constructor(getter, _setter, isReadonly, isSSR) {
1478
1498
  this._setter = _setter;
1479
1499
  this.dep = undefined;
1480
- this._dirty = true;
1481
1500
  this.__v_isRef = true;
1501
+ this._dirty = true;
1482
1502
  this.effect = new ReactiveEffect(getter, () => {
1483
1503
  if (!this._dirty) {
1484
1504
  this._dirty = true;
1485
1505
  triggerRefValue(this);
1486
1506
  }
1487
1507
  });
1488
- this.effect.active = !isSSR;
1508
+ this.effect.computed = this;
1509
+ this.effect.active = this._cacheable = !isSSR;
1489
1510
  this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1490
1511
  }
1491
1512
  get value() {
1492
1513
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
1493
1514
  const self = toRaw(this);
1494
1515
  trackRefValue(self);
1495
- if (self._dirty) {
1516
+ if (self._dirty || !self._cacheable) {
1496
1517
  self._dirty = false;
1497
1518
  self._value = self.effect.run();
1498
1519
  }
@@ -1670,7 +1691,7 @@ const ErrorTypeStrings = {
1670
1691
  [12 /* FUNCTION_REF */]: 'ref function',
1671
1692
  [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
1672
1693
  [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
1673
- 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-next'
1694
+ 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
1674
1695
  };
1675
1696
  function callWithErrorHandling(fn, instance, type, args) {
1676
1697
  let res;
@@ -2182,23 +2203,23 @@ const deprecationData = {
2182
2203
  ["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
2183
2204
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
2184
2205
  `option have been removed. Use createApp(RootComponent).mount() instead.`,
2185
- link: `https://v3.vuejs.org/guide/migration/global-api.html#mounting-app-instance`
2206
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
2186
2207
  },
2187
2208
  ["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
2188
2209
  message: `Vue detected directives on the mount container. ` +
2189
2210
  `In Vue 3, the container is no longer considered part of the template ` +
2190
2211
  `and will not be processed/replaced.`,
2191
- link: `https://v3.vuejs.org/guide/migration/mount-changes.html`
2212
+ link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
2192
2213
  },
2193
2214
  ["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
2194
2215
  message: `Vue.extend() has been removed in Vue 3. ` +
2195
2216
  `Use defineComponent() instead.`,
2196
- link: `https://v3.vuejs.org/api/global-api.html#definecomponent`
2217
+ link: `https://vuejs.org/api/general.html#definecomponent`
2197
2218
  },
2198
2219
  ["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
2199
2220
  message: `Vue.prototype is no longer available in Vue 3. ` +
2200
2221
  `Use app.config.globalProperties instead.`,
2201
- link: `https://v3.vuejs.org/guide/migration/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2222
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2202
2223
  },
2203
2224
  ["GLOBAL_SET" /* GLOBAL_SET */]: {
2204
2225
  message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
@@ -2211,7 +2232,7 @@ const deprecationData = {
2211
2232
  ["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
2212
2233
  message: `Vue.observable() has been removed. ` +
2213
2234
  `Use \`import { reactive } from "vue"\` from Composition API instead.`,
2214
- link: `https://v3.vuejs.org/api/basic-reactivity.html`
2235
+ link: `https://vuejs.org/api/reactivity-core.html#reactive`
2215
2236
  },
2216
2237
  ["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
2217
2238
  message: `Vue.util has been removed. Please refactor to avoid its usage ` +
@@ -2225,16 +2246,16 @@ const deprecationData = {
2225
2246
  ["CONFIG_DEVTOOLS" /* CONFIG_DEVTOOLS */]: {
2226
2247
  message: `config.devtools has been removed. To enable devtools for ` +
2227
2248
  `production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,
2228
- link: `https://github.com/vuejs/vue-next/tree/master/packages/vue#bundler-build-feature-flags`
2249
+ link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`
2229
2250
  },
2230
2251
  ["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
2231
2252
  message: `config.keyCodes has been removed. ` +
2232
2253
  `In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
2233
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2254
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2234
2255
  },
2235
2256
  ["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
2236
2257
  message: `config.productionTip has been removed.`,
2237
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-productiontip-removed`
2258
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
2238
2259
  },
2239
2260
  ["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
2240
2261
  message: () => {
@@ -2247,7 +2268,7 @@ const deprecationData = {
2247
2268
  }
2248
2269
  return msg;
2249
2270
  },
2250
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2271
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2251
2272
  },
2252
2273
  ["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
2253
2274
  // this warning is only relevant in the full build when using runtime
@@ -2270,12 +2291,12 @@ const deprecationData = {
2270
2291
  },
2271
2292
  ["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
2272
2293
  message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
2273
- link: `https://v3.vuejs.org/api/application-api.html#unmount`
2294
+ link: `https://vuejs.org/api/application.html#app-unmount`
2274
2295
  },
2275
2296
  ["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
2276
2297
  message: `vm.$on/$once/$off() have been removed. ` +
2277
2298
  `Use an external event emitter library instead.`,
2278
- link: `https://v3.vuejs.org/guide/migration/events-api.html`
2299
+ link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
2279
2300
  },
2280
2301
  ["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
2281
2302
  message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
@@ -2283,23 +2304,23 @@ const deprecationData = {
2283
2304
  `should be changed to @vnode-${event.slice(5)}. ` +
2284
2305
  `From JavaScript, use Composition API to dynamically register lifecycle ` +
2285
2306
  `hooks.`,
2286
- link: `https://v3.vuejs.org/guide/migration/vnode-lifecycle-events.html`
2307
+ link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
2287
2308
  },
2288
2309
  ["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
2289
2310
  message: `vm.$children has been removed. Consider refactoring your logic ` +
2290
2311
  `to avoid relying on direct access to child components.`,
2291
- link: `https://v3.vuejs.org/guide/migration/children.html`
2312
+ link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
2292
2313
  },
2293
2314
  ["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
2294
2315
  message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
2295
2316
  `included in vm.$attrs and it is no longer necessary to separately use ` +
2296
2317
  `v-on="$listeners" if you are already using v-bind="$attrs". ` +
2297
2318
  `(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
2298
- link: `https://v3.vuejs.org/guide/migration/listeners-removed.html`
2319
+ link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
2299
2320
  },
2300
2321
  ["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
2301
2322
  message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
2302
- link: `https://v3.vuejs.org/guide/migration/slots-unification.html`
2323
+ link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
2303
2324
  },
2304
2325
  ["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
2305
2326
  message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
@@ -2310,17 +2331,17 @@ const deprecationData = {
2310
2331
  `If you are binding $attrs to a non-root element and expecting ` +
2311
2332
  `class/style to fallthrough on root, you will need to now manually bind ` +
2312
2333
  `them on root via :class="$attrs.class".`,
2313
- link: `https://v3.vuejs.org/guide/migration/attrs-includes-class-style.html`
2334
+ link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
2314
2335
  },
2315
2336
  ["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
2316
2337
  message: `The "data" option can no longer be a plain object. ` +
2317
2338
  `Always use a function.`,
2318
- link: `https://v3.vuejs.org/guide/migration/data-option.html`
2339
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
2319
2340
  },
2320
2341
  ["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
2321
2342
  message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
2322
2343
  `In Vue 3, data keys are merged shallowly and will override one another.`,
2323
- link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
2344
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
2324
2345
  },
2325
2346
  ["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
2326
2347
  message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
@@ -2334,23 +2355,23 @@ const deprecationData = {
2334
2355
  `If current usage is intended, you can disable the compat behavior and ` +
2335
2356
  `suppress this warning with:` +
2336
2357
  `\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
2337
- link: `https://v3.vuejs.org/guide/migration/watch.html`
2358
+ link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
2338
2359
  },
2339
2360
  ["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
2340
2361
  message: (key) => `props default value function no longer has access to "this". The compat ` +
2341
2362
  `build only offers access to this.$options.` +
2342
2363
  `(found in prop "${key}")`,
2343
- link: `https://v3.vuejs.org/guide/migration/props-default-this.html`
2364
+ link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
2344
2365
  },
2345
2366
  ["CUSTOM_DIR" /* CUSTOM_DIR */]: {
2346
2367
  message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
2347
2368
  `Use "${newHook}" instead.`,
2348
- link: `https://v3.vuejs.org/guide/migration/custom-directives.html`
2369
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
2349
2370
  },
2350
2371
  ["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
2351
2372
  message: `Using keyCode as v-on modifier is no longer supported. ` +
2352
2373
  `Use kebab-case key name modifiers instead.`,
2353
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2374
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2354
2375
  },
2355
2376
  ["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
2356
2377
  message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
@@ -2358,7 +2379,7 @@ const deprecationData = {
2358
2379
  `use \`null\` or \`undefined\` instead. If the usage is intended, ` +
2359
2380
  `you can disable the compat behavior and suppress this warning with:` +
2360
2381
  `\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
2361
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2382
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2362
2383
  },
2363
2384
  ["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
2364
2385
  message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
@@ -2367,7 +2388,7 @@ const deprecationData = {
2367
2388
  `If the usage is intended, ` +
2368
2389
  `you can disable the compat behavior and suppress this warning with:` +
2369
2390
  `\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
2370
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2391
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2371
2392
  },
2372
2393
  ["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
2373
2394
  message: `` // this feature cannot be runtime-detected
@@ -2378,7 +2399,7 @@ const deprecationData = {
2378
2399
  `for styling, you can disable the compat behavior and suppress this ` +
2379
2400
  `warning with:` +
2380
2401
  `\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
2381
- link: `https://v3.vuejs.org/guide/migration/transition-group.html`
2402
+ link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
2382
2403
  },
2383
2404
  ["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
2384
2405
  message: (comp) => {
@@ -2391,7 +2412,7 @@ const deprecationData = {
2391
2412
  `warning with:` +
2392
2413
  `\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
2393
2414
  },
2394
- link: `https://v3.vuejs.org/guide/migration/async-components.html`
2415
+ link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
2395
2416
  },
2396
2417
  ["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
2397
2418
  message: (comp) => {
@@ -2402,7 +2423,7 @@ const deprecationData = {
2402
2423
  `components usage have been migrated and its compat behavior has ` +
2403
2424
  `been disabled.`);
2404
2425
  },
2405
- link: `https://v3.vuejs.org/guide/migration/functional-components.html`
2426
+ link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
2406
2427
  },
2407
2428
  ["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
2408
2429
  message: (comp) => {
@@ -2412,27 +2433,27 @@ const deprecationData = {
2412
2433
  (isArray(comp.props)
2413
2434
  ? comp.props.includes('modelValue')
2414
2435
  : hasOwn(comp.props, 'modelValue'))) {
2415
- return (`Component delcares "modelValue" prop, which is Vue 3 usage, but ` +
2436
+ return (`Component declares "modelValue" prop, which is Vue 3 usage, but ` +
2416
2437
  `is running under Vue 2 compat v-model behavior. You can ${configMsg}`);
2417
2438
  }
2418
2439
  return (`v-model usage on component has changed in Vue 3. Component that expects ` +
2419
2440
  `to work with v-model should now use the "modelValue" prop and emit the ` +
2420
2441
  `"update:modelValue" event. You can update the usage and then ${configMsg}`);
2421
2442
  },
2422
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
2443
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
2423
2444
  },
2424
2445
  ["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
2425
2446
  message: `Vue 3's render function API has changed. ` +
2426
2447
  `You can opt-in to the new API with:` +
2427
2448
  `\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
2428
2449
  `\n (This can also be done per-component via the "compatConfig" option.)`,
2429
- link: `https://v3.vuejs.org/guide/migration/render-function-api.html`
2450
+ link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
2430
2451
  },
2431
2452
  ["FILTERS" /* FILTERS */]: {
2432
2453
  message: `filters have been removed in Vue 3. ` +
2433
2454
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
2434
2455
  `Use method calls or computed properties instead.`,
2435
- link: `https://v3.vuejs.org/guide/migration/filters.html`
2456
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
2436
2457
  },
2437
2458
  ["PRIVATE_APIS" /* PRIVATE_APIS */]: {
2438
2459
  message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
@@ -2503,7 +2524,7 @@ function validateCompatConfig(config, instance) {
2503
2524
  warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
2504
2525
  `running a runtime-only build of Vue. This deprecation should be ` +
2505
2526
  `configured via compiler options in your build setup instead.\n` +
2506
- `Details: https://v3.vuejs.org/guide/migration/migration-build.html`);
2527
+ `Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
2507
2528
  }
2508
2529
  }
2509
2530
  else {
@@ -2645,6 +2666,7 @@ const compatModelEventPrefix = `onModelCompat:`;
2645
2666
  const warnedTypes = new WeakSet();
2646
2667
  function convertLegacyVModelProps(vnode) {
2647
2668
  const { type, shapeFlag, props, dynamicProps } = vnode;
2669
+ const comp = type;
2648
2670
  if (shapeFlag & 6 /* COMPONENT */ && props && 'modelValue' in props) {
2649
2671
  if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */,
2650
2672
  // this is a special case where we want to use the vnode component's
@@ -2653,16 +2675,18 @@ function convertLegacyVModelProps(vnode) {
2653
2675
  { type })) {
2654
2676
  return;
2655
2677
  }
2656
- if ((process.env.NODE_ENV !== 'production') && !warnedTypes.has(type)) {
2678
+ if ((process.env.NODE_ENV !== 'production') && !warnedTypes.has(comp)) {
2657
2679
  pushWarningContext(vnode);
2658
- warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, type);
2680
+ warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, comp);
2659
2681
  popWarningContext();
2660
- warnedTypes.add(type);
2682
+ warnedTypes.add(comp);
2661
2683
  }
2662
2684
  // v3 compiled model code -> v2 compat props
2663
2685
  // modelValue -> value
2664
2686
  // onUpdate:modelValue -> onModelCompat:input
2665
- const { prop = 'value', event = 'input' } = type.model || {};
2687
+ const model = comp.model || {};
2688
+ applyModelFromMixins(model, comp.mixins);
2689
+ const { prop = 'value', event = 'input' } = model;
2666
2690
  if (prop !== 'modelValue') {
2667
2691
  props[prop] = props.modelValue;
2668
2692
  delete props.modelValue;
@@ -2675,6 +2699,16 @@ function convertLegacyVModelProps(vnode) {
2675
2699
  delete props['onUpdate:modelValue'];
2676
2700
  }
2677
2701
  }
2702
+ function applyModelFromMixins(model, mixins) {
2703
+ if (mixins) {
2704
+ mixins.forEach(m => {
2705
+ if (m.model)
2706
+ extend(model, m.model);
2707
+ if (m.mixins)
2708
+ applyModelFromMixins(model, m.mixins);
2709
+ });
2710
+ }
2711
+ }
2678
2712
  function compatModelEmit(instance, event, args) {
2679
2713
  if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, instance)) {
2680
2714
  return;
@@ -3678,7 +3712,7 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) {
3678
3712
  if (instance) {
3679
3713
  // #2400
3680
3714
  // to support `app.use` plugins,
3681
- // fallback to appContext's `provides` if the intance is at root
3715
+ // fallback to appContext's `provides` if the instance is at root
3682
3716
  const provides = instance.parent == null
3683
3717
  ? instance.vnode.appContext && instance.vnode.appContext.provides
3684
3718
  : instance.parent.provides;
@@ -3746,7 +3780,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
3746
3780
  let isMultiSource = false;
3747
3781
  if (isRef(source)) {
3748
3782
  getter = () => source.value;
3749
- forceTrigger = !!source._shallow;
3783
+ forceTrigger = isShallow(source);
3750
3784
  }
3751
3785
  else if (isReactive(source)) {
3752
3786
  getter = () => source;
@@ -4658,7 +4692,7 @@ function matches(pattern, name) {
4658
4692
  return pattern.some((p) => matches(p, name));
4659
4693
  }
4660
4694
  else if (isString(pattern)) {
4661
- return pattern.split(',').indexOf(name) > -1;
4695
+ return pattern.split(',').includes(name);
4662
4696
  }
4663
4697
  else if (pattern.test) {
4664
4698
  return pattern.test(name);
@@ -4930,7 +4964,7 @@ function applyOptions(instance) {
4930
4964
  warn$1(`Write operation failed: computed property "${key}" is readonly.`);
4931
4965
  }
4932
4966
  : NOOP;
4933
- const c = computed({
4967
+ const c = computed$1({
4934
4968
  get,
4935
4969
  set
4936
4970
  });
@@ -5414,7 +5448,9 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
5414
5448
  // attrs point to the same object so it should already have been updated.
5415
5449
  if (attrs !== rawCurrentProps) {
5416
5450
  for (const key in attrs) {
5417
- if (!rawProps || !hasOwn(rawProps, key)) {
5451
+ if (!rawProps ||
5452
+ (!hasOwn(rawProps, key) &&
5453
+ (!hasOwn(rawProps, key + 'Native')))) {
5418
5454
  delete attrs[key];
5419
5455
  hasAttrsChanged = true;
5420
5456
  }
@@ -5919,7 +5955,6 @@ return withDirectives(h(comp), [
5919
5955
  [bar, this.y]
5920
5956
  ])
5921
5957
  */
5922
- const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
5923
5958
  function validateDirectiveName(name) {
5924
5959
  if (isBuiltInDirective(name)) {
5925
5960
  warn$1('Do not use built-in directive ids as custom directive id: ' + name);
@@ -6054,7 +6089,7 @@ function createCompatVue(createApp, createSingletonApp) {
6054
6089
  return vm;
6055
6090
  }
6056
6091
  }
6057
- Vue.version = "3.2.27";
6092
+ Vue.version = `2.6.14-compat:${"3.2.31"}`;
6058
6093
  Vue.config = singletonApp.config;
6059
6094
  Vue.use = (p, ...options) => {
6060
6095
  if (p && isFunction(p.install)) {
@@ -6885,7 +6920,8 @@ function createHydrationFunctions(rendererInternals) {
6885
6920
  // e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
6886
6921
  const forcePatchValue = (type === 'input' && dirs) || type === 'option';
6887
6922
  // skip props & children if this is hoisted static nodes
6888
- if (forcePatchValue || patchFlag !== -1 /* HOISTED */) {
6923
+ // #5405 in dev, always hydrate children for HMR
6924
+ if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* HOISTED */) {
6889
6925
  if (dirs) {
6890
6926
  invokeDirectiveHook(vnode, null, parentComponent, 'created');
6891
6927
  }
@@ -7052,6 +7088,7 @@ function createHydrationFunctions(rendererInternals) {
7052
7088
  return [hydrate, hydrateNode];
7053
7089
  }
7054
7090
 
7091
+ /* eslint-disable no-restricted-globals */
7055
7092
  let supported;
7056
7093
  let perf;
7057
7094
  function startMeasure(instance, type) {
@@ -7079,7 +7116,6 @@ function isSupported() {
7079
7116
  if (supported !== undefined) {
7080
7117
  return supported;
7081
7118
  }
7082
- /* eslint-disable no-restricted-globals */
7083
7119
  if (typeof window !== 'undefined' && window.performance) {
7084
7120
  supported = true;
7085
7121
  perf = window.performance;
@@ -7087,7 +7123,6 @@ function isSupported() {
7087
7123
  else {
7088
7124
  supported = false;
7089
7125
  }
7090
- /* eslint-enable no-restricted-globals */
7091
7126
  return supported;
7092
7127
  }
7093
7128
 
@@ -9380,7 +9415,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false) {
9380
9415
  shapeFlag: vnode.shapeFlag,
9381
9416
  // if the vnode is cloned with extra props, we can no longer assume its
9382
9417
  // existing patch flag to be reliable and need to add the FULL_PROPS flag.
9383
- // note: perserve flag for fragments since they use the flag for children
9418
+ // note: preserve flag for fragments since they use the flag for children
9384
9419
  // fast paths only.
9385
9420
  patchFlag: extraProps && vnode.type !== Fragment
9386
9421
  ? patchFlag === -1 // hoisted node
@@ -9545,7 +9580,8 @@ function mergeProps(...args) {
9545
9580
  else if (isOn(key)) {
9546
9581
  const existing = ret[key];
9547
9582
  const incoming = toMerge[key];
9548
- if (existing !== incoming &&
9583
+ if (incoming &&
9584
+ existing !== incoming &&
9549
9585
  !(isArray(existing) && existing.includes(incoming))) {
9550
9586
  ret[key] = existing
9551
9587
  ? [].concat(existing, incoming)
@@ -9821,7 +9857,7 @@ function legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventK
9821
9857
  }
9822
9858
  function isKeyNotMatch(expect, actual) {
9823
9859
  if (isArray(expect)) {
9824
- return expect.indexOf(actual) === -1;
9860
+ return !expect.includes(actual);
9825
9861
  }
9826
9862
  else {
9827
9863
  return expect !== actual;
@@ -9900,7 +9936,7 @@ function installCompatInstanceProperties(map) {
9900
9936
  extend(map, {
9901
9937
  // needed by many libs / render fns
9902
9938
  $vnode: i => i.vnode,
9903
- // inject addtional properties into $options for compat
9939
+ // inject additional properties into $options for compat
9904
9940
  // e.g. vuex needs this.$options.parent
9905
9941
  $options: i => {
9906
9942
  const res = extend({}, resolveMergedOptions(i));
@@ -10090,9 +10126,11 @@ const PublicInstanceProxyHandlers = {
10090
10126
  const { data, setupState, ctx } = instance;
10091
10127
  if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
10092
10128
  setupState[key] = value;
10129
+ return true;
10093
10130
  }
10094
10131
  else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
10095
10132
  data[key] = value;
10133
+ return true;
10096
10134
  }
10097
10135
  else if (hasOwn(instance.props, key)) {
10098
10136
  (process.env.NODE_ENV !== 'production') &&
@@ -10128,6 +10166,15 @@ const PublicInstanceProxyHandlers = {
10128
10166
  hasOwn(ctx, key) ||
10129
10167
  hasOwn(publicPropertiesMap, key) ||
10130
10168
  hasOwn(appContext.config.globalProperties, key));
10169
+ },
10170
+ defineProperty(target, key, descriptor) {
10171
+ if (descriptor.get != null) {
10172
+ this.set(target, key, descriptor.get(), null);
10173
+ }
10174
+ else if (descriptor.value != null) {
10175
+ this.set(target, key, descriptor.value, null);
10176
+ }
10177
+ return Reflect.defineProperty(target, key, descriptor);
10131
10178
  }
10132
10179
  };
10133
10180
  if ((process.env.NODE_ENV !== 'production') && !false) {
@@ -10656,7 +10703,7 @@ function defineEmits() {
10656
10703
  * instance properties when it is accessed by a parent component via template
10657
10704
  * refs.
10658
10705
  *
10659
- * `<script setup>` components are closed by default - i.e. varaibles inside
10706
+ * `<script setup>` components are closed by default - i.e. variables inside
10660
10707
  * the `<script setup>` scope is not exposed to parent unless explicitly exposed
10661
10708
  * via `defineExpose`.
10662
10709
  *
@@ -10859,7 +10906,7 @@ function initCustomFormatter() {
10859
10906
  return [
10860
10907
  'div',
10861
10908
  {},
10862
- ['span', vueStyle, 'Reactive'],
10909
+ ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
10863
10910
  '<',
10864
10911
  formatValue(obj),
10865
10912
  `>${isReadonly(obj) ? ` (readonly)` : ``}`
@@ -10869,7 +10916,7 @@ function initCustomFormatter() {
10869
10916
  return [
10870
10917
  'div',
10871
10918
  {},
10872
- ['span', vueStyle, 'Readonly'],
10919
+ ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
10873
10920
  '<',
10874
10921
  formatValue(obj),
10875
10922
  '>'
@@ -10998,7 +11045,7 @@ function initCustomFormatter() {
10998
11045
  }
10999
11046
  }
11000
11047
  function genRefFlag(v) {
11001
- if (v._shallow) {
11048
+ if (isShallow(v)) {
11002
11049
  return `ShallowRef`;
11003
11050
  }
11004
11051
  if (v.effect) {
@@ -11042,7 +11089,7 @@ function isMemoSame(cached, memo) {
11042
11089
  }
11043
11090
 
11044
11091
  // Core API ------------------------------------------------------------------
11045
- const version = "3.2.27";
11092
+ const version = "3.2.31";
11046
11093
  const _ssrUtils = {
11047
11094
  createComponentInstance,
11048
11095
  setupComponent,
@@ -11131,7 +11178,10 @@ const nodeOps = {
11131
11178
  insertStaticContent(content, parent, anchor, isSVG, start, end) {
11132
11179
  // <parent> before | first ... last | anchor </parent>
11133
11180
  const before = anchor ? anchor.previousSibling : parent.lastChild;
11134
- if (start && end) {
11181
+ // #5308 can only take cached path if:
11182
+ // - has a single root node
11183
+ // - nextSibling info is still available
11184
+ if (start && (start === end || start.nextSibling)) {
11135
11185
  // cached
11136
11186
  while (true) {
11137
11187
  parent.insertBefore(start.cloneNode(true), anchor);
@@ -11482,7 +11532,7 @@ function patchStopImmediatePropagation(e, value) {
11482
11532
  originalStop.call(e);
11483
11533
  e._stopped = true;
11484
11534
  };
11485
- return value.map(fn => (e) => !e._stopped && fn(e));
11535
+ return value.map(fn => (e) => !e._stopped && fn && fn(e));
11486
11536
  }
11487
11537
  else {
11488
11538
  return value;
@@ -12903,6 +12953,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
12903
12953
  isProxy: isProxy,
12904
12954
  isReactive: isReactive,
12905
12955
  isReadonly: isReadonly,
12956
+ isShallow: isShallow,
12906
12957
  customRef: customRef,
12907
12958
  triggerRef: triggerRef,
12908
12959
  shallowRef: shallowRef,
@@ -13675,13 +13726,13 @@ const deprecationData$1 = {
13675
13726
  message: `Platform-native elements with "is" prop will no longer be ` +
13676
13727
  `treated as components in Vue 3 unless the "is" value is explicitly ` +
13677
13728
  `prefixed with "vue:".`,
13678
- link: `https://v3.vuejs.org/guide/migration/custom-elements-interop.html`
13729
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
13679
13730
  },
13680
13731
  ["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
13681
13732
  message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
13682
13733
  `argument instead. \`v-bind:${key}.sync\` should be changed to ` +
13683
13734
  `\`v-model:${key}\`.`,
13684
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
13735
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
13685
13736
  },
13686
13737
  ["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
13687
13738
  message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
@@ -13693,11 +13744,11 @@ const deprecationData$1 = {
13693
13744
  `that appears before v-bind in the case of conflict. ` +
13694
13745
  `To retain 2.x behavior, move v-bind to make it the first attribute. ` +
13695
13746
  `You can also suppress this warning if the usage is intended.`,
13696
- link: `https://v3.vuejs.org/guide/migration/v-bind.html`
13747
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
13697
13748
  },
13698
13749
  ["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
13699
13750
  message: `.native modifier for v-on has been removed as is no longer necessary.`,
13700
- link: `https://v3.vuejs.org/guide/migration/v-on-native-modifier-removed.html`
13751
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
13701
13752
  },
13702
13753
  ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
13703
13754
  message: `v-if / v-for precedence when used on the same element has changed ` +
@@ -13705,7 +13756,7 @@ const deprecationData$1 = {
13705
13756
  `access to v-for scope variables. It is best to avoid the ambiguity ` +
13706
13757
  `with <template> tags or use a computed property that filters v-for ` +
13707
13758
  `data source.`,
13708
- link: `https://v3.vuejs.org/guide/migration/v-if-v-for.html`
13759
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
13709
13760
  },
13710
13761
  ["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
13711
13762
  message: `<template> with no special directives will render as a native template ` +
@@ -13713,13 +13764,13 @@ const deprecationData$1 = {
13713
13764
  },
13714
13765
  ["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
13715
13766
  message: `"inline-template" has been removed in Vue 3.`,
13716
- link: `https://v3.vuejs.org/guide/migration/inline-template-attribute.html`
13767
+ link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
13717
13768
  },
13718
13769
  ["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
13719
13770
  message: `filters have been removed in Vue 3. ` +
13720
13771
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
13721
13772
  `Use method calls or computed properties instead.`,
13722
- link: `https://v3.vuejs.org/guide/migration/filters.html`
13773
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
13723
13774
  }
13724
13775
  };
13725
13776
  function getCompatValue(key, context) {
@@ -14251,7 +14302,7 @@ function parseAttributes(context, type) {
14251
14302
  }
14252
14303
  const attr = parseAttribute(context, attributeNames);
14253
14304
  // Trim whitespace between class
14254
- // https://github.com/vuejs/vue-next/issues/4251
14305
+ // https://github.com/vuejs/core/issues/4251
14255
14306
  if (attr.type === 6 /* ATTRIBUTE */ &&
14256
14307
  attr.value &&
14257
14308
  attr.name === 'class') {
@@ -14487,7 +14538,7 @@ function parseTextData(context, length, mode) {
14487
14538
  advanceBy(context, length);
14488
14539
  if (mode === 2 /* RAWTEXT */ ||
14489
14540
  mode === 3 /* CDATA */ ||
14490
- rawText.indexOf('&') === -1) {
14541
+ !rawText.includes('&')) {
14491
14542
  return rawText;
14492
14543
  }
14493
14544
  else {
@@ -16014,6 +16065,7 @@ const transformFor = createStructuralDirectiveTransform('for', (node, dir, conte
16014
16065
  const renderExp = createCallExpression(helper(RENDER_LIST), [
16015
16066
  forNode.source
16016
16067
  ]);
16068
+ const isTemplate = isTemplateNode(node);
16017
16069
  const memo = findDir(node, 'memo');
16018
16070
  const keyProp = findProp(node, `key`);
16019
16071
  const keyExp = keyProp &&
@@ -16033,7 +16085,6 @@ const transformFor = createStructuralDirectiveTransform('for', (node, dir, conte
16033
16085
  return () => {
16034
16086
  // finish the codegen now that all children have been traversed
16035
16087
  let childBlock;
16036
- const isTemplate = isTemplateNode(node);
16037
16088
  const { children } = forNode;
16038
16089
  // check <template v-for> key placement
16039
16090
  if (((process.env.NODE_ENV !== 'production') || !true) && isTemplate) {
@@ -16839,7 +16890,7 @@ function buildProps(node, context, props = node.props, ssr = false) {
16839
16890
  }
16840
16891
  }
16841
16892
  }
16842
- else {
16893
+ else if (!isBuiltInDirective(name)) {
16843
16894
  // no built-in transform, this is a user custom directive.
16844
16895
  runtimeDirectives.push(prop);
16845
16896
  // custom dirs may use beforeUpdate so they need to force blocks
@@ -18187,4 +18238,4 @@ Vue.compile = compileToFunction;
18187
18238
  const { configureCompat: configureCompat$1 } = Vue;
18188
18239
 
18189
18240
  export default Vue;
18190
- export { BaseTransition, Comment, EffectScope, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, Transition, TransitionGroup, VueElement, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed$1 as computed, configureCompat$1 as configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineProps, defineSSRCustomElement, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isVNode, markRaw, mergeDefaults, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter$1 as resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn$1 as warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
18241
+ export { BaseTransition, Comment, EffectScope, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, Transition, TransitionGroup, VueElement, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed$1 as computed, configureCompat$1 as configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineProps, defineSSRCustomElement, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter$1 as resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn$1 as warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };