{"version":3,"sources":["../src/use-range-date-picker.ts"],"sourcesContent":["import type { PropGetter } from \"@yamada-ui/core\"\nimport type { ChangeEvent, CSSProperties } from \"react\"\nimport type { UseCalendarProps } from \"./use-calendar\"\nimport type { UseCalendarPickerProps } from \"./use-calendar-picker\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport {\n  getActiveElement,\n  handlerAll,\n  isActiveElement,\n  isContains,\n  isNumber,\n  mergeRefs,\n  useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useRef, useState } from \"react\"\nimport { isAfterDate, isBeforeDate } from \"./calendar-utils\"\nimport { useCalendarPicker } from \"./use-calendar-picker\"\n\ninterface CalendarProps\n  extends Omit<\n    UseCalendarProps<[Date?, Date?]>,\n    \"enableMultiple\" | \"enableRange\" | \"nextRef\" | \"prevRef\" | \"typeRef\"\n  > {}\n\ninterface UseRangeDatePickerOptions {\n  /**\n   * If `true`, the list element will be closed when value is selected.\n   *\n   * @default true\n   */\n  closeOnSelect?: boolean\n  /**\n   * The end date placeholder\n   */\n  endPlaceholder?: string\n  /**\n   * The start date placeholder\n   */\n  startPlaceholder?: string\n}\n\nexport interface UseRangeDatePickerProps\n  extends UseCalendarPickerProps<CalendarProps>,\n    UseRangeDatePickerOptions {}\n\nexport const useRangeDatePicker = ({\n  allowInputBeyond = false,\n  closeOnSelect = true,\n  defaultValue = [],\n  endPlaceholder,\n  maxSelectValues,\n  placeholder,\n  startPlaceholder,\n  value: valueProp,\n  onChange: onChangeProp,\n  ...rest\n}: UseRangeDatePickerProps) => {\n  const composition = useRef<boolean>(false)\n  const startInputRef = useRef<HTMLInputElement>(null)\n  const endInputRef = useRef<HTMLInputElement>(null)\n  const draftValue = useRef<[Date?, Date?] | undefined>(undefined)\n  const [value, setValue] = useControllableState<[Date?, Date?]>({\n    defaultValue,\n    value: valueProp,\n    onChange: onChangeProp,\n  })\n  const [startValue, endValue] = value\n  const minDate =\n    endValue && isNumber(maxSelectValues)\n      ? dayjs(endValue)\n          .subtract(maxSelectValues - 1, \"day\")\n          .toDate()\n      : undefined\n  const maxDate =\n    startValue && isNumber(maxSelectValues)\n      ? dayjs(startValue)\n          .add(maxSelectValues - 1, \"day\")\n          .toDate()\n      : undefined\n\n  const {\n    allowInput,\n    containerRef,\n    dateToString,\n    inputFormat,\n    locale,\n    open,\n    pattern,\n    stringToDate,\n    formControlProps,\n    getCalendarProps,\n    getContainerProps,\n    getFieldProps,\n    getIconProps,\n    getPopoverProps,\n    inputProps,\n    onClose,\n  } = useCalendarPicker({\n    ...rest,\n    allowInputBeyond,\n    autoFocus: false,\n    defaultValue,\n    enableRange: true,\n    maxSelectValues,\n    value,\n    onChange: ([startValue, endValue]: [Date?, Date?]) => {\n      setStartInputValue(dateToString(startValue) ?? \"\")\n      setEndInputValue(dateToString(endValue) ?? \"\")\n\n      draftValue.current = [startValue, endValue]\n      setValue([startValue, endValue])\n\n      if (closeOnSelect && startValue && endValue) onClose()\n    },\n    onClear: () => {\n      setStartInputValue(\"\")\n      setEndInputValue(\"\")\n      setValue([])\n\n      draftValue.current = undefined\n\n      if (allowInput && open) startInputRef.current?.focus()\n    },\n    onClick: (ev) => {\n      if (open) {\n        if (!startValue) {\n          startInputRef.current?.focus()\n        } else {\n          endInputRef.current?.focus()\n        }\n      }\n\n      rest.onClick?.(ev)\n    },\n    onClose: () => {\n      const [startValue, endValue] = draftValue.current ?? value\n\n      setStartInputValue(dateToString(startValue) ?? \"\")\n      setEndInputValue(dateToString(endValue) ?? \"\")\n\n      draftValue.current = undefined\n\n      rest.onClose?.()\n    },\n    onDelete: (ev) => {\n      if (!endInputRef.current || endInputRef.current.value.length > 1) return\n\n      if (!containerRef.current) return\n\n      const activeEl = getActiveElement(containerRef.current)\n\n      if (!isContains(activeEl, endInputRef.current)) return\n\n      ev.preventDefault()\n      ev.stopPropagation()\n\n      setEndInputValue(\"\")\n      setValue([startValue, undefined])\n\n      const startInputValue = startInputRef.current?.value ?? \"\"\n      const index = startInputValue.length\n\n      startInputRef.current?.focus()\n      startInputRef.current?.setSelectionRange(index, index)\n    },\n    onEnter: () => {\n      if (composition.current) return\n\n      if (!containerRef.current) return\n\n      const activeEl = getActiveElement(containerRef.current)\n\n      const start = isContains(activeEl, startInputRef.current)\n\n      if (start) {\n        const value = dateToString(startValue)\n\n        if (value) {\n          setStartInputValue(value)\n\n          const endInputValue = endInputRef.current?.value ?? \"\"\n          const index = endInputValue.length\n\n          endInputRef.current?.focus()\n          endInputRef.current?.setSelectionRange(index, index)\n        }\n      } else {\n        const value = dateToString(endValue)\n\n        if (value) setEndInputValue(value)\n      }\n    },\n  })\n\n  const [startInputValue, setStartInputValue] = useState<string>(\n    dateToString(startValue) ?? \"\",\n  )\n  const [endInputValue, setEndInputValue] = useState<string>(\n    dateToString(endValue) ?? \"\",\n  )\n\n  const onStartChange = useCallback(\n    (ev: ChangeEvent<HTMLInputElement>) => {\n      let inputValue = ev.target.value\n\n      if (!composition.current) inputValue = inputValue.replace(pattern, \"\")\n\n      let startValue = stringToDate(inputValue)\n\n      if (!!startValue && dayjs(startValue).isValid()) {\n        if (!allowInputBeyond) {\n          if (minDate && isBeforeDate(startValue, minDate)) startValue = minDate\n        }\n\n        if (endValue && isAfterDate(startValue, endValue)) startValue = endValue\n      } else {\n        startValue = undefined\n      }\n\n      draftValue.current = [startValue, endValue]\n      setValue([startValue, endValue])\n      setStartInputValue(inputValue)\n    },\n    [pattern, stringToDate, allowInputBeyond, minDate, setValue, endValue],\n  )\n\n  const onEndChange = useCallback(\n    (ev: ChangeEvent<HTMLInputElement>) => {\n      let inputValue = ev.target.value\n\n      if (!composition.current) inputValue = inputValue.replace(pattern, \"\")\n\n      let endValue = stringToDate(inputValue)\n\n      if (!!endValue && dayjs(endValue).isValid()) {\n        if (!allowInputBeyond) {\n          if (maxDate && isAfterDate(endValue, maxDate)) endValue = maxDate\n        }\n\n        if (startValue && isBeforeDate(endValue, startValue))\n          endValue = startValue\n      } else {\n        endValue = undefined\n      }\n\n      draftValue.current = [startValue, endValue]\n      setValue([startValue, endValue])\n      setEndInputValue(inputValue)\n    },\n    [startValue, allowInputBeyond, maxDate, pattern, stringToDate, setValue],\n  )\n\n  useUpdateEffect(() => {\n    setValue(valueProp ?? [])\n  }, [valueProp])\n\n  useUpdateEffect(() => {\n    if (startInputRef.current && isActiveElement(startInputRef.current)) return\n\n    setStartInputValue(dateToString(startValue) ?? \"\")\n  }, [value])\n\n  useUpdateEffect(() => {\n    if (endInputRef.current && isActiveElement(endInputRef.current)) return\n\n    setEndInputValue(dateToString(endValue) ?? \"\")\n  }, [value])\n\n  useUpdateEffect(() => {\n    setStartInputValue(dateToString(startValue) ?? \"\")\n    setEndInputValue(dateToString(endValue) ?? \"\")\n  }, [locale, inputFormat])\n\n  const getStartInputProps: PropGetter<\"input\"> = useCallback(\n    (props = {}, ref) => {\n      const style: CSSProperties = {\n        ...props.style,\n        ...inputProps.style,\n        ...(formControlProps.disabled || !allowInput\n          ? { pointerEvents: \"none\" }\n          : {}),\n      }\n\n      return {\n        \"aria-label\": \"Start Date\",\n        placeholder: startPlaceholder ?? placeholder,\n        tabIndex: !allowInput ? -1 : 0,\n        zIndex: !startInputValue ? 1 : undefined,\n        ...formControlProps,\n        ...inputProps,\n        ...props,\n        ref: mergeRefs(ref, startInputRef),\n        style,\n        value: startInputValue,\n        onChange: handlerAll(props.onChange, onStartChange),\n        onClick: handlerAll(props.onClick, (ev) => {\n          ev.preventDefault()\n          ev.stopPropagation()\n        }),\n        onCompositionEnd: handlerAll(props.onCompositionEnd, () => {\n          composition.current = false\n\n          setStartInputValue((prev) => prev.replace(pattern, \"\"))\n        }),\n        onCompositionStart: handlerAll(\n          props.onCompositionStart,\n          () => (composition.current = true),\n        ),\n      }\n    },\n    [\n      inputProps,\n      allowInput,\n      startPlaceholder,\n      placeholder,\n      formControlProps,\n      startInputValue,\n      onStartChange,\n      pattern,\n    ],\n  )\n\n  const getEndInputProps: PropGetter<\"input\"> = useCallback(\n    (props = {}, ref) => {\n      const style: CSSProperties = {\n        ...props.style,\n        ...(inputProps as { style?: CSSProperties }).style,\n        ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n      }\n\n      return {\n        \"aria-label\": \"End Date\",\n        placeholder: endPlaceholder ?? placeholder,\n        ...formControlProps,\n        ...inputProps,\n        ...props,\n        ref: mergeRefs(ref, endInputRef),\n        style,\n        cursor: formControlProps.readOnly ? \"default\" : \"text\",\n        pointerEvents: formControlProps.disabled ? \"none\" : \"auto\",\n        tabIndex: !allowInput || !startInputValue ? -1 : 0,\n        value: endInputValue,\n        onChange: handlerAll(props.onChange, onEndChange),\n        onClick: handlerAll(props.onClick, (ev) => {\n          ev.preventDefault()\n          ev.stopPropagation()\n        }),\n        onCompositionEnd: handlerAll(props.onCompositionEnd, () => {\n          composition.current = false\n\n          setEndInputValue((prev) => prev.replace(pattern, \"\"))\n        }),\n        onCompositionStart: handlerAll(\n          props.onCompositionStart,\n          () => (composition.current = true),\n        ),\n      }\n    },\n    [\n      startInputValue,\n      inputProps,\n      allowInput,\n      endPlaceholder,\n      placeholder,\n      formControlProps,\n      endInputValue,\n      onEndChange,\n      pattern,\n    ],\n  )\n\n  return {\n    dateToString,\n    inputValue: [startInputValue, endInputValue],\n    value,\n    getCalendarProps,\n    getContainerProps,\n    getEndInputProps,\n    getFieldProps,\n    getIconProps,\n    getPopoverProps,\n    getStartInputProps,\n    onClose,\n  }\n}\n\nexport type UseRangeDatePickerReturn = ReturnType<typeof useRangeDatePicker>\n"],"mappings":"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","names":["startValue","endValue","_a","_b","startInputValue","value","endInputValue"]}