{"version":3,"file":"TimeBody.mjs","sources":["../../../../../../../../packages/vue-components/vc-picker/src/panels/TimePanel/TimeBody.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { Ref, VNode } from 'vue';\nimport type { SharedTimeProps } from '.';\nimport type { GenerateConfig } from '../../generate';\nimport type { Locale, OnSelect } from '../../interface';\nimport type { Unit } from './TimeUnitColumn';\nimport { cloneElement } from '@antdv/utils';\nimport { computed, defineComponent, onBeforeUpdate, ref, watchEffect } from 'vue';\nimport { leftPad } from '../../utils/miscUtil';\nimport { setTime as utilSetTime } from '../../utils/timeUtil';\nimport TimeUnitColumn from './TimeUnitColumn';\n\nfunction generateUnits(\n  start: number,\n  end: number,\n  step: number,\n  disabledUnits: number[] | undefined,\n) {\n  const units: Unit[] = [];\n  for (let i = start; i <= end; i += step) {\n    units.push({\n      label: leftPad(i, 2),\n      value: i,\n      disabled: (disabledUnits || []).includes(i),\n    });\n  }\n  return units;\n}\n\nexport interface BodyOperationRef {\n  onUpDown: (diff: number) => void;\n}\n\nexport type TimeBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  onSelect: OnSelect<DateType>;\n  activeColumnIndex: number;\n  operationRef: Ref<BodyOperationRef | undefined>;\n} & SharedTimeProps<DateType>;\n\nconst TimeBody = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TimeBody',\n  inheritAttrs: false,\n  props: [\n    'generateConfig',\n    'prefixCls',\n    'operationRef',\n    'activeColumnIndex',\n    'value',\n    'showHour',\n    'showMinute',\n    'showSecond',\n    'use12Hours',\n    'hourStep',\n    'minuteStep',\n    'secondStep',\n    'disabledHours',\n    'disabledMinutes',\n    'disabledSeconds',\n    'disabledTime',\n    'hideDisabledOptions',\n    'onSelect',\n  ],\n  setup(props) {\n    const originHour = computed(() =>\n      props.value ? props.generateConfig.getHour(props.value) : -1,\n    );\n    const isPM = computed(() => {\n      if (props.use12Hours)\n        return originHour.value >= 12; // -1 means should display AM\n      else\n        return false;\n    });\n    const hour = computed(() => {\n      // Should additional logic to handle 12 hours\n      if (props.use12Hours)\n        return originHour.value % 12;\n      else\n        return originHour.value;\n    });\n    const minute = computed(() => (props.value ? props.generateConfig.getMinute(props.value) : -1));\n    const second = computed(() => (props.value ? props.generateConfig.getSecond(props.value) : -1));\n\n    const now = ref(props.generateConfig.getNow());\n    const mergedDisabledHours = ref();\n    const mergedDisabledMinutes = ref();\n    const mergedDisabledSeconds = ref();\n    onBeforeUpdate(() => {\n      now.value = props.generateConfig.getNow();\n    });\n    watchEffect(() => {\n      if (props.disabledTime) {\n        const disabledConfig = props.disabledTime(now);\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          disabledConfig.disabledHours,\n          disabledConfig.disabledMinutes,\n          disabledConfig.disabledSeconds,\n        ];\n      } else {\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          props.disabledHours,\n          props.disabledMinutes,\n          props.disabledSeconds,\n        ];\n      }\n    });\n    const setTime = (\n      isNewPM: boolean | undefined,\n      newHour: number,\n      newMinute: number,\n      newSecond: number,\n    ) => {\n      let newDate = props.value || props.generateConfig.getNow();\n\n      const mergedHour = newHour < 0 ? minutes.value.find(h => !h.disabled).value : newHour;\n      const mergedMinute = newMinute < 0 ? minutes.value.find(m => !m.disabled).value : newMinute;\n      const mergedSecond = newSecond < 0 ? seconds.value.find(s => !s.disabled).value : newSecond;\n\n      newDate = utilSetTime(\n        props.generateConfig,\n        newDate,\n        !props.use12Hours || !isNewPM ? mergedHour : mergedHour + 12,\n        mergedMinute,\n        mergedSecond,\n      );\n\n      return newDate;\n    };\n\n    // ========================= Unit =========================\n    const rawHours = computed(() =>\n      generateUnits(\n        0,\n        23,\n        props.hourStep ?? 1,\n        mergedDisabledHours.value && mergedDisabledHours.value(),\n      ),\n    );\n\n    // const memorizedRawHours = useMemo(() => rawHours, rawHours, shouldUnitsUpdate);\n\n    const getAMPMDisabled = computed(() => {\n      if (!props.use12Hours)\n        return [false, false];\n\n      const AMPMDisabled = [true, true];\n      rawHours.value.forEach(({ disabled, value: hourValue }) => {\n        if (disabled) return;\n        if (hourValue >= 12)\n          AMPMDisabled[1] = false;\n        else\n          AMPMDisabled[0] = false;\n      });\n      return AMPMDisabled;\n    });\n\n    const hours = computed(() => {\n      if (!props.use12Hours) return rawHours.value;\n      return rawHours.value\n        .filter(isPM.value ? hourMeta => hourMeta.value >= 12 : hourMeta => hourMeta.value < 12)\n        .map((hourMeta) => {\n          const hourValue = hourMeta.value % 12;\n          const hourLabel = hourValue === 0 ? '12' : leftPad(hourValue, 2);\n          return {\n            ...hourMeta,\n            label: hourLabel,\n            value: hourValue,\n          };\n        });\n    });\n\n    const minutes = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.minuteStep ?? 1,\n        mergedDisabledMinutes.value\n          && mergedDisabledMinutes.value(\n            originHour.value < 0\n              ? rawHours.value.find(rawHour => !rawHour.disabled).value\n              : originHour.value,\n          ),\n      ),\n    );\n\n    const seconds = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.secondStep ?? 1,\n        mergedDisabledSeconds.value\n          && mergedDisabledSeconds.value(\n            originHour.value < 0\n              ? rawHours.value.find(rawHour => !rawHour.disabled).value\n              : originHour.value,\n            minute.value < 0\n              ? minutes.value.find(rawMinute => !rawMinute.disabled).value\n              : minute.value,\n          ),\n      ),\n    );\n\n    return () => {\n      const {\n        prefixCls,\n        operationRef,\n        activeColumnIndex,\n        showHour,\n        showMinute,\n        showSecond,\n        use12Hours,\n        hideDisabledOptions,\n        onSelect,\n      } = props;\n      const columns: Array<{\n        node: VueNode;\n        value: number;\n        units: Unit[];\n        onSelect: (diff: number) => void;\n      }> = [];\n      const contentPrefixCls = `${prefixCls}-content`;\n      const columnPrefixCls = `${prefixCls}-time-panel`;\n\n      // ====================== Operations ======================\n      operationRef.value = {\n        onUpDown: (diff: number) => {\n          const column = columns[activeColumnIndex];\n          if (column) {\n            const valueIndex = column.units.findIndex(unit => unit.value === column.value);\n\n            const unitLen = column.units.length;\n            for (let i = 1; i < unitLen; i += 1) {\n              const nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];\n\n              if (nextUnit.disabled !== true) {\n                column.onSelect(nextUnit.value);\n                break;\n              }\n            }\n          }\n        },\n      };\n\n      // ======================== Render ========================\n      function addColumnNode(\n        condition: boolean | undefined,\n        node: VueNode,\n        columnValue: number,\n        units: Unit[],\n        onColumnSelect: (diff: number) => void,\n      ) {\n        if (condition !== false) {\n          columns.push({\n            node: cloneElement(node as unknown as VNode, {\n              prefixCls: columnPrefixCls,\n              value: columnValue,\n              active: activeColumnIndex === columns.length,\n              onSelect: onColumnSelect,\n              units,\n              hideDisabledOptions,\n            }),\n            onSelect: onColumnSelect,\n            value: columnValue,\n            units,\n          });\n        }\n      }\n\n      // Hour\n      addColumnNode(showHour, <TimeUnitColumn key=\"hour\" />, hour.value, hours.value, (num) => {\n        onSelect(setTime(isPM.value, num, minute.value, second.value), 'mouse');\n      });\n\n      // Minute\n      addColumnNode(\n        showMinute,\n        <TimeUnitColumn key=\"minute\" />,\n        minute.value,\n        minutes.value,\n        (num) => {\n          onSelect(setTime(isPM.value, hour.value, num, second.value), 'mouse');\n        },\n      );\n\n      // Second\n      addColumnNode(\n        showSecond,\n        <TimeUnitColumn key=\"second\" />,\n        second.value,\n        seconds.value,\n        (num) => {\n          onSelect(setTime(isPM.value, hour.value, minute.value, num), 'mouse');\n        },\n      );\n\n      // 12 Hours\n      let PMIndex = -1;\n      if (typeof isPM.value === 'boolean')\n        PMIndex = isPM.value ? 1 : 0;\n\n      addColumnNode(\n        use12Hours === true,\n        <TimeUnitColumn key=\"12hours\" />,\n        PMIndex,\n        [\n          { label: 'AM', value: 0, disabled: getAMPMDisabled.value[0] },\n          { label: 'PM', value: 1, disabled: getAMPMDisabled.value[1] },\n        ],\n        (num) => {\n          onSelect(setTime(!!num, hour.value, minute.value, second.value), 'mouse');\n        },\n      );\n\n      return <div class={contentPrefixCls}>{columns.map(({ node }) => node)}</div>;\n    };\n  },\n});\n\nexport default TimeBody;\n"],"names":["generateUnits","start","end","step","disabledUnits","units","i","push","label","leftPad","value","disabled","includes","TimeBody","compatConfig","MODE","name","inheritAttrs","props","setup","originHour","computed","generateConfig","getHour","isPM","use12Hours","hour","minute","getMinute","second","getSecond","now","ref","getNow","mergedDisabledHours","mergedDisabledMinutes","mergedDisabledSeconds","onBeforeUpdate","watchEffect","disabledTime","disabledConfig","disabledHours","disabledMinutes","disabledSeconds","setTime","isNewPM","newHour","newMinute","newSecond","newDate","mergedHour","minutes","find","h","mergedMinute","m","mergedSecond","seconds","s","utilSetTime","rawHours","hourStep","getAMPMDisabled","AMPMDisabled","forEach","hourValue","hours","filter","hourMeta","map","hourLabel","minuteStep","rawHour","secondStep","rawMinute","prefixCls","operationRef","activeColumnIndex","showHour","showMinute","showSecond","hideDisabledOptions","onSelect","columns","contentPrefixCls","columnPrefixCls","onUpDown","diff","column","valueIndex","findIndex","unit","unitLen","length","nextUnit","addColumnNode","condition","node","columnValue","onColumnSelect","cloneElement","active","_createVNode","TimeUnitColumn","num","PMIndex"],"mappings":"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"}