{"version":3,"file":"panel-time-range.mjs","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue"],"sourcesContent":["<template>\n  <div\n    v-if=\"actualVisible\"\n    :class=\"[nsTime.b('range-picker'), nsPicker.b('panel')]\"\n  >\n    <div :class=\"nsTime.be('range-picker', 'content')\">\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.startTime') }}\n        </div>\n        <div\n          :class=\"[\n            nsTime.be('range-picker', 'body'),\n            nsTime.be('panel', 'content'),\n            nsTime.is('arrow', arrowControl),\n            { 'has-seconds': showSeconds },\n          ]\"\n        >\n          <time-spinner\n            ref=\"minSpinner\"\n            role=\"start\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"minDate\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMinChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMinSelectionRange\"\n          />\n        </div>\n      </div>\n      <div :class=\"nsTime.be('range-picker', 'cell')\">\n        <div :class=\"nsTime.be('range-picker', 'header')\">\n          {{ t('el.datepicker.endTime') }}\n        </div>\n        <div\n          :class=\"[\n            nsTime.be('range-picker', 'body'),\n            nsTime.be('panel', 'content'),\n            nsTime.is('arrow', arrowControl),\n            { 'has-seconds': showSeconds },\n          ]\"\n        >\n          <time-spinner\n            ref=\"maxSpinner\"\n            role=\"end\"\n            :show-seconds=\"showSeconds\"\n            :am-pm-mode=\"amPmMode\"\n            :arrow-control=\"arrowControl\"\n            :spinner-date=\"maxDate\"\n            :disabled-hours=\"disabledHours_\"\n            :disabled-minutes=\"disabledMinutes_\"\n            :disabled-seconds=\"disabledSeconds_\"\n            @change=\"handleMaxChange\"\n            @set-option=\"onSetOption\"\n            @select-range=\"setMaxSelectionRange\"\n          />\n        </div>\n      </div>\n    </div>\n    <div :class=\"nsTime.be('panel', 'footer')\">\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'cancel']\"\n        @click=\"handleCancel()\"\n      >\n        {{ t('el.datepicker.cancel') }}\n      </button>\n      <button\n        type=\"button\"\n        :class=\"[nsTime.be('panel', 'btn'), 'confirm']\"\n        :disabled=\"btnConfirmDisabled\"\n        @click=\"handleConfirm()\"\n      >\n        {{ t('el.datepicker.confirm') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { union } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport TimeSpinner from './basic-time-spinner.vue'\nimport { getAvailableArrs, useOldValue } from './useTimePicker'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nconst makeSelectRange = (start: number, end: number) => {\n  const result = []\n  for (let i = start; i <= end; i++) {\n    result.push(i)\n  }\n  return result\n}\nexport default defineComponent({\n  components: { TimeSpinner },\n\n  props: {\n    visible: Boolean,\n    actualVisible: Boolean,\n    parsedValue: {\n      type: [Array] as PropType<Array<Dayjs>>,\n    },\n    format: {\n      type: String,\n      default: '',\n    },\n  },\n\n  emits: ['pick', 'select-range', 'set-picker-option'],\n\n  setup(props, ctx) {\n    const { t, lang } = useLocale()\n    const nsTime = useNamespace('time')\n    const nsPicker = useNamespace('picker')\n    const minDate = computed(() => props.parsedValue[0])\n    const maxDate = computed(() => props.parsedValue[1])\n    const oldValue = useOldValue(props)\n    const handleCancel = () => {\n      ctx.emit('pick', oldValue.value, false)\n    }\n    const showSeconds = computed(() => {\n      return props.format.includes('ss')\n    })\n    const amPmMode = computed(() => {\n      if (props.format.includes('A')) return 'A'\n      if (props.format.includes('a')) return 'a'\n      return ''\n    })\n\n    const minSelectableRange = ref([])\n    const maxSelectableRange = ref([])\n\n    const handleConfirm = (visible = false) => {\n      ctx.emit('pick', [minDate.value, maxDate.value], visible)\n    }\n\n    const handleMinChange = (date) => {\n      handleChange(date.millisecond(0), maxDate.value)\n    }\n    const handleMaxChange = (date) => {\n      handleChange(minDate.value, date.millisecond(0))\n    }\n\n    const isValidValue = (_date: Dayjs[]) => {\n      const parsedDate = _date.map((_) => dayjs(_).locale(lang.value))\n      const result = getRangeAvailableTime(parsedDate)\n      return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])\n    }\n\n    const handleChange = (_minDate, _maxDate) => {\n      // todo getRangeAvailableTime(_date).millisecond(0)\n      ctx.emit('pick', [_minDate, _maxDate], true)\n    }\n    const btnConfirmDisabled = computed(() => {\n      return minDate.value > maxDate.value\n    })\n\n    const selectionRange = ref([0, 2])\n    const setMinSelectionRange = (start, end) => {\n      ctx.emit('select-range', start, end, 'min')\n      selectionRange.value = [start, end]\n    }\n\n    const offset = computed(() => (showSeconds.value ? 11 : 8))\n    const setMaxSelectionRange = (start, end) => {\n      ctx.emit('select-range', start, end, 'max')\n      selectionRange.value = [start + offset.value, end + offset.value]\n    }\n\n    const changeSelectionRange = (step) => {\n      const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]\n      const mapping = ['hours', 'minutes'].concat(\n        showSeconds.value ? ['seconds'] : []\n      )\n      const index = list.indexOf(selectionRange.value[0])\n      const next = (index + step + list.length) % list.length\n      const half = list.length / 2\n      if (next < half) {\n        timePickerOptions['start_emitSelectRange'](mapping[next])\n      } else {\n        timePickerOptions['end_emitSelectRange'](mapping[next - half])\n      }\n    }\n\n    const handleKeydown = (event: KeyboardEvent) => {\n      const code = event.code\n\n      if (code === EVENT_CODE.left || code === EVENT_CODE.right) {\n        const step = code === EVENT_CODE.left ? -1 : 1\n        changeSelectionRange(step)\n        event.preventDefault()\n        return\n      }\n\n      if (code === EVENT_CODE.up || code === EVENT_CODE.down) {\n        const step = code === EVENT_CODE.up ? -1 : 1\n        const role = selectionRange.value[0] < offset.value ? 'start' : 'end'\n        timePickerOptions[`${role}_scrollDown`](step)\n        event.preventDefault()\n        return\n      }\n    }\n\n    const disabledHours_ = (role, compare) => {\n      const defaultDisable = disabledHours ? disabledHours(role) : []\n      const isStart = role === 'start'\n      const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n      const compareHour = compareDate.hour()\n      const nextDisable = isStart\n        ? makeSelectRange(compareHour + 1, 23)\n        : makeSelectRange(0, compareHour - 1)\n      return union(defaultDisable, nextDisable)\n    }\n    const disabledMinutes_ = (hour, role, compare) => {\n      const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []\n      const isStart = role === 'start'\n      const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n      const compareHour = compareDate.hour()\n      if (hour !== compareHour) {\n        return defaultDisable\n      }\n      const compareMinute = compareDate.minute()\n      const nextDisable = isStart\n        ? makeSelectRange(compareMinute + 1, 59)\n        : makeSelectRange(0, compareMinute - 1)\n      return union(defaultDisable, nextDisable)\n    }\n    const disabledSeconds_ = (hour, minute, role, compare) => {\n      const defaultDisable = disabledSeconds\n        ? disabledSeconds(hour, minute, role)\n        : []\n      const isStart = role === 'start'\n      const compareDate = compare || (isStart ? maxDate.value : minDate.value)\n      const compareHour = compareDate.hour()\n      const compareMinute = compareDate.minute()\n      if (hour !== compareHour || minute !== compareMinute) {\n        return defaultDisable\n      }\n      const compareSecond = compareDate.second()\n      const nextDisable = isStart\n        ? makeSelectRange(compareSecond + 1, 59)\n        : makeSelectRange(0, compareSecond - 1)\n      return union(defaultDisable, nextDisable)\n    }\n\n    const getRangeAvailableTime = (dates: Array<Dayjs>) => {\n      return dates.map((_, index) =>\n        getRangeAvailableTimeEach(\n          dates[0],\n          dates[1],\n          index === 0 ? 'start' : 'end'\n        )\n      )\n    }\n\n    const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n      getAvailableArrs(disabledHours_, disabledMinutes_, disabledSeconds_)\n\n    const getRangeAvailableTimeEach = (\n      startDate: Dayjs,\n      endDate: Dayjs,\n      role\n    ) => {\n      const availableMap = {\n        hour: getAvailableHours,\n        minute: getAvailableMinutes,\n        second: getAvailableSeconds,\n      }\n      const isStart = role === 'start'\n      let result = isStart ? startDate : endDate\n      const compareDate = isStart ? endDate : startDate\n      ;['hour', 'minute', 'second'].forEach((_) => {\n        if (availableMap[_]) {\n          let availableArr\n          const method = availableMap[_]\n          if (_ === 'minute') {\n            availableArr = method(result.hour(), role, compareDate)\n          } else if (_ === 'second') {\n            availableArr = method(\n              result.hour(),\n              result.minute(),\n              role,\n              compareDate\n            )\n          } else {\n            availableArr = method(role, compareDate)\n          }\n          if (\n            availableArr &&\n            availableArr.length &&\n            !availableArr.includes(result[_]())\n          ) {\n            const pos = isStart ? 0 : availableArr.length - 1\n            result = result[_](availableArr[pos])\n          }\n        }\n      })\n      return result\n    }\n\n    const parseUserInput = (value: Dayjs[] | Dayjs) => {\n      if (!value) return null\n      if (Array.isArray(value)) {\n        return value.map((_) => dayjs(_, props.format).locale(lang.value))\n      }\n      return dayjs(value, props.format).locale(lang.value)\n    }\n\n    const formatToString = (value: Dayjs[] | Dayjs) => {\n      if (!value) return null\n      if (Array.isArray(value)) {\n        return value.map((_) => _.format(props.format))\n      }\n      return value.format(props.format)\n    }\n\n    const getDefaultValue = () => {\n      if (Array.isArray(defaultValue)) {\n        return defaultValue.map((_) => dayjs(_).locale(lang.value))\n      }\n      const defaultDay = dayjs(defaultValue).locale(lang.value)\n      return [defaultDay, defaultDay.add(60, 'm')]\n    }\n\n    ctx.emit('set-picker-option', ['formatToString', formatToString])\n    ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n    ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n    ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])\n    ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])\n    ctx.emit('set-picker-option', [\n      'getRangeAvailableTime',\n      getRangeAvailableTime,\n    ])\n\n    const timePickerOptions = {} as any\n    const onSetOption = (e) => {\n      timePickerOptions[e[0]] = e[1]\n    }\n\n    const pickerBase = inject('EP_PICKER_BASE') as any\n    const {\n      arrowControl,\n      disabledHours,\n      disabledMinutes,\n      disabledSeconds,\n      defaultValue,\n    } = pickerBase.props\n\n    return {\n      nsTime,\n      nsPicker,\n      arrowControl,\n      onSetOption,\n      setMaxSelectionRange,\n      setMinSelectionRange,\n      btnConfirmDisabled,\n      handleCancel,\n      handleConfirm,\n      t,\n      showSeconds,\n      minDate,\n      maxDate,\n      amPmMode,\n      handleMinChange,\n      handleMaxChange,\n      minSelectableRange,\n      maxSelectableRange,\n      disabledHours_,\n      disabledMinutes_,\n      disabledSeconds_,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createVNode"],"mappings":"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"}