import type { AriaAttributes, HTMLButtonAttributes, HTMLFormAttributes, HTMLInputAttributes, HTMLSelectAttributes, HTMLTextareaAttributes } from "svelte/elements"; import { type Attachment } from "svelte/attachments"; import type { Nullable, ObjectProperties } from "../../lib/types.js"; import type { Config } from "../config.js"; import type { FieldPseudoElement } from "../id.js"; import type { UiOptions } from "../ui-schema.js"; import { type ObjectUiOptions } from "./ui-schema.js"; import type { FormState } from "./state.js"; interface Disabled { disabled: boolean; } interface Handlers { onfocus?: () => void; onblur?: () => void; oninput?: () => void; onchange?: () => void; } interface Attachable { [key: symbol]: Attachment | false | undefined | null; } export declare const HANDLERS_ATTACHMENT_CACHE: WeakMap(props: P) => P>; /** * NOTE: memoized */ export declare const handlersAttachment: (arg: Handlers) =>

(props: P) => P; export declare function composeProps(ctx: FormState, config: Config, props: A): A; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B): B; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B, bc: (props: B, config: Config, ctx: FormState) => C): C; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B, bc: (props: B, config: Config, ctx: FormState) => C, cd: (props: C, config: Config, ctx: FormState) => D): D; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B, bc: (props: B, config: Config, ctx: FormState) => C, cd: (props: C, config: Config, ctx: FormState) => D, de: (props: D, config: Config, ctx: FormState) => E): E; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B, bc: (props: B, config: Config, ctx: FormState) => C, cd: (props: C, config: Config, ctx: FormState) => D, de: (props: D, config: Config, ctx: FormState) => E, ef: (props: E, config: Config, ctx: FormState) => F): F; export declare function composeProps(ctx: FormState, config: Config, props: A, ab: (props: A, config: Config, ctx: FormState) => B, bc: (props: B, config: Config, ctx: FormState) => C, cd: (props: C, config: Config, ctx: FormState) => D, de: (props: D, config: Config, ctx: FormState) => E, ef: (props: E, config: Config, ctx: FormState) => F, fg: (props: F, config: Config, ctx: FormState) => G): G; export declare function assignProps(options: O): (props: T) => T & O; /** * @query */ export declare function isDisabled(ctx: FormState, attributes?: Partial>): boolean; export declare function disabledProp>, FT>(obj: T, _: Config, ctx: FormState): T; export declare function ariaInvalidProp(obj: T, config: Config, ctx: FormState): T; export declare function ariaDescribedByProp(obj: T, config: Config, ctx: FormState): T; export declare function ariaReadonlyProp(obj: T, config: Config, _: FormState): T & AriaAttributes; export declare function ariaRequiredProp(obj: T, config: Config, _: FormState): T & AriaAttributes; export declare function inputType(format: string | undefined): "datetime-local" | "url" | "color" | "date" | "time" | "email" | undefined; export declare function inputProps(props: T, config: Config, ctx: FormState): T; export declare function textareaProps(props: T, config: Config, ctx: FormState): T; export declare function selectProps(props: T, config: Config, ctx: FormState): T; type WithFor = T & { for?: string; }; export declare function forProp(props: WithFor, config: Config, ctx: FormState): WithFor; export declare function idProp(element: FieldPseudoElement): (props: T, config: Config, ctx: FormState) => T; export declare function tabindexProp(tabindex: number): (props: T) => T; export declare function dataLayoutProp(type: string): (props: T) => T; export declare function buttonTypeProp(type: Exclude): (props: T & HTMLButtonAttributes) => T & HTMLButtonAttributes; export declare function descriptionAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): NonNullable; export declare function errorsListAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): NonNullable; export declare function formAttributes(ctx: FormState, config: Config, option: O, attributes: HTMLFormAttributes | undefined, props: NonNullable): UiOptions[O] & HTMLFormAttributes; export declare function helpAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): NonNullable; export declare function labelAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): NonNullable; export declare function titleAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): NonNullable; export declare function layoutAttributes>>(ctx: FormState, config: Config, option: O, nestedOption: O2, type: T, props: NonNullable): UiOptions[O] & {}; export declare function buttonAttributes(ctx: FormState, config: Config, option: O, type: Exclude, props: NonNullable): NonNullable; export declare function customInputAttributes(ctx: FormState, config: Config, option: O, props: NonNullable): UiOptions[O] & AriaAttributes; export declare function inputAttributes(ctx: FormState, config: Config, option: O, handlers: Handlers, props: NonNullable): NonNullable; export declare function selectAttributes(ctx: FormState, config: Config, option: O, handlers: Handlers, props: NonNullable): NonNullable; export declare function textareaAttributes(ctx: FormState, config: Config, option: O, handlers: Handlers, props: NonNullable): NonNullable; export {};