import { CompositionEventHandler } from 'react'; import { FieldModel } from './models/field'; export declare function multi(...funcs: ((t: T) => R)[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, func4: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, func4: (t: T) => R, func5: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, func4: (t: T) => R, func5: (t: T) => R, func6: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, func4: (t: T) => R, func5: (t: T) => R, func6: (t: T) => R, func7: (t: T) => R, deps?: any[]): (t: T) => void; export declare function useMulti(func1: (t: T) => R, func2: (t: T) => R, func3: (t: T) => R, func4: (t: T) => R, func5: (t: T) => R, func6: (t: T) => R, func7: (t: T) => R, func8: (t: T) => R, deps?: any[]): (t: T) => void; export declare type Func = (...args: Args) => R; export declare type Middleware = (next: F) => F; /** * ## example middleware * ```tsx * function when(condition: () => boolean | Promise): Middleware> { * return (next: IValidator) => * createAsyncValidator((value, ctx) => { * return of(condition()).pipe( * switchMap(cond => { * if (cond) { * return isAsyncValidator(next) ? next.validator(value, ctx) ?? of(null) : of(next(value, ctx)); * } * return of(null); * }), * ); * }); * } * } * * const validator = compose(when(() => Math.random() > 0.5))(required('required if random number great then 5')); * * * ``` */ export declare function compose(...middlewares: Middleware[]): (target: Target) => Target; /** * @deprecated use `useMulti` instead * * `const callback = useMAppend(foo, bar, baz)` * * is equal to * ```js * const callback = useCallback(arg => { * foo(arg); * bar(arg); * baz(arg); * }, [foo, bar, baz]) * ``` */ export declare function useMAppend(...fns: ((t: T) => void)[]): (t: T) => void; /** * `const callback = usePipe(foo, bar, baz)` * * is equal to * ```js * const callback = useMemo(() => arg => { * return baz(bar(foo(arg))) * }, [foo, bar, baz]) * ``` */ export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, deps?: any[]): (t0: T0) => T2; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, deps?: any[]): (t0: T0) => T3; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, fn3: (t3: T3) => T4, deps?: any[]): (t0: T0) => T4; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, fn3: (t3: T3) => T4, fn4: (t4: T4) => T5, deps?: any[]): (t0: T0) => T5; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, fn3: (t3: T3) => T4, fn4: (t4: T4) => T5, fn5: (t5: T5) => T6, deps?: any[]): (t0: T0) => T6; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, fn3: (t3: T3) => T4, fn4: (t4: T4) => T5, fn5: (t5: T5) => T6, fn6: (t6: T6) => T7, deps?: any[]): (t0: T0) => T7; export declare function usePipe(fn0: (t0: T0) => T1, fn1: (t1: T1) => T2, fn2: (t2: T2) => T3, fn3: (t3: T3) => T4, fn4: (t4: T4) => T5, fn5: (t5: T5) => T6, fn6: (t6: T6) => T7, fn7: (t7: T7) => T8, deps?: any[]): (t0: T0) => T8; /** * 生成一个默认的`onChange`回调,这个回调会触发`model.validate` * 如果不需要在onChange的时候触发校验,如下即可: * ```js * const onChange = useCallback(value => model.value = value, [model]); * ``` * 例如是一个`input`: * ```ts * const onChange = useCallback((value: React.ChangeEvent) => { * model.value = e.target.value; * }, [model]); * ``` * 可以配合usePipe使用: * ```js * function mapEventToValue(e) { * return e.target.value; * } * function Foo() { * const onChange = FieldUtils.usePipe( * mapEventToValue, * FieldUtils.makeChangeHandler(model), * ); * } * ``` */ export declare function makeChangeHandler(model: FieldModel, option?: number, callback?: (value: Value) => void): (value: Value) => void; export interface ICompositionHandlers { onCompositionStart: CompositionEventHandler; onCompositionEnd: CompositionEventHandler; } /** * 生成一组 `onCompositionStart` 和 `onCompositionEnd` 的回调函数,用于跟踪输入法 composition 的状态, * 这个状态会写到 `model.isCompositing` 字段上。 * @param model 用于记录状态的 `model` 对象 * @param callbacks 上层传入的被代理的回调 */ export declare function useCompositionHandler(model: FieldModel, callbacks?: Partial>): ICompositionHandlers; //# sourceMappingURL=field-utils.d.ts.map