import * as React from 'react'; import { submissionService } from '../apps'; import { FormTypes, SubmissionTypes } from '@oneblink/types'; import { SectionState } from '../types/form'; /** * Use this if you want to implement a controlled auto saving form. See * {@link OneBlinkFormControlled} for a full example. If you do not need to * control the `submission` or `definition` properties, you can use the * {@link OneBlinkAutoSaveForm} component. * * @param options * @returns * @group Hooks */ export default function useFormSubmissionAutoSaveState({ form, initialSubmission, resumeAtElement, removeAutoSaveDataBeforeSubmit, removeAutoSaveDataBeforeSaveDraft, autoSaveKey, formIsDisabled, onCancel, onSubmit, onSaveDraft, resumeSectionState, resumePreviousElapsedDurationSeconds, }: { form: FormTypes.Form; removeAutoSaveDataBeforeSubmit?: boolean; removeAutoSaveDataBeforeSaveDraft?: boolean; autoSaveKey: string; formIsDisabled?: boolean; onCancel: () => unknown; onSubmit: (newFormSubmission: submissionService.NewFormSubmission) => unknown; initialSubmission?: SubmissionTypes.S3SubmissionData['submission']; resumeAtElement?: FormTypes.FormElement; onSaveDraft?: (newDraftSubmission: submissionService.NewDraftSubmission) => unknown; resumeSectionState?: SectionState; resumePreviousElapsedDurationSeconds?: number; }): { definition: FormTypes.Form; submission: { [name: string]: unknown; }; lastElementUpdated: FormTypes.FormElement | undefined; executedLookups: import("../types/form").ExecutedLookups; sectionState: { id: string; state: "COLLAPSED" | "EXPANDED"; }[] | undefined; isLoadingAutoSaveSubmission: boolean; isAutoSaveSubmissionAvailable: boolean; startNewSubmission: () => void; continueAutoSaveSubmission: () => void; handleSubmit: (submissionResult: submissionService.NewFormSubmission) => void; handleCancel: () => void; handleSaveDraft: ((newDraftSubmission: submissionService.NewDraftSubmission) => void) | undefined; handleNavigateAway: () => void; setFormSubmission: React.Dispatch>; getCurrentSubmissionDuration: () => number; };