{"version":3,"file":"DateRangePickerPanel.mjs","sources":["../../src/date-picker/DateRangePickerPanel.tsx"],"sourcesContent":["import { defineComponent, computed, ref } from 'vue';\nimport dayjs from 'dayjs';\n\nimport dateRangePickerPanelProps from './date-range-picker-panel-props';\nimport dateRangePickerProps from './date-range-picker-props';\nimport {\n  DateValue,\n  DateRangePickerPartial,\n  TdDateRangePickerPanelProps,\n  DatePickerYearChangeTrigger,\n  DatePickerMonthChangeTrigger,\n} from './type';\n\nimport TRangePanel from './panel/RangePanel';\nimport useRangeValue from './hooks/useRangeValue';\nimport { formatDate, getDefaultFormat, parseToDayjs } from '../_common/js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj } from '../_common/js/date-picker/utils';\nimport isFunction from 'lodash/isFunction';\nimport isArray from 'lodash/isArray';\n\nexport default defineComponent({\n  name: 'XDateRangePickerPanel',\n\n  props: {\n    value: dateRangePickerProps.value,\n    defaultValue: dateRangePickerProps.defaultValue,\n    modelValue: dateRangePickerProps.modelValue,\n    disabled: dateRangePickerProps.disabled,\n    disableDate: dateRangePickerProps.disableDate,\n    enableTimePicker: dateRangePickerProps.enableTimePicker,\n    firstDayOfWeek: dateRangePickerProps.firstDayOfWeek,\n    format: dateRangePickerProps.format,\n    mode: dateRangePickerProps.mode,\n    presets: dateRangePickerProps.presets,\n    presetsPlacement: dateRangePickerProps.presetsPlacement,\n    timePickerProps: dateRangePickerProps.timePickerProps,\n    panelPreselection: dateRangePickerProps.panelPreselection,\n    ...dateRangePickerPanelProps,\n  },\n\n  setup(props: TdDateRangePickerPanelProps) {\n    const { value, year, month, time, cacheValue, isFirstValueSelected, onChange } = useRangeValue(props);\n\n    const formatRef = computed(() =>\n      getDefaultFormat({\n        mode: props.mode,\n        enableTimePicker: props.enableTimePicker,\n        format: props.format,\n      }),\n    );\n\n    // 记录面板是否选中过\n    const isSelected = ref(false);\n    const isHoverCell = ref(false);\n    const hoverValue = ref([]);\n    const activeIndex = computed(() => (isFirstValueSelected.value ? 1 : 0));\n\n    // 日期 hover\n    function onCellMouseEnter(date: Date) {\n      isHoverCell.value = true;\n      const nextValue = [...(hoverValue.value as string[])];\n      nextValue[activeIndex.value] = formatDate(date, {\n        format: formatRef.value.format,\n      }) as string;\n      hoverValue.value = nextValue;\n    }\n\n    // 日期 leave\n    function onCellMouseLeave() {\n      isHoverCell.value = false;\n      hoverValue.value = cacheValue.value as string[];\n    }\n\n    // 日期点击\n    function onCellClick(date: Date, { e }: { e: MouseEvent }) {\n      props.onCellClick?.({\n        e,\n        partial: activeIndex.value ? 'end' : 'start',\n        date: value.value.map((v) => dayjs(v).toDate()),\n      });\n\n      isHoverCell.value = false;\n      isSelected.value = true;\n\n      const nextValue = [...(cacheValue.value as string[])];\n      nextValue[activeIndex.value] = formatDate(date, {\n        format: formatRef.value.format,\n      }) as string;\n      cacheValue.value = nextValue;\n\n      // 有时间选择器走 confirm 逻辑\n      if (props.enableTimePicker) return;\n\n      // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n      if (nextValue.length === 2 && isFirstValueSelected.value) {\n        onChange?.(\n          formatDate(nextValue, {\n            format: formatRef.value.format,\n            autoSwap: true,\n          }) as DateValue[],\n          {\n            dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n            trigger: 'pick',\n          },\n        );\n        isFirstValueSelected.value = false;\n      } else {\n        isFirstValueSelected.value = true;\n      }\n    }\n\n    // 头部快速切换\n    function onJumperClick({ trigger, partial }: { trigger: string; partial: DateRangePickerPartial }) {\n      const partialIndex = partial === 'start' ? 0 : 1;\n\n      const triggerMap = {\n        prev: 'arrow-previous',\n        next: 'arrow-next',\n      };\n      const monthCountMap = { date: 1, month: 12, year: 120 };\n      const monthCount = monthCountMap[props.mode] || 0;\n      const current = new Date(year.value[partialIndex], month.value[partialIndex]);\n\n      let next = null;\n      if (trigger === 'prev') {\n        next = subtractMonth(current, monthCount);\n      } else if (trigger === 'current') {\n        next = new Date();\n      } else if (trigger === 'next') {\n        next = addMonth(current, monthCount);\n      }\n\n      const nextYear = [...year.value];\n      nextYear[partialIndex] = next.getFullYear();\n      const nextMonth = [...month.value];\n      nextMonth[partialIndex] = next.getMonth();\n\n      // 保证左侧时间不大于右侧\n      if (partialIndex === 0) {\n        nextYear[1] = Math.max(nextYear[0], nextYear[1]);\n\n        if (nextYear[0] === nextYear[1]) {\n          nextMonth[1] = Math.max(nextMonth[0], nextMonth[1]);\n        }\n      }\n\n      // 保证左侧时间不大于右侧\n      if (partialIndex === 1) {\n        nextYear[0] = Math.min(nextYear[0], nextYear[1]);\n\n        if (nextYear[0] === nextYear[1]) {\n          nextMonth[0] = Math.min(nextMonth[0], nextMonth[1]);\n        }\n      }\n\n      if (year.value.some((y) => !nextYear.includes(y))) {\n        props.onYearChange?.({\n          partial,\n          year: nextYear[partialIndex],\n          date: value.value.map((v) => dayjs(v).toDate()),\n          trigger: trigger === 'current' ? 'today' : (`year-${triggerMap[trigger]}` as DatePickerYearChangeTrigger),\n        });\n      }\n      if (month.value.some((m) => !nextMonth.includes(m))) {\n        props.onMonthChange?.({\n          partial,\n          month: nextMonth[partialIndex],\n          date: value.value.map((v) => dayjs(v).toDate()),\n          trigger: trigger === 'current' ? 'today' : (`month-${triggerMap[trigger]}` as DatePickerMonthChangeTrigger),\n        });\n      }\n\n      year.value = nextYear;\n      month.value = nextMonth;\n    }\n\n    // time-picker 点击\n    function onTimePickerChange(val: string) {\n      const { hours, minutes, seconds, milliseconds, meridiem } = extractTimeObj(val);\n\n      const nextInputValue = [...(cacheValue.value as DateValue[])];\n      const changedInputValue = cacheValue.value[activeIndex.value];\n      const currentDate = !dayjs(changedInputValue, formatRef.value.format).isValid()\n        ? dayjs().year(year.value[activeIndex.value]).month(month.value[activeIndex.value])\n        : dayjs(changedInputValue, formatRef.value.format);\n      // am pm 12小时制转化 24小时制\n      let nextHours = hours;\n      if (/am/i.test(meridiem) && nextHours === 12) nextHours -= 12;\n      if (/pm/i.test(meridiem) && nextHours < 12) nextHours += 12;\n\n      const nextDate = currentDate.hour(nextHours).minute(minutes).second(seconds).millisecond(milliseconds).toDate();\n      nextInputValue[activeIndex.value] = nextDate;\n\n      const nextTime = [...time.value];\n      nextTime[activeIndex.value] = val;\n      time.value = nextTime;\n\n      isSelected.value = true;\n      cacheValue.value = formatDate(nextInputValue, {\n        format: formatRef.value.format,\n      });\n\n      props.onTimeChange?.({\n        time: val,\n        date: value.value.map((v) => parseToDayjs(v, formatRef.value.format).toDate()),\n        partial: activeIndex.value ? 'end' : 'start',\n        trigger: 'time-hour',\n      });\n    }\n\n    // 确定\n    function onConfirmClick({ e }: { e: MouseEvent }) {\n      const nextValue = [...(cacheValue.value as string[])];\n\n      // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n      if (nextValue.length === 2 && isFirstValueSelected.value) {\n        onChange?.(\n          formatDate(nextValue, {\n            format: formatRef.value.format,\n            autoSwap: true,\n          }) as DateValue[],\n          {\n            dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n            trigger: 'confirm',\n          },\n        );\n        year.value = nextValue.map((v) => dayjs(v, formatRef.value.format).year());\n        month.value = nextValue.map((v) => dayjs(v, formatRef.value.format).month());\n        isFirstValueSelected.value = false;\n      } else {\n        isFirstValueSelected.value = true;\n      }\n\n      props.onConfirm?.({ date: value.value.map((v) => dayjs(v).toDate()), e });\n    }\n\n    // 预设\n    function onPresetClick(preset: any, context: any) {\n      let presetValue = preset;\n      if (isFunction(preset)) {\n        presetValue = preset();\n      }\n      if (!isArray(presetValue)) {\n        console.error(`preset: ${preset} 预设值必须是数组!`);\n      } else {\n        onChange?.(\n          formatDate(presetValue, {\n            format: formatRef.value.format,\n            autoSwap: true,\n          }) as DateValue[],\n          {\n            dayjsValue: presetValue.map((p) => parseToDayjs(p, formatRef.value.format)),\n            trigger: 'preset',\n          },\n        );\n        props.onPresetClick?.(context);\n      }\n    }\n\n    function onYearChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n      let partialIndex = partial === 'start' ? 0 : 1;\n      if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n      const nextYear = [...year.value];\n      nextYear[partialIndex] = nextVal;\n      // 保证左侧时间不大于右侧\n      if (partialIndex === 0) nextYear[1] = Math.max(nextYear[0], nextYear[1]);\n      if (partialIndex === 1) nextYear[0] = Math.min(nextYear[0], nextYear[1]);\n\n      year.value = nextYear;\n\n      props.onYearChange?.({\n        partial,\n        year: nextYear[partialIndex],\n        date: value.value.map((v) => dayjs(v).toDate()),\n        trigger: 'year-select',\n      });\n    }\n\n    function onMonthChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n      let partialIndex = partial === 'start' ? 0 : 1;\n      if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n      const nextMonth = [...month.value];\n      nextMonth[partialIndex] = nextVal;\n      // 保证左侧时间不大于右侧\n      if (year.value[0] === year.value[1]) {\n        if (partialIndex === 0) nextMonth[1] = Math.max(...nextMonth);\n        if (partialIndex === 1) nextMonth[0] = Math.min(...nextMonth);\n      }\n\n      month.value = nextMonth;\n\n      props.onMonthChange?.({\n        partial,\n        month: nextMonth[partialIndex],\n        date: value.value.map((v) => dayjs(v).toDate()),\n        trigger: 'month-select',\n      });\n    }\n\n    const panelProps = computed(() => ({\n      hoverValue: (isHoverCell.value ? hoverValue.value : []) as string[],\n      value: (isSelected.value ? cacheValue.value : value.value) as string[],\n      activeIndex: activeIndex.value,\n      year: year.value,\n      month: month.value,\n      mode: props.mode,\n      format: formatRef.value.format,\n      presets: props.presets,\n      time: time.value,\n      disableDate: props.disableDate,\n      firstDayOfWeek: props.firstDayOfWeek,\n      timePickerProps: props.timePickerProps,\n      enableTimePicker: props.enableTimePicker,\n      presetsPlacement: props.presetsPlacement,\n      panelPreselection: props.panelPreselection,\n      popupVisible: true,\n      panelClick: props.onPanelClick,\n      onCellClick,\n      onCellMouseEnter,\n      onCellMouseLeave,\n      onJumperClick,\n      onConfirmClick,\n      onPresetClick,\n      onYearChange,\n      onMonthChange,\n      onTimePickerChange,\n    }));\n\n    return () => <TRangePanel {...panelProps.value} />;\n  },\n});\n"],"names":["name","props","format","hoverValue","e","partial","autoSwap","dayjsValue","trigger","prev","next","date","month","year","nextYear","nextMonth","nextInputValue","nextTime","cacheValue","time","isFunction","isArray","console","popupVisible","onCellClick","onCellMouseEnter","onCellMouseLeave","onJumperClick","onConfirmClick","onPresetClick","onYearChange","onMonthChange","onTimePickerChange","_createVNode"],"mappings":"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"}