UNPKG

atomico

Version:

Atomico is a small library for the creation of interfaces based on web-components, only using functions and hooks.

72 lines (57 loc) 1.68 kB
import { ReturnUseState, ReturnUseSuspense } from "hooks"; export type Effect = (state: any, unmounted?: boolean) => any; export type Hook = { value?: any; effect?: Effect; tag?: symbol | string | number; }; /** * Map of states associated with an increasing position */ export type Hooks = { [i: number]: Hook; }; export type SCOPE = { i: number; id: number | string; hooks: Hooks; host: any; update: any; }; export type Load = <Callback extends () => any>( callback: Callback ) => ReturnType<Callback>; /** * clean all useEffects */ export type CleanUseEffects = () => void; /** * clean all useLayoutEffect */ export type CleanUseLayoutEffects = () => CleanUseEffects; /** * allows to clean the effects step by step, * first execution of the callback cleans the useInsertionEffect, * second execution of return of the previous callback cleans the useLayoutEffect and * the last execution of the previous return cleans the useEffect */ export type CleanEffects = (unmounted?: boolean) => CleanUseLayoutEffects; export type CreateHooks = ( update?: () => any, host?: any, id?: number | string ) => { load: Load; cleanEffects: CleanEffects; isSuspense: () => boolean; }; export type CollectorCallback = (() => {}) | null | true; export type CollectorArgs = any[]; export type CollectorEffect = ( params?: [CollectorCallback, CollectorArgs] | [] ) => [CollectorCallback, CollectorArgs]; export type UseAnyEffect<Arg = any> = <Effect extends () => void | (() => any)>( effect: Effect, args?: Arg[] ) => void; export type ReturnSetStateUseSuspense = ReturnUseState<ReturnUseSuspense>;