import {tracker} from "@e280/strata" export class Reactivity { #stoppers: (() => void)[] = [] clear() { this.#stoppers.forEach(stop => stop()) this.#stoppers = [] } observe(fn: () => X, rerender: () => Promise) { const {seen, value} = tracker.observe(fn) this.clear() for (const item of seen) { const stop = tracker.subscribe(item, rerender) this.#stoppers.push(stop) } return value } }