{"version":3,"file":"use-dates-input.mjs","names":[],"sources":["../../../src/hooks/use-dates-input/use-dates-input.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useDisclosure } from '@mantine/hooks';\nimport { useDatesContext } from '../../components/DatesProvider';\nimport { DatePickerType, DatePickerValue } from '../../types';\nimport { DateFormatter, getFormattedDate } from '../../utils';\nimport { useUncontrolledDates } from '../use-uncontrolled-dates/use-uncontrolled-dates';\n\ninterface UseDatesInput<Type extends DatePickerType = 'default'> {\n  type: Type;\n  value: DatePickerValue<Type> | undefined;\n  defaultValue: DatePickerValue<Type> | undefined;\n  onChange: ((value: DatePickerValue<Type>) => void) | undefined;\n  locale: string | undefined;\n  format: string | undefined;\n  closeOnChange: boolean | undefined;\n  sortDates: boolean | undefined;\n  labelSeparator: string | undefined;\n  valueFormatter: DateFormatter | undefined;\n}\n\nexport function useDatesInput<Type extends DatePickerType = 'default'>({\n  type,\n  value,\n  defaultValue,\n  onChange,\n  locale,\n  format,\n  closeOnChange,\n  sortDates,\n  labelSeparator,\n  valueFormatter,\n}: UseDatesInput<Type>) {\n  const ctx = useDatesContext();\n\n  const [dropdownOpened, dropdownHandlers] = useDisclosure(false);\n\n  const [_value, _setValue] = useUncontrolledDates({\n    type,\n    value,\n    defaultValue,\n    onChange,\n  });\n\n  const formattedValue = getFormattedDate({\n    type,\n    date: _value,\n    locale: ctx.getLocale(locale),\n    format: format!,\n    labelSeparator: ctx.getLabelSeparator(labelSeparator),\n    formatter: valueFormatter,\n  });\n\n  const setValue = (val: any) => {\n    if (closeOnChange) {\n      if (type === 'default') {\n        dropdownHandlers.close();\n      }\n\n      if (type === 'range' && val[0] && val[1]) {\n        dropdownHandlers.close();\n      }\n    }\n\n    if (sortDates && type === 'multiple') {\n      _setValue([...val].sort((a, b) => (dayjs(a).isAfter(dayjs(b)) ? 1 : -1)));\n    } else {\n      _setValue(val);\n    }\n  };\n\n  const onClear = () => setValue(type === 'range' ? [null, null] : type === 'multiple' ? [] : null);\n  const shouldClear =\n    type === 'range' ? !!_value[0] : type === 'multiple' ? _value.length > 0 : _value !== null;\n\n  return {\n    _value,\n    setValue,\n    onClear,\n    shouldClear,\n    formattedValue,\n    dropdownOpened,\n    dropdownHandlers,\n  };\n}\n"],"mappings":";;;;;;;AAoBA,SAAgB,cAAuD,EACrE,MACA,OACA,cACA,UACA,QACA,QACA,eACA,WACA,gBACA,kBACsB;CACtB,MAAM,MAAM,gBAAgB;CAE5B,MAAM,CAAC,gBAAgB,oBAAoB,cAAc,KAAK;CAE9D,MAAM,CAAC,QAAQ,aAAa,qBAAqB;EAC/C;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,iBAAiB,iBAAiB;EACtC;EACA,MAAM;EACN,QAAQ,IAAI,UAAU,MAAM;EACpB;EACR,gBAAgB,IAAI,kBAAkB,cAAc;EACpD,WAAW;CACb,CAAC;CAED,MAAM,YAAY,QAAa;EAC7B,IAAI,eAAe;GACjB,IAAI,SAAS,WACX,iBAAiB,MAAM;GAGzB,IAAI,SAAS,WAAW,IAAI,MAAM,IAAI,IACpC,iBAAiB,MAAM;EAE3B;EAEA,IAAI,aAAa,SAAS,YACxB,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,MAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,IAAI,IAAI,EAAG,CAAC;OAExE,UAAU,GAAG;CAEjB;CAEA,MAAM,gBAAgB,SAAS,SAAS,UAAU,CAAC,MAAM,IAAI,IAAI,SAAS,aAAa,CAAC,IAAI,IAAI;CAIhG,OAAO;EACL;EACA;EACA;EACA,aANA,SAAS,UAAU,CAAC,CAAC,OAAO,KAAK,SAAS,aAAa,OAAO,SAAS,IAAI,WAAW;EAOtF;EACA;EACA;CACF;AACF"}