preact
Version:
Fast 3kb React-compatible Virtual DOM library.
350 lines (310 loc) • 13.9 kB
TypeScript
import * as _hooks from '../../hooks';
// Intentionally not using a relative path to take advantage of
// the TS version resolution mechanism
import * as preact from 'preact';
import { JSXInternal } from '../../src/jsx';
import * as _Suspense from './suspense';
import * as _SuspenseList from './suspense-list';
// export default React;
export = React;
export as namespace React;
declare namespace React {
// Export JSX
export import JSX = JSXInternal;
// Hooks
export import CreateHandle = _hooks.CreateHandle;
export import EffectCallback = _hooks.EffectCallback;
export import Inputs = _hooks.Inputs;
export import PropRef = _hooks.PropRef;
export import Reducer = _hooks.Reducer;
export import Dispatch = _hooks.Dispatch;
export import SetStateAction = _hooks.StateUpdater;
export import useCallback = _hooks.useCallback;
export import useContext = _hooks.useContext;
export import useDebugValue = _hooks.useDebugValue;
export import useEffect = _hooks.useEffect;
export import useImperativeHandle = _hooks.useImperativeHandle;
export import useId = _hooks.useId;
export import useLayoutEffect = _hooks.useLayoutEffect;
export import useMemo = _hooks.useMemo;
export import useReducer = _hooks.useReducer;
export import useRef = _hooks.useRef;
export import useState = _hooks.useState;
// React 18 hooks
export import useInsertionEffect = _hooks.useLayoutEffect;
export function useTransition(): [false, typeof startTransition];
export function useDeferredValue<T = any>(val: T): T;
export function useSyncExternalStore<T>(
subscribe: (flush: () => void) => () => void,
getSnapshot: () => T
): T;
// Preact Defaults
export import Context = preact.Context;
export import ContextType = preact.ContextType;
export import RefObject = preact.RefObject;
export import Component = preact.Component;
export import FunctionComponent = preact.FunctionComponent;
export import ComponentType = preact.ComponentType;
export import ComponentClass = preact.ComponentClass;
export import FC = preact.FunctionComponent;
export import createContext = preact.createContext;
export import Ref = preact.Ref;
export import createRef = preact.createRef;
export import Fragment = preact.Fragment;
export import createElement = preact.createElement;
export import cloneElement = preact.cloneElement;
export import ComponentProps = preact.ComponentProps;
export import ReactNode = preact.ComponentChild;
export import ReactElement = preact.VNode;
export import Consumer = preact.Consumer;
export import ErrorInfo = preact.ErrorInfo;
// Suspense
export import Suspense = _Suspense.Suspense;
export import lazy = _Suspense.lazy;
export import SuspenseList = _SuspenseList.SuspenseList;
// Compat
export import StrictMode = preact.Fragment;
export const version: string;
export function startTransition(cb: () => void): void;
// HTML
export interface HTMLAttributes<T extends EventTarget>
extends JSXInternal.HTMLAttributes<T> {}
export interface HTMLProps<T extends EventTarget>
extends JSXInternal.AllHTMLAttributes<T>,
preact.ClassAttributes<T> {}
export interface AllHTMLAttributes<T extends EventTarget>
extends JSXInternal.AllHTMLAttributes<T> {}
export import DetailedHTMLProps = JSXInternal.DetailedHTMLProps;
export import CSSProperties = JSXInternal.CSSProperties;
export interface SVGProps<T extends EventTarget>
extends JSXInternal.SVGAttributes<T>,
preact.ClassAttributes<T> {}
interface SVGAttributes extends JSXInternal.SVGAttributes {}
interface ReactSVG extends JSXInternal.IntrinsicSVGElements {}
export import AriaAttributes = JSXInternal.AriaAttributes;
export import HTMLAttributeReferrerPolicy = JSXInternal.HTMLAttributeReferrerPolicy;
export import HTMLAttributeAnchorTarget = JSXInternal.HTMLAttributeAnchorTarget;
export import HTMLInputTypeAttribute = JSXInternal.HTMLInputTypeAttribute;
export import HTMLAttributeCrossOrigin = JSXInternal.HTMLAttributeCrossOrigin;
export import AnchorHTMLAttributes = JSXInternal.AnchorHTMLAttributes;
export import AudioHTMLAttributes = JSXInternal.AudioHTMLAttributes;
export import AreaHTMLAttributes = JSXInternal.AreaHTMLAttributes;
export import BaseHTMLAttributes = JSXInternal.BaseHTMLAttributes;
export import BlockquoteHTMLAttributes = JSXInternal.BlockquoteHTMLAttributes;
export import ButtonHTMLAttributes = JSXInternal.ButtonHTMLAttributes;
export import CanvasHTMLAttributes = JSXInternal.CanvasHTMLAttributes;
export import ColHTMLAttributes = JSXInternal.ColHTMLAttributes;
export import ColgroupHTMLAttributes = JSXInternal.ColgroupHTMLAttributes;
export import DataHTMLAttributes = JSXInternal.DataHTMLAttributes;
export import DetailsHTMLAttributes = JSXInternal.DetailsHTMLAttributes;
export import DelHTMLAttributes = JSXInternal.DelHTMLAttributes;
export import DialogHTMLAttributes = JSXInternal.DialogHTMLAttributes;
export import EmbedHTMLAttributes = JSXInternal.EmbedHTMLAttributes;
export import FieldsetHTMLAttributes = JSXInternal.FieldsetHTMLAttributes;
export import FormHTMLAttributes = JSXInternal.FormHTMLAttributes;
export import IframeHTMLAttributes = JSXInternal.IframeHTMLAttributes;
export import ImgHTMLAttributes = JSXInternal.ImgHTMLAttributes;
export import InsHTMLAttributes = JSXInternal.InsHTMLAttributes;
export import InputHTMLAttributes = JSXInternal.InputHTMLAttributes;
export import KeygenHTMLAttributes = JSXInternal.KeygenHTMLAttributes;
export import LabelHTMLAttributes = JSXInternal.LabelHTMLAttributes;
export import LiHTMLAttributes = JSXInternal.LiHTMLAttributes;
export import LinkHTMLAttributes = JSXInternal.LinkHTMLAttributes;
export import MapHTMLAttributes = JSXInternal.MapHTMLAttributes;
export import MenuHTMLAttributes = JSXInternal.MenuHTMLAttributes;
export import MediaHTMLAttributes = JSXInternal.MediaHTMLAttributes;
export import MetaHTMLAttributes = JSXInternal.MetaHTMLAttributes;
export import MeterHTMLAttributes = JSXInternal.MeterHTMLAttributes;
export import QuoteHTMLAttributes = JSXInternal.QuoteHTMLAttributes;
export import ObjectHTMLAttributes = JSXInternal.ObjectHTMLAttributes;
export import OlHTMLAttributes = JSXInternal.OlHTMLAttributes;
export import OptgroupHTMLAttributes = JSXInternal.OptgroupHTMLAttributes;
export import OptionHTMLAttributes = JSXInternal.OptionHTMLAttributes;
export import OutputHTMLAttributes = JSXInternal.OutputHTMLAttributes;
export import ParamHTMLAttributes = JSXInternal.ParamHTMLAttributes;
export import ProgressHTMLAttributes = JSXInternal.ProgressHTMLAttributes;
export import SlotHTMLAttributes = JSXInternal.SlotHTMLAttributes;
export import ScriptHTMLAttributes = JSXInternal.ScriptHTMLAttributes;
export import SelectHTMLAttributes = JSXInternal.SelectHTMLAttributes;
export import SourceHTMLAttributes = JSXInternal.SourceHTMLAttributes;
export import StyleHTMLAttributes = JSXInternal.StyleHTMLAttributes;
export import TableHTMLAttributes = JSXInternal.TableHTMLAttributes;
export import TextareaHTMLAttributes = JSXInternal.TextareaHTMLAttributes;
export import TdHTMLAttributes = JSXInternal.TdHTMLAttributes;
export import ThHTMLAttributes = JSXInternal.ThHTMLAttributes;
export import TimeHTMLAttributes = JSXInternal.TimeHTMLAttributes;
export import TrackHTMLAttributes = JSXInternal.TrackHTMLAttributes;
export import VideoHTMLAttributes = JSXInternal.VideoHTMLAttributes;
// Events
export import TargetedEvent = JSXInternal.TargetedEvent;
export import ChangeEvent = JSXInternal.TargetedEvent;
export import ClipboardEvent = JSXInternal.TargetedClipboardEvent;
export import CompositionEvent = JSXInternal.TargetedCompositionEvent;
export import DragEvent = JSXInternal.TargetedDragEvent;
export import PointerEvent = JSXInternal.TargetedPointerEvent;
export import FocusEvent = JSXInternal.TargetedFocusEvent;
export import FormEvent = JSXInternal.TargetedEvent;
export import InvalidEvent = JSXInternal.TargetedEvent;
export import KeyboardEvent = JSXInternal.TargetedKeyboardEvent;
export import MouseEvent = JSXInternal.TargetedMouseEvent;
export import TouchEvent = JSXInternal.TargetedTouchEvent;
export import UIEvent = JSXInternal.TargetedUIEvent;
export import AnimationEvent = JSXInternal.TargetedAnimationEvent;
export import TransitionEvent = JSXInternal.TargetedTransitionEvent;
// Event Handler Types
export import EventHandler = JSXInternal.EventHandler;
export import ChangeEventHandler = JSXInternal.GenericEventHandler;
export import ClipboardEventHandler = JSXInternal.ClipboardEventHandler;
export import CompositionEventHandler = JSXInternal.CompositionEventHandler;
export import DragEventHandler = JSXInternal.DragEventHandler;
export import PointerEventHandler = JSXInternal.PointerEventHandler;
export import FocusEventHandler = JSXInternal.FocusEventHandler;
export import FormEventHandler = JSXInternal.GenericEventHandler;
export import InvalidEventHandler = JSXInternal.GenericEventHandler;
export import KeyboardEventHandler = JSXInternal.KeyboardEventHandler;
export import MouseEventHandler = JSXInternal.MouseEventHandler;
export import TouchEventHandler = JSXInternal.TouchEventHandler;
export import UIEventHandler = JSXInternal.UIEventHandler;
export import AnimationEventHandler = JSXInternal.AnimationEventHandler;
export import TransitionEventHandler = JSXInternal.TransitionEventHandler;
export function createPortal(
vnode: preact.ComponentChildren,
container: preact.ContainerNode
): preact.VNode<any>;
export function render(
vnode: preact.ComponentChild,
parent: preact.ContainerNode,
callback?: () => void
): Component | null;
export function hydrate(
vnode: preact.ComponentChild,
parent: preact.ContainerNode,
callback?: () => void
): Component | null;
export function unmountComponentAtNode(
container: preact.ContainerNode
): boolean;
export function createFactory(
type: preact.VNode<any>['type']
): (
props?: any,
...children: preact.ComponentChildren[]
) => preact.VNode<any>;
export function isValidElement(element: any): boolean;
export function isFragment(element: any): boolean;
export function isMemo(element: any): boolean;
export function findDOMNode(
component: preact.Component | Element
): Element | null;
export abstract class PureComponent<
P = {},
S = {},
SS = any
> extends preact.Component<P, S> {
isPureReactComponent: boolean;
}
export type MemoExoticComponent<C extends preact.FunctionalComponent<any>> =
preact.FunctionComponent<ComponentProps<C>> & {
readonly type: C;
};
export function memo<P = {}>(
component: preact.FunctionalComponent<P>,
comparer?: (prev: P, next: P) => boolean
): preact.FunctionComponent<P>;
export function memo<C extends preact.FunctionalComponent<any>>(
component: C,
comparer?: (
prev: preact.ComponentProps<C>,
next: preact.ComponentProps<C>
) => boolean
): C;
export interface RefAttributes<R> extends preact.Attributes {
ref?: preact.Ref<R> | undefined;
}
/**
* @deprecated Please use `ForwardRefRenderFunction` instead.
*/
export interface ForwardFn<P = {}, T = any> {
(props: P, ref: ForwardedRef<T>): preact.ComponentChild;
displayName?: string;
}
export interface ForwardRefRenderFunction<T = any, P = {}> {
(props: P, ref: ForwardedRef<T>): preact.ComponentChild;
displayName?: string;
}
export interface ForwardRefExoticComponent<P>
extends preact.FunctionComponent<P> {
defaultProps?: Partial<P> | undefined;
}
export function forwardRef<R, P = {}>(
fn: ForwardRefRenderFunction<R, P>
): preact.FunctionalComponent<PropsWithoutRef<P> & { ref?: preact.Ref<R> }>;
export type PropsWithoutRef<P> = Omit<P, 'ref'>;
interface MutableRefObject<T> {
current: T;
}
export type ForwardedRef<T> =
| ((instance: T | null) => void)
| MutableRefObject<T | null>
| null;
export type ElementType<
P = any,
Tag extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements
> =
| { [K in Tag]: P extends JSX.IntrinsicElements[K] ? K : never }[Tag]
| ComponentType<P>;
export type ComponentPropsWithoutRef<T extends ElementType> = PropsWithoutRef<
ComponentProps<T>
>;
export type ComponentPropsWithRef<C extends ElementType> = C extends new (
props: infer P
) => Component<any, any>
? PropsWithoutRef<P> & RefAttributes<InstanceType<C>>
: ComponentProps<C>;
export type ElementRef<
C extends
| ForwardRefExoticComponent<any>
| { new (props: any): Component<any, any> }
| ((props: any) => ReactNode)
| keyof JSXInternal.IntrinsicElements
> = 'ref' extends keyof ComponentPropsWithRef<C>
? NonNullable<ComponentPropsWithRef<C>['ref']> extends RefAttributes<
infer Instance
>['ref']
? Instance
: never
: never;
export function flushSync<R>(fn: () => R): R;
export function flushSync<A, R>(fn: (a: A) => R, a: A): R;
export function unstable_batchedUpdates(
callback: (arg?: any) => void,
arg?: any
): void;
export type PropsWithChildren<P = unknown> = P & {
children?: preact.ComponentChildren | undefined;
};
export const Children: {
map<T extends preact.ComponentChild, R>(
children: T | T[],
fn: (child: T, i: number) => R
): R[];
forEach<T extends preact.ComponentChild>(
children: T | T[],
fn: (child: T, i: number) => void
): void;
count: (children: preact.ComponentChildren) => number;
only: (children: preact.ComponentChildren) => preact.ComponentChild;
toArray: (children: preact.ComponentChildren) => preact.VNode<{}>[];
};
// scheduler
export const unstable_ImmediatePriority: number;
export const unstable_UserBlockingPriority: number;
export const unstable_NormalPriority: number;
export const unstable_LowPriority: number;
export const unstable_IdlePriority: number;
export function unstable_runWithPriority(
priority: number,
callback: () => void
): void;
export const unstable_now: () => number;
}