///
import { FieldState, Initial, InputFieldData, RenderValue, FieldStateData, FieldStateValue, InputFieldHelpers, TextSelection } from "@reactway/forms-core";
import { UseFieldResult } from "./use-field";
import { FieldRef } from ".";
export interface InputElementProps> {
value: FieldStateValue | RenderValue>;
onChange: React.ChangeEventHandler;
onFocus: React.FocusEventHandler;
onBlur: React.FocusEventHandler;
onKeyDown?: React.KeyboardEventHandler;
onKeyPress?: React.KeyboardEventHandler;
onKeyUp?: React.KeyboardEventHandler;
onClick?: React.MouseEventHandler;
onSelect?: React.ReactEventHandler;
onTouchCancel?: React.TouchEventHandler;
onTouchCancelCapture?: React.TouchEventHandler;
onTouchEnd?: React.TouchEventHandler;
onTouchEndCapture?: React.TouchEventHandler;
onTouchMove?: React.TouchEventHandler;
onTouchMoveCapture?: React.TouchEventHandler;
onTouchStart?: React.TouchEventHandler;
onTouchStartCapture?: React.TouchEventHandler;
onScroll?: React.UIEventHandler;
onWheel?: React.WheelEventHandler;
}
export interface UseInputFieldResult> extends UseFieldResult {
inputElementProps: InputElementProps;
selectionUpdateGuard: SingleUpdateGuard;
renderId: string;
}
export declare type InputElement = HTMLInputElement;
export interface UseInputFieldEventHooks {
getValueFromChangeEvent?: (event: React.ChangeEvent) => any;
}
export declare function getRenderValue>>(fieldState: TFieldState): RenderValue>;
export declare function useInputField>>(fieldName: string, fieldRef: FieldRef | undefined, initialStateFactory: () => Initial, eventHooks?: UseInputFieldEventHooks): UseInputFieldResult;
export declare function useInputFieldHelpers(fieldId: string): InputFieldHelpers;
export declare function extractTextSelection(event: React.ChangeEvent | React.SyntheticEvent): TextSelection | undefined;
export declare class SingleUpdateGuard {
renderId: string;
constructor(renderId: string);
protected isUpdateHandled: boolean;
get updated(): boolean;
markAsUpdated(): void;
}
//# sourceMappingURL=use-input-field.d.ts.map