{"version":3,"file":"hooks.mjs","names":["value","hasError","helperText","TextField","label","hasError","helperText","label","hasError","helperText","isSubmitting","handleClick","hasError","helperText","char","event"],"sources":["../src/components/form/FormAutocomplete.tsx","../src/components/form/FormCheckbox.tsx","../src/components/form/FormDatePicker.tsx","../src/components/form/FormDateRangePicker.tsx","../src/components/form/FormTimePicker.tsx","../src/components/form/FormTimeRangePicker.tsx","../src/components/form/FormDateTimePicker.tsx","../src/components/form/FormDateTimeRangePicker.tsx","../src/components/form/FormNumberField.tsx","../src/components/form/FormRadioGroup.tsx","../src/components/form/FormSlider.tsx","../src/components/form/FormSubmitButton.tsx","../src/components/form/FormSwitch.tsx","../src/components/form/FormTextField.tsx","../src/hooks/useForm.ts","../src/hooks/useNotification.ts","../src/hooks/useScanDetection.ts"],"sourcesContent":["import { Autocomplete, TextField } from \"@mui/material\";\nimport type { AutocompleteProps, TextFieldProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormAutocompleteProps extends Omit<\n  AutocompleteProps<any, boolean, boolean, boolean>,\n  FormOmittedProps\n> {\n  textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;\n}\n\nexport const FormAutocomplete: FC<FormAutocompleteProps> = ({\n  textFieldProps,\n  ...autocompleteProps\n}) => {\n  const field = useFieldContext();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <Autocomplete\n      value={field.state.value}\n      onChange={(_, value) => !autocompleteProps.freeSolo && field.handleChange(value)}\n      onInputChange={(_, value, reason) =>\n        reason !== \"reset\" && autocompleteProps.freeSolo && field.handleChange(value)\n      }\n      onBlur={field.handleBlur}\n      aria-label={field.name}\n      {...autocompleteProps}\n      renderInput={(parameters) => (\n        <TextField\n          {...parameters}\n          name={field.name}\n          error={isTouched && hasError}\n          helperText={isTouched && helperText}\n          {...textFieldProps}\n        />\n      )}\n    />\n  );\n};\n","import { Checkbox, FormControl, FormControlLabel, FormHelperText } from \"@mui/material\";\nimport type { CheckboxProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {\n  label?: string;\n}\n\nexport const FormCheckbox: FC<FormCheckboxProps> = (props) => {\n  const field = useFieldContext<boolean | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <FormControl component=\"fieldset\">\n      <FormControlLabel\n        control={\n          <Checkbox\n            name={field.name}\n            checked={Boolean(field.state.value)}\n            onChange={(event) => field.handleChange(event.target.checked)}\n            onBlur={field.handleBlur}\n            aria-label={field.name}\n            {...props}\n          />\n        }\n        label={props.label ?? \"\"}\n      />\n      {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\n    </FormControl>\n  );\n};\n","import { DatePicker } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { DatePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormDatePickerProps extends Omit<DatePickerProps, FormOmittedProps> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormDatePicker: FC<FormDatePickerProps> = (props) => {\n  const field = useFieldContext<Dayjs | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <DatePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { DateRangePicker } from \"@mui/x-date-pickers-pro\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { DateRangePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormDateRangePickerProps extends Omit<DateRangePickerProps, FormOmittedProps> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormDateRangePicker: FC<FormDateRangePickerProps> = (props) => {\n  const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <DateRangePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { TimePicker } from \"@mui/x-date-pickers-pro\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { TimePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormTimePickerProps extends Omit<TimePickerProps, FormOmittedProps> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormTimePicker: FC<FormTimePickerProps> = (props) => {\n  const field = useFieldContext<Dayjs | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <TimePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { TimeRangePicker } from \"@mui/x-date-pickers-pro\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { TimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormTimeRangePickerProps extends Omit<TimeRangePickerProps, FormOmittedProps> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormTimeRangePicker: FC<FormTimeRangePickerProps> = (props) => {\n  const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <TimeRangePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { DateTimePicker } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { DateTimePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormDateTimePickerProps extends Omit<DateTimePickerProps, FormOmittedProps> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormDateTimePicker: FC<FormDateTimePickerProps> = (props) => {\n  const field = useFieldContext<Dayjs | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <DateTimePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { DateTimeRangePicker } from \"@mui/x-date-pickers-pro\";\nimport type { PickersTextFieldProps } from \"@mui/x-date-pickers/PickersTextField\";\nimport type { DateTimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\nimport type { Dayjs } from \"dayjs\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormDateTimeRangePickerProps extends Omit<\n  DateTimeRangePickerProps,\n  FormOmittedProps\n> {\n  textFieldProps?: Partial<PickersTextFieldProps>;\n}\n\nexport const FormDateTimeRangePicker: FC<FormDateTimeRangePickerProps> = (props) => {\n  const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <DateTimeRangePicker\n      name={field.name}\n      value={field.state.value}\n      onChange={(value) => field.handleChange(value)}\n      slotProps={{\n        textField: {\n          onBlur: field.handleBlur,\n          error: isTouched && hasError,\n          helperText: isTouched && helperText,\n          ...props.textFieldProps,\n        },\n        ...props.slotProps,\n      }}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { TextField } from \"@mui/material\";\nimport { NumericFormat } from \"react-number-format\";\nimport type { InputAttributes, NumericFormatProps } from \"react-number-format/types/types\";\nimport type { FC } from \"react\";\nimport type { TextFieldProps } from \"@mui/material\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormNumberFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\n  defaultValue?: number | null;\n  options?: Omit<\n    NumericFormatProps<InputAttributes>,\n    \"customInput\" | \"onValueChange\" | keyof InputAttributes\n  >;\n}\n\nexport const FormNumberField: FC<FormNumberFieldProps> = ({ options, ...props }) => {\n  const field = useFieldContext<number | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <NumericFormat\n      customInput={TextField}\n      name={field.name}\n      value={field.state.value ?? \"\"}\n      onValueChange={({ floatValue }) => field.handleChange(floatValue)}\n      onBlur={field.handleBlur}\n      error={isTouched && hasError}\n      helperText={isTouched && helperText}\n      aria-label={field.name}\n      {...props}\n      {...options}\n    />\n  );\n};\n","import {\n  FormControl,\n  FormControlLabel,\n  FormHelperText,\n  FormLabel,\n  Radio,\n  RadioGroup,\n} from \"@mui/material\";\nimport type { RadioGroupProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\ninterface Option {\n  label: string;\n  value: string | number;\n}\n\nexport interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {\n  label?: string;\n  options: Array<Option>;\n}\n\nexport const FormRadioGroup: FC<FormRadioGroupProps> = ({ label, options, ...props }) => {\n  const field = useFieldContext<string | number | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <FormControl component=\"fieldset\">\n      {label && <FormLabel component=\"legend\">{label}</FormLabel>}\n      <RadioGroup\n        name={field.name}\n        value={field.state.value ?? \"\"}\n        onChange={(event) => field.handleChange(event.target.value)}\n        onBlur={field.handleBlur}\n        aria-label={field.name}\n        {...props}\n      >\n        {options.map((option) => (\n          <FormControlLabel\n            key={option.value}\n            value={option.value}\n            control={<Radio />}\n            label={option.label}\n          />\n        ))}\n      </RadioGroup>\n      {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\n    </FormControl>\n  );\n};\n","import { FormControl, FormHelperText, FormLabel, Slider } from \"@mui/material\";\nimport type { SliderProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {\n  label?: string;\n}\n\nexport const FormSlider: FC<FormSliderProps> = ({ label, ...props }) => {\n  const field = useFieldContext<number | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <FormControl component=\"fieldset\">\n      {label && <FormLabel>{label}</FormLabel>}\n      <Slider\n        name={field.name}\n        value={field.state.value ?? 0}\n        onChange={(_, value) => field.handleChange(Array.isArray(value) ? value[0] : value)}\n        onBlur={field.handleBlur}\n        aria-label={field.name}\n        {...props}\n      />\n      {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\n    </FormControl>\n  );\n};\n","import { Button } from \"@mui/material\";\nimport type { ButtonProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { useFormContext } from \"~/hooks/useForm\";\n\nexport type FormSubmitButtonProps = Omit<ButtonProps, \"loading\" | \"disabled\" | \"onClick\" | \"type\">;\n\nexport const FormSubmitButton: FC<FormSubmitButtonProps> = (props) => {\n  const form = useFormContext();\n\n  const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    await form.handleSubmit();\n  };\n\n  return (\n    <form.Subscribe selector={(state) => [state.canSubmit, state.isSubmitting]}>\n      {([canSubmit, isSubmitting]) => (\n        <Button\n          loading={isSubmitting}\n          disabled={!canSubmit}\n          onClick={handleClick}\n          type=\"submit\"\n          aria-label=\"submit\"\n          {...props}\n        />\n      )}\n    </form.Subscribe>\n  );\n};\n","import { FormControl, FormControlLabel, FormHelperText, Switch } from \"@mui/material\";\nimport type { SwitchProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {\n  label?: string;\n}\n\nexport const FormSwitch: FC<FormSwitchProps> = (props) => {\n  const field = useFieldContext<boolean | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <FormControl component=\"fieldset\">\n      <FormControlLabel\n        control={\n          <Switch\n            name={field.name}\n            checked={Boolean(field.state.value)}\n            onChange={(event) => field.handleChange(event.target.checked)}\n            onBlur={field.handleBlur}\n            aria-label={field.name}\n            {...props}\n          />\n        }\n        label={props.label ?? \"\"}\n      />\n      {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\n    </FormControl>\n  );\n};\n","import { TextField } from \"@mui/material\";\nimport type { TextFieldProps } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { FormOmittedProps } from \"~/lib/utils\";\nimport { useFieldContext } from \"~/hooks/useForm\";\nimport { getFieldStatus } from \"~/lib/utils\";\n\nexport interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\n  type?: \"color\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\";\n}\n\nexport const FormTextField: FC<FormTextFieldProps> = (props) => {\n  const field = useFieldContext<string | number | null | undefined>();\n  const { isTouched, hasError, helperText } = getFieldStatus(field);\n\n  return (\n    <TextField\n      name={field.name}\n      value={field.state.value ?? \"\"}\n      onChange={(event) => field.handleChange(event.target.value)}\n      onBlur={field.handleBlur}\n      error={isTouched && hasError}\n      helperText={isTouched && helperText}\n      aria-label={field.name}\n      {...props}\n    />\n  );\n};\n","import { createFormHook, createFormHookContexts } from \"@tanstack/react-form\";\nimport { FormAutocomplete as Autocomplete } from \"~/components/form/FormAutocomplete\";\nimport { FormCheckbox as Checkbox } from \"~/components/form/FormCheckbox\";\nimport { FormDatePicker as DatePicker } from \"~/components/form/FormDatePicker\";\nimport { FormDateRangePicker as DateRangePicker } from \"~/components/form/FormDateRangePicker\";\nimport { FormTimePicker as TimePicker } from \"~/components/form/FormTimePicker\";\nimport { FormTimeRangePicker as TimeRangePicker } from \"~/components/form/FormTimeRangePicker\";\nimport { FormDateTimePicker as DateTimePicker } from \"~/components/form/FormDateTimePicker\";\nimport { FormDateTimeRangePicker as DateTimeRangePicker } from \"~/components/form/FormDateTimeRangePicker\";\nimport { FormNumberField as NumberField } from \"~/components/form/FormNumberField\";\nimport { FormRadioGroup as RadioGroup } from \"~/components/form/FormRadioGroup\";\nimport { FormSlider as Slider } from \"~/components/form/FormSlider\";\nimport { FormSubmitButton as SubmitButton } from \"~/components/form/FormSubmitButton\";\nimport { FormSwitch as Switch } from \"~/components/form/FormSwitch\";\nimport { FormTextField as TextField } from \"~/components/form/FormTextField\";\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n  createFormHookContexts();\n\nexport const { useAppForm: useLayoutForm, withForm: withLayoutForm } = createFormHook({\n  fieldComponents: {\n    TextField,\n    NumberField,\n    Autocomplete,\n    Checkbox,\n    Switch,\n    RadioGroup,\n    Slider,\n    DatePicker,\n    DateRangePicker,\n    TimePicker,\n    TimeRangePicker,\n    DateTimePicker,\n    DateTimeRangePicker,\n  },\n  formComponents: {\n    SubmitButton,\n  },\n  fieldContext,\n  formContext,\n});\n","import { useContext } from \"react\";\nimport { NotificationContext } from \"~/contexts/NotificationContext\";\n\n/**\n * @deprecated Prefer a success animation for successful actions and a non-disappearing alert dialog for errors.\n */\nexport function useNotification() {\n  const context = useContext(NotificationContext);\n  if (!context) throw new Error(\"useNotification must be used within a NotificationProvider\");\n  return context;\n}\n","import { useEffect, useRef } from \"react\";\n\ninterface BufferCharacter {\n  time: number;\n  char: string;\n}\n\ninterface Buffer {\n  current: Array<BufferCharacter>;\n}\n\ninterface Config {\n  /** Time to wait from last character to then trigger an evaluation of the buffer. Defaults to 100ms. */\n  timeToEvaluate?: number;\n  /** Average time between characters in milliseconds. Used to determine if input is from keyboard or a scanner. Defaults to 50ms.*/\n  averageWaitTime?: number;\n  /** Character that barcode scanner prefixes input with.*/\n  startCharacter?: Array<string>;\n  /** Character that barcode scanner suffixes input with. Defaults to [\"Enter\", \"Escape\"].*/\n  endCharacter?: Array<string>;\n  /** Callback to use on complete scan input.*/\n  onComplete: (code: string) => void;\n  /** Callback to use on error. */\n  onError?: (error: string) => void;\n  /** Minimum length a scanned code should be. Defaults to 1.*/\n  minLength?: number;\n  /** Ignore scan input if this node is focused.*/\n  ignoreIfFocusOn?: Node;\n  /** Stop propagation on keydown event. Defaults to false.*/\n  stopPropagation?: boolean;\n  /** Prevent default on keydown event. Defaults to false.*/\n  preventDefault?: boolean;\n  /** Bind keydown event to this node. Defaults to document (resolved on the client only, so the hook is SSR-safe).*/\n  container?: Node;\n  /** Indicates if the scanning is enabled. */\n  enabled?: boolean;\n}\n\nexport const useScanDetection = ({\n  timeToEvaluate = 100,\n  averageWaitTime = 50,\n  startCharacter = [],\n  endCharacter = [\"Enter\", \"Escape\"],\n  onComplete,\n  onError,\n  minLength = 1,\n  ignoreIfFocusOn,\n  stopPropagation = false,\n  preventDefault = false,\n  container,\n  enabled = true,\n}: Config) => {\n  const buffer: Buffer = useRef([]);\n  const timeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n  const clearBuffer = () => {\n    buffer.current = [];\n  };\n  const evaluateBuffer = () => {\n    clearTimeout(timeout.current);\n    const sum = buffer.current\n      .map(({ time }, k, arr) => (k > 0 ? time - arr[k - 1].time : 0))\n      .slice(1)\n      .reduce((total, delta) => total + delta, 0);\n    const avg = sum / (buffer.current.length - 1);\n\n    const code = buffer.current\n      .slice(startCharacter.length > 0 ? 1 : 0)\n      .filter(({ char }) => char !== \"Shift\" && char !== \"Tab\")\n      .map(({ char }) => char)\n      .join(\"\");\n\n    if (\n      avg <= averageWaitTime &&\n      buffer.current.slice(startCharacter.length > 0 ? 1 : 0).length >= minLength\n    ) {\n      onComplete(code);\n    } else if (avg <= averageWaitTime) {\n      onError?.(code);\n    }\n    clearBuffer();\n  };\n\n  const onKeyDown = (event: KeyboardEvent) => {\n    if (!enabled) return;\n\n    if (event.currentTarget !== ignoreIfFocusOn) {\n      if (endCharacter.includes(event.key)) {\n        evaluateBuffer();\n      }\n      if (\n        buffer.current.length > 0 ||\n        startCharacter.includes(event.key) ||\n        startCharacter.length === 0\n      ) {\n        clearTimeout(timeout.current);\n        timeout.current = setTimeout(evaluateBuffer, timeToEvaluate);\n        buffer.current.push({ time: performance.now(), char: event.key });\n      }\n    }\n    if (stopPropagation) {\n      event.stopPropagation();\n    }\n    if (preventDefault) {\n      event.preventDefault();\n    }\n  };\n\n  const onKeyDownRef = useRef(onKeyDown);\n  onKeyDownRef.current = onKeyDown;\n\n  useEffect(() => {\n    return () => {\n      clearTimeout(timeout.current);\n    };\n  }, []);\n\n  useEffect(() => {\n    const target = container ?? document;\n    const listener = (event: Event) => onKeyDownRef.current(event as KeyboardEvent);\n    target.addEventListener(\"keydown\", listener);\n    return () => {\n      target.removeEventListener(\"keydown\", listener);\n    };\n  }, [container]);\n};\n"],"mappings":"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"}