import * as _hooks from '../../hooks'; import * as preact from '../../src'; import { JSXInternal } from '../../src/jsx'; import * as _Suspense from './suspense'; import * as _SuspenseList from './suspense-list'; interface SignalLike { value: T; peek(): T; subscribe(fn: (value: T) => void): () => void; } type Signalish = T | SignalLike; // 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(val: T): T; export function useSyncExternalStore( 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; // 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 extends JSXInternal.HTMLAttributes {} export interface HTMLProps extends JSXInternal.HTMLAttributes, preact.ClassAttributes {} export import DetailedHTMLProps = JSXInternal.DetailedHTMLProps; export import CSSProperties = JSXInternal.CSSProperties; export interface SVGProps extends JSXInternal.SVGAttributes, preact.ClassAttributes {} interface SVGAttributes extends JSXInternal.SVGAttributes {} interface ReactSVG extends JSXInternal.IntrinsicSVGElements {} type HTMLAttributeReferrerPolicy = | '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; type HTMLAttributeAnchorTarget = | '_self' | '_blank' | '_parent' | '_top' | (string & {}); interface AnchorHTMLAttributes extends HTMLAttributes { download?: Signalish; href?: Signalish; hrefLang?: Signalish; media?: Signalish; ping?: Signalish; target?: Signalish; type?: Signalish; referrerPolicy?: Signalish; } interface AudioHTMLAttributes extends MediaHTMLAttributes {} interface AreaHTMLAttributes extends HTMLAttributes { alt?: Signalish; coords?: Signalish; download?: Signalish; href?: Signalish; hrefLang?: Signalish; media?: Signalish; referrerPolicy?: Signalish; shape?: Signalish; target?: Signalish; } interface BaseHTMLAttributes extends HTMLAttributes { href?: Signalish; target?: Signalish; } interface BlockquoteHTMLAttributes extends HTMLAttributes { cite?: Signalish; } interface ButtonHTMLAttributes extends HTMLAttributes { disabled?: Signalish; form?: Signalish; formAction?: Signalish; formEncType?: Signalish; formMethod?: Signalish; formNoValidate?: Signalish; formTarget?: Signalish; name?: Signalish; type?: Signalish<'submit' | 'reset' | 'button' | undefined>; value?: Signalish; } interface CanvasHTMLAttributes extends HTMLAttributes { height?: Signalish; width?: Signalish; } interface ColHTMLAttributes extends HTMLAttributes { span?: Signalish; width?: Signalish; } interface ColgroupHTMLAttributes extends HTMLAttributes { span?: Signalish; } interface DataHTMLAttributes extends HTMLAttributes { value?: Signalish; } interface DetailsHTMLAttributes extends HTMLAttributes { open?: Signalish; onToggle?: ChangeEventHandler | undefined; } interface DelHTMLAttributes extends HTMLAttributes { cite?: Signalish; dateTime?: Signalish; } interface DialogHTMLAttributes extends HTMLAttributes { onCancel?: ChangeEventHandler | undefined; onClose?: ChangeEventHandler | undefined; open?: Signalish; } interface EmbedHTMLAttributes extends HTMLAttributes { height?: Signalish; src?: Signalish; type?: Signalish; width?: Signalish; } interface FieldsetHTMLAttributes extends HTMLAttributes { disabled?: Signalish; form?: Signalish; name?: Signalish; } interface FormHTMLAttributes extends HTMLAttributes { acceptCharset?: Signalish; action?: Signalish; autoComplete?: Signalish; encType?: Signalish; method?: Signalish; name?: Signalish; noValidate?: Signalish; target?: Signalish; } interface HtmlHTMLAttributes extends HTMLAttributes { manifest?: Signalish; } interface IframeHTMLAttributes extends HTMLAttributes { allow?: Signalish; allowFullScreen?: Signalish; allowTransparency?: Signalish; /** @deprecated */ frameBorder?: Signalish; height?: Signalish; loading?: 'eager' | 'lazy' | undefined; /** @deprecated */ marginHeight?: Signalish; /** @deprecated */ marginWidth?: Signalish; name?: Signalish; referrerPolicy?: Signalish; sandbox?: Signalish; /** @deprecated */ scrolling?: Signalish; seamless?: Signalish; src?: Signalish; srcDoc?: Signalish; width?: Signalish; } type HTMLAttributeCrossOrigin = 'anonymous' | 'use-credentials'; interface ImgHTMLAttributes extends HTMLAttributes { alt?: Signalish; crossOrigin?: Signalish; decoding?: Signalish<'async' | 'auto' | 'sync' | undefined>; height?: Signalish; loading?: Signalish<'eager' | 'lazy' | undefined>; referrerPolicy?: Signalish; sizes?: Signalish; src?: Signalish; srcSet?: Signalish; useMap?: Signalish; width?: Signalish; } interface InsHTMLAttributes extends HTMLAttributes { cite?: Signalish; dateTime?: Signalish; } type HTMLInputTypeAttribute = | 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | (string & {}); interface InputHTMLAttributes extends HTMLAttributes { accept?: Signalish; alt?: Signalish; autoComplete?: Signalish; capture?: Signalish<'user' | 'environment' | undefined>; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute checked?: Signalish; disabled?: Signalish; enterKeyHint?: Signalish< | 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | undefined >; form?: Signalish; formAction?: Signalish; formEncType?: Signalish; formMethod?: Signalish; formNoValidate?: Signalish; formTarget?: Signalish; height?: Signalish; list?: Signalish; max?: Signalish; maxLength?: Signalish; min?: Signalish; minLength?: Signalish; multiple?: Signalish; name?: Signalish; pattern?: Signalish; placeholder?: Signalish; readOnly?: Signalish; required?: Signalish; size?: Signalish; src?: Signalish; step?: Signalish; type?: HTMLInputTypeAttribute | undefined; value?: Signalish; width?: Signalish; onChange?: ChangeEventHandler | undefined; } interface KeygenHTMLAttributes extends HTMLAttributes { challenge?: Signalish; disabled?: Signalish; form?: Signalish; keyType?: Signalish; keyParams?: Signalish; name?: Signalish; } interface LabelHTMLAttributes extends HTMLAttributes { form?: Signalish; htmlFor?: Signalish; } interface LiHTMLAttributes extends HTMLAttributes { value?: Signalish; } interface LinkHTMLAttributes extends HTMLAttributes { as?: Signalish; crossOrigin?: Signalish; fetchPriority?: Signalish<'high' | 'low' | 'auto'>; href?: Signalish; hrefLang?: Signalish; integrity?: Signalish; media?: Signalish; imageSrcSet?: Signalish; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; sizes?: Signalish; type?: Signalish; charSet?: Signalish; } interface MapHTMLAttributes extends HTMLAttributes { name?: Signalish; } interface MenuHTMLAttributes extends HTMLAttributes { type?: Signalish; } interface MediaHTMLAttributes extends HTMLAttributes { autoPlay?: Signalish; controls?: Signalish; controlsList?: Signalish; crossOrigin?: Signalish; loop?: Signalish; mediaGroup?: Signalish; muted?: Signalish; playsInline?: Signalish; preload?: Signalish; src?: Signalish; } interface MetaHTMLAttributes extends HTMLAttributes { charSet?: Signalish; httpEquiv?: Signalish; name?: Signalish; media?: Signalish; } interface MeterHTMLAttributes extends HTMLAttributes { form?: Signalish; high?: Signalish; low?: Signalish; max?: Signalish; min?: Signalish; optimum?: Signalish; value?: Signalish; } interface QuoteHTMLAttributes extends HTMLAttributes { cite?: Signalish; } interface ObjectHTMLAttributes extends HTMLAttributes { classID?: Signalish; data?: Signalish; form?: Signalish; height?: Signalish; name?: Signalish; type?: Signalish; useMap?: Signalish; width?: Signalish; wmode?: Signalish; } interface OlHTMLAttributes extends HTMLAttributes { reversed?: Signalish; start?: Signalish; type?: Signalish<'1' | 'a' | 'A' | 'i' | 'I' | undefined>; } interface OptgroupHTMLAttributes extends HTMLAttributes { disabled?: Signalish; label?: Signalish; } interface OptionHTMLAttributes extends HTMLAttributes { disabled?: Signalish; label?: Signalish; selected?: Signalish; value?: Signalish; } interface OutputHTMLAttributes extends HTMLAttributes { form?: Signalish; htmlFor?: Signalish; name?: Signalish; } interface ParamHTMLAttributes extends HTMLAttributes { name?: Signalish; value?: Signalish; } interface ProgressHTMLAttributes extends HTMLAttributes { max?: Signalish; value?: Signalish; } interface SlotHTMLAttributes extends HTMLAttributes { name?: Signalish; } interface ScriptHTMLAttributes extends HTMLAttributes { async?: Signalish; /** @deprecated */ charSet?: Signalish; crossOrigin?: Signalish; defer?: Signalish; integrity?: Signalish; noModule?: Signalish; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; src?: Signalish; type?: Signalish; } interface SelectHTMLAttributes extends HTMLAttributes { autoComplete?: Signalish; disabled?: Signalish; form?: Signalish; multiple?: Signalish; name?: Signalish; required?: Signalish; size?: Signalish; value?: Signalish; onChange?: ChangeEventHandler | undefined; } interface SourceHTMLAttributes extends HTMLAttributes { height?: Signalish; media?: Signalish; sizes?: Signalish; src?: Signalish; srcSet?: Signalish; type?: Signalish; width?: Signalish; } interface StyleHTMLAttributes extends HTMLAttributes { media?: Signalish; scoped?: Signalish; type?: Signalish; } interface TableHTMLAttributes extends HTMLAttributes { cellPadding?: Signalish; cellSpacing?: Signalish; summary?: Signalish; width?: Signalish; } interface TextareaHTMLAttributes extends HTMLAttributes { autoComplete?: Signalish; cols?: Signalish; dirName?: Signalish; disabled?: Signalish; form?: Signalish; maxLength?: Signalish; minLength?: Signalish; name?: Signalish; placeholder?: Signalish; readOnly?: Signalish; required?: Signalish; rows?: Signalish; value?: Signalish; wrap?: Signalish; onChange?: ChangeEventHandler | undefined; } interface TdHTMLAttributes extends HTMLAttributes { align?: Signalish< 'left' | 'center' | 'right' | 'justify' | 'char' | undefined >; colSpan?: Signalish; headers?: Signalish; rowSpan?: Signalish; scope?: Signalish; abbr?: Signalish; height?: Signalish; width?: Signalish; valign?: Signalish<'top' | 'middle' | 'bottom' | 'baseline' | undefined>; } interface ThHTMLAttributes extends HTMLAttributes { align?: Signalish< 'left' | 'center' | 'right' | 'justify' | 'char' | undefined >; colSpan?: Signalish; headers?: Signalish; rowSpan?: Signalish; scope?: Signalish; abbr?: Signalish; } interface TimeHTMLAttributes extends HTMLAttributes { dateTime?: Signalish; } interface TrackHTMLAttributes extends HTMLAttributes { default?: Signalish; kind?: Signalish; label?: Signalish; src?: Signalish; srcLang?: Signalish; } interface VideoHTMLAttributes extends MediaHTMLAttributes { height?: Signalish; playsInline?: Signalish; poster?: Signalish; width?: Signalish; disablePictureInPicture?: Signalish; disableRemotePlayback?: Signalish; } interface WebViewHTMLAttributes extends HTMLAttributes { allowFullScreen?: Signalish; allowpopups?: Signalish; autosize?: Signalish; blinkfeatures?: Signalish; disableblinkfeatures?: Signalish; disableguestresize?: Signalish; disablewebsecurity?: Signalish; guestinstance?: Signalish; httpreferrer?: Signalish; nodeintegration?: Signalish; partition?: Signalish; plugins?: Signalish; preload?: Signalish; src?: Signalish; useragent?: Signalish; webpreferences?: Signalish; } // 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 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; 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['type'] ): ( props?: any, ...children: preact.ComponentChildren[] ) => preact.VNode; 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 { isPureReactComponent: boolean; } export type MemoExoticComponent> = preact.FunctionComponent> & { readonly type: C; }; export function memo

( component: preact.FunctionalComponent

, comparer?: (prev: P, next: P) => boolean ): preact.FunctionComponent

; export function memo>( component: C, comparer?: ( prev: preact.ComponentProps, next: preact.ComponentProps ) => boolean ): C; export interface RefAttributes extends preact.Attributes { ref?: preact.Ref | undefined; } export interface ForwardFn

{ (props: P, ref: ForwardedRef): preact.ComponentChild; displayName?: string; } export interface ForwardRefExoticComponent

extends preact.FunctionComponent

{ defaultProps?: Partial

| undefined; } export function forwardRef( fn: ForwardFn ): preact.FunctionalComponent & { ref?: preact.Ref }>; export type PropsWithoutRef

= Omit; interface MutableRefObject { current: T; } export type ForwardedRef = | ((instance: T | null) => void) | MutableRefObject | null; export type ElementType

= | { [K in Tag]: P extends JSX.IntrinsicElements[K] ? K : never }[Tag] | ComponentType

; export type ComponentPropsWithoutRef = PropsWithoutRef>; export type ComponentPropsWithRef< C extends ComponentType | keyof JSXInternal.IntrinsicElements > = C extends new ( props: infer P ) => Component ? PropsWithoutRef

& RefAttributes> : ComponentProps; export function flushSync(fn: () => R): R; export function flushSync(fn: (a: A) => R, a: A): R; export function unstable_batchedUpdates( callback: (arg?: any) => void, arg?: any ): void; export type PropsWithChildren

= P & { children?: preact.ComponentChildren | undefined; }; export const Children: { map( children: T | T[], fn: (child: T, i: number) => R ): R[]; forEach( 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; }