{"version":3,"file":"date-picker.vue2.cjs","sources":["../../../components/date-picker/date-picker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Popper } from '@/components/popper'\nimport { Renderer } from '@/components/renderer'\nimport { useFieldStore } from '@/components/form'\n\nimport { computed, nextTick, reactive, ref, toRef, watch } from 'vue'\n\nimport DateControl from './date-control.vue'\nimport DatePanel from './date-panel.vue'\nimport {\n  createIconProp,\n  createSizeProp,\n  createStateProp,\n  emitEvent,\n  makeSentence,\n  useIcons,\n  useLocale,\n  useNameHelper,\n  useProps,\n  useWordSpace,\n} from '@vexip-ui/config'\nimport {\n  placementWhileList,\n  useClickOutside,\n  useHover,\n  usePopper,\n  useSetTimeout,\n} from '@vexip-ui/hooks'\nimport {\n  boundRange,\n  differenceDays,\n  doubleDigits,\n  format,\n  getTime,\n  isLeapYear,\n  isObject,\n  mergeObjects,\n  startOfMonth,\n  toAttrValue,\n  toDate,\n  toFalse,\n} from '@vexip-ui/utils'\nimport { datePickerProps } from './props'\nimport { useColumn, useTimeBound } from './helper'\nimport { datePickerTypes, invalidDate } from './symbol'\n\nimport type { PopperExposed } from '@/components/popper'\nimport type { Dateable } from '@vexip-ui/utils'\nimport type {\n  DatePickerChangeEvent,\n  DatePickerFormatFn,\n  DatePickerSlots,\n  DateTimeType,\n  DateType,\n  TimeType,\n} from './symbol'\n\ndefineOptions({ name: 'DatePicker' })\n\nconst {\n  idFor,\n  labelId,\n  state,\n  disabled,\n  loading,\n  size,\n  validateField,\n  clearField,\n  getFieldValue,\n  setFieldValue,\n} = useFieldStore<Dateable | Dateable[]>(() => reference.value?.focus())\n\nconst nh = useNameHelper('date-picker')\n\nconst _props = defineProps(datePickerProps)\nconst props = useProps('datePicker', _props, {\n  size: createSizeProp(size),\n  state: createStateProp(state),\n  locale: null,\n  type: {\n    default: 'date',\n    validator: value => datePickerTypes.includes(value),\n  },\n  visible: false,\n  placement: {\n    default: 'bottom-start',\n    validator: value => placementWhileList.includes(value),\n  },\n  transfer: false,\n  value: {\n    default: () => getFieldValue(),\n    static: true,\n  },\n  format: 'yMd Hms',\n  valueFormat: null,\n  filler: {\n    default: '-',\n    validator: value => value.length === 1,\n  },\n  clearable: false,\n  noAction: false,\n  labels: () => ({}),\n  dateSeparator: '/',\n  timeSeparator: ':',\n  shortcuts: () => [],\n  disabledDate: {\n    default: toFalse,\n    isFunc: true,\n  },\n  steps: () => [1, 1, 1],\n  ctrlSteps: () => [5, 5, 5],\n  prefix: createIconProp(),\n  prefixColor: '',\n  suffix: createIconProp(),\n  suffixColor: '',\n  noSuffix: false,\n  disabled: () => disabled.value,\n  transitionName: () => nh.ns('drop'),\n  confirmText: null,\n  cancelText: null,\n  today: {\n    default: () => new Date(),\n    validator: value => !Number.isNaN(new Date(value)),\n  },\n  range: null,\n  loading: () => loading.value,\n  loadingIcon: createIconProp(),\n  loadingLock: false,\n  loadingEffect: null,\n  min: null,\n  max: null,\n  outsideClose: true,\n  outsideCancel: false,\n  placeholder: null,\n  unitReadonly: false,\n  weekStart: null,\n  popperAlive: null,\n  shortcutsPlacement: 'left',\n  slots: () => ({}),\n})\n\nconst emit = defineEmits(['update:value', 'update:formatted-value', 'update:visible'])\n\nconst slots = defineSlots<DatePickerSlots>()\n\nconst calendarLocale = useLocale('calendar')\nconst datePickerLocale = useLocale('datePicker')\nconst icons = useIcons()\nconst wordSpace = useWordSpace()\n\nconst placement = toRef(props, 'placement')\nconst transfer = toRef(props, 'transfer')\nconst currentVisible = ref(props.visible)\nconst focused = ref(false)\nconst startState = createDateState()\nconst endState = createDateState()\nconst currentState = ref<'start' | 'end'>('start')\nconst lastValue = ref('')\nconst firstSelected = ref<number[] | undefined>()\nconst hoveredDate = ref(new Date())\nconst staticWheel = ref(false)\nconst dateUnitOrder = ref<DateType[]>([])\n\nconst { timer } = useSetTimeout()\n\nconst wrapper = useClickOutside(handleClickOutside)\nconst popper = ref<PopperExposed>()\nconst { reference, transferTo, updatePopper } = usePopper({\n  placement,\n  transfer,\n  wrapper,\n  popper: computed(() => popper.value?.wrapper),\n  isDrop: true,\n})\nconst { isHover } = useHover(reference)\n\nconst startInput = ref<InstanceType<typeof DateControl>>()\nconst endInput = ref<InstanceType<typeof DateControl>>()\nconst datePanel = ref<InstanceType<typeof DatePanel>>()\n\nconst mergedLocale = computed(() => {\n  const locale = mergeObjects(calendarLocale.value, datePickerLocale.value, true)\n\n  return isObject(props.locale) ? mergeObjects(locale, props.locale) : locale\n})\nconst startPlaceholder = computed(() => {\n  if (props.placeholder) {\n    return Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder\n  }\n\n  const { select, start, [props.type]: type } = mergedLocale.value.placeholder\n\n  return makeSentence(props.range ? `${start} ${type}` : `${select} ${type}`, wordSpace.value)\n})\nconst endPlaceholder = computed(() => {\n  if (props.placeholder) {\n    return Array.isArray(props.placeholder)\n      ? props.placeholder[1] || props.placeholder[0]\n      : props.placeholder\n  }\n\n  const { end, [props.type]: type } = mergedLocale.value.placeholder\n\n  return makeSentence(`${end} ${type}`, wordSpace.value)\n})\nconst className = computed(() => {\n  return [\n    nh.b(),\n    nh.ns('input-vars'),\n    nh.bs('vars'),\n    nh.bm(props.type),\n    {\n      [nh.bm('inherit')]: props.inherit,\n      [nh.bm('disabled')]: props.disabled,\n      [nh.bm(props.size)]: props.size !== 'default',\n      [nh.bm('no-hour')]: !startState.enabled.hour,\n      [nh.bm('no-minute')]: !startState.enabled.minute,\n      [nh.bm('no-second')]: !startState.enabled.second,\n      [nh.bm('visible')]: currentVisible.value,\n      [nh.bm(props.state)]: props.state !== 'default',\n      [nh.bm('is-range')]: props.range,\n    },\n  ]\n})\nconst readonly = computed(() => props.loading && props.loadingLock)\nconst selectorClass = computed(() => {\n  const baseCls = nh.be('selector')\n\n  return {\n    [baseCls]: true,\n    [`${baseCls}--disabled`]: props.disabled,\n    [`${baseCls}--readonly`]: readonly.value,\n    [`${baseCls}--loading`]: props.loading,\n    [`${baseCls}--${props.size}`]: props.size !== 'default',\n    [`${baseCls}--focused`]: focused.value,\n    [`${baseCls}--${props.state}`]: props.state !== 'default',\n  }\n})\nconst hasPrefix = computed(() => {\n  return !!(slots.prefix || props.prefix)\n})\nconst currentValue = computed(() => {\n  const values = [startState, endState].map(state => {\n    const values = Object.values(state.dateValue).map(doubleDigits)\n\n    return `${values.slice(0, 3).join('-')} ${values.slice(3).join(':')}`\n  })\n\n  return props.range ? values : values[0]\n})\nconst hoveredLarge = computed(() => {\n  if (!firstSelected.value) return false\n\n  const [year, month, date] = firstSelected.value\n  const firstTime = new Date(`${year}-${month}-${date}`).getTime()\n  const hoverTime = hoveredDate.value.getTime()\n\n  return firstTime < hoverTime\n})\nconst showClear = computed(() => {\n  return !props.disabled && !readonly.value && props.clearable && isHover.value && !!lastValue.value\n})\nconst min = computed(() => {\n  if (props.min) {\n    const date = rawValueToDate(props.min, invalidDate)\n\n    if (Number.isNaN(+date)) return -Infinity\n\n    date.setHours(0, 0, 0, 0)\n\n    return date.getTime()\n  }\n\n  return -Infinity\n})\nconst max = computed(() => {\n  if (props.max) {\n    let date = rawValueToDate(props.max, invalidDate)\n\n    if (Number.isNaN(+date)) return Infinity\n\n    if (props.type !== 'datetime') {\n      date.setHours(23, 59, 59, 999)\n\n      if (props.type === 'year') {\n        date.setMonth(11)\n        date.setDate(31)\n      } else if (props.type === 'month') {\n        date.setMonth(date.getMonth() + 1)\n        date = startOfMonth(date)\n        date.setDate(date.getDate() - 1)\n      }\n    }\n\n    return date.getTime()\n  }\n\n  return Infinity\n})\nconst reversed = computed(() => {\n  if (Number.isNaN(min.value) || Number.isNaN(max.value)) {\n    return false\n  }\n\n  return min.value > max.value\n})\nconst startMinTime = computed(() => {\n  if (props.type === 'datetime' && props.min && !differenceDays(props.min, startState.getDate())) {\n    return getTime(props.min)\n  }\n\n  return ''\n})\nconst startMaxTime = computed(() => {\n  if (props.type === 'datetime' && props.max && !differenceDays(props.max, startState.getDate())) {\n    return getTime(props.max)\n  }\n\n  return ''\n})\nconst endMinTime = computed(() => {\n  if (\n    props.type === 'datetime' &&\n    props.range &&\n    props.min &&\n    !differenceDays(props.min, startState.getDate())\n  ) {\n    return getTime(props.min)\n  }\n\n  return ''\n})\nconst endMaxTime = computed(() => {\n  if (\n    props.type === 'datetime' &&\n    props.range &&\n    props.max &&\n    !differenceDays(props.max, startState.getDate())\n  ) {\n    return getTime(props.max)\n  }\n\n  return ''\n})\nconst startReversed = computed(() => {\n  if (!props.range) return false\n\n  const startValue = startState.dateValue\n  const endValue = endState.dateValue\n\n  let types: DateTimeType[]\n\n  if (props.type === 'year') {\n    types = ['year']\n  } else if (props.type === 'month') {\n    types = ['year', 'month']\n  } else if (props.type === 'date') {\n    types = ['year', 'month', 'date']\n  } else {\n    types = ['year', 'month', 'date', 'hour', 'minute', 'second']\n  }\n\n  for (const type of types) {\n    if (startValue[type] < endValue[type]) return false\n    if (startValue[type] > endValue[type]) return true\n  }\n\n  return false\n})\n\nconst startTimeBound = useTimeBound(startMinTime, startMaxTime)\nconst endTimeBound = useTimeBound(endMinTime, endMaxTime)\n\nconst isTimeDisabled = computed(() => {\n  return currentState.value === 'start'\n    ? startTimeBound.isTimeDisabled\n    : endTimeBound.isTimeDisabled\n})\nconst startError = computed(() => {\n  const { hour, minute, second } = startState.dateValue\n  const { isTimeDisabled } = startTimeBound\n\n  return (\n    startReversed.value ||\n    isDateDisabled(startState.getDate()) ||\n    isTimeDisabled.hour(hour) ||\n    isTimeDisabled.minute(hour, minute) ||\n    isTimeDisabled.second(hour, minute, second)\n  )\n})\nconst endError = computed(() => {\n  if (!props.range) return false\n\n  const { hour, minute, second } = endState.dateValue\n  const { isTimeDisabled } = endTimeBound\n\n  return (\n    startReversed.value ||\n    isDateDisabled(endState.getDate()) ||\n    isTimeDisabled.hour(hour) ||\n    isTimeDisabled.minute(hour, minute) ||\n    isTimeDisabled.second(hour, minute, second)\n  )\n})\nconst noActionMode = computed(() => props.type !== 'datetime' && props.noAction)\n\nwatch(() => props.type, parseFormat)\nwatch(\n  () => props.value,\n  value => {\n    parseValue(value)\n\n    lastValue.value = (Array.isArray(value) ? value[0] || value[1] : value) ? getStringValue() : ''\n  },\n  { immediate: true },\n)\nwatch(\n  () => props.type,\n  value => {\n    const hasMonth = value !== 'year'\n    const hasDate = hasMonth && value !== 'month'\n\n    startState.enabled.year = true\n    endState.enabled.year = true\n    startState.enabled.month = hasMonth\n    endState.enabled.month = hasMonth\n    startState.enabled.date = hasDate\n    endState.enabled.date = hasDate\n  },\n  { immediate: true },\n)\nwatch(() => props.format, parseFormat, { immediate: true })\nwatch(\n  () => props.visible,\n  value => {\n    currentVisible.value = value\n  },\n)\nwatch(currentVisible, value => {\n  if (value) {\n    updatePopper()\n  }\n})\nwatch(focused, value => {\n  if (value) {\n    emitEvent(props.onFocus)\n  } else {\n    emitEvent(props.onBlur)\n  }\n})\nwatch(currentState, value => {\n  if (!props.unitReadonly && currentVisible.value) {\n    emitEvent(props.onChangeCol, getCurrentState().column, value)\n  }\n})\nwatch(\n  () => startState.column,\n  value => {\n    if (!props.unitReadonly && currentVisible.value && currentState.value === 'start') {\n      emitEvent(props.onChangeCol, value, 'start')\n    }\n  },\n)\nwatch(\n  () => endState.column,\n  value => {\n    if (!props.unitReadonly && currentVisible.value && currentState.value === 'end') {\n      emitEvent(props.onChangeCol, value, 'end')\n    }\n  },\n)\nwatch(\n  () => props.disabled,\n  value => {\n    if (value) {\n      setVisible(false)\n      handleBlur()\n    }\n  },\n)\nwatch(readonly, value => {\n  if (value) {\n    setVisible(false)\n  }\n})\n\ndefineExpose({\n  idFor,\n  currentVisible,\n  focused,\n  isHover,\n  startState,\n  endState,\n  currentState,\n  startError,\n  endError,\n  wrapper,\n  reference,\n  popper,\n  start: startInput,\n  end: endInput,\n  panel: datePanel,\n  updatePopper,\n  focus: (options?: FocusOptions) => reference.value?.focus(options),\n  blur: () => reference.value?.blur(),\n})\n\nfunction createDateState() {\n  // const noFiller = props.noFiller\n  const { currentColumn, enabled, resetColumn, enterColumn } = useColumn([\n    'year',\n    'month',\n    'date',\n    'hour',\n    'minute',\n    'second',\n  ] as DateTimeType[])\n\n  const dateValue = reactive({\n    year: 1970,\n    month: 1, // 1 ~ 12\n    date: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n  })\n  const activated = reactive({\n    year: false,\n    month: false,\n    date: false,\n    hour: false,\n    minute: false,\n    second: false,\n  })\n\n  let valueRecord = { ...dateValue }\n  let activatedRecord = { ...activated }\n\n  return reactive({\n    column: currentColumn,\n    enabled,\n    activated,\n    dateValue,\n    resetColumn,\n    enterColumn,\n    setDate: (date: Date, withTime = true) => {\n      dateValue.year = date.getFullYear()\n      dateValue.month = date.getMonth() + 1\n      dateValue.date = date.getDate()\n\n      if (withTime) {\n        dateValue.hour = date.getHours()\n        dateValue.minute = date.getMinutes()\n        dateValue.second = date.getSeconds()\n      }\n    },\n    getDate: () => {\n      return new Date(\n        dateValue.year,\n        dateValue.month - 1,\n        dateValue.date,\n        dateValue.hour,\n        dateValue.minute,\n        dateValue.second,\n      )\n    },\n    record() {\n      valueRecord = { ...dateValue }\n      activatedRecord = { ...activated }\n    },\n    restore() {\n      Object.assign(dateValue, valueRecord)\n      Object.assign(activated, activatedRecord)\n    },\n  })\n}\n\nfunction getCurrentState() {\n  return currentState.value === 'start' ? startState : endState\n}\n\nfunction rawValueToDate(value: Dateable, defaultValue = new Date(props.today)) {\n  let date = toDate(value)\n\n  if (Number.isNaN(date.getTime())) {\n    date = defaultValue\n  }\n\n  return date\n}\n\nfunction parseValue<T extends Dateable | null>(value: T | T[]) {\n  if (!Array.isArray(value)) {\n    value = [value, value]\n  }\n\n  for (let i = 0; i < 2; ++i) {\n    const date = rawValueToDate(value[i] ?? '')\n    const state = i === 0 ? startState : endState\n\n    state.setDate(date)\n    toggleActivated(!!value[i], i === 0 ? 'start' : 'end')\n\n    if (!props.range) break\n  }\n}\n\nfunction parseDateUnitOrder() {\n  const orderSet = new Set<DateType>()\n\n  // to ignore 'xxx'\n  let inQuotation = false\n\n  for (let i = 0, len = props.format.length; i < len; ++i) {\n    const char = props.format.charAt(i)\n\n    if (char === \"'\") {\n      inQuotation = !inQuotation\n    } else if (!inQuotation) {\n      switch (char) {\n        case 'y':\n          orderSet.add('year')\n          break\n        case 'M':\n          orderSet.add('month')\n          break\n        case 'd':\n          orderSet.add('date')\n          break\n      }\n    }\n  }\n\n  dateUnitOrder.value = [...orderSet]\n}\n\nfunction parseTimeUnitEnabled() {\n  const isDatetime = props.type === 'datetime'\n\n  ;[startState, endState].forEach(state => {\n    state.enabled.hour = false\n    state.enabled.minute = false\n    state.enabled.second = false\n\n    if (isDatetime && props.format) {\n      // to ignore 'H', 'm' and 's'\n      let inQuotation = false\n\n      for (let i = 0, len = props.format.length; i < len; ++i) {\n        const char = props.format.charAt(i)\n\n        if (char === \"'\") {\n          inQuotation = !inQuotation\n        } else if (!inQuotation) {\n          switch (char) {\n            case 'H':\n              state.enabled.hour = true\n              break\n            case 'm':\n              state.enabled.minute = true\n              break\n            case 's':\n              state.enabled.second = true\n              break\n          }\n        }\n      }\n    }\n  })\n}\n\nfunction parseFormat() {\n  parseDateUnitOrder()\n  parseTimeUnitEnabled()\n}\n\nfunction toggleActivated(value: boolean, valueType?: 'start' | 'end') {\n  const states = valueType\n    ? valueType === 'start'\n      ? [startState]\n      : [endState]\n    : [startState, endState]\n\n  states.forEach(state => {\n    ;(Object.keys(state.activated) as DateTimeType[]).forEach(type => {\n      state.activated[type] = value\n    })\n  })\n}\n\nfunction getStringValue() {\n  return Array.isArray(currentValue.value) ? currentValue.value.join('|') : currentValue.value\n}\n\nfunction isDateDisabled(date: Date) {\n  if (typeof props.disabledDate === 'function') {\n    if (props.disabledDate(date)) {\n      return true\n    }\n  }\n\n  const time = date.getTime()\n\n  if (reversed.value) {\n    if (time > max.value && time < min.value) {\n      return true\n    }\n  } else {\n    if (time < min.value || time > max.value) {\n      return true\n    }\n  }\n\n  return false\n}\n\nfunction verifyDate() {\n  if (startError.value || (props.range && endError.value)) {\n    parseValue(props.value)\n  }\n}\n\nfunction setVisible(visible: boolean) {\n  if (currentVisible.value === visible) return\n\n  currentVisible.value = visible\n\n  emit('update:visible', visible)\n  emitEvent(props.onToggle, visible)\n}\n\nfunction emitChange() {\n  verifyDate()\n\n  if (lastValue.value !== getStringValue()) {\n    lastValue.value = getStringValue()\n\n    const values = Array.isArray(currentValue.value) ? currentValue.value : [currentValue.value]\n    const emitValues: number[] = []\n    const formattedValues: unknown[] = []\n\n    const valueFormat = props.valueFormat\n    const formatValue: DatePickerFormatFn =\n      typeof valueFormat === 'function'\n        ? valueFormat\n        : valueFormat\n          ? (timestamp, type) =>\n              format(\n                timestamp,\n                !Array.isArray(valueFormat)\n                  ? valueFormat\n                  : type === 'start'\n                    ? valueFormat[0]\n                    : valueFormat[1],\n              )\n          : timestamp => timestamp\n\n    for (let i = 0; i < 2; ++i) {\n      if (props.type === 'year') {\n        emitValues[i] = new Date(\n          i === 0 ? startState.dateValue.year : endState.dateValue.year,\n          0,\n        ).getTime()\n      } else if (props.type !== 'datetime') {\n        emitValues[i] = new Date(values[i].split(' ')[0] + ' 00:00:00').getTime()\n      } else {\n        emitValues[i] = new Date(values[i]).getTime()\n      }\n\n      formattedValues[i] = formatValue(emitValues[i], i === 0 ? 'start' : 'end')\n\n      if (!props.range) break\n    }\n\n    const emitValue = props.range ? emitValues : emitValues[0]\n    const formattedValue = props.range ? formattedValues : formattedValues[0]\n\n    toggleActivated(true)\n    emit('update:value', emitValue)\n    emit('update:formatted-value', formattedValue)\n    setFieldValue(emitValue)\n    emitEvent(props.onChange as DatePickerChangeEvent, emitValue)\n    validateField()\n  }\n}\n\nfunction finishInput(shouldChange = true) {\n  setVisible(false)\n\n  shouldChange && emitChange()\n  startState.resetColumn()\n  endState.resetColumn()\n}\n\nfunction verifyValue(type: DateTimeType) {\n  const dateValue = getCurrentState().dateValue\n\n  switch (type) {\n    case 'year': {\n      dateValue.year = boundRange(dateValue.year, 1970, 9999)\n      break\n    }\n    case 'month': {\n      dateValue.month = boundRange(dateValue.month, 1, 12)\n      break\n    }\n    case 'date': {\n      const month = dateValue.month\n\n      let lastDay\n\n      if (month < 7) {\n        if (month !== 2) {\n          lastDay = 30 + (month % 2)\n        } else {\n          if (isLeapYear(dateValue.year)) {\n            lastDay = 29\n          } else {\n            lastDay = 28\n          }\n        }\n      } else {\n        lastDay = 31 - (month % 2)\n      }\n\n      dateValue.date = boundRange(dateValue.date, 1, lastDay)\n      break\n    }\n    case 'hour':\n    case 'minute':\n    case 'second': {\n      dateValue[type] = boundRange(dateValue[type], 0, type === 'hour' ? 23 : 59)\n      dateValue[type] = Math.round(dateValue[type] / getStep(type)) * getStep(type)\n    }\n  }\n}\n\nfunction handleFocused() {\n  if (props.disabled) return\n\n  focused.value = true\n\n  timer.focus = setTimeout(() => {\n    if (focused.value) {\n      if (currentState.value === 'start') {\n        startInput.value?.focus()\n      } else {\n        endInput.value?.focus()\n      }\n    }\n  }, 120)\n}\n\nfunction handleBlur() {\n  clearTimeout(timer.focus)\n\n  focused.value = false\n  startInput.value?.blur()\n  endInput.value?.blur()\n}\n\nfunction showPanel(event: Event) {\n  if (props.disabled || readonly.value) return\n\n  const target = event.target as Node\n\n  setVisible(true)\n\n  if (wrapper.value && target) {\n    const units = Array.from(wrapper.value.querySelectorAll(`.${nh.be('unit')}`))\n    const index = units.findIndex(unit => unit === target || unit.contains(target))\n\n    if (!~index) {\n      startState.column = null\n      endState.column = null\n    }\n\n    if (props.range && index >= units.length / 2) {\n      toggleCurrentState('end')\n    } else {\n      toggleCurrentState('start')\n    }\n  }\n\n  handleFocused()\n}\n\nfunction handleInput(value: number) {\n  const state = getCurrentState()\n  const type = state.column\n\n  if (!type) return\n\n  handleInputNumber(type, value)\n\n  if (type === 'year' ? state.dateValue.year >= 1000 : state.dateValue[type] >= 10) {\n    state.enterColumn('next', false)\n  }\n}\n\nfunction handleInputNumber(type: DateTimeType, number: number) {\n  const state = getCurrentState()\n  const prev = state.dateValue[type]\n\n  if (state.activated[type] && prev > 0 && prev < (type === 'year' ? 1000 : 10)) {\n    state.dateValue[type] = prev * 10 + number\n  } else {\n    state.dateValue[type] = number\n    setActivatedTrue(type)\n  }\n\n  type !== 'year' && verifyValue(type)\n  emitEvent(props.onInput, type, state.dateValue[type])\n}\n\nfunction setActivatedTrue(type: DateTimeType) {\n  const activated = getCurrentState().activated\n\n  if (type === 'date') {\n    activated.year = true\n    activated.month = true\n  } else if (type === 'month') {\n    activated.year = true\n  } else if (type === 'minute') {\n    activated.hour = true\n  } else if (type === 'second') {\n    activated.hour = true\n    activated.minute = true\n  }\n\n  activated[type] = true\n}\n\nfunction handleInputFocus(type: DateTimeType) {\n  getCurrentState().column = type\n}\n\nfunction isTimeType(type: DateTimeType): type is TimeType {\n  return ['hour', 'minute', 'second'].includes(type)\n}\n\nfunction handleAdjust(adjustType: 'plus' | 'minus', ctrlKey: boolean) {\n  const isPlus = adjustType === 'plus'\n  const sign = isPlus ? 1 : -1\n  const state = getCurrentState()\n  const type = state.column\n\n  if (!type) return\n\n  if (state.enabled[type]) {\n    if (isTimeType(type)) {\n      state.dateValue[type] += sign * (ctrlKey ? getCtrlStep(type) : getStep(type))\n    } else {\n      if (ctrlKey) {\n        if (type === 'year') {\n          state.dateValue.year += sign * 10\n        } else {\n          state.dateValue[type === 'date' ? 'month' : 'year'] += sign\n        }\n      } else {\n        state.dateValue[type] += sign\n      }\n\n      computeDate()\n      updateDateActivated(type)\n    }\n\n    verifyValue(type)\n    emitEvent(props[isPlus ? 'onPlus' : 'onMinus'], type, state.dateValue[type])\n    datePanel.value?.refreshCalendar(currentState.value)\n  }\n}\n\nfunction handlePlus(ctrlKey: boolean) {\n  handleAdjust('plus', ctrlKey)\n}\n\nfunction handleMinus(ctrlKey: boolean) {\n  handleAdjust('minus', ctrlKey)\n}\n\nfunction computeDate() {\n  const dateValue = getCurrentState().dateValue\n  const date = new Date(dateValue.year, dateValue.month - 1, dateValue.date)\n\n  dateValue.year = date.getFullYear()\n  dateValue.month = date.getMonth() + 1\n  dateValue.date = date.getDate()\n}\n\nfunction fallbackFocus() {\n  requestAnimationFrame(() => {\n    handleBlur()\n    reference.value?.focus()\n  })\n}\n\nfunction handleEnter() {\n  fallbackFocus()\n  finishInput()\n  emitEvent(props.onEnter)\n}\n\nfunction handleCancel() {\n  fallbackFocus()\n  parseValue(lastValue.value.split('|'))\n  finishInput(false)\n  emitEvent(props.onCancel)\n}\n\nfunction handleClear(finish = true) {\n  if (props.disabled || readonly.value) return\n\n  if (props.clearable) {\n    nextTick(() => {\n      const emitValue = props.range ? ([] as number[]) : null\n\n      parseValue(null)\n      finish && finishInput(false)\n      emit('update:value', emitValue)\n      emit('update:formatted-value', props.range ? [] : null)\n      emitEvent(props.onChange as DatePickerChangeEvent, emitValue)\n      emitEvent(props.onClear)\n      clearField(emitValue!)\n      finish && handleBlur()\n\n      lastValue.value = ''\n\n      nextTick(() => {\n        toggleActivated(false)\n      })\n    })\n  }\n}\n\nfunction handleShortcut(name: string, value: Dateable | Dateable[]) {\n  fallbackFocus()\n  parseValue(value)\n  emitEvent(props.onShortcut as (name: string, value: Dateable | Dateable[]) => void, name, value)\n  finishInput()\n}\n\n// 只有时分秒\nfunction getStep(type: TimeType) {\n  return props.steps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\n}\n\n// 只有时分秒\nfunction getCtrlStep(type: TimeType) {\n  return props.ctrlSteps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\n}\n\nfunction handleDateHover(hoverDate: Date | null) {\n  if (props.range && hoverDate) {\n    hoveredDate.value = hoverDate\n\n    if (firstSelected.value) {\n      const hoverValues = [hoverDate.getFullYear(), hoverDate.getMonth() + 1, hoverDate.getDate()]\n      const start = hoveredLarge.value ? firstSelected.value : hoverValues\n      const end = hoveredLarge.value ? hoverValues : firstSelected.value\n\n      let types: DateTimeType[]\n\n      if (props.type === 'year') {\n        types = ['year']\n      } else if (props.type === 'month') {\n        types = ['year', 'month']\n      } else {\n        types = ['year', 'month', 'date']\n      }\n\n      for (let i = 0, len = types.length; i < len; ++i) {\n        startState.dateValue[types[i]] = start[i]\n        endState.dateValue[types[i]] = end[i]\n      }\n    }\n  }\n}\n\nfunction handlePanelChange(values: number[]) {\n  let types: DateTimeType[]\n\n  if (props.type === 'year') {\n    types = ['year']\n  } else if (props.type === 'month') {\n    types = ['year', 'month']\n  } else {\n    types = ['year', 'month', 'date']\n  }\n\n  if (!props.range) {\n    for (let i = 0, len = types.length; i < len; ++i) {\n      startState.dateValue[types[i]] = values[i]\n      updateDateActivated(types[i], 'start')\n    }\n\n    if (noActionMode.value) handleEnter()\n\n    return\n  }\n\n  if (!firstSelected.value) {\n    firstSelected.value = values\n\n    for (let i = 0, len = types.length; i < len; ++i) {\n      startState.dateValue[types[i]] = values[i]\n      endState.dateValue[types[i]] = values[i]\n      updateDateActivated(types[i], 'start')\n      updateDateActivated(types[i], 'end')\n    }\n  } else {\n    const [year, month, date] = firstSelected.value\n    const firstTime = new Date(`${year}-${month}-${date}`).getTime()\n    const secondTime = new Date(`${values[0]}-${values[1]}-${values[2]}`).getTime()\n    const start = firstTime < secondTime ? firstSelected.value : values\n    const end = firstTime < secondTime ? values : firstSelected.value\n\n    for (let i = 0, len = types.length; i < len; ++i) {\n      startState.dateValue[types[i]] = start[i]\n      endState.dateValue[types[i]] = end[i]\n      updateDateActivated(types[i], 'start')\n      updateDateActivated(types[i], 'end')\n    }\n\n    verifyRangeValue()\n    firstSelected.value = undefined\n\n    if (noActionMode.value) handleEnter()\n  }\n}\n\nfunction handleTimeChange(valueType: 'start' | 'end', type: TimeType, time: number) {\n  const state = valueType === 'start' ? startState : endState\n\n  state.dateValue[type] = time\n  updateDateActivated('hour', valueType)\n  updateDateActivated('minute', valueType)\n  updateDateActivated('second', valueType)\n}\n\nfunction updateDateActivated(type: DateTimeType, valueType?: 'start' | 'end') {\n  const state = valueType ? (valueType === 'start' ? startState : endState) : getCurrentState()\n\n  if (type === 'month') {\n    state.activated.year = true\n  } else if (type === 'date') {\n    state.activated.year = true\n    state.activated.month = true\n  }\n\n  state.activated[type] = true\n}\n\nfunction verifyRangeValue() {\n  if (!props.range) return\n\n  const startDate = startState.getDate()\n  const endDate = endState.getDate()\n\n  if (startDate.getTime() > endDate.getTime()) {\n    startState.setDate(endDate)\n    endState.setDate(startDate)\n  }\n}\n\nfunction toggleCurrentState(type: 'start' | 'end') {\n  currentState.value = type\n}\n\nfunction enterColumn(type: 'prev' | 'next') {\n  if (props.range) {\n    if (type === 'prev' && currentState.value === 'start' && !startState.column) {\n      toggleCurrentState('end')\n    }\n\n    const state = getCurrentState()\n    const currentColumn = state.column\n\n    state.enterColumn(type, !currentColumn)\n\n    if (currentColumn === state.column) {\n      const isStart = currentState.value === 'start'\n      const otherState = isStart ? endState : startState\n\n      otherState.resetColumn(type === 'prev' ? 'second' : 'year', type === 'prev')\n      toggleCurrentState(isStart ? 'end' : 'start')\n    }\n  } else {\n    startState.enterColumn(type)\n  }\n}\n\nfunction handleStartInput(type: DateTimeType) {\n  toggleCurrentState('start')\n  handleInputFocus(type)\n\n  nextTick(() => {\n    datePanel.value?.refreshCalendar('start')\n  })\n}\n\nfunction handleEndInput(type: DateTimeType) {\n  toggleCurrentState('end')\n  handleInputFocus(type)\n\n  nextTick(() => {\n    datePanel.value?.refreshCalendar('end')\n  })\n}\n\nfunction handleClickOutside() {\n  emitEvent(props.onClickOutside)\n\n  if (props.outsideClose && currentVisible.value) {\n    finishInput(!noActionMode.value && !props.outsideCancel)\n    handleBlur()\n    emitEvent(props.onOutsideClose)\n  }\n}\n</script>\n\n<template>\n  <div\n    :id=\"idFor\"\n    ref=\"wrapper\"\n    :class=\"className\"\n    role=\"group\"\n    :aria-disabled=\"toAttrValue(props.disabled)\"\n    :aria-expanded=\"toAttrValue(currentVisible)\"\n    aria-haspopup=\"dialog\"\n    :aria-labelledby=\"labelId\"\n    @click=\"showPanel\"\n  >\n    <div\n      ref=\"reference\"\n      :class=\"selectorClass\"\n      tabindex=\"0\"\n      @keydown.space.prevent=\"showPanel\"\n      @keydown.backspace.prevent=\"handleClear(false)\"\n    >\n      <div\n        v-if=\"hasPrefix\"\n        :class=\"[nh.be('icon'), nh.be('prefix')]\"\n        :style=\"{ color: props.prefixColor }\"\n      >\n        <slot name=\"prefix\">\n          <Renderer :renderer=\"props.slots.prefix\">\n            <Icon :icon=\"props.prefix\"></Icon>\n          </Renderer>\n        </slot>\n      </div>\n      <div :class=\"nh.be('control')\">\n        <DateControl\n          ref=\"start\"\n          :unit-type=\"currentState === 'start' ? startState.column! : ''\"\n          :enabled=\"startState.enabled\"\n          :activated=\"startState.activated\"\n          :date-value=\"startState.dateValue\"\n          :steps=\"props.steps\"\n          :ctrl-steps=\"props.ctrlSteps\"\n          :focused=\"focused\"\n          :visible=\"currentVisible\"\n          :date-separator=\"props.dateSeparator\"\n          :time-separator=\"props.timeSeparator\"\n          :filler=\"props.filler\"\n          :labels=\"props.labels\"\n          :has-error=\"startError\"\n          :placeholder=\"startPlaceholder\"\n          :readonly=\"props.unitReadonly\"\n          :labeled-by=\"labelId\"\n          :date-unit-order=\"dateUnitOrder\"\n          @input=\"handleInput\"\n          @plus=\"handlePlus\"\n          @minus=\"handleMinus\"\n          @enter=\"handleEnter\"\n          @cancel=\"handleCancel\"\n          @unit-focus=\"handleStartInput\"\n          @prev-unit=\"enterColumn('prev')\"\n          @next-unit=\"enterColumn('next')\"\n          @blur=\"startState.column = null\"\n        ></DateControl>\n        <template v-if=\"props.range\">\n          <div :class=\"nh.be('exchange')\">\n            <slot name=\"exchange\">\n              <Renderer :renderer=\"props.slots.exchange\">\n                <Icon v-bind=\"icons.exchange\" style=\"padding-top: 1px\"></Icon>\n              </Renderer>\n            </slot>\n          </div>\n          <DateControl\n            ref=\"end\"\n            :unit-type=\"currentState === 'end' ? endState.column! : ''\"\n            :enabled=\"endState.enabled\"\n            :activated=\"endState.activated\"\n            :date-value=\"endState.dateValue\"\n            :steps=\"props.steps\"\n            :ctrl-steps=\"props.ctrlSteps\"\n            :focused=\"focused\"\n            :visible=\"currentVisible\"\n            :date-separator=\"props.dateSeparator\"\n            :time-separator=\"props.timeSeparator\"\n            :filler=\"props.filler\"\n            :labels=\"props.labels\"\n            :has-error=\"endError\"\n            :placeholder=\"endPlaceholder\"\n            :readonly=\"props.unitReadonly\"\n            :labeled-by=\"labelId\"\n            :date-unit-order=\"dateUnitOrder\"\n            @input=\"handleInput\"\n            @plus=\"handlePlus\"\n            @minus=\"handleMinus\"\n            @enter=\"handleEnter\"\n            @cancel=\"handleCancel\"\n            @unit-focus=\"handleEndInput\"\n            @prev-unit=\"enterColumn('prev')\"\n            @next-unit=\"enterColumn('next')\"\n            @blur=\"endState.column = null\"\n          ></DateControl>\n        </template>\n      </div>\n      <div\n        v-if=\"!props.noSuffix\"\n        :class=\"[nh.be('icon'), nh.be('suffix')]\"\n        :style=\"{\n          color: props.suffixColor,\n          opacity: showClear || props.loading ? '0%' : ''\n        }\"\n      >\n        <slot name=\"suffix\">\n          <Renderer :renderer=\"props.slots.suffix\">\n            <Icon v-bind=\"icons.calendar\" :icon=\"props.suffix || icons.calendar.icon\"></Icon>\n          </Renderer>\n        </slot>\n      </div>\n      <div\n        v-else-if=\"props.clearable || props.loading\"\n        :class=\"[nh.be('icon'), nh.bem('icon', 'placeholder'), nh.be('suffix')]\"\n      ></div>\n      <Transition :name=\"nh.ns('fade')\" appear>\n        <button\n          v-if=\"showClear\"\n          :class=\"[nh.be('icon'), nh.be('clear')]\"\n          type=\"button\"\n          tabindex=\"-1\"\n          :aria-label=\"mergedLocale.ariaLabel.clear\"\n          @click.stop=\"handleClear()\"\n        >\n          <Icon v-bind=\"icons.clear\" label=\"clear\"></Icon>\n        </button>\n        <div v-else-if=\"props.loading\" :class=\"[nh.be('icon'), nh.be('loading')]\">\n          <Icon\n            v-bind=\"icons.loading\"\n            :effect=\"props.loadingEffect || icons.loading.effect\"\n            :icon=\"props.loadingIcon || icons.loading.icon\"\n            label=\"loading\"\n          ></Icon>\n        </div>\n      </Transition>\n    </div>\n    <Popper\n      ref=\"popper\"\n      :class=\"[nh.be('popper'), nh.ns('calendar-vars'), nh.ns('time-picker-vars'), nh.bs('vars')]\"\n      :visible=\"currentVisible\"\n      :to=\"transferTo\"\n      :transition=\"props.transitionName\"\n      :alive=\"props.popperAlive ?? !transferTo\"\n      @click.stop=\"handleFocused\"\n      @before-enter=\"staticWheel = true\"\n      @before-leave=\"staticWheel = true\"\n      @after-enter=\"staticWheel = false\"\n      @after-leave=\"staticWheel = false\"\n    >\n      <DatePanel\n        ref=\"panel\"\n        :type=\"props.type\"\n        :start-value=\"startState.dateValue\"\n        :end-value=\"endState.dateValue\"\n        :start-activated=\"startState.activated\"\n        :end-activated=\"endState.activated\"\n        :value-type=\"currentState\"\n        :shortcuts=\"props.shortcuts\"\n        :confirm-text=\"props.confirmText\"\n        :cancel-text=\"props.cancelText\"\n        :today=\"props.today\"\n        :no-action=\"props.noAction\"\n        :steps=\"props.steps\"\n        :range=\"props.range\"\n        :min=\"props.min\"\n        :max=\"props.max\"\n        :disabled-date=\"isDateDisabled\"\n        :disabled-time=\"isTimeDisabled\"\n        :has-error=\"startError || endError\"\n        :selecting-type=\"hoveredLarge ? 'end' : 'start'\"\n        :locale=\"mergedLocale\"\n        :week-start=\"props.weekStart\"\n        :static-wheel=\"staticWheel\"\n        :shortcuts-placement=\"props.shortcutsPlacement\"\n        :labeled-by=\"labelId\"\n        @shortcut=\"handleShortcut\"\n        @change=\"handlePanelChange\"\n        @confirm=\"handleEnter\"\n        @cancel=\"handleCancel\"\n        @hover=\"handleDateHover\"\n        @time-change=\"handleTimeChange\"\n      >\n        <template v-if=\"$slots.panelTitle || props.slots.panelTitle\" #title=\"titleParams\">\n          <slot name=\"panelTitle\" v-bind=\"titleParams\">\n            <Renderer :renderer=\"props.slots.panelTitle\" :data=\"titleParams\"></Renderer>\n          </slot>\n        </template>\n        <template v-if=\"$slots.panelYear || props.slots.panelYear\" #year=\"yearParams\">\n          <slot name=\"panelYear\" v-bind=\"yearParams\">\n            <Renderer :renderer=\"props.slots.panelYear\" :data=\"yearParams\"></Renderer>\n          </slot>\n        </template>\n        <template v-if=\"$slots.panelMonth || props.slots.panelMonth\" #month=\"monthParams\">\n          <slot name=\"panelMonth\" v-bind=\"monthParams\">\n            <Renderer :renderer=\"props.slots.panelMonth\" :data=\"monthParams\"></Renderer>\n          </slot>\n        </template>\n        <template v-if=\"$slots.panelWeek || props.slots.panelWeek\" #week=\"weekParams\">\n          <slot name=\"panelWeek\" v-bind=\"weekParams\">\n            <Renderer :renderer=\"props.slots.panelWeek\" :data=\"weekParams\"></Renderer>\n          </slot>\n        </template>\n        <template v-if=\"$slots.panelDate || props.slots.panelDate\" #date=\"dateParams\">\n          <slot name=\"panelDate\" v-bind=\"dateParams\">\n            <Renderer :renderer=\"props.slots.panelDate\" :data=\"dateParams\"></Renderer>\n          </slot>\n        </template>\n      </DatePanel>\n    </Popper>\n  </div>\n</template>\n"],"names":["idFor","labelId","state","disabled","loading","size","validateField","clearField","getFieldValue","setFieldValue","useFieldStore","_a","reference","nh","useNameHelper","_props","__props","props","useProps","createSizeProp","createStateProp","value","datePickerTypes","placementWhileList","toFalse","createIconProp","emit","__emit","slots","_useSlots","calendarLocale","useLocale","datePickerLocale","icons","useIcons","wordSpace","useWordSpace","placement","toRef","transfer","currentVisible","ref","focused","startState","createDateState","endState","currentState","lastValue","firstSelected","hoveredDate","staticWheel","dateUnitOrder","timer","useSetTimeout","wrapper","useClickOutside","handleClickOutside","popper","transferTo","updatePopper","usePopper","computed","isHover","useHover","startInput","endInput","datePanel","mergedLocale","locale","mergeObjects","isObject","startPlaceholder","select","start","type","makeSentence","endPlaceholder","end","className","readonly","selectorClass","baseCls","hasPrefix","currentValue","values","doubleDigits","hoveredLarge","year","month","date","firstTime","hoverTime","showClear","min","rawValueToDate","invalidDate","max","startOfMonth","reversed","startMinTime","differenceDays","getTime","startMaxTime","endMinTime","endMaxTime","startReversed","startValue","endValue","types","startTimeBound","useTimeBound","endTimeBound","isTimeDisabled","startError","hour","minute","second","isDateDisabled","endError","noActionMode","watch","parseFormat","parseValue","getStringValue","hasMonth","hasDate","emitEvent","getCurrentState","setVisible","handleBlur","__expose","options","currentColumn","enabled","resetColumn","enterColumn","useColumn","dateValue","reactive","activated","valueRecord","activatedRecord","withTime","defaultValue","toDate","i","toggleActivated","parseDateUnitOrder","orderSet","inQuotation","len","char","parseTimeUnitEnabled","isDatetime","valueType","time","verifyDate","visible","emitChange","emitValues","formattedValues","valueFormat","formatValue","timestamp","format","emitValue","formattedValue","finishInput","shouldChange","verifyValue","boundRange","lastDay","isLeapYear","getStep","handleFocused","_b","showPanel","event","target","units","index","unit","toggleCurrentState","handleInput","handleInputNumber","number","prev","setActivatedTrue","handleInputFocus","isTimeType","handleAdjust","adjustType","ctrlKey","isPlus","sign","getCtrlStep","computeDate","updateDateActivated","handlePlus","handleMinus","fallbackFocus","handleEnter","handleCancel","handleClear","finish","nextTick","handleShortcut","name","handleDateHover","hoverDate","hoverValues","handlePanelChange","secondTime","verifyRangeValue","handleTimeChange","startDate","endDate","isStart","handleStartInput","handleEndInput","_createElementBlock","_unref","toAttrValue","_createElementVNode","_normalizeStyle","_renderSlot","_ctx","_createVNode","Renderer","Icon","_normalizeClass","DateControl","_cache","$event","_Fragment","_mergeProps","_Transition","Popper","DatePanel","$slots","_withCtx","titleParams","_normalizeProps","_guardReactiveProps","yearParams","monthParams","weekParams","dateParams"],"mappings":"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"}