wana
Version:
Easy observable state for React
50 lines (42 loc) • 1.56 kB
TypeScript
import { Auto, Change, ObserverTarget } from './shared/ed456245';
interface DebugState {
name: string;
actions?: any[];
renders?: number;
}
/** Get the `Auto` object for the current `withAuto` component being rendered. */
declare function getCurrentAuto(): Auto | null;
/**
* Get the `DebugState` object of the `target` object.
*
* Returns `undefined` if target was never passed to `setDebug`.
*/
declare function getDebug(target: object): DebugState;
/**
* Set the `DebugState` object of the `target` object.
*/
declare function setDebug<T>(target: T, debug: DebugState): T;
/** Safely add an action to a `DebugState` object */
declare function addDebugAction(target: any, action: any): void;
declare function logChange(change: Change, targetId?: string): void;
declare global {
interface Console {
groupCollapsed(name: string): void;
groupEnd(): void;
}
}
declare type ChangeLogConfig = {
name?: string;
onChange?: (change: Change) => void;
};
declare function logChanges(target: ObserverTarget, { name, onChange }?: ChangeLogConfig): {
onChange: (change: Change) => void;
dispose: () => void;
};
/**
* Log any shallow changes to the given observable object.
*/
declare function useChangeLog(target: object, { name, onChange }?: ChangeLogConfig): void;
declare function useObserverLog(name?: string): void;
declare function useRenderLog(): void;
export { ChangeLogConfig, addDebugAction, getCurrentAuto, getDebug, logChange, logChanges, setDebug, useChangeLog, useObserverLog, useRenderLog };