{"version":3,"file":"time-picker.vue2.mjs","sources":["../../../components/date-picker/time-picker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Button } from '@/components/button'\nimport { Icon } from '@/components/icon'\nimport { Popper } from '@/components/popper'\nimport { useFieldStore } from '@/components/form'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, nextTick, reactive, ref, toRef, watch } from 'vue'\n\nimport TimeWheel from './time-wheel.vue'\nimport TimeControl from './time-control.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 { USE_TOUCH, boundRange, callIfFunc, doubleDigits, toAttrValue } from '@vexip-ui/utils'\nimport { timePickerProps } from './props'\nimport { useColumn, useTimeBound } from './helper'\nimport { TIME_REG } from './symbol'\n\nimport type { PopperExposed } from '@/components/popper'\nimport type { TimePickerChangeEvent, TimePickerSlots, TimeType } from './symbol'\n\ndefineOptions({ name: 'TimePicker' })\n\nconst {\n  idFor,\n  labelId,\n  state,\n  disabled,\n  loading,\n  size,\n  validateField,\n  clearField,\n  getFieldValue,\n  setFieldValue\n} = useFieldStore<string | string[]>(() => reference.value?.focus())\n\nconst nh = useNameHelper('time-picker')\n\nconst _props = defineProps(timePickerProps)\nconst props = useProps('timePicker', _props, {\n  size: createSizeProp(size),\n  state: createStateProp(state),\n  locale: null,\n  visible: false,\n  placement: {\n    default: 'bottom-start',\n    validator: value => placementWhileList.includes(value)\n  },\n  transfer: false,\n  format: 'HH:mm:ss',\n  separator: ':',\n  value: {\n    default: () => getFieldValue(),\n    static: true\n  },\n  filler: {\n    default: '-',\n    validator: value => value.length === 1\n  },\n  clearable: false,\n  noAction: false,\n  noArrow: false,\n  pointer: USE_TOUCH,\n  candidate: {\n    default: 3,\n    validator: value => [0, 1, 2, 3].includes(value)\n  },\n  steps: () => [1, 1, 1],\n  labels: () => ({}),\n  shortcuts: () => [],\n  range: null,\n  disabled: () => disabled.value,\n  transitionName: () => nh.ns('drop'),\n  confirmText: null,\n  cancelText: null,\n  ctrlSteps: () => [5, 5, 5],\n  prefix: createIconProp(),\n  prefixColor: '',\n  suffix: createIconProp(),\n  suffixColor: '',\n  noSuffix: false,\n  exchange: false,\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  popperAlive: null,\n  shortcutsPlacement: 'left',\n  slots: () => ({})\n})\n\nconst emit = defineEmits(['update:value', 'update:visible'])\n\nconst slots = defineSlots<TimePickerSlots>()\n\nconst locale = useLocale('timePicker', toRef(props, 'locale'))\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 lastValue = ref('')\nconst startState = createTimeState()\nconst endState = createTimeState()\nconst currentState = ref<'start' | 'end'>('start')\nconst staticWheel = ref(false)\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)\nconst { isTimeDisabled } = useTimeBound(toRef(props, 'min'), toRef(props, 'max'))\n\nconst startInput = ref<InstanceType<typeof TimeControl>>()\nconst endInput = ref<InstanceType<typeof TimeControl>>()\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, time } = locale.value.placeholder\n\n  return makeSentence(props.range ? `${start} ${time}` : `${select} ${time}`, 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, time } = locale.value.placeholder\n\n  return makeSentence(`${end} ${time}`, wordSpace.value)\n})\nconst className = computed(() => {\n  return [\n    nh.b(),\n    nh.ns('input-vars'),\n    nh.bs('vars'),\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(() => !!(slots.prefix || props.prefix || props.slots.prefix))\nconst currentValue = computed(() => {\n  const values = [startState, endState].map(state => {\n    return Object.values(state.timeValue).map(doubleDigits).join(':')\n  })\n\n  return props.range ? values : values[0]\n})\nconst showClear = computed(() => {\n  return !props.disabled && !readonly.value && props.clearable && isHover.value && !!lastValue.value\n})\nconst startError = computed(() => {\n  const { hour, minute, second } = startState.timeValue\n\n  return (\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.timeValue\n\n  return (\n    isTimeDisabled.hour(hour) ||\n    isTimeDisabled.minute(hour, minute) ||\n    isTimeDisabled.second(hour, minute, second)\n  )\n})\n\nwatch(\n  () => props.value,\n  value => {\n    parseValue(value)\n    lastValue.value = (Array.isArray(value) ? value[0] || value[1] : value) ? getStringValue() : ''\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  isHover,\n  currentVisible,\n  focused,\n  startState,\n  endState,\n  currentState,\n  currentValue,\n  startError,\n  endError,\n  wrapper,\n  reference,\n  popper,\n  start: startInput,\n  end: endInput,\n  updatePopper,\n  focus: (options?: FocusOptions) => reference.value?.focus(options),\n  blur: () => reference.value?.blur()\n})\n\nfunction createTimeState() {\n  const { currentColumn, enabled, resetColumn, enterColumn } = useColumn([\n    'hour',\n    'minute',\n    'second'\n  ] as TimeType[])\n\n  const timeValue = reactive({\n    hour: 0,\n    minute: 0,\n    second: 0\n  })\n  const activated = reactive({\n    hour: false,\n    minute: false,\n    second: false\n  })\n\n  return reactive({\n    column: currentColumn,\n    enabled,\n    activated,\n    timeValue,\n    resetColumn,\n    enterColumn\n  })\n}\n\nfunction getCurrentState() {\n  return currentState.value === 'start' ? startState : endState\n}\n\nfunction parseValue<T extends string | null>(value: T | T[]) {\n  if (!Array.isArray(value)) {\n    value = [value, value]\n  }\n\n  const defaultDate = new Date()\n\n  for (let i = 0; i < 2; ++i) {\n    const match = TIME_REG.exec(value[i] || '')\n    const state = i === 0 ? startState : endState\n    const { timeValue } = state\n\n    if (match) {\n      toggleActivated(true, i === 0 ? 'start' : 'end')\n\n      const hour = parseInt(match[1])\n      const minute = match[2] ? parseInt(match[2].slice(1)) : 0\n      const second = match[3] ? parseInt(match[3].slice(1)) : 0\n\n      const date = new Date(2000, 1, 1, hour, minute, second)\n\n      timeValue.hour = date.getHours()\n      timeValue.minute = date.getMinutes()\n      timeValue.second = date.getSeconds()\n    } else {\n      timeValue.hour = defaultDate.getHours()\n      timeValue.minute = defaultDate.getMinutes()\n      timeValue.second = defaultDate.getSeconds()\n\n      toggleActivated(false, i === 0 ? 'start' : 'end')\n    }\n\n    if (!props.range) break\n  }\n}\n\nfunction parseFormat() {\n  ;[startState, endState].forEach(state => {\n    state.enabled.hour = props.format.includes('H')\n    state.enabled.minute = props.format.includes('m')\n    state.enabled.second = props.format.includes('s')\n  })\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 TimeType[]).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 verifyTime() {\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  verifyTime()\n\n  if (lastValue.value !== getStringValue()) {\n    lastValue.value = getStringValue()\n\n    toggleActivated(true)\n    emit('update:value', currentValue.value)\n    setFieldValue(currentValue.value)\n    emitEvent(props.onChange as TimePickerChangeEvent, currentValue.value)\n    validateField()\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  handleFocused()\n\n  if (wrapper.value && target) {\n    const units = Array.from(wrapper.value.querySelectorAll(`.${nh.be('unit')}`))\n\n    if (!units.some(unit => unit === target || unit.contains(target))) {\n      startState.column = null\n      endState.column = null\n    }\n  }\n}\n\nfunction finishInput(shouldChange = true) {\n  setVisible(false)\n\n  shouldChange && emitChange()\n  startState.resetColumn()\n  endState.resetColumn()\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 string[]) : ''\n\n      parseValue(null)\n      finish && finishInput(false)\n      emit('update:value', emitValue)\n      emitEvent(props.onChange as TimePickerChangeEvent, 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 handleWheelChange(type: TimeType) {\n  if (currentVisible.value) {\n    getCurrentState().activated[type] = true\n  }\n}\n\nfunction handleInputFocus(type: TimeType) {\n  getCurrentState().column = type\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 (state.column !== 'second' && state.timeValue[type] >= 10) {\n    state.enterColumn('next', false)\n  }\n}\n\nfunction handleInputNumber(type: TimeType, number: number) {\n  const state = getCurrentState()\n  const prev = state.timeValue[type]\n\n  if (state.activated[type] && prev > 0 && prev < 10) {\n    state.timeValue[type] = prev * 10 + number\n  } else {\n    state.timeValue[type] = number\n  }\n\n  verifyValue(type)\n\n  state.activated[type] = true\n  emitEvent(props.onInput, type, state.timeValue[type])\n}\n\nfunction verifyValue(type: TimeType) {\n  const timeValue = getCurrentState().timeValue\n\n  timeValue[type] = boundRange(timeValue[type], 0, type === 'hour' ? 23 : 59)\n  timeValue[type] = Math.round(timeValue[type] / getStep(type)) * getStep(type)\n}\n\nfunction handlePlus(ctrlKey: boolean) {\n  const state = getCurrentState()\n  const type = state.column\n\n  if (!type) return\n\n  if (state.enabled[type]) {\n    state.timeValue[type] += ctrlKey ? getCtrlStep(type) : getStep(type)\n\n    verifyValue(type)\n    emitEvent(props.onPlus, type, state.timeValue[type])\n  }\n}\n\nfunction handleMinus(ctrlKey: boolean) {\n  const state = getCurrentState()\n  const type = state.column\n\n  if (!type) return\n\n  if (state.enabled[type]) {\n    state.timeValue[type] -= ctrlKey ? getCtrlStep(type) : getStep(type)\n\n    verifyValue(type)\n    emitEvent(props.onMinus, type, state.timeValue[type])\n  }\n}\n\nfunction getStep(type: TimeType) {\n  return props.steps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\n}\n\nfunction getCtrlStep(type: TimeType) {\n  return props.ctrlSteps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\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(props.value)\n  finishInput(false)\n  emitEvent(props.onCancel)\n}\n\nfunction handleShortcut(index: number) {\n  const { value, name } = props.shortcuts[index]\n  const parsedValue = callIfFunc(value)\n\n  fallbackFocus()\n  parseValue(parsedValue)\n  emitEvent(props.onShortcut as (name: string, value: string | string[]) => void, name, parsedValue)\n  finishInput()\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' : 'hour', type === 'prev')\n      toggleCurrentState(isStart ? 'end' : 'start')\n    }\n  } else {\n    startState.enterColumn(type)\n  }\n}\n\nfunction handleStartInput(type: TimeType) {\n  toggleCurrentState('start')\n  handleInputFocus(type)\n}\n\nfunction handleEndInput(type: TimeType) {\n  toggleCurrentState('end')\n  handleInputFocus(type)\n}\n\nfunction exchangeValue() {\n  ;(Object.keys(startState.timeValue) as TimeType[]).forEach(type => {\n    const temp = endState.timeValue[type]\n    endState.timeValue[type] = startState.timeValue[type]\n    startState.timeValue[type] = temp\n  })\n}\n\nfunction handleExchangeClick(event: MouseEvent) {\n  if (props.exchange) {\n    !currentVisible.value && event.stopPropagation()\n    exchangeValue()\n  }\n}\n\nfunction handleClickOutside() {\n  emitEvent(props.onClickOutside)\n\n  if (props.outsideClose && currentVisible.value) {\n    finishInput(!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        <TimeControl\n          ref=\"startInput\"\n          :unit-type=\"currentState === 'start' ? startState.column! : ''\"\n          :enabled=\"startState.enabled\"\n          :activated=\"startState.activated\"\n          :time-value=\"startState.timeValue\"\n          :steps=\"props.steps\"\n          :ctrl-steps=\"props.ctrlSteps\"\n          :focused=\"focused\"\n          :visible=\"currentVisible\"\n          :separator=\"props.separator\"\n          :filler=\"props.filler\"\n          :labels=\"props.labels\"\n          :has-error=\"startError\"\n          :placeholder=\"startPlaceholder\"\n          :readonly=\"props.unitReadonly\"\n          :labeled-by=\"labelId\"\n          :locale=\"locale\"\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        ></TimeControl>\n        <template v-if=\"props.range\">\n          <div\n            :class=\"[nh.be('exchange'), props.exchange ? nh.bem('exchange', 'enabled') : '']\"\n            @click=\"handleExchangeClick\"\n          >\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          <TimeControl\n            ref=\"endInput\"\n            :unit-type=\"currentState === 'end' ? endState.column! : ''\"\n            :enabled=\"endState.enabled\"\n            :activated=\"endState.activated\"\n            :time-value=\"endState.timeValue\"\n            :steps=\"props.steps\"\n            :ctrl-steps=\"props.ctrlSteps\"\n            :focused=\"focused\"\n            :visible=\"currentVisible\"\n            :separator=\"props.separator\"\n            :filler=\"props.filler\"\n            :labels=\"props.labels\"\n            :has-error=\"endError\"\n            :placeholder=\"endPlaceholder\"\n            :readonly=\"props.unitReadonly\"\n            :labeled-by=\"labelId\"\n            :locale=\"locale\"\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          ></TimeControl>\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.clock\" :icon=\"props.suffix || icons.clock.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=\"locale.ariaLabel.clear\"\n          @click.stop=\"handleClear()\"\n        >\n          <Icon v-bind=\"icons.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          ></Icon>\n        </div>\n      </Transition>\n    </div>\n    <Popper\n      ref=\"popper\"\n      :class=\"[nh.be('popper'), 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      <div\n        :class=\"{\n          [nh.be('panel')]: true,\n          [nh.bem('panel', 'vertical')]:\n            props.shortcuts.length &&\n            (props.shortcutsPlacement === 'top' || props.shortcutsPlacement === 'bottom')\n        }\"\n        :aria-labelledby=\"labelId\"\n      >\n        <div\n          v-if=\"props.shortcuts.length\"\n          :class=\"[\n            nh.be('list'),\n            nh.bem('list', 'sub'),\n            nh.be('shortcuts'),\n            nh.bem('shortcuts', props.shortcutsPlacement)\n          ]\"\n        >\n          <div\n            v-for=\"(item, index) in props.shortcuts\"\n            :key=\"index\"\n            :class=\"nh.be('shortcut')\"\n            :title=\"item.name\"\n            @click=\"handleShortcut(index)\"\n          >\n            {{ item.name }}\n          </div>\n        </div>\n        <div :class=\"nh.be('list')\">\n          <div :class=\"nh.be('wheels')\">\n            <TimeWheel\n              v-model:hour=\"startState.timeValue.hour\"\n              v-model:minute=\"startState.timeValue.minute\"\n              v-model:second=\"startState.timeValue.second\"\n              :no-arrow=\"props.noArrow\"\n              :candidate=\"props.candidate\"\n              :steps=\"props.steps\"\n              :pointer=\"props.pointer\"\n              :disabled-time=\"isTimeDisabled\"\n              :no-transition=\"staticWheel\"\n              @change=\"handleWheelChange\"\n              @toggle-col=\"toggleCurrentState('start')\"\n            ></TimeWheel>\n            <TimeWheel\n              v-if=\"props.range\"\n              v-model:hour=\"endState.timeValue.hour\"\n              v-model:minute=\"endState.timeValue.minute\"\n              v-model:second=\"endState.timeValue.second\"\n              :no-arrow=\"props.noArrow\"\n              :candidate=\"props.candidate\"\n              :steps=\"props.steps\"\n              :pointer=\"props.pointer\"\n              :disabled-time=\"isTimeDisabled\"\n              :no-transition=\"staticWheel\"\n              @change=\"handleWheelChange\"\n              @toggle-col=\"toggleCurrentState('end')\"\n            ></TimeWheel>\n          </div>\n          <div v-if=\"!props.noAction\" :class=\"nh.be('action')\">\n            <Button\n              inherit\n              text\n              size=\"small\"\n              @click.stop=\"handleCancel\"\n            >\n              {{ props.cancelText || locale.cancel }}\n            </Button>\n            <Button\n              inherit\n              type=\"primary\"\n              size=\"small\"\n              :disabled=\"startError || endError\"\n              @click.stop=\"handleEnter\"\n            >\n              {{ props.confirmText || locale.confirm }}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </Popper>\n  </div>\n</template>\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"],"mappings":"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"}