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