@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.
@@ -209,8 +209,20 @@ var Vue = (function () {
209
209
  'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
210
210
  'text,textPath,title,tspan,unknown,use,view';
211
211
  const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
212
+ /**
213
+ * Compiler only.
214
+ * Do NOT use in runtime code paths unless behind `true` flag.
215
+ */
212
216
  const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
217
+ /**
218
+ * Compiler only.
219
+ * Do NOT use in runtime code paths unless behind `true` flag.
220
+ */
213
221
  const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
222
+ /**
223
+ * Compiler only.
224
+ * Do NOT use in runtime code paths unless behind `true` flag.
225
+ */
214
226
  const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
215
227
 
216
228
  function looseCompareArrays(a, b) {
@@ -268,13 +280,15 @@ var Vue = (function () {
268
280
  * @private
269
281
  */
270
282
  const toDisplayString = (val) => {
271
- return val == null
272
- ? ''
273
- : isArray(val) ||
274
- (isObject(val) &&
275
- (val.toString === objectToString || !isFunction(val.toString)))
276
- ? JSON.stringify(val, replacer, 2)
277
- : String(val);
283
+ return isString(val)
284
+ ? val
285
+ : val == null
286
+ ? ''
287
+ : isArray(val) ||
288
+ (isObject(val) &&
289
+ (val.toString === objectToString || !isFunction(val.toString)))
290
+ ? JSON.stringify(val, replacer, 2)
291
+ : String(val);
278
292
  };
279
293
  const replacer = (_key, val) => {
280
294
  // can't use isRef here since @vue/shared has no deps
@@ -348,6 +362,7 @@ var Vue = (function () {
348
362
  'onVnodeBeforeMount,onVnodeMounted,' +
349
363
  'onVnodeBeforeUpdate,onVnodeUpdated,' +
350
364
  'onVnodeBeforeUnmount,onVnodeUnmounted');
365
+ const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
351
366
  const cacheStringFunction = (fn) => {
352
367
  const cache = Object.create(null);
353
368
  return ((str) => {
@@ -413,7 +428,6 @@ var Vue = (function () {
413
428
  }
414
429
 
415
430
  let activeEffectScope;
416
- const effectScopeStack = [];
417
431
  class EffectScope {
418
432
  constructor(detached = false) {
419
433
  this.active = true;
@@ -428,11 +442,11 @@ var Vue = (function () {
428
442
  run(fn) {
429
443
  if (this.active) {
430
444
  try {
431
- this.on();
445
+ activeEffectScope = this;
432
446
  return fn();
433
447
  }
434
448
  finally {
435
- this.off();
449
+ activeEffectScope = this.parent;
436
450
  }
437
451
  }
438
452
  else {
@@ -440,23 +454,24 @@ var Vue = (function () {
440
454
  }
441
455
  }
442
456
  on() {
443
- if (this.active) {
444
- effectScopeStack.push(this);
445
- activeEffectScope = this;
446
- }
457
+ activeEffectScope = this;
447
458
  }
448
459
  off() {
449
- if (this.active) {
450
- effectScopeStack.pop();
451
- activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
452
- }
460
+ activeEffectScope = this.parent;
453
461
  }
454
462
  stop(fromParent) {
455
463
  if (this.active) {
456
- this.effects.forEach(e => e.stop());
457
- this.cleanups.forEach(cleanup => cleanup());
464
+ let i, l;
465
+ for (i = 0, l = this.effects.length; i < l; i++) {
466
+ this.effects[i].stop();
467
+ }
468
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
469
+ this.cleanups[i]();
470
+ }
458
471
  if (this.scopes) {
459
- this.scopes.forEach(e => e.stop(true));
472
+ for (i = 0, l = this.scopes.length; i < l; i++) {
473
+ this.scopes[i].stop(true);
474
+ }
460
475
  }
461
476
  // nested scope, dereference from parent to avoid memory leaks
462
477
  if (this.parent && !fromParent) {
@@ -474,8 +489,7 @@ var Vue = (function () {
474
489
  function effectScope(detached) {
475
490
  return new EffectScope(detached);
476
491
  }
477
- function recordEffectScope(effect, scope) {
478
- scope = scope || activeEffectScope;
492
+ function recordEffectScope(effect, scope = activeEffectScope) {
479
493
  if (scope && scope.active) {
480
494
  scope.effects.push(effect);
481
495
  }
@@ -538,7 +552,6 @@ var Vue = (function () {
538
552
  * When recursion depth is greater, fall back to using a full cleanup.
539
553
  */
540
554
  const maxMarkerBits = 30;
541
- const effectStack = [];
542
555
  let activeEffect;
543
556
  const ITERATE_KEY = Symbol('iterate' );
544
557
  const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
@@ -548,35 +561,42 @@ var Vue = (function () {
548
561
  this.scheduler = scheduler;
549
562
  this.active = true;
550
563
  this.deps = [];
564
+ this.parent = undefined;
551
565
  recordEffectScope(this, scope);
552
566
  }
553
567
  run() {
554
568
  if (!this.active) {
555
569
  return this.fn();
556
570
  }
557
- if (!effectStack.includes(this)) {
558
- try {
559
- effectStack.push((activeEffect = this));
560
- enableTracking();
561
- trackOpBit = 1 << ++effectTrackDepth;
562
- if (effectTrackDepth <= maxMarkerBits) {
563
- initDepMarkers(this);
564
- }
565
- else {
566
- cleanupEffect(this);
567
- }
568
- return this.fn();
571
+ let parent = activeEffect;
572
+ let lastShouldTrack = shouldTrack;
573
+ while (parent) {
574
+ if (parent === this) {
575
+ return;
569
576
  }
570
- finally {
571
- if (effectTrackDepth <= maxMarkerBits) {
572
- finalizeDepMarkers(this);
573
- }
574
- trackOpBit = 1 << --effectTrackDepth;
575
- resetTracking();
576
- effectStack.pop();
577
- const n = effectStack.length;
578
- activeEffect = n > 0 ? effectStack[n - 1] : undefined;
577
+ parent = parent.parent;
578
+ }
579
+ try {
580
+ this.parent = activeEffect;
581
+ activeEffect = this;
582
+ shouldTrack = true;
583
+ trackOpBit = 1 << ++effectTrackDepth;
584
+ if (effectTrackDepth <= maxMarkerBits) {
585
+ initDepMarkers(this);
579
586
  }
587
+ else {
588
+ cleanupEffect(this);
589
+ }
590
+ return this.fn();
591
+ }
592
+ finally {
593
+ if (effectTrackDepth <= maxMarkerBits) {
594
+ finalizeDepMarkers(this);
595
+ }
596
+ trackOpBit = 1 << --effectTrackDepth;
597
+ activeEffect = this.parent;
598
+ shouldTrack = lastShouldTrack;
599
+ this.parent = undefined;
580
600
  }
581
601
  }
582
602
  stop() {
@@ -624,32 +644,24 @@ var Vue = (function () {
624
644
  trackStack.push(shouldTrack);
625
645
  shouldTrack = false;
626
646
  }
627
- function enableTracking() {
628
- trackStack.push(shouldTrack);
629
- shouldTrack = true;
630
- }
631
647
  function resetTracking() {
632
648
  const last = trackStack.pop();
633
649
  shouldTrack = last === undefined ? true : last;
634
650
  }
635
651
  function track(target, type, key) {
636
- if (!isTracking()) {
637
- return;
638
- }
639
- let depsMap = targetMap.get(target);
640
- if (!depsMap) {
641
- targetMap.set(target, (depsMap = new Map()));
642
- }
643
- let dep = depsMap.get(key);
644
- if (!dep) {
645
- depsMap.set(key, (dep = createDep()));
652
+ if (shouldTrack && activeEffect) {
653
+ let depsMap = targetMap.get(target);
654
+ if (!depsMap) {
655
+ targetMap.set(target, (depsMap = new Map()));
656
+ }
657
+ let dep = depsMap.get(key);
658
+ if (!dep) {
659
+ depsMap.set(key, (dep = createDep()));
660
+ }
661
+ const eventInfo = { effect: activeEffect, target, type, key }
662
+ ;
663
+ trackEffects(dep, eventInfo);
646
664
  }
647
- const eventInfo = { effect: activeEffect, target, type, key }
648
- ;
649
- trackEffects(dep, eventInfo);
650
- }
651
- function isTracking() {
652
- return shouldTrack && activeEffect !== undefined;
653
665
  }
654
666
  function trackEffects(dep, debuggerEventExtraInfo) {
655
667
  let shouldTrack = false;
@@ -810,6 +822,9 @@ var Vue = (function () {
810
822
  else if (key === "__v_isReadonly" /* IS_READONLY */) {
811
823
  return isReadonly;
812
824
  }
825
+ else if (key === "__v_isShallow" /* IS_SHALLOW */) {
826
+ return shallow;
827
+ }
813
828
  else if (key === "__v_raw" /* RAW */ &&
814
829
  receiver ===
815
830
  (isReadonly
@@ -854,9 +869,14 @@ var Vue = (function () {
854
869
  function createSetter(shallow = false) {
855
870
  return function set(target, key, value, receiver) {
856
871
  let oldValue = target[key];
872
+ if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
873
+ return false;
874
+ }
857
875
  if (!shallow && !isReadonly(value)) {
858
- value = toRaw(value);
859
- oldValue = toRaw(oldValue);
876
+ if (!isShallow(value)) {
877
+ value = toRaw(value);
878
+ oldValue = toRaw(oldValue);
879
+ }
860
880
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
861
881
  oldValue.value = value;
862
882
  return true;
@@ -1243,7 +1263,7 @@ var Vue = (function () {
1243
1263
  }
1244
1264
  function reactive(target) {
1245
1265
  // if trying to observe a readonly proxy, return the readonly version.
1246
- if (target && target["__v_isReadonly" /* IS_READONLY */]) {
1266
+ if (isReadonly(target)) {
1247
1267
  return target;
1248
1268
  }
1249
1269
  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
@@ -1308,6 +1328,9 @@ var Vue = (function () {
1308
1328
  function isReadonly(value) {
1309
1329
  return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
1310
1330
  }
1331
+ function isShallow(value) {
1332
+ return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
1333
+ }
1311
1334
  function isProxy(value) {
1312
1335
  return isReactive(value) || isReadonly(value);
1313
1336
  }
@@ -1323,13 +1346,10 @@ var Vue = (function () {
1323
1346
  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
1324
1347
 
1325
1348
  function trackRefValue(ref) {
1326
- if (isTracking()) {
1349
+ if (shouldTrack && activeEffect) {
1327
1350
  ref = toRaw(ref);
1328
- if (!ref.dep) {
1329
- ref.dep = createDep();
1330
- }
1331
1351
  {
1332
- trackEffects(ref.dep, {
1352
+ trackEffects(ref.dep || (ref.dep = createDep()), {
1333
1353
  target: ref,
1334
1354
  type: "get" /* GET */,
1335
1355
  key: 'value'
@@ -1351,7 +1371,7 @@ var Vue = (function () {
1351
1371
  }
1352
1372
  }
1353
1373
  function isRef(r) {
1354
- return Boolean(r && r.__v_isRef === true);
1374
+ return !!(r && r.__v_isRef === true);
1355
1375
  }
1356
1376
  function ref(value) {
1357
1377
  return createRef(value, false);
@@ -1366,22 +1386,22 @@ var Vue = (function () {
1366
1386
  return new RefImpl(rawValue, shallow);
1367
1387
  }
1368
1388
  class RefImpl {
1369
- constructor(value, _shallow) {
1370
- this._shallow = _shallow;
1389
+ constructor(value, __v_isShallow) {
1390
+ this.__v_isShallow = __v_isShallow;
1371
1391
  this.dep = undefined;
1372
1392
  this.__v_isRef = true;
1373
- this._rawValue = _shallow ? value : toRaw(value);
1374
- this._value = _shallow ? value : toReactive(value);
1393
+ this._rawValue = __v_isShallow ? value : toRaw(value);
1394
+ this._value = __v_isShallow ? value : toReactive(value);
1375
1395
  }
1376
1396
  get value() {
1377
1397
  trackRefValue(this);
1378
1398
  return this._value;
1379
1399
  }
1380
1400
  set value(newVal) {
1381
- newVal = this._shallow ? newVal : toRaw(newVal);
1401
+ newVal = this.__v_isShallow ? newVal : toRaw(newVal);
1382
1402
  if (hasChanged(newVal, this._rawValue)) {
1383
1403
  this._rawValue = newVal;
1384
- this._value = this._shallow ? newVal : toReactive(newVal);
1404
+ this._value = this.__v_isShallow ? newVal : toReactive(newVal);
1385
1405
  triggerRefValue(this, newVal);
1386
1406
  }
1387
1407
  }
@@ -1464,22 +1484,23 @@ var Vue = (function () {
1464
1484
  constructor(getter, _setter, isReadonly, isSSR) {
1465
1485
  this._setter = _setter;
1466
1486
  this.dep = undefined;
1467
- this._dirty = true;
1468
1487
  this.__v_isRef = true;
1488
+ this._dirty = true;
1469
1489
  this.effect = new ReactiveEffect(getter, () => {
1470
1490
  if (!this._dirty) {
1471
1491
  this._dirty = true;
1472
1492
  triggerRefValue(this);
1473
1493
  }
1474
1494
  });
1475
- this.effect.active = !isSSR;
1495
+ this.effect.computed = this;
1496
+ this.effect.active = this._cacheable = !isSSR;
1476
1497
  this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1477
1498
  }
1478
1499
  get value() {
1479
1500
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
1480
1501
  const self = toRaw(this);
1481
1502
  trackRefValue(self);
1482
- if (self._dirty) {
1503
+ if (self._dirty || !self._cacheable) {
1483
1504
  self._dirty = false;
1484
1505
  self._value = self.effect.run();
1485
1506
  }
@@ -1656,7 +1677,7 @@ var Vue = (function () {
1656
1677
  [12 /* FUNCTION_REF */]: 'ref function',
1657
1678
  [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
1658
1679
  [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
1659
- 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-next'
1680
+ 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
1660
1681
  };
1661
1682
  function callWithErrorHandling(fn, instance, type, args) {
1662
1683
  let res;
@@ -2161,23 +2182,23 @@ var Vue = (function () {
2161
2182
  ["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
2162
2183
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
2163
2184
  `option have been removed. Use createApp(RootComponent).mount() instead.`,
2164
- link: `https://v3.vuejs.org/guide/migration/global-api.html#mounting-app-instance`
2185
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
2165
2186
  },
2166
2187
  ["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
2167
2188
  message: `Vue detected directives on the mount container. ` +
2168
2189
  `In Vue 3, the container is no longer considered part of the template ` +
2169
2190
  `and will not be processed/replaced.`,
2170
- link: `https://v3.vuejs.org/guide/migration/mount-changes.html`
2191
+ link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
2171
2192
  },
2172
2193
  ["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
2173
2194
  message: `Vue.extend() has been removed in Vue 3. ` +
2174
2195
  `Use defineComponent() instead.`,
2175
- link: `https://v3.vuejs.org/api/global-api.html#definecomponent`
2196
+ link: `https://vuejs.org/api/general.html#definecomponent`
2176
2197
  },
2177
2198
  ["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
2178
2199
  message: `Vue.prototype is no longer available in Vue 3. ` +
2179
2200
  `Use app.config.globalProperties instead.`,
2180
- link: `https://v3.vuejs.org/guide/migration/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2201
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2181
2202
  },
2182
2203
  ["GLOBAL_SET" /* GLOBAL_SET */]: {
2183
2204
  message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
@@ -2190,7 +2211,7 @@ var Vue = (function () {
2190
2211
  ["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
2191
2212
  message: `Vue.observable() has been removed. ` +
2192
2213
  `Use \`import { reactive } from "vue"\` from Composition API instead.`,
2193
- link: `https://v3.vuejs.org/api/basic-reactivity.html`
2214
+ link: `https://vuejs.org/api/reactivity-core.html#reactive`
2194
2215
  },
2195
2216
  ["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
2196
2217
  message: `Vue.util has been removed. Please refactor to avoid its usage ` +
@@ -2204,16 +2225,16 @@ var Vue = (function () {
2204
2225
  ["CONFIG_DEVTOOLS" /* CONFIG_DEVTOOLS */]: {
2205
2226
  message: `config.devtools has been removed. To enable devtools for ` +
2206
2227
  `production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,
2207
- link: `https://github.com/vuejs/vue-next/tree/master/packages/vue#bundler-build-feature-flags`
2228
+ link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`
2208
2229
  },
2209
2230
  ["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
2210
2231
  message: `config.keyCodes has been removed. ` +
2211
2232
  `In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
2212
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2233
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2213
2234
  },
2214
2235
  ["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
2215
2236
  message: `config.productionTip has been removed.`,
2216
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-productiontip-removed`
2237
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
2217
2238
  },
2218
2239
  ["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
2219
2240
  message: () => {
@@ -2226,7 +2247,7 @@ var Vue = (function () {
2226
2247
  }
2227
2248
  return msg;
2228
2249
  },
2229
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2250
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2230
2251
  },
2231
2252
  ["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
2232
2253
  // this warning is only relevant in the full build when using runtime
@@ -2249,12 +2270,12 @@ var Vue = (function () {
2249
2270
  },
2250
2271
  ["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
2251
2272
  message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
2252
- link: `https://v3.vuejs.org/api/application-api.html#unmount`
2273
+ link: `https://vuejs.org/api/application.html#app-unmount`
2253
2274
  },
2254
2275
  ["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
2255
2276
  message: `vm.$on/$once/$off() have been removed. ` +
2256
2277
  `Use an external event emitter library instead.`,
2257
- link: `https://v3.vuejs.org/guide/migration/events-api.html`
2278
+ link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
2258
2279
  },
2259
2280
  ["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
2260
2281
  message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
@@ -2262,23 +2283,23 @@ var Vue = (function () {
2262
2283
  `should be changed to @vnode-${event.slice(5)}. ` +
2263
2284
  `From JavaScript, use Composition API to dynamically register lifecycle ` +
2264
2285
  `hooks.`,
2265
- link: `https://v3.vuejs.org/guide/migration/vnode-lifecycle-events.html`
2286
+ link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
2266
2287
  },
2267
2288
  ["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
2268
2289
  message: `vm.$children has been removed. Consider refactoring your logic ` +
2269
2290
  `to avoid relying on direct access to child components.`,
2270
- link: `https://v3.vuejs.org/guide/migration/children.html`
2291
+ link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
2271
2292
  },
2272
2293
  ["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
2273
2294
  message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
2274
2295
  `included in vm.$attrs and it is no longer necessary to separately use ` +
2275
2296
  `v-on="$listeners" if you are already using v-bind="$attrs". ` +
2276
2297
  `(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
2277
- link: `https://v3.vuejs.org/guide/migration/listeners-removed.html`
2298
+ link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
2278
2299
  },
2279
2300
  ["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
2280
2301
  message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
2281
- link: `https://v3.vuejs.org/guide/migration/slots-unification.html`
2302
+ link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
2282
2303
  },
2283
2304
  ["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
2284
2305
  message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
@@ -2289,17 +2310,17 @@ var Vue = (function () {
2289
2310
  `If you are binding $attrs to a non-root element and expecting ` +
2290
2311
  `class/style to fallthrough on root, you will need to now manually bind ` +
2291
2312
  `them on root via :class="$attrs.class".`,
2292
- link: `https://v3.vuejs.org/guide/migration/attrs-includes-class-style.html`
2313
+ link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
2293
2314
  },
2294
2315
  ["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
2295
2316
  message: `The "data" option can no longer be a plain object. ` +
2296
2317
  `Always use a function.`,
2297
- link: `https://v3.vuejs.org/guide/migration/data-option.html`
2318
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
2298
2319
  },
2299
2320
  ["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
2300
2321
  message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
2301
2322
  `In Vue 3, data keys are merged shallowly and will override one another.`,
2302
- link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
2323
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
2303
2324
  },
2304
2325
  ["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
2305
2326
  message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
@@ -2313,23 +2334,23 @@ var Vue = (function () {
2313
2334
  `If current usage is intended, you can disable the compat behavior and ` +
2314
2335
  `suppress this warning with:` +
2315
2336
  `\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
2316
- link: `https://v3.vuejs.org/guide/migration/watch.html`
2337
+ link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
2317
2338
  },
2318
2339
  ["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
2319
2340
  message: (key) => `props default value function no longer has access to "this". The compat ` +
2320
2341
  `build only offers access to this.$options.` +
2321
2342
  `(found in prop "${key}")`,
2322
- link: `https://v3.vuejs.org/guide/migration/props-default-this.html`
2343
+ link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
2323
2344
  },
2324
2345
  ["CUSTOM_DIR" /* CUSTOM_DIR */]: {
2325
2346
  message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
2326
2347
  `Use "${newHook}" instead.`,
2327
- link: `https://v3.vuejs.org/guide/migration/custom-directives.html`
2348
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
2328
2349
  },
2329
2350
  ["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
2330
2351
  message: `Using keyCode as v-on modifier is no longer supported. ` +
2331
2352
  `Use kebab-case key name modifiers instead.`,
2332
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2353
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2333
2354
  },
2334
2355
  ["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
2335
2356
  message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
@@ -2337,7 +2358,7 @@ var Vue = (function () {
2337
2358
  `use \`null\` or \`undefined\` instead. If the usage is intended, ` +
2338
2359
  `you can disable the compat behavior and suppress this warning with:` +
2339
2360
  `\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
2340
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2361
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2341
2362
  },
2342
2363
  ["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
2343
2364
  message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
@@ -2346,7 +2367,7 @@ var Vue = (function () {
2346
2367
  `If the usage is intended, ` +
2347
2368
  `you can disable the compat behavior and suppress this warning with:` +
2348
2369
  `\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
2349
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2370
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2350
2371
  },
2351
2372
  ["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
2352
2373
  message: `` // this feature cannot be runtime-detected
@@ -2357,7 +2378,7 @@ var Vue = (function () {
2357
2378
  `for styling, you can disable the compat behavior and suppress this ` +
2358
2379
  `warning with:` +
2359
2380
  `\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
2360
- link: `https://v3.vuejs.org/guide/migration/transition-group.html`
2381
+ link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
2361
2382
  },
2362
2383
  ["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
2363
2384
  message: (comp) => {
@@ -2370,7 +2391,7 @@ var Vue = (function () {
2370
2391
  `warning with:` +
2371
2392
  `\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
2372
2393
  },
2373
- link: `https://v3.vuejs.org/guide/migration/async-components.html`
2394
+ link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
2374
2395
  },
2375
2396
  ["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
2376
2397
  message: (comp) => {
@@ -2381,7 +2402,7 @@ var Vue = (function () {
2381
2402
  `components usage have been migrated and its compat behavior has ` +
2382
2403
  `been disabled.`);
2383
2404
  },
2384
- link: `https://v3.vuejs.org/guide/migration/functional-components.html`
2405
+ link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
2385
2406
  },
2386
2407
  ["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
2387
2408
  message: (comp) => {
@@ -2391,27 +2412,27 @@ var Vue = (function () {
2391
2412
  (isArray(comp.props)
2392
2413
  ? comp.props.includes('modelValue')
2393
2414
  : hasOwn(comp.props, 'modelValue'))) {
2394
- return (`Component delcares "modelValue" prop, which is Vue 3 usage, but ` +
2415
+ return (`Component declares "modelValue" prop, which is Vue 3 usage, but ` +
2395
2416
  `is running under Vue 2 compat v-model behavior. You can ${configMsg}`);
2396
2417
  }
2397
2418
  return (`v-model usage on component has changed in Vue 3. Component that expects ` +
2398
2419
  `to work with v-model should now use the "modelValue" prop and emit the ` +
2399
2420
  `"update:modelValue" event. You can update the usage and then ${configMsg}`);
2400
2421
  },
2401
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
2422
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
2402
2423
  },
2403
2424
  ["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
2404
2425
  message: `Vue 3's render function API has changed. ` +
2405
2426
  `You can opt-in to the new API with:` +
2406
2427
  `\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
2407
2428
  `\n (This can also be done per-component via the "compatConfig" option.)`,
2408
- link: `https://v3.vuejs.org/guide/migration/render-function-api.html`
2429
+ link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
2409
2430
  },
2410
2431
  ["FILTERS" /* FILTERS */]: {
2411
2432
  message: `filters have been removed in Vue 3. ` +
2412
2433
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
2413
2434
  `Use method calls or computed properties instead.`,
2414
- link: `https://v3.vuejs.org/guide/migration/filters.html`
2435
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
2415
2436
  },
2416
2437
  ["PRIVATE_APIS" /* PRIVATE_APIS */]: {
2417
2438
  message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
@@ -2479,7 +2500,7 @@ var Vue = (function () {
2479
2500
  warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
2480
2501
  `running a runtime-only build of Vue. This deprecation should be ` +
2481
2502
  `configured via compiler options in your build setup instead.\n` +
2482
- `Details: https://v3.vuejs.org/guide/migration/migration-build.html`);
2503
+ `Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
2483
2504
  }
2484
2505
  }
2485
2506
  else {
@@ -2621,6 +2642,7 @@ var Vue = (function () {
2621
2642
  const warnedTypes = new WeakSet();
2622
2643
  function convertLegacyVModelProps(vnode) {
2623
2644
  const { type, shapeFlag, props, dynamicProps } = vnode;
2645
+ const comp = type;
2624
2646
  if (shapeFlag & 6 /* COMPONENT */ && props && 'modelValue' in props) {
2625
2647
  if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */,
2626
2648
  // this is a special case where we want to use the vnode component's
@@ -2629,16 +2651,18 @@ var Vue = (function () {
2629
2651
  { type })) {
2630
2652
  return;
2631
2653
  }
2632
- if (!warnedTypes.has(type)) {
2654
+ if (!warnedTypes.has(comp)) {
2633
2655
  pushWarningContext(vnode);
2634
- warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, type);
2656
+ warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, comp);
2635
2657
  popWarningContext();
2636
- warnedTypes.add(type);
2658
+ warnedTypes.add(comp);
2637
2659
  }
2638
2660
  // v3 compiled model code -> v2 compat props
2639
2661
  // modelValue -> value
2640
2662
  // onUpdate:modelValue -> onModelCompat:input
2641
- const { prop = 'value', event = 'input' } = type.model || {};
2663
+ const model = comp.model || {};
2664
+ applyModelFromMixins(model, comp.mixins);
2665
+ const { prop = 'value', event = 'input' } = model;
2642
2666
  if (prop !== 'modelValue') {
2643
2667
  props[prop] = props.modelValue;
2644
2668
  delete props.modelValue;
@@ -2651,6 +2675,16 @@ var Vue = (function () {
2651
2675
  delete props['onUpdate:modelValue'];
2652
2676
  }
2653
2677
  }
2678
+ function applyModelFromMixins(model, mixins) {
2679
+ if (mixins) {
2680
+ mixins.forEach(m => {
2681
+ if (m.model)
2682
+ extend(model, m.model);
2683
+ if (m.mixins)
2684
+ applyModelFromMixins(model, m.mixins);
2685
+ });
2686
+ }
2687
+ }
2654
2688
  function compatModelEmit(instance, event, args) {
2655
2689
  if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, instance)) {
2656
2690
  return;
@@ -3653,7 +3687,7 @@ var Vue = (function () {
3653
3687
  if (instance) {
3654
3688
  // #2400
3655
3689
  // to support `app.use` plugins,
3656
- // fallback to appContext's `provides` if the intance is at root
3690
+ // fallback to appContext's `provides` if the instance is at root
3657
3691
  const provides = instance.parent == null
3658
3692
  ? instance.vnode.appContext && instance.vnode.appContext.provides
3659
3693
  : instance.parent.provides;
@@ -3719,7 +3753,7 @@ var Vue = (function () {
3719
3753
  let isMultiSource = false;
3720
3754
  if (isRef(source)) {
3721
3755
  getter = () => source.value;
3722
- forceTrigger = !!source._shallow;
3756
+ forceTrigger = isShallow(source);
3723
3757
  }
3724
3758
  else if (isReactive(source)) {
3725
3759
  getter = () => source;
@@ -4613,7 +4647,7 @@ var Vue = (function () {
4613
4647
  return pattern.some((p) => matches(p, name));
4614
4648
  }
4615
4649
  else if (isString(pattern)) {
4616
- return pattern.split(',').indexOf(name) > -1;
4650
+ return pattern.split(',').includes(name);
4617
4651
  }
4618
4652
  else if (pattern.test) {
4619
4653
  return pattern.test(name);
@@ -4881,7 +4915,7 @@ var Vue = (function () {
4881
4915
  warn$1(`Write operation failed: computed property "${key}" is readonly.`);
4882
4916
  }
4883
4917
  ;
4884
- const c = computed({
4918
+ const c = computed$1({
4885
4919
  get,
4886
4920
  set
4887
4921
  });
@@ -5362,7 +5396,9 @@ var Vue = (function () {
5362
5396
  // attrs point to the same object so it should already have been updated.
5363
5397
  if (attrs !== rawCurrentProps) {
5364
5398
  for (const key in attrs) {
5365
- if (!rawProps || !hasOwn(rawProps, key)) {
5399
+ if (!rawProps ||
5400
+ (!hasOwn(rawProps, key) &&
5401
+ (!hasOwn(rawProps, key + 'Native')))) {
5366
5402
  delete attrs[key];
5367
5403
  hasAttrsChanged = true;
5368
5404
  }
@@ -5865,7 +5901,6 @@ var Vue = (function () {
5865
5901
  [bar, this.y]
5866
5902
  ])
5867
5903
  */
5868
- const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
5869
5904
  function validateDirectiveName(name) {
5870
5905
  if (isBuiltInDirective(name)) {
5871
5906
  warn$1('Do not use built-in directive ids as custom directive id: ' + name);
@@ -6000,7 +6035,7 @@ var Vue = (function () {
6000
6035
  return vm;
6001
6036
  }
6002
6037
  }
6003
- Vue.version = "3.2.27";
6038
+ Vue.version = `2.6.14-compat:${"3.2.31"}`;
6004
6039
  Vue.config = singletonApp.config;
6005
6040
  Vue.use = (p, ...options) => {
6006
6041
  if (p && isFunction(p.install)) {
@@ -6824,7 +6859,8 @@ var Vue = (function () {
6824
6859
  // e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
6825
6860
  const forcePatchValue = (type === 'input' && dirs) || type === 'option';
6826
6861
  // skip props & children if this is hoisted static nodes
6827
- if (forcePatchValue || patchFlag !== -1 /* HOISTED */) {
6862
+ // #5405 in dev, always hydrate children for HMR
6863
+ {
6828
6864
  if (dirs) {
6829
6865
  invokeDirectiveHook(vnode, null, parentComponent, 'created');
6830
6866
  }
@@ -6989,6 +7025,7 @@ var Vue = (function () {
6989
7025
  return [hydrate, hydrateNode];
6990
7026
  }
6991
7027
 
7028
+ /* eslint-disable no-restricted-globals */
6992
7029
  let supported;
6993
7030
  let perf;
6994
7031
  function startMeasure(instance, type) {
@@ -7016,7 +7053,6 @@ var Vue = (function () {
7016
7053
  if (supported !== undefined) {
7017
7054
  return supported;
7018
7055
  }
7019
- /* eslint-disable no-restricted-globals */
7020
7056
  if (typeof window !== 'undefined' && window.performance) {
7021
7057
  supported = true;
7022
7058
  perf = window.performance;
@@ -7024,7 +7060,6 @@ var Vue = (function () {
7024
7060
  else {
7025
7061
  supported = false;
7026
7062
  }
7027
- /* eslint-enable no-restricted-globals */
7028
7063
  return supported;
7029
7064
  }
7030
7065
 
@@ -9270,7 +9305,7 @@ var Vue = (function () {
9270
9305
  shapeFlag: vnode.shapeFlag,
9271
9306
  // if the vnode is cloned with extra props, we can no longer assume its
9272
9307
  // existing patch flag to be reliable and need to add the FULL_PROPS flag.
9273
- // note: perserve flag for fragments since they use the flag for children
9308
+ // note: preserve flag for fragments since they use the flag for children
9274
9309
  // fast paths only.
9275
9310
  patchFlag: extraProps && vnode.type !== Fragment
9276
9311
  ? patchFlag === -1 // hoisted node
@@ -9435,7 +9470,8 @@ var Vue = (function () {
9435
9470
  else if (isOn(key)) {
9436
9471
  const existing = ret[key];
9437
9472
  const incoming = toMerge[key];
9438
- if (existing !== incoming &&
9473
+ if (incoming &&
9474
+ existing !== incoming &&
9439
9475
  !(isArray(existing) && existing.includes(incoming))) {
9440
9476
  ret[key] = existing
9441
9477
  ? [].concat(existing, incoming)
@@ -9711,7 +9747,7 @@ var Vue = (function () {
9711
9747
  }
9712
9748
  function isKeyNotMatch(expect, actual) {
9713
9749
  if (isArray(expect)) {
9714
- return expect.indexOf(actual) === -1;
9750
+ return !expect.includes(actual);
9715
9751
  }
9716
9752
  else {
9717
9753
  return expect !== actual;
@@ -9790,7 +9826,7 @@ var Vue = (function () {
9790
9826
  extend(map, {
9791
9827
  // needed by many libs / render fns
9792
9828
  $vnode: i => i.vnode,
9793
- // inject addtional properties into $options for compat
9829
+ // inject additional properties into $options for compat
9794
9830
  // e.g. vuex needs this.$options.parent
9795
9831
  $options: i => {
9796
9832
  const res = extend({}, resolveMergedOptions(i));
@@ -9978,9 +10014,11 @@ var Vue = (function () {
9978
10014
  const { data, setupState, ctx } = instance;
9979
10015
  if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
9980
10016
  setupState[key] = value;
10017
+ return true;
9981
10018
  }
9982
10019
  else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
9983
10020
  data[key] = value;
10021
+ return true;
9984
10022
  }
9985
10023
  else if (hasOwn(instance.props, key)) {
9986
10024
  warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
@@ -10014,6 +10052,15 @@ var Vue = (function () {
10014
10052
  hasOwn(ctx, key) ||
10015
10053
  hasOwn(publicPropertiesMap, key) ||
10016
10054
  hasOwn(appContext.config.globalProperties, key));
10055
+ },
10056
+ defineProperty(target, key, descriptor) {
10057
+ if (descriptor.get != null) {
10058
+ this.set(target, key, descriptor.get(), null);
10059
+ }
10060
+ else if (descriptor.value != null) {
10061
+ this.set(target, key, descriptor.value, null);
10062
+ }
10063
+ return Reflect.defineProperty(target, key, descriptor);
10017
10064
  }
10018
10065
  };
10019
10066
  {
@@ -10518,7 +10565,7 @@ var Vue = (function () {
10518
10565
  * instance properties when it is accessed by a parent component via template
10519
10566
  * refs.
10520
10567
  *
10521
- * `<script setup>` components are closed by default - i.e. varaibles inside
10568
+ * `<script setup>` components are closed by default - i.e. variables inside
10522
10569
  * the `<script setup>` scope is not exposed to parent unless explicitly exposed
10523
10570
  * via `defineExpose`.
10524
10571
  *
@@ -10716,7 +10763,7 @@ var Vue = (function () {
10716
10763
  return [
10717
10764
  'div',
10718
10765
  {},
10719
- ['span', vueStyle, 'Reactive'],
10766
+ ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
10720
10767
  '<',
10721
10768
  formatValue(obj),
10722
10769
  `>${isReadonly(obj) ? ` (readonly)` : ``}`
@@ -10726,7 +10773,7 @@ var Vue = (function () {
10726
10773
  return [
10727
10774
  'div',
10728
10775
  {},
10729
- ['span', vueStyle, 'Readonly'],
10776
+ ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
10730
10777
  '<',
10731
10778
  formatValue(obj),
10732
10779
  '>'
@@ -10855,7 +10902,7 @@ var Vue = (function () {
10855
10902
  }
10856
10903
  }
10857
10904
  function genRefFlag(v) {
10858
- if (v._shallow) {
10905
+ if (isShallow(v)) {
10859
10906
  return `ShallowRef`;
10860
10907
  }
10861
10908
  if (v.effect) {
@@ -10899,7 +10946,7 @@ var Vue = (function () {
10899
10946
  }
10900
10947
 
10901
10948
  // Core API ------------------------------------------------------------------
10902
- const version = "3.2.27";
10949
+ const version = "3.2.31";
10903
10950
  /**
10904
10951
  * SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
10905
10952
  * @internal
@@ -10980,7 +11027,10 @@ var Vue = (function () {
10980
11027
  insertStaticContent(content, parent, anchor, isSVG, start, end) {
10981
11028
  // <parent> before | first ... last | anchor </parent>
10982
11029
  const before = anchor ? anchor.previousSibling : parent.lastChild;
10983
- if (start && end) {
11030
+ // #5308 can only take cached path if:
11031
+ // - has a single root node
11032
+ // - nextSibling info is still available
11033
+ if (start && (start === end || start.nextSibling)) {
10984
11034
  // cached
10985
11035
  while (true) {
10986
11036
  parent.insertBefore(start.cloneNode(true), anchor);
@@ -11330,7 +11380,7 @@ var Vue = (function () {
11330
11380
  originalStop.call(e);
11331
11381
  e._stopped = true;
11332
11382
  };
11333
- return value.map(fn => (e) => !e._stopped && fn(e));
11383
+ return value.map(fn => (e) => !e._stopped && fn && fn(e));
11334
11384
  }
11335
11385
  else {
11336
11386
  return value;
@@ -12692,6 +12742,7 @@ var Vue = (function () {
12692
12742
  isProxy: isProxy,
12693
12743
  isReactive: isReactive,
12694
12744
  isReadonly: isReadonly,
12745
+ isShallow: isShallow,
12695
12746
  customRef: customRef,
12696
12747
  triggerRef: triggerRef,
12697
12748
  shallowRef: shallowRef,
@@ -13467,13 +13518,13 @@ var Vue = (function () {
13467
13518
  message: `Platform-native elements with "is" prop will no longer be ` +
13468
13519
  `treated as components in Vue 3 unless the "is" value is explicitly ` +
13469
13520
  `prefixed with "vue:".`,
13470
- link: `https://v3.vuejs.org/guide/migration/custom-elements-interop.html`
13521
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
13471
13522
  },
13472
13523
  ["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
13473
13524
  message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
13474
13525
  `argument instead. \`v-bind:${key}.sync\` should be changed to ` +
13475
13526
  `\`v-model:${key}\`.`,
13476
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
13527
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
13477
13528
  },
13478
13529
  ["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
13479
13530
  message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
@@ -13485,11 +13536,11 @@ var Vue = (function () {
13485
13536
  `that appears before v-bind in the case of conflict. ` +
13486
13537
  `To retain 2.x behavior, move v-bind to make it the first attribute. ` +
13487
13538
  `You can also suppress this warning if the usage is intended.`,
13488
- link: `https://v3.vuejs.org/guide/migration/v-bind.html`
13539
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
13489
13540
  },
13490
13541
  ["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
13491
13542
  message: `.native modifier for v-on has been removed as is no longer necessary.`,
13492
- link: `https://v3.vuejs.org/guide/migration/v-on-native-modifier-removed.html`
13543
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
13493
13544
  },
13494
13545
  ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
13495
13546
  message: `v-if / v-for precedence when used on the same element has changed ` +
@@ -13497,7 +13548,7 @@ var Vue = (function () {
13497
13548
  `access to v-for scope variables. It is best to avoid the ambiguity ` +
13498
13549
  `with <template> tags or use a computed property that filters v-for ` +
13499
13550
  `data source.`,
13500
- link: `https://v3.vuejs.org/guide/migration/v-if-v-for.html`
13551
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
13501
13552
  },
13502
13553
  ["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
13503
13554
  message: `<template> with no special directives will render as a native template ` +
@@ -13505,13 +13556,13 @@ var Vue = (function () {
13505
13556
  },
13506
13557
  ["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
13507
13558
  message: `"inline-template" has been removed in Vue 3.`,
13508
- link: `https://v3.vuejs.org/guide/migration/inline-template-attribute.html`
13559
+ link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
13509
13560
  },
13510
13561
  ["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
13511
13562
  message: `filters have been removed in Vue 3. ` +
13512
13563
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
13513
13564
  `Use method calls or computed properties instead.`,
13514
- link: `https://v3.vuejs.org/guide/migration/filters.html`
13565
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
13515
13566
  }
13516
13567
  };
13517
13568
  function getCompatValue(key, context) {
@@ -14041,7 +14092,7 @@ var Vue = (function () {
14041
14092
  }
14042
14093
  const attr = parseAttribute(context, attributeNames);
14043
14094
  // Trim whitespace between class
14044
- // https://github.com/vuejs/vue-next/issues/4251
14095
+ // https://github.com/vuejs/core/issues/4251
14045
14096
  if (attr.type === 6 /* ATTRIBUTE */ &&
14046
14097
  attr.value &&
14047
14098
  attr.name === 'class') {
@@ -14277,7 +14328,7 @@ var Vue = (function () {
14277
14328
  advanceBy(context, length);
14278
14329
  if (mode === 2 /* RAWTEXT */ ||
14279
14330
  mode === 3 /* CDATA */ ||
14280
- rawText.indexOf('&') === -1) {
14331
+ !rawText.includes('&')) {
14281
14332
  return rawText;
14282
14333
  }
14283
14334
  else {
@@ -15798,6 +15849,7 @@ var Vue = (function () {
15798
15849
  const renderExp = createCallExpression(helper(RENDER_LIST), [
15799
15850
  forNode.source
15800
15851
  ]);
15852
+ const isTemplate = isTemplateNode(node);
15801
15853
  const memo = findDir(node, 'memo');
15802
15854
  const keyProp = findProp(node, `key`);
15803
15855
  const keyExp = keyProp &&
@@ -15817,7 +15869,6 @@ var Vue = (function () {
15817
15869
  return () => {
15818
15870
  // finish the codegen now that all children have been traversed
15819
15871
  let childBlock;
15820
- const isTemplate = isTemplateNode(node);
15821
15872
  const { children } = forNode;
15822
15873
  // check <template v-for> key placement
15823
15874
  if (isTemplate) {
@@ -16619,7 +16670,7 @@ var Vue = (function () {
16619
16670
  }
16620
16671
  }
16621
16672
  }
16622
- else {
16673
+ else if (!isBuiltInDirective(name)) {
16623
16674
  // no built-in transform, this is a user custom directive.
16624
16675
  runtimeDirectives.push(prop);
16625
16676
  // custom dirs may use beforeUpdate so they need to force blocks