Sha256: dc9921a2a3a09385bb26475ad2b92caafc9e5124e94d39f1c7e5bfa15209df9d

Contents?: true

Size: 1.81 KB

Versions: 12

Compression:

Stored size: 1.81 KB

Contents

import {
	Component as PreactComponent,
	PreactContext
} from '../../src/internal';
import { Reducer } from '.';

export { PreactContext };

/**
 * The type of arguments passed to a Hook function. While this type is not
 * strictly necessary, they are given a type name to make it easier to read
 * the following types and trace the flow of data.
 */
export type HookArgs = any;

/**
 * The return type of a Hook function. While this type is not
 * strictly necessary, they are given a type name to make it easier to read
 * the following types and trace the flow of data.
 */
export type HookReturnValue = any;

/** The public function a user invokes to use a Hook */
export type Hook = (...args: HookArgs[]) => HookReturnValue;

// Hook tracking

export interface ComponentHooks {
	/** The list of hooks a component uses */
	_list: HookState[];
	/** List of Effects to be invoked after the next frame is rendered */
	_pendingEffects: EffectHookState[];
}

export interface Component extends PreactComponent<any, any> {
	__hooks?: ComponentHooks;
}

export type HookState =
	| EffectHookState
	| MemoHookState
	| ReducerHookState
	| ContextHookState
	| ErrorBoundaryHookState;

export type Effect = () => void | Cleanup;
export type Cleanup = () => void;

export interface EffectHookState {
	_value?: Effect;
	_args?: any[];
	_cleanup?: Cleanup | void;
}

export interface MemoHookState {
	_value?: any;
	_args?: any[];
	_factory?: () => any;
}

export interface ReducerHookState {
	_value?: any;
	_component?: Component;
	_reducer?: Reducer<any, any>;
}

export interface ContextHookState {
	/** Whether this hooks as subscribed to updates yet */
	_value?: boolean;
	_context?: PreactContext;
}

export interface ErrorBoundaryHookState {
	_value?: (error: any) => void;
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
isomorfeus-preact-10.6.14 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.13 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.12 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.11 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.10 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.9 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.8 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.7 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.6 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.5 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.4 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.3 node_modules/preact/hooks/src/internal.d.ts