import type { MdyReactivity } from "@modyra/core"; import { type MdyWidgetKind } from "./catalog.js"; import type { MdyWidgetController } from "./contract.js"; export type MdyValueWidgetIntent = { readonly type: "input"; readonly value: T; } | { readonly type: "select"; readonly value: T; } | { readonly type: "toggle"; } | { readonly type: "increment"; readonly step?: number; readonly max?: number | null; } | { readonly type: "decrement"; readonly step?: number; readonly min?: number | null; } | { readonly type: "blur"; } | { readonly type: "focus"; }; export interface MdyValueWidgetState { readonly value: T; readonly disabled: boolean; readonly readonly: boolean; readonly invalid: boolean; readonly touched: boolean; readonly dirty: boolean; } export interface MdyValueWidgetController extends MdyWidgetController, MdyValueWidgetIntent> { setValue(value: T): void; setDisabled(disabled: boolean): void; setReadonly(readonly: boolean): void; setInvalid(invalid: boolean): void; } export interface MdyValueWidgetControllerOptions { readonly kind: MdyWidgetKind; readonly value: T; readonly disabled?: boolean; readonly readonly?: boolean; readonly invalid?: boolean; readonly onChange?: (value: T) => void; } /** Controller shared by scalar fields whose semantic transition is value + dirty/touched. */ export declare function createValueWidgetController(options: MdyValueWidgetControllerOptions, reactivity?: MdyReactivity): MdyValueWidgetController;