@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
|
@@ -132,7 +132,15 @@ const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,col
|
|
|
132
132
|
'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +
|
|
133
133
|
'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
|
|
134
134
|
'text,textPath,title,tspan,unknown,use,view';
|
|
135
|
+
/**
|
|
136
|
+
* Compiler only.
|
|
137
|
+
* Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
|
|
138
|
+
*/
|
|
135
139
|
const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
|
|
140
|
+
/**
|
|
141
|
+
* Compiler only.
|
|
142
|
+
* Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
|
|
143
|
+
*/
|
|
136
144
|
const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
|
|
137
145
|
|
|
138
146
|
function looseCompareArrays(a, b) {
|
|
@@ -190,13 +198,15 @@ function looseIndexOf(arr, val) {
|
|
|
190
198
|
* @private
|
|
191
199
|
*/
|
|
192
200
|
const toDisplayString = (val) => {
|
|
193
|
-
return val
|
|
194
|
-
?
|
|
195
|
-
:
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
return isString(val)
|
|
202
|
+
? val
|
|
203
|
+
: val == null
|
|
204
|
+
? ''
|
|
205
|
+
: isArray(val) ||
|
|
206
|
+
(isObject(val) &&
|
|
207
|
+
(val.toString === objectToString || !isFunction(val.toString)))
|
|
208
|
+
? JSON.stringify(val, replacer, 2)
|
|
209
|
+
: String(val);
|
|
200
210
|
};
|
|
201
211
|
const replacer = (_key, val) => {
|
|
202
212
|
// can't use isRef here since @vue/shared has no deps
|
|
@@ -271,6 +281,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
|
|
|
271
281
|
'onVnodeBeforeMount,onVnodeMounted,' +
|
|
272
282
|
'onVnodeBeforeUpdate,onVnodeUpdated,' +
|
|
273
283
|
'onVnodeBeforeUnmount,onVnodeUnmounted');
|
|
284
|
+
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
274
285
|
const cacheStringFunction = (fn) => {
|
|
275
286
|
const cache = Object.create(null);
|
|
276
287
|
return ((str) => {
|
|
@@ -336,7 +347,6 @@ function warn(msg, ...args) {
|
|
|
336
347
|
}
|
|
337
348
|
|
|
338
349
|
let activeEffectScope;
|
|
339
|
-
const effectScopeStack = [];
|
|
340
350
|
class EffectScope {
|
|
341
351
|
constructor(detached = false) {
|
|
342
352
|
this.active = true;
|
|
@@ -351,11 +361,11 @@ class EffectScope {
|
|
|
351
361
|
run(fn) {
|
|
352
362
|
if (this.active) {
|
|
353
363
|
try {
|
|
354
|
-
this
|
|
364
|
+
activeEffectScope = this;
|
|
355
365
|
return fn();
|
|
356
366
|
}
|
|
357
367
|
finally {
|
|
358
|
-
this.
|
|
368
|
+
activeEffectScope = this.parent;
|
|
359
369
|
}
|
|
360
370
|
}
|
|
361
371
|
else if ((process.env.NODE_ENV !== 'production')) {
|
|
@@ -363,23 +373,24 @@ class EffectScope {
|
|
|
363
373
|
}
|
|
364
374
|
}
|
|
365
375
|
on() {
|
|
366
|
-
|
|
367
|
-
effectScopeStack.push(this);
|
|
368
|
-
activeEffectScope = this;
|
|
369
|
-
}
|
|
376
|
+
activeEffectScope = this;
|
|
370
377
|
}
|
|
371
378
|
off() {
|
|
372
|
-
|
|
373
|
-
effectScopeStack.pop();
|
|
374
|
-
activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
|
|
375
|
-
}
|
|
379
|
+
activeEffectScope = this.parent;
|
|
376
380
|
}
|
|
377
381
|
stop(fromParent) {
|
|
378
382
|
if (this.active) {
|
|
379
|
-
|
|
380
|
-
this.
|
|
383
|
+
let i, l;
|
|
384
|
+
for (i = 0, l = this.effects.length; i < l; i++) {
|
|
385
|
+
this.effects[i].stop();
|
|
386
|
+
}
|
|
387
|
+
for (i = 0, l = this.cleanups.length; i < l; i++) {
|
|
388
|
+
this.cleanups[i]();
|
|
389
|
+
}
|
|
381
390
|
if (this.scopes) {
|
|
382
|
-
this.scopes.
|
|
391
|
+
for (i = 0, l = this.scopes.length; i < l; i++) {
|
|
392
|
+
this.scopes[i].stop(true);
|
|
393
|
+
}
|
|
383
394
|
}
|
|
384
395
|
// nested scope, dereference from parent to avoid memory leaks
|
|
385
396
|
if (this.parent && !fromParent) {
|
|
@@ -397,8 +408,7 @@ class EffectScope {
|
|
|
397
408
|
function effectScope(detached) {
|
|
398
409
|
return new EffectScope(detached);
|
|
399
410
|
}
|
|
400
|
-
function recordEffectScope(effect, scope) {
|
|
401
|
-
scope = scope || activeEffectScope;
|
|
411
|
+
function recordEffectScope(effect, scope = activeEffectScope) {
|
|
402
412
|
if (scope && scope.active) {
|
|
403
413
|
scope.effects.push(effect);
|
|
404
414
|
}
|
|
@@ -461,7 +471,6 @@ let trackOpBit = 1;
|
|
|
461
471
|
* When recursion depth is greater, fall back to using a full cleanup.
|
|
462
472
|
*/
|
|
463
473
|
const maxMarkerBits = 30;
|
|
464
|
-
const effectStack = [];
|
|
465
474
|
let activeEffect;
|
|
466
475
|
const ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');
|
|
467
476
|
const MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');
|
|
@@ -471,35 +480,42 @@ class ReactiveEffect {
|
|
|
471
480
|
this.scheduler = scheduler;
|
|
472
481
|
this.active = true;
|
|
473
482
|
this.deps = [];
|
|
483
|
+
this.parent = undefined;
|
|
474
484
|
recordEffectScope(this, scope);
|
|
475
485
|
}
|
|
476
486
|
run() {
|
|
477
487
|
if (!this.active) {
|
|
478
488
|
return this.fn();
|
|
479
489
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
if (effectTrackDepth <= maxMarkerBits) {
|
|
486
|
-
initDepMarkers(this);
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
cleanupEffect(this);
|
|
490
|
-
}
|
|
491
|
-
return this.fn();
|
|
490
|
+
let parent = activeEffect;
|
|
491
|
+
let lastShouldTrack = shouldTrack;
|
|
492
|
+
while (parent) {
|
|
493
|
+
if (parent === this) {
|
|
494
|
+
return;
|
|
492
495
|
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
496
|
+
parent = parent.parent;
|
|
497
|
+
}
|
|
498
|
+
try {
|
|
499
|
+
this.parent = activeEffect;
|
|
500
|
+
activeEffect = this;
|
|
501
|
+
shouldTrack = true;
|
|
502
|
+
trackOpBit = 1 << ++effectTrackDepth;
|
|
503
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
504
|
+
initDepMarkers(this);
|
|
502
505
|
}
|
|
506
|
+
else {
|
|
507
|
+
cleanupEffect(this);
|
|
508
|
+
}
|
|
509
|
+
return this.fn();
|
|
510
|
+
}
|
|
511
|
+
finally {
|
|
512
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
513
|
+
finalizeDepMarkers(this);
|
|
514
|
+
}
|
|
515
|
+
trackOpBit = 1 << --effectTrackDepth;
|
|
516
|
+
activeEffect = this.parent;
|
|
517
|
+
shouldTrack = lastShouldTrack;
|
|
518
|
+
this.parent = undefined;
|
|
503
519
|
}
|
|
504
520
|
}
|
|
505
521
|
stop() {
|
|
@@ -547,33 +563,25 @@ function pauseTracking() {
|
|
|
547
563
|
trackStack.push(shouldTrack);
|
|
548
564
|
shouldTrack = false;
|
|
549
565
|
}
|
|
550
|
-
function enableTracking() {
|
|
551
|
-
trackStack.push(shouldTrack);
|
|
552
|
-
shouldTrack = true;
|
|
553
|
-
}
|
|
554
566
|
function resetTracking() {
|
|
555
567
|
const last = trackStack.pop();
|
|
556
568
|
shouldTrack = last === undefined ? true : last;
|
|
557
569
|
}
|
|
558
570
|
function track(target, type, key) {
|
|
559
|
-
if (
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
571
|
+
if (shouldTrack && activeEffect) {
|
|
572
|
+
let depsMap = targetMap.get(target);
|
|
573
|
+
if (!depsMap) {
|
|
574
|
+
targetMap.set(target, (depsMap = new Map()));
|
|
575
|
+
}
|
|
576
|
+
let dep = depsMap.get(key);
|
|
577
|
+
if (!dep) {
|
|
578
|
+
depsMap.set(key, (dep = createDep()));
|
|
579
|
+
}
|
|
580
|
+
const eventInfo = (process.env.NODE_ENV !== 'production')
|
|
581
|
+
? { effect: activeEffect, target, type, key }
|
|
582
|
+
: undefined;
|
|
583
|
+
trackEffects(dep, eventInfo);
|
|
569
584
|
}
|
|
570
|
-
const eventInfo = (process.env.NODE_ENV !== 'production')
|
|
571
|
-
? { effect: activeEffect, target, type, key }
|
|
572
|
-
: undefined;
|
|
573
|
-
trackEffects(dep, eventInfo);
|
|
574
|
-
}
|
|
575
|
-
function isTracking() {
|
|
576
|
-
return shouldTrack && activeEffect !== undefined;
|
|
577
585
|
}
|
|
578
586
|
function trackEffects(dep, debuggerEventExtraInfo) {
|
|
579
587
|
let shouldTrack = false;
|
|
@@ -741,6 +749,9 @@ function createGetter(isReadonly = false, shallow = false) {
|
|
|
741
749
|
else if (key === "__v_isReadonly" /* IS_READONLY */) {
|
|
742
750
|
return isReadonly;
|
|
743
751
|
}
|
|
752
|
+
else if (key === "__v_isShallow" /* IS_SHALLOW */) {
|
|
753
|
+
return shallow;
|
|
754
|
+
}
|
|
744
755
|
else if (key === "__v_raw" /* RAW */ &&
|
|
745
756
|
receiver ===
|
|
746
757
|
(isReadonly
|
|
@@ -785,9 +796,14 @@ const shallowSet = /*#__PURE__*/ createSetter(true);
|
|
|
785
796
|
function createSetter(shallow = false) {
|
|
786
797
|
return function set(target, key, value, receiver) {
|
|
787
798
|
let oldValue = target[key];
|
|
799
|
+
if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
|
|
800
|
+
return false;
|
|
801
|
+
}
|
|
788
802
|
if (!shallow && !isReadonly(value)) {
|
|
789
|
-
|
|
790
|
-
|
|
803
|
+
if (!isShallow(value)) {
|
|
804
|
+
value = toRaw(value);
|
|
805
|
+
oldValue = toRaw(oldValue);
|
|
806
|
+
}
|
|
791
807
|
if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
|
|
792
808
|
oldValue.value = value;
|
|
793
809
|
return true;
|
|
@@ -1175,7 +1191,7 @@ function getTargetType(value) {
|
|
|
1175
1191
|
}
|
|
1176
1192
|
function reactive(target) {
|
|
1177
1193
|
// if trying to observe a readonly proxy, return the readonly version.
|
|
1178
|
-
if (target
|
|
1194
|
+
if (isReadonly(target)) {
|
|
1179
1195
|
return target;
|
|
1180
1196
|
}
|
|
1181
1197
|
return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
|
|
@@ -1240,6 +1256,9 @@ function isReactive(value) {
|
|
|
1240
1256
|
function isReadonly(value) {
|
|
1241
1257
|
return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
|
|
1242
1258
|
}
|
|
1259
|
+
function isShallow(value) {
|
|
1260
|
+
return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
|
|
1261
|
+
}
|
|
1243
1262
|
function isProxy(value) {
|
|
1244
1263
|
return isReactive(value) || isReadonly(value);
|
|
1245
1264
|
}
|
|
@@ -1255,20 +1274,17 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
|
|
|
1255
1274
|
const toReadonly = (value) => isObject(value) ? readonly(value) : value;
|
|
1256
1275
|
|
|
1257
1276
|
function trackRefValue(ref) {
|
|
1258
|
-
if (
|
|
1277
|
+
if (shouldTrack && activeEffect) {
|
|
1259
1278
|
ref = toRaw(ref);
|
|
1260
|
-
if (!ref.dep) {
|
|
1261
|
-
ref.dep = createDep();
|
|
1262
|
-
}
|
|
1263
1279
|
if ((process.env.NODE_ENV !== 'production')) {
|
|
1264
|
-
trackEffects(ref.dep, {
|
|
1280
|
+
trackEffects(ref.dep || (ref.dep = createDep()), {
|
|
1265
1281
|
target: ref,
|
|
1266
1282
|
type: "get" /* GET */,
|
|
1267
1283
|
key: 'value'
|
|
1268
1284
|
});
|
|
1269
1285
|
}
|
|
1270
1286
|
else {
|
|
1271
|
-
trackEffects(ref.dep);
|
|
1287
|
+
trackEffects(ref.dep || (ref.dep = createDep()));
|
|
1272
1288
|
}
|
|
1273
1289
|
}
|
|
1274
1290
|
}
|
|
@@ -1289,7 +1305,7 @@ function triggerRefValue(ref, newVal) {
|
|
|
1289
1305
|
}
|
|
1290
1306
|
}
|
|
1291
1307
|
function isRef(r) {
|
|
1292
|
-
return
|
|
1308
|
+
return !!(r && r.__v_isRef === true);
|
|
1293
1309
|
}
|
|
1294
1310
|
function ref(value) {
|
|
1295
1311
|
return createRef(value, false);
|
|
@@ -1304,22 +1320,22 @@ function createRef(rawValue, shallow) {
|
|
|
1304
1320
|
return new RefImpl(rawValue, shallow);
|
|
1305
1321
|
}
|
|
1306
1322
|
class RefImpl {
|
|
1307
|
-
constructor(value,
|
|
1308
|
-
this.
|
|
1323
|
+
constructor(value, __v_isShallow) {
|
|
1324
|
+
this.__v_isShallow = __v_isShallow;
|
|
1309
1325
|
this.dep = undefined;
|
|
1310
1326
|
this.__v_isRef = true;
|
|
1311
|
-
this._rawValue =
|
|
1312
|
-
this._value =
|
|
1327
|
+
this._rawValue = __v_isShallow ? value : toRaw(value);
|
|
1328
|
+
this._value = __v_isShallow ? value : toReactive(value);
|
|
1313
1329
|
}
|
|
1314
1330
|
get value() {
|
|
1315
1331
|
trackRefValue(this);
|
|
1316
1332
|
return this._value;
|
|
1317
1333
|
}
|
|
1318
1334
|
set value(newVal) {
|
|
1319
|
-
newVal = this.
|
|
1335
|
+
newVal = this.__v_isShallow ? newVal : toRaw(newVal);
|
|
1320
1336
|
if (hasChanged(newVal, this._rawValue)) {
|
|
1321
1337
|
this._rawValue = newVal;
|
|
1322
|
-
this._value = this.
|
|
1338
|
+
this._value = this.__v_isShallow ? newVal : toReactive(newVal);
|
|
1323
1339
|
triggerRefValue(this, newVal);
|
|
1324
1340
|
}
|
|
1325
1341
|
}
|
|
@@ -1402,22 +1418,23 @@ class ComputedRefImpl {
|
|
|
1402
1418
|
constructor(getter, _setter, isReadonly, isSSR) {
|
|
1403
1419
|
this._setter = _setter;
|
|
1404
1420
|
this.dep = undefined;
|
|
1405
|
-
this._dirty = true;
|
|
1406
1421
|
this.__v_isRef = true;
|
|
1422
|
+
this._dirty = true;
|
|
1407
1423
|
this.effect = new ReactiveEffect(getter, () => {
|
|
1408
1424
|
if (!this._dirty) {
|
|
1409
1425
|
this._dirty = true;
|
|
1410
1426
|
triggerRefValue(this);
|
|
1411
1427
|
}
|
|
1412
1428
|
});
|
|
1413
|
-
this.effect.
|
|
1429
|
+
this.effect.computed = this;
|
|
1430
|
+
this.effect.active = this._cacheable = !isSSR;
|
|
1414
1431
|
this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
|
|
1415
1432
|
}
|
|
1416
1433
|
get value() {
|
|
1417
1434
|
// the computed ref may get wrapped by other proxies e.g. readonly() #3376
|
|
1418
1435
|
const self = toRaw(this);
|
|
1419
1436
|
trackRefValue(self);
|
|
1420
|
-
if (self._dirty) {
|
|
1437
|
+
if (self._dirty || !self._cacheable) {
|
|
1421
1438
|
self._dirty = false;
|
|
1422
1439
|
self._value = self.effect.run();
|
|
1423
1440
|
}
|
|
@@ -1595,7 +1612,7 @@ const ErrorTypeStrings = {
|
|
|
1595
1612
|
[12 /* FUNCTION_REF */]: 'ref function',
|
|
1596
1613
|
[13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
|
|
1597
1614
|
[14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
|
|
1598
|
-
'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/
|
|
1615
|
+
'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
|
|
1599
1616
|
};
|
|
1600
1617
|
function callWithErrorHandling(fn, instance, type, args) {
|
|
1601
1618
|
let res;
|
|
@@ -2107,23 +2124,23 @@ const deprecationData = {
|
|
|
2107
2124
|
["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
|
|
2108
2125
|
message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
|
|
2109
2126
|
`option have been removed. Use createApp(RootComponent).mount() instead.`,
|
|
2110
|
-
link: `https://v3.vuejs.org/
|
|
2127
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
|
|
2111
2128
|
},
|
|
2112
2129
|
["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
|
|
2113
2130
|
message: `Vue detected directives on the mount container. ` +
|
|
2114
2131
|
`In Vue 3, the container is no longer considered part of the template ` +
|
|
2115
2132
|
`and will not be processed/replaced.`,
|
|
2116
|
-
link: `https://v3.vuejs.org/
|
|
2133
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
|
|
2117
2134
|
},
|
|
2118
2135
|
["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
|
|
2119
2136
|
message: `Vue.extend() has been removed in Vue 3. ` +
|
|
2120
2137
|
`Use defineComponent() instead.`,
|
|
2121
|
-
link: `https://
|
|
2138
|
+
link: `https://vuejs.org/api/general.html#definecomponent`
|
|
2122
2139
|
},
|
|
2123
2140
|
["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
|
|
2124
2141
|
message: `Vue.prototype is no longer available in Vue 3. ` +
|
|
2125
2142
|
`Use app.config.globalProperties instead.`,
|
|
2126
|
-
link: `https://v3.vuejs.org/
|
|
2143
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
|
|
2127
2144
|
},
|
|
2128
2145
|
["GLOBAL_SET" /* GLOBAL_SET */]: {
|
|
2129
2146
|
message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
|
|
@@ -2136,7 +2153,7 @@ const deprecationData = {
|
|
|
2136
2153
|
["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
|
|
2137
2154
|
message: `Vue.observable() has been removed. ` +
|
|
2138
2155
|
`Use \`import { reactive } from "vue"\` from Composition API instead.`,
|
|
2139
|
-
link: `https://
|
|
2156
|
+
link: `https://vuejs.org/api/reactivity-core.html#reactive`
|
|
2140
2157
|
},
|
|
2141
2158
|
["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
|
|
2142
2159
|
message: `Vue.util has been removed. Please refactor to avoid its usage ` +
|
|
@@ -2150,16 +2167,16 @@ const deprecationData = {
|
|
|
2150
2167
|
["CONFIG_DEVTOOLS" /* CONFIG_DEVTOOLS */]: {
|
|
2151
2168
|
message: `config.devtools has been removed. To enable devtools for ` +
|
|
2152
2169
|
`production, configure the __VUE_PROD_DEVTOOLS__ compile-time flag.`,
|
|
2153
|
-
link: `https://github.com/vuejs/
|
|
2170
|
+
link: `https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags`
|
|
2154
2171
|
},
|
|
2155
2172
|
["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
|
|
2156
2173
|
message: `config.keyCodes has been removed. ` +
|
|
2157
2174
|
`In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
|
|
2158
|
-
link: `https://v3.vuejs.org/
|
|
2175
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2159
2176
|
},
|
|
2160
2177
|
["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
|
|
2161
2178
|
message: `config.productionTip has been removed.`,
|
|
2162
|
-
link: `https://v3.vuejs.org/
|
|
2179
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
|
|
2163
2180
|
},
|
|
2164
2181
|
["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
|
|
2165
2182
|
message: () => {
|
|
@@ -2172,7 +2189,7 @@ const deprecationData = {
|
|
|
2172
2189
|
}
|
|
2173
2190
|
return msg;
|
|
2174
2191
|
},
|
|
2175
|
-
link: `https://v3.vuejs.org/
|
|
2192
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
|
|
2176
2193
|
},
|
|
2177
2194
|
["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
|
|
2178
2195
|
// this warning is only relevant in the full build when using runtime
|
|
@@ -2195,12 +2212,12 @@ const deprecationData = {
|
|
|
2195
2212
|
},
|
|
2196
2213
|
["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
|
|
2197
2214
|
message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
|
|
2198
|
-
link: `https://
|
|
2215
|
+
link: `https://vuejs.org/api/application.html#app-unmount`
|
|
2199
2216
|
},
|
|
2200
2217
|
["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
|
|
2201
2218
|
message: `vm.$on/$once/$off() have been removed. ` +
|
|
2202
2219
|
`Use an external event emitter library instead.`,
|
|
2203
|
-
link: `https://v3.vuejs.org/
|
|
2220
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
|
|
2204
2221
|
},
|
|
2205
2222
|
["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
|
|
2206
2223
|
message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
|
|
@@ -2208,23 +2225,23 @@ const deprecationData = {
|
|
|
2208
2225
|
`should be changed to @vnode-${event.slice(5)}. ` +
|
|
2209
2226
|
`From JavaScript, use Composition API to dynamically register lifecycle ` +
|
|
2210
2227
|
`hooks.`,
|
|
2211
|
-
link: `https://v3.vuejs.org/
|
|
2228
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
|
|
2212
2229
|
},
|
|
2213
2230
|
["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
|
|
2214
2231
|
message: `vm.$children has been removed. Consider refactoring your logic ` +
|
|
2215
2232
|
`to avoid relying on direct access to child components.`,
|
|
2216
|
-
link: `https://v3.vuejs.org/
|
|
2233
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
|
|
2217
2234
|
},
|
|
2218
2235
|
["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
|
|
2219
2236
|
message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
|
|
2220
2237
|
`included in vm.$attrs and it is no longer necessary to separately use ` +
|
|
2221
2238
|
`v-on="$listeners" if you are already using v-bind="$attrs". ` +
|
|
2222
2239
|
`(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
|
|
2223
|
-
link: `https://v3.vuejs.org/
|
|
2240
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
|
|
2224
2241
|
},
|
|
2225
2242
|
["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
|
|
2226
2243
|
message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
|
|
2227
|
-
link: `https://v3.vuejs.org/
|
|
2244
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
|
|
2228
2245
|
},
|
|
2229
2246
|
["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
|
|
2230
2247
|
message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
|
|
@@ -2235,17 +2252,17 @@ const deprecationData = {
|
|
|
2235
2252
|
`If you are binding $attrs to a non-root element and expecting ` +
|
|
2236
2253
|
`class/style to fallthrough on root, you will need to now manually bind ` +
|
|
2237
2254
|
`them on root via :class="$attrs.class".`,
|
|
2238
|
-
link: `https://v3.vuejs.org/
|
|
2255
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
|
|
2239
2256
|
},
|
|
2240
2257
|
["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
|
|
2241
2258
|
message: `The "data" option can no longer be a plain object. ` +
|
|
2242
2259
|
`Always use a function.`,
|
|
2243
|
-
link: `https://v3.vuejs.org/
|
|
2260
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
|
|
2244
2261
|
},
|
|
2245
2262
|
["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
|
|
2246
2263
|
message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
|
|
2247
2264
|
`In Vue 3, data keys are merged shallowly and will override one another.`,
|
|
2248
|
-
link: `https://v3.vuejs.org/
|
|
2265
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
|
|
2249
2266
|
},
|
|
2250
2267
|
["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
|
|
2251
2268
|
message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
|
|
@@ -2259,23 +2276,23 @@ const deprecationData = {
|
|
|
2259
2276
|
`If current usage is intended, you can disable the compat behavior and ` +
|
|
2260
2277
|
`suppress this warning with:` +
|
|
2261
2278
|
`\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
|
|
2262
|
-
link: `https://v3.vuejs.org/
|
|
2279
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
|
|
2263
2280
|
},
|
|
2264
2281
|
["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
|
|
2265
2282
|
message: (key) => `props default value function no longer has access to "this". The compat ` +
|
|
2266
2283
|
`build only offers access to this.$options.` +
|
|
2267
2284
|
`(found in prop "${key}")`,
|
|
2268
|
-
link: `https://v3.vuejs.org/
|
|
2285
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
|
|
2269
2286
|
},
|
|
2270
2287
|
["CUSTOM_DIR" /* CUSTOM_DIR */]: {
|
|
2271
2288
|
message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
|
|
2272
2289
|
`Use "${newHook}" instead.`,
|
|
2273
|
-
link: `https://v3.vuejs.org/
|
|
2290
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
|
|
2274
2291
|
},
|
|
2275
2292
|
["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
|
|
2276
2293
|
message: `Using keyCode as v-on modifier is no longer supported. ` +
|
|
2277
2294
|
`Use kebab-case key name modifiers instead.`,
|
|
2278
|
-
link: `https://v3.vuejs.org/
|
|
2295
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2279
2296
|
},
|
|
2280
2297
|
["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
|
|
2281
2298
|
message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
|
|
@@ -2283,7 +2300,7 @@ const deprecationData = {
|
|
|
2283
2300
|
`use \`null\` or \`undefined\` instead. If the usage is intended, ` +
|
|
2284
2301
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2285
2302
|
`\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
|
|
2286
|
-
link: `https://v3.vuejs.org/
|
|
2303
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2287
2304
|
},
|
|
2288
2305
|
["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
|
|
2289
2306
|
message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
|
|
@@ -2292,7 +2309,7 @@ const deprecationData = {
|
|
|
2292
2309
|
`If the usage is intended, ` +
|
|
2293
2310
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2294
2311
|
`\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
|
|
2295
|
-
link: `https://v3.vuejs.org/
|
|
2312
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2296
2313
|
},
|
|
2297
2314
|
["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
|
|
2298
2315
|
message: `` // this feature cannot be runtime-detected
|
|
@@ -2303,7 +2320,7 @@ const deprecationData = {
|
|
|
2303
2320
|
`for styling, you can disable the compat behavior and suppress this ` +
|
|
2304
2321
|
`warning with:` +
|
|
2305
2322
|
`\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
|
|
2306
|
-
link: `https://v3.vuejs.org/
|
|
2323
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
|
|
2307
2324
|
},
|
|
2308
2325
|
["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
|
|
2309
2326
|
message: (comp) => {
|
|
@@ -2316,7 +2333,7 @@ const deprecationData = {
|
|
|
2316
2333
|
`warning with:` +
|
|
2317
2334
|
`\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
|
|
2318
2335
|
},
|
|
2319
|
-
link: `https://v3.vuejs.org/
|
|
2336
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
|
|
2320
2337
|
},
|
|
2321
2338
|
["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
|
|
2322
2339
|
message: (comp) => {
|
|
@@ -2327,7 +2344,7 @@ const deprecationData = {
|
|
|
2327
2344
|
`components usage have been migrated and its compat behavior has ` +
|
|
2328
2345
|
`been disabled.`);
|
|
2329
2346
|
},
|
|
2330
|
-
link: `https://v3.vuejs.org/
|
|
2347
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
|
|
2331
2348
|
},
|
|
2332
2349
|
["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
|
|
2333
2350
|
message: (comp) => {
|
|
@@ -2337,27 +2354,27 @@ const deprecationData = {
|
|
|
2337
2354
|
(isArray(comp.props)
|
|
2338
2355
|
? comp.props.includes('modelValue')
|
|
2339
2356
|
: hasOwn(comp.props, 'modelValue'))) {
|
|
2340
|
-
return (`Component
|
|
2357
|
+
return (`Component declares "modelValue" prop, which is Vue 3 usage, but ` +
|
|
2341
2358
|
`is running under Vue 2 compat v-model behavior. You can ${configMsg}`);
|
|
2342
2359
|
}
|
|
2343
2360
|
return (`v-model usage on component has changed in Vue 3. Component that expects ` +
|
|
2344
2361
|
`to work with v-model should now use the "modelValue" prop and emit the ` +
|
|
2345
2362
|
`"update:modelValue" event. You can update the usage and then ${configMsg}`);
|
|
2346
2363
|
},
|
|
2347
|
-
link: `https://v3.vuejs.org/
|
|
2364
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
|
|
2348
2365
|
},
|
|
2349
2366
|
["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
|
|
2350
2367
|
message: `Vue 3's render function API has changed. ` +
|
|
2351
2368
|
`You can opt-in to the new API with:` +
|
|
2352
2369
|
`\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
|
|
2353
2370
|
`\n (This can also be done per-component via the "compatConfig" option.)`,
|
|
2354
|
-
link: `https://v3.vuejs.org/
|
|
2371
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
|
|
2355
2372
|
},
|
|
2356
2373
|
["FILTERS" /* FILTERS */]: {
|
|
2357
2374
|
message: `filters have been removed in Vue 3. ` +
|
|
2358
2375
|
`The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
|
|
2359
2376
|
`Use method calls or computed properties instead.`,
|
|
2360
|
-
link: `https://v3.vuejs.org/
|
|
2377
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
|
|
2361
2378
|
},
|
|
2362
2379
|
["PRIVATE_APIS" /* PRIVATE_APIS */]: {
|
|
2363
2380
|
message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
|
|
@@ -2428,7 +2445,7 @@ function validateCompatConfig(config, instance) {
|
|
|
2428
2445
|
warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
|
|
2429
2446
|
`running a runtime-only build of Vue. This deprecation should be ` +
|
|
2430
2447
|
`configured via compiler options in your build setup instead.\n` +
|
|
2431
|
-
`Details: https://v3.vuejs.org/
|
|
2448
|
+
`Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
|
|
2432
2449
|
}
|
|
2433
2450
|
}
|
|
2434
2451
|
else {
|
|
@@ -2570,6 +2587,7 @@ const compatModelEventPrefix = `onModelCompat:`;
|
|
|
2570
2587
|
const warnedTypes = new WeakSet();
|
|
2571
2588
|
function convertLegacyVModelProps(vnode) {
|
|
2572
2589
|
const { type, shapeFlag, props, dynamicProps } = vnode;
|
|
2590
|
+
const comp = type;
|
|
2573
2591
|
if (shapeFlag & 6 /* COMPONENT */ && props && 'modelValue' in props) {
|
|
2574
2592
|
if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */,
|
|
2575
2593
|
// this is a special case where we want to use the vnode component's
|
|
@@ -2578,16 +2596,18 @@ function convertLegacyVModelProps(vnode) {
|
|
|
2578
2596
|
{ type })) {
|
|
2579
2597
|
return;
|
|
2580
2598
|
}
|
|
2581
|
-
if ((process.env.NODE_ENV !== 'production') && !warnedTypes.has(
|
|
2599
|
+
if ((process.env.NODE_ENV !== 'production') && !warnedTypes.has(comp)) {
|
|
2582
2600
|
pushWarningContext(vnode);
|
|
2583
|
-
warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type },
|
|
2601
|
+
warnDeprecation("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, { type }, comp);
|
|
2584
2602
|
popWarningContext();
|
|
2585
|
-
warnedTypes.add(
|
|
2603
|
+
warnedTypes.add(comp);
|
|
2586
2604
|
}
|
|
2587
2605
|
// v3 compiled model code -> v2 compat props
|
|
2588
2606
|
// modelValue -> value
|
|
2589
2607
|
// onUpdate:modelValue -> onModelCompat:input
|
|
2590
|
-
const
|
|
2608
|
+
const model = comp.model || {};
|
|
2609
|
+
applyModelFromMixins(model, comp.mixins);
|
|
2610
|
+
const { prop = 'value', event = 'input' } = model;
|
|
2591
2611
|
if (prop !== 'modelValue') {
|
|
2592
2612
|
props[prop] = props.modelValue;
|
|
2593
2613
|
delete props.modelValue;
|
|
@@ -2600,6 +2620,16 @@ function convertLegacyVModelProps(vnode) {
|
|
|
2600
2620
|
delete props['onUpdate:modelValue'];
|
|
2601
2621
|
}
|
|
2602
2622
|
}
|
|
2623
|
+
function applyModelFromMixins(model, mixins) {
|
|
2624
|
+
if (mixins) {
|
|
2625
|
+
mixins.forEach(m => {
|
|
2626
|
+
if (m.model)
|
|
2627
|
+
extend(model, m.model);
|
|
2628
|
+
if (m.mixins)
|
|
2629
|
+
applyModelFromMixins(model, m.mixins);
|
|
2630
|
+
});
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2603
2633
|
function compatModelEmit(instance, event, args) {
|
|
2604
2634
|
if (!isCompatEnabled("COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */, instance)) {
|
|
2605
2635
|
return;
|
|
@@ -3603,7 +3633,7 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) {
|
|
|
3603
3633
|
if (instance) {
|
|
3604
3634
|
// #2400
|
|
3605
3635
|
// to support `app.use` plugins,
|
|
3606
|
-
// fallback to appContext's `provides` if the
|
|
3636
|
+
// fallback to appContext's `provides` if the instance is at root
|
|
3607
3637
|
const provides = instance.parent == null
|
|
3608
3638
|
? instance.vnode.appContext && instance.vnode.appContext.provides
|
|
3609
3639
|
: instance.parent.provides;
|
|
@@ -3671,7 +3701,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3671
3701
|
let isMultiSource = false;
|
|
3672
3702
|
if (isRef(source)) {
|
|
3673
3703
|
getter = () => source.value;
|
|
3674
|
-
forceTrigger =
|
|
3704
|
+
forceTrigger = isShallow(source);
|
|
3675
3705
|
}
|
|
3676
3706
|
else if (isReactive(source)) {
|
|
3677
3707
|
getter = () => source;
|
|
@@ -4583,7 +4613,7 @@ function matches(pattern, name) {
|
|
|
4583
4613
|
return pattern.some((p) => matches(p, name));
|
|
4584
4614
|
}
|
|
4585
4615
|
else if (isString(pattern)) {
|
|
4586
|
-
return pattern.split(',').
|
|
4616
|
+
return pattern.split(',').includes(name);
|
|
4587
4617
|
}
|
|
4588
4618
|
else if (pattern.test) {
|
|
4589
4619
|
return pattern.test(name);
|
|
@@ -4855,7 +4885,7 @@ function applyOptions(instance) {
|
|
|
4855
4885
|
warn$1(`Write operation failed: computed property "${key}" is readonly.`);
|
|
4856
4886
|
}
|
|
4857
4887
|
: NOOP;
|
|
4858
|
-
const c = computed({
|
|
4888
|
+
const c = computed$1({
|
|
4859
4889
|
get,
|
|
4860
4890
|
set
|
|
4861
4891
|
});
|
|
@@ -5339,7 +5369,9 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
|
|
|
5339
5369
|
// attrs point to the same object so it should already have been updated.
|
|
5340
5370
|
if (attrs !== rawCurrentProps) {
|
|
5341
5371
|
for (const key in attrs) {
|
|
5342
|
-
if (!rawProps ||
|
|
5372
|
+
if (!rawProps ||
|
|
5373
|
+
(!hasOwn(rawProps, key) &&
|
|
5374
|
+
(!hasOwn(rawProps, key + 'Native')))) {
|
|
5343
5375
|
delete attrs[key];
|
|
5344
5376
|
hasAttrsChanged = true;
|
|
5345
5377
|
}
|
|
@@ -5844,7 +5876,6 @@ return withDirectives(h(comp), [
|
|
|
5844
5876
|
[bar, this.y]
|
|
5845
5877
|
])
|
|
5846
5878
|
*/
|
|
5847
|
-
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
5848
5879
|
function validateDirectiveName(name) {
|
|
5849
5880
|
if (isBuiltInDirective(name)) {
|
|
5850
5881
|
warn$1('Do not use built-in directive ids as custom directive id: ' + name);
|
|
@@ -5979,7 +6010,7 @@ function createCompatVue(createApp, createSingletonApp) {
|
|
|
5979
6010
|
return vm;
|
|
5980
6011
|
}
|
|
5981
6012
|
}
|
|
5982
|
-
Vue.version = "3.2.
|
|
6013
|
+
Vue.version = `2.6.14-compat:${"3.2.31"}`;
|
|
5983
6014
|
Vue.config = singletonApp.config;
|
|
5984
6015
|
Vue.use = (p, ...options) => {
|
|
5985
6016
|
if (p && isFunction(p.install)) {
|
|
@@ -6810,7 +6841,8 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6810
6841
|
// e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
|
|
6811
6842
|
const forcePatchValue = (type === 'input' && dirs) || type === 'option';
|
|
6812
6843
|
// skip props & children if this is hoisted static nodes
|
|
6813
|
-
|
|
6844
|
+
// #5405 in dev, always hydrate children for HMR
|
|
6845
|
+
if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* HOISTED */) {
|
|
6814
6846
|
if (dirs) {
|
|
6815
6847
|
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
6816
6848
|
}
|
|
@@ -6977,6 +7009,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6977
7009
|
return [hydrate, hydrateNode];
|
|
6978
7010
|
}
|
|
6979
7011
|
|
|
7012
|
+
/* eslint-disable no-restricted-globals */
|
|
6980
7013
|
let supported;
|
|
6981
7014
|
let perf;
|
|
6982
7015
|
function startMeasure(instance, type) {
|
|
@@ -7004,7 +7037,6 @@ function isSupported() {
|
|
|
7004
7037
|
if (supported !== undefined) {
|
|
7005
7038
|
return supported;
|
|
7006
7039
|
}
|
|
7007
|
-
/* eslint-disable no-restricted-globals */
|
|
7008
7040
|
if (typeof window !== 'undefined' && window.performance) {
|
|
7009
7041
|
supported = true;
|
|
7010
7042
|
perf = window.performance;
|
|
@@ -7012,7 +7044,6 @@ function isSupported() {
|
|
|
7012
7044
|
else {
|
|
7013
7045
|
supported = false;
|
|
7014
7046
|
}
|
|
7015
|
-
/* eslint-enable no-restricted-globals */
|
|
7016
7047
|
return supported;
|
|
7017
7048
|
}
|
|
7018
7049
|
|
|
@@ -9305,7 +9336,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false) {
|
|
|
9305
9336
|
shapeFlag: vnode.shapeFlag,
|
|
9306
9337
|
// if the vnode is cloned with extra props, we can no longer assume its
|
|
9307
9338
|
// existing patch flag to be reliable and need to add the FULL_PROPS flag.
|
|
9308
|
-
// note:
|
|
9339
|
+
// note: preserve flag for fragments since they use the flag for children
|
|
9309
9340
|
// fast paths only.
|
|
9310
9341
|
patchFlag: extraProps && vnode.type !== Fragment
|
|
9311
9342
|
? patchFlag === -1 // hoisted node
|
|
@@ -9470,7 +9501,8 @@ function mergeProps(...args) {
|
|
|
9470
9501
|
else if (isOn(key)) {
|
|
9471
9502
|
const existing = ret[key];
|
|
9472
9503
|
const incoming = toMerge[key];
|
|
9473
|
-
if (
|
|
9504
|
+
if (incoming &&
|
|
9505
|
+
existing !== incoming &&
|
|
9474
9506
|
!(isArray(existing) && existing.includes(incoming))) {
|
|
9475
9507
|
ret[key] = existing
|
|
9476
9508
|
? [].concat(existing, incoming)
|
|
@@ -9746,7 +9778,7 @@ function legacyCheckKeyCodes(instance, eventKeyCode, key, builtInKeyCode, eventK
|
|
|
9746
9778
|
}
|
|
9747
9779
|
function isKeyNotMatch(expect, actual) {
|
|
9748
9780
|
if (isArray(expect)) {
|
|
9749
|
-
return expect.
|
|
9781
|
+
return !expect.includes(actual);
|
|
9750
9782
|
}
|
|
9751
9783
|
else {
|
|
9752
9784
|
return expect !== actual;
|
|
@@ -9825,7 +9857,7 @@ function installCompatInstanceProperties(map) {
|
|
|
9825
9857
|
extend(map, {
|
|
9826
9858
|
// needed by many libs / render fns
|
|
9827
9859
|
$vnode: i => i.vnode,
|
|
9828
|
-
// inject
|
|
9860
|
+
// inject additional properties into $options for compat
|
|
9829
9861
|
// e.g. vuex needs this.$options.parent
|
|
9830
9862
|
$options: i => {
|
|
9831
9863
|
const res = extend({}, resolveMergedOptions(i));
|
|
@@ -10015,9 +10047,11 @@ const PublicInstanceProxyHandlers = {
|
|
|
10015
10047
|
const { data, setupState, ctx } = instance;
|
|
10016
10048
|
if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
|
|
10017
10049
|
setupState[key] = value;
|
|
10050
|
+
return true;
|
|
10018
10051
|
}
|
|
10019
10052
|
else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
10020
10053
|
data[key] = value;
|
|
10054
|
+
return true;
|
|
10021
10055
|
}
|
|
10022
10056
|
else if (hasOwn(instance.props, key)) {
|
|
10023
10057
|
(process.env.NODE_ENV !== 'production') &&
|
|
@@ -10053,6 +10087,15 @@ const PublicInstanceProxyHandlers = {
|
|
|
10053
10087
|
hasOwn(ctx, key) ||
|
|
10054
10088
|
hasOwn(publicPropertiesMap, key) ||
|
|
10055
10089
|
hasOwn(appContext.config.globalProperties, key));
|
|
10090
|
+
},
|
|
10091
|
+
defineProperty(target, key, descriptor) {
|
|
10092
|
+
if (descriptor.get != null) {
|
|
10093
|
+
this.set(target, key, descriptor.get(), null);
|
|
10094
|
+
}
|
|
10095
|
+
else if (descriptor.value != null) {
|
|
10096
|
+
this.set(target, key, descriptor.value, null);
|
|
10097
|
+
}
|
|
10098
|
+
return Reflect.defineProperty(target, key, descriptor);
|
|
10056
10099
|
}
|
|
10057
10100
|
};
|
|
10058
10101
|
if ((process.env.NODE_ENV !== 'production') && !false) {
|
|
@@ -10581,7 +10624,7 @@ function defineEmits() {
|
|
|
10581
10624
|
* instance properties when it is accessed by a parent component via template
|
|
10582
10625
|
* refs.
|
|
10583
10626
|
*
|
|
10584
|
-
* `<script setup>` components are closed by default - i.e.
|
|
10627
|
+
* `<script setup>` components are closed by default - i.e. variables inside
|
|
10585
10628
|
* the `<script setup>` scope is not exposed to parent unless explicitly exposed
|
|
10586
10629
|
* via `defineExpose`.
|
|
10587
10630
|
*
|
|
@@ -10784,7 +10827,7 @@ function initCustomFormatter() {
|
|
|
10784
10827
|
return [
|
|
10785
10828
|
'div',
|
|
10786
10829
|
{},
|
|
10787
|
-
['span', vueStyle, 'Reactive'],
|
|
10830
|
+
['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
|
|
10788
10831
|
'<',
|
|
10789
10832
|
formatValue(obj),
|
|
10790
10833
|
`>${isReadonly(obj) ? ` (readonly)` : ``}`
|
|
@@ -10794,7 +10837,7 @@ function initCustomFormatter() {
|
|
|
10794
10837
|
return [
|
|
10795
10838
|
'div',
|
|
10796
10839
|
{},
|
|
10797
|
-
['span', vueStyle, 'Readonly'],
|
|
10840
|
+
['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
|
|
10798
10841
|
'<',
|
|
10799
10842
|
formatValue(obj),
|
|
10800
10843
|
'>'
|
|
@@ -10923,7 +10966,7 @@ function initCustomFormatter() {
|
|
|
10923
10966
|
}
|
|
10924
10967
|
}
|
|
10925
10968
|
function genRefFlag(v) {
|
|
10926
|
-
if (v
|
|
10969
|
+
if (isShallow(v)) {
|
|
10927
10970
|
return `ShallowRef`;
|
|
10928
10971
|
}
|
|
10929
10972
|
if (v.effect) {
|
|
@@ -10967,7 +11010,7 @@ function isMemoSame(cached, memo) {
|
|
|
10967
11010
|
}
|
|
10968
11011
|
|
|
10969
11012
|
// Core API ------------------------------------------------------------------
|
|
10970
|
-
const version = "3.2.
|
|
11013
|
+
const version = "3.2.31";
|
|
10971
11014
|
const _ssrUtils = {
|
|
10972
11015
|
createComponentInstance,
|
|
10973
11016
|
setupComponent,
|
|
@@ -11056,7 +11099,10 @@ const nodeOps = {
|
|
|
11056
11099
|
insertStaticContent(content, parent, anchor, isSVG, start, end) {
|
|
11057
11100
|
// <parent> before | first ... last | anchor </parent>
|
|
11058
11101
|
const before = anchor ? anchor.previousSibling : parent.lastChild;
|
|
11059
|
-
|
|
11102
|
+
// #5308 can only take cached path if:
|
|
11103
|
+
// - has a single root node
|
|
11104
|
+
// - nextSibling info is still available
|
|
11105
|
+
if (start && (start === end || start.nextSibling)) {
|
|
11060
11106
|
// cached
|
|
11061
11107
|
while (true) {
|
|
11062
11108
|
parent.insertBefore(start.cloneNode(true), anchor);
|
|
@@ -11407,7 +11453,7 @@ function patchStopImmediatePropagation(e, value) {
|
|
|
11407
11453
|
originalStop.call(e);
|
|
11408
11454
|
e._stopped = true;
|
|
11409
11455
|
};
|
|
11410
|
-
return value.map(fn => (e) => !e._stopped && fn(e));
|
|
11456
|
+
return value.map(fn => (e) => !e._stopped && fn && fn(e));
|
|
11411
11457
|
}
|
|
11412
11458
|
else {
|
|
11413
11459
|
return value;
|
|
@@ -12828,6 +12874,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
|
|
|
12828
12874
|
isProxy: isProxy,
|
|
12829
12875
|
isReactive: isReactive,
|
|
12830
12876
|
isReadonly: isReadonly,
|
|
12877
|
+
isShallow: isShallow,
|
|
12831
12878
|
customRef: customRef,
|
|
12832
12879
|
triggerRef: triggerRef,
|
|
12833
12880
|
shallowRef: shallowRef,
|
|
@@ -12988,4 +13035,4 @@ Vue.compile = (() => {
|
|
|
12988
13035
|
const { configureCompat: configureCompat$1 } = Vue;
|
|
12989
13036
|
|
|
12990
13037
|
export default Vue;
|
|
12991
|
-
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 };
|
|
13038
|
+
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 };
|