mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-19 19:16:29 +08:00
26 lines
556 B
TypeScript
26 lines
556 B
TypeScript
import { signal } from '@preact/signals-core';
|
|
|
|
interface Observable<T> {
|
|
subscribe(observer: (value: T) => void): Unsubscribable;
|
|
}
|
|
|
|
interface Unsubscribable {
|
|
unsubscribe(): void;
|
|
}
|
|
|
|
export function createSignalFromObservable<T>(
|
|
observable$: Observable<T>,
|
|
initValue: T
|
|
) {
|
|
const newSignal = signal(initValue);
|
|
const subscription = observable$.subscribe(value => {
|
|
newSignal.value = value;
|
|
});
|
|
return {
|
|
signal: newSignal,
|
|
cleanup: () => subscription.unsubscribe(),
|
|
};
|
|
}
|
|
|
|
export { type Signal } from '@preact/signals-core';
|