{"version":3,"file":"dep-6a654623.mjs","sources":["../../../common/js/time-picker/utils.ts","../../../components/time-picker/panel/single-panel.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { EPickerCols, TIME_FORMAT } from './const';\n\ndayjs.extend(advancedFormat);\ndayjs.extend(customParseFormat);\n\n// 判断是否输入的值是合法的timepicker的值\nexport function validateInputValue(value: string, format: string) {\n  return dayjs(value, format).format(format) === value;\n}\n\n// 转换输入值为标准格式的timepicker的值\nexport function formatInputValue(value: string, format: string) {\n  return dayjs(value, format).format(format);\n}\n\n// 计算最接近的时间点\nexport function closestLookup(availableArr: Array<any>, calcVal: number, step: number) {\n  if (step <= 1) return calcVal;\n  return availableArr.sort((a, b) => Math.abs(calcVal + 1 - a) - Math.abs(calcVal + 1 - b))[0];\n}\n\nexport function getPickerCols(format: string) {\n  const renderCol: EPickerCols[] = [];\n  const { meridiem, hour, minute, second, milliSecond } = EPickerCols;\n  const match = format.match(TIME_FORMAT);\n  match.forEach((m) => {\n    switch (m) {\n      case 'H':\n      case 'HH':\n      case 'h':\n      case 'hh':\n        renderCol.push(hour);\n        break;\n      case 'a':\n      case 'A':\n        renderCol.push(meridiem);\n        break;\n      case 'm':\n      case 'mm':\n        renderCol.push(minute);\n        break;\n      case 's':\n      case 'ss':\n        renderCol.push(second);\n        break;\n      case 'SSS':\n        renderCol.push(milliSecond);\n        break;\n      default:\n        break;\n    }\n  });\n  return renderCol;\n}\n","import { computed, defineComponent, ref, watch, toRefs, onMounted, reactive, nextTick } from 'vue';\nimport { range, debounce, padStart } from 'lodash-es';\n\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { panelColProps } from './props';\nimport { EPickerCols, TWELVE_HOUR_FORMAT, AM, PM, MERIDIEM_LIST } from '@tdesign/common-js/time-picker/const';\nimport { closestLookup, getPickerCols } from '@tdesign/common-js/time-picker/utils';\nimport { useCommonClassName, useConfig, usePrefixClass } from '@tdesign/shared-hooks';\n\ndayjs.extend(customParseFormat);\n\nconst timeArr = [EPickerCols.hour, EPickerCols.minute, EPickerCols.second, EPickerCols.milliSecond];\n\nconst panelOffset = {\n  top: 15,\n  bottom: 21,\n};\n\nexport default defineComponent({\n  name: 'TTimePickerPanelCol',\n  props: {\n    ...panelColProps(),\n    position: String,\n    triggerScroll: Boolean,\n    onChange: Function,\n    resetTriggerScroll: Function,\n    isShowPanel: Boolean,\n  },\n  setup(props) {\n    const { globalConfig } = useConfig('timePicker');\n    const COMPONENT_NAME = usePrefixClass('time-picker__panel');\n    const { STATUS } = useCommonClassName();\n\n    const { steps, value, format, position, triggerScroll } = toRefs(props);\n\n    const cols = ref<Array<EPickerCols>>([]);\n    const bodyRef = ref();\n    const maskRef = ref(null);\n    // 每个滚动列的ref 顺序不定 所以只要有5列标识即可\n    const colsRef = reactive<Record<number, null | HTMLElement>>({\n      0: null,\n      1: null,\n      2: null,\n      3: null,\n      4: null,\n      5: null,\n    });\n\n    const dayjsValue = computed(() => {\n      const isStepsSet = !!steps.value.filter((step) => Number(step) > 1).length;\n\n      if (value.value) return dayjs(value.value, format.value);\n\n      if (isStepsSet) return dayjs().hour(0).minute(0).second(0);\n\n      return dayjs();\n    });\n\n    const emitChange = (formattedVal: string, e: MouseEvent) => {\n      if (formattedVal !== (props.internalValue ?? value.value)) props.onChange?.(formattedVal, e);\n    };\n\n    // 面板打开时 触发滚动 初始化面板\n    watch(\n      () => dayjsValue.value,\n      () => {\n        if (dayjsValue.value && value.value) updateTimeScrollPos(true);\n      },\n    );\n\n    // 时间通过外部触发时 同样触发滚动\n    watch(\n      () => triggerScroll.value,\n      () => {\n        if (triggerScroll.value) {\n          updateTimeScrollPos(true);\n        }\n      },\n    );\n\n    onMounted(() => {\n      cols.value = getPickerCols(format.value);\n    });\n\n    // 获取每个时间的高度\n    const getItemHeight = () => {\n      const maskDom = maskRef.value?.querySelector('div');\n      if (!maskDom) {\n        return {\n          offsetHeight: 0,\n          margin: 0,\n        };\n      }\n      return {\n        offsetHeight: parseFloat(getComputedStyle(maskDom).height),\n        margin: parseFloat(getComputedStyle(maskDom).marginTop),\n      };\n    };\n\n    const timeItemCanUsed = (col: EPickerCols, el: string | number) => {\n      const colIdx = timeArr.indexOf(col);\n      if (colIdx !== -1) {\n        const params: [number, number, number, number] = [\n          dayjsValue.value.hour(),\n          dayjsValue.value.minute(),\n          dayjsValue.value.second(),\n          dayjsValue.value.millisecond(),\n        ];\n        params[colIdx] = Number(el);\n        return !props.disableTime?.(...params, { partial: position.value || 'start' })?.[col]?.includes(Number(el));\n      }\n      return true;\n    };\n\n    // 获取需要渲染的column\n    const getColList = (col: EPickerCols) => {\n      let count = 0;\n\n      if (timeArr.includes(col)) {\n        // hour、minute and second columns\n        const colIdx = timeArr.indexOf(col);\n        const colStep = steps.value[colIdx] || 1;\n\n        if (col === EPickerCols.hour)\n          count = TWELVE_HOUR_FORMAT.test(format.value) ? 11 : 23; // 小时最大为23 12小时制最大为11\n        else if (col === EPickerCols.milliSecond) count = 999; // 毫秒最大为999\n        else count = 59;\n\n        const colList = range(0, count + 1, Number(colStep)).map((v) => padStart(String(v), 2, '0')) || [];\n        return props.hideDisabledTime && !!props.disableTime\n          ? colList.filter((t) => {\n              const params: [number, number, number, number] = [\n                dayjsValue.value.hour(),\n                dayjsValue.value.minute(),\n                dayjsValue.value.second(),\n                dayjsValue.value.millisecond(),\n              ];\n              params[colIdx] = Number(t);\n              return !props\n                .disableTime?.(...params, { partial: position.value || 'start' })\n                ?.[col]?.includes(Number(t));\n            })\n          : colList;\n      }\n      // meridiem column\n      return MERIDIEM_LIST;\n    };\n\n    const getScrollDistance = (col: EPickerCols, time: number | string) => {\n      if (col === EPickerCols.hour && /[h]{1}/.test(format.value))\n        // eslint-disable-next-line no-param-reassign\n        (time as number) %= 12; // 一定是数字，直接cast\n\n      const itemIdx = getColList(col).indexOf(padStart(String(time), 2, '0'));\n      const { offsetHeight, margin } = getItemHeight();\n      const timeItemTotalHeight = offsetHeight + margin;\n      const distance = Math.abs(Math.max(0, itemIdx) * timeItemTotalHeight);\n      return distance;\n    };\n\n    const handleScroll = (col: EPickerCols, idx: number, e: MouseEvent) => {\n      let val: number | string;\n      let formattedVal: string;\n      if (!props.isShowPanel) return;\n\n      const scrollTop = (colsRef[idx]?.scrollTop || 0) + panelOffset.top;\n      const { offsetHeight, margin } = getItemHeight();\n      const timeItemTotalHeight = offsetHeight + margin;\n      let colStep = Math.abs(Math.round(scrollTop / timeItemTotalHeight + 0.5));\n\n      const meridiem = MERIDIEM_LIST[Math.min(colStep - 1, 1)].toLowerCase(); // 处理PM、AM与am、pm\n\n      if (Number.isNaN(colStep)) colStep = 1;\n      if (timeArr.includes(col)) {\n        // hour、minute、 second and milliSecond\n        let max = 59;\n        if (col === EPickerCols.hour) max = /[h]{1}/.test(format.value) ? 11 : 23; // 小时最大为23 12小时制最大为11\n        else if (col === EPickerCols.milliSecond) max = 999; // 毫秒最大为999\n\n        const colIdx = timeArr.indexOf(col);\n        const availableArr = range(0, max + 1, Number(steps.value[colIdx]) || 1);\n        val = closestLookup(\n          availableArr,\n          Number(getColList(col)[Math.min(colStep - 1, max + 1, availableArr.length - 1)]),\n          Number(steps.value[colIdx]) || 1,\n        );\n        if (Number.isNaN(val)) val = availableArr[availableArr.length - 1];\n        if (col === EPickerCols.hour && cols.value.includes(EPickerCols.meridiem) && dayjsValue.value.hour() >= 12) {\n          // 如果是十二小时制需要再判断\n          val = Number(val) + 12;\n        }\n      }\n      // meridiem columns\n      else val = meridiem;\n\n      const distance = getScrollDistance(col, val);\n      if (!dayjs(dayjsValue.value).isValid() || (value.value && !dayjs(value.value, format.value, true).isValid()))\n        return;\n\n      if (timeArr.includes(col)) {\n        // @ts-ignore\n        // TODO: 这里不好改，要改的话需要分类型处理\n        if (timeItemCanUsed(col, val)) formattedVal = dayjsValue.value[col]?.(val).format(format.value);\n        else formattedVal = dayjsValue.value.format(format.value);\n      } else {\n        const currentHour = dayjsValue.value.hour();\n        if (meridiem === AM && currentHour >= 12) {\n          formattedVal = dayjsValue.value.hour(currentHour - 12).format(format.value);\n        } else if (meridiem === PM && currentHour < 12) {\n          formattedVal = dayjsValue.value.hour(currentHour + 12).format(format.value);\n        } else {\n          formattedVal = dayjsValue.value.format(format.value);\n        }\n      }\n      emitChange(formattedVal, e);\n\n      if (distance !== scrollTop) {\n        const scrollCtrl = colsRef[cols.value.indexOf(col)];\n\n        if (!scrollCtrl || scrollCtrl.scrollTop === distance) return;\n\n        scrollCtrl.scrollTo?.({\n          top: distance,\n          behavior: 'smooth',\n        });\n      }\n    };\n\n    const scrollToTime = (\n      col: EPickerCols,\n      time: number | string,\n      idx: number,\n      behavior: 'auto' | 'smooth' = 'auto',\n    ): boolean => {\n      const distance = getScrollDistance(col, time);\n      const scrollCtrl = colsRef[idx];\n      if (!scrollCtrl || scrollCtrl.scrollTop === distance || !timeItemCanUsed(col, time) || !scrollCtrl.scrollTo)\n        return false;\n\n      scrollCtrl.scrollTo({\n        top: distance,\n        behavior,\n      });\n      return true;\n    };\n\n    const handleTimeItemClick = (col: EPickerCols, el: string | number, idx: number, e: MouseEvent) => {\n      if (!timeItemCanUsed(col, el)) return;\n      if (timeArr.includes(col)) {\n        if (\n          col === EPickerCols.hour &&\n          dayjsValue.value.format('a') === PM &&\n          cols.value.includes(EPickerCols.meridiem)\n        ) {\n          // eslint-disable-next-line no-param-reassign\n          el = Number(el) + 12;\n        }\n        if (!timeItemCanUsed(col, el)) return;\n        const hasScrolled = scrollToTime(col, el, idx, 'smooth');\n        if (!hasScrolled) {\n          // @ts-ignore\n          emitChange(dayjsValue.value[col]?.(el).format(format.value), e);\n        }\n      } else {\n        const currentHour = dayjsValue.value.hour();\n        if (el === AM && currentHour >= 12) {\n          props.onChange?.(dayjsValue.value.hour(currentHour - 12).format(format.value), e);\n        } else if (el === PM && currentHour < 12) {\n          props.onChange?.(dayjsValue.value.hour(currentHour + 12).format(format.value), e);\n        }\n      }\n    };\n\n    // update each columns scroll distance\n    const updateTimeScrollPos = (isAutoScroll = false) => {\n      const behavior = value.value && !isAutoScroll ? 'smooth' : 'auto';\n      const isStepsSet = !!steps.value.filter((step) => Number(step) > 1).length;\n      nextTick(() => {\n        cols.value.forEach((col: EPickerCols, idx: number) => {\n          if (!isStepsSet || (isStepsSet && value.value)) {\n            // 如果没有设置大于1的steps或设置了大于1的step 正常处理滚动\n            scrollToTime(\n              col,\n              // @ts-ignore\n              // TODO: 这里不好改，要改的话需要分类型处理\n              timeArr.includes(col) ? dayjsValue.value[col]?.() : dayjsValue.value.format('a'),\n              idx,\n              behavior,\n            );\n          } else {\n            // 否则初始化到每列第一个选项\n            scrollToTime(col, getColList(col)?.[0], idx, behavior);\n          }\n        });\n      });\n\n      props.resetTriggerScroll();\n    };\n\n    const isCurrent = (col: EPickerCols, colItem: string | number) => {\n      let colVal: number;\n      if (col === EPickerCols.meridiem) {\n        const currentMeridiem = dayjsValue.value.format('a');\n        return currentMeridiem === colItem;\n      }\n      colVal = dayjsValue.value[col]?.();\n      if (col === EPickerCols.hour && /[h]{1}/.test(format.value)) {\n        colVal %= 12;\n      }\n      return colVal === Number(colItem);\n    };\n\n    return () => (\n      <div class={`${COMPONENT_NAME.value}-body`} ref={bodyRef}>\n        <div class={`${COMPONENT_NAME.value}-body-active-mask`} ref={maskRef}>\n          {/* 渲染遮罩层 */}\n          {cols.value.map?.((col, idx) => (\n            <div key={`${col}_${idx}`} />\n          ))}\n        </div>\n        {/* 渲染实际滚动列 */}\n        {cols.value.map?.((col, idx) => (\n          <ul\n            key={`${col}_${idx}`}\n            ref={(el) => (colsRef[idx] = el as HTMLElement)}\n            class={`${COMPONENT_NAME.value}-body-scroll`}\n            onScroll={debounce((e) => handleScroll(col, idx, e), 50)}\n          >\n            {getColList(col).map((el) => (\n              <li\n                key={el}\n                class={[\n                  `${COMPONENT_NAME.value}-body-scroll-item`,\n                  {\n                    [STATUS.value.disabled]: !timeItemCanUsed(col, el),\n                    [STATUS.value.current]: isCurrent(col, el),\n                  },\n                ]}\n                onClick={(e) => handleTimeItemClick(col, el, idx, e)}\n              >\n                {/* eslint-disable-next-line no-nested-ternary */}\n                {timeArr.includes(col)\n                  ? TWELVE_HOUR_FORMAT.test(format.value) && col === EPickerCols.hour && el === '00'\n                    ? '12'\n                    : el\n                  : globalConfig.value[el === AM ? 'anteMeridiem' : 'postMeridiem']}\n              </li>\n            ))}\n          </ul>\n        ))}\n      </div>\n    );\n  },\n});\n"],"names":["dayjs","extend","advancedFormat","customParseFormat","validateInputValue","value","format","formatInputValue","closestLookup","availableArr","calcVal","step","sort","a","b","Math","abs","getPickerCols","renderCol","meridiem","EPickerCols","hour","minute","second","milliSecond","match","TIME_FORMAT","forEach","m","push","timeArr","panelOffset","top","bottom","defineComponent","name","props","_objectSpread","panelColProps","position","String","triggerScroll","Boolean","onChange","Function","resetTriggerScroll","isShowPanel","setup","_useConfig","useConfig","globalConfig","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","_toRefs","toRefs","steps","cols","ref","bodyRef","maskRef","colsRef","reactive","dayjsValue","computed","isStepsSet","filter","Number","length","emitChange","formattedVal","e","_props$internalValue","_props$onChange","internalValue","call","watch","updateTimeScrollPos","onMounted","getItemHeight","_maskRef$value","maskDom","querySelector","offsetHeight","margin","parseFloat","getComputedStyle","height","marginTop","timeItemCanUsed","col","el","colIdx","indexOf","_props$disableTime","params","millisecond","disableTime","apply","concat","partial","includes","getColList","count","colStep","TWELVE_HOUR_FORMAT","test","colList","range","map","v","padStart","hideDisabledTime","t","_props$disableTime2","MERIDIEM_LIST","getScrollDistance","time","itemIdx","_getItemHeight","timeItemTotalHeight","distance","max","handleScroll","idx","_colsRef$idx","val","scrollTop","_getItemHeight2","round","min","toLowerCase","isNaN","isValid","_dayjsValue$value$col","_dayjsValue$value","currentHour","AM","PM","_scrollCtrl$scrollTo","scrollCtrl","scrollTo","behavior","scrollToTime","handleTimeItemClick","hasScrolled","_dayjsValue$value$col2","_dayjsValue$value2","_props$onChange2","_props$onChange3","isAutoScroll","arguments","undefined","nextTick","_dayjsValue$value$col3","_dayjsValue$value3","_getColList","isCurrent","colItem","_dayjsValue$value$col4","_dayjsValue$value4","colVal","currentMeridiem","_cols$value$map","_cols$value","_cols$value$map2","_cols$value2","_createVNode","debounce","_defineProperty","disabled","current","onClick"],"mappings":"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"}