25 lines
392 B
JavaScript
25 lines
392 B
JavaScript
import { createSubscriber } from './create-subscriber.js';
|
|
|
|
/**
|
|
* @template T
|
|
*/
|
|
export class ReactiveValue {
|
|
#fn;
|
|
#subscribe;
|
|
|
|
/**
|
|
*
|
|
* @param {() => T} fn
|
|
* @param {(update: () => void) => void} onsubscribe
|
|
*/
|
|
constructor(fn, onsubscribe) {
|
|
this.#fn = fn;
|
|
this.#subscribe = createSubscriber(onsubscribe);
|
|
}
|
|
|
|
get current() {
|
|
this.#subscribe();
|
|
return this.#fn();
|
|
}
|
|
}
|