{"version":3,"file":"use-form-list.cjs","names":["reorderErrors","reorderPath","changeErrorIndices","removePath","insertPath","replacePath"],"sources":["../../../src/hooks/use-form-list/use-form-list.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { changeErrorIndices, reorderErrors } from '../../lists';\nimport { insertPath, removePath, reorderPath, replacePath } from '../../paths';\nimport { InsertListItem, RemoveListItem, ReorderListItem, ReplaceListItem } from '../../types';\nimport type { $FormErrors } from '../use-form-errors/use-form-errors';\nimport type { $FormStatus } from '../use-form-status/use-form-status';\nimport type { $FormValues } from '../use-form-values/use-form-values';\nimport type { $FormWatch } from '../use-form-watch/use-form-watch';\n\ninterface UseFormListInput<Values extends Record<string, any>> {\n  $values: $FormValues<Values>;\n  $errors: $FormErrors<Values>;\n  $status: $FormStatus<Values>;\n  $watch: $FormWatch<Values>;\n}\n\nexport function useFormList<Values extends Record<string, any>>({\n  $values,\n  $errors,\n  $status,\n  $watch,\n}: UseFormListInput<Values>) {\n  const reorderListItem: ReorderListItem<Values> = useCallback((path, payload) => {\n    const previousValues = $values.refValues.current;\n    $status.clearFieldDirty(path);\n    $errors.setErrors((errs) => reorderErrors(path, payload, errs));\n    $values.setValues({\n      values: reorderPath(path, payload, $values.refValues.current),\n      updateState: true,\n    });\n    $watch.notifyWatchSubscribers(previousValues);\n  }, []);\n\n  const removeListItem: RemoveListItem<Values> = useCallback((path, index) => {\n    const previousValues = $values.refValues.current;\n    $status.clearFieldDirty(path);\n    $errors.setErrors((errs) => changeErrorIndices(path, index, errs, -1));\n    $values.setValues({\n      values: removePath(path, index, $values.refValues.current),\n      updateState: true,\n    });\n    $watch.notifyWatchSubscribers(previousValues);\n  }, []);\n\n  const insertListItem: InsertListItem<Values> = useCallback((path, item, index) => {\n    const previousValues = $values.refValues.current;\n    $status.clearFieldDirty(path);\n    $errors.setErrors((errs) => changeErrorIndices(path, index, errs, 1));\n    $values.setValues({\n      values: insertPath(path, item, index, $values.refValues.current),\n      updateState: true,\n    });\n    $watch.notifyWatchSubscribers(previousValues);\n  }, []);\n\n  const replaceListItem: ReplaceListItem<Values> = useCallback((path, index, item) => {\n    const previousValues = $values.refValues.current;\n    $status.clearFieldDirty(path);\n    $values.setValues({\n      values: replacePath(path, item, index, $values.refValues.current),\n      updateState: true,\n    });\n    $watch.notifyWatchSubscribers(previousValues);\n  }, []);\n\n  return { reorderListItem, removeListItem, insertListItem, replaceListItem };\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,YAAgD,EAC9D,SACA,SACA,SACA,UAC2B;CA4C3B,OAAO;EAAE,kBAAA,GAAA,MAAA,cA3CqD,MAAM,YAAY;GAC9E,MAAM,iBAAiB,QAAQ,UAAU;GACzC,QAAQ,gBAAgB,IAAI;GAC5B,QAAQ,WAAW,SAASA,uBAAAA,cAAc,MAAM,SAAS,IAAI,CAAC;GAC9D,QAAQ,UAAU;IAChB,QAAQC,qBAAAA,YAAY,MAAM,SAAS,QAAQ,UAAU,OAAO;IAC5D,aAAa;GACf,CAAC;GACD,OAAO,uBAAuB,cAAc;EAC9C,GAAG,CAAC,CAkCmB;EAAG,iBAAA,GAAA,MAAA,cAhCkC,MAAM,UAAU;GAC1E,MAAM,iBAAiB,QAAQ,UAAU;GACzC,QAAQ,gBAAgB,IAAI;GAC5B,QAAQ,WAAW,SAASC,6BAAAA,mBAAmB,MAAM,OAAO,MAAM,EAAE,CAAC;GACrE,QAAQ,UAAU;IAChB,QAAQC,oBAAAA,WAAW,MAAM,OAAO,QAAQ,UAAU,OAAO;IACzD,aAAa;GACf,CAAC;GACD,OAAO,uBAAuB,cAAc;EAC9C,GAAG,CAAC,CAuBmC;EAAG,iBAAA,GAAA,MAAA,cArBkB,MAAM,MAAM,UAAU;GAChF,MAAM,iBAAiB,QAAQ,UAAU;GACzC,QAAQ,gBAAgB,IAAI;GAC5B,QAAQ,WAAW,SAASD,6BAAAA,mBAAmB,MAAM,OAAO,MAAM,CAAC,CAAC;GACpE,QAAQ,UAAU;IAChB,QAAQE,oBAAAA,WAAW,MAAM,MAAM,OAAO,QAAQ,UAAU,OAAO;IAC/D,aAAa;GACf,CAAC;GACD,OAAO,uBAAuB,cAAc;EAC9C,GAAG,CAAC,CAYmD;EAAG,kBAAA,GAAA,MAAA,cAVI,MAAM,OAAO,SAAS;GAClF,MAAM,iBAAiB,QAAQ,UAAU;GACzC,QAAQ,gBAAgB,IAAI;GAC5B,QAAQ,UAAU;IAChB,QAAQC,qBAAAA,YAAY,MAAM,MAAM,OAAO,QAAQ,UAAU,OAAO;IAChE,aAAa;GACf,CAAC;GACD,OAAO,uBAAuB,cAAc;EAC9C,GAAG,CAAC,CAEoE;CAAE;AAC5E"}