@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.
- package/README.md +43 -43
- package/dist/vue.cjs.js +215 -162
- package/dist/vue.cjs.prod.js +165 -110
- package/dist/vue.esm-browser.js +204 -153
- package/dist/vue.esm-browser.prod.js +1 -1
- package/dist/vue.esm-bundler.js +206 -155
- package/dist/vue.global.js +203 -152
- package/dist/vue.global.prod.js +1 -1
- package/dist/vue.runtime.esm-browser.js +189 -142
- package/dist/vue.runtime.esm-browser.prod.js +1 -1
- package/dist/vue.runtime.esm-bundler.js +191 -144
- package/dist/vue.runtime.global.js +188 -141
- package/dist/vue.runtime.global.prod.js +1 -1
- package/package.json +5 -5
package/dist/vue.esm-browser.js
CHANGED
|
@@ -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 `true` flag.
|
|
212
|
+
*/
|
|
209
213
|
const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
|
|
214
|
+
/**
|
|
215
|
+
* Compiler only.
|
|
216
|
+
* Do NOT use in runtime code paths unless behind `true` flag.
|
|
217
|
+
*/
|
|
210
218
|
const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
|
|
219
|
+
/**
|
|
220
|
+
* Compiler only.
|
|
221
|
+
* Do NOT use in runtime code paths unless behind `true` 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
|
|
269
|
-
?
|
|
270
|
-
:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
|
@@ -345,6 +359,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
|
|
|
345
359
|
'onVnodeBeforeMount,onVnodeMounted,' +
|
|
346
360
|
'onVnodeBeforeUpdate,onVnodeUpdated,' +
|
|
347
361
|
'onVnodeBeforeUnmount,onVnodeUnmounted');
|
|
362
|
+
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
348
363
|
const cacheStringFunction = (fn) => {
|
|
349
364
|
const cache = Object.create(null);
|
|
350
365
|
return ((str) => {
|
|
@@ -410,7 +425,6 @@ function warn(msg, ...args) {
|
|
|
410
425
|
}
|
|
411
426
|
|
|
412
427
|
let activeEffectScope;
|
|
413
|
-
const effectScopeStack = [];
|
|
414
428
|
class EffectScope {
|
|
415
429
|
constructor(detached = false) {
|
|
416
430
|
this.active = true;
|
|
@@ -425,11 +439,11 @@ class EffectScope {
|
|
|
425
439
|
run(fn) {
|
|
426
440
|
if (this.active) {
|
|
427
441
|
try {
|
|
428
|
-
this
|
|
442
|
+
activeEffectScope = this;
|
|
429
443
|
return fn();
|
|
430
444
|
}
|
|
431
445
|
finally {
|
|
432
|
-
this.
|
|
446
|
+
activeEffectScope = this.parent;
|
|
433
447
|
}
|
|
434
448
|
}
|
|
435
449
|
else {
|
|
@@ -437,23 +451,24 @@ class EffectScope {
|
|
|
437
451
|
}
|
|
438
452
|
}
|
|
439
453
|
on() {
|
|
440
|
-
|
|
441
|
-
effectScopeStack.push(this);
|
|
442
|
-
activeEffectScope = this;
|
|
443
|
-
}
|
|
454
|
+
activeEffectScope = this;
|
|
444
455
|
}
|
|
445
456
|
off() {
|
|
446
|
-
|
|
447
|
-
effectScopeStack.pop();
|
|
448
|
-
activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
|
|
449
|
-
}
|
|
457
|
+
activeEffectScope = this.parent;
|
|
450
458
|
}
|
|
451
459
|
stop(fromParent) {
|
|
452
460
|
if (this.active) {
|
|
453
|
-
|
|
454
|
-
this.
|
|
461
|
+
let i, l;
|
|
462
|
+
for (i = 0, l = this.effects.length; i < l; i++) {
|
|
463
|
+
this.effects[i].stop();
|
|
464
|
+
}
|
|
465
|
+
for (i = 0, l = this.cleanups.length; i < l; i++) {
|
|
466
|
+
this.cleanups[i]();
|
|
467
|
+
}
|
|
455
468
|
if (this.scopes) {
|
|
456
|
-
this.scopes.
|
|
469
|
+
for (i = 0, l = this.scopes.length; i < l; i++) {
|
|
470
|
+
this.scopes[i].stop(true);
|
|
471
|
+
}
|
|
457
472
|
}
|
|
458
473
|
// nested scope, dereference from parent to avoid memory leaks
|
|
459
474
|
if (this.parent && !fromParent) {
|
|
@@ -471,8 +486,7 @@ class EffectScope {
|
|
|
471
486
|
function effectScope(detached) {
|
|
472
487
|
return new EffectScope(detached);
|
|
473
488
|
}
|
|
474
|
-
function recordEffectScope(effect, scope) {
|
|
475
|
-
scope = scope || activeEffectScope;
|
|
489
|
+
function recordEffectScope(effect, scope = activeEffectScope) {
|
|
476
490
|
if (scope && scope.active) {
|
|
477
491
|
scope.effects.push(effect);
|
|
478
492
|
}
|
|
@@ -535,7 +549,6 @@ let trackOpBit = 1;
|
|
|
535
549
|
* When recursion depth is greater, fall back to using a full cleanup.
|
|
536
550
|
*/
|
|
537
551
|
const maxMarkerBits = 30;
|
|
538
|
-
const effectStack = [];
|
|
539
552
|
let activeEffect;
|
|
540
553
|
const ITERATE_KEY = Symbol('iterate' );
|
|
541
554
|
const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
|
|
@@ -545,35 +558,42 @@ class ReactiveEffect {
|
|
|
545
558
|
this.scheduler = scheduler;
|
|
546
559
|
this.active = true;
|
|
547
560
|
this.deps = [];
|
|
561
|
+
this.parent = undefined;
|
|
548
562
|
recordEffectScope(this, scope);
|
|
549
563
|
}
|
|
550
564
|
run() {
|
|
551
565
|
if (!this.active) {
|
|
552
566
|
return this.fn();
|
|
553
567
|
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
if (effectTrackDepth <= maxMarkerBits) {
|
|
560
|
-
initDepMarkers(this);
|
|
561
|
-
}
|
|
562
|
-
else {
|
|
563
|
-
cleanupEffect(this);
|
|
564
|
-
}
|
|
565
|
-
return this.fn();
|
|
568
|
+
let parent = activeEffect;
|
|
569
|
+
let lastShouldTrack = shouldTrack;
|
|
570
|
+
while (parent) {
|
|
571
|
+
if (parent === this) {
|
|
572
|
+
return;
|
|
566
573
|
}
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
574
|
+
parent = parent.parent;
|
|
575
|
+
}
|
|
576
|
+
try {
|
|
577
|
+
this.parent = activeEffect;
|
|
578
|
+
activeEffect = this;
|
|
579
|
+
shouldTrack = true;
|
|
580
|
+
trackOpBit = 1 << ++effectTrackDepth;
|
|
581
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
582
|
+
initDepMarkers(this);
|
|
576
583
|
}
|
|
584
|
+
else {
|
|
585
|
+
cleanupEffect(this);
|
|
586
|
+
}
|
|
587
|
+
return this.fn();
|
|
588
|
+
}
|
|
589
|
+
finally {
|
|
590
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
591
|
+
finalizeDepMarkers(this);
|
|
592
|
+
}
|
|
593
|
+
trackOpBit = 1 << --effectTrackDepth;
|
|
594
|
+
activeEffect = this.parent;
|
|
595
|
+
shouldTrack = lastShouldTrack;
|
|
596
|
+
this.parent = undefined;
|
|
577
597
|
}
|
|
578
598
|
}
|
|
579
599
|
stop() {
|
|
@@ -621,32 +641,24 @@ function pauseTracking() {
|
|
|
621
641
|
trackStack.push(shouldTrack);
|
|
622
642
|
shouldTrack = false;
|
|
623
643
|
}
|
|
624
|
-
function enableTracking() {
|
|
625
|
-
trackStack.push(shouldTrack);
|
|
626
|
-
shouldTrack = true;
|
|
627
|
-
}
|
|
628
644
|
function resetTracking() {
|
|
629
645
|
const last = trackStack.pop();
|
|
630
646
|
shouldTrack = last === undefined ? true : last;
|
|
631
647
|
}
|
|
632
648
|
function track(target, type, key) {
|
|
633
|
-
if (
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
649
|
+
if (shouldTrack && activeEffect) {
|
|
650
|
+
let depsMap = targetMap.get(target);
|
|
651
|
+
if (!depsMap) {
|
|
652
|
+
targetMap.set(target, (depsMap = new Map()));
|
|
653
|
+
}
|
|
654
|
+
let dep = depsMap.get(key);
|
|
655
|
+
if (!dep) {
|
|
656
|
+
depsMap.set(key, (dep = createDep()));
|
|
657
|
+
}
|
|
658
|
+
const eventInfo = { effect: activeEffect, target, type, key }
|
|
659
|
+
;
|
|
660
|
+
trackEffects(dep, eventInfo);
|
|
643
661
|
}
|
|
644
|
-
const eventInfo = { effect: activeEffect, target, type, key }
|
|
645
|
-
;
|
|
646
|
-
trackEffects(dep, eventInfo);
|
|
647
|
-
}
|
|
648
|
-
function isTracking() {
|
|
649
|
-
return shouldTrack && activeEffect !== undefined;
|
|
650
662
|
}
|
|
651
663
|
function trackEffects(dep, debuggerEventExtraInfo) {
|
|
652
664
|
let shouldTrack = false;
|
|
@@ -807,6 +819,9 @@ function createGetter(isReadonly = false, shallow = false) {
|
|
|
807
819
|
else if (key === "__v_isReadonly" /* IS_READONLY */) {
|
|
808
820
|
return isReadonly;
|
|
809
821
|
}
|
|
822
|
+
else if (key === "__v_isShallow" /* IS_SHALLOW */) {
|
|
823
|
+
return shallow;
|
|
824
|
+
}
|
|
810
825
|
else if (key === "__v_raw" /* RAW */ &&
|
|
811
826
|
receiver ===
|
|
812
827
|
(isReadonly
|
|
@@ -851,9 +866,14 @@ const shallowSet = /*#__PURE__*/ createSetter(true);
|
|
|
851
866
|
function createSetter(shallow = false) {
|
|
852
867
|
return function set(target, key, value, receiver) {
|
|
853
868
|
let oldValue = target[key];
|
|
869
|
+
if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
|
|
870
|
+
return false;
|
|
871
|
+
}
|
|
854
872
|
if (!shallow && !isReadonly(value)) {
|
|
855
|
-
|
|
856
|
-
|
|
873
|
+
if (!isShallow(value)) {
|
|
874
|
+
value = toRaw(value);
|
|
875
|
+
oldValue = toRaw(oldValue);
|
|
876
|
+
}
|
|
857
877
|
if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
|
|
858
878
|
oldValue.value = value;
|
|
859
879
|
return true;
|
|
@@ -1240,7 +1260,7 @@ function getTargetType(value) {
|
|
|
1240
1260
|
}
|
|
1241
1261
|
function reactive(target) {
|
|
1242
1262
|
// if trying to observe a readonly proxy, return the readonly version.
|
|
1243
|
-
if (target
|
|
1263
|
+
if (isReadonly(target)) {
|
|
1244
1264
|
return target;
|
|
1245
1265
|
}
|
|
1246
1266
|
return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
|
|
@@ -1305,6 +1325,9 @@ function isReactive(value) {
|
|
|
1305
1325
|
function isReadonly(value) {
|
|
1306
1326
|
return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
|
|
1307
1327
|
}
|
|
1328
|
+
function isShallow(value) {
|
|
1329
|
+
return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
|
|
1330
|
+
}
|
|
1308
1331
|
function isProxy(value) {
|
|
1309
1332
|
return isReactive(value) || isReadonly(value);
|
|
1310
1333
|
}
|
|
@@ -1320,13 +1343,10 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
|
|
|
1320
1343
|
const toReadonly = (value) => isObject(value) ? readonly(value) : value;
|
|
1321
1344
|
|
|
1322
1345
|
function trackRefValue(ref) {
|
|
1323
|
-
if (
|
|
1346
|
+
if (shouldTrack && activeEffect) {
|
|
1324
1347
|
ref = toRaw(ref);
|
|
1325
|
-
if (!ref.dep) {
|
|
1326
|
-
ref.dep = createDep();
|
|
1327
|
-
}
|
|
1328
1348
|
{
|
|
1329
|
-
trackEffects(ref.dep, {
|
|
1349
|
+
trackEffects(ref.dep || (ref.dep = createDep()), {
|
|
1330
1350
|
target: ref,
|
|
1331
1351
|
type: "get" /* GET */,
|
|
1332
1352
|
key: 'value'
|
|
@@ -1348,7 +1368,7 @@ function triggerRefValue(ref, newVal) {
|
|
|
1348
1368
|
}
|
|
1349
1369
|
}
|
|
1350
1370
|
function isRef(r) {
|
|
1351
|
-
return
|
|
1371
|
+
return !!(r && r.__v_isRef === true);
|
|
1352
1372
|
}
|
|
1353
1373
|
function ref(value) {
|
|
1354
1374
|
return createRef(value, false);
|
|
@@ -1363,22 +1383,22 @@ function createRef(rawValue, shallow) {
|
|
|
1363
1383
|
return new RefImpl(rawValue, shallow);
|
|
1364
1384
|
}
|
|
1365
1385
|
class RefImpl {
|
|
1366
|
-
constructor(value,
|
|
1367
|
-
this.
|
|
1386
|
+
constructor(value, __v_isShallow) {
|
|
1387
|
+
this.__v_isShallow = __v_isShallow;
|
|
1368
1388
|
this.dep = undefined;
|
|
1369
1389
|
this.__v_isRef = true;
|
|
1370
|
-
this._rawValue =
|
|
1371
|
-
this._value =
|
|
1390
|
+
this._rawValue = __v_isShallow ? value : toRaw(value);
|
|
1391
|
+
this._value = __v_isShallow ? value : toReactive(value);
|
|
1372
1392
|
}
|
|
1373
1393
|
get value() {
|
|
1374
1394
|
trackRefValue(this);
|
|
1375
1395
|
return this._value;
|
|
1376
1396
|
}
|
|
1377
1397
|
set value(newVal) {
|
|
1378
|
-
newVal = this.
|
|
1398
|
+
newVal = this.__v_isShallow ? newVal : toRaw(newVal);
|
|
1379
1399
|
if (hasChanged(newVal, this._rawValue)) {
|
|
1380
1400
|
this._rawValue = newVal;
|
|
1381
|
-
this._value = this.
|
|
1401
|
+
this._value = this.__v_isShallow ? newVal : toReactive(newVal);
|
|
1382
1402
|
triggerRefValue(this, newVal);
|
|
1383
1403
|
}
|
|
1384
1404
|
}
|
|
@@ -1461,22 +1481,23 @@ class ComputedRefImpl {
|
|
|
1461
1481
|
constructor(getter, _setter, isReadonly, isSSR) {
|
|
1462
1482
|
this._setter = _setter;
|
|
1463
1483
|
this.dep = undefined;
|
|
1464
|
-
this._dirty = true;
|
|
1465
1484
|
this.__v_isRef = true;
|
|
1485
|
+
this._dirty = true;
|
|
1466
1486
|
this.effect = new ReactiveEffect(getter, () => {
|
|
1467
1487
|
if (!this._dirty) {
|
|
1468
1488
|
this._dirty = true;
|
|
1469
1489
|
triggerRefValue(this);
|
|
1470
1490
|
}
|
|
1471
1491
|
});
|
|
1472
|
-
this.effect.
|
|
1492
|
+
this.effect.computed = this;
|
|
1493
|
+
this.effect.active = this._cacheable = !isSSR;
|
|
1473
1494
|
this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
|
|
1474
1495
|
}
|
|
1475
1496
|
get value() {
|
|
1476
1497
|
// the computed ref may get wrapped by other proxies e.g. readonly() #3376
|
|
1477
1498
|
const self = toRaw(this);
|
|
1478
1499
|
trackRefValue(self);
|
|
1479
|
-
if (self._dirty) {
|
|
1500
|
+
if (self._dirty || !self._cacheable) {
|
|
1480
1501
|
self._dirty = false;
|
|
1481
1502
|
self._value = self.effect.run();
|
|
1482
1503
|
}
|
|
@@ -1653,7 +1674,7 @@ const ErrorTypeStrings = {
|
|
|
1653
1674
|
[12 /* FUNCTION_REF */]: 'ref function',
|
|
1654
1675
|
[13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
|
|
1655
1676
|
[14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
|
|
1656
|
-
'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/
|
|
1677
|
+
'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
|
|
1657
1678
|
};
|
|
1658
1679
|
function callWithErrorHandling(fn, instance, type, args) {
|
|
1659
1680
|
let res;
|
|
@@ -2158,23 +2179,23 @@ const deprecationData = {
|
|
|
2158
2179
|
["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
|
|
2159
2180
|
message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
|
|
2160
2181
|
`option have been removed. Use createApp(RootComponent).mount() instead.`,
|
|
2161
|
-
link: `https://v3.vuejs.org/
|
|
2182
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
|
|
2162
2183
|
},
|
|
2163
2184
|
["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
|
|
2164
2185
|
message: `Vue detected directives on the mount container. ` +
|
|
2165
2186
|
`In Vue 3, the container is no longer considered part of the template ` +
|
|
2166
2187
|
`and will not be processed/replaced.`,
|
|
2167
|
-
link: `https://v3.vuejs.org/
|
|
2188
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
|
|
2168
2189
|
},
|
|
2169
2190
|
["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
|
|
2170
2191
|
message: `Vue.extend() has been removed in Vue 3. ` +
|
|
2171
2192
|
`Use defineComponent() instead.`,
|
|
2172
|
-
link: `https://
|
|
2193
|
+
link: `https://vuejs.org/api/general.html#definecomponent`
|
|
2173
2194
|
},
|
|
2174
2195
|
["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
|
|
2175
2196
|
message: `Vue.prototype is no longer available in Vue 3. ` +
|
|
2176
2197
|
`Use app.config.globalProperties instead.`,
|
|
2177
|
-
link: `https://v3.vuejs.org/
|
|
2198
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
|
|
2178
2199
|
},
|
|
2179
2200
|
["GLOBAL_SET" /* GLOBAL_SET */]: {
|
|
2180
2201
|
message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
|
|
@@ -2187,7 +2208,7 @@ const deprecationData = {
|
|
|
2187
2208
|
["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
|
|
2188
2209
|
message: `Vue.observable() has been removed. ` +
|
|
2189
2210
|
`Use \`import { reactive } from "vue"\` from Composition API instead.`,
|
|
2190
|
-
link: `https://
|
|
2211
|
+
link: `https://vuejs.org/api/reactivity-core.html#reactive`
|
|
2191
2212
|
},
|
|
2192
2213
|
["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
|
|
2193
2214
|
message: `Vue.util has been removed. Please refactor to avoid its usage ` +
|
|
@@ -2201,16 +2222,16 @@ const deprecationData = {
|
|
|
2201
2222
|
["CONFIG_DEVTOOLS" /* CONFIG_DEVTOOLS */]: {
|
|
2202
2223
|
message: `config.devtools has been removed. To enable devtools for ` +
|
|
2203
2224
|
`production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,
|
|
2204
|
-
link: `https://github.com/vuejs/
|
|
2225
|
+
link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`
|
|
2205
2226
|
},
|
|
2206
2227
|
["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
|
|
2207
2228
|
message: `config.keyCodes has been removed. ` +
|
|
2208
2229
|
`In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
|
|
2209
|
-
link: `https://v3.vuejs.org/
|
|
2230
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2210
2231
|
},
|
|
2211
2232
|
["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
|
|
2212
2233
|
message: `config.productionTip has been removed.`,
|
|
2213
|
-
link: `https://v3.vuejs.org/
|
|
2234
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
|
|
2214
2235
|
},
|
|
2215
2236
|
["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
|
|
2216
2237
|
message: () => {
|
|
@@ -2223,7 +2244,7 @@ const deprecationData = {
|
|
|
2223
2244
|
}
|
|
2224
2245
|
return msg;
|
|
2225
2246
|
},
|
|
2226
|
-
link: `https://v3.vuejs.org/
|
|
2247
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
|
|
2227
2248
|
},
|
|
2228
2249
|
["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
|
|
2229
2250
|
// this warning is only relevant in the full build when using runtime
|
|
@@ -2246,12 +2267,12 @@ const deprecationData = {
|
|
|
2246
2267
|
},
|
|
2247
2268
|
["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
|
|
2248
2269
|
message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
|
|
2249
|
-
link: `https://
|
|
2270
|
+
link: `https://vuejs.org/api/application.html#app-unmount`
|
|
2250
2271
|
},
|
|
2251
2272
|
["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
|
|
2252
2273
|
message: `vm.$on/$once/$off() have been removed. ` +
|
|
2253
2274
|
`Use an external event emitter library instead.`,
|
|
2254
|
-
link: `https://v3.vuejs.org/
|
|
2275
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
|
|
2255
2276
|
},
|
|
2256
2277
|
["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
|
|
2257
2278
|
message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
|
|
@@ -2259,23 +2280,23 @@ const deprecationData = {
|
|
|
2259
2280
|
`should be changed to @vnode-${event.slice(5)}. ` +
|
|
2260
2281
|
`From JavaScript, use Composition API to dynamically register lifecycle ` +
|
|
2261
2282
|
`hooks.`,
|
|
2262
|
-
link: `https://v3.vuejs.org/
|
|
2283
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
|
|
2263
2284
|
},
|
|
2264
2285
|
["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
|
|
2265
2286
|
message: `vm.$children has been removed. Consider refactoring your logic ` +
|
|
2266
2287
|
`to avoid relying on direct access to child components.`,
|
|
2267
|
-
link: `https://v3.vuejs.org/
|
|
2288
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
|
|
2268
2289
|
},
|
|
2269
2290
|
["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
|
|
2270
2291
|
message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
|
|
2271
2292
|
`included in vm.$attrs and it is no longer necessary to separately use ` +
|
|
2272
2293
|
`v-on="$listeners" if you are already using v-bind="$attrs". ` +
|
|
2273
2294
|
`(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
|
|
2274
|
-
link: `https://v3.vuejs.org/
|
|
2295
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
|
|
2275
2296
|
},
|
|
2276
2297
|
["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
|
|
2277
2298
|
message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
|
|
2278
|
-
link: `https://v3.vuejs.org/
|
|
2299
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
|
|
2279
2300
|
},
|
|
2280
2301
|
["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
|
|
2281
2302
|
message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
|
|
@@ -2286,17 +2307,17 @@ const deprecationData = {
|
|
|
2286
2307
|
`If you are binding $attrs to a non-root element and expecting ` +
|
|
2287
2308
|
`class/style to fallthrough on root, you will need to now manually bind ` +
|
|
2288
2309
|
`them on root via :class="$attrs.class".`,
|
|
2289
|
-
link: `https://v3.vuejs.org/
|
|
2310
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
|
|
2290
2311
|
},
|
|
2291
2312
|
["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
|
|
2292
2313
|
message: `The "data" option can no longer be a plain object. ` +
|
|
2293
2314
|
`Always use a function.`,
|
|
2294
|
-
link: `https://v3.vuejs.org/
|
|
2315
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
|
|
2295
2316
|
},
|
|
2296
2317
|
["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
|
|
2297
2318
|
message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
|
|
2298
2319
|
`In Vue 3, data keys are merged shallowly and will override one another.`,
|
|
2299
|
-
link: `https://v3.vuejs.org/
|
|
2320
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
|
|
2300
2321
|
},
|
|
2301
2322
|
["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
|
|
2302
2323
|
message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
|
|
@@ -2310,23 +2331,23 @@ const deprecationData = {
|
|
|
2310
2331
|
`If current usage is intended, you can disable the compat behavior and ` +
|
|
2311
2332
|
`suppress this warning with:` +
|
|
2312
2333
|
`\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
|
|
2313
|
-
link: `https://v3.vuejs.org/
|
|
2334
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
|
|
2314
2335
|
},
|
|
2315
2336
|
["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
|
|
2316
2337
|
message: (key) => `props default value function no longer has access to "this". The compat ` +
|
|
2317
2338
|
`build only offers access to this.$options.` +
|
|
2318
2339
|
`(found in prop "${key}")`,
|
|
2319
|
-
link: `https://v3.vuejs.org/
|
|
2340
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
|
|
2320
2341
|
},
|
|
2321
2342
|
["CUSTOM_DIR" /* CUSTOM_DIR */]: {
|
|
2322
2343
|
message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
|
|
2323
2344
|
`Use "${newHook}" instead.`,
|
|
2324
|
-
link: `https://v3.vuejs.org/
|
|
2345
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
|
|
2325
2346
|
},
|
|
2326
2347
|
["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
|
|
2327
2348
|
message: `Using keyCode as v-on modifier is no longer supported. ` +
|
|
2328
2349
|
`Use kebab-case key name modifiers instead.`,
|
|
2329
|
-
link: `https://v3.vuejs.org/
|
|
2350
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2330
2351
|
},
|
|
2331
2352
|
["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
|
|
2332
2353
|
message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
|
|
@@ -2334,7 +2355,7 @@ const deprecationData = {
|
|
|
2334
2355
|
`use \`null\` or \`undefined\` instead. If the usage is intended, ` +
|
|
2335
2356
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2336
2357
|
`\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
|
|
2337
|
-
link: `https://v3.vuejs.org/
|
|
2358
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2338
2359
|
},
|
|
2339
2360
|
["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
|
|
2340
2361
|
message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
|
|
@@ -2343,7 +2364,7 @@ const deprecationData = {
|
|
|
2343
2364
|
`If the usage is intended, ` +
|
|
2344
2365
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2345
2366
|
`\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
|
|
2346
|
-
link: `https://v3.vuejs.org/
|
|
2367
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2347
2368
|
},
|
|
2348
2369
|
["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
|
|
2349
2370
|
message: `` // this feature cannot be runtime-detected
|
|
@@ -2354,7 +2375,7 @@ const deprecationData = {
|
|
|
2354
2375
|
`for styling, you can disable the compat behavior and suppress this ` +
|
|
2355
2376
|
`warning with:` +
|
|
2356
2377
|
`\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
|
|
2357
|
-
link: `https://v3.vuejs.org/
|
|
2378
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
|
|
2358
2379
|
},
|
|
2359
2380
|
["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
|
|
2360
2381
|
message: (comp) => {
|
|
@@ -2367,7 +2388,7 @@ const deprecationData = {
|
|
|
2367
2388
|
`warning with:` +
|
|
2368
2389
|
`\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
|
|
2369
2390
|
},
|
|
2370
|
-
link: `https://v3.vuejs.org/
|
|
2391
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
|
|
2371
2392
|
},
|
|
2372
2393
|
["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
|
|
2373
2394
|
message: (comp) => {
|
|
@@ -2378,7 +2399,7 @@ const deprecationData = {
|
|
|
2378
2399
|
`components usage have been migrated and its compat behavior has ` +
|
|
2379
2400
|
`been disabled.`);
|
|
2380
2401
|
},
|
|
2381
|
-
link: `https://v3.vuejs.org/
|
|
2402
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
|
|
2382
2403
|
},
|
|
2383
2404
|
["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
|
|
2384
2405
|
message: (comp) => {
|
|
@@ -2388,27 +2409,27 @@ const deprecationData = {
|
|
|
2388
2409
|
(isArray(comp.props)
|
|
2389
2410
|
? comp.props.includes('modelValue')
|
|
2390
2411
|
: hasOwn(comp.props, 'modelValue'))) {
|
|
2391
|
-
return (`Component
|
|
2412
|
+
return (`Component declares "modelValue" prop, which is Vue 3 usage, but ` +
|
|
2392
2413
|
`is running under Vue 2 compat v-model behavior. You can ${configMsg}`);
|
|
2393
2414
|
}
|
|
2394
2415
|
return (`v-model usage on component has changed in Vue 3. Component that expects ` +
|
|
2395
2416
|
`to work with v-model should now use the "modelValue" prop and emit the ` +
|
|
2396
2417
|
`"update:modelValue" event. You can update the usage and then ${configMsg}`);
|
|
2397
2418
|
},
|
|
2398
|
-
link: `https://v3.vuejs.org/
|
|
2419
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
|
|
2399
2420
|
},
|
|
2400
2421
|
["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
|
|
2401
2422
|
message: `Vue 3's render function API has changed. ` +
|
|
2402
2423
|
`You can opt-in to the new API with:` +
|
|
2403
2424
|
`\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
|
|
2404
2425
|
`\n (This can also be done per-component via the "compatConfig" option.)`,
|
|
2405
|
-
link: `https://v3.vuejs.org/
|
|
2426
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
|
|
2406
2427
|
},
|
|
2407
2428
|
["FILTERS" /* FILTERS */]: {
|
|
2408
2429
|
message: `filters have been removed in Vue 3. ` +
|
|
2409
2430
|
`The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
|
|
2410
2431
|
`Use method calls or computed properties instead.`,
|
|
2411
|
-
link: `https://v3.vuejs.org/
|
|
2432
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
|
|
2412
2433
|
},
|
|
2413
2434
|
["PRIVATE_APIS" /* PRIVATE_APIS */]: {
|
|
2414
2435
|
message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
|
|
@@ -2476,7 +2497,7 @@ function validateCompatConfig(config, instance) {
|
|
|
2476
2497
|
warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
|
|
2477
2498
|
`running a runtime-only build of Vue. This deprecation should be ` +
|
|
2478
2499
|
`configured via compiler options in your build setup instead.\n` +
|
|
2479
|
-
`Details: https://v3.vuejs.org/
|
|
2500
|
+
`Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
|
|
2480
2501
|
}
|
|
2481
2502
|
}
|
|
2482
2503
|
else {
|
|
@@ -2618,6 +2639,7 @@ const compatModelEventPrefix = `onModelCompat:`;
|
|
|
2618
2639
|
const warnedTypes = new WeakSet();
|
|
2619
2640
|
function convertLegacyVModelProps(vnode) {
|
|
2620
2641
|
const { type, shapeFlag, props, dynamicProps } = vnode;
|
|
2642
|
+
const comp = type;
|
|
2621
2643
|
if (shapeFlag & 6 /* COMPONENT */ && props && 'modelValue' in props) {
|
|
2622
2644
|
if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */,
|
|
2623
2645
|
// this is a special case where we want to use the vnode component's
|
|
@@ -2626,16 +2648,18 @@ function convertLegacyVModelProps(vnode) {
|
|
|
2626
2648
|
{ type })) {
|
|
2627
2649
|
return;
|
|
2628
2650
|
}
|
|
2629
|
-
if (!warnedTypes.has(
|
|
2651
|
+
if (!warnedTypes.has(comp)) {
|
|
2630
2652
|
pushWarningContext(vnode);
|
|
2631
|
-
warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type },
|
|
2653
|
+
warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, comp);
|
|
2632
2654
|
popWarningContext();
|
|
2633
|
-
warnedTypes.add(
|
|
2655
|
+
warnedTypes.add(comp);
|
|
2634
2656
|
}
|
|
2635
2657
|
// v3 compiled model code -> v2 compat props
|
|
2636
2658
|
// modelValue -> value
|
|
2637
2659
|
// onUpdate:modelValue -> onModelCompat:input
|
|
2638
|
-
const
|
|
2660
|
+
const model = comp.model || {};
|
|
2661
|
+
applyModelFromMixins(model, comp.mixins);
|
|
2662
|
+
const { prop = 'value', event = 'input' } = model;
|
|
2639
2663
|
if (prop !== 'modelValue') {
|
|
2640
2664
|
props[prop] = props.modelValue;
|
|
2641
2665
|
delete props.modelValue;
|
|
@@ -2648,6 +2672,16 @@ function convertLegacyVModelProps(vnode) {
|
|
|
2648
2672
|
delete props['onUpdate:modelValue'];
|
|
2649
2673
|
}
|
|
2650
2674
|
}
|
|
2675
|
+
function applyModelFromMixins(model, mixins) {
|
|
2676
|
+
if (mixins) {
|
|
2677
|
+
mixins.forEach(m => {
|
|
2678
|
+
if (m.model)
|
|
2679
|
+
extend(model, m.model);
|
|
2680
|
+
if (m.mixins)
|
|
2681
|
+
applyModelFromMixins(model, m.mixins);
|
|
2682
|
+
});
|
|
2683
|
+
}
|
|
2684
|
+
}
|
|
2651
2685
|
function compatModelEmit(instance, event, args) {
|
|
2652
2686
|
if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, instance)) {
|
|
2653
2687
|
return;
|
|
@@ -3650,7 +3684,7 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) {
|
|
|
3650
3684
|
if (instance) {
|
|
3651
3685
|
// #2400
|
|
3652
3686
|
// to support `app.use` plugins,
|
|
3653
|
-
// fallback to appContext's `provides` if the
|
|
3687
|
+
// fallback to appContext's `provides` if the instance is at root
|
|
3654
3688
|
const provides = instance.parent == null
|
|
3655
3689
|
? instance.vnode.appContext && instance.vnode.appContext.provides
|
|
3656
3690
|
: instance.parent.provides;
|
|
@@ -3716,7 +3750,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3716
3750
|
let isMultiSource = false;
|
|
3717
3751
|
if (isRef(source)) {
|
|
3718
3752
|
getter = () => source.value;
|
|
3719
|
-
forceTrigger =
|
|
3753
|
+
forceTrigger = isShallow(source);
|
|
3720
3754
|
}
|
|
3721
3755
|
else if (isReactive(source)) {
|
|
3722
3756
|
getter = () => source;
|
|
@@ -4610,7 +4644,7 @@ function matches(pattern, name) {
|
|
|
4610
4644
|
return pattern.some((p) => matches(p, name));
|
|
4611
4645
|
}
|
|
4612
4646
|
else if (isString(pattern)) {
|
|
4613
|
-
return pattern.split(',').
|
|
4647
|
+
return pattern.split(',').includes(name);
|
|
4614
4648
|
}
|
|
4615
4649
|
else if (pattern.test) {
|
|
4616
4650
|
return pattern.test(name);
|
|
@@ -4878,7 +4912,7 @@ function applyOptions(instance) {
|
|
|
4878
4912
|
warn$1(`Write operation failed: computed property "${key}" is readonly.`);
|
|
4879
4913
|
}
|
|
4880
4914
|
;
|
|
4881
|
-
const c = computed({
|
|
4915
|
+
const c = computed$1({
|
|
4882
4916
|
get,
|
|
4883
4917
|
set
|
|
4884
4918
|
});
|
|
@@ -5359,7 +5393,9 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
|
|
|
5359
5393
|
// attrs point to the same object so it should already have been updated.
|
|
5360
5394
|
if (attrs !== rawCurrentProps) {
|
|
5361
5395
|
for (const key in attrs) {
|
|
5362
|
-
if (!rawProps ||
|
|
5396
|
+
if (!rawProps ||
|
|
5397
|
+
(!hasOwn(rawProps, key) &&
|
|
5398
|
+
(!hasOwn(rawProps, key + 'Native')))) {
|
|
5363
5399
|
delete attrs[key];
|
|
5364
5400
|
hasAttrsChanged = true;
|
|
5365
5401
|
}
|
|
@@ -5862,7 +5898,6 @@ return withDirectives(h(comp), [
|
|
|
5862
5898
|
[bar, this.y]
|
|
5863
5899
|
])
|
|
5864
5900
|
*/
|
|
5865
|
-
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
5866
5901
|
function validateDirectiveName(name) {
|
|
5867
5902
|
if (isBuiltInDirective(name)) {
|
|
5868
5903
|
warn$1('Do not use built-in directive ids as custom directive id: ' + name);
|
|
@@ -5997,7 +6032,7 @@ function createCompatVue(createApp, createSingletonApp) {
|
|
|
5997
6032
|
return vm;
|
|
5998
6033
|
}
|
|
5999
6034
|
}
|
|
6000
|
-
Vue.version = "3.2.
|
|
6035
|
+
Vue.version = `2.6.14-compat:${"3.2.31"}`;
|
|
6001
6036
|
Vue.config = singletonApp.config;
|
|
6002
6037
|
Vue.use = (p, ...options) => {
|
|
6003
6038
|
if (p && isFunction(p.install)) {
|
|
@@ -6821,7 +6856,8 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6821
6856
|
// e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
|
|
6822
6857
|
const forcePatchValue = (type === 'input' && dirs) || type === 'option';
|
|
6823
6858
|
// skip props & children if this is hoisted static nodes
|
|
6824
|
-
|
|
6859
|
+
// #5405 in dev, always hydrate children for HMR
|
|
6860
|
+
{
|
|
6825
6861
|
if (dirs) {
|
|
6826
6862
|
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
6827
6863
|
}
|
|
@@ -6986,6 +7022,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6986
7022
|
return [hydrate, hydrateNode];
|
|
6987
7023
|
}
|
|
6988
7024
|
|
|
7025
|
+
/* eslint-disable no-restricted-globals */
|
|
6989
7026
|
let supported;
|
|
6990
7027
|
let perf;
|
|
6991
7028
|
function startMeasure(instance, type) {
|
|
@@ -7013,7 +7050,6 @@ function isSupported() {
|
|
|
7013
7050
|
if (supported !== undefined) {
|
|
7014
7051
|
return supported;
|
|
7015
7052
|
}
|
|
7016
|
-
/* eslint-disable no-restricted-globals */
|
|
7017
7053
|
if (typeof window !== 'undefined' && window.performance) {
|
|
7018
7054
|
supported = true;
|
|
7019
7055
|
perf = window.performance;
|
|
@@ -7021,7 +7057,6 @@ function isSupported() {
|
|
|
7021
7057
|
else {
|
|
7022
7058
|
supported = false;
|
|
7023
7059
|
}
|
|
7024
|
-
/* eslint-enable no-restricted-globals */
|
|
7025
7060
|
return supported;
|
|
7026
7061
|
}
|
|
7027
7062
|
|
|
@@ -9267,7 +9302,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false) {
|
|
|
9267
9302
|
shapeFlag: vnode.shapeFlag,
|
|
9268
9303
|
// if the vnode is cloned with extra props, we can no longer assume its
|
|
9269
9304
|
// existing patch flag to be reliable and need to add the FULL_PROPS flag.
|
|
9270
|
-
// note:
|
|
9305
|
+
// note: preserve flag for fragments since they use the flag for children
|
|
9271
9306
|
// fast paths only.
|
|
9272
9307
|
patchFlag: extraProps && vnode.type !== Fragment
|
|
9273
9308
|
? patchFlag === -1 // hoisted node
|
|
@@ -9432,7 +9467,8 @@ function mergeProps(...args) {
|
|
|
9432
9467
|
else if (isOn(key)) {
|
|
9433
9468
|
const existing = ret[key];
|
|
9434
9469
|
const incoming = toMerge[key];
|
|
9435
|
-
if (
|
|
9470
|
+
if (incoming &&
|
|
9471
|
+
existing !== incoming &&
|
|
9436
9472
|
!(isArray(existing) && existing.includes(incoming))) {
|
|
9437
9473
|
ret[key] = existing
|
|
9438
9474
|
? [].concat(existing, incoming)
|
|
@@ -9708,7 +9744,7 @@ function legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventK
|
|
|
9708
9744
|
}
|
|
9709
9745
|
function isKeyNotMatch(expect, actual) {
|
|
9710
9746
|
if (isArray(expect)) {
|
|
9711
|
-
return expect.
|
|
9747
|
+
return !expect.includes(actual);
|
|
9712
9748
|
}
|
|
9713
9749
|
else {
|
|
9714
9750
|
return expect !== actual;
|
|
@@ -9787,7 +9823,7 @@ function installCompatInstanceProperties(map) {
|
|
|
9787
9823
|
extend(map, {
|
|
9788
9824
|
// needed by many libs / render fns
|
|
9789
9825
|
$vnode: i => i.vnode,
|
|
9790
|
-
// inject
|
|
9826
|
+
// inject additional properties into $options for compat
|
|
9791
9827
|
// e.g. vuex needs this.$options.parent
|
|
9792
9828
|
$options: i => {
|
|
9793
9829
|
const res = extend({}, resolveMergedOptions(i));
|
|
@@ -9975,9 +10011,11 @@ const PublicInstanceProxyHandlers = {
|
|
|
9975
10011
|
const { data, setupState, ctx } = instance;
|
|
9976
10012
|
if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
|
|
9977
10013
|
setupState[key] = value;
|
|
10014
|
+
return true;
|
|
9978
10015
|
}
|
|
9979
10016
|
else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
9980
10017
|
data[key] = value;
|
|
10018
|
+
return true;
|
|
9981
10019
|
}
|
|
9982
10020
|
else if (hasOwn(instance.props, key)) {
|
|
9983
10021
|
warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
|
|
@@ -10011,6 +10049,15 @@ const PublicInstanceProxyHandlers = {
|
|
|
10011
10049
|
hasOwn(ctx, key) ||
|
|
10012
10050
|
hasOwn(publicPropertiesMap, key) ||
|
|
10013
10051
|
hasOwn(appContext.config.globalProperties, key));
|
|
10052
|
+
},
|
|
10053
|
+
defineProperty(target, key, descriptor) {
|
|
10054
|
+
if (descriptor.get != null) {
|
|
10055
|
+
this.set(target, key, descriptor.get(), null);
|
|
10056
|
+
}
|
|
10057
|
+
else if (descriptor.value != null) {
|
|
10058
|
+
this.set(target, key, descriptor.value, null);
|
|
10059
|
+
}
|
|
10060
|
+
return Reflect.defineProperty(target, key, descriptor);
|
|
10014
10061
|
}
|
|
10015
10062
|
};
|
|
10016
10063
|
{
|
|
@@ -10515,7 +10562,7 @@ function defineEmits() {
|
|
|
10515
10562
|
* instance properties when it is accessed by a parent component via template
|
|
10516
10563
|
* refs.
|
|
10517
10564
|
*
|
|
10518
|
-
* `<script setup>` components are closed by default - i.e.
|
|
10565
|
+
* `<script setup>` components are closed by default - i.e. variables inside
|
|
10519
10566
|
* the `<script setup>` scope is not exposed to parent unless explicitly exposed
|
|
10520
10567
|
* via `defineExpose`.
|
|
10521
10568
|
*
|
|
@@ -10718,7 +10765,7 @@ function initCustomFormatter() {
|
|
|
10718
10765
|
return [
|
|
10719
10766
|
'div',
|
|
10720
10767
|
{},
|
|
10721
|
-
['span', vueStyle, 'Reactive'],
|
|
10768
|
+
['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
|
|
10722
10769
|
'<',
|
|
10723
10770
|
formatValue(obj),
|
|
10724
10771
|
`>${isReadonly(obj) ? ` (readonly)` : ``}`
|
|
@@ -10728,7 +10775,7 @@ function initCustomFormatter() {
|
|
|
10728
10775
|
return [
|
|
10729
10776
|
'div',
|
|
10730
10777
|
{},
|
|
10731
|
-
['span', vueStyle, 'Readonly'],
|
|
10778
|
+
['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
|
|
10732
10779
|
'<',
|
|
10733
10780
|
formatValue(obj),
|
|
10734
10781
|
'>'
|
|
@@ -10857,7 +10904,7 @@ function initCustomFormatter() {
|
|
|
10857
10904
|
}
|
|
10858
10905
|
}
|
|
10859
10906
|
function genRefFlag(v) {
|
|
10860
|
-
if (v
|
|
10907
|
+
if (isShallow(v)) {
|
|
10861
10908
|
return `ShallowRef`;
|
|
10862
10909
|
}
|
|
10863
10910
|
if (v.effect) {
|
|
@@ -10901,7 +10948,7 @@ function isMemoSame(cached, memo) {
|
|
|
10901
10948
|
}
|
|
10902
10949
|
|
|
10903
10950
|
// Core API ------------------------------------------------------------------
|
|
10904
|
-
const version = "3.2.
|
|
10951
|
+
const version = "3.2.31";
|
|
10905
10952
|
/**
|
|
10906
10953
|
* SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
|
|
10907
10954
|
* @internal
|
|
@@ -10982,7 +11029,10 @@ const nodeOps = {
|
|
|
10982
11029
|
insertStaticContent(content, parent, anchor, isSVG, start, end) {
|
|
10983
11030
|
// <parent> before | first ... last | anchor </parent>
|
|
10984
11031
|
const before = anchor ? anchor.previousSibling : parent.lastChild;
|
|
10985
|
-
|
|
11032
|
+
// #5308 can only take cached path if:
|
|
11033
|
+
// - has a single root node
|
|
11034
|
+
// - nextSibling info is still available
|
|
11035
|
+
if (start && (start === end || start.nextSibling)) {
|
|
10986
11036
|
// cached
|
|
10987
11037
|
while (true) {
|
|
10988
11038
|
parent.insertBefore(start.cloneNode(true), anchor);
|
|
@@ -11332,7 +11382,7 @@ function patchStopImmediatePropagation(e, value) {
|
|
|
11332
11382
|
originalStop.call(e);
|
|
11333
11383
|
e._stopped = true;
|
|
11334
11384
|
};
|
|
11335
|
-
return value.map(fn => (e) => !e._stopped && fn(e));
|
|
11385
|
+
return value.map(fn => (e) => !e._stopped && fn && fn(e));
|
|
11336
11386
|
}
|
|
11337
11387
|
else {
|
|
11338
11388
|
return value;
|
|
@@ -12706,6 +12756,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
|
|
|
12706
12756
|
isProxy: isProxy,
|
|
12707
12757
|
isReactive: isReactive,
|
|
12708
12758
|
isReadonly: isReadonly,
|
|
12759
|
+
isShallow: isShallow,
|
|
12709
12760
|
customRef: customRef,
|
|
12710
12761
|
triggerRef: triggerRef,
|
|
12711
12762
|
shallowRef: shallowRef,
|
|
@@ -13481,13 +13532,13 @@ const deprecationData$1 = {
|
|
|
13481
13532
|
message: `Platform-native elements with "is" prop will no longer be ` +
|
|
13482
13533
|
`treated as components in Vue 3 unless the "is" value is explicitly ` +
|
|
13483
13534
|
`prefixed with "vue:".`,
|
|
13484
|
-
link: `https://v3.vuejs.org/
|
|
13535
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
|
|
13485
13536
|
},
|
|
13486
13537
|
["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
|
|
13487
13538
|
message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
|
|
13488
13539
|
`argument instead. \`v-bind:${key}.sync\` should be changed to ` +
|
|
13489
13540
|
`\`v-model:${key}\`.`,
|
|
13490
|
-
link: `https://v3.vuejs.org/
|
|
13541
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
|
|
13491
13542
|
},
|
|
13492
13543
|
["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
|
|
13493
13544
|
message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
|
|
@@ -13499,11 +13550,11 @@ const deprecationData$1 = {
|
|
|
13499
13550
|
`that appears before v-bind in the case of conflict. ` +
|
|
13500
13551
|
`To retain 2.x behavior, move v-bind to make it the first attribute. ` +
|
|
13501
13552
|
`You can also suppress this warning if the usage is intended.`,
|
|
13502
|
-
link: `https://v3.vuejs.org/
|
|
13553
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
|
|
13503
13554
|
},
|
|
13504
13555
|
["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
|
|
13505
13556
|
message: `.native modifier for v-on has been removed as is no longer necessary.`,
|
|
13506
|
-
link: `https://v3.vuejs.org/
|
|
13557
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
|
|
13507
13558
|
},
|
|
13508
13559
|
["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
|
|
13509
13560
|
message: `v-if / v-for precedence when used on the same element has changed ` +
|
|
@@ -13511,7 +13562,7 @@ const deprecationData$1 = {
|
|
|
13511
13562
|
`access to v-for scope variables. It is best to avoid the ambiguity ` +
|
|
13512
13563
|
`with <template> tags or use a computed property that filters v-for ` +
|
|
13513
13564
|
`data source.`,
|
|
13514
|
-
link: `https://v3.vuejs.org/
|
|
13565
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
|
|
13515
13566
|
},
|
|
13516
13567
|
["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
|
|
13517
13568
|
message: `<template> with no special directives will render as a native template ` +
|
|
@@ -13519,13 +13570,13 @@ const deprecationData$1 = {
|
|
|
13519
13570
|
},
|
|
13520
13571
|
["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
|
|
13521
13572
|
message: `"inline-template" has been removed in Vue 3.`,
|
|
13522
|
-
link: `https://v3.vuejs.org/
|
|
13573
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
|
|
13523
13574
|
},
|
|
13524
13575
|
["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
|
|
13525
13576
|
message: `filters have been removed in Vue 3. ` +
|
|
13526
13577
|
`The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
|
|
13527
13578
|
`Use method calls or computed properties instead.`,
|
|
13528
|
-
link: `https://v3.vuejs.org/
|
|
13579
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
|
|
13529
13580
|
}
|
|
13530
13581
|
};
|
|
13531
13582
|
function getCompatValue(key, context) {
|
|
@@ -14055,7 +14106,7 @@ function parseAttributes(context, type) {
|
|
|
14055
14106
|
}
|
|
14056
14107
|
const attr = parseAttribute(context, attributeNames);
|
|
14057
14108
|
// Trim whitespace between class
|
|
14058
|
-
// https://github.com/vuejs/
|
|
14109
|
+
// https://github.com/vuejs/core/issues/4251
|
|
14059
14110
|
if (attr.type === 6 /* ATTRIBUTE */ &&
|
|
14060
14111
|
attr.value &&
|
|
14061
14112
|
attr.name === 'class') {
|
|
@@ -14291,7 +14342,7 @@ function parseTextData(context, length, mode) {
|
|
|
14291
14342
|
advanceBy(context, length);
|
|
14292
14343
|
if (mode === 2 /* RAWTEXT */ ||
|
|
14293
14344
|
mode === 3 /* CDATA */ ||
|
|
14294
|
-
rawText.
|
|
14345
|
+
!rawText.includes('&')) {
|
|
14295
14346
|
return rawText;
|
|
14296
14347
|
}
|
|
14297
14348
|
else {
|
|
@@ -15812,6 +15863,7 @@ const transformFor = createStructuralDirectiveTransform('for', (node, dir, conte
|
|
|
15812
15863
|
const renderExp = createCallExpression(helper(RENDER_LIST), [
|
|
15813
15864
|
forNode.source
|
|
15814
15865
|
]);
|
|
15866
|
+
const isTemplate = isTemplateNode(node);
|
|
15815
15867
|
const memo = findDir(node, 'memo');
|
|
15816
15868
|
const keyProp = findProp(node, `key`);
|
|
15817
15869
|
const keyExp = keyProp &&
|
|
@@ -15831,7 +15883,6 @@ const transformFor = createStructuralDirectiveTransform('for', (node, dir, conte
|
|
|
15831
15883
|
return () => {
|
|
15832
15884
|
// finish the codegen now that all children have been traversed
|
|
15833
15885
|
let childBlock;
|
|
15834
|
-
const isTemplate = isTemplateNode(node);
|
|
15835
15886
|
const { children } = forNode;
|
|
15836
15887
|
// check <template v-for> key placement
|
|
15837
15888
|
if (isTemplate) {
|
|
@@ -16633,7 +16684,7 @@ function buildProps(node, context, props = node.props, ssr = false) {
|
|
|
16633
16684
|
}
|
|
16634
16685
|
}
|
|
16635
16686
|
}
|
|
16636
|
-
else {
|
|
16687
|
+
else if (!isBuiltInDirective(name)) {
|
|
16637
16688
|
// no built-in transform, this is a user custom directive.
|
|
16638
16689
|
runtimeDirectives.push(prop);
|
|
16639
16690
|
// custom dirs may use beforeUpdate so they need to force blocks
|
|
@@ -17979,4 +18030,4 @@ Vue.compile = compileToFunction;
|
|
|
17979
18030
|
const { configureCompat: configureCompat$1 } = Vue;
|
|
17980
18031
|
|
|
17981
18032
|
export default Vue;
|
|
17982
|
-
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 };
|
|
18033
|
+
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 };
|