{"version":3,"file":"use-range-picker.mjs","sources":["../../../../../../packages/components/date-picker/src/composables/use-range-picker.ts"],"sourcesContent":["import { getCurrentInstance, inject, ref, unref, watch } from 'vue'\nimport { isArray } from '@element-ultra/utils'\nimport { ROOT_PICKER_INJECTION_KEY } from '@element-ultra/tokens'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { getDefaultValue, isValidRange } from '../utils'\nimport { useShortcut } from './use-shortcut'\n\nimport type { Ref } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { PanelRangeSharedProps, RangeState } from '../props/shared'\nimport type { DefaultValue } from '../utils'\n\ntype UseRangePickerProps = {\n  onParsedValueChanged: (\n    minDate: Dayjs | undefined,\n    maxDate: Dayjs | undefined\n  ) => void\n  defaultValue: Ref<DefaultValue>\n  leftDate: Ref<Dayjs>\n  rightDate: Ref<Dayjs>\n  unit: 'month' | 'year'\n}\n\nexport const useRangePicker = (\n  props: PanelRangeSharedProps,\n  {\n    defaultValue,\n    leftDate,\n    rightDate,\n    unit,\n\n    onParsedValueChanged\n  }: UseRangePickerProps\n) => {\n  const { emit } = getCurrentInstance()!\n\n  const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY)!\n  const drpNs = useNamespace('date-range-picker')\n  const lang = 'zh-cn'\n  const handleShortcutClick = useShortcut(lang)\n  const minDate = ref<Dayjs>()\n  const maxDate = ref<Dayjs>()\n  const rangeState = ref<RangeState>({\n    endDate: null,\n    selecting: false\n  })\n\n  const handleChangeRange = (val: RangeState) => {\n    rangeState.value = val\n  }\n\n  const handleRangeConfirm = (visible = false) => {\n    const _minDate = unref(minDate)\n    const _maxDate = unref(maxDate)\n\n    if (isValidRange([_minDate, _maxDate])) {\n      emit('pick', [_minDate, _maxDate], visible)\n    }\n  }\n\n  const onSelect = (selecting: boolean) => {\n    rangeState.value.selecting = selecting\n    if (!selecting) {\n      rangeState.value.endDate = null\n    }\n  }\n\n  const restoreDefault = () => {\n    const [start, end] = getDefaultValue(unref(defaultValue), {\n      lang,\n      unit,\n      unlinkPanels: props.unlinkPanels\n    })\n    minDate.value = undefined\n    maxDate.value = undefined\n    leftDate.value = start\n    rightDate.value = end\n  }\n\n  watch(\n    defaultValue,\n    val => {\n      if (val) {\n        restoreDefault()\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(\n    () => props.parsedValue,\n    parsedValue => {\n      if (isArray(parsedValue) && parsedValue.length === 2) {\n        const [start, end] = parsedValue\n        minDate.value = start\n        leftDate.value = start\n        maxDate.value = end\n        onParsedValueChanged(unref(minDate), unref(maxDate))\n      } else {\n        restoreDefault()\n      }\n    },\n    { immediate: true }\n  )\n\n  return {\n    minDate,\n    maxDate,\n    rangeState,\n    lang,\n    ppNs: pickerNs,\n    drpNs,\n\n    handleChangeRange,\n    handleRangeConfirm,\n    handleShortcutClick,\n    onSelect\n  }\n}\n"],"names":[],"mappings":"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"}