UNPKG

wcz-layout

Version:

1 lines 45.6 kB
{"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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"}