{"version":3,"file":"panel-date-range.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-range.vue"],"sourcesContent":["<template>\n  <div\n    class=\"range-picker\"\n    :class=\"[{\n      'has-sidebar': $slots.sidebar || hasShortcuts,\n      'has-time': showTime\n    }, namespace + '-date-picker']\"\n  >\n    <div class=\"picker-wrapper\">\n      <slot name=\"sidebar\" :class=\"['picker-sidebar', namespace + '-group', 'vertical']\"></slot>\n      <hl-group v-if=\"hasShortcuts\" :class=\"['picker-sidebar']\" dir=\"vertical\">\n        <hl-group v-for=\"(shortcut, key) in shortcuts\" :key=\"key\" class=\"p-x-sm p-y-xxs hover:text-hover cursor-pointer\" @click=\"handleShortcutClick(shortcut)\">\n          {{ shortcut.text }}\n        </hl-group>\n      </hl-group>\n      <div class=\"picker-body\">\n        <div v-if=\"showTime\" class=\"picker-body-header-wrapper\">\n          <hl-group class=\"picker-time-header\" deep-merge indent full>\n            <hl-input\n              size=\"sm\"\n              :disabled=\"rangeState.selecting\"\n              :placeholder=\"t('hl.datepicker.startDate')\"\n              :validate-event=\"false\"\n              :model-value=\"minVisibleDate\"\n              @input=\"val => handleDateInput(val, 'min')\"\n              @change=\"val => handleDateChange(val, 'min')\"\n            >\n              <template #prefix>\n                <hl-icon>\n                  <system-calendar />\n                </hl-icon>\n              </template>\n            </hl-input>\n            <div\n              v-clickoutside=\"handleMinTimeClose\"\n            >\n              <hl-input\n                size=\"sm\"\n                :disabled=\"rangeState.selecting\"\n                :placeholder=\"t('hl.datepicker.startTime')\"\n                :model-value=\"minVisibleTime\"\n                :validate-event=\"false\"\n                @focus=\"minTimePickerVisible = true\"\n                @input=\"val => handleTimeInput(val, 'min')\"\n                @change=\"val => handleTimeChange(val, 'min')\"\n              >\n                <template #prefix>\n                  <hl-icon>\n                    <system-clock />\n                  </hl-icon>\n                </template>\n              </hl-input>\n              <time-pick-panel\n                :visible=\"minTimePickerVisible\"\n                :format=\"timeFormat\"\n                datetime-role=\"start\"\n                :parsed-value=\"leftDate\"\n                @pick=\"handleMinTimePick\"\n              />\n            </div>\n          </hl-group>\n          <hl-button\n            size=\"sm\"\n            class=\"range-separator\"\n          />\n          <hl-group class=\"picker-time-header is-right\" deep-merge indent full>\n            <hl-input\n              size=\"sm\"\n              :disabled=\"rangeState.selecting\"\n              :placeholder=\"t('hl.datepicker.endDate')\"\n              :model-value=\"maxVisibleDate\"\n              :readonly=\"!minDate\"\n              :validate-event=\"false\"\n              @input=\"val => handleDateInput(val, 'max')\"\n              @change=\"val => handleDateChange(val, 'max')\"\n            >\n              <template #prefix>\n                <hl-icon>\n                  <system-calendar />\n                </hl-icon>\n              </template>\n            </hl-input>\n            <div\n              v-clickoutside=\"handleMaxTimeClose\"\n            >\n              <hl-input\n                size=\"sm\"\n                :disabled=\"rangeState.selecting\"\n                :placeholder=\"t('hl.datepicker.endTime')\"\n                :model-value=\"maxVisibleTime\"\n                :readonly=\"!minDate\"\n                :validate-event=\"false\"\n                @focus=\"minDate && (maxTimePickerVisible = true)\"\n                @input=\"val => handleTimeInput(val, 'max')\"\n                @change=\"val => handleTimeChange(val, 'max')\"\n              >\n                <template #prefix>\n                  <hl-icon>\n                    <system-clock />\n                  </hl-icon>\n                </template>\n              </hl-input>\n              <time-pick-panel\n                datetime-role=\"end\"\n                :visible=\"maxTimePickerVisible\"\n                :format=\"timeFormat\"\n                :parsed-value=\"rightDate\"\n                @pick=\"handleMaxTimePick\"\n              />\n            </div>\n          </hl-group>\n        </div>\n        <div class=\"picker-body-content is-left\">\n          <hl-group class=\"picker-body-header\" full>\n            <div class=\"static\">\n              <hl-button\n                type=\"link\"\n                size=\"sm\"\n                class=\"prev-year\"\n                :aria-label=\"t(`hl.datepicker.prevYear`)\"\n                equal\n                @click=\"leftPrevYear\"\n              >\n                <slot name=\"prev-year\">\n                  <hl-icon>\n                    <system-double-arrow-left />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n              <hl-button\n                type=\"link\"\n                size=\"sm\"\n                class=\"prev-month\"\n                :aria-label=\"t(`hl.datepicker.prevMonth`)\"\n                equal\n                @click=\"leftPrevMonth\"\n              >\n                <slot name=\"prev-month\">\n                  <hl-icon>\n                    <system-arrow-left />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n            </div>\n            <div class=\"header-label\">\n              <hl-button type=\"link\">\n                {{ leftLabel }}\n              </hl-button>\n            </div>\n            <div class=\"static\">\n              <hl-button\n                v-if=\"unlinkPanels\"\n                type=\"link\"\n                size=\"sm\"\n                :disabled=\"!enableMonthArrow\"\n                :class=\"{ 'is-disabled': !enableMonthArrow }\"\n                class=\"group-item next-month\"\n                :aria-label=\"t(`hl.datepicker.nextMonth`)\"\n                equal\n                @click=\"leftNextMonth\"\n              >\n                <slot name=\"next-month\">\n                  <hl-icon>\n                    <system-arrow-right />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n              <hl-button\n                v-if=\"unlinkPanels\"\n                type=\"link\"\n                size=\"sm\"\n                :disabled=\"!enableYearArrow\"\n                :class=\"{ 'is-disabled': !enableYearArrow }\"\n                class=\"group-item next-year\"\n                :aria-label=\"t(`hl.datepicker.nextYear`)\"\n                equal\n                @click=\"leftNextYear\"\n              >\n                <slot name=\"next-year\">\n                  <hl-icon>\n                    <system-double-arrow-right />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n            </div>\n          </hl-group>\n          <date-table\n            selection-mode=\"range\"\n            :date=\"leftDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n        <div class=\"picker-body-content is-right\">\n          <hl-group class=\"picker-body-header\" full>\n            <div class=\"static\">\n              <hl-button\n                v-if=\"unlinkPanels\"\n                size=\"sm\"\n                :disabled=\"!enableYearArrow\"\n                :class=\"{ 'is-disabled': !enableYearArrow }\"\n                class=\"prev-year\"\n                :aria-label=\"t(`hl.datepicker.prevYear`)\"\n                equal\n                @click=\"rightPrevYear\"\n              >\n                <slot name=\"prev-year\">\n                  <hl-icon>\n                    <system-double-arrow-left />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n              <hl-button\n                v-if=\"unlinkPanels\"\n                size=\"sm\"\n                :disabled=\"!enableMonthArrow\"\n                :class=\"{ 'is-disabled': !enableMonthArrow }\"\n                class=\"prev-month\"\n                :aria-label=\"t(`hl.datepicker.prevMonth`)\"\n                equal\n                @click=\"rightPrevMonth\"\n              >\n                <slot name=\"prev-month\">\n                  <hl-icon>\n                    <system-arrow-left />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n            </div>\n            <div class=\"header-label\">\n              <hl-button>\n                {{ rightLabel }}\n              </hl-button>\n            </div>\n            <div class=\"static\">\n              <hl-button\n                size=\"sm\"\n                class=\"next-month\"\n                :aria-label=\"t(`hl.datepicker.nextMonth`)\"\n                equal\n                @click=\"rightNextMonth\"\n              >\n                <slot name=\"next-month\">\n                  <hl-icon>\n                    <system-arrow-right />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n              <hl-button\n                size=\"sm\"\n                class=\"next-year\"\n                :aria-label=\"t(`hl.datepicker.nextYear`)\"\n                equal\n                @click=\"rightNextYear\"\n              >\n                <slot name=\"next-year\">\n                  <hl-icon>\n                    <system-double-arrow-right />\n                  </hl-icon>\n                </slot>\n              </hl-button>\n            </div>\n          </hl-group>\n          <date-table\n            selection-mode=\"range\"\n            :date=\"rightDate\"\n            :min-date=\"minDate\"\n            :max-date=\"maxDate\"\n            :range-state=\"rangeState\"\n            :disabled-date=\"disabledDate\"\n            :cell-class-name=\"cellClassName\"\n            @changerange=\"handleChangeRange\"\n            @pick=\"handleRangePick\"\n            @select=\"onSelect\"\n          />\n        </div>\n      </div>\n    </div>\n    <div v-if=\"showTime\" class=\"picker-footer\">\n      <hl-button\n        v-if=\"clearable\"\n        class=\"\"\n        @click=\"handleClear\"\n      >\n        {{ t('hl.datepicker.clear') }}\n      </hl-button>\n      <hl-button\n        type=\"primary\"\n        class=\"\"\n        :disabled=\"btnDisabled\"\n        @click=\"handleRangeConfirm(false)\"\n      >\n        {{ t('hl.datepicker.confirm') }}\n      </hl-button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, toRef, unref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { ClickOutside as vClickoutside } from '@hongluan-ui/directives'\nimport { isArray } from '@hongluan-ui/utils'\nimport { useLocale, useNamespace } from '@hongluan-ui/hooks'\nimport HlInput from '@hongluan-ui/components/input'\nimport HlButton from '@hongluan-ui/components/button'\nimport HlGroup from '@hongluan-ui/components/group'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport { SystemClock, SystemCalendar, SystemArrowLeft, SystemArrowRight, SystemDoubleArrowLeft, SystemDoubleArrowRight } from '@hongluan-ui/components/system-icon'\nimport {\n  TimePickPanel,\n  extractDateFormat,\n  extractTimeFormat,\n} from '@hongluan-ui/components/time-picker'\nimport { panelDateRangeProps } from '../props/panel-date-range'\nimport { useRangePicker } from '../composables/use-range-picker'\nimport { getDefaultValue, isValidRange } from '../utils'\nimport DateTable from './basic-date-table.vue'\n\nimport type { Dayjs } from 'dayjs'\n\ntype ChangeType = 'min' | 'max'\ntype UserInput = {\n  min: string | null\n  max: string | null\n}\n\nconst props = defineProps(panelDateRangeProps)\nconst emit = defineEmits([\n  'pick',\n  'set-picker-option',\n  'calendar-change',\n  'panel-change',\n])\n\nconst unit = 'month'\n// FIXME: fix the type for ep picker\nconst pickerBase = inject('EP_PICKER_BASE') as any\nconst { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props\nconst format = toRef(pickerBase.props, 'format')\nconst shortcuts = toRef(pickerBase.props, 'shortcuts')\nconst defaultValue = toRef(pickerBase.props, 'defaultValue')\nconst { lang } = useLocale()\nconst leftDate = ref<Dayjs>(dayjs().locale(lang.value))\nconst rightDate = ref<Dayjs>(dayjs().locale(lang.value).add(1, unit))\n\nconst { namespace } = useNamespace()\nconst {\n  minDate,\n  maxDate,\n  rangeState,\n\n  handleChangeRange,\n  handleRangeConfirm,\n  handleShortcutClick,\n  onSelect,\n  onReset,\n  t,\n} = useRangePicker(props, {\n  defaultValue,\n  leftDate,\n  rightDate,\n  unit,\n  onParsedValueChanged,\n})\n\nwatch(\n  () => props.visible,\n  visible => {\n    if (!visible && rangeState.value.selecting) {\n      onReset(props.parsedValue)\n      onSelect(false)\n    }\n  },\n)\n\nconst dateUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst timeUserInput = ref<UserInput>({\n  min: null,\n  max: null,\n})\n\nconst leftLabel = computed(() => {\n  return `${leftDate.value.year()} ${t('hl.datepicker.year')} ${t(\n    `hl.datepicker.month${leftDate.value.month() + 1}`,\n  )}`\n})\n\nconst rightLabel = computed(() => {\n  return `${rightDate.value.year()} ${t('hl.datepicker.year')} ${t(\n    `hl.datepicker.month${rightDate.value.month() + 1}`,\n  )}`\n})\n\nconst leftYear = computed(() => {\n  return leftDate.value.year()\n})\n\nconst leftMonth = computed(() => {\n  return leftDate.value.month()\n})\n\nconst rightYear = computed(() => {\n  return rightDate.value.year()\n})\n\nconst rightMonth = computed(() => {\n  return rightDate.value.month()\n})\n\nconst hasShortcuts = computed(() => !!shortcuts.value.length)\n\nconst minVisibleDate = computed(() => {\n  if (dateUserInput.value.min !== null) return dateUserInput.value.min\n  if (minDate.value) return minDate.value.format(dateFormat.value)\n  return ''\n})\n\nconst maxVisibleDate = computed(() => {\n  if (dateUserInput.value.max !== null) return dateUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(dateFormat.value)\n  return ''\n})\n\nconst minVisibleTime = computed(() => {\n  if (timeUserInput.value.min !== null) return timeUserInput.value.min\n  if (minDate.value) return minDate.value.format(timeFormat.value)\n  return ''\n})\n\nconst maxVisibleTime = computed(() => {\n  if (timeUserInput.value.max !== null) return timeUserInput.value.max\n  if (maxDate.value || minDate.value)\n    return (maxDate.value || minDate.value)!.format(timeFormat.value)\n  return ''\n})\n\nconst timeFormat = computed(() => {\n  return props.timeFormat || extractTimeFormat(format.value)\n})\n\nconst dateFormat = computed(() => {\n  return props.dateFormat || extractDateFormat(format.value)\n})\n\nconst isValidValue = (date: [Dayjs, Dayjs]) => {\n  return (\n    isValidRange(date) &&\n    (disabledDate\n      ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate())\n      : true)\n  )\n}\n\nconst leftPrevYear = () => {\n  leftDate.value = leftDate.value.subtract(1, 'year')\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('year')\n}\n\nconst leftPrevMonth = () => {\n  leftDate.value = leftDate.value.subtract(1, 'month')\n  if (!props.unlinkPanels) {\n    rightDate.value = leftDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst rightNextYear = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = leftDate.value.add(1, 'year')\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = rightDate.value.add(1, 'year')\n  }\n  handlePanelChange('year')\n}\n\nconst rightNextMonth = () => {\n  if (!props.unlinkPanels) {\n    leftDate.value = leftDate.value.add(1, 'month')\n    rightDate.value = leftDate.value.add(1, 'month')\n  } else {\n    rightDate.value = rightDate.value.add(1, 'month')\n  }\n  handlePanelChange('month')\n}\n\nconst leftNextYear = () => {\n  leftDate.value = leftDate.value.add(1, 'year')\n  handlePanelChange('year')\n}\n\nconst leftNextMonth = () => {\n  leftDate.value = leftDate.value.add(1, 'month')\n  handlePanelChange('month')\n}\n\nconst rightPrevYear = () => {\n  rightDate.value = rightDate.value.subtract(1, 'year')\n  handlePanelChange('year')\n}\n\nconst rightPrevMonth = () => {\n  rightDate.value = rightDate.value.subtract(1, 'month')\n  handlePanelChange('month')\n}\n\nconst handlePanelChange = (mode: 'month' | 'year') => {\n  emit(\n    'panel-change',\n    [leftDate.value.toDate(), rightDate.value.toDate()],\n    mode,\n  )\n}\n\nconst enableMonthArrow = computed(() => {\n  const nextMonth = (leftMonth.value + 1) % 12\n  const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n  return (\n    props.unlinkPanels &&\n    new Date(leftYear.value + yearOffset, nextMonth) <\n      new Date(rightYear.value, rightMonth.value)\n  )\n})\n\nconst enableYearArrow = computed(() => {\n  return (\n    props.unlinkPanels &&\n    rightYear.value * 12 +\n      rightMonth.value -\n      (leftYear.value * 12 + leftMonth.value + 1) >=\n      12\n  )\n})\n\nconst btnDisabled = computed(() => {\n  return !(\n    minDate.value &&\n    maxDate.value &&\n    !rangeState.value.selecting &&\n    isValidRange([minDate.value, maxDate.value])\n  )\n})\n\nconst showTime = computed(\n  () => props.type === 'datetime' || props.type === 'datetimerange',\n)\n\nconst formatEmit = (emitDayjs: Dayjs | null, index?: number) => {\n  if (!emitDayjs) return\n  if (defaultTime) {\n    const defaultTimeD = dayjs(\n      defaultTime[index as number] || defaultTime,\n    ).locale(lang.value)\n    return defaultTimeD\n      .year(emitDayjs.year())\n      .month(emitDayjs.month())\n      .date(emitDayjs.date())\n  }\n  return emitDayjs\n}\n\nconst handleRangePick = (\n  val: {\n    minDate: Dayjs\n    maxDate: Dayjs | null\n  },\n  close = true,\n) => {\n  const min_ = val.minDate\n  const max_ = val.maxDate\n  const minDate_ = formatEmit(min_, 0)\n  const maxDate_ = formatEmit(max_, 1)\n\n  if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n    return\n  }\n  emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n  maxDate.value = maxDate_\n  minDate.value = minDate_\n\n  if (!close || showTime.value) return\n  handleRangeConfirm()\n}\n\nconst minTimePickerVisible = ref(false)\nconst maxTimePickerVisible = ref(false)\n\nconst handleMinTimeClose = () => {\n  minTimePickerVisible.value = false\n}\n\nconst handleMaxTimeClose = () => {\n  maxTimePickerVisible.value = false\n}\n\nconst handleDateInput = (value: string | null, type: ChangeType) => {\n  dateUserInput.value[type] = value\n  const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n\n  if (parsedValueD.isValid()) {\n    if (disabledDate && disabledDate(parsedValueD.toDate())) {\n      return\n    }\n    if (type === 'min') {\n      leftDate.value = parsedValueD\n      minDate.value = (minDate.value || leftDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!maxDate.value || maxDate.value.isBefore(minDate.value))\n      ) {\n        rightDate.value = parsedValueD.add(1, 'month')\n        maxDate.value = minDate.value.add(1, 'month')\n      }\n    } else {\n      rightDate.value = parsedValueD\n      maxDate.value = (maxDate.value || rightDate.value)\n        .year(parsedValueD.year())\n        .month(parsedValueD.month())\n        .date(parsedValueD.date())\n      if (\n        !props.unlinkPanels &&\n        (!minDate.value || minDate.value.isAfter(maxDate.value))\n      ) {\n        leftDate.value = parsedValueD.subtract(1, 'month')\n        minDate.value = maxDate.value.subtract(1, 'month')\n      }\n    }\n  }\n}\n\nconst handleDateChange = (_: unknown, type: ChangeType) => {\n  dateUserInput.value[type] = null\n}\n\nconst handleTimeInput = (value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = value\n  const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n  if (parsedValueD.isValid()) {\n    if (type === 'min') {\n      minTimePickerVisible.value = true\n      minDate.value = (minDate.value || leftDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n    } else {\n      maxTimePickerVisible.value = true\n      maxDate.value = (maxDate.value || rightDate.value)\n        .hour(parsedValueD.hour())\n        .minute(parsedValueD.minute())\n        .second(parsedValueD.second())\n      rightDate.value = maxDate.value\n    }\n  }\n}\n\nconst handleTimeChange = (value: string | null, type: ChangeType) => {\n  timeUserInput.value[type] = null\n  if (type === 'min') {\n    leftDate.value = minDate.value!\n    minTimePickerVisible.value = false\n    if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n      maxDate.value = minDate.value\n    }\n  } else {\n    rightDate.value = maxDate.value!\n    maxTimePickerVisible.value = false\n    if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n      minDate.value = maxDate.value\n    }\n  }\n}\n\nconst handleMinTimePick = (value: Dayjs, visible: boolean, first: boolean) => {\n  if (timeUserInput.value.min) return\n  if (value) {\n    leftDate.value = value\n    minDate.value = (minDate.value || leftDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    minTimePickerVisible.value = visible\n  }\n\n  if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n    maxDate.value = minDate.value\n    rightDate.value = value\n  }\n}\n\nconst handleMaxTimePick = (\n  value: Dayjs | null,\n  visible: boolean,\n  first: boolean,\n) => {\n  if (timeUserInput.value.max) return\n  if (value) {\n    rightDate.value = value\n    maxDate.value = (maxDate.value || rightDate.value)\n      .hour(value.hour())\n      .minute(value.minute())\n      .second(value.second())\n  }\n\n  if (!first) {\n    maxTimePickerVisible.value = visible\n  }\n\n  if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n    minDate.value = maxDate.value\n  }\n}\n\nconst handleClear = () => {\n  leftDate.value = getDefaultValue(unref(defaultValue), {\n    lang: unref(lang),\n    unit: 'month',\n    unlinkPanels: props.unlinkPanels,\n  })[0]\n  rightDate.value = leftDate.value.add(1, 'month')\n  maxDate.value = undefined\n  minDate.value = undefined\n  emit('pick', null)\n}\n\nconst formatToString = (value: Dayjs | Dayjs[]) => {\n  return isArray(value)\n    ? value.map(_ => _.format(format.value))\n    : value.format(format.value)\n}\n\nconst parseUserInput = (value: Dayjs | Dayjs[]) => {\n  return isArray(value)\n    ? value.map(_ => dayjs(_, format.value).locale(lang.value))\n    : dayjs(value, format.value).locale(lang.value)\n}\n\nfunction onParsedValueChanged(\n  minDate: Dayjs | undefined,\n  maxDate: Dayjs | undefined,\n) {\n  if (props.unlinkPanels && maxDate) {\n    const minDateYear = minDate?.year() || 0\n    const minDateMonth = minDate?.month() || 0\n    const maxDateYear = maxDate.year()\n    const maxDateMonth = maxDate.month()\n    rightDate.value =\n      minDateYear === maxDateYear && minDateMonth === maxDateMonth\n        ? maxDate.add(1, unit)\n        : maxDate\n  } else {\n    rightDate.value = leftDate.value.add(1, unit)\n    if (maxDate) {\n      rightDate.value = rightDate.value\n        .hour(maxDate.hour())\n        .minute(maxDate.minute())\n        .second(maxDate.second())\n    }\n  }\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['formatToString', formatToString])\nemit('set-picker-option', ['handleClear', handleClear])\n</script>\n"],"names":[],"mappings":"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"}