@vue/runtime-dom 3.3.7 → 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) {
|
|
@@ -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
|
}
|
|
@@ -1829,6 +1866,7 @@ function rerender(id, newRender) {
|
|
|
1829
1866
|
}
|
|
1830
1867
|
instance.renderCache = [];
|
|
1831
1868
|
isHmrUpdating = true;
|
|
1869
|
+
instance.effect.dirty = true;
|
|
1832
1870
|
instance.update();
|
|
1833
1871
|
isHmrUpdating = false;
|
|
1834
1872
|
});
|
|
@@ -1856,6 +1894,7 @@ function reload(id, newComp) {
|
|
|
1856
1894
|
instance.ceReload(newComp.styles);
|
|
1857
1895
|
hmrDirtyComponents.delete(oldComp);
|
|
1858
1896
|
} else if (instance.parent) {
|
|
1897
|
+
instance.parent.effect.dirty = true;
|
|
1859
1898
|
queueJob(instance.parent.update);
|
|
1860
1899
|
} else if (instance.appContext.reload) {
|
|
1861
1900
|
instance.appContext.reload();
|
|
@@ -3040,8 +3079,15 @@ function watch(source, cb, options) {
|
|
|
3040
3079
|
}
|
|
3041
3080
|
return doWatch(source, cb, options);
|
|
3042
3081
|
}
|
|
3043
|
-
function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
|
|
3082
|
+
function doWatch(source, cb, { immediate, deep, flush, once, onTrack, onTrigger } = EMPTY_OBJ) {
|
|
3044
3083
|
var _a;
|
|
3084
|
+
if (cb && once) {
|
|
3085
|
+
const _cb = cb;
|
|
3086
|
+
cb = (...args) => {
|
|
3087
|
+
_cb(...args);
|
|
3088
|
+
unwatch();
|
|
3089
|
+
};
|
|
3090
|
+
}
|
|
3045
3091
|
if (!cb) {
|
|
3046
3092
|
if (immediate !== void 0) {
|
|
3047
3093
|
warn(
|
|
@@ -3053,6 +3099,11 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3053
3099
|
`watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
|
|
3054
3100
|
);
|
|
3055
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
|
+
}
|
|
3056
3107
|
}
|
|
3057
3108
|
const warnInvalidSource = (s) => {
|
|
3058
3109
|
warn(
|
|
@@ -3120,7 +3171,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3120
3171
|
};
|
|
3121
3172
|
let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
|
|
3122
3173
|
const job = () => {
|
|
3123
|
-
if (!effect.active) {
|
|
3174
|
+
if (!effect.active || !effect.dirty) {
|
|
3124
3175
|
return;
|
|
3125
3176
|
}
|
|
3126
3177
|
if (cb) {
|
|
@@ -3153,7 +3204,13 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3153
3204
|
job.id = instance.uid;
|
|
3154
3205
|
scheduler = () => queueJob(job);
|
|
3155
3206
|
}
|
|
3156
|
-
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
|
+
};
|
|
3157
3214
|
{
|
|
3158
3215
|
effect.onTrack = onTrack;
|
|
3159
3216
|
effect.onTrigger = onTrigger;
|
|
@@ -3172,12 +3229,6 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
|
|
|
3172
3229
|
} else {
|
|
3173
3230
|
effect.run();
|
|
3174
3231
|
}
|
|
3175
|
-
const unwatch = () => {
|
|
3176
|
-
effect.stop();
|
|
3177
|
-
if (instance && instance.scope) {
|
|
3178
|
-
remove(instance.scope.effects, effect);
|
|
3179
|
-
}
|
|
3180
|
-
};
|
|
3181
3232
|
return unwatch;
|
|
3182
3233
|
}
|
|
3183
3234
|
function instanceWatch(source, value, options) {
|
|
@@ -3407,6 +3458,7 @@ const BaseTransitionImpl = {
|
|
|
3407
3458
|
leavingHooks.afterLeave = () => {
|
|
3408
3459
|
state.isLeaving = false;
|
|
3409
3460
|
if (instance.update.active !== false) {
|
|
3461
|
+
instance.effect.dirty = true;
|
|
3410
3462
|
instance.update();
|
|
3411
3463
|
}
|
|
3412
3464
|
};
|
|
@@ -3742,6 +3794,7 @@ function defineAsyncComponent(source) {
|
|
|
3742
3794
|
load().then(() => {
|
|
3743
3795
|
loaded.value = true;
|
|
3744
3796
|
if (instance.parent && isKeepAlive(instance.parent.vnode)) {
|
|
3797
|
+
instance.parent.effect.dirty = true;
|
|
3745
3798
|
queueJob(instance.parent.update);
|
|
3746
3799
|
}
|
|
3747
3800
|
}).catch((err) => {
|
|
@@ -4036,7 +4089,7 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
|
|
|
4036
4089
|
}
|
|
4037
4090
|
return wrappedHook;
|
|
4038
4091
|
} else {
|
|
4039
|
-
const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ""));
|
|
4092
|
+
const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, ""));
|
|
4040
4093
|
warn(
|
|
4041
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.` )
|
|
4042
4095
|
);
|
|
@@ -4258,7 +4311,10 @@ const publicPropertiesMap = (
|
|
|
4258
4311
|
$root: (i) => getPublicInstance(i.root),
|
|
4259
4312
|
$emit: (i) => i.emit,
|
|
4260
4313
|
$options: (i) => resolveMergedOptions(i) ,
|
|
4261
|
-
$forceUpdate: (i) => i.f || (i.f = () =>
|
|
4314
|
+
$forceUpdate: (i) => i.f || (i.f = () => {
|
|
4315
|
+
i.effect.dirty = true;
|
|
4316
|
+
queueJob(i.update);
|
|
4317
|
+
}),
|
|
4262
4318
|
$nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
|
|
4263
4319
|
$watch: (i) => instanceWatch.bind(i)
|
|
4264
4320
|
})
|
|
@@ -7009,6 +7065,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
7009
7065
|
} else {
|
|
7010
7066
|
instance.next = n2;
|
|
7011
7067
|
invalidateJob(instance.update);
|
|
7068
|
+
instance.effect.dirty = true;
|
|
7012
7069
|
instance.update();
|
|
7013
7070
|
}
|
|
7014
7071
|
} else {
|
|
@@ -7178,11 +7235,16 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
7178
7235
|
};
|
|
7179
7236
|
const effect = instance.effect = new ReactiveEffect(
|
|
7180
7237
|
componentUpdateFn,
|
|
7238
|
+
NOOP,
|
|
7181
7239
|
() => queueJob(update),
|
|
7182
7240
|
instance.scope
|
|
7183
7241
|
// track it in component's effect scope
|
|
7184
7242
|
);
|
|
7185
|
-
const update = instance.update = () =>
|
|
7243
|
+
const update = instance.update = () => {
|
|
7244
|
+
if (effect.dirty) {
|
|
7245
|
+
effect.run();
|
|
7246
|
+
}
|
|
7247
|
+
};
|
|
7186
7248
|
update.id = instance.uid;
|
|
7187
7249
|
toggleRecurse(instance, true);
|
|
7188
7250
|
{
|
|
@@ -9072,7 +9134,8 @@ function isMemoSame(cached, memo) {
|
|
|
9072
9134
|
return true;
|
|
9073
9135
|
}
|
|
9074
9136
|
|
|
9075
|
-
const version = "3.
|
|
9137
|
+
const version = "3.4.0-alpha.1";
|
|
9138
|
+
const ErrorTypeStrings = ErrorTypeStrings$1 ;
|
|
9076
9139
|
const ssrUtils = null;
|
|
9077
9140
|
const resolveFilter = null;
|
|
9078
9141
|
const compatUtils = null;
|
|
@@ -10558,4 +10621,4 @@ function normalizeContainer(container) {
|
|
|
10558
10621
|
}
|
|
10559
10622
|
const initDirectivesForSSR = NOOP;
|
|
10560
10623
|
|
|
10561
|
-
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 };
|