@vue/runtime-dom 3.3.6 → 3.4.0-alpha.1
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.
|
@@ -354,117 +354,120 @@ function onScopeDispose(fn) {
|
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
const createDep = (effects) => {
|
|
358
|
-
const dep = new Set(effects);
|
|
359
|
-
dep.w = 0;
|
|
360
|
-
dep.n = 0;
|
|
361
|
-
return dep;
|
|
362
|
-
};
|
|
363
|
-
const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
|
|
364
|
-
const newTracked = (dep) => (dep.n & trackOpBit) > 0;
|
|
365
|
-
const initDepMarkers = ({ deps }) => {
|
|
366
|
-
if (deps.length) {
|
|
367
|
-
for (let i = 0; i < deps.length; i++) {
|
|
368
|
-
deps[i].w |= trackOpBit;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
};
|
|
372
|
-
const finalizeDepMarkers = (effect) => {
|
|
373
|
-
const { deps } = effect;
|
|
374
|
-
if (deps.length) {
|
|
375
|
-
let ptr = 0;
|
|
376
|
-
for (let i = 0; i < deps.length; i++) {
|
|
377
|
-
const dep = deps[i];
|
|
378
|
-
if (wasTracked(dep) && !newTracked(dep)) {
|
|
379
|
-
dep.delete(effect);
|
|
380
|
-
} else {
|
|
381
|
-
deps[ptr++] = dep;
|
|
382
|
-
}
|
|
383
|
-
dep.w &= ~trackOpBit;
|
|
384
|
-
dep.n &= ~trackOpBit;
|
|
385
|
-
}
|
|
386
|
-
deps.length = ptr;
|
|
387
|
-
}
|
|
388
|
-
};
|
|
389
|
-
|
|
390
|
-
const targetMap = /* @__PURE__ */ new WeakMap();
|
|
391
|
-
let effectTrackDepth = 0;
|
|
392
|
-
let trackOpBit = 1;
|
|
393
|
-
const maxMarkerBits = 30;
|
|
394
357
|
let activeEffect;
|
|
395
|
-
const ITERATE_KEY = Symbol("iterate" );
|
|
396
|
-
const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" );
|
|
397
358
|
class ReactiveEffect {
|
|
398
|
-
constructor(fn, scheduler
|
|
359
|
+
constructor(fn, trigger, scheduler, scope) {
|
|
399
360
|
this.fn = fn;
|
|
361
|
+
this.trigger = trigger;
|
|
400
362
|
this.scheduler = scheduler;
|
|
401
363
|
this.active = true;
|
|
402
364
|
this.deps = [];
|
|
403
|
-
|
|
365
|
+
/**
|
|
366
|
+
* @internal
|
|
367
|
+
*/
|
|
368
|
+
this._dirtyLevel = 3;
|
|
369
|
+
/**
|
|
370
|
+
* @internal
|
|
371
|
+
*/
|
|
372
|
+
this._trackId = 0;
|
|
373
|
+
/**
|
|
374
|
+
* @internal
|
|
375
|
+
*/
|
|
376
|
+
this._runnings = 0;
|
|
377
|
+
/**
|
|
378
|
+
* @internal
|
|
379
|
+
*/
|
|
380
|
+
this._queryings = 0;
|
|
381
|
+
/**
|
|
382
|
+
* @internal
|
|
383
|
+
*/
|
|
384
|
+
this._depsLength = 0;
|
|
404
385
|
recordEffectScope(this, scope);
|
|
405
386
|
}
|
|
387
|
+
get dirty() {
|
|
388
|
+
if (this._dirtyLevel === 1) {
|
|
389
|
+
this._dirtyLevel = 0;
|
|
390
|
+
this._queryings++;
|
|
391
|
+
pauseTracking();
|
|
392
|
+
for (const dep of this.deps) {
|
|
393
|
+
if (dep.computed) {
|
|
394
|
+
triggerComputed(dep.computed);
|
|
395
|
+
if (this._dirtyLevel >= 2) {
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
resetTracking();
|
|
401
|
+
this._queryings--;
|
|
402
|
+
}
|
|
403
|
+
return this._dirtyLevel >= 2;
|
|
404
|
+
}
|
|
405
|
+
set dirty(v) {
|
|
406
|
+
this._dirtyLevel = v ? 3 : 0;
|
|
407
|
+
}
|
|
406
408
|
run() {
|
|
409
|
+
this._dirtyLevel = 0;
|
|
407
410
|
if (!this.active) {
|
|
408
411
|
return this.fn();
|
|
409
412
|
}
|
|
410
|
-
let parent = activeEffect;
|
|
411
413
|
let lastShouldTrack = shouldTrack;
|
|
412
|
-
|
|
413
|
-
if (parent === this) {
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
parent = parent.parent;
|
|
417
|
-
}
|
|
414
|
+
let lastEffect = activeEffect;
|
|
418
415
|
try {
|
|
419
|
-
this.parent = activeEffect;
|
|
420
|
-
activeEffect = this;
|
|
421
416
|
shouldTrack = true;
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
} else {
|
|
426
|
-
cleanupEffect(this);
|
|
427
|
-
}
|
|
417
|
+
activeEffect = this;
|
|
418
|
+
this._runnings++;
|
|
419
|
+
preCleanupEffect(this);
|
|
428
420
|
return this.fn();
|
|
429
421
|
} finally {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
trackOpBit = 1 << --effectTrackDepth;
|
|
434
|
-
activeEffect = this.parent;
|
|
422
|
+
postCleanupEffect(this);
|
|
423
|
+
this._runnings--;
|
|
424
|
+
activeEffect = lastEffect;
|
|
435
425
|
shouldTrack = lastShouldTrack;
|
|
436
|
-
this.parent = void 0;
|
|
437
|
-
if (this.deferStop) {
|
|
438
|
-
this.stop();
|
|
439
|
-
}
|
|
440
426
|
}
|
|
441
427
|
}
|
|
442
428
|
stop() {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
this.onStop();
|
|
449
|
-
}
|
|
429
|
+
var _a;
|
|
430
|
+
if (this.active) {
|
|
431
|
+
preCleanupEffect(this);
|
|
432
|
+
postCleanupEffect(this);
|
|
433
|
+
(_a = this.onStop) == null ? void 0 : _a.call(this);
|
|
450
434
|
this.active = false;
|
|
451
435
|
}
|
|
452
436
|
}
|
|
453
437
|
}
|
|
454
|
-
function
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
438
|
+
function triggerComputed(computed) {
|
|
439
|
+
return computed.value;
|
|
440
|
+
}
|
|
441
|
+
function preCleanupEffect(effect2) {
|
|
442
|
+
effect2._trackId++;
|
|
443
|
+
effect2._depsLength = 0;
|
|
444
|
+
}
|
|
445
|
+
function postCleanupEffect(effect2) {
|
|
446
|
+
if (effect2.deps && effect2.deps.length > effect2._depsLength) {
|
|
447
|
+
for (let i = effect2._depsLength; i < effect2.deps.length; i++) {
|
|
448
|
+
cleanupDepEffect(effect2.deps[i], effect2);
|
|
449
|
+
}
|
|
450
|
+
effect2.deps.length = effect2._depsLength;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function cleanupDepEffect(dep, effect2) {
|
|
454
|
+
const trackId = dep.get(effect2);
|
|
455
|
+
if (trackId !== void 0 && effect2._trackId !== trackId) {
|
|
456
|
+
dep.delete(effect2);
|
|
457
|
+
if (dep.size === 0) {
|
|
458
|
+
dep.cleanup();
|
|
459
459
|
}
|
|
460
|
-
deps.length = 0;
|
|
461
460
|
}
|
|
462
461
|
}
|
|
463
462
|
function effect(fn, options) {
|
|
464
463
|
if (fn.effect instanceof ReactiveEffect) {
|
|
465
464
|
fn = fn.effect.fn;
|
|
466
465
|
}
|
|
467
|
-
const _effect = new ReactiveEffect(fn)
|
|
466
|
+
const _effect = new ReactiveEffect(fn, NOOP, () => {
|
|
467
|
+
if (_effect.dirty) {
|
|
468
|
+
_effect.run();
|
|
469
|
+
}
|
|
470
|
+
});
|
|
468
471
|
if (options) {
|
|
469
472
|
extend(_effect, options);
|
|
470
473
|
if (options.scope)
|
|
@@ -481,6 +484,7 @@ function stop(runner) {
|
|
|
481
484
|
runner.effect.stop();
|
|
482
485
|
}
|
|
483
486
|
let shouldTrack = true;
|
|
487
|
+
let pauseScheduleStack = 0;
|
|
484
488
|
const trackStack = [];
|
|
485
489
|
function pauseTracking() {
|
|
486
490
|
trackStack.push(shouldTrack);
|
|
@@ -490,6 +494,68 @@ function resetTracking() {
|
|
|
490
494
|
const last = trackStack.pop();
|
|
491
495
|
shouldTrack = last === void 0 ? true : last;
|
|
492
496
|
}
|
|
497
|
+
function pauseScheduling() {
|
|
498
|
+
pauseScheduleStack++;
|
|
499
|
+
}
|
|
500
|
+
function resetScheduling() {
|
|
501
|
+
pauseScheduleStack--;
|
|
502
|
+
while (!pauseScheduleStack && queueEffectSchedulers.length) {
|
|
503
|
+
queueEffectSchedulers.shift()();
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
function trackEffect(effect2, dep, debuggerEventExtraInfo) {
|
|
507
|
+
var _a;
|
|
508
|
+
if (dep.get(effect2) !== effect2._trackId) {
|
|
509
|
+
dep.set(effect2, effect2._trackId);
|
|
510
|
+
const oldDep = effect2.deps[effect2._depsLength];
|
|
511
|
+
if (oldDep !== dep) {
|
|
512
|
+
if (oldDep) {
|
|
513
|
+
cleanupDepEffect(oldDep, effect2);
|
|
514
|
+
}
|
|
515
|
+
effect2.deps[effect2._depsLength++] = dep;
|
|
516
|
+
} else {
|
|
517
|
+
effect2._depsLength++;
|
|
518
|
+
}
|
|
519
|
+
{
|
|
520
|
+
(_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
const queueEffectSchedulers = [];
|
|
525
|
+
function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
|
|
526
|
+
var _a;
|
|
527
|
+
pauseScheduling();
|
|
528
|
+
for (const effect2 of dep.keys()) {
|
|
529
|
+
if (!effect2.allowRecurse && effect2._runnings) {
|
|
530
|
+
continue;
|
|
531
|
+
}
|
|
532
|
+
if (effect2._dirtyLevel < dirtyLevel && (!effect2._runnings || dirtyLevel !== 2)) {
|
|
533
|
+
const lastDirtyLevel = effect2._dirtyLevel;
|
|
534
|
+
effect2._dirtyLevel = dirtyLevel;
|
|
535
|
+
if (lastDirtyLevel === 0 && (!effect2._queryings || dirtyLevel !== 2)) {
|
|
536
|
+
{
|
|
537
|
+
(_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));
|
|
538
|
+
}
|
|
539
|
+
effect2.trigger();
|
|
540
|
+
if (effect2.scheduler) {
|
|
541
|
+
queueEffectSchedulers.push(effect2.scheduler);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
resetScheduling();
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
const createDep = (cleanup, computed) => {
|
|
550
|
+
const dep = /* @__PURE__ */ new Map();
|
|
551
|
+
dep.cleanup = cleanup;
|
|
552
|
+
dep.computed = computed;
|
|
553
|
+
return dep;
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
const targetMap = /* @__PURE__ */ new WeakMap();
|
|
557
|
+
const ITERATE_KEY = Symbol("iterate" );
|
|
558
|
+
const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" );
|
|
493
559
|
function track(target, type, key) {
|
|
494
560
|
if (shouldTrack && activeEffect) {
|
|
495
561
|
let depsMap = targetMap.get(target);
|
|
@@ -498,35 +564,17 @@ function track(target, type, key) {
|
|
|
498
564
|
}
|
|
499
565
|
let dep = depsMap.get(key);
|
|
500
566
|
if (!dep) {
|
|
501
|
-
depsMap.set(key, dep = createDep());
|
|
502
|
-
}
|
|
503
|
-
const eventInfo = { effect: activeEffect, target, type, key } ;
|
|
504
|
-
trackEffects(dep, eventInfo);
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
function trackEffects(dep, debuggerEventExtraInfo) {
|
|
508
|
-
let shouldTrack2 = false;
|
|
509
|
-
if (effectTrackDepth <= maxMarkerBits) {
|
|
510
|
-
if (!newTracked(dep)) {
|
|
511
|
-
dep.n |= trackOpBit;
|
|
512
|
-
shouldTrack2 = !wasTracked(dep);
|
|
513
|
-
}
|
|
514
|
-
} else {
|
|
515
|
-
shouldTrack2 = !dep.has(activeEffect);
|
|
516
|
-
}
|
|
517
|
-
if (shouldTrack2) {
|
|
518
|
-
dep.add(activeEffect);
|
|
519
|
-
activeEffect.deps.push(dep);
|
|
520
|
-
if (activeEffect.onTrack) {
|
|
521
|
-
activeEffect.onTrack(
|
|
522
|
-
extend(
|
|
523
|
-
{
|
|
524
|
-
effect: activeEffect
|
|
525
|
-
},
|
|
526
|
-
debuggerEventExtraInfo
|
|
527
|
-
)
|
|
528
|
-
);
|
|
567
|
+
depsMap.set(key, dep = createDep(() => depsMap.delete(key)));
|
|
529
568
|
}
|
|
569
|
+
trackEffect(
|
|
570
|
+
activeEffect,
|
|
571
|
+
dep,
|
|
572
|
+
{
|
|
573
|
+
target,
|
|
574
|
+
type,
|
|
575
|
+
key
|
|
576
|
+
}
|
|
577
|
+
);
|
|
530
578
|
}
|
|
531
579
|
}
|
|
532
580
|
function trigger(target, type, key, newValue, oldValue, oldTarget) {
|
|
@@ -540,7 +588,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
|
|
|
540
588
|
} else if (key === "length" && isArray(target)) {
|
|
541
589
|
const newLength = Number(newValue);
|
|
542
590
|
depsMap.forEach((dep, key2) => {
|
|
543
|
-
if (key2 === "length" || key2 >= newLength) {
|
|
591
|
+
if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) {
|
|
544
592
|
deps.push(dep);
|
|
545
593
|
}
|
|
546
594
|
});
|
|
@@ -574,49 +622,24 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
|
|
|
574
622
|
break;
|
|
575
623
|
}
|
|
576
624
|
}
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
if (
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
triggerEffects(createDep(effects), eventInfo);
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
function triggerEffects(dep, debuggerEventExtraInfo) {
|
|
597
|
-
const effects = isArray(dep) ? dep : [...dep];
|
|
598
|
-
for (const effect2 of effects) {
|
|
599
|
-
if (effect2.computed) {
|
|
600
|
-
triggerEffect(effect2, debuggerEventExtraInfo);
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
for (const effect2 of effects) {
|
|
604
|
-
if (!effect2.computed) {
|
|
605
|
-
triggerEffect(effect2, debuggerEventExtraInfo);
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
function triggerEffect(effect2, debuggerEventExtraInfo) {
|
|
610
|
-
if (effect2 !== activeEffect || effect2.allowRecurse) {
|
|
611
|
-
if (effect2.onTrigger) {
|
|
612
|
-
effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo));
|
|
613
|
-
}
|
|
614
|
-
if (effect2.scheduler) {
|
|
615
|
-
effect2.scheduler();
|
|
616
|
-
} else {
|
|
617
|
-
effect2.run();
|
|
625
|
+
pauseScheduling();
|
|
626
|
+
for (const dep of deps) {
|
|
627
|
+
if (dep) {
|
|
628
|
+
triggerEffects(
|
|
629
|
+
dep,
|
|
630
|
+
3,
|
|
631
|
+
{
|
|
632
|
+
target,
|
|
633
|
+
type,
|
|
634
|
+
key,
|
|
635
|
+
newValue,
|
|
636
|
+
oldValue,
|
|
637
|
+
oldTarget
|
|
638
|
+
}
|
|
639
|
+
);
|
|
618
640
|
}
|
|
619
641
|
}
|
|
642
|
+
resetScheduling();
|
|
620
643
|
}
|
|
621
644
|
function getDepFromReactive(object, key) {
|
|
622
645
|
var _a;
|
|
@@ -647,7 +670,9 @@ function createArrayInstrumentations() {
|
|
|
647
670
|
["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
|
|
648
671
|
instrumentations[key] = function(...args) {
|
|
649
672
|
pauseTracking();
|
|
673
|
+
pauseScheduling();
|
|
650
674
|
const res = toRaw(this)[key].apply(this, args);
|
|
675
|
+
resetScheduling();
|
|
651
676
|
resetTracking();
|
|
652
677
|
return res;
|
|
653
678
|
};
|
|
@@ -1186,30 +1211,93 @@ function markRaw(value) {
|
|
|
1186
1211
|
const toReactive = (value) => isObject(value) ? reactive(value) : value;
|
|
1187
1212
|
const toReadonly = (value) => isObject(value) ? readonly(value) : value;
|
|
1188
1213
|
|
|
1214
|
+
class ComputedRefImpl {
|
|
1215
|
+
constructor(getter, _setter, isReadonly, isSSR) {
|
|
1216
|
+
this._setter = _setter;
|
|
1217
|
+
this.dep = void 0;
|
|
1218
|
+
this.__v_isRef = true;
|
|
1219
|
+
this["__v_isReadonly"] = false;
|
|
1220
|
+
this.effect = new ReactiveEffect(getter, () => {
|
|
1221
|
+
triggerRefValue(this, 1);
|
|
1222
|
+
});
|
|
1223
|
+
this.effect.computed = this;
|
|
1224
|
+
this.effect.active = this._cacheable = !isSSR;
|
|
1225
|
+
this["__v_isReadonly"] = isReadonly;
|
|
1226
|
+
}
|
|
1227
|
+
get value() {
|
|
1228
|
+
const self = toRaw(this);
|
|
1229
|
+
trackRefValue(self);
|
|
1230
|
+
if (!self._cacheable || self.effect.dirty) {
|
|
1231
|
+
if (hasChanged(self._value, self._value = self.effect.run())) {
|
|
1232
|
+
triggerRefValue(self, 2);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
return self._value;
|
|
1236
|
+
}
|
|
1237
|
+
set value(newValue) {
|
|
1238
|
+
this._setter(newValue);
|
|
1239
|
+
}
|
|
1240
|
+
// #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x
|
|
1241
|
+
get _dirty() {
|
|
1242
|
+
return this.effect.dirty;
|
|
1243
|
+
}
|
|
1244
|
+
set _dirty(v) {
|
|
1245
|
+
this.effect.dirty = v;
|
|
1246
|
+
}
|
|
1247
|
+
// #endregion
|
|
1248
|
+
}
|
|
1249
|
+
function computed$1(getterOrOptions, debugOptions, isSSR = false) {
|
|
1250
|
+
let getter;
|
|
1251
|
+
let setter;
|
|
1252
|
+
const onlyGetter = isFunction(getterOrOptions);
|
|
1253
|
+
if (onlyGetter) {
|
|
1254
|
+
getter = getterOrOptions;
|
|
1255
|
+
setter = () => {
|
|
1256
|
+
console.warn("Write operation failed: computed value is readonly");
|
|
1257
|
+
} ;
|
|
1258
|
+
} else {
|
|
1259
|
+
getter = getterOrOptions.get;
|
|
1260
|
+
setter = getterOrOptions.set;
|
|
1261
|
+
}
|
|
1262
|
+
const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
|
|
1263
|
+
if (debugOptions && !isSSR) {
|
|
1264
|
+
cRef.effect.onTrack = debugOptions.onTrack;
|
|
1265
|
+
cRef.effect.onTrigger = debugOptions.onTrigger;
|
|
1266
|
+
}
|
|
1267
|
+
return cRef;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1189
1270
|
function trackRefValue(ref2) {
|
|
1190
1271
|
if (shouldTrack && activeEffect) {
|
|
1191
1272
|
ref2 = toRaw(ref2);
|
|
1192
|
-
|
|
1193
|
-
|
|
1273
|
+
trackEffect(
|
|
1274
|
+
activeEffect,
|
|
1275
|
+
ref2.dep || (ref2.dep = createDep(
|
|
1276
|
+
() => ref2.dep = void 0,
|
|
1277
|
+
ref2 instanceof ComputedRefImpl ? ref2 : void 0
|
|
1278
|
+
)),
|
|
1279
|
+
{
|
|
1194
1280
|
target: ref2,
|
|
1195
1281
|
type: "get",
|
|
1196
1282
|
key: "value"
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1283
|
+
}
|
|
1284
|
+
);
|
|
1199
1285
|
}
|
|
1200
1286
|
}
|
|
1201
|
-
function triggerRefValue(ref2, newVal) {
|
|
1287
|
+
function triggerRefValue(ref2, dirtyLevel = 3, newVal) {
|
|
1202
1288
|
ref2 = toRaw(ref2);
|
|
1203
1289
|
const dep = ref2.dep;
|
|
1204
1290
|
if (dep) {
|
|
1205
|
-
|
|
1206
|
-
|
|
1291
|
+
triggerEffects(
|
|
1292
|
+
dep,
|
|
1293
|
+
dirtyLevel,
|
|
1294
|
+
{
|
|
1207
1295
|
target: ref2,
|
|
1208
1296
|
type: "set",
|
|
1209
1297
|
key: "value",
|
|
1210
1298
|
newValue: newVal
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1299
|
+
}
|
|
1300
|
+
);
|
|
1213
1301
|
}
|
|
1214
1302
|
}
|
|
1215
1303
|
function isRef(r) {
|
|
@@ -1245,12 +1333,12 @@ class RefImpl {
|
|
|
1245
1333
|
if (hasChanged(newVal, this._rawValue)) {
|
|
1246
1334
|
this._rawValue = newVal;
|
|
1247
1335
|
this._value = useDirectValue ? newVal : toReactive(newVal);
|
|
1248
|
-
triggerRefValue(this, newVal);
|
|
1336
|
+
triggerRefValue(this, 3, newVal);
|
|
1249
1337
|
}
|
|
1250
1338
|
}
|
|
1251
1339
|
}
|
|
1252
1340
|
function triggerRef(ref2) {
|
|
1253
|
-
triggerRefValue(ref2, ref2.value );
|
|
1341
|
+
triggerRefValue(ref2, 3, ref2.value );
|
|
1254
1342
|
}
|
|
1255
1343
|
function unref(ref2) {
|
|
1256
1344
|
return isRef(ref2) ? ref2.value : ref2;
|
|
@@ -1348,57 +1436,6 @@ function propertyToRef(source, key, defaultValue) {
|
|
|
1348
1436
|
return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);
|
|
1349
1437
|
}
|
|
1350
1438
|
|
|
1351
|
-
class ComputedRefImpl {
|
|
1352
|
-
constructor(getter, _setter, isReadonly, isSSR) {
|
|
1353
|
-
this._setter = _setter;
|
|
1354
|
-
this.dep = void 0;
|
|
1355
|
-
this.__v_isRef = true;
|
|
1356
|
-
this["__v_isReadonly"] = false;
|
|
1357
|
-
this._dirty = true;
|
|
1358
|
-
this.effect = new ReactiveEffect(getter, () => {
|
|
1359
|
-
if (!this._dirty) {
|
|
1360
|
-
this._dirty = true;
|
|
1361
|
-
triggerRefValue(this);
|
|
1362
|
-
}
|
|
1363
|
-
});
|
|
1364
|
-
this.effect.computed = this;
|
|
1365
|
-
this.effect.active = this._cacheable = !isSSR;
|
|
1366
|
-
this["__v_isReadonly"] = isReadonly;
|
|
1367
|
-
}
|
|
1368
|
-
get value() {
|
|
1369
|
-
const self = toRaw(this);
|
|
1370
|
-
trackRefValue(self);
|
|
1371
|
-
if (self._dirty || !self._cacheable) {
|
|
1372
|
-
self._dirty = false;
|
|
1373
|
-
self._value = self.effect.run();
|
|
1374
|
-
}
|
|
1375
|
-
return self._value;
|
|
1376
|
-
}
|
|
1377
|
-
set value(newValue) {
|
|
1378
|
-
this._setter(newValue);
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
function computed$1(getterOrOptions, debugOptions, isSSR = false) {
|
|
1382
|
-
let getter;
|
|
1383
|
-
let setter;
|
|
1384
|
-
const onlyGetter = isFunction(getterOrOptions);
|
|
1385
|
-
if (onlyGetter) {
|
|
1386
|
-
getter = getterOrOptions;
|
|
1387
|
-
setter = () => {
|
|
1388
|
-
console.warn("Write operation failed: computed value is readonly");
|
|
1389
|
-
} ;
|
|
1390
|
-
} else {
|
|
1391
|
-
getter = getterOrOptions.get;
|
|
1392
|
-
setter = getterOrOptions.set;
|
|
1393
|
-
}
|
|
1394
|
-
const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
|
|
1395
|
-
if (debugOptions && !isSSR) {
|
|
1396
|
-
cRef.effect.onTrack = debugOptions.onTrack;
|
|
1397
|
-
cRef.effect.onTrigger = debugOptions.onTrigger;
|
|
1398
|
-
}
|
|
1399
|
-
return cRef;
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
1439
|
const stack = [];
|
|
1403
1440
|
function pushWarningContext(vnode) {
|
|
1404
1441
|
stack.push(vnode);
|
|
@@ -1513,7 +1550,7 @@ function assertNumber(val, type) {
|
|
|
1513
1550
|
}
|
|
1514
1551
|
}
|
|
1515
1552
|
|
|
1516
|
-
const ErrorTypeStrings = {
|
|
1553
|
+
const ErrorTypeStrings$1 = {
|
|
1517
1554
|
["sp"]: "serverPrefetch hook",
|
|
1518
1555
|
["bc"]: "beforeCreate hook",
|
|
1519
1556
|
["c"]: "created hook",
|
|
@@ -1574,7 +1611,7 @@ function handleError(err, instance, type, throwInDev = true) {
|
|
|
1574
1611
|
if (instance) {
|
|
1575
1612
|
let cur = instance.parent;
|
|
1576
1613
|
const exposedInstance = instance.proxy;
|
|
1577
|
-
const errorInfo = ErrorTypeStrings[type] ;
|
|
1614
|
+
const errorInfo = ErrorTypeStrings$1[type] ;
|
|
1578
1615
|
while (cur) {
|
|
1579
1616
|
const errorCapturedHooks = cur.ec;
|
|
1580
1617
|
if (errorCapturedHooks) {
|
|
@@ -1601,7 +1638,7 @@ function handleError(err, instance, type, throwInDev = true) {
|
|
|
1601
1638
|
}
|
|
1602
1639
|
function logError(err, type, contextVNode, throwInDev = true) {
|
|
1603
1640
|
{
|
|
1604
|
-
const info = ErrorTypeStrings[type];
|
|
1641
|
+
const info = ErrorTypeStrings$1[type];
|
|
1605
1642
|
if (contextVNode) {
|
|
1606
1643
|
pushWarningContext(contextVNode);
|
|
1607
1644
|
}
|
|
@@ -1636,8 +1673,13 @@ function findInsertionIndex(id) {
|
|
|
1636
1673
|
let end = queue.length;
|
|
1637
1674
|
while (start < end) {
|
|
1638
1675
|
const middle = start + end >>> 1;
|
|
1639
|
-
const
|
|
1640
|
-
middleJobId
|
|
1676
|
+
const middleJob = queue[middle];
|
|
1677
|
+
const middleJobId = getId(middleJob);
|
|
1678
|
+
if (middleJobId < id || middleJobId === id && middleJob.pre) {
|
|
1679
|
+
start = middle + 1;
|
|
1680
|
+
} else {
|
|
1681
|
+
end = middle;
|
|
1682
|
+
}
|
|
1641
1683
|
}
|
|
1642
1684
|
return start;
|
|
1643
1685
|
}
|
|
@@ -1824,6 +1866,7 @@ function rerender(id, newRender) {
|
|
|
1824
1866
|
}
|
|
1825
1867
|
instance.renderCache = [];
|
|
1826
1868
|
isHmrUpdating = true;
|
|
1869
|
+
instance.effect.dirty = true;
|
|
1827
1870
|
instance.update();
|
|
1828
1871
|
isHmrUpdating = false;
|
|
1829
1872
|
});
|
|
@@ -1851,6 +1894,7 @@ function reload(id, newComp) {
|
|
|
1851
1894
|
instance.ceReload(newComp.styles);
|
|
1852
1895
|
hmrDirtyComponents.delete(oldComp);
|
|
1853
1896
|
} else if (instance.parent) {
|
|
1897
|
+
instance.parent.effect.dirty = true;
|
|
1854
1898
|
queueJob(instance.parent.update);
|
|
1855
1899
|
} else if (instance.appContext.reload) {
|
|
1856
1900
|
instance.appContext.reload();
|
|
@@ -2752,14 +2796,16 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
2752
2796
|
parentComponent: parentComponent2,
|
|
2753
2797
|
container: container2
|
|
2754
2798
|
} = suspense;
|
|
2799
|
+
let delayEnter = false;
|
|
2755
2800
|
if (suspense.isHydrating) {
|
|
2756
2801
|
suspense.isHydrating = false;
|
|
2757
2802
|
} else if (!resume) {
|
|
2758
|
-
|
|
2803
|
+
delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
|
|
2759
2804
|
if (delayEnter) {
|
|
2760
2805
|
activeBranch.transition.afterLeave = () => {
|
|
2761
2806
|
if (pendingId === suspense.pendingId) {
|
|
2762
2807
|
move(pendingBranch, container2, anchor2, 0);
|
|
2808
|
+
queuePostFlushCb(effects);
|
|
2763
2809
|
}
|
|
2764
2810
|
};
|
|
2765
2811
|
}
|
|
@@ -2785,7 +2831,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
2785
2831
|
}
|
|
2786
2832
|
parent = parent.parent;
|
|
2787
2833
|
}
|
|
2788
|
-
if (!hasUnresolvedAncestor) {
|
|
2834
|
+
if (!hasUnresolvedAncestor && !delayEnter) {
|
|
2789
2835
|
queuePostFlushCb(effects);
|
|
2790
2836
|
}
|
|
2791
2837
|
suspense.effects = [];
|
|
@@ -3033,8 +3079,15 @@ function watch(source, cb, options) {
|
|
|
3033
3079
|
}
|
|
3034
3080
|
return doWatch(source, cb, options);
|
|
3035
3081
|
}
|
|
3036
|
-
function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
|
|
3082
|
+
function doWatch(source, cb, { immediate, deep, flush, once, onTrack, onTrigger } = EMPTY_OBJ) {
|
|
3037
3083
|
var _a;
|
|
3084
|
+
if (cb && once) {
|
|
3085
|
+
const _cb = cb;
|
|
3086
|
+
cb = (...args) => {
|
|
3087
|
+
_cb(...args);
|
|
3088
|
+
unwatch();
|
|
3089
|
+
};
|
|
3090
|
+
}
|
|
3038
3091
|
if (!cb) {
|
|
3039
3092
|
if (immediate !== void 0) {
|
|
3040
3093
|
warn(
|
|
@@ -3046,6 +3099,11 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3046
3099
|
`watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
|
|
3047
3100
|
);
|
|
3048
3101
|
}
|
|
3102
|
+
if (once !== void 0) {
|
|
3103
|
+
warn(
|
|
3104
|
+
`watch() "once" option is only respected when using the watch(source, callback, options?) signature.`
|
|
3105
|
+
);
|
|
3106
|
+
}
|
|
3049
3107
|
}
|
|
3050
3108
|
const warnInvalidSource = (s) => {
|
|
3051
3109
|
warn(
|
|
@@ -3113,7 +3171,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3113
3171
|
};
|
|
3114
3172
|
let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
|
|
3115
3173
|
const job = () => {
|
|
3116
|
-
if (!effect.active) {
|
|
3174
|
+
if (!effect.active || !effect.dirty) {
|
|
3117
3175
|
return;
|
|
3118
3176
|
}
|
|
3119
3177
|
if (cb) {
|
|
@@ -3146,7 +3204,13 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3146
3204
|
job.id = instance.uid;
|
|
3147
3205
|
scheduler = () => queueJob(job);
|
|
3148
3206
|
}
|
|
3149
|
-
const effect = new ReactiveEffect(getter, scheduler);
|
|
3207
|
+
const effect = new ReactiveEffect(getter, NOOP, scheduler);
|
|
3208
|
+
const unwatch = () => {
|
|
3209
|
+
effect.stop();
|
|
3210
|
+
if (instance && instance.scope) {
|
|
3211
|
+
remove(instance.scope.effects, effect);
|
|
3212
|
+
}
|
|
3213
|
+
};
|
|
3150
3214
|
{
|
|
3151
3215
|
effect.onTrack = onTrack;
|
|
3152
3216
|
effect.onTrigger = onTrigger;
|
|
@@ -3165,12 +3229,6 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3165
3229
|
} else {
|
|
3166
3230
|
effect.run();
|
|
3167
3231
|
}
|
|
3168
|
-
const unwatch = () => {
|
|
3169
|
-
effect.stop();
|
|
3170
|
-
if (instance && instance.scope) {
|
|
3171
|
-
remove(instance.scope.effects, effect);
|
|
3172
|
-
}
|
|
3173
|
-
};
|
|
3174
3232
|
return unwatch;
|
|
3175
3233
|
}
|
|
3176
3234
|
function instanceWatch(source, value, options) {
|
|
@@ -3400,6 +3458,7 @@ const BaseTransitionImpl = {
|
|
|
3400
3458
|
leavingHooks.afterLeave = () => {
|
|
3401
3459
|
state.isLeaving = false;
|
|
3402
3460
|
if (instance.update.active !== false) {
|
|
3461
|
+
instance.effect.dirty = true;
|
|
3403
3462
|
instance.update();
|
|
3404
3463
|
}
|
|
3405
3464
|
};
|
|
@@ -3735,6 +3794,7 @@ function defineAsyncComponent(source) {
|
|
|
3735
3794
|
load().then(() => {
|
|
3736
3795
|
loaded.value = true;
|
|
3737
3796
|
if (instance.parent && isKeepAlive(instance.parent.vnode)) {
|
|
3797
|
+
instance.parent.effect.dirty = true;
|
|
3738
3798
|
queueJob(instance.parent.update);
|
|
3739
3799
|
}
|
|
3740
3800
|
}).catch((err) => {
|
|
@@ -4029,7 +4089,7 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
|
|
|
4029
4089
|
}
|
|
4030
4090
|
return wrappedHook;
|
|
4031
4091
|
} else {
|
|
4032
|
-
const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ""));
|
|
4092
|
+
const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, ""));
|
|
4033
4093
|
warn(
|
|
4034
4094
|
`${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )
|
|
4035
4095
|
);
|
|
@@ -4251,7 +4311,10 @@ const publicPropertiesMap = (
|
|
|
4251
4311
|
$root: (i) => getPublicInstance(i.root),
|
|
4252
4312
|
$emit: (i) => i.emit,
|
|
4253
4313
|
$options: (i) => resolveMergedOptions(i) ,
|
|
4254
|
-
$forceUpdate: (i) => i.f || (i.f = () =>
|
|
4314
|
+
$forceUpdate: (i) => i.f || (i.f = () => {
|
|
4315
|
+
i.effect.dirty = true;
|
|
4316
|
+
queueJob(i.update);
|
|
4317
|
+
}),
|
|
4255
4318
|
$nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
|
|
4256
4319
|
$watch: (i) => instanceWatch.bind(i)
|
|
4257
4320
|
})
|
|
@@ -5927,7 +5990,14 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
5927
5990
|
break;
|
|
5928
5991
|
case Comment:
|
|
5929
5992
|
if (domType !== 8 /* COMMENT */ || isFragmentStart) {
|
|
5930
|
-
|
|
5993
|
+
if (node.tagName.toLowerCase() === "template") {
|
|
5994
|
+
const content = vnode.el.content.firstChild;
|
|
5995
|
+
replaceNode(content, node, parentComponent);
|
|
5996
|
+
vnode.el = node = content;
|
|
5997
|
+
nextNode = nextSibling(node);
|
|
5998
|
+
} else {
|
|
5999
|
+
nextNode = onMismatch();
|
|
6000
|
+
}
|
|
5931
6001
|
} else {
|
|
5932
6002
|
nextNode = nextSibling(node);
|
|
5933
6003
|
}
|
|
@@ -5969,7 +6039,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
5969
6039
|
break;
|
|
5970
6040
|
default:
|
|
5971
6041
|
if (shapeFlag & 1) {
|
|
5972
|
-
if (domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) {
|
|
6042
|
+
if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {
|
|
5973
6043
|
nextNode = onMismatch();
|
|
5974
6044
|
} else {
|
|
5975
6045
|
nextNode = hydrateElement(
|
|
@@ -5984,6 +6054,13 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
5984
6054
|
} else if (shapeFlag & 6) {
|
|
5985
6055
|
vnode.slotScopeIds = slotScopeIds;
|
|
5986
6056
|
const container = parentNode(node);
|
|
6057
|
+
if (isFragmentStart) {
|
|
6058
|
+
nextNode = locateClosingAnchor(node);
|
|
6059
|
+
} else if (isComment(node) && node.data === "teleport start") {
|
|
6060
|
+
nextNode = locateClosingAnchor(node, node.data, "teleport end");
|
|
6061
|
+
} else {
|
|
6062
|
+
nextNode = nextSibling(node);
|
|
6063
|
+
}
|
|
5987
6064
|
mountComponent(
|
|
5988
6065
|
vnode,
|
|
5989
6066
|
container,
|
|
@@ -5993,10 +6070,6 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
5993
6070
|
isSVGContainer(container),
|
|
5994
6071
|
optimized
|
|
5995
6072
|
);
|
|
5996
|
-
nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node);
|
|
5997
|
-
if (nextNode && isComment(nextNode) && nextNode.data === "teleport end") {
|
|
5998
|
-
nextNode = nextSibling(nextNode);
|
|
5999
|
-
}
|
|
6000
6073
|
if (isAsyncWrapper(vnode)) {
|
|
6001
6074
|
let subTree;
|
|
6002
6075
|
if (isFragmentStart) {
|
|
@@ -6046,7 +6119,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6046
6119
|
};
|
|
6047
6120
|
const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
|
|
6048
6121
|
optimized = optimized || !!vnode.dynamicChildren;
|
|
6049
|
-
const { type, props, patchFlag, shapeFlag, dirs } = vnode;
|
|
6122
|
+
const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;
|
|
6050
6123
|
const forcePatchValue = type === "input" && dirs || type === "option";
|
|
6051
6124
|
{
|
|
6052
6125
|
if (dirs) {
|
|
@@ -6083,12 +6156,23 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6083
6156
|
if (vnodeHooks = props && props.onVnodeBeforeMount) {
|
|
6084
6157
|
invokeVNodeHook(vnodeHooks, parentComponent, vnode);
|
|
6085
6158
|
}
|
|
6159
|
+
let needCallTransitionHooks = false;
|
|
6160
|
+
if (isTemplateNode(el)) {
|
|
6161
|
+
needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
|
|
6162
|
+
const content = el.content.firstChild;
|
|
6163
|
+
if (needCallTransitionHooks) {
|
|
6164
|
+
transition.beforeEnter(content);
|
|
6165
|
+
}
|
|
6166
|
+
replaceNode(content, el, parentComponent);
|
|
6167
|
+
vnode.el = el = content;
|
|
6168
|
+
}
|
|
6086
6169
|
if (dirs) {
|
|
6087
6170
|
invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
|
|
6088
6171
|
}
|
|
6089
|
-
if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {
|
|
6172
|
+
if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {
|
|
6090
6173
|
queueEffectWithSuspense(() => {
|
|
6091
6174
|
vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
|
|
6175
|
+
needCallTransitionHooks && transition.enter(el);
|
|
6092
6176
|
dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
|
|
6093
6177
|
}, parentSuspense);
|
|
6094
6178
|
}
|
|
@@ -6206,7 +6290,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6206
6290
|
);
|
|
6207
6291
|
vnode.el = null;
|
|
6208
6292
|
if (isFragment) {
|
|
6209
|
-
const end =
|
|
6293
|
+
const end = locateClosingAnchor(node);
|
|
6210
6294
|
while (true) {
|
|
6211
6295
|
const next2 = nextSibling(node);
|
|
6212
6296
|
if (next2 && next2 !== end) {
|
|
@@ -6231,14 +6315,14 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6231
6315
|
);
|
|
6232
6316
|
return next;
|
|
6233
6317
|
};
|
|
6234
|
-
const
|
|
6318
|
+
const locateClosingAnchor = (node, open = "[", close = "]") => {
|
|
6235
6319
|
let match = 0;
|
|
6236
6320
|
while (node) {
|
|
6237
6321
|
node = nextSibling(node);
|
|
6238
6322
|
if (node && isComment(node)) {
|
|
6239
|
-
if (node.data ===
|
|
6323
|
+
if (node.data === open)
|
|
6240
6324
|
match++;
|
|
6241
|
-
if (node.data ===
|
|
6325
|
+
if (node.data === close) {
|
|
6242
6326
|
if (match === 0) {
|
|
6243
6327
|
return nextSibling(node);
|
|
6244
6328
|
} else {
|
|
@@ -6249,6 +6333,23 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
6249
6333
|
}
|
|
6250
6334
|
return node;
|
|
6251
6335
|
};
|
|
6336
|
+
const replaceNode = (newNode, oldNode, parentComponent) => {
|
|
6337
|
+
const parentNode2 = oldNode.parentNode;
|
|
6338
|
+
if (parentNode2) {
|
|
6339
|
+
parentNode2.replaceChild(newNode, oldNode);
|
|
6340
|
+
}
|
|
6341
|
+
let parent = parentComponent;
|
|
6342
|
+
while (parent) {
|
|
6343
|
+
if (parent.vnode.el === oldNode) {
|
|
6344
|
+
parent.vnode.el = newNode;
|
|
6345
|
+
parent.subTree.el = newNode;
|
|
6346
|
+
}
|
|
6347
|
+
parent = parent.parent;
|
|
6348
|
+
}
|
|
6349
|
+
};
|
|
6350
|
+
const isTemplateNode = (node) => {
|
|
6351
|
+
return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template";
|
|
6352
|
+
};
|
|
6252
6353
|
return [hydrate, hydrateNode];
|
|
6253
6354
|
}
|
|
6254
6355
|
|
|
@@ -6576,7 +6677,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
6576
6677
|
if (dirs) {
|
|
6577
6678
|
invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
|
|
6578
6679
|
}
|
|
6579
|
-
const needCallTransitionHooks = (
|
|
6680
|
+
const needCallTransitionHooks = needTransition(parentSuspense, transition);
|
|
6580
6681
|
if (needCallTransitionHooks) {
|
|
6581
6682
|
transition.beforeEnter(el);
|
|
6582
6683
|
}
|
|
@@ -6964,6 +7065,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
6964
7065
|
} else {
|
|
6965
7066
|
instance.next = n2;
|
|
6966
7067
|
invalidateJob(instance.update);
|
|
7068
|
+
instance.effect.dirty = true;
|
|
6967
7069
|
instance.update();
|
|
6968
7070
|
}
|
|
6969
7071
|
} else {
|
|
@@ -7133,11 +7235,16 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
7133
7235
|
};
|
|
7134
7236
|
const effect = instance.effect = new ReactiveEffect(
|
|
7135
7237
|
componentUpdateFn,
|
|
7238
|
+
NOOP,
|
|
7136
7239
|
() => queueJob(update),
|
|
7137
7240
|
instance.scope
|
|
7138
7241
|
// track it in component's effect scope
|
|
7139
7242
|
);
|
|
7140
|
-
const update = instance.update = () =>
|
|
7243
|
+
const update = instance.update = () => {
|
|
7244
|
+
if (effect.dirty) {
|
|
7245
|
+
effect.run();
|
|
7246
|
+
}
|
|
7247
|
+
};
|
|
7141
7248
|
update.id = instance.uid;
|
|
7142
7249
|
toggleRecurse(instance, true);
|
|
7143
7250
|
{
|
|
@@ -7468,8 +7575,8 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
7468
7575
|
moveStaticNode(vnode, container, anchor);
|
|
7469
7576
|
return;
|
|
7470
7577
|
}
|
|
7471
|
-
const
|
|
7472
|
-
if (
|
|
7578
|
+
const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
|
|
7579
|
+
if (needTransition2) {
|
|
7473
7580
|
if (moveType === 0) {
|
|
7474
7581
|
transition.beforeEnter(el);
|
|
7475
7582
|
hostInsert(el, container, anchor);
|
|
@@ -7689,6 +7796,9 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
7689
7796
|
function toggleRecurse({ effect, update }, allowed) {
|
|
7690
7797
|
effect.allowRecurse = update.allowRecurse = allowed;
|
|
7691
7798
|
}
|
|
7799
|
+
function needTransition(parentSuspense, transition) {
|
|
7800
|
+
return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
|
|
7801
|
+
}
|
|
7692
7802
|
function traverseStaticChildren(n1, n2, shallow = false) {
|
|
7693
7803
|
const ch1 = n1.children;
|
|
7694
7804
|
const ch2 = n2.children;
|
|
@@ -9024,7 +9134,8 @@ function isMemoSame(cached, memo) {
|
|
|
9024
9134
|
return true;
|
|
9025
9135
|
}
|
|
9026
9136
|
|
|
9027
|
-
const version = "3.
|
|
9137
|
+
const version = "3.4.0-alpha.1";
|
|
9138
|
+
const ErrorTypeStrings = ErrorTypeStrings$1 ;
|
|
9028
9139
|
const ssrUtils = null;
|
|
9029
9140
|
const resolveFilter = null;
|
|
9030
9141
|
const compatUtils = null;
|
|
@@ -10510,4 +10621,4 @@ function normalizeContainer(container) {
|
|
|
10510
10621
|
}
|
|
10511
10622
|
const initDirectivesForSSR = NOOP;
|
|
10512
10623
|
|
|
10513
|
-
export { BaseTransition, BaseTransitionPropsValidators, Comment, EffectScope, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, Transition, TransitionGroup, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, 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, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
|
|
10624
|
+
export { BaseTransition, BaseTransitionPropsValidators, Comment, EffectScope, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, Transition, TransitionGroup, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, 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, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
|