UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

276 lines 7.78 kB
/** * @typed/fp/dom is a collection of abstractions for working with the DOM * @since 0.13.2 */ import { A } from 'ts-toolbelt'; import { ParseSelector } from 'typed-query-selector/parser'; import * as E from './Env'; import * as Fail from './Fail'; import { ArgsOf } from './function'; import * as KV from './KV'; import * as O from './Option'; import * as RS from './ReaderStream'; import { Resume } from './Resume'; import { SchedulerEnv } from './Scheduler'; /** * @category Environment * @since 0.13.2 */ export declare type HistoryEnv = { readonly history: History; }; /** * @category DOM * @since 0.13.2 */ export declare const getHistory: E.Env<HistoryEnv, History>; /** * @category Environment * @since 0.13.2 */ export declare type LocationEnv = { readonly location: Location; }; /** * @category DOM * @since 0.13.2 */ export declare const getLocation: E.Env<LocationEnv, Location>; /** * @category Environment * @since 0.13.2 */ export declare type RafEnv = { readonly raf: Resume<number>; }; /** * @category Effect * @since 0.13.2 */ export declare const raf: E.Env<RafEnv, number>; /** * @category Environment * @since 0.13.2 */ export declare type WhenIdleEnv = { readonly whenIdle: Resume<IdleDeadline>; }; /** * @category Effect * @since 0.13.2 */ export declare const whenIdle: E.Env<WhenIdleEnv, IdleDeadline>; /** * @category Environment * @since 0.13.2 */ export declare type WindowEnv = { readonly window: Window; }; /** * @category DOM * @since 0.13.2 */ export declare const getWindow: E.Env<WindowEnv, Window>; /** * @category Environment * @since 0.13.2 */ export declare type DocumentEnv = { readonly document: Document; }; /** * @category DOM * @since 0.13.2 */ export declare const getDocument: E.Env<DocumentEnv, Document>; /** * @category Environment * @since 0.13.2 */ export declare type RootElementEnv = { readonly rootElement: Element; }; /** * @category DOM * @since 0.13.2 */ export declare const getRootElement: E.Env<RootElementEnv, Element>; /** * @category DOM * @since 0.13.2 */ export declare const querySelector: <S extends string>(selector: S) => <N extends ParentNode>(el: N) => O.Option<NonNullable<ParseSelector<S, A.Cast<N, Element>>>>; /** * @category DOM * @since 0.13.2 */ export declare const querySelectorAll: <S extends string>(selector: S) => <N extends ParentNode>(el: N) => readonly ParseSelector<S, Element>[]; /** * A Failure used to represent being unable to query for our RootElement * @category Failure * @since 0.13.4 */ export declare const QueryRootElementFailure: Fail.Failure<"@typed/fp/dom/QueryRootElementError", { readonly selector: string; readonly message: string; }>; /** * A Failure used to represent being unable to query for our RootElement * @category Environment * @since 0.13.4 */ export declare type QueryRootElementFailure = Fail.EnvOf<typeof QueryRootElementFailure>; /** * Provide the root element to your application by querying for an element in the document * @category DOM * @since 0.13.2 */ export declare const queryRootElement: (selector: string) => E.Env<Fail.Fail<"@typed/fp/dom/QueryRootElementError", { readonly selector: string; readonly message: string; }> & DocumentEnv, RootElementEnv>; /** * Common setup for rendering an application into an element * @category DOM * @since 0.13.4 */ export declare const patch: <Patch extends (element: any, renderable: any) => any>(patch: Patch) => <E>(stream: RS.ReaderStream<E, ArgsOf<Patch>[1]>) => RS.ReaderStream<E & KV.Env & RootElementEnv & Fail.Fail<"@typed/fp/dom/QueryRootElementError", { readonly selector: string; readonly message: string; }>, ArgsOf<Patch>[0]>; /** * Find the default EventMap for a given element * @category Type-level * @since 0.13.4 */ export declare type GetDefaultEventMap<Target> = Target extends Window ? WindowEventMap : Target extends Document ? DocumentEventMap : Target extends HTMLBodyElement ? HTMLBodyElementEventMap : Target extends HTMLVideoElement ? HTMLVideoElementEventMap : Target extends HTMLMediaElement ? HTMLMediaElementEventMap : Target extends HTMLFrameSetElement ? HTMLFrameSetElementEventMap : Target extends HTMLElement ? HTMLElementEventMap : Target extends SVGElement ? SVGElementEventMap : Target extends Element ? ElementEventMap : Readonly<Record<string, unknown>>; /** * Append the proper CurrentTarget to an Event * @category Type-level * @since 0.13.4 */ export declare type WithCurrentTarget<Ev, Target> = Ev & { readonly currentTarget: Target; }; /** * @category Use * @since 0.13.4 */ export declare const useEventListener: <E1, Target extends EventTarget, EventName extends string, E2, A>(getEventListener: E.Env<E1, O.Option<Target>>, eventName: EventName, onEvent: (event: WithCurrentTarget<GetDefaultEventMap<Target>[EventName], Target>) => E.Env<E2, A>) => E.Env<E1 & E2 & KV.Env & SchedulerEnv, O.Option<A>>; /** * @category Use * @since 0.13.2 */ export declare const usePopstate: () => E.Env<HistoryEnv & WindowEnv & KV.Env & SchedulerEnv, unknown>; /** * @category Use * @since 0.13.2 */ export declare const useHashChange: () => E.Env<LocationEnv & WindowEnv & KV.Env & SchedulerEnv, string>; /** * @category Use * @since 0.13.2 */ export declare const useWhenUrlChanges: <E, A>(env: E.Env<E, A>) => E.Env<LocationEnv & WindowEnv & KV.Env & SchedulerEnv & HistoryEnv & E, A>; /** * @category Use * @since 0.13.2 */ export declare const useLocation: E.Env<LocationEnv & WindowEnv & KV.Env & SchedulerEnv & HistoryEnv, Location>; /** * @category Use * @since 0.13.2 */ export declare const useHistory: E.Env<LocationEnv & WindowEnv & KV.Env & SchedulerEnv & HistoryEnv, History>; /** * @category History * @since 0.13.2 */ export declare const pushState: <A>(state: A, path: string) => E.Env<HistoryEnv, void>; /** * @category History * @since 0.13.2 */ export declare const navigateTo: (path: string) => E.Env<HistoryEnv, void>; /** * @category History * @since 0.13.2 */ export declare const replaceState: <A>(state: A, path: string) => E.Env<HistoryEnv, void>; /** * @category History * @since 0.13.2 */ export declare const getState: E.Env<HistoryEnv, unknown>; /** * @category History * @since 0.13.3 */ export declare const goBack: E.Env<HistoryEnv, void>; /** * @category History * @since 0.13.3 */ export declare const goForward: E.Env<HistoryEnv, void>; /** * @category History * @since 0.13.3 */ export declare const goTo: (n: number) => E.Env<HistoryEnv, void>; /** * @category Location * @since 0.13.2 */ export declare const reload: E.Env<LocationEnv, void>; /** * @category Location * @since 0.13.2 */ export declare const assign: (url: string | URL) => E.Env<LocationEnv, void>; /** * @category Location * @since 0.13.3 */ export declare const getHash: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getPathname: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getOrigin: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getHref: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getHost: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getHostname: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getPort: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getProtocol: E.Env<LocationEnv, string>; /** * @category Location * @since 0.13.3 */ export declare const getSearch: E.Env<LocationEnv, string>; //# sourceMappingURL=dom.d.ts.map