vue 3.2.30 → 3.2.33
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/dist/vue.esm-browser.js +166 -69
- package/dist/vue.esm-browser.prod.js +1 -1
- package/dist/vue.global.js +166 -69
- package/dist/vue.global.prod.js +1 -1
- package/dist/vue.runtime.esm-browser.js +166 -69
- package/dist/vue.runtime.esm-browser.prod.js +1 -1
- package/dist/vue.runtime.global.js +166 -69
- package/dist/vue.runtime.global.prod.js +1 -1
- package/package.json +6 -6
package/dist/vue.esm-browser.js
CHANGED
|
@@ -427,8 +427,17 @@ function warn(msg, ...args) {
|
|
|
427
427
|
let activeEffectScope;
|
|
428
428
|
class EffectScope {
|
|
429
429
|
constructor(detached = false) {
|
|
430
|
+
/**
|
|
431
|
+
* @internal
|
|
432
|
+
*/
|
|
430
433
|
this.active = true;
|
|
434
|
+
/**
|
|
435
|
+
* @internal
|
|
436
|
+
*/
|
|
431
437
|
this.effects = [];
|
|
438
|
+
/**
|
|
439
|
+
* @internal
|
|
440
|
+
*/
|
|
432
441
|
this.cleanups = [];
|
|
433
442
|
if (!detached && activeEffectScope) {
|
|
434
443
|
this.parent = activeEffectScope;
|
|
@@ -438,21 +447,30 @@ class EffectScope {
|
|
|
438
447
|
}
|
|
439
448
|
run(fn) {
|
|
440
449
|
if (this.active) {
|
|
450
|
+
const currentEffectScope = activeEffectScope;
|
|
441
451
|
try {
|
|
442
452
|
activeEffectScope = this;
|
|
443
453
|
return fn();
|
|
444
454
|
}
|
|
445
455
|
finally {
|
|
446
|
-
activeEffectScope =
|
|
456
|
+
activeEffectScope = currentEffectScope;
|
|
447
457
|
}
|
|
448
458
|
}
|
|
449
459
|
else {
|
|
450
460
|
warn(`cannot run an inactive effect scope.`);
|
|
451
461
|
}
|
|
452
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* This should only be called on non-detached scopes
|
|
465
|
+
* @internal
|
|
466
|
+
*/
|
|
453
467
|
on() {
|
|
454
468
|
activeEffectScope = this;
|
|
455
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* This should only be called on non-detached scopes
|
|
472
|
+
* @internal
|
|
473
|
+
*/
|
|
456
474
|
off() {
|
|
457
475
|
activeEffectScope = this.parent;
|
|
458
476
|
}
|
|
@@ -594,10 +612,17 @@ class ReactiveEffect {
|
|
|
594
612
|
activeEffect = this.parent;
|
|
595
613
|
shouldTrack = lastShouldTrack;
|
|
596
614
|
this.parent = undefined;
|
|
615
|
+
if (this.deferStop) {
|
|
616
|
+
this.stop();
|
|
617
|
+
}
|
|
597
618
|
}
|
|
598
619
|
}
|
|
599
620
|
stop() {
|
|
600
|
-
|
|
621
|
+
// stopped while running itself - defer the cleanup
|
|
622
|
+
if (activeEffect === this) {
|
|
623
|
+
this.deferStop = true;
|
|
624
|
+
}
|
|
625
|
+
else if (this.active) {
|
|
601
626
|
cleanupEffect(this);
|
|
602
627
|
if (this.onStop) {
|
|
603
628
|
this.onStop();
|
|
@@ -676,9 +701,7 @@ function trackEffects(dep, debuggerEventExtraInfo) {
|
|
|
676
701
|
dep.add(activeEffect);
|
|
677
702
|
activeEffect.deps.push(dep);
|
|
678
703
|
if (activeEffect.onTrack) {
|
|
679
|
-
activeEffect.onTrack(Object.assign({
|
|
680
|
-
effect: activeEffect
|
|
681
|
-
}, debuggerEventExtraInfo));
|
|
704
|
+
activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));
|
|
682
705
|
}
|
|
683
706
|
}
|
|
684
707
|
}
|
|
@@ -774,7 +797,9 @@ function triggerEffects(dep, debuggerEventExtraInfo) {
|
|
|
774
797
|
}
|
|
775
798
|
|
|
776
799
|
const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);
|
|
777
|
-
const builtInSymbols = new Set(
|
|
800
|
+
const builtInSymbols = new Set(
|
|
801
|
+
/*#__PURE__*/
|
|
802
|
+
Object.getOwnPropertyNames(Symbol)
|
|
778
803
|
.map(key => Symbol[key])
|
|
779
804
|
.filter(isSymbol));
|
|
780
805
|
const get = /*#__PURE__*/ createGetter();
|
|
@@ -926,13 +951,13 @@ const readonlyHandlers = {
|
|
|
926
951
|
get: readonlyGet,
|
|
927
952
|
set(target, key) {
|
|
928
953
|
{
|
|
929
|
-
|
|
954
|
+
warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
|
|
930
955
|
}
|
|
931
956
|
return true;
|
|
932
957
|
},
|
|
933
958
|
deleteProperty(target, key) {
|
|
934
959
|
{
|
|
935
|
-
|
|
960
|
+
warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
|
|
936
961
|
}
|
|
937
962
|
return true;
|
|
938
963
|
}
|
|
@@ -1760,7 +1785,7 @@ let preFlushIndex = 0;
|
|
|
1760
1785
|
const pendingPostFlushCbs = [];
|
|
1761
1786
|
let activePostFlushCbs = null;
|
|
1762
1787
|
let postFlushIndex = 0;
|
|
1763
|
-
const resolvedPromise = Promise.resolve();
|
|
1788
|
+
const resolvedPromise = /*#__PURE__*/ Promise.resolve();
|
|
1764
1789
|
let currentFlushPromise = null;
|
|
1765
1790
|
let currentPreFlushParentJob = null;
|
|
1766
1791
|
const RECURSION_LIMIT = 100;
|
|
@@ -2176,6 +2201,8 @@ function devtoolsComponentEmit(component, event, params) {
|
|
|
2176
2201
|
}
|
|
2177
2202
|
|
|
2178
2203
|
function emit$1(instance, event, ...rawArgs) {
|
|
2204
|
+
if (instance.isUnmounted)
|
|
2205
|
+
return;
|
|
2179
2206
|
const props = instance.vnode.props || EMPTY_OBJ;
|
|
2180
2207
|
{
|
|
2181
2208
|
const { emitsOptions, propsOptions: [propsOptions] } = instance;
|
|
@@ -3163,12 +3190,10 @@ function watchEffect(effect, options) {
|
|
|
3163
3190
|
return doWatch(effect, null, options);
|
|
3164
3191
|
}
|
|
3165
3192
|
function watchPostEffect(effect, options) {
|
|
3166
|
-
return doWatch(effect, null, (Object.assign(
|
|
3167
|
-
));
|
|
3193
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) ));
|
|
3168
3194
|
}
|
|
3169
3195
|
function watchSyncEffect(effect, options) {
|
|
3170
|
-
return doWatch(effect, null, (Object.assign(
|
|
3171
|
-
));
|
|
3196
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) ));
|
|
3172
3197
|
}
|
|
3173
3198
|
// initial value for watchers to trigger on undefined initial values
|
|
3174
3199
|
const INITIAL_WATCHER_VALUE = {};
|
|
@@ -3454,10 +3479,22 @@ const BaseTransitionImpl = {
|
|
|
3454
3479
|
if (!children || !children.length) {
|
|
3455
3480
|
return;
|
|
3456
3481
|
}
|
|
3457
|
-
|
|
3482
|
+
let child = children[0];
|
|
3458
3483
|
if (children.length > 1) {
|
|
3459
|
-
|
|
3460
|
-
|
|
3484
|
+
let hasFound = false;
|
|
3485
|
+
// locate first non-comment child
|
|
3486
|
+
for (const c of children) {
|
|
3487
|
+
if (c.type !== Comment) {
|
|
3488
|
+
if (hasFound) {
|
|
3489
|
+
// warn more than one non-comment child
|
|
3490
|
+
warn$1('<transition> can only be used on a single element or component. ' +
|
|
3491
|
+
'Use <transition-group> for lists.');
|
|
3492
|
+
break;
|
|
3493
|
+
}
|
|
3494
|
+
child = c;
|
|
3495
|
+
hasFound = true;
|
|
3496
|
+
}
|
|
3497
|
+
}
|
|
3461
3498
|
}
|
|
3462
3499
|
// there's no need to track reactivity for these props so use the raw
|
|
3463
3500
|
// props for a bit better perf
|
|
@@ -3465,11 +3502,11 @@ const BaseTransitionImpl = {
|
|
|
3465
3502
|
const { mode } = rawProps;
|
|
3466
3503
|
// check mode
|
|
3467
3504
|
if (mode &&
|
|
3468
|
-
mode !== 'in-out' &&
|
|
3505
|
+
mode !== 'in-out' &&
|
|
3506
|
+
mode !== 'out-in' &&
|
|
3507
|
+
mode !== 'default') {
|
|
3469
3508
|
warn$1(`invalid <transition> mode: ${mode}`);
|
|
3470
3509
|
}
|
|
3471
|
-
// at this point children has a guaranteed length of 1.
|
|
3472
|
-
const child = children[0];
|
|
3473
3510
|
if (state.isLeaving) {
|
|
3474
3511
|
return emptyPlaceholder(child);
|
|
3475
3512
|
}
|
|
@@ -3692,20 +3729,24 @@ function setTransitionHooks(vnode, hooks) {
|
|
|
3692
3729
|
vnode.transition = hooks;
|
|
3693
3730
|
}
|
|
3694
3731
|
}
|
|
3695
|
-
function getTransitionRawChildren(children, keepComment = false) {
|
|
3732
|
+
function getTransitionRawChildren(children, keepComment = false, parentKey) {
|
|
3696
3733
|
let ret = [];
|
|
3697
3734
|
let keyedFragmentCount = 0;
|
|
3698
3735
|
for (let i = 0; i < children.length; i++) {
|
|
3699
|
-
|
|
3736
|
+
let child = children[i];
|
|
3737
|
+
// #5360 inherit parent key in case of <template v-for>
|
|
3738
|
+
const key = parentKey == null
|
|
3739
|
+
? child.key
|
|
3740
|
+
: String(parentKey) + String(child.key != null ? child.key : i);
|
|
3700
3741
|
// handle fragment children case, e.g. v-for
|
|
3701
3742
|
if (child.type === Fragment) {
|
|
3702
3743
|
if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
|
|
3703
3744
|
keyedFragmentCount++;
|
|
3704
|
-
ret = ret.concat(getTransitionRawChildren(child.children, keepComment));
|
|
3745
|
+
ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
|
|
3705
3746
|
}
|
|
3706
3747
|
// comment placeholders should be skipped, e.g. v-if
|
|
3707
3748
|
else if (keepComment || child.type !== Comment) {
|
|
3708
|
-
ret.push(child);
|
|
3749
|
+
ret.push(key != null ? cloneVNode(child, { key }) : child);
|
|
3709
3750
|
}
|
|
3710
3751
|
}
|
|
3711
3752
|
// #1126 if a transition children list contains multiple sub fragments, these
|
|
@@ -4671,6 +4712,10 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
|
|
|
4671
4712
|
const propsToUpdate = instance.vnode.dynamicProps;
|
|
4672
4713
|
for (let i = 0; i < propsToUpdate.length; i++) {
|
|
4673
4714
|
let key = propsToUpdate[i];
|
|
4715
|
+
// skip if the prop key is a declared emit event listener
|
|
4716
|
+
if (isEmitListener(instance.emitsOptions, key)) {
|
|
4717
|
+
continue;
|
|
4718
|
+
}
|
|
4674
4719
|
// PROPS flag guarantees rawProps to be non-null
|
|
4675
4720
|
const value = rawProps[key];
|
|
4676
4721
|
if (options) {
|
|
@@ -5195,7 +5240,8 @@ function withDirectives(vnode, directives) {
|
|
|
5195
5240
|
warn$1(`withDirectives can only be used inside render functions.`);
|
|
5196
5241
|
return vnode;
|
|
5197
5242
|
}
|
|
5198
|
-
const instance = internalInstance
|
|
5243
|
+
const instance = getExposeProxy(internalInstance) ||
|
|
5244
|
+
internalInstance.proxy;
|
|
5199
5245
|
const bindings = vnode.dirs || (vnode.dirs = []);
|
|
5200
5246
|
for (let i = 0; i < directives.length; i++) {
|
|
5201
5247
|
let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
|
|
@@ -5267,6 +5313,9 @@ function createAppContext() {
|
|
|
5267
5313
|
let uid = 0;
|
|
5268
5314
|
function createAppAPI(render, hydrate) {
|
|
5269
5315
|
return function createApp(rootComponent, rootProps = null) {
|
|
5316
|
+
if (!isFunction(rootComponent)) {
|
|
5317
|
+
rootComponent = Object.assign({}, rootComponent);
|
|
5318
|
+
}
|
|
5270
5319
|
if (rootProps != null && !isObject(rootProps)) {
|
|
5271
5320
|
warn$1(`root props passed to app.mount() must be an object.`);
|
|
5272
5321
|
rootProps = null;
|
|
@@ -5463,6 +5512,9 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
|
|
5463
5512
|
if (!isArray(existing)) {
|
|
5464
5513
|
if (_isString) {
|
|
5465
5514
|
refs[ref] = [refValue];
|
|
5515
|
+
if (hasOwn(setupState, ref)) {
|
|
5516
|
+
setupState[ref] = refs[ref];
|
|
5517
|
+
}
|
|
5466
5518
|
}
|
|
5467
5519
|
else {
|
|
5468
5520
|
ref.value = [refValue];
|
|
@@ -5661,7 +5713,8 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
5661
5713
|
// e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
|
|
5662
5714
|
const forcePatchValue = (type === 'input' && dirs) || type === 'option';
|
|
5663
5715
|
// skip props & children if this is hoisted static nodes
|
|
5664
|
-
|
|
5716
|
+
// #5405 in dev, always hydrate children for HMR
|
|
5717
|
+
{
|
|
5665
5718
|
if (dirs) {
|
|
5666
5719
|
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
5667
5720
|
}
|
|
@@ -5834,7 +5887,7 @@ function startMeasure(instance, type) {
|
|
|
5834
5887
|
perf.mark(`vue-${type}-${instance.uid}`);
|
|
5835
5888
|
}
|
|
5836
5889
|
{
|
|
5837
|
-
devtoolsPerfStart(instance, type,
|
|
5890
|
+
devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
|
|
5838
5891
|
}
|
|
5839
5892
|
}
|
|
5840
5893
|
function endMeasure(instance, type) {
|
|
@@ -5847,7 +5900,7 @@ function endMeasure(instance, type) {
|
|
|
5847
5900
|
perf.clearMarks(endTag);
|
|
5848
5901
|
}
|
|
5849
5902
|
{
|
|
5850
|
-
devtoolsPerfEnd(instance, type,
|
|
5903
|
+
devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
|
|
5851
5904
|
}
|
|
5852
5905
|
}
|
|
5853
5906
|
function isSupported() {
|
|
@@ -6975,7 +7028,22 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
6975
7028
|
const remove = vnode => {
|
|
6976
7029
|
const { type, el, anchor, transition } = vnode;
|
|
6977
7030
|
if (type === Fragment) {
|
|
6978
|
-
|
|
7031
|
+
if (vnode.patchFlag > 0 &&
|
|
7032
|
+
vnode.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */ &&
|
|
7033
|
+
transition &&
|
|
7034
|
+
!transition.persisted) {
|
|
7035
|
+
vnode.children.forEach(child => {
|
|
7036
|
+
if (child.type === Comment) {
|
|
7037
|
+
hostRemove(child.el);
|
|
7038
|
+
}
|
|
7039
|
+
else {
|
|
7040
|
+
remove(child);
|
|
7041
|
+
}
|
|
7042
|
+
});
|
|
7043
|
+
}
|
|
7044
|
+
else {
|
|
7045
|
+
removeFragment(el, anchor);
|
|
7046
|
+
}
|
|
6979
7047
|
return;
|
|
6980
7048
|
}
|
|
6981
7049
|
if (type === Static) {
|
|
@@ -7994,7 +8062,10 @@ function renderSlot(slots, name, props = {},
|
|
|
7994
8062
|
// this is not a user-facing function, so the fallback is always generated by
|
|
7995
8063
|
// the compiler and guaranteed to be a function returning an array
|
|
7996
8064
|
fallback, noSlotted) {
|
|
7997
|
-
if (currentRenderingInstance.isCE
|
|
8065
|
+
if (currentRenderingInstance.isCE ||
|
|
8066
|
+
(currentRenderingInstance.parent &&
|
|
8067
|
+
isAsyncWrapper(currentRenderingInstance.parent) &&
|
|
8068
|
+
currentRenderingInstance.parent.isCE)) {
|
|
7998
8069
|
return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback());
|
|
7999
8070
|
}
|
|
8000
8071
|
let slot = slots[name];
|
|
@@ -8067,7 +8138,10 @@ const getPublicInstance = (i) => {
|
|
|
8067
8138
|
return getExposeProxy(i) || i.proxy;
|
|
8068
8139
|
return getPublicInstance(i.parent);
|
|
8069
8140
|
};
|
|
8070
|
-
const publicPropertiesMap =
|
|
8141
|
+
const publicPropertiesMap =
|
|
8142
|
+
// Move PURE marker to new line to workaround compiler discarding it
|
|
8143
|
+
// due to type annotation
|
|
8144
|
+
/*#__PURE__*/ extend(Object.create(null), {
|
|
8071
8145
|
$: i => i,
|
|
8072
8146
|
$el: i => i.vnode.el,
|
|
8073
8147
|
$data: i => i.data,
|
|
@@ -8195,9 +8269,11 @@ const PublicInstanceProxyHandlers = {
|
|
|
8195
8269
|
const { data, setupState, ctx } = instance;
|
|
8196
8270
|
if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
|
|
8197
8271
|
setupState[key] = value;
|
|
8272
|
+
return true;
|
|
8198
8273
|
}
|
|
8199
8274
|
else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
8200
8275
|
data[key] = value;
|
|
8276
|
+
return true;
|
|
8201
8277
|
}
|
|
8202
8278
|
else if (hasOwn(instance.props, key)) {
|
|
8203
8279
|
warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
|
|
@@ -8231,6 +8307,16 @@ const PublicInstanceProxyHandlers = {
|
|
|
8231
8307
|
hasOwn(ctx, key) ||
|
|
8232
8308
|
hasOwn(publicPropertiesMap, key) ||
|
|
8233
8309
|
hasOwn(appContext.config.globalProperties, key));
|
|
8310
|
+
},
|
|
8311
|
+
defineProperty(target, key, descriptor) {
|
|
8312
|
+
if (descriptor.get != null) {
|
|
8313
|
+
// invalidate key cache of a getter based property #5417
|
|
8314
|
+
target._.accessCache[key] = 0;
|
|
8315
|
+
}
|
|
8316
|
+
else if (hasOwn(descriptor, 'value')) {
|
|
8317
|
+
this.set(target, key, descriptor.value, null);
|
|
8318
|
+
}
|
|
8319
|
+
return Reflect.defineProperty(target, key, descriptor);
|
|
8234
8320
|
}
|
|
8235
8321
|
};
|
|
8236
8322
|
{
|
|
@@ -8433,6 +8519,7 @@ function setupComponent(instance, isSSR = false) {
|
|
|
8433
8519
|
return setupResult;
|
|
8434
8520
|
}
|
|
8435
8521
|
function setupStatefulComponent(instance, isSSR) {
|
|
8522
|
+
var _a;
|
|
8436
8523
|
const Component = instance.type;
|
|
8437
8524
|
{
|
|
8438
8525
|
if (Component.name) {
|
|
@@ -8490,6 +8577,13 @@ function setupStatefulComponent(instance, isSSR) {
|
|
|
8490
8577
|
// async setup returned Promise.
|
|
8491
8578
|
// bail here and wait for re-entry.
|
|
8492
8579
|
instance.asyncDep = setupResult;
|
|
8580
|
+
if (!instance.suspense) {
|
|
8581
|
+
const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';
|
|
8582
|
+
warn$1(`Component <${name}>: setup function returned a promise, but no ` +
|
|
8583
|
+
`<Suspense> boundary was found in the parent component tree. ` +
|
|
8584
|
+
`A component with async setup() must be nested in a <Suspense> ` +
|
|
8585
|
+
`in order to be rendered.`);
|
|
8586
|
+
}
|
|
8493
8587
|
}
|
|
8494
8588
|
}
|
|
8495
8589
|
else {
|
|
@@ -9106,7 +9200,7 @@ function isMemoSame(cached, memo) {
|
|
|
9106
9200
|
}
|
|
9107
9201
|
|
|
9108
9202
|
// Core API ------------------------------------------------------------------
|
|
9109
|
-
const version = "3.2.
|
|
9203
|
+
const version = "3.2.33";
|
|
9110
9204
|
/**
|
|
9111
9205
|
* SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
|
|
9112
9206
|
* @internal
|
|
@@ -9123,7 +9217,7 @@ const compatUtils = (null);
|
|
|
9123
9217
|
|
|
9124
9218
|
const svgNS = 'http://www.w3.org/2000/svg';
|
|
9125
9219
|
const doc = (typeof document !== 'undefined' ? document : null);
|
|
9126
|
-
const templateContainer = doc && doc.createElement('template');
|
|
9220
|
+
const templateContainer = doc && /*#__PURE__*/ doc.createElement('template');
|
|
9127
9221
|
const nodeOps = {
|
|
9128
9222
|
insert: (child, parent, anchor) => {
|
|
9129
9223
|
parent.insertBefore(child, anchor || null);
|
|
@@ -9274,6 +9368,8 @@ function setStyle(style, name, val) {
|
|
|
9274
9368
|
val.forEach(v => setStyle(style, name, v));
|
|
9275
9369
|
}
|
|
9276
9370
|
else {
|
|
9371
|
+
if (val == null)
|
|
9372
|
+
val = '';
|
|
9277
9373
|
if (name.startsWith('--')) {
|
|
9278
9374
|
// custom property definition
|
|
9279
9375
|
style.setProperty(name, val);
|
|
@@ -9368,31 +9464,28 @@ prevChildren, parentComponent, parentSuspense, unmountChildren) {
|
|
|
9368
9464
|
}
|
|
9369
9465
|
return;
|
|
9370
9466
|
}
|
|
9467
|
+
let needRemove = false;
|
|
9371
9468
|
if (value === '' || value == null) {
|
|
9372
9469
|
const type = typeof el[key];
|
|
9373
9470
|
if (type === 'boolean') {
|
|
9374
9471
|
// e.g. <select multiple> compiles to { multiple: '' }
|
|
9375
|
-
|
|
9376
|
-
return;
|
|
9472
|
+
value = includeBooleanAttr(value);
|
|
9377
9473
|
}
|
|
9378
9474
|
else if (value == null && type === 'string') {
|
|
9379
9475
|
// e.g. <div :id="null">
|
|
9380
|
-
|
|
9381
|
-
|
|
9382
|
-
return;
|
|
9476
|
+
value = '';
|
|
9477
|
+
needRemove = true;
|
|
9383
9478
|
}
|
|
9384
9479
|
else if (type === 'number') {
|
|
9385
9480
|
// e.g. <img :width="null">
|
|
9386
9481
|
// the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error
|
|
9387
|
-
|
|
9388
|
-
|
|
9389
|
-
}
|
|
9390
|
-
catch (_a) { }
|
|
9391
|
-
el.removeAttribute(key);
|
|
9392
|
-
return;
|
|
9482
|
+
value = 0;
|
|
9483
|
+
needRemove = true;
|
|
9393
9484
|
}
|
|
9394
9485
|
}
|
|
9395
|
-
// some properties perform value validation and throw
|
|
9486
|
+
// some properties perform value validation and throw,
|
|
9487
|
+
// some properties has getter, no setter, will error in 'use strict'
|
|
9488
|
+
// eg. <select :type="null"></select> <select :willValidate="null"></select>
|
|
9396
9489
|
try {
|
|
9397
9490
|
el[key] = value;
|
|
9398
9491
|
}
|
|
@@ -9402,31 +9495,35 @@ prevChildren, parentComponent, parentSuspense, unmountChildren) {
|
|
|
9402
9495
|
`value ${value} is invalid.`, e);
|
|
9403
9496
|
}
|
|
9404
9497
|
}
|
|
9498
|
+
needRemove && el.removeAttribute(key);
|
|
9405
9499
|
}
|
|
9406
9500
|
|
|
9407
9501
|
// Async edge case fix requires storing an event listener's attach timestamp.
|
|
9408
|
-
|
|
9409
|
-
let
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
9415
|
-
|
|
9416
|
-
|
|
9417
|
-
|
|
9418
|
-
|
|
9419
|
-
|
|
9420
|
-
|
|
9421
|
-
|
|
9422
|
-
|
|
9423
|
-
|
|
9424
|
-
|
|
9425
|
-
|
|
9502
|
+
const [_getNow, skipTimestampCheck] = /*#__PURE__*/ (() => {
|
|
9503
|
+
let _getNow = Date.now;
|
|
9504
|
+
let skipTimestampCheck = false;
|
|
9505
|
+
if (typeof window !== 'undefined') {
|
|
9506
|
+
// Determine what event timestamp the browser is using. Annoyingly, the
|
|
9507
|
+
// timestamp can either be hi-res (relative to page load) or low-res
|
|
9508
|
+
// (relative to UNIX epoch), so in order to compare time we have to use the
|
|
9509
|
+
// same timestamp type when saving the flush timestamp.
|
|
9510
|
+
if (Date.now() > document.createEvent('Event').timeStamp) {
|
|
9511
|
+
// if the low-res timestamp which is bigger than the event timestamp
|
|
9512
|
+
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
|
|
9513
|
+
// and we need to use the hi-res version for event listeners as well.
|
|
9514
|
+
_getNow = () => performance.now();
|
|
9515
|
+
}
|
|
9516
|
+
// #3485: Firefox <= 53 has incorrect Event.timeStamp implementation
|
|
9517
|
+
// and does not fire microtasks in between event propagation, so safe to exclude.
|
|
9518
|
+
const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i);
|
|
9519
|
+
skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53);
|
|
9520
|
+
}
|
|
9521
|
+
return [_getNow, skipTimestampCheck];
|
|
9522
|
+
})();
|
|
9426
9523
|
// To avoid the overhead of repeatedly calling performance.now(), we cache
|
|
9427
9524
|
// and use the same timestamp for all event listeners attached in the same tick.
|
|
9428
9525
|
let cachedNow = 0;
|
|
9429
|
-
const p = Promise.resolve();
|
|
9526
|
+
const p = /*#__PURE__*/ Promise.resolve();
|
|
9430
9527
|
const reset = () => {
|
|
9431
9528
|
cachedNow = 0;
|
|
9432
9529
|
};
|
|
@@ -9551,13 +9648,13 @@ function shouldSetAsProp(el, key, value, isSVG) {
|
|
|
9551
9648
|
}
|
|
9552
9649
|
return false;
|
|
9553
9650
|
}
|
|
9554
|
-
//
|
|
9555
|
-
//
|
|
9556
|
-
//
|
|
9557
|
-
//
|
|
9651
|
+
// these are enumerated attrs, however their corresponding DOM properties
|
|
9652
|
+
// are actually booleans - this leads to setting it with a string "false"
|
|
9653
|
+
// value leading it to be coerced to `true`, so we need to always treat
|
|
9654
|
+
// them as attributes.
|
|
9558
9655
|
// Note that `contentEditable` doesn't have this problem: its DOM
|
|
9559
9656
|
// property is also enumerated string values.
|
|
9560
|
-
if (key === 'spellcheck' || key === 'draggable') {
|
|
9657
|
+
if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {
|
|
9561
9658
|
return false;
|
|
9562
9659
|
}
|
|
9563
9660
|
// #1787, #2840 form property on form elements is readonly and must be set as
|
|
@@ -10624,7 +10721,7 @@ function setDisplay(el, value) {
|
|
|
10624
10721
|
el.style.display = value ? el._vod : 'none';
|
|
10625
10722
|
}
|
|
10626
10723
|
|
|
10627
|
-
const rendererOptions = extend({ patchProp }, nodeOps);
|
|
10724
|
+
const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);
|
|
10628
10725
|
// lazy create the renderer - this makes core renderer logic tree-shakable
|
|
10629
10726
|
// in case the user only imports reactivity utilities from Vue.
|
|
10630
10727
|
let renderer;
|