@vue/compat 3.2.29 → 3.2.32
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 +40 -41
- package/dist/vue.cjs.js +168 -128
- package/dist/vue.cjs.prod.js +120 -77
- package/dist/vue.esm-browser.js +168 -128
- package/dist/vue.esm-browser.prod.js +1 -1
- package/dist/vue.esm-bundler.js +170 -130
- package/dist/vue.global.js +168 -128
- package/dist/vue.global.prod.js +1 -1
- package/dist/vue.runtime.esm-browser.js +160 -120
- package/dist/vue.runtime.esm-browser.prod.js +1 -1
- package/dist/vue.runtime.esm-bundler.js +162 -122
- package/dist/vue.runtime.global.js +160 -120
- package/dist/vue.runtime.global.prod.js +1 -1
- package/package.json +2 -2
package/dist/vue.cjs.js
CHANGED
|
@@ -414,13 +414,15 @@ function looseIndexOf(arr, val) {
|
|
|
414
414
|
* @private
|
|
415
415
|
*/
|
|
416
416
|
const toDisplayString = (val) => {
|
|
417
|
-
return val
|
|
418
|
-
?
|
|
419
|
-
:
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
417
|
+
return isString(val)
|
|
418
|
+
? val
|
|
419
|
+
: val == null
|
|
420
|
+
? ''
|
|
421
|
+
: isArray(val) ||
|
|
422
|
+
(isObject(val) &&
|
|
423
|
+
(val.toString === objectToString || !isFunction(val.toString)))
|
|
424
|
+
? JSON.stringify(val, replacer, 2)
|
|
425
|
+
: String(val);
|
|
424
426
|
};
|
|
425
427
|
const replacer = (_key, val) => {
|
|
426
428
|
// can't use isRef here since @vue/shared has no deps
|
|
@@ -494,6 +496,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
|
|
|
494
496
|
'onVnodeBeforeMount,onVnodeMounted,' +
|
|
495
497
|
'onVnodeBeforeUpdate,onVnodeUpdated,' +
|
|
496
498
|
'onVnodeBeforeUnmount,onVnodeUnmounted');
|
|
499
|
+
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
497
500
|
const cacheStringFunction = (fn) => {
|
|
498
501
|
const cache = Object.create(null);
|
|
499
502
|
return ((str) => {
|
|
@@ -559,11 +562,19 @@ function warn(msg, ...args) {
|
|
|
559
562
|
}
|
|
560
563
|
|
|
561
564
|
let activeEffectScope;
|
|
562
|
-
const effectScopeStack = [];
|
|
563
565
|
class EffectScope {
|
|
564
566
|
constructor(detached = false) {
|
|
567
|
+
/**
|
|
568
|
+
* @internal
|
|
569
|
+
*/
|
|
565
570
|
this.active = true;
|
|
571
|
+
/**
|
|
572
|
+
* @internal
|
|
573
|
+
*/
|
|
566
574
|
this.effects = [];
|
|
575
|
+
/**
|
|
576
|
+
* @internal
|
|
577
|
+
*/
|
|
567
578
|
this.cleanups = [];
|
|
568
579
|
if (!detached && activeEffectScope) {
|
|
569
580
|
this.parent = activeEffectScope;
|
|
@@ -573,36 +584,46 @@ class EffectScope {
|
|
|
573
584
|
}
|
|
574
585
|
run(fn) {
|
|
575
586
|
if (this.active) {
|
|
587
|
+
const currentEffectScope = activeEffectScope;
|
|
576
588
|
try {
|
|
577
|
-
this
|
|
589
|
+
activeEffectScope = this;
|
|
578
590
|
return fn();
|
|
579
591
|
}
|
|
580
592
|
finally {
|
|
581
|
-
|
|
593
|
+
activeEffectScope = currentEffectScope;
|
|
582
594
|
}
|
|
583
595
|
}
|
|
584
596
|
else {
|
|
585
597
|
warn(`cannot run an inactive effect scope.`);
|
|
586
598
|
}
|
|
587
599
|
}
|
|
600
|
+
/**
|
|
601
|
+
* This should only be called on non-detached scopes
|
|
602
|
+
* @internal
|
|
603
|
+
*/
|
|
588
604
|
on() {
|
|
589
|
-
|
|
590
|
-
effectScopeStack.push(this);
|
|
591
|
-
activeEffectScope = this;
|
|
592
|
-
}
|
|
605
|
+
activeEffectScope = this;
|
|
593
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* This should only be called on non-detached scopes
|
|
609
|
+
* @internal
|
|
610
|
+
*/
|
|
594
611
|
off() {
|
|
595
|
-
|
|
596
|
-
effectScopeStack.pop();
|
|
597
|
-
activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
|
|
598
|
-
}
|
|
612
|
+
activeEffectScope = this.parent;
|
|
599
613
|
}
|
|
600
614
|
stop(fromParent) {
|
|
601
615
|
if (this.active) {
|
|
602
|
-
|
|
603
|
-
this.
|
|
616
|
+
let i, l;
|
|
617
|
+
for (i = 0, l = this.effects.length; i < l; i++) {
|
|
618
|
+
this.effects[i].stop();
|
|
619
|
+
}
|
|
620
|
+
for (i = 0, l = this.cleanups.length; i < l; i++) {
|
|
621
|
+
this.cleanups[i]();
|
|
622
|
+
}
|
|
604
623
|
if (this.scopes) {
|
|
605
|
-
this.scopes.
|
|
624
|
+
for (i = 0, l = this.scopes.length; i < l; i++) {
|
|
625
|
+
this.scopes[i].stop(true);
|
|
626
|
+
}
|
|
606
627
|
}
|
|
607
628
|
// nested scope, dereference from parent to avoid memory leaks
|
|
608
629
|
if (this.parent && !fromParent) {
|
|
@@ -620,8 +641,7 @@ class EffectScope {
|
|
|
620
641
|
function effectScope(detached) {
|
|
621
642
|
return new EffectScope(detached);
|
|
622
643
|
}
|
|
623
|
-
function recordEffectScope(effect, scope) {
|
|
624
|
-
scope = scope || activeEffectScope;
|
|
644
|
+
function recordEffectScope(effect, scope = activeEffectScope) {
|
|
625
645
|
if (scope && scope.active) {
|
|
626
646
|
scope.effects.push(effect);
|
|
627
647
|
}
|
|
@@ -684,7 +704,6 @@ let trackOpBit = 1;
|
|
|
684
704
|
* When recursion depth is greater, fall back to using a full cleanup.
|
|
685
705
|
*/
|
|
686
706
|
const maxMarkerBits = 30;
|
|
687
|
-
const effectStack = [];
|
|
688
707
|
let activeEffect;
|
|
689
708
|
const ITERATE_KEY = Symbol('iterate' );
|
|
690
709
|
const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
|
|
@@ -694,35 +713,42 @@ class ReactiveEffect {
|
|
|
694
713
|
this.scheduler = scheduler;
|
|
695
714
|
this.active = true;
|
|
696
715
|
this.deps = [];
|
|
716
|
+
this.parent = undefined;
|
|
697
717
|
recordEffectScope(this, scope);
|
|
698
718
|
}
|
|
699
719
|
run() {
|
|
700
720
|
if (!this.active) {
|
|
701
721
|
return this.fn();
|
|
702
722
|
}
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
if (effectTrackDepth <= maxMarkerBits) {
|
|
709
|
-
initDepMarkers(this);
|
|
710
|
-
}
|
|
711
|
-
else {
|
|
712
|
-
cleanupEffect(this);
|
|
713
|
-
}
|
|
714
|
-
return this.fn();
|
|
723
|
+
let parent = activeEffect;
|
|
724
|
+
let lastShouldTrack = shouldTrack;
|
|
725
|
+
while (parent) {
|
|
726
|
+
if (parent === this) {
|
|
727
|
+
return;
|
|
715
728
|
}
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
729
|
+
parent = parent.parent;
|
|
730
|
+
}
|
|
731
|
+
try {
|
|
732
|
+
this.parent = activeEffect;
|
|
733
|
+
activeEffect = this;
|
|
734
|
+
shouldTrack = true;
|
|
735
|
+
trackOpBit = 1 << ++effectTrackDepth;
|
|
736
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
737
|
+
initDepMarkers(this);
|
|
738
|
+
}
|
|
739
|
+
else {
|
|
740
|
+
cleanupEffect(this);
|
|
725
741
|
}
|
|
742
|
+
return this.fn();
|
|
743
|
+
}
|
|
744
|
+
finally {
|
|
745
|
+
if (effectTrackDepth <= maxMarkerBits) {
|
|
746
|
+
finalizeDepMarkers(this);
|
|
747
|
+
}
|
|
748
|
+
trackOpBit = 1 << --effectTrackDepth;
|
|
749
|
+
activeEffect = this.parent;
|
|
750
|
+
shouldTrack = lastShouldTrack;
|
|
751
|
+
this.parent = undefined;
|
|
726
752
|
}
|
|
727
753
|
}
|
|
728
754
|
stop() {
|
|
@@ -770,32 +796,24 @@ function pauseTracking() {
|
|
|
770
796
|
trackStack.push(shouldTrack);
|
|
771
797
|
shouldTrack = false;
|
|
772
798
|
}
|
|
773
|
-
function enableTracking() {
|
|
774
|
-
trackStack.push(shouldTrack);
|
|
775
|
-
shouldTrack = true;
|
|
776
|
-
}
|
|
777
799
|
function resetTracking() {
|
|
778
800
|
const last = trackStack.pop();
|
|
779
801
|
shouldTrack = last === undefined ? true : last;
|
|
780
802
|
}
|
|
781
803
|
function track(target, type, key) {
|
|
782
|
-
if (
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
804
|
+
if (shouldTrack && activeEffect) {
|
|
805
|
+
let depsMap = targetMap.get(target);
|
|
806
|
+
if (!depsMap) {
|
|
807
|
+
targetMap.set(target, (depsMap = new Map()));
|
|
808
|
+
}
|
|
809
|
+
let dep = depsMap.get(key);
|
|
810
|
+
if (!dep) {
|
|
811
|
+
depsMap.set(key, (dep = createDep()));
|
|
812
|
+
}
|
|
813
|
+
const eventInfo = { effect: activeEffect, target, type, key }
|
|
814
|
+
;
|
|
815
|
+
trackEffects(dep, eventInfo);
|
|
792
816
|
}
|
|
793
|
-
const eventInfo = { effect: activeEffect, target, type, key }
|
|
794
|
-
;
|
|
795
|
-
trackEffects(dep, eventInfo);
|
|
796
|
-
}
|
|
797
|
-
function isTracking() {
|
|
798
|
-
return shouldTrack && activeEffect !== undefined;
|
|
799
817
|
}
|
|
800
818
|
function trackEffects(dep, debuggerEventExtraInfo) {
|
|
801
819
|
let shouldTrack = false;
|
|
@@ -813,9 +831,7 @@ function trackEffects(dep, debuggerEventExtraInfo) {
|
|
|
813
831
|
dep.add(activeEffect);
|
|
814
832
|
activeEffect.deps.push(dep);
|
|
815
833
|
if (activeEffect.onTrack) {
|
|
816
|
-
activeEffect.onTrack(Object.assign({
|
|
817
|
-
effect: activeEffect
|
|
818
|
-
}, debuggerEventExtraInfo));
|
|
834
|
+
activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));
|
|
819
835
|
}
|
|
820
836
|
}
|
|
821
837
|
}
|
|
@@ -1480,13 +1496,10 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
|
|
|
1480
1496
|
const toReadonly = (value) => isObject(value) ? readonly(value) : value;
|
|
1481
1497
|
|
|
1482
1498
|
function trackRefValue(ref) {
|
|
1483
|
-
if (
|
|
1499
|
+
if (shouldTrack && activeEffect) {
|
|
1484
1500
|
ref = toRaw(ref);
|
|
1485
|
-
if (!ref.dep) {
|
|
1486
|
-
ref.dep = createDep();
|
|
1487
|
-
}
|
|
1488
1501
|
{
|
|
1489
|
-
trackEffects(ref.dep, {
|
|
1502
|
+
trackEffects(ref.dep || (ref.dep = createDep()), {
|
|
1490
1503
|
target: ref,
|
|
1491
1504
|
type: "get" /* GET */,
|
|
1492
1505
|
key: 'value'
|
|
@@ -1508,7 +1521,7 @@ function triggerRefValue(ref, newVal) {
|
|
|
1508
1521
|
}
|
|
1509
1522
|
}
|
|
1510
1523
|
function isRef(r) {
|
|
1511
|
-
return
|
|
1524
|
+
return !!(r && r.__v_isRef === true);
|
|
1512
1525
|
}
|
|
1513
1526
|
function ref(value) {
|
|
1514
1527
|
return createRef(value, false);
|
|
@@ -2319,23 +2332,23 @@ const deprecationData = {
|
|
|
2319
2332
|
["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
|
|
2320
2333
|
message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
|
|
2321
2334
|
`option have been removed. Use createApp(RootComponent).mount() instead.`,
|
|
2322
|
-
link: `https://v3.vuejs.org/
|
|
2335
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
|
|
2323
2336
|
},
|
|
2324
2337
|
["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
|
|
2325
2338
|
message: `Vue detected directives on the mount container. ` +
|
|
2326
2339
|
`In Vue 3, the container is no longer considered part of the template ` +
|
|
2327
2340
|
`and will not be processed/replaced.`,
|
|
2328
|
-
link: `https://v3.vuejs.org/
|
|
2341
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
|
|
2329
2342
|
},
|
|
2330
2343
|
["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
|
|
2331
2344
|
message: `Vue.extend() has been removed in Vue 3. ` +
|
|
2332
2345
|
`Use defineComponent() instead.`,
|
|
2333
|
-
link: `https://
|
|
2346
|
+
link: `https://vuejs.org/api/general.html#definecomponent`
|
|
2334
2347
|
},
|
|
2335
2348
|
["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
|
|
2336
2349
|
message: `Vue.prototype is no longer available in Vue 3. ` +
|
|
2337
2350
|
`Use app.config.globalProperties instead.`,
|
|
2338
|
-
link: `https://v3.vuejs.org/
|
|
2351
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
|
|
2339
2352
|
},
|
|
2340
2353
|
["GLOBAL_SET" /* GLOBAL_SET */]: {
|
|
2341
2354
|
message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
|
|
@@ -2348,7 +2361,7 @@ const deprecationData = {
|
|
|
2348
2361
|
["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
|
|
2349
2362
|
message: `Vue.observable() has been removed. ` +
|
|
2350
2363
|
`Use \`import { reactive } from "vue"\` from Composition API instead.`,
|
|
2351
|
-
link: `https://
|
|
2364
|
+
link: `https://vuejs.org/api/reactivity-core.html#reactive`
|
|
2352
2365
|
},
|
|
2353
2366
|
["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
|
|
2354
2367
|
message: `Vue.util has been removed. Please refactor to avoid its usage ` +
|
|
@@ -2367,11 +2380,11 @@ const deprecationData = {
|
|
|
2367
2380
|
["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
|
|
2368
2381
|
message: `config.keyCodes has been removed. ` +
|
|
2369
2382
|
`In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
|
|
2370
|
-
link: `https://v3.vuejs.org/
|
|
2383
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2371
2384
|
},
|
|
2372
2385
|
["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
|
|
2373
2386
|
message: `config.productionTip has been removed.`,
|
|
2374
|
-
link: `https://v3.vuejs.org/
|
|
2387
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
|
|
2375
2388
|
},
|
|
2376
2389
|
["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
|
|
2377
2390
|
message: () => {
|
|
@@ -2384,7 +2397,7 @@ const deprecationData = {
|
|
|
2384
2397
|
}
|
|
2385
2398
|
return msg;
|
|
2386
2399
|
},
|
|
2387
|
-
link: `https://v3.vuejs.org/
|
|
2400
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
|
|
2388
2401
|
},
|
|
2389
2402
|
["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
|
|
2390
2403
|
// this warning is only relevant in the full build when using runtime
|
|
@@ -2407,12 +2420,12 @@ const deprecationData = {
|
|
|
2407
2420
|
},
|
|
2408
2421
|
["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
|
|
2409
2422
|
message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
|
|
2410
|
-
link: `https://
|
|
2423
|
+
link: `https://vuejs.org/api/application.html#app-unmount`
|
|
2411
2424
|
},
|
|
2412
2425
|
["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
|
|
2413
2426
|
message: `vm.$on/$once/$off() have been removed. ` +
|
|
2414
2427
|
`Use an external event emitter library instead.`,
|
|
2415
|
-
link: `https://v3.vuejs.org/
|
|
2428
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
|
|
2416
2429
|
},
|
|
2417
2430
|
["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
|
|
2418
2431
|
message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
|
|
@@ -2420,23 +2433,23 @@ const deprecationData = {
|
|
|
2420
2433
|
`should be changed to @vnode-${event.slice(5)}. ` +
|
|
2421
2434
|
`From JavaScript, use Composition API to dynamically register lifecycle ` +
|
|
2422
2435
|
`hooks.`,
|
|
2423
|
-
link: `https://v3.vuejs.org/
|
|
2436
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
|
|
2424
2437
|
},
|
|
2425
2438
|
["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
|
|
2426
2439
|
message: `vm.$children has been removed. Consider refactoring your logic ` +
|
|
2427
2440
|
`to avoid relying on direct access to child components.`,
|
|
2428
|
-
link: `https://v3.vuejs.org/
|
|
2441
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
|
|
2429
2442
|
},
|
|
2430
2443
|
["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
|
|
2431
2444
|
message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
|
|
2432
2445
|
`included in vm.$attrs and it is no longer necessary to separately use ` +
|
|
2433
2446
|
`v-on="$listeners" if you are already using v-bind="$attrs". ` +
|
|
2434
2447
|
`(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
|
|
2435
|
-
link: `https://v3.vuejs.org/
|
|
2448
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
|
|
2436
2449
|
},
|
|
2437
2450
|
["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
|
|
2438
2451
|
message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
|
|
2439
|
-
link: `https://v3.vuejs.org/
|
|
2452
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
|
|
2440
2453
|
},
|
|
2441
2454
|
["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
|
|
2442
2455
|
message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
|
|
@@ -2447,17 +2460,17 @@ const deprecationData = {
|
|
|
2447
2460
|
`If you are binding $attrs to a non-root element and expecting ` +
|
|
2448
2461
|
`class/style to fallthrough on root, you will need to now manually bind ` +
|
|
2449
2462
|
`them on root via :class="$attrs.class".`,
|
|
2450
|
-
link: `https://v3.vuejs.org/
|
|
2463
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
|
|
2451
2464
|
},
|
|
2452
2465
|
["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
|
|
2453
2466
|
message: `The "data" option can no longer be a plain object. ` +
|
|
2454
2467
|
`Always use a function.`,
|
|
2455
|
-
link: `https://v3.vuejs.org/
|
|
2468
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
|
|
2456
2469
|
},
|
|
2457
2470
|
["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
|
|
2458
2471
|
message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
|
|
2459
2472
|
`In Vue 3, data keys are merged shallowly and will override one another.`,
|
|
2460
|
-
link: `https://v3.vuejs.org/
|
|
2473
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
|
|
2461
2474
|
},
|
|
2462
2475
|
["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
|
|
2463
2476
|
message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
|
|
@@ -2471,23 +2484,23 @@ const deprecationData = {
|
|
|
2471
2484
|
`If current usage is intended, you can disable the compat behavior and ` +
|
|
2472
2485
|
`suppress this warning with:` +
|
|
2473
2486
|
`\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
|
|
2474
|
-
link: `https://v3.vuejs.org/
|
|
2487
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
|
|
2475
2488
|
},
|
|
2476
2489
|
["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
|
|
2477
2490
|
message: (key) => `props default value function no longer has access to "this". The compat ` +
|
|
2478
2491
|
`build only offers access to this.$options.` +
|
|
2479
2492
|
`(found in prop "${key}")`,
|
|
2480
|
-
link: `https://v3.vuejs.org/
|
|
2493
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
|
|
2481
2494
|
},
|
|
2482
2495
|
["CUSTOM_DIR" /* CUSTOM_DIR */]: {
|
|
2483
2496
|
message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
|
|
2484
2497
|
`Use "${newHook}" instead.`,
|
|
2485
|
-
link: `https://v3.vuejs.org/
|
|
2498
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
|
|
2486
2499
|
},
|
|
2487
2500
|
["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
|
|
2488
2501
|
message: `Using keyCode as v-on modifier is no longer supported. ` +
|
|
2489
2502
|
`Use kebab-case key name modifiers instead.`,
|
|
2490
|
-
link: `https://v3.vuejs.org/
|
|
2503
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
|
|
2491
2504
|
},
|
|
2492
2505
|
["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
|
|
2493
2506
|
message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
|
|
@@ -2495,7 +2508,7 @@ const deprecationData = {
|
|
|
2495
2508
|
`use \`null\` or \`undefined\` instead. If the usage is intended, ` +
|
|
2496
2509
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2497
2510
|
`\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
|
|
2498
|
-
link: `https://v3.vuejs.org/
|
|
2511
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2499
2512
|
},
|
|
2500
2513
|
["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
|
|
2501
2514
|
message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
|
|
@@ -2504,7 +2517,7 @@ const deprecationData = {
|
|
|
2504
2517
|
`If the usage is intended, ` +
|
|
2505
2518
|
`you can disable the compat behavior and suppress this warning with:` +
|
|
2506
2519
|
`\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
|
|
2507
|
-
link: `https://v3.vuejs.org/
|
|
2520
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
|
|
2508
2521
|
},
|
|
2509
2522
|
["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
|
|
2510
2523
|
message: `` // this feature cannot be runtime-detected
|
|
@@ -2515,7 +2528,7 @@ const deprecationData = {
|
|
|
2515
2528
|
`for styling, you can disable the compat behavior and suppress this ` +
|
|
2516
2529
|
`warning with:` +
|
|
2517
2530
|
`\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
|
|
2518
|
-
link: `https://v3.vuejs.org/
|
|
2531
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
|
|
2519
2532
|
},
|
|
2520
2533
|
["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
|
|
2521
2534
|
message: (comp) => {
|
|
@@ -2528,7 +2541,7 @@ const deprecationData = {
|
|
|
2528
2541
|
`warning with:` +
|
|
2529
2542
|
`\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
|
|
2530
2543
|
},
|
|
2531
|
-
link: `https://v3.vuejs.org/
|
|
2544
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
|
|
2532
2545
|
},
|
|
2533
2546
|
["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
|
|
2534
2547
|
message: (comp) => {
|
|
@@ -2539,7 +2552,7 @@ const deprecationData = {
|
|
|
2539
2552
|
`components usage have been migrated and its compat behavior has ` +
|
|
2540
2553
|
`been disabled.`);
|
|
2541
2554
|
},
|
|
2542
|
-
link: `https://v3.vuejs.org/
|
|
2555
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
|
|
2543
2556
|
},
|
|
2544
2557
|
["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
|
|
2545
2558
|
message: (comp) => {
|
|
@@ -2556,20 +2569,20 @@ const deprecationData = {
|
|
|
2556
2569
|
`to work with v-model should now use the "modelValue" prop and emit the ` +
|
|
2557
2570
|
`"update:modelValue" event. You can update the usage and then ${configMsg}`);
|
|
2558
2571
|
},
|
|
2559
|
-
link: `https://v3.vuejs.org/
|
|
2572
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
|
|
2560
2573
|
},
|
|
2561
2574
|
["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
|
|
2562
2575
|
message: `Vue 3's render function API has changed. ` +
|
|
2563
2576
|
`You can opt-in to the new API with:` +
|
|
2564
2577
|
`\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
|
|
2565
2578
|
`\n (This can also be done per-component via the "compatConfig" option.)`,
|
|
2566
|
-
link: `https://v3.vuejs.org/
|
|
2579
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
|
|
2567
2580
|
},
|
|
2568
2581
|
["FILTERS" /* FILTERS */]: {
|
|
2569
2582
|
message: `filters have been removed in Vue 3. ` +
|
|
2570
2583
|
`The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
|
|
2571
2584
|
`Use method calls or computed properties instead.`,
|
|
2572
|
-
link: `https://v3.vuejs.org/
|
|
2585
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
|
|
2573
2586
|
},
|
|
2574
2587
|
["PRIVATE_APIS" /* PRIVATE_APIS */]: {
|
|
2575
2588
|
message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
|
|
@@ -2637,7 +2650,7 @@ function validateCompatConfig(config, instance) {
|
|
|
2637
2650
|
warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
|
|
2638
2651
|
`running a runtime-only build of Vue. This deprecation should be ` +
|
|
2639
2652
|
`configured via compiler options in your build setup instead.\n` +
|
|
2640
|
-
`Details: https://v3.vuejs.org/
|
|
2653
|
+
`Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
|
|
2641
2654
|
}
|
|
2642
2655
|
}
|
|
2643
2656
|
else {
|
|
@@ -3851,12 +3864,10 @@ function watchEffect(effect, options) {
|
|
|
3851
3864
|
return doWatch(effect, null, options);
|
|
3852
3865
|
}
|
|
3853
3866
|
function watchPostEffect(effect, options) {
|
|
3854
|
-
return doWatch(effect, null, (Object.assign(
|
|
3855
|
-
));
|
|
3867
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) ));
|
|
3856
3868
|
}
|
|
3857
3869
|
function watchSyncEffect(effect, options) {
|
|
3858
|
-
return doWatch(effect, null, (Object.assign(
|
|
3859
|
-
));
|
|
3870
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) ));
|
|
3860
3871
|
}
|
|
3861
3872
|
// initial value for watchers to trigger on undefined initial values
|
|
3862
3873
|
const INITIAL_WATCHER_VALUE = {};
|
|
@@ -4183,7 +4194,9 @@ const BaseTransitionImpl = {
|
|
|
4183
4194
|
const { mode } = rawProps;
|
|
4184
4195
|
// check mode
|
|
4185
4196
|
if (mode &&
|
|
4186
|
-
mode !== 'in-out' &&
|
|
4197
|
+
mode !== 'in-out' &&
|
|
4198
|
+
mode !== 'out-in' &&
|
|
4199
|
+
mode !== 'default') {
|
|
4187
4200
|
warn$1(`invalid <transition> mode: ${mode}`);
|
|
4188
4201
|
}
|
|
4189
4202
|
// at this point children has a guaranteed length of 1.
|
|
@@ -4413,20 +4426,24 @@ function setTransitionHooks(vnode, hooks) {
|
|
|
4413
4426
|
vnode.transition = hooks;
|
|
4414
4427
|
}
|
|
4415
4428
|
}
|
|
4416
|
-
function getTransitionRawChildren(children, keepComment = false) {
|
|
4429
|
+
function getTransitionRawChildren(children, keepComment = false, parentKey) {
|
|
4417
4430
|
let ret = [];
|
|
4418
4431
|
let keyedFragmentCount = 0;
|
|
4419
4432
|
for (let i = 0; i < children.length; i++) {
|
|
4420
|
-
|
|
4433
|
+
let child = children[i];
|
|
4434
|
+
// #5360 inherit parent key in case of <template v-for>
|
|
4435
|
+
const key = parentKey == null
|
|
4436
|
+
? child.key
|
|
4437
|
+
: String(parentKey) + String(child.key != null ? child.key : i);
|
|
4421
4438
|
// handle fragment children case, e.g. v-for
|
|
4422
4439
|
if (child.type === Fragment) {
|
|
4423
4440
|
if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
|
|
4424
4441
|
keyedFragmentCount++;
|
|
4425
|
-
ret = ret.concat(getTransitionRawChildren(child.children, keepComment));
|
|
4442
|
+
ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
|
|
4426
4443
|
}
|
|
4427
4444
|
// comment placeholders should be skipped, e.g. v-if
|
|
4428
4445
|
else if (keepComment || child.type !== Comment) {
|
|
4429
|
-
ret.push(child);
|
|
4446
|
+
ret.push(key != null ? cloneVNode(child, { key }) : child);
|
|
4430
4447
|
}
|
|
4431
4448
|
}
|
|
4432
4449
|
// #1126 if a transition children list contains multiple sub fragments, these
|
|
@@ -5484,6 +5501,10 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
|
|
|
5484
5501
|
const propsToUpdate = instance.vnode.dynamicProps;
|
|
5485
5502
|
for (let i = 0; i < propsToUpdate.length; i++) {
|
|
5486
5503
|
let key = propsToUpdate[i];
|
|
5504
|
+
// skip if the prop key is a declared emit event listener
|
|
5505
|
+
if (isEmitListener(instance.emitsOptions, key)) {
|
|
5506
|
+
continue;
|
|
5507
|
+
}
|
|
5487
5508
|
// PROPS flag guarantees rawProps to be non-null
|
|
5488
5509
|
const value = rawProps[key];
|
|
5489
5510
|
if (options) {
|
|
@@ -6055,7 +6076,6 @@ return withDirectives(h(comp), [
|
|
|
6055
6076
|
[bar, this.y]
|
|
6056
6077
|
])
|
|
6057
6078
|
*/
|
|
6058
|
-
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
|
|
6059
6079
|
function validateDirectiveName(name) {
|
|
6060
6080
|
if (isBuiltInDirective(name)) {
|
|
6061
6081
|
warn$1('Do not use built-in directive ids as custom directive id: ' + name);
|
|
@@ -6070,7 +6090,8 @@ function withDirectives(vnode, directives) {
|
|
|
6070
6090
|
warn$1(`withDirectives can only be used inside render functions.`);
|
|
6071
6091
|
return vnode;
|
|
6072
6092
|
}
|
|
6073
|
-
const instance = internalInstance
|
|
6093
|
+
const instance = getExposeProxy(internalInstance) ||
|
|
6094
|
+
internalInstance.proxy;
|
|
6074
6095
|
const bindings = vnode.dirs || (vnode.dirs = []);
|
|
6075
6096
|
for (let i = 0; i < directives.length; i++) {
|
|
6076
6097
|
let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
|
|
@@ -6190,7 +6211,7 @@ function createCompatVue(createApp, createSingletonApp) {
|
|
|
6190
6211
|
return vm;
|
|
6191
6212
|
}
|
|
6192
6213
|
}
|
|
6193
|
-
Vue.version = `2.6.14-compat:${"3.2.
|
|
6214
|
+
Vue.version = `2.6.14-compat:${"3.2.32"}`;
|
|
6194
6215
|
Vue.config = singletonApp.config;
|
|
6195
6216
|
Vue.use = (p, ...options) => {
|
|
6196
6217
|
if (p && isFunction(p.install)) {
|
|
@@ -6617,6 +6638,9 @@ function createAppContext() {
|
|
|
6617
6638
|
let uid = 0;
|
|
6618
6639
|
function createAppAPI(render, hydrate) {
|
|
6619
6640
|
return function createApp(rootComponent, rootProps = null) {
|
|
6641
|
+
if (!isFunction(rootComponent)) {
|
|
6642
|
+
rootComponent = Object.assign({}, rootComponent);
|
|
6643
|
+
}
|
|
6620
6644
|
if (rootProps != null && !isObject(rootProps)) {
|
|
6621
6645
|
warn$1(`root props passed to app.mount() must be an object.`);
|
|
6622
6646
|
rootProps = null;
|
|
@@ -6816,6 +6840,9 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
|
|
6816
6840
|
if (!isArray(existing)) {
|
|
6817
6841
|
if (_isString) {
|
|
6818
6842
|
refs[ref] = [refValue];
|
|
6843
|
+
if (hasOwn(setupState, ref)) {
|
|
6844
|
+
setupState[ref] = refs[ref];
|
|
6845
|
+
}
|
|
6819
6846
|
}
|
|
6820
6847
|
else {
|
|
6821
6848
|
ref.value = [refValue];
|
|
@@ -7014,7 +7041,8 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
7014
7041
|
// e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
|
|
7015
7042
|
const forcePatchValue = (type === 'input' && dirs) || type === 'option';
|
|
7016
7043
|
// skip props & children if this is hoisted static nodes
|
|
7017
|
-
|
|
7044
|
+
// #5405 in dev, always hydrate children for HMR
|
|
7045
|
+
{
|
|
7018
7046
|
if (dirs) {
|
|
7019
7047
|
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
7020
7048
|
}
|
|
@@ -7187,7 +7215,7 @@ function startMeasure(instance, type) {
|
|
|
7187
7215
|
perf.mark(`vue-${type}-${instance.uid}`);
|
|
7188
7216
|
}
|
|
7189
7217
|
{
|
|
7190
|
-
devtoolsPerfStart(instance, type,
|
|
7218
|
+
devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
|
|
7191
7219
|
}
|
|
7192
7220
|
}
|
|
7193
7221
|
function endMeasure(instance, type) {
|
|
@@ -7200,7 +7228,7 @@ function endMeasure(instance, type) {
|
|
|
7200
7228
|
perf.clearMarks(endTag);
|
|
7201
7229
|
}
|
|
7202
7230
|
{
|
|
7203
|
-
devtoolsPerfEnd(instance, type,
|
|
7231
|
+
devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
|
|
7204
7232
|
}
|
|
7205
7233
|
}
|
|
7206
7234
|
function isSupported() {
|
|
@@ -10168,9 +10196,11 @@ const PublicInstanceProxyHandlers = {
|
|
|
10168
10196
|
const { data, setupState, ctx } = instance;
|
|
10169
10197
|
if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
|
|
10170
10198
|
setupState[key] = value;
|
|
10199
|
+
return true;
|
|
10171
10200
|
}
|
|
10172
10201
|
else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
10173
10202
|
data[key] = value;
|
|
10203
|
+
return true;
|
|
10174
10204
|
}
|
|
10175
10205
|
else if (hasOwn(instance.props, key)) {
|
|
10176
10206
|
warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
|
|
@@ -10204,6 +10234,16 @@ const PublicInstanceProxyHandlers = {
|
|
|
10204
10234
|
hasOwn(ctx, key) ||
|
|
10205
10235
|
hasOwn(publicPropertiesMap, key) ||
|
|
10206
10236
|
hasOwn(appContext.config.globalProperties, key));
|
|
10237
|
+
},
|
|
10238
|
+
defineProperty(target, key, descriptor) {
|
|
10239
|
+
if (descriptor.get != null) {
|
|
10240
|
+
// invalidate key cache of a getter based property #5417
|
|
10241
|
+
target.$.accessCache[key] = 0;
|
|
10242
|
+
}
|
|
10243
|
+
else if (hasOwn(descriptor, 'value')) {
|
|
10244
|
+
this.set(target, key, descriptor.value, null);
|
|
10245
|
+
}
|
|
10246
|
+
return Reflect.defineProperty(target, key, descriptor);
|
|
10207
10247
|
}
|
|
10208
10248
|
};
|
|
10209
10249
|
{
|
|
@@ -11098,7 +11138,7 @@ function isMemoSame(cached, memo) {
|
|
|
11098
11138
|
}
|
|
11099
11139
|
|
|
11100
11140
|
// Core API ------------------------------------------------------------------
|
|
11101
|
-
const version = "3.2.
|
|
11141
|
+
const version = "3.2.32";
|
|
11102
11142
|
const _ssrUtils = {
|
|
11103
11143
|
createComponentInstance,
|
|
11104
11144
|
setupComponent,
|
|
@@ -13648,13 +13688,13 @@ const deprecationData$1 = {
|
|
|
13648
13688
|
message: `Platform-native elements with "is" prop will no longer be ` +
|
|
13649
13689
|
`treated as components in Vue 3 unless the "is" value is explicitly ` +
|
|
13650
13690
|
`prefixed with "vue:".`,
|
|
13651
|
-
link: `https://v3.vuejs.org/
|
|
13691
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
|
|
13652
13692
|
},
|
|
13653
13693
|
["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
|
|
13654
13694
|
message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
|
|
13655
13695
|
`argument instead. \`v-bind:${key}.sync\` should be changed to ` +
|
|
13656
13696
|
`\`v-model:${key}\`.`,
|
|
13657
|
-
link: `https://v3.vuejs.org/
|
|
13697
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
|
|
13658
13698
|
},
|
|
13659
13699
|
["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
|
|
13660
13700
|
message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
|
|
@@ -13666,11 +13706,11 @@ const deprecationData$1 = {
|
|
|
13666
13706
|
`that appears before v-bind in the case of conflict. ` +
|
|
13667
13707
|
`To retain 2.x behavior, move v-bind to make it the first attribute. ` +
|
|
13668
13708
|
`You can also suppress this warning if the usage is intended.`,
|
|
13669
|
-
link: `https://v3.vuejs.org/
|
|
13709
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
|
|
13670
13710
|
},
|
|
13671
13711
|
["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
|
|
13672
13712
|
message: `.native modifier for v-on has been removed as is no longer necessary.`,
|
|
13673
|
-
link: `https://v3.vuejs.org/
|
|
13713
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
|
|
13674
13714
|
},
|
|
13675
13715
|
["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
|
|
13676
13716
|
message: `v-if / v-for precedence when used on the same element has changed ` +
|
|
@@ -13678,7 +13718,7 @@ const deprecationData$1 = {
|
|
|
13678
13718
|
`access to v-for scope variables. It is best to avoid the ambiguity ` +
|
|
13679
13719
|
`with <template> tags or use a computed property that filters v-for ` +
|
|
13680
13720
|
`data source.`,
|
|
13681
|
-
link: `https://v3.vuejs.org/
|
|
13721
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
|
|
13682
13722
|
},
|
|
13683
13723
|
["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
|
|
13684
13724
|
message: `<template> with no special directives will render as a native template ` +
|
|
@@ -13686,13 +13726,13 @@ const deprecationData$1 = {
|
|
|
13686
13726
|
},
|
|
13687
13727
|
["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
|
|
13688
13728
|
message: `"inline-template" has been removed in Vue 3.`,
|
|
13689
|
-
link: `https://v3.vuejs.org/
|
|
13729
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
|
|
13690
13730
|
},
|
|
13691
13731
|
["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
|
|
13692
13732
|
message: `filters have been removed in Vue 3. ` +
|
|
13693
13733
|
`The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
|
|
13694
13734
|
`Use method calls or computed properties instead.`,
|
|
13695
|
-
link: `https://v3.vuejs.org/
|
|
13735
|
+
link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
|
|
13696
13736
|
}
|
|
13697
13737
|
};
|
|
13698
13738
|
function getCompatValue(key, context) {
|
|
@@ -17659,7 +17699,7 @@ function buildProps(node, context, props = node.props, ssr = false) {
|
|
|
17659
17699
|
}
|
|
17660
17700
|
}
|
|
17661
17701
|
}
|
|
17662
|
-
else {
|
|
17702
|
+
else if (!isBuiltInDirective(name)) {
|
|
17663
17703
|
// no built-in transform, this is a user custom directive.
|
|
17664
17704
|
runtimeDirectives.push(prop);
|
|
17665
17705
|
// custom dirs may use beforeUpdate so they need to force blocks
|