Sha256: 2664133ecaa5b9091e9cc0bf1880b233da7d0ba7b422d8a014a142822b550b9d

Contents?: true

Size: 1.73 KB

Versions: 66

Compression:

Stored size: 1.73 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

66 entries across 66 versions & 1 rubygems

Version Path
isomorfeus-preact-10.8.0 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.7.3 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.7.2 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.7.1 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.7.0 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.62 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.61 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.60 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.59 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.58 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.57 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.56 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.55 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.54 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.53 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.52 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.51 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.50 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.49 node_modules/preact/hooks/src/internal.d.ts
isomorfeus-preact-10.6.48 node_modules/preact/hooks/src/internal.d.ts