/// import { FenextjsValidatorClass } from "fenextjs-validator"; import { ErrorFenextjs } from "fenextjs-error"; export interface useDataOptionsRefreshDataIfChangeDefaultDataOptions { active?: boolean; useReloadKeyData?: boolean; } export interface setDataOptions { useOptionsOnChangeDataAfter?: boolean; useSetIsChange?: boolean; } /** * A custom hook options. * * @template T - The type of the data to manage. * @template M - The type of the memoized data. * @param {Object} options - The options for the hook. * @param {Function} options.onChangeDataAfter - A function to execute after the data changes. * @param {T} options.data - The data use not data. * @param {Boolean} options.refreshDataIfChangeDefaultData - A swich for change data if change defaultData. * @param {Function} options.onChangeDataMemoAfter - A function to execute after the dataMemo changes. * @param {Function} options.onMemo - A function to memoize the data. * @param {FenextjsValidatorClass} options.validator - A FenextjsValidatorClass for validate data. * @param {FenextjsValidatorClass} options.validatorMemo - A FenextjsValidatorClass for validate dataMemo. * @param {Function} options.onSubmitData - A function if is valid data for to send. * @param {Function} options.onSubmitDataMemo - A function if is valid dataMemo for to send. * @returns {Object} - An object with the data state and methods to manage it. */ export interface useDataOptions { data?: T; refreshDataIfChangeDefaultData?: useDataOptionsRefreshDataIfChangeDefaultDataOptions; onChangeDataAfter?: (data: T) => void; onDeleteDataAfter?: (data: T) => void; onChangeDataMemoAfter?: (data: M) => void; memoDependencies?: any[]; onMemo?: (data: T) => M; validator?: FenextjsValidatorClass; validatorMemo?: FenextjsValidatorClass; onSubmitData?: (data: T) => RT | Promise; onBeforeSubmitData?: (d: { data: T; isValid?: ErrorFenextjs | true; }) => void; onAfterSubmitDataOk?: (d: { data: T; result: RT; }) => void; onAfterSubmitParseError?: (error: any) => ET; onAfterSubmitDataError?: (d: { data: T; error: ET; }) => void; afterSubmitDataSetIsChangeFalse?: boolean; onSubmitDataMemo?: (data: M) => RM | Promise; onBeforeSubmitDataMemo?: (d: { dataMemo: M; isValidDataMemo?: ErrorFenextjs | true; }) => void; onAfterSubmitDataMemoOk?: (d: { dataMemo: M; result: RM; }) => void; onAfterSubmitParseErrorMemo?: (error: any) => EM; onAfterSubmitDataMemoError?: (d: { dataMemo: M; error: EM; }) => void; afterSubmitDataMemoSetIsChangeFalse?: boolean; autoOnValidate?: boolean; env_log?: { [id in useDataOptionsEnvLog]?: boolean; }; useGlobalContext?: string; } export type useDataOptionsEnvLog = "data" | "dataMemo" | "isValidData" | "isValidDataMemo" | "dataError" | "dataErrorMemo" | "loaderSubmit" | "loaderSubmitMemo" | "keyData" | "isChange"; export interface onChangeDataOptionsProps { onCallback?: (data: T) => void; parseDataBeforeOnChangeData?: (id: keyof T, data: T) => T; } /** * A custom hook to manage data state and changes. * * @template T - The type of the data to manage. * @template M - The type of the memoized data. * @param {T} defaultData - The default value for the data. * @param {useDataOptions} options - The options for the hook. */ export declare const useData: (defaultData: T, options?: useDataOptions) => { data: T; onChangeData: (id: keyof T) => (value: T[keyof T], _options?: onChangeDataOptionsProps) => void; onDeleteData: (id: keyof T) => void; isChange: boolean; setData: (nData: T, optionsData?: setDataOptions) => void; setDataFunction: (f: (p: T) => T, optionsData?: setDataOptions) => void; dataMemo: M; setIsChange: (f: import("react").SetStateAction) => void; onRestart: () => void; onConcatData: (v: Partial | Array) => void; keyData: number; setKeyData: import("react").Dispatch>; onReloadKeyData: () => void; validator: FenextjsValidatorClass | undefined; validatorData: { [id in keyof T]?: FenextjsValidatorClass | undefined; } | undefined; validatorMemo: FenextjsValidatorClass | undefined; validatorMemoData: { [id_1 in keyof M]?: FenextjsValidatorClass | undefined; } | undefined; isValidData: true | ErrorFenextjs | undefined; isValidDataMemo: true | ErrorFenextjs | undefined; onValidateData: () => void; onValidateDataMemo: () => void; onSubmitData: (optionsSubmitData?: { data?: T; overwrite?: { onSubmitData?: useDataOptions["onSubmitData"]; }; onSaveData?: (p: { data: T; result: RT; }) => T; useValidator?: boolean; }) => Promise; onSubmitDataMemo: (optionsSubmitDataMemo?: { dataMemo?: M; overwrite?: { onSubmitDataMemo?: useDataOptions["onSubmitDataMemo"]; }; useValidatorMemo?: boolean; }) => Promise; loaderSubmit: boolean; loaderSubmitMemo: boolean; setLoaderSubmit: (f: import("react").SetStateAction) => void; setLoaderSubmitMemo: (f: import("react").SetStateAction) => void; resultSubmitData: RT | undefined; resultSubmitDataMemo: RM | undefined; dataError: ET | undefined; dataErrorMemo: EM | undefined; setResultSubmitData: (f: import("react").SetStateAction) => void; setResultSubmitDataMemo: (f: import("react").SetStateAction) => void; setDataError: (f: import("react").SetStateAction) => void; setDataErrorMemo: (f: import("react").SetStateAction) => void; };