{"version":3,"file":"time-select4.mjs","sources":["../../../../../../packages/components/time-select/src/time-select.vue"],"sourcesContent":["<template>\n  <el-select\n    ref=\"select\"\n    :model-value=\"value\"\n    :disabled=\"disabled\"\n    :clearable=\"clearable\"\n    :clear-icon=\"clearIcon\"\n    :size=\"size\"\n    :effect=\"effect\"\n    :placeholder=\"placeholder\"\n    default-first-option\n    :filterable=\"editable\"\n    @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n    @change=\"(event) => $emit('change', event)\"\n    @blur=\"(event) => $emit('blur', event)\"\n    @focus=\"(event) => $emit('focus', event)\"\n  >\n    <el-option\n      v-for=\"item in items\"\n      :key=\"item.value\"\n      :label=\"item.value\"\n      :value=\"item.value\"\n      :disabled=\"item.disabled\"\n    />\n    <template #prefix>\n      <el-icon v-if=\"prefixIcon\" :class=\"nsInput.e('prefix-icon')\">\n        <component :is=\"prefixIcon\" />\n      </el-icon>\n    </template>\n  </el-select>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { timeSelectProps } from './time-select'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n  name: 'ElTimeSelect',\n})\n\ndefineEmits(['change', 'blur', 'focus', 'update:modelValue'])\n\nconst props = defineProps(timeSelectProps)\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst value = computed(() => props.modelValue)\nconst start = computed(() => {\n  const time = parseTime(props.start)\n  return time ? formatTime(time) : null\n})\n\nconst end = computed(() => {\n  const time = parseTime(props.end)\n  return time ? formatTime(time) : null\n})\n\nconst step = computed(() => {\n  const time = parseTime(props.step)\n  return time ? formatTime(time) : null\n})\n\nconst minTime = computed(() => {\n  const time = parseTime(props.minTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst maxTime = computed(() => {\n  const time = parseTime(props.maxTime || '')\n  return time ? formatTime(time) : null\n})\n\nconst items = computed(() => {\n  const result: { value: string; disabled: boolean }[] = []\n  if (props.start && props.end && props.step) {\n    let current = start.value\n    let currentTime: string\n    while (current && end.value && compareTime(current, end.value) <= 0) {\n      currentTime = dayjs(current, 'HH:mm').format(props.format)\n      result.push({\n        value: currentTime,\n        disabled:\n          compareTime(current, minTime.value || '-1:-1') <= 0 ||\n          compareTime(current, maxTime.value || '100:100') >= 0,\n      })\n      current = nextTime(current, step.value!)\n    }\n  }\n  return result\n})\n\nconst blur = () => {\n  select.value?.blur?.()\n}\n\nconst focus = () => {\n  select.value?.focus?.()\n}\n\ndefineExpose({\n  blur,\n  focus,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA0CA,IAAA,KAAA,CAAA,OAAA,iBAAA,CAAA,CAAA;AAEA,IAAA,MAAA,EAAA,QAAA,QAAA,EAAA,GAAA,QAAA,CAAA;AAUA,IAAA,MAAA,OAAA,GAAA,aAAA,OAAA,CAAA,CAAA;AACA,IAAA,MAAA,SAAA,GAAA,EAAA,CAAA;AAEA,IAAA,MAAA,KAAA,GAAA,QAAA,CAAA,MAAA,KAAA,CAAA,UAAA,CAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;AACA,MAAA,OAAA,IAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,GAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;AACA,MAAA,OAAA,IAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,IAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA;AACA,MAAA,OAAA,IAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,CAAA,OAAA,IAAA,EAAA,CAAA,CAAA;AACA,MAAA,OAAA,IAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,CAAA,OAAA,IAAA,EAAA,CAAA,CAAA;AACA,MAAA,OAAA,IAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,KAAA,GAAA,SAAA,MAAA;AACA,MAAA,MAAA,SAAA,EAAA,CAAA;AACA,MAAA,IAAA,KAAA,CAAA,KAAA,IAAA,KAAA,CAAA,GAAA,IAAA,MAAA,IAAA,EAAA;AACA,QAAA,IAAA,UAAA,KAAA,CAAA,KAAA,CAAA;AACA,QAAA,IAAA,WAAA,CAAA;AACA,QAAA,OAAA,OAAA,IAAA,IAAA,KAAA,IAAA,WAAA,CAAA,SAAA,GAAA,CAAA,KAAA,KAAA,CAAA,EAAA;AACA,UAAA,WAAA,GAAA,MAAA,OAAA,EAAA,OAAA,CAAA,CAAA,MAAA,CAAA,MAAA,MAAA,CAAA,CAAA;AACA,UAAA,MAAA,CAAA,IAAA,CAAA;AAAA,YACA,KAAA,EAAA,WAAA;AAAA,YACA,QACA,EAAA,WAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,IAAA,OAAA,CAAA,IAAA,CAAA,IACA,WAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,IAAA,SAAA,CAAA,IAAA,CAAA;AAAA,WACA,CAAA,CAAA;AACA,UAAA,OAAA,GAAA,QAAA,CAAA,OAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,SACA;AAAA,OACA;AACA,MAAA,OAAA,MAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,MAAA;AACA,MAAA,IAAA,EAAA;AAAA,MACA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AACA,IAAA,MAAA,cAAA;AAAA,MACA,IAAA,EAAA,EAAA,EAAA,CAAA;AAEA,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AAAA,KACA,CAAA;AAAA,IACA,MAAA,CAAA;AAAA,MACA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}