You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
30 KiB

1 month ago
  1. {"ast":null,"code":"import { defineComponent, inject, ref, computed, unref, onMounted, nextTick, watch, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock, withCtx, createTextVNode, toDisplayString, createCommentVNode, withDirectives, createVNode, createElementVNode } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport { ElScrollbar } from '../../../scrollbar/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ArrowUp, ArrowDown } from '@element-plus/icons-vue';\nimport { timeUnits } from '../constants.mjs';\nimport { buildTimeList } from '../utils.mjs';\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner.mjs';\nimport { getTimeLists } from '../composables/use-time-picker.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { vRepeatClick } from '../../../../directives/repeat-click/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { getStyle } from '../../../../utils/dom/style.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nconst _sfc_main = /* @__PURE__ */defineComponent({\n __name: \"basic-time-spinner\",\n props: basicTimeSpinnerProps,\n emits: [\"change\", \"select-range\", \"set-option\"],\n setup(__props, {\n emit\n }) {\n const props = __props;\n const pickerBase = inject(\"EP_PICKER_BASE\");\n const {\n isRange\n } = pickerBase.props;\n const ns = useNamespace(\"time\");\n const {\n getHoursList,\n getMinutesList,\n getSecondsList\n } = getTimeLists(props.disabledHours, props.disabledMinutes, props.disabledSeconds);\n let isScrolling = false;\n const currentScrollbar = ref();\n const listHoursRef = ref();\n const listMinutesRef = ref();\n const listSecondsRef = ref();\n const listRefsMap = {\n hours: listHoursRef,\n minutes: listMinutesRef,\n seconds: listSecondsRef\n };\n const spinnerItems = computed(() => {\n return props.showSeconds ? timeUnits : timeUnits.slice(0, 2);\n });\n const timePartials = computed(() => {\n const {\n spinnerDate\n } = props;\n const hours = spinnerDate.hour();\n const minutes = spinnerDate.minute();\n const seconds = spinnerDate.second();\n return {\n hours,\n minutes,\n seconds\n };\n });\n const timeList = computed(() => {\n const {\n hours,\n minutes\n } = unref(timePartials);\n const {\n role,\n spinnerDate\n } = props;\n const compare = !isRange ? spinnerDate : void 0;\n return {\n hours: getHoursList(role, compare),\n minutes: getMinutesList(hours, role, compare),\n seconds: getSecondsList(hours, minutes, role, compare)\n };\n });\n const arrowControlTimeList = computed(() => {\n const {\n hours,\n minutes,\n seconds\n } = unref(timePartials);\n return {\n hours: buildTimeList(hours, 23),\n minutes: buildTimeList(minutes, 59),\n seconds: buildTimeList(seconds, 59)\n };\n });\n const debouncedResetScroll = debounce(type => {\n isScrolling = false;\n adjustCurrentSpinner(type);\n }, 200);\n const getAmPmFlag = hour => {\n const shouldShowAmPm = !!props.amPmMode;\n if (!shouldShowAmPm) return \"\";\n const isCapital = props.amPmMode === \"A\";\n let content = hour < 12 ? \" am\" : \" pm\";\n if (isCapital) content = content.toUpperCase();\n return content;\n };\n const emitSelectRange = type => {\n let range;\n switch (type) {\n case \"hours\":\n range = [0, 2];\n break;\n case \"minutes\":\n range = [3, 5];\n break;\n case \"seconds\":\n range = [6, 8];\n break;\n }\n const [left, right] = range;\n emit(\"select-range\", left, right);\n currentScrollbar.value = type;\n };\n const adjustCurrentSpinner = type => {\n adju