{"version":3,"file":"time-picker.vue2.mjs","sources":["../../../components/date-picker/time-picker.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Button } from '@/components/button'\r\nimport { Icon } from '@/components/icon'\r\nimport { Popper } from '@/components/popper'\r\nimport { useFieldStore } from '@/components/form'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed, nextTick, reactive, ref, toRef, watch } from 'vue'\r\n\r\nimport TimeWheel from './time-wheel.vue'\r\nimport TimeControl from './time-control.vue'\r\nimport {\r\n  createIconProp,\r\n  createSizeProp,\r\n  createStateProp,\r\n  emitEvent,\r\n  makeSentence,\r\n  useIcons,\r\n  useLocale,\r\n  useNameHelper,\r\n  useProps,\r\n  useWordSpace,\r\n} from '@vexip-ui/config'\r\nimport {\r\n  placementWhileList,\r\n  useClickOutside,\r\n  useHover,\r\n  usePopper,\r\n  useSetTimeout,\r\n} from '@vexip-ui/hooks'\r\nimport { USE_TOUCH, boundRange, callIfFunc, doubleDigits, toAttrValue } from '@vexip-ui/utils'\r\nimport { timePickerProps } from './props'\r\nimport { useColumn, useTimeBound } from './helper'\r\nimport { TIME_REG } from './symbol'\r\n\r\nimport type { PopperExposed } from '@/components/popper'\r\nimport type { TimePickerChangeEvent, TimePickerSlots, TimeType } from './symbol'\r\n\r\ndefineOptions({ name: 'TimePicker' })\r\n\r\nconst {\r\n  idFor,\r\n  labelId,\r\n  state,\r\n  disabled,\r\n  loading,\r\n  size,\r\n  validateField,\r\n  clearField,\r\n  getFieldValue,\r\n  setFieldValue,\r\n} = useFieldStore<string | string[]>(() => reference.value?.focus())\r\n\r\nconst nh = useNameHelper('time-picker')\r\n\r\nconst _props = defineProps(timePickerProps)\r\nconst props = useProps('timePicker', _props, {\r\n  size: createSizeProp(size),\r\n  state: createStateProp(state),\r\n  locale: null,\r\n  visible: false,\r\n  placement: {\r\n    default: 'bottom-start',\r\n    validator: value => placementWhileList.includes(value),\r\n  },\r\n  transfer: false,\r\n  format: 'HH:mm:ss',\r\n  separator: ':',\r\n  value: {\r\n    default: () => getFieldValue(),\r\n    static: true,\r\n  },\r\n  filler: {\r\n    default: '-',\r\n    validator: value => value.length === 1,\r\n  },\r\n  clearable: false,\r\n  noAction: false,\r\n  noArrow: false,\r\n  pointer: USE_TOUCH,\r\n  candidate: {\r\n    default: 3,\r\n    validator: value => [0, 1, 2, 3].includes(value),\r\n  },\r\n  steps: () => [1, 1, 1],\r\n  labels: () => ({}),\r\n  shortcuts: () => [],\r\n  range: null,\r\n  disabled: () => disabled.value,\r\n  transitionName: () => nh.ns('drop'),\r\n  confirmText: null,\r\n  cancelText: null,\r\n  ctrlSteps: () => [5, 5, 5],\r\n  prefix: createIconProp(),\r\n  prefixColor: '',\r\n  suffix: createIconProp(),\r\n  suffixColor: '',\r\n  noSuffix: false,\r\n  exchange: false,\r\n  loading: () => loading.value,\r\n  loadingIcon: createIconProp(),\r\n  loadingLock: false,\r\n  loadingEffect: null,\r\n  min: null,\r\n  max: null,\r\n  outsideClose: true,\r\n  outsideCancel: false,\r\n  placeholder: null,\r\n  unitReadonly: false,\r\n  popperAlive: null,\r\n  shortcutsPlacement: 'left',\r\n  slots: () => ({}),\r\n})\r\n\r\nconst emit = defineEmits(['update:value', 'update:visible'])\r\n\r\nconst slots = defineSlots<TimePickerSlots>()\r\n\r\nconst locale = useLocale('timePicker', toRef(props, 'locale'))\r\nconst icons = useIcons()\r\nconst wordSpace = useWordSpace()\r\n\r\nconst placement = toRef(props, 'placement')\r\nconst transfer = toRef(props, 'transfer')\r\nconst currentVisible = ref(props.visible)\r\nconst focused = ref(false)\r\nconst lastValue = ref('')\r\nconst startState = createTimeState()\r\nconst endState = createTimeState()\r\nconst currentState = ref<'start' | 'end'>('start')\r\nconst staticWheel = ref(false)\r\n\r\nconst { timer } = useSetTimeout()\r\n\r\nconst wrapper = useClickOutside(handleClickOutside)\r\nconst popper = ref<PopperExposed>()\r\nconst { reference, transferTo, updatePopper } = usePopper({\r\n  placement,\r\n  transfer,\r\n  wrapper,\r\n  popper: computed(() => popper.value?.wrapper),\r\n  isDrop: true,\r\n})\r\nconst { isHover } = useHover(reference)\r\nconst { isTimeDisabled } = useTimeBound(toRef(props, 'min'), toRef(props, 'max'))\r\n\r\nconst startInput = ref<InstanceType<typeof TimeControl>>()\r\nconst endInput = ref<InstanceType<typeof TimeControl>>()\r\n\r\nconst startPlaceholder = computed(() => {\r\n  if (props.placeholder) {\r\n    return Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder\r\n  }\r\n\r\n  const { select, start, time } = locale.value.placeholder\r\n\r\n  return makeSentence(props.range ? `${start} ${time}` : `${select} ${time}`, wordSpace.value)\r\n})\r\nconst endPlaceholder = computed(() => {\r\n  if (props.placeholder) {\r\n    return Array.isArray(props.placeholder)\r\n      ? props.placeholder[1] || props.placeholder[0]\r\n      : props.placeholder\r\n  }\r\n\r\n  const { end, time } = locale.value.placeholder\r\n\r\n  return makeSentence(`${end} ${time}`, wordSpace.value)\r\n})\r\nconst className = computed(() => {\r\n  return [\r\n    nh.b(),\r\n    nh.ns('input-vars'),\r\n    nh.bs('vars'),\r\n    {\r\n      [nh.bm('inherit')]: props.inherit,\r\n      [nh.bm('disabled')]: props.disabled,\r\n      [nh.bm(props.size)]: props.size !== 'default',\r\n      [nh.bm('no-hour')]: !startState.enabled.hour,\r\n      [nh.bm('no-minute')]: !startState.enabled.minute,\r\n      [nh.bm('no-second')]: !startState.enabled.second,\r\n      [nh.bm('visible')]: currentVisible.value,\r\n      [nh.bm(props.state)]: props.state !== 'default',\r\n      [nh.bm('is-range')]: props.range,\r\n    },\r\n  ]\r\n})\r\nconst readonly = computed(() => props.loading && props.loadingLock)\r\nconst selectorClass = computed(() => {\r\n  const baseCls = nh.be('selector')\r\n\r\n  return {\r\n    [baseCls]: true,\r\n    [`${baseCls}--disabled`]: props.disabled,\r\n    [`${baseCls}--readonly`]: readonly.value,\r\n    [`${baseCls}--loading`]: props.loading,\r\n    [`${baseCls}--${props.size}`]: props.size !== 'default',\r\n    [`${baseCls}--focused`]: focused.value,\r\n    [`${baseCls}--${props.state}`]: props.state !== 'default',\r\n  }\r\n})\r\nconst hasPrefix = computed(() => !!(slots.prefix || props.prefix || props.slots.prefix))\r\nconst currentValue = computed(() => {\r\n  const values = [startState, endState].map(state => {\r\n    return Object.values(state.timeValue).map(doubleDigits).join(':')\r\n  })\r\n\r\n  return props.range ? values : values[0]\r\n})\r\nconst showClear = computed(() => {\r\n  return !props.disabled && !readonly.value && props.clearable && isHover.value && !!lastValue.value\r\n})\r\nconst startError = computed(() => {\r\n  const { hour, minute, second } = startState.timeValue\r\n\r\n  return (\r\n    isTimeDisabled.hour(hour) ||\r\n    isTimeDisabled.minute(hour, minute) ||\r\n    isTimeDisabled.second(hour, minute, second)\r\n  )\r\n})\r\nconst endError = computed(() => {\r\n  if (!props.range) return false\r\n\r\n  const { hour, minute, second } = endState.timeValue\r\n\r\n  return (\r\n    isTimeDisabled.hour(hour) ||\r\n    isTimeDisabled.minute(hour, minute) ||\r\n    isTimeDisabled.second(hour, minute, second)\r\n  )\r\n})\r\n\r\nwatch(\r\n  () => props.value,\r\n  value => {\r\n    parseValue(value)\r\n    lastValue.value = (Array.isArray(value) ? value[0] || value[1] : value) ? getStringValue() : ''\r\n  },\r\n  { immediate: true },\r\n)\r\nwatch(() => props.format, parseFormat, { immediate: true })\r\nwatch(\r\n  () => props.visible,\r\n  value => {\r\n    currentVisible.value = value\r\n  },\r\n)\r\nwatch(currentVisible, value => {\r\n  if (value) {\r\n    updatePopper()\r\n  }\r\n})\r\nwatch(focused, value => {\r\n  if (value) {\r\n    emitEvent(props.onFocus)\r\n  } else {\r\n    emitEvent(props.onBlur)\r\n  }\r\n})\r\nwatch(currentState, value => {\r\n  if (!props.unitReadonly && currentVisible.value) {\r\n    emitEvent(props.onChangeCol, getCurrentState().column, value)\r\n  }\r\n})\r\nwatch(\r\n  () => startState.column,\r\n  value => {\r\n    if (!props.unitReadonly && currentVisible.value && currentState.value === 'start') {\r\n      emitEvent(props.onChangeCol, value, 'start')\r\n    }\r\n  },\r\n)\r\nwatch(\r\n  () => endState.column,\r\n  value => {\r\n    if (!props.unitReadonly && currentVisible.value && currentState.value === 'end') {\r\n      emitEvent(props.onChangeCol, value, 'end')\r\n    }\r\n  },\r\n)\r\nwatch(\r\n  () => props.disabled,\r\n  value => {\r\n    if (value) {\r\n      setVisible(false)\r\n      handleBlur()\r\n    }\r\n  },\r\n)\r\nwatch(readonly, value => {\r\n  if (value) {\r\n    setVisible(false)\r\n  }\r\n})\r\n\r\ndefineExpose({\r\n  idFor,\r\n  isHover,\r\n  currentVisible,\r\n  focused,\r\n  startState,\r\n  endState,\r\n  currentState,\r\n  currentValue,\r\n  startError,\r\n  endError,\r\n  wrapper,\r\n  reference,\r\n  popper,\r\n  start: startInput,\r\n  end: endInput,\r\n  updatePopper,\r\n  focus: (options?: FocusOptions) => reference.value?.focus(options),\r\n  blur: () => reference.value?.blur(),\r\n})\r\n\r\nfunction createTimeState() {\r\n  const { currentColumn, enabled, resetColumn, enterColumn } = useColumn([\r\n    'hour',\r\n    'minute',\r\n    'second',\r\n  ] as TimeType[])\r\n\r\n  const timeValue = reactive({\r\n    hour: 0,\r\n    minute: 0,\r\n    second: 0,\r\n  })\r\n  const activated = reactive({\r\n    hour: false,\r\n    minute: false,\r\n    second: false,\r\n  })\r\n\r\n  return reactive({\r\n    column: currentColumn,\r\n    enabled,\r\n    activated,\r\n    timeValue,\r\n    resetColumn,\r\n    enterColumn,\r\n  })\r\n}\r\n\r\nfunction getCurrentState() {\r\n  return currentState.value === 'start' ? startState : endState\r\n}\r\n\r\nfunction parseValue<T extends string | null>(value: T | T[]) {\r\n  if (!Array.isArray(value)) {\r\n    value = [value, value]\r\n  }\r\n\r\n  const defaultDate = new Date()\r\n\r\n  for (let i = 0; i < 2; ++i) {\r\n    const match = TIME_REG.exec(value[i] || '')\r\n    const state = i === 0 ? startState : endState\r\n    const { timeValue } = state\r\n\r\n    if (match) {\r\n      toggleActivated(true, i === 0 ? 'start' : 'end')\r\n\r\n      const hour = parseInt(match[1])\r\n      const minute = match[2] ? parseInt(match[2].slice(1)) : 0\r\n      const second = match[3] ? parseInt(match[3].slice(1)) : 0\r\n\r\n      const date = new Date(2000, 1, 1, hour, minute, second)\r\n\r\n      timeValue.hour = date.getHours()\r\n      timeValue.minute = date.getMinutes()\r\n      timeValue.second = date.getSeconds()\r\n    } else {\r\n      timeValue.hour = defaultDate.getHours()\r\n      timeValue.minute = defaultDate.getMinutes()\r\n      timeValue.second = defaultDate.getSeconds()\r\n\r\n      toggleActivated(false, i === 0 ? 'start' : 'end')\r\n    }\r\n\r\n    if (!props.range) break\r\n  }\r\n}\r\n\r\nfunction parseFormat() {\r\n  ;[startState, endState].forEach(state => {\r\n    state.enabled.hour = props.format.includes('H')\r\n    state.enabled.minute = props.format.includes('m')\r\n    state.enabled.second = props.format.includes('s')\r\n  })\r\n}\r\n\r\nfunction toggleActivated(value: boolean, valueType?: 'start' | 'end') {\r\n  const states = valueType\r\n    ? valueType === 'start'\r\n      ? [startState]\r\n      : [endState]\r\n    : [startState, endState]\r\n\r\n  states.forEach(state => {\r\n    ;(Object.keys(state.activated) as TimeType[]).forEach(type => {\r\n      state.activated[type] = value\r\n    })\r\n  })\r\n}\r\n\r\nfunction getStringValue() {\r\n  return Array.isArray(currentValue.value) ? currentValue.value.join('|') : currentValue.value\r\n}\r\n\r\nfunction verifyTime() {\r\n  if (startError.value || (props.range && endError.value)) {\r\n    parseValue(props.value)\r\n  }\r\n}\r\n\r\nfunction setVisible(visible: boolean) {\r\n  if (currentVisible.value === visible) return\r\n\r\n  currentVisible.value = visible\r\n\r\n  emit('update:visible', visible)\r\n  emitEvent(props.onToggle, visible)\r\n}\r\n\r\nfunction emitChange() {\r\n  verifyTime()\r\n\r\n  if (lastValue.value !== getStringValue()) {\r\n    lastValue.value = getStringValue()\r\n\r\n    toggleActivated(true)\r\n    emit('update:value', currentValue.value)\r\n    setFieldValue(currentValue.value)\r\n    emitEvent(props.onChange as TimePickerChangeEvent, currentValue.value)\r\n    validateField()\r\n  }\r\n}\r\n\r\nfunction handleFocused() {\r\n  if (props.disabled) return\r\n\r\n  focused.value = true\r\n\r\n  timer.focus = setTimeout(() => {\r\n    if (focused.value) {\r\n      if (currentState.value === 'start') {\r\n        startInput.value?.focus()\r\n      } else {\r\n        endInput.value?.focus()\r\n      }\r\n    }\r\n  }, 120)\r\n}\r\n\r\nfunction handleBlur() {\r\n  clearTimeout(timer.focus)\r\n\r\n  focused.value = false\r\n  startInput.value?.blur()\r\n  endInput.value?.blur()\r\n}\r\n\r\nfunction showPanel(event: Event) {\r\n  if (props.disabled || readonly.value) return\r\n\r\n  const target = event.target as Node\r\n\r\n  setVisible(true)\r\n  handleFocused()\r\n\r\n  if (wrapper.value && target) {\r\n    const units = Array.from(wrapper.value.querySelectorAll(`.${nh.be('unit')}`))\r\n\r\n    if (!units.some(unit => unit === target || unit.contains(target))) {\r\n      startState.column = null\r\n      endState.column = null\r\n    }\r\n  }\r\n}\r\n\r\nfunction finishInput(shouldChange = true) {\r\n  setVisible(false)\r\n\r\n  shouldChange && emitChange()\r\n  startState.resetColumn()\r\n  endState.resetColumn()\r\n}\r\n\r\nfunction handleClear(finish = true) {\r\n  if (props.disabled || readonly.value) return\r\n\r\n  if (props.clearable) {\r\n    nextTick(() => {\r\n      const emitValue = props.range ? ([] as string[]) : ''\r\n\r\n      parseValue(null)\r\n      finish && finishInput(false)\r\n      emit('update:value', emitValue)\r\n      emitEvent(props.onChange as TimePickerChangeEvent, emitValue)\r\n      emitEvent(props.onClear)\r\n      clearField(emitValue)\r\n      finish && handleBlur()\r\n\r\n      lastValue.value = ''\r\n\r\n      nextTick(() => {\r\n        toggleActivated(false)\r\n      })\r\n    })\r\n  }\r\n}\r\n\r\nfunction handleWheelChange(type: TimeType) {\r\n  if (currentVisible.value) {\r\n    getCurrentState().activated[type] = true\r\n  }\r\n}\r\n\r\nfunction handleInputFocus(type: TimeType) {\r\n  getCurrentState().column = type\r\n}\r\n\r\nfunction handleInput(value: number) {\r\n  const state = getCurrentState()\r\n  const type = state.column\r\n\r\n  if (!type) return\r\n\r\n  handleInputNumber(type, value)\r\n\r\n  if (state.column !== 'second' && state.timeValue[type] >= 10) {\r\n    state.enterColumn('next', false)\r\n  }\r\n}\r\n\r\nfunction handleInputNumber(type: TimeType, number: number) {\r\n  const state = getCurrentState()\r\n  const prev = state.timeValue[type]\r\n\r\n  if (state.activated[type] && prev > 0 && prev < 10) {\r\n    state.timeValue[type] = prev * 10 + number\r\n  } else {\r\n    state.timeValue[type] = number\r\n  }\r\n\r\n  verifyValue(type)\r\n\r\n  state.activated[type] = true\r\n  emitEvent(props.onInput, type, state.timeValue[type])\r\n}\r\n\r\nfunction verifyValue(type: TimeType) {\r\n  const timeValue = getCurrentState().timeValue\r\n\r\n  timeValue[type] = boundRange(timeValue[type], 0, type === 'hour' ? 23 : 59)\r\n  timeValue[type] = Math.round(timeValue[type] / getStep(type)) * getStep(type)\r\n}\r\n\r\nfunction handlePlus(ctrlKey: boolean) {\r\n  const state = getCurrentState()\r\n  const type = state.column\r\n\r\n  if (!type) return\r\n\r\n  if (state.enabled[type]) {\r\n    state.timeValue[type] += ctrlKey ? getCtrlStep(type) : getStep(type)\r\n\r\n    verifyValue(type)\r\n    emitEvent(props.onPlus, type, state.timeValue[type])\r\n  }\r\n}\r\n\r\nfunction handleMinus(ctrlKey: boolean) {\r\n  const state = getCurrentState()\r\n  const type = state.column\r\n\r\n  if (!type) return\r\n\r\n  if (state.enabled[type]) {\r\n    state.timeValue[type] -= ctrlKey ? getCtrlStep(type) : getStep(type)\r\n\r\n    verifyValue(type)\r\n    emitEvent(props.onMinus, type, state.timeValue[type])\r\n  }\r\n}\r\n\r\nfunction getStep(type: TimeType) {\r\n  return props.steps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\r\n}\r\n\r\nfunction getCtrlStep(type: TimeType) {\r\n  return props.ctrlSteps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\r\n}\r\n\r\nfunction fallbackFocus() {\r\n  requestAnimationFrame(() => {\r\n    handleBlur()\r\n    reference.value?.focus()\r\n  })\r\n}\r\n\r\nfunction handleEnter() {\r\n  fallbackFocus()\r\n  finishInput()\r\n  emitEvent(props.onEnter)\r\n}\r\n\r\nfunction handleCancel() {\r\n  fallbackFocus()\r\n  parseValue(props.value)\r\n  finishInput(false)\r\n  emitEvent(props.onCancel)\r\n}\r\n\r\nfunction handleShortcut(index: number) {\r\n  const { value, name } = props.shortcuts[index]\r\n  const parsedValue = callIfFunc(value)\r\n\r\n  fallbackFocus()\r\n  parseValue(parsedValue)\r\n  emitEvent(props.onShortcut as (name: string, value: string | string[]) => void, name, parsedValue)\r\n  finishInput()\r\n}\r\n\r\nfunction toggleCurrentState(type: 'start' | 'end') {\r\n  currentState.value = type\r\n}\r\n\r\nfunction enterColumn(type: 'prev' | 'next') {\r\n  if (props.range) {\r\n    if (type === 'prev' && currentState.value === 'start' && !startState.column) {\r\n      toggleCurrentState('end')\r\n    }\r\n\r\n    const state = getCurrentState()\r\n    const currentColumn = state.column\r\n\r\n    state.enterColumn(type, !currentColumn)\r\n\r\n    if (currentColumn === state.column) {\r\n      const isStart = currentState.value === 'start'\r\n      const otherState = isStart ? endState : startState\r\n\r\n      otherState.resetColumn(type === 'prev' ? 'second' : 'hour', type === 'prev')\r\n      toggleCurrentState(isStart ? 'end' : 'start')\r\n    }\r\n  } else {\r\n    startState.enterColumn(type)\r\n  }\r\n}\r\n\r\nfunction handleStartInput(type: TimeType) {\r\n  toggleCurrentState('start')\r\n  handleInputFocus(type)\r\n}\r\n\r\nfunction handleEndInput(type: TimeType) {\r\n  toggleCurrentState('end')\r\n  handleInputFocus(type)\r\n}\r\n\r\nfunction exchangeValue() {\r\n  ;(Object.keys(startState.timeValue) as TimeType[]).forEach(type => {\r\n    const temp = endState.timeValue[type]\r\n    endState.timeValue[type] = startState.timeValue[type]\r\n    startState.timeValue[type] = temp\r\n  })\r\n}\r\n\r\nfunction handleExchangeClick(event: MouseEvent) {\r\n  if (props.exchange) {\r\n    !currentVisible.value && event.stopPropagation()\r\n    exchangeValue()\r\n  }\r\n}\r\n\r\nfunction handleClickOutside() {\r\n  emitEvent(props.onClickOutside)\r\n\r\n  if (props.outsideClose && currentVisible.value) {\r\n    finishInput(!props.outsideCancel)\r\n    handleBlur()\r\n    emitEvent(props.onOutsideClose)\r\n  }\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    :id=\"idFor\"\r\n    ref=\"wrapper\"\r\n    :class=\"className\"\r\n    role=\"group\"\r\n    :aria-disabled=\"toAttrValue(props.disabled)\"\r\n    :aria-expanded=\"toAttrValue(currentVisible)\"\r\n    aria-haspopup=\"dialog\"\r\n    :aria-labelledby=\"labelId\"\r\n    @click=\"showPanel\"\r\n  >\r\n    <div\r\n      ref=\"reference\"\r\n      :class=\"selectorClass\"\r\n      tabindex=\"0\"\r\n      @keydown.space.prevent=\"showPanel\"\r\n      @keydown.backspace.prevent=\"handleClear(false)\"\r\n    >\r\n      <div\r\n        v-if=\"hasPrefix\"\r\n        :class=\"[nh.be('icon'), nh.be('prefix')]\"\r\n        :style=\"{ color: props.prefixColor }\"\r\n      >\r\n        <slot name=\"prefix\">\r\n          <Renderer :renderer=\"props.slots.prefix\">\r\n            <Icon :icon=\"props.prefix\"></Icon>\r\n          </Renderer>\r\n        </slot>\r\n      </div>\r\n      <div :class=\"nh.be('control')\">\r\n        <TimeControl\r\n          ref=\"startInput\"\r\n          :unit-type=\"currentState === 'start' ? startState.column! : ''\"\r\n          :enabled=\"startState.enabled\"\r\n          :activated=\"startState.activated\"\r\n          :time-value=\"startState.timeValue\"\r\n          :steps=\"props.steps\"\r\n          :ctrl-steps=\"props.ctrlSteps\"\r\n          :focused=\"focused\"\r\n          :visible=\"currentVisible\"\r\n          :separator=\"props.separator\"\r\n          :filler=\"props.filler\"\r\n          :labels=\"props.labels\"\r\n          :has-error=\"startError\"\r\n          :placeholder=\"startPlaceholder\"\r\n          :readonly=\"props.unitReadonly\"\r\n          :labeled-by=\"labelId\"\r\n          :locale=\"locale\"\r\n          @input=\"handleInput\"\r\n          @plus=\"handlePlus\"\r\n          @minus=\"handleMinus\"\r\n          @enter=\"handleEnter\"\r\n          @cancel=\"handleCancel\"\r\n          @unit-focus=\"handleStartInput\"\r\n          @prev-unit=\"enterColumn('prev')\"\r\n          @next-unit=\"enterColumn('next')\"\r\n          @blur=\"startState.column = null\"\r\n        ></TimeControl>\r\n        <template v-if=\"props.range\">\r\n          <div\r\n            :class=\"[nh.be('exchange'), props.exchange ? nh.bem('exchange', 'enabled') : '']\"\r\n            @click=\"handleExchangeClick\"\r\n          >\r\n            <slot name=\"exchange\">\r\n              <Renderer :renderer=\"props.slots.exchange\">\r\n                <Icon v-bind=\"icons.exchange\" style=\"padding-top: 1px\"></Icon>\r\n              </Renderer>\r\n            </slot>\r\n          </div>\r\n          <TimeControl\r\n            ref=\"endInput\"\r\n            :unit-type=\"currentState === 'end' ? endState.column! : ''\"\r\n            :enabled=\"endState.enabled\"\r\n            :activated=\"endState.activated\"\r\n            :time-value=\"endState.timeValue\"\r\n            :steps=\"props.steps\"\r\n            :ctrl-steps=\"props.ctrlSteps\"\r\n            :focused=\"focused\"\r\n            :visible=\"currentVisible\"\r\n            :separator=\"props.separator\"\r\n            :filler=\"props.filler\"\r\n            :labels=\"props.labels\"\r\n            :has-error=\"endError\"\r\n            :placeholder=\"endPlaceholder\"\r\n            :readonly=\"props.unitReadonly\"\r\n            :labeled-by=\"labelId\"\r\n            :locale=\"locale\"\r\n            @input=\"handleInput\"\r\n            @plus=\"handlePlus\"\r\n            @minus=\"handleMinus\"\r\n            @enter=\"handleEnter\"\r\n            @cancel=\"handleCancel\"\r\n            @unit-focus=\"handleEndInput\"\r\n            @prev-unit=\"enterColumn('prev')\"\r\n            @next-unit=\"enterColumn('next')\"\r\n            @blur=\"endState.column = null\"\r\n          ></TimeControl>\r\n        </template>\r\n      </div>\r\n      <div\r\n        v-if=\"!props.noSuffix\"\r\n        :class=\"[nh.be('icon'), nh.be('suffix')]\"\r\n        :style=\"{\r\n          color: props.suffixColor,\r\n          opacity: showClear || props.loading ? '0%' : ''\r\n        }\"\r\n      >\r\n        <slot name=\"suffix\">\r\n          <Renderer :renderer=\"props.slots.suffix\">\r\n            <Icon v-bind=\"icons.clock\" :icon=\"props.suffix || icons.clock.icon\"></Icon>\r\n          </Renderer>\r\n        </slot>\r\n      </div>\r\n      <div\r\n        v-else-if=\"props.clearable || props.loading\"\r\n        :class=\"[nh.be('icon'), nh.bem('icon', 'placeholder'), nh.be('suffix')]\"\r\n      ></div>\r\n      <Transition :name=\"nh.ns('fade')\" appear>\r\n        <button\r\n          v-if=\"showClear\"\r\n          :class=\"[nh.be('icon'), nh.be('clear')]\"\r\n          type=\"button\"\r\n          tabindex=\"-1\"\r\n          :aria-label=\"locale.ariaLabel.clear\"\r\n          @click.stop=\"handleClear()\"\r\n        >\r\n          <Icon v-bind=\"icons.clear\"></Icon>\r\n        </button>\r\n        <div v-else-if=\"props.loading\" :class=\"[nh.be('icon'), nh.be('loading')]\">\r\n          <Icon\r\n            v-bind=\"icons.loading\"\r\n            :effect=\"props.loadingEffect || icons.loading.effect\"\r\n            :icon=\"props.loadingIcon || icons.loading.icon\"\r\n          ></Icon>\r\n        </div>\r\n      </Transition>\r\n    </div>\r\n    <Popper\r\n      ref=\"popper\"\r\n      :class=\"[nh.be('popper'), nh.bs('vars')]\"\r\n      :visible=\"currentVisible\"\r\n      :to=\"transferTo\"\r\n      :transition=\"props.transitionName\"\r\n      :alive=\"props.popperAlive ?? !transferTo\"\r\n      @click.stop=\"handleFocused\"\r\n      @before-enter=\"staticWheel = true\"\r\n      @before-leave=\"staticWheel = true\"\r\n      @after-enter=\"staticWheel = false\"\r\n      @after-leave=\"staticWheel = false\"\r\n    >\r\n      <div\r\n        :class=\"{\r\n          [nh.be('panel')]: true,\r\n          [nh.bem('panel', 'vertical')]:\r\n            props.shortcuts.length &&\r\n            (props.shortcutsPlacement === 'top' || props.shortcutsPlacement === 'bottom')\r\n        }\"\r\n        :aria-labelledby=\"labelId\"\r\n      >\r\n        <div\r\n          v-if=\"props.shortcuts.length\"\r\n          :class=\"[\r\n            nh.be('list'),\r\n            nh.bem('list', 'sub'),\r\n            nh.be('shortcuts'),\r\n            nh.bem('shortcuts', props.shortcutsPlacement)\r\n          ]\"\r\n        >\r\n          <div\r\n            v-for=\"(item, index) in props.shortcuts\"\r\n            :key=\"index\"\r\n            :class=\"nh.be('shortcut')\"\r\n            :title=\"item.name\"\r\n            @click=\"handleShortcut(index)\"\r\n          >\r\n            {{ item.name }}\r\n          </div>\r\n        </div>\r\n        <div :class=\"nh.be('list')\">\r\n          <div :class=\"nh.be('wheels')\">\r\n            <TimeWheel\r\n              v-model:hour=\"startState.timeValue.hour\"\r\n              v-model:minute=\"startState.timeValue.minute\"\r\n              v-model:second=\"startState.timeValue.second\"\r\n              :no-arrow=\"props.noArrow\"\r\n              :candidate=\"props.candidate\"\r\n              :steps=\"props.steps\"\r\n              :pointer=\"props.pointer\"\r\n              :disabled-time=\"isTimeDisabled\"\r\n              :no-transition=\"staticWheel\"\r\n              @change=\"handleWheelChange\"\r\n              @toggle-col=\"toggleCurrentState('start')\"\r\n            ></TimeWheel>\r\n            <TimeWheel\r\n              v-if=\"props.range\"\r\n              v-model:hour=\"endState.timeValue.hour\"\r\n              v-model:minute=\"endState.timeValue.minute\"\r\n              v-model:second=\"endState.timeValue.second\"\r\n              :no-arrow=\"props.noArrow\"\r\n              :candidate=\"props.candidate\"\r\n              :steps=\"props.steps\"\r\n              :pointer=\"props.pointer\"\r\n              :disabled-time=\"isTimeDisabled\"\r\n              :no-transition=\"staticWheel\"\r\n              @change=\"handleWheelChange\"\r\n              @toggle-col=\"toggleCurrentState('end')\"\r\n            ></TimeWheel>\r\n          </div>\r\n          <div v-if=\"!props.noAction\" :class=\"nh.be('action')\">\r\n            <Button\r\n              inherit\r\n              text\r\n              size=\"small\"\r\n              @click.stop=\"handleCancel\"\r\n            >\r\n              {{ props.cancelText || locale.cancel }}\r\n            </Button>\r\n            <Button\r\n              inherit\r\n              type=\"primary\"\r\n              size=\"small\"\r\n              :disabled=\"startError || endError\"\r\n              @click.stop=\"handleEnter\"\r\n            >\r\n              {{ props.confirmText || locale.confirm }}\r\n            </Button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </Popper>\r\n  </div>\r\n</template>\r\n"],"names":["idFor","labelId","state","disabled","loading","size","validateField","clearField","getFieldValue","setFieldValue","useFieldStore","_a","reference","nh","useNameHelper","props","useProps","__props","createSizeProp","createStateProp","value","placementWhileList","USE_TOUCH","createIconProp","emit","__emit","slots","_useSlots","locale","useLocale","toRef","icons","useIcons","wordSpace","useWordSpace","placement","transfer","currentVisible","ref","focused","lastValue","startState","createTimeState","endState","currentState","staticWheel","timer","useSetTimeout","wrapper","useClickOutside","handleClickOutside","popper","transferTo","updatePopper","usePopper","computed","isHover","useHover","isTimeDisabled","useTimeBound","startInput","endInput","startPlaceholder","select","start","time","makeSentence","endPlaceholder","end","className","readonly","selectorClass","baseCls","hasPrefix","currentValue","values","doubleDigits","showClear","startError","hour","minute","second","endError","watch","parseValue","getStringValue","parseFormat","emitEvent","getCurrentState","setVisible","handleBlur","__expose","options","currentColumn","enabled","resetColumn","enterColumn","useColumn","timeValue","reactive","activated","defaultDate","i","match","TIME_REG","toggleActivated","date","valueType","type","verifyTime","visible","emitChange","handleFocused","_b","showPanel","event","target","unit","finishInput","shouldChange","handleClear","finish","nextTick","emitValue","handleWheelChange","handleInputFocus","handleInput","handleInputNumber","number","prev","verifyValue","boundRange","getStep","handlePlus","ctrlKey","getCtrlStep","handleMinus","fallbackFocus","handleEnter","handleCancel","handleShortcut","index","name","parsedValue","callIfFunc","toggleCurrentState","isStart","handleStartInput","handleEndInput","exchangeValue","temp","handleExchangeClick","_createElementBlock","_unref","toAttrValue","_createElementVNode","_normalizeStyle","_renderSlot","_ctx","_createVNode","Renderer","Icon","_normalizeClass","TimeControl","_cache","$event","_Fragment","_mergeProps","_Transition","_normalizeProps","_guardReactiveProps","Popper","_openBlock","item","_toDisplayString","_hoisted_5","TimeWheel","_createBlock","Button","_createTextVNode"],"mappings":"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"}