Skip to content

Commit 9f97d98

Browse files
committed
Update system.ts
1 parent ed936af commit 9f97d98

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

packages/reactivity/src/system.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable */
2-
// Ported from https://github.com/stackblitz/alien-signals/blob/v1.0.7/src/system.ts
2+
// Ported from https://github.com/stackblitz/alien-signals/blob/4962714dadd133cee16060eb4eb99b90e9e6052d/src/system.ts
33
import type { ComputedRefImpl as Computed } from './computed.js'
44
import type { ReactiveEffect as Effect } from './effect.js'
55

@@ -82,23 +82,33 @@ export function propagate(current: Link): void {
8282
const sub = current.sub
8383
const subFlags = sub.flags
8484

85+
let shouldNotify = false
86+
8587
if (
86-
(!(
88+
!(
8789
subFlags &
8890
(SubscriberFlags.Tracking |
8991
SubscriberFlags.Recursed |
9092
SubscriberFlags.Propagated)
91-
) &&
92-
((sub.flags = subFlags | targetFlag), true)) ||
93-
(subFlags & SubscriberFlags.Recursed &&
94-
!(subFlags & SubscriberFlags.Tracking) &&
95-
((sub.flags = (subFlags & ~SubscriberFlags.Recursed) | targetFlag),
96-
true)) ||
97-
(!(subFlags & SubscriberFlags.Propagated) &&
98-
isValidLink(current, sub) &&
99-
((sub.flags = subFlags | SubscriberFlags.Recursed | targetFlag),
100-
(sub as Dependency).subs !== undefined))
93+
)
94+
) {
95+
sub.flags = subFlags | targetFlag
96+
shouldNotify = true
97+
} else if (
98+
subFlags & SubscriberFlags.Recursed &&
99+
!(subFlags & SubscriberFlags.Tracking)
100+
) {
101+
sub.flags = (subFlags & ~SubscriberFlags.Recursed) | targetFlag
102+
shouldNotify = true
103+
} else if (
104+
!(subFlags & SubscriberFlags.Propagated) &&
105+
isValidLink(current, sub)
101106
) {
107+
sub.flags = subFlags | SubscriberFlags.Recursed | targetFlag
108+
shouldNotify = (sub as Dependency).subs !== undefined
109+
}
110+
111+
if (shouldNotify) {
102112
const subSubs = (sub as Dependency).subs
103113
if (subSubs !== undefined) {
104114
current = subSubs
@@ -200,18 +210,15 @@ export function processComputedUpdate(
200210
computed: Computed,
201211
flags: SubscriberFlags,
202212
): void {
203-
if (
204-
flags & SubscriberFlags.Dirty ||
205-
(checkDirty(computed.deps!)
206-
? true
207-
: ((computed.flags = flags & ~SubscriberFlags.PendingComputed), false))
208-
) {
213+
if (flags & SubscriberFlags.Dirty || checkDirty(computed.deps!)) {
209214
if (computed.update()) {
210215
const subs = computed.subs
211216
if (subs !== undefined) {
212217
shallowPropagate(subs)
213218
}
214219
}
220+
} else {
221+
computed.flags = flags & ~SubscriberFlags.PendingComputed
215222
}
216223
}
217224

0 commit comments

Comments
 (0)