Introduce createTablePlugin
Summary: This diff exposes the createTablePlugin from flipper-plugin, so that createTablePlugin based plugins can be converted to Sandy as well Reviewed By: jknoxville Differential Revision: D28031227 fbshipit-source-id: 8e9c82da08a83fddab740b46be9917b6a1023117
This commit is contained in:
committed by
Facebook GitHub Bot
parent
cf2405a466
commit
05bf55419f
@@ -13,13 +13,16 @@ import {Persistable, registerStorageAtom} from '../plugin/PluginBase';
|
||||
|
||||
enableMapSet();
|
||||
|
||||
export type Atom<T> = {
|
||||
export interface ReadOnlyAtom<T> {
|
||||
get(): T;
|
||||
set(newValue: T): void;
|
||||
update(recipe: (draft: Draft<T>) => void): void;
|
||||
subscribe(listener: (value: T, prevValue: T) => void): () => void;
|
||||
unsubscribe(listener: (value: T, prevValue: T) => void): void;
|
||||
};
|
||||
}
|
||||
|
||||
export interface Atom<T> extends ReadOnlyAtom<T> {
|
||||
set(newValue: T): void;
|
||||
update(recipe: (draft: Draft<T>) => void): void;
|
||||
}
|
||||
|
||||
class AtomValue<T> implements Atom<T>, Persistable {
|
||||
value: T;
|
||||
@@ -93,9 +96,15 @@ export function createState(
|
||||
return atom;
|
||||
}
|
||||
|
||||
export function useValue<T>(atom: Atom<T>): T;
|
||||
export function useValue<T>(atom: Atom<T> | undefined, defaultValue: T): T;
|
||||
export function useValue<T>(atom: Atom<T> | undefined, defaultValue?: T): T {
|
||||
export function useValue<T>(atom: ReadOnlyAtom<T>): T;
|
||||
export function useValue<T>(
|
||||
atom: ReadOnlyAtom<T> | undefined,
|
||||
defaultValue: T,
|
||||
): T;
|
||||
export function useValue<T>(
|
||||
atom: ReadOnlyAtom<T> | undefined,
|
||||
defaultValue?: T,
|
||||
): T {
|
||||
const [localValue, setLocalValue] = useState<T>(
|
||||
atom ? atom.get() : defaultValue!,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user