monadic_react
Version:
A monadic library for easily composing React-based libraries.
82 lines (81 loc) • 3.25 kB
TypeScript
/// <reference types="react" />
import { C, Cont, CmdCommon, Context } from './core';
export declare type RepeatProps<A> = {
kind: "repeat";
value: A;
p: (_: A) => C<A>;
} & CmdCommon<A>;
export declare type AllProps<A> = {
kind: "all";
ps: Array<C<A>>;
} & CmdCommon<Array<A>>;
export declare type AnyProps<A, B> = {
kind: "any";
value: A;
ps: Array<(_: A) => C<B>>;
className: string;
} & CmdCommon<B>;
export declare type NeverProps<A, B> = {
kind: "never";
p: C<A>;
} & CmdCommon<B>;
export declare type RetractProps<A, B> = {
kind: "retract";
inb: (_: A) => B;
out: (_: A) => (_: B) => A;
p: (_: B) => C<B>;
value: A;
} & CmdCommon<A>;
export declare type DelayProps<A> = {
kind: "delay";
dt: number;
value: A;
p: (_: A) => C<A>;
} & CmdCommon<A>;
export declare type WaitProps<A> = {
kind: "wait";
dt: number;
value: A;
p: (_: A) => C<A>;
} & CmdCommon<A>;
export declare type RetryStrategy<A> = "never" | "semi exponential" | {
kind: "retry then show failure";
times: number;
on_failure: C<A>;
} | {
kind: "never";
on_failure: C<A>;
};
export declare type LiftPromiseProps<A, B> = {
kind: "lift promise";
p: (_: B) => Promise<A>;
retry_strategy: RetryStrategy<A>;
value: B;
} & CmdCommon<A>;
export declare type SimpleMenuType = "side menu" | {
kind: "tabs";
max_tabs: number;
};
export declare let repeat: <A>(key?: string, dbg?: () => string) => (p: (_: A) => C<A>) => (_: A) => C<A>;
export declare let any: <A, B>(key?: string, className?: string, dbg?: () => string) => (ps: ((_: A) => C<B>)[]) => (_: A) => C<B>;
export declare let never: <A, B>(p: C<A>, key?: string) => C<B>;
export declare let all: <A>(ps: C<A>[], key?: string, dbg?: () => string) => C<A[]>;
export declare let retract: <A, B>(key?: string, dbg?: () => string) => (inb: (_: A) => B, out: (_: A) => (_: B) => A, p: (_: B) => C<B>) => (_: A) => C<A>;
export declare let lift_promise: <A, B>(p: (_: A) => Promise<B>, retry_strategy: RetryStrategy<B>, key?: string, dbg?: () => string) => (_: A) => C<B>;
export declare let delay: <A>(dt: number, key?: string, dbg?: () => string) => (p: (_: A) => C<A>) => (_: A) => C<A>;
export declare let waiting: <A>(dt: number, key?: string, dbg?: () => string) => (p: (_: A) => C<A>) => (_: A) => C<A>;
export declare let mk_submenu_entry: <A>(label: string, children: MenuEntryValue<A>[]) => MenuEntrySubMenu<A>;
export declare let mk_menu_entry: <A>(v: A) => MenuEntryValue<A>;
export declare type MenuEntryValue<A> = {
kind: "item";
value: A;
};
export declare type MenuEntrySubMenu<A> = {
kind: "sub menu";
label: string;
children: Array<MenuEntryValue<A>>;
};
export declare type MenuEntry<A> = MenuEntryValue<A> | MenuEntrySubMenu<A>;
export declare let simple_menu: <A, B>(type: SimpleMenuType, to_string: (_: A) => string, key?: string, dbg?: () => string) => (items: MenuEntry<A>[], p: (_: A) => C<B>, selected_item?: A, selected_sub_menu?: string) => C<B>;
export declare let custom: <A>(key?: string, dbg?: () => string) => (render: (ctxt: () => Context) => (_: Cont<A>) => JSX.Element) => C<A>;
export declare let hide: (f_name: string, f: C<void>) => C<void>;