@benev/slate
Version:
frontend web stuff
26 lines (25 loc) • 1.08 kB
TypeScript
import { SignalListener } from "./parts/listener.js";
import { accessed } from "./parts/accessed_symbol.js";
export declare class Signal<V> {
#private;
static unwrap: <A>(anything: any) => A extends Signal<infer V_1> ? V_1 : A;
[accessed]: boolean;
constructor(v: V);
/** @deprecated use `on` method instead */
subscribe(listener: SignalListener<V>): () => void;
on(listener: SignalListener<V>): () => void;
once(listener: SignalListener<V>): () => void;
clear(): void;
publish(): Promise<void>;
get wait(): Promise<V>;
get value(): V;
set value(v: V);
/** set the signal value and publish, only if a deep change is detected (uses deep.equal to scan whole object trees) */
setDeep(v: V): void;
/** set the signal value and publish, even if there's no change detected */
setAndPublish(v: V): void;
/** set the signal value, but do not publish (perhaps to prevent views rerendering) */
setWithoutPublish(v: V): void;
/** @deprecated use `setWithoutPublish` instead */
setValueNoPublish(v: V): void;
}