@vue/runtime-dom 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/runtime-dom.cjs.js +41 -38
- package/dist/runtime-dom.cjs.prod.js +41 -38
- package/dist/runtime-dom.esm-browser.js +166 -69
- package/dist/runtime-dom.esm-browser.prod.js +1 -1
- package/dist/runtime-dom.esm-bundler.js +41 -38
- package/dist/runtime-dom.global.js +166 -69
- package/dist/runtime-dom.global.prod.js +1 -1
- package/package.json +3 -3
|
@@ -351,8 +351,17 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
351
351
|
let activeEffectScope;
|
|
352
352
|
class EffectScope {
|
|
353
353
|
constructor(detached = false) {
|
|
354
|
+
/**
|
|
355
|
+
* @internal
|
|
356
|
+
*/
|
|
354
357
|
this.active = true;
|
|
358
|
+
/**
|
|
359
|
+
* @internal
|
|
360
|
+
*/
|
|
355
361
|
this.effects = [];
|
|
362
|
+
/**
|
|
363
|
+
* @internal
|
|
364
|
+
*/
|
|
356
365
|
this.cleanups = [];
|
|
357
366
|
if (!detached && activeEffectScope) {
|
|
358
367
|
this.parent = activeEffectScope;
|
|
@@ -362,21 +371,30 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
362
371
|
}
|
|
363
372
|
run(fn) {
|
|
364
373
|
if (this.active) {
|
|
374
|
+
const currentEffectScope = activeEffectScope;
|
|
365
375
|
try {
|
|
366
376
|
activeEffectScope = this;
|
|
367
377
|
return fn();
|
|
368
378
|
}
|
|
369
379
|
finally {
|
|
370
|
-
activeEffectScope =
|
|
380
|
+
activeEffectScope = currentEffectScope;
|
|
371
381
|
}
|
|
372
382
|
}
|
|
373
383
|
else {
|
|
374
384
|
warn(`cannot run an inactive effect scope.`);
|
|
375
385
|
}
|
|
376
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* This should only be called on non-detached scopes
|
|
389
|
+
* @internal
|
|
390
|
+
*/
|
|
377
391
|
on() {
|
|
378
392
|
activeEffectScope = this;
|
|
379
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* This should only be called on non-detached scopes
|
|
396
|
+
* @internal
|
|
397
|
+
*/
|
|
380
398
|
off() {
|
|
381
399
|
activeEffectScope = this.parent;
|
|
382
400
|
}
|
|
@@ -518,10 +536,17 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
518
536
|
activeEffect = this.parent;
|
|
519
537
|
shouldTrack = lastShouldTrack;
|
|
520
538
|
this.parent = undefined;
|
|
539
|
+
if (this.deferStop) {
|
|
540
|
+
this.stop();
|
|
541
|
+
}
|
|
521
542
|
}
|
|
522
543
|
}
|
|
523
544
|
stop() {
|
|
524
|
-
|
|
545
|
+
// stopped while running itself - defer the cleanup
|
|
546
|
+
if (activeEffect === this) {
|
|
547
|
+
this.deferStop = true;
|
|
548
|
+
}
|
|
549
|
+
else if (this.active) {
|
|
525
550
|
cleanupEffect(this);
|
|
526
551
|
if (this.onStop) {
|
|
527
552
|
this.onStop();
|
|
@@ -600,9 +625,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
600
625
|
dep.add(activeEffect);
|
|
601
626
|
activeEffect.deps.push(dep);
|
|
602
627
|
if (activeEffect.onTrack) {
|
|
603
|
-
activeEffect.onTrack(Object.assign({
|
|
604
|
-
effect: activeEffect
|
|
605
|
-
}, debuggerEventExtraInfo));
|
|
628
|
+
activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));
|
|
606
629
|
}
|
|
607
630
|
}
|
|
608
631
|
}
|
|
@@ -698,7 +721,9 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
698
721
|
}
|
|
699
722
|
|
|
700
723
|
const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);
|
|
701
|
-
const builtInSymbols = new Set(
|
|
724
|
+
const builtInSymbols = new Set(
|
|
725
|
+
/*#__PURE__*/
|
|
726
|
+
Object.getOwnPropertyNames(Symbol)
|
|
702
727
|
.map(key => Symbol[key])
|
|
703
728
|
.filter(isSymbol));
|
|
704
729
|
const get = /*#__PURE__*/ createGetter();
|
|
@@ -850,13 +875,13 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
850
875
|
get: readonlyGet,
|
|
851
876
|
set(target, key) {
|
|
852
877
|
{
|
|
853
|
-
|
|
878
|
+
warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
|
|
854
879
|
}
|
|
855
880
|
return true;
|
|
856
881
|
},
|
|
857
882
|
deleteProperty(target, key) {
|
|
858
883
|
{
|
|
859
|
-
|
|
884
|
+
warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
|
|
860
885
|
}
|
|
861
886
|
return true;
|
|
862
887
|
}
|
|
@@ -1684,7 +1709,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
1684
1709
|
const pendingPostFlushCbs = [];
|
|
1685
1710
|
let activePostFlushCbs = null;
|
|
1686
1711
|
let postFlushIndex = 0;
|
|
1687
|
-
const resolvedPromise = Promise.resolve();
|
|
1712
|
+
const resolvedPromise = /*#__PURE__*/ Promise.resolve();
|
|
1688
1713
|
let currentFlushPromise = null;
|
|
1689
1714
|
let currentPreFlushParentJob = null;
|
|
1690
1715
|
const RECURSION_LIMIT = 100;
|
|
@@ -2099,6 +2124,8 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
2099
2124
|
}
|
|
2100
2125
|
|
|
2101
2126
|
function emit$1(instance, event, ...rawArgs) {
|
|
2127
|
+
if (instance.isUnmounted)
|
|
2128
|
+
return;
|
|
2102
2129
|
const props = instance.vnode.props || EMPTY_OBJ;
|
|
2103
2130
|
{
|
|
2104
2131
|
const { emitsOptions, propsOptions: [propsOptions] } = instance;
|
|
@@ -3086,12 +3113,10 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
3086
3113
|
return doWatch(effect, null, options);
|
|
3087
3114
|
}
|
|
3088
3115
|
function watchPostEffect(effect, options) {
|
|
3089
|
-
return doWatch(effect, null, (Object.assign(
|
|
3090
|
-
));
|
|
3116
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) ));
|
|
3091
3117
|
}
|
|
3092
3118
|
function watchSyncEffect(effect, options) {
|
|
3093
|
-
return doWatch(effect, null, (Object.assign(
|
|
3094
|
-
));
|
|
3119
|
+
return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) ));
|
|
3095
3120
|
}
|
|
3096
3121
|
// initial value for watchers to trigger on undefined initial values
|
|
3097
3122
|
const INITIAL_WATCHER_VALUE = {};
|
|
@@ -3377,10 +3402,22 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
3377
3402
|
if (!children || !children.length) {
|
|
3378
3403
|
return;
|
|
3379
3404
|
}
|
|
3380
|
-
|
|
3405
|
+
let child = children[0];
|
|
3381
3406
|
if (children.length > 1) {
|
|
3382
|
-
|
|
3383
|
-
|
|
3407
|
+
let hasFound = false;
|
|
3408
|
+
// locate first non-comment child
|
|
3409
|
+
for (const c of children) {
|
|
3410
|
+
if (c.type !== Comment) {
|
|
3411
|
+
if (hasFound) {
|
|
3412
|
+
// warn more than one non-comment child
|
|
3413
|
+
warn$1('<transition> can only be used on a single element or component. ' +
|
|
3414
|
+
'Use <transition-group> for lists.');
|
|
3415
|
+
break;
|
|
3416
|
+
}
|
|
3417
|
+
child = c;
|
|
3418
|
+
hasFound = true;
|
|
3419
|
+
}
|
|
3420
|
+
}
|
|
3384
3421
|
}
|
|
3385
3422
|
// there's no need to track reactivity for these props so use the raw
|
|
3386
3423
|
// props for a bit better perf
|
|
@@ -3388,11 +3425,11 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
3388
3425
|
const { mode } = rawProps;
|
|
3389
3426
|
// check mode
|
|
3390
3427
|
if (mode &&
|
|
3391
|
-
mode !== 'in-out' &&
|
|
3428
|
+
mode !== 'in-out' &&
|
|
3429
|
+
mode !== 'out-in' &&
|
|
3430
|
+
mode !== 'default') {
|
|
3392
3431
|
warn$1(`invalid <transition> mode: ${mode}`);
|
|
3393
3432
|
}
|
|
3394
|
-
// at this point children has a guaranteed length of 1.
|
|
3395
|
-
const child = children[0];
|
|
3396
3433
|
if (state.isLeaving) {
|
|
3397
3434
|
return emptyPlaceholder(child);
|
|
3398
3435
|
}
|
|
@@ -3615,20 +3652,24 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
3615
3652
|
vnode.transition = hooks;
|
|
3616
3653
|
}
|
|
3617
3654
|
}
|
|
3618
|
-
function getTransitionRawChildren(children, keepComment = false) {
|
|
3655
|
+
function getTransitionRawChildren(children, keepComment = false, parentKey) {
|
|
3619
3656
|
let ret = [];
|
|
3620
3657
|
let keyedFragmentCount = 0;
|
|
3621
3658
|
for (let i = 0; i < children.length; i++) {
|
|
3622
|
-
|
|
3659
|
+
let child = children[i];
|
|
3660
|
+
// #5360 inherit parent key in case of <template v-for>
|
|
3661
|
+
const key = parentKey == null
|
|
3662
|
+
? child.key
|
|
3663
|
+
: String(parentKey) + String(child.key != null ? child.key : i);
|
|
3623
3664
|
// handle fragment children case, e.g. v-for
|
|
3624
3665
|
if (child.type === Fragment) {
|
|
3625
3666
|
if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
|
|
3626
3667
|
keyedFragmentCount++;
|
|
3627
|
-
ret = ret.concat(getTransitionRawChildren(child.children, keepComment));
|
|
3668
|
+
ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
|
|
3628
3669
|
}
|
|
3629
3670
|
// comment placeholders should be skipped, e.g. v-if
|
|
3630
3671
|
else if (keepComment || child.type !== Comment) {
|
|
3631
|
-
ret.push(child);
|
|
3672
|
+
ret.push(key != null ? cloneVNode(child, { key }) : child);
|
|
3632
3673
|
}
|
|
3633
3674
|
}
|
|
3634
3675
|
// #1126 if a transition children list contains multiple sub fragments, these
|
|
@@ -4594,6 +4635,10 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
4594
4635
|
const propsToUpdate = instance.vnode.dynamicProps;
|
|
4595
4636
|
for (let i = 0; i < propsToUpdate.length; i++) {
|
|
4596
4637
|
let key = propsToUpdate[i];
|
|
4638
|
+
// skip if the prop key is a declared emit event listener
|
|
4639
|
+
if (isEmitListener(instance.emitsOptions, key)) {
|
|
4640
|
+
continue;
|
|
4641
|
+
}
|
|
4597
4642
|
// PROPS flag guarantees rawProps to be non-null
|
|
4598
4643
|
const value = rawProps[key];
|
|
4599
4644
|
if (options) {
|
|
@@ -5118,7 +5163,8 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5118
5163
|
warn$1(`withDirectives can only be used inside render functions.`);
|
|
5119
5164
|
return vnode;
|
|
5120
5165
|
}
|
|
5121
|
-
const instance = internalInstance
|
|
5166
|
+
const instance = getExposeProxy(internalInstance) ||
|
|
5167
|
+
internalInstance.proxy;
|
|
5122
5168
|
const bindings = vnode.dirs || (vnode.dirs = []);
|
|
5123
5169
|
for (let i = 0; i < directives.length; i++) {
|
|
5124
5170
|
let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
|
|
@@ -5190,6 +5236,9 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5190
5236
|
let uid = 0;
|
|
5191
5237
|
function createAppAPI(render, hydrate) {
|
|
5192
5238
|
return function createApp(rootComponent, rootProps = null) {
|
|
5239
|
+
if (!isFunction(rootComponent)) {
|
|
5240
|
+
rootComponent = Object.assign({}, rootComponent);
|
|
5241
|
+
}
|
|
5193
5242
|
if (rootProps != null && !isObject(rootProps)) {
|
|
5194
5243
|
warn$1(`root props passed to app.mount() must be an object.`);
|
|
5195
5244
|
rootProps = null;
|
|
@@ -5386,6 +5435,9 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5386
5435
|
if (!isArray(existing)) {
|
|
5387
5436
|
if (_isString) {
|
|
5388
5437
|
refs[ref] = [refValue];
|
|
5438
|
+
if (hasOwn(setupState, ref)) {
|
|
5439
|
+
setupState[ref] = refs[ref];
|
|
5440
|
+
}
|
|
5389
5441
|
}
|
|
5390
5442
|
else {
|
|
5391
5443
|
ref.value = [refValue];
|
|
@@ -5584,7 +5636,8 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5584
5636
|
// e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
|
|
5585
5637
|
const forcePatchValue = (type === 'input' && dirs) || type === 'option';
|
|
5586
5638
|
// skip props & children if this is hoisted static nodes
|
|
5587
|
-
|
|
5639
|
+
// #5405 in dev, always hydrate children for HMR
|
|
5640
|
+
{
|
|
5588
5641
|
if (dirs) {
|
|
5589
5642
|
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
5590
5643
|
}
|
|
@@ -5757,7 +5810,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5757
5810
|
perf.mark(`vue-${type}-${instance.uid}`);
|
|
5758
5811
|
}
|
|
5759
5812
|
{
|
|
5760
|
-
devtoolsPerfStart(instance, type,
|
|
5813
|
+
devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
|
|
5761
5814
|
}
|
|
5762
5815
|
}
|
|
5763
5816
|
function endMeasure(instance, type) {
|
|
@@ -5770,7 +5823,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
5770
5823
|
perf.clearMarks(endTag);
|
|
5771
5824
|
}
|
|
5772
5825
|
{
|
|
5773
|
-
devtoolsPerfEnd(instance, type,
|
|
5826
|
+
devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
|
|
5774
5827
|
}
|
|
5775
5828
|
}
|
|
5776
5829
|
function isSupported() {
|
|
@@ -6898,7 +6951,22 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
6898
6951
|
const remove = vnode => {
|
|
6899
6952
|
const { type, el, anchor, transition } = vnode;
|
|
6900
6953
|
if (type === Fragment) {
|
|
6901
|
-
|
|
6954
|
+
if (vnode.patchFlag > 0 &&
|
|
6955
|
+
vnode.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */ &&
|
|
6956
|
+
transition &&
|
|
6957
|
+
!transition.persisted) {
|
|
6958
|
+
vnode.children.forEach(child => {
|
|
6959
|
+
if (child.type === Comment) {
|
|
6960
|
+
hostRemove(child.el);
|
|
6961
|
+
}
|
|
6962
|
+
else {
|
|
6963
|
+
remove(child);
|
|
6964
|
+
}
|
|
6965
|
+
});
|
|
6966
|
+
}
|
|
6967
|
+
else {
|
|
6968
|
+
removeFragment(el, anchor);
|
|
6969
|
+
}
|
|
6902
6970
|
return;
|
|
6903
6971
|
}
|
|
6904
6972
|
if (type === Static) {
|
|
@@ -7917,7 +7985,10 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
7917
7985
|
// this is not a user-facing function, so the fallback is always generated by
|
|
7918
7986
|
// the compiler and guaranteed to be a function returning an array
|
|
7919
7987
|
fallback, noSlotted) {
|
|
7920
|
-
if (currentRenderingInstance.isCE
|
|
7988
|
+
if (currentRenderingInstance.isCE ||
|
|
7989
|
+
(currentRenderingInstance.parent &&
|
|
7990
|
+
isAsyncWrapper(currentRenderingInstance.parent) &&
|
|
7991
|
+
currentRenderingInstance.parent.isCE)) {
|
|
7921
7992
|
return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback());
|
|
7922
7993
|
}
|
|
7923
7994
|
let slot = slots[name];
|
|
@@ -7990,7 +8061,10 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
7990
8061
|
return getExposeProxy(i) || i.proxy;
|
|
7991
8062
|
return getPublicInstance(i.parent);
|
|
7992
8063
|
};
|
|
7993
|
-
const publicPropertiesMap =
|
|
8064
|
+
const publicPropertiesMap =
|
|
8065
|
+
// Move PURE marker to new line to workaround compiler discarding it
|
|
8066
|
+
// due to type annotation
|
|
8067
|
+
/*#__PURE__*/ extend(Object.create(null), {
|
|
7994
8068
|
$: i => i,
|
|
7995
8069
|
$el: i => i.vnode.el,
|
|
7996
8070
|
$data: i => i.data,
|
|
@@ -8118,9 +8192,11 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
8118
8192
|
const { data, setupState, ctx } = instance;
|
|
8119
8193
|
if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
|
|
8120
8194
|
setupState[key] = value;
|
|
8195
|
+
return true;
|
|
8121
8196
|
}
|
|
8122
8197
|
else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
8123
8198
|
data[key] = value;
|
|
8199
|
+
return true;
|
|
8124
8200
|
}
|
|
8125
8201
|
else if (hasOwn(instance.props, key)) {
|
|
8126
8202
|
warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
|
|
@@ -8154,6 +8230,16 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
8154
8230
|
hasOwn(ctx, key) ||
|
|
8155
8231
|
hasOwn(publicPropertiesMap, key) ||
|
|
8156
8232
|
hasOwn(appContext.config.globalProperties, key));
|
|
8233
|
+
},
|
|
8234
|
+
defineProperty(target, key, descriptor) {
|
|
8235
|
+
if (descriptor.get != null) {
|
|
8236
|
+
// invalidate key cache of a getter based property #5417
|
|
8237
|
+
target._.accessCache[key] = 0;
|
|
8238
|
+
}
|
|
8239
|
+
else if (hasOwn(descriptor, 'value')) {
|
|
8240
|
+
this.set(target, key, descriptor.value, null);
|
|
8241
|
+
}
|
|
8242
|
+
return Reflect.defineProperty(target, key, descriptor);
|
|
8157
8243
|
}
|
|
8158
8244
|
};
|
|
8159
8245
|
{
|
|
@@ -8356,6 +8442,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
8356
8442
|
return setupResult;
|
|
8357
8443
|
}
|
|
8358
8444
|
function setupStatefulComponent(instance, isSSR) {
|
|
8445
|
+
var _a;
|
|
8359
8446
|
const Component = instance.type;
|
|
8360
8447
|
{
|
|
8361
8448
|
if (Component.name) {
|
|
@@ -8413,6 +8500,13 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
8413
8500
|
// async setup returned Promise.
|
|
8414
8501
|
// bail here and wait for re-entry.
|
|
8415
8502
|
instance.asyncDep = setupResult;
|
|
8503
|
+
if (!instance.suspense) {
|
|
8504
|
+
const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';
|
|
8505
|
+
warn$1(`Component <${name}>: setup function returned a promise, but no ` +
|
|
8506
|
+
`<Suspense> boundary was found in the parent component tree. ` +
|
|
8507
|
+
`A component with async setup() must be nested in a <Suspense> ` +
|
|
8508
|
+
`in order to be rendered.`);
|
|
8509
|
+
}
|
|
8416
8510
|
}
|
|
8417
8511
|
}
|
|
8418
8512
|
else {
|
|
@@ -9024,7 +9118,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9024
9118
|
}
|
|
9025
9119
|
|
|
9026
9120
|
// Core API ------------------------------------------------------------------
|
|
9027
|
-
const version = "3.2.
|
|
9121
|
+
const version = "3.2.33";
|
|
9028
9122
|
/**
|
|
9029
9123
|
* SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
|
|
9030
9124
|
* @internal
|
|
@@ -9041,7 +9135,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9041
9135
|
|
|
9042
9136
|
const svgNS = 'http://www.w3.org/2000/svg';
|
|
9043
9137
|
const doc = (typeof document !== 'undefined' ? document : null);
|
|
9044
|
-
const templateContainer = doc && doc.createElement('template');
|
|
9138
|
+
const templateContainer = doc && /*#__PURE__*/ doc.createElement('template');
|
|
9045
9139
|
const nodeOps = {
|
|
9046
9140
|
insert: (child, parent, anchor) => {
|
|
9047
9141
|
parent.insertBefore(child, anchor || null);
|
|
@@ -9192,6 +9286,8 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9192
9286
|
val.forEach(v => setStyle(style, name, v));
|
|
9193
9287
|
}
|
|
9194
9288
|
else {
|
|
9289
|
+
if (val == null)
|
|
9290
|
+
val = '';
|
|
9195
9291
|
if (name.startsWith('--')) {
|
|
9196
9292
|
// custom property definition
|
|
9197
9293
|
style.setProperty(name, val);
|
|
@@ -9286,31 +9382,28 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9286
9382
|
}
|
|
9287
9383
|
return;
|
|
9288
9384
|
}
|
|
9385
|
+
let needRemove = false;
|
|
9289
9386
|
if (value === '' || value == null) {
|
|
9290
9387
|
const type = typeof el[key];
|
|
9291
9388
|
if (type === 'boolean') {
|
|
9292
9389
|
// e.g. <select multiple> compiles to { multiple: '' }
|
|
9293
|
-
|
|
9294
|
-
return;
|
|
9390
|
+
value = includeBooleanAttr(value);
|
|
9295
9391
|
}
|
|
9296
9392
|
else if (value == null && type === 'string') {
|
|
9297
9393
|
// e.g. <div :id="null">
|
|
9298
|
-
|
|
9299
|
-
|
|
9300
|
-
return;
|
|
9394
|
+
value = '';
|
|
9395
|
+
needRemove = true;
|
|
9301
9396
|
}
|
|
9302
9397
|
else if (type === 'number') {
|
|
9303
9398
|
// e.g. <img :width="null">
|
|
9304
9399
|
// the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
}
|
|
9308
|
-
catch (_a) { }
|
|
9309
|
-
el.removeAttribute(key);
|
|
9310
|
-
return;
|
|
9400
|
+
value = 0;
|
|
9401
|
+
needRemove = true;
|
|
9311
9402
|
}
|
|
9312
9403
|
}
|
|
9313
|
-
// some properties perform value validation and throw
|
|
9404
|
+
// some properties perform value validation and throw,
|
|
9405
|
+
// some properties has getter, no setter, will error in 'use strict'
|
|
9406
|
+
// eg. <select :type="null"></select> <select :willValidate="null"></select>
|
|
9314
9407
|
try {
|
|
9315
9408
|
el[key] = value;
|
|
9316
9409
|
}
|
|
@@ -9320,31 +9413,35 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9320
9413
|
`value ${value} is invalid.`, e);
|
|
9321
9414
|
}
|
|
9322
9415
|
}
|
|
9416
|
+
needRemove && el.removeAttribute(key);
|
|
9323
9417
|
}
|
|
9324
9418
|
|
|
9325
9419
|
// Async edge case fix requires storing an event listener's attach timestamp.
|
|
9326
|
-
|
|
9327
|
-
|
|
9328
|
-
|
|
9329
|
-
|
|
9330
|
-
|
|
9331
|
-
|
|
9332
|
-
|
|
9333
|
-
|
|
9334
|
-
|
|
9335
|
-
|
|
9336
|
-
|
|
9337
|
-
|
|
9338
|
-
|
|
9339
|
-
|
|
9340
|
-
|
|
9341
|
-
|
|
9342
|
-
|
|
9343
|
-
|
|
9420
|
+
const [_getNow, skipTimestampCheck] = /*#__PURE__*/ (() => {
|
|
9421
|
+
let _getNow = Date.now;
|
|
9422
|
+
let skipTimestampCheck = false;
|
|
9423
|
+
if (typeof window !== 'undefined') {
|
|
9424
|
+
// Determine what event timestamp the browser is using. Annoyingly, the
|
|
9425
|
+
// timestamp can either be hi-res (relative to page load) or low-res
|
|
9426
|
+
// (relative to UNIX epoch), so in order to compare time we have to use the
|
|
9427
|
+
// same timestamp type when saving the flush timestamp.
|
|
9428
|
+
if (Date.now() > document.createEvent('Event').timeStamp) {
|
|
9429
|
+
// if the low-res timestamp which is bigger than the event timestamp
|
|
9430
|
+
// (which is evaluated AFTER) it means the event is using a hi-res timestamp,
|
|
9431
|
+
// and we need to use the hi-res version for event listeners as well.
|
|
9432
|
+
_getNow = () => performance.now();
|
|
9433
|
+
}
|
|
9434
|
+
// #3485: Firefox <= 53 has incorrect Event.timeStamp implementation
|
|
9435
|
+
// and does not fire microtasks in between event propagation, so safe to exclude.
|
|
9436
|
+
const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i);
|
|
9437
|
+
skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53);
|
|
9438
|
+
}
|
|
9439
|
+
return [_getNow, skipTimestampCheck];
|
|
9440
|
+
})();
|
|
9344
9441
|
// To avoid the overhead of repeatedly calling performance.now(), we cache
|
|
9345
9442
|
// and use the same timestamp for all event listeners attached in the same tick.
|
|
9346
9443
|
let cachedNow = 0;
|
|
9347
|
-
const p = Promise.resolve();
|
|
9444
|
+
const p = /*#__PURE__*/ Promise.resolve();
|
|
9348
9445
|
const reset = () => {
|
|
9349
9446
|
cachedNow = 0;
|
|
9350
9447
|
};
|
|
@@ -9469,13 +9566,13 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
9469
9566
|
}
|
|
9470
9567
|
return false;
|
|
9471
9568
|
}
|
|
9472
|
-
//
|
|
9473
|
-
//
|
|
9474
|
-
//
|
|
9475
|
-
//
|
|
9569
|
+
// these are enumerated attrs, however their corresponding DOM properties
|
|
9570
|
+
// are actually booleans - this leads to setting it with a string "false"
|
|
9571
|
+
// value leading it to be coerced to `true`, so we need to always treat
|
|
9572
|
+
// them as attributes.
|
|
9476
9573
|
// Note that `contentEditable` doesn't have this problem: its DOM
|
|
9477
9574
|
// property is also enumerated string values.
|
|
9478
|
-
if (key === 'spellcheck' || key === 'draggable') {
|
|
9575
|
+
if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {
|
|
9479
9576
|
return false;
|
|
9480
9577
|
}
|
|
9481
9578
|
// #1787, #2840 form property on form elements is readonly and must be set as
|
|
@@ -10530,7 +10627,7 @@ var VueRuntimeDOM = (function (exports) {
|
|
|
10530
10627
|
el.style.display = value ? el._vod : 'none';
|
|
10531
10628
|
}
|
|
10532
10629
|
|
|
10533
|
-
const rendererOptions = extend({ patchProp }, nodeOps);
|
|
10630
|
+
const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);
|
|
10534
10631
|
// lazy create the renderer - this makes core renderer logic tree-shakable
|
|
10535
10632
|
// in case the user only imports reactivity utilities from Vue.
|
|
10536
10633
|
let renderer;
|