{"version":3,"file":"actions.cjs","names":["useLayoutEffect","useEffect"],"sources":["../../src/actions/actions.ts"],"sourcesContent":["import { useEffect, useLayoutEffect } from 'react';\nimport type {\n  ClearErrors,\n  ClearFieldError,\n  InsertListItem,\n  RemoveListItem,\n  ReorderListItem,\n  Reset,\n  ResetDirty,\n  ResetStatus,\n  SetErrors,\n  SetFieldError,\n  SetFieldValue,\n  SetFormStatus,\n  SetInitialValues,\n  SetValues,\n  UseFormReturnType,\n} from '../types';\n\nfunction dispatchEvent(type: string, detail?: any): any {\n  window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nfunction validateFormName(name: string) {\n  if (!/^[0-9a-zA-Z-]+$/.test(name)) {\n    throw new Error(\n      `[@mantine/use-form] Form name \"${name}\" is invalid, it should contain only letters, numbers and dashes`\n    );\n  }\n}\n\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport function createFormActions<FormValues extends Record<string, any> = Record<string, any>>(\n  name: string\n) {\n  validateFormName(name);\n\n  const setFieldValue: SetFieldValue<FormValues> = (path, value) =>\n    dispatchEvent(`mantine-form:${name}:set-field-value`, { path, value });\n\n  const setValues: SetValues<FormValues> = (values) =>\n    dispatchEvent(`mantine-form:${name}:set-values`, values);\n\n  const setInitialValues: SetInitialValues<FormValues> = (values) =>\n    dispatchEvent(`mantine-form:${name}:set-initial-values`, values);\n\n  const setErrors: SetErrors = (errors) => dispatchEvent(`mantine-form:${name}:set-errors`, errors);\n\n  const setFieldError: SetFieldError<FormValues> = (path, error) =>\n    dispatchEvent(`mantine-form:${name}:set-field-error`, { path, error });\n\n  const clearFieldError: ClearFieldError = (path) =>\n    dispatchEvent(`mantine-form:${name}:clear-field-error`, path);\n\n  const clearErrors: ClearErrors = () => dispatchEvent(`mantine-form:${name}:clear-errors`);\n\n  const reset: Reset = () => dispatchEvent(`mantine-form:${name}:reset`);\n\n  const validate: () => void = () => dispatchEvent(`mantine-form:${name}:validate`);\n\n  const validateField: (path: any) => void = (path) =>\n    dispatchEvent(`mantine-form:${name}:validate-field`, path);\n\n  const reorderListItem: ReorderListItem<FormValues> = (path, payload) =>\n    dispatchEvent(`mantine-form:${name}:reorder-list-item`, { path, payload });\n\n  const removeListItem: RemoveListItem<FormValues> = (path, index) =>\n    dispatchEvent(`mantine-form:${name}:remove-list-item`, { path, index });\n\n  const insertListItem: InsertListItem<FormValues> = (path, item, index) =>\n    dispatchEvent(`mantine-form:${name}:insert-list-item`, { path, index, item });\n\n  const setDirty: SetFormStatus = (value) => dispatchEvent(`mantine-form:${name}:set-dirty`, value);\n\n  const setTouched: SetFormStatus = (value) =>\n    dispatchEvent(`mantine-form:${name}:set-touched`, value);\n\n  const resetDirty: ResetDirty<FormValues> = (values) =>\n    dispatchEvent(`mantine-form:${name}:reset-dirty`, values);\n\n  const resetTouched: ResetStatus = () => dispatchEvent(`mantine-form:${name}:reset-touched`);\n\n  return {\n    setFieldValue,\n    setValues,\n    setInitialValues,\n    setErrors,\n    setFieldError,\n    clearFieldError,\n    clearErrors,\n    reset,\n    validate,\n    validateField,\n    reorderListItem,\n    removeListItem,\n    insertListItem,\n    setDirty,\n    setTouched,\n    resetDirty,\n    resetTouched,\n  };\n}\n\nfunction useFormEvent(eventKey: string | undefined, handler: (event: any) => void) {\n  useIsomorphicEffect(() => {\n    if (eventKey) {\n      window.addEventListener(eventKey, handler);\n      return () => window.removeEventListener(eventKey, handler);\n    }\n    return undefined;\n  }, [eventKey]);\n}\n\nexport function useFormActions<Values = Record<string, unknown>, TransformedValues = Values>(\n  name: string | undefined,\n  form: UseFormReturnType<Values, TransformedValues, any>\n) {\n  if (name) {\n    validateFormName(name);\n  }\n\n  useFormEvent(`mantine-form:${name}:set-field-value`, (event: CustomEvent) =>\n    form.setFieldValue(event.detail.path, event.detail.value)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-values`, (event: CustomEvent) =>\n    form.setValues(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-initial-values`, (event: CustomEvent) =>\n    form.setInitialValues(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-errors`, (event: CustomEvent) =>\n    form.setErrors(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-field-error`, (event: CustomEvent) =>\n    form.setFieldError(event.detail.path, event.detail.error)\n  );\n\n  useFormEvent(`mantine-form:${name}:clear-field-error`, (event: CustomEvent) =>\n    form.clearFieldError(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:clear-errors`, form.clearErrors);\n  useFormEvent(`mantine-form:${name}:reset`, form.reset);\n  useFormEvent(`mantine-form:${name}:validate`, form.validate);\n\n  useFormEvent(`mantine-form:${name}:validate-field`, (event: CustomEvent) =>\n    form.validateField(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:reorder-list-item`, (event: CustomEvent) =>\n    form.reorderListItem(event.detail.path, event.detail.payload)\n  );\n\n  useFormEvent(`mantine-form:${name}:remove-list-item`, (event: CustomEvent) =>\n    form.removeListItem(event.detail.path, event.detail.index)\n  );\n\n  useFormEvent(`mantine-form:${name}:insert-list-item`, (event: CustomEvent) =>\n    form.insertListItem(event.detail.path, event.detail.item, event.detail.index)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-dirty`, (event: CustomEvent) =>\n    form.setDirty(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:set-touched`, (event: CustomEvent) =>\n    form.setTouched(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:reset-dirty`, (event: CustomEvent) =>\n    form.resetDirty(event.detail)\n  );\n\n  useFormEvent(`mantine-form:${name}:reset-touched`, form.resetTouched);\n}\n"],"mappings":"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"}