{"version":3,"file":"index.cjs","sources":["../../../../../packages/components/timePicker/src/index.jsx"],"sourcesContent":["import { ref, computed, onMounted, onUnmounted, defineComponent } from \"vue\";\r\nimport { XIcon, XInput } from \"@ui-library/components\";\r\nimport { format, setHours, setMinutes, setSeconds, addHours, subHours } from \"date-fns\";\r\nimport { Clock } from \"song-ui-pro-icon\";\r\nimport { useNamespace } from \"@ui-library/hook\";\r\n\r\nexport default defineComponent({\r\n  name: \"x-time-picker\",\r\n  props: {\r\n    modelValue: {\r\n      type: [String, Array],\r\n      default: \"\",\r\n    },\r\n    placeholder: {\r\n      type: String,\r\n      default: \"请选择时间\",\r\n    },\r\n    format: {\r\n      type: String,\r\n      default: \"HH:mm:ss\",\r\n    },\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    readonly: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    clearable: {\r\n      type: Boolean,\r\n      default: true,\r\n    },\r\n    range: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    startPlaceholder: {\r\n      type: String,\r\n      default: \"开始时间\",\r\n    },\r\n    endPlaceholder: {\r\n      type: String,\r\n      default: \"结束时间\",\r\n    },\r\n  },\r\n\r\n  setup(props, { emit }) {\r\n    const ns = useNamespace(\"time-picker\");\r\n\r\n    const visible = ref(false);\r\n    const displayValue = ref(\"\");\r\n    const currentTime = ref(props.modelValue ? new Date(props.modelValue) : new Date());\r\n\r\n    // 范围选择相关状态\r\n    const rangeState = ref({\r\n      startTime: null,\r\n      endTime: null,\r\n    });\r\n\r\n    // 初始化范围值\r\n    if (\r\n      props.range &&\r\n      Array.isArray(props.modelValue) &&\r\n      props.modelValue.length === 2\r\n    ) {\r\n      rangeState.value.startTime = new Date(props.modelValue[0]);\r\n      rangeState.value.endTime = new Date(props.modelValue[1]);\r\n      displayValue.value = `${formatTime(\r\n        rangeState.value.startTime\r\n      )} 至 ${formatTime(rangeState.value.endTime)}`;\r\n    }\r\n\r\n    // 生成小时、分钟、秒选项\r\n    const hours = computed(() => {\r\n      const hours = [];\r\n      for (let i = 0; i < 24; i++) {\r\n        hours.push({\r\n          value: i,\r\n          label: i.toString().padStart(2, \"0\"),\r\n          isSelected: (position) => isSelectedHour(i, position),\r\n        });\r\n      }\r\n      return hours;\r\n    });\r\n\r\n    const minutes = computed(() => {\r\n      const minutes = [];\r\n      for (let i = 0; i < 60; i++) {\r\n        minutes.push({\r\n          value: i,\r\n          label: i.toString().padStart(2, \"0\"),\r\n          isSelected: (position) => isSelectedMinute(i, position),\r\n        });\r\n      }\r\n      return minutes;\r\n    });\r\n\r\n    const seconds = computed(() => {\r\n      const seconds = [];\r\n      for (let i = 0; i < 60; i++) {\r\n        seconds.push({\r\n          value: i,\r\n          label: i.toString().padStart(2, \"0\"),\r\n          isSelected: (position) => isSelectedSecond(i, position),\r\n        });\r\n      }\r\n      return seconds;\r\n    });\r\n\r\n    const isSelectedHour = (hour, position) => {\r\n      if (props.range) {\r\n        if (position === \"left\") {\r\n          return hour === (rangeState.value.startTime ? rangeState.value.startTime.getHours() : null);\r\n        } else if (position === \"right\") {\r\n          return hour === (rangeState.value.endTime ? rangeState.value.endTime.getHours() : null);\r\n        }\r\n      }\r\n      return hour === currentTime.value.getHours();\r\n    };\r\n\r\n    const isSelectedMinute = (minute, position) => {\r\n      if (props.range) {\r\n        if (position === \"left\") {\r\n          return minute === (rangeState.value.startTime ? rangeState.value.startTime.getMinutes() : null);\r\n        } else if (position === \"right\") {\r\n          return minute === (rangeState.value.endTime ? rangeState.value.endTime.getMinutes() : null);\r\n        }\r\n      }\r\n      return minute === currentTime.value.getMinutes();\r\n    };\r\n\r\n    const isSelectedSecond = (second, position) => {\r\n      if (props.range) {\r\n        if (position === \"left\") {\r\n          return second === (rangeState.value.startTime ? rangeState.value.startTime.getSeconds() : null);\r\n        } else if (position === \"right\") {\r\n          return second === (rangeState.value.endTime ? rangeState.value.endTime.getSeconds() : null);\r\n        }\r\n      }\r\n      return second === currentTime.value.getSeconds();\r\n    };\r\n\r\n    const formatTime = (time) => {\r\n      return format(time, props.format);\r\n    };\r\n\r\n    const showPanel = () => {\r\n      if (props.disabled || props.readonly) return;\r\n      visible.value = true;\r\n    };\r\n\r\n    const handleClear = () => {\r\n      emit(\"update:modelValue\", props.range ? [] : \"\");\r\n      emit(\"change\", props.range ? [] : \"\");\r\n      displayValue.value = \"\";\r\n      if (props.range) {\r\n        rangeState.value.startTime = null;\r\n        rangeState.value.endTime = null;\r\n        rangeState.value.selecting = false;\r\n      }\r\n    };\r\n\r\n    const selectTime = (type, value, position) => {\r\n      let newTime;\r\n\r\n      if (props.range) {\r\n        // 范围选择模式的逻辑\r\n        const baseTime =\r\n          position === \"left\"\r\n            ? rangeState.value.startTime || new Date()\r\n            : rangeState.value.endTime || new Date();\r\n\r\n        if (type === \"hour\") {\r\n          newTime = setHours(baseTime, value);\r\n        } else if (type === \"minute\") {\r\n          newTime = setMinutes(baseTime, value);\r\n        } else if (type === \"second\") {\r\n          newTime = setSeconds(baseTime, value);\r\n        }\r\n\r\n        if (position === \"left\") {\r\n          rangeState.value.startTime = newTime;\r\n          if (!rangeState.value.endTime) {\r\n            rangeState.value.endTime = addHours(newTime, 1);\r\n          }\r\n        } else if (position === \"right\") {\r\n          rangeState.value.endTime = newTime;\r\n          if (!rangeState.value.startTime) {\r\n            rangeState.value.startTime = subHours(newTime, 1);\r\n          }\r\n        }\r\n      } else {\r\n        // 非范围选择模式，使用当前时间作为基准\r\n        newTime = currentTime.value;\r\n\r\n        // 只更新对应的时间部分\r\n        if (type === \"hour\") {\r\n          newTime = setHours(newTime, value);\r\n        } else if (type === \"minute\") {\r\n          newTime = setMinutes(newTime, value);\r\n        } else if (type === \"second\") {\r\n          newTime = setSeconds(newTime, value);\r\n        }\r\n\r\n        // 更新当前时间\r\n        currentTime.value = newTime;\r\n        const formattedTime = formatTime(newTime);\r\n\r\n        console.log(\"formattedTime\", formattedTime);\r\n\r\n        displayValue.value = formattedTime;\r\n      }\r\n    };\r\n\r\n    const generateUniqueId = () => {\r\n      return `time-picker-${Math.random().toString(36).substr(2, 9)}`;\r\n    };\r\n\r\n    const uniqueId = ref(generateUniqueId());\r\n\r\n    const handleClickOutside = (e) => {\r\n      const root = e.currentTarget;\r\n      const panel = root.querySelector(\".x-time-picker__panel\");\r\n      const input = root.querySelector(\".x-time-picker__input\");\r\n\r\n      if (panel && !panel.contains(e.target) && !input.contains(e.target)) {\r\n        visible.value = false;\r\n      }\r\n    };\r\n\r\n    onMounted(() => {\r\n      const root = document.querySelector(`[data-id=\"${uniqueId.value}\"]`);\r\n      if (root) {\r\n        root.addEventListener(\"click\", handleClickOutside);\r\n      }\r\n    });\r\n\r\n    onUnmounted(() => {\r\n      const root = document.querySelector(`[data-id=\"${uniqueId.value}\"]`);\r\n      if (root) {\r\n        root.removeEventListener(\"click\", handleClickOutside);\r\n      }\r\n    });\r\n\r\n    const handleConfirm = () => {\r\n      if (props.range) {\r\n        if (rangeState.value.startTime && rangeState.value.endTime) {\r\n          const startFormatted = formatTime(rangeState.value.startTime);\r\n          const endFormatted = formatTime(rangeState.value.endTime);\r\n          emit(\"update:modelValue\", [startFormatted, endFormatted]);\r\n          emit(\"change\", [startFormatted, endFormatted]);\r\n          displayValue.value = `${startFormatted} 至 ${endFormatted}`;\r\n        }\r\n      } else {\r\n        // 非范围选择模式的确认逻辑\r\n        const formattedTime = formatTime(currentTime.value);\r\n        emit(\"update:modelValue\", formattedTime);\r\n        emit(\"change\", formattedTime);\r\n        displayValue.value = formattedTime;\r\n      }\r\n      visible.value = false;\r\n    };\r\n\r\n    const hanleCondel = () => {\r\n      visible.value = false;\r\n      if (props.range) {\r\n        rangeState.value.startTime = null;\r\n        rangeState.value.endTime = null;\r\n        rangeState.value.selecting = false;\r\n      }\r\n      emit(\"update:modelValue\", props.range ? [] : \"\");\r\n      emit(\"change\", props.range ? [] : \"\");\r\n      displayValue.value = \"\";\r\n    };\r\n\r\n    return () => (\r\n      <div data-id={uniqueId.value} class={ns.b()}>\r\n        <div\r\n          class={[ns.e(\"input\"), ns.is(\"range\", props.range)]}\r\n          onClick={showPanel}\r\n        >\r\n          <XInput\r\n            modelValue={displayValue.value}\r\n            placeholder={\r\n              props.range\r\n                ? `${props.startPlaceholder} 至 ${props.endPlaceholder}`\r\n                : props.placeholder\r\n            }\r\n            disabled={props.disabled}\r\n            readonly={props.readonly}\r\n            clearance={props.clearable}\r\n            onClear={handleClear}\r\n            v-slots={{\r\n              prepend: () => (\r\n                <XIcon>\r\n                  <Clock />\r\n                </XIcon>\r\n              ),\r\n            }}\r\n          />\r\n        </div>\r\n\r\n        {visible.value && (\r\n          <div\r\n            class={[ns.e(\"panel\"), props.range ? ns.m(\"panel\", \"range\") : \"\"]}\r\n          >\r\n            {props.range && (\r\n              <div class={ns.e(\"panel-left\")}>\r\n                <div class={ns.e(\"time-columns\")}>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>时</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {hours.value.map((hour) => (\r\n                        <span\r\n                          key={hour.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", hour.isSelected(\"left\")),\r\n                          ]}\r\n                          onClick={() => selectTime(\"hour\", hour.value, \"left\")}\r\n                        >\r\n                          {hour.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>分</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {minutes.value.map((minute) => (\r\n                        <span\r\n                          key={minute.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", minute.isSelected(\"left\")),\r\n                          ]}\r\n                          onClick={() =>\r\n                            selectTime(\"minute\", minute.value, \"left\")\r\n                          }\r\n                        >\r\n                          {minute.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>秒</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {seconds.value.map((second) => (\r\n                        <span\r\n                          key={second.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", second.isSelected(\"left\")),\r\n                          ]}\r\n                          onClick={() =>\r\n                            selectTime(\"second\", second.value, \"left\")\r\n                          }\r\n                        >\r\n                          {second.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            )}\r\n\r\n            {props.range && (\r\n              <div class={ns.e(\"panel-right\")}>\r\n                <div class={ns.e(\"time-columns\")}>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>时</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {hours.value.map((hour) => (\r\n                        <span\r\n                          key={hour.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", hour.isSelected(\"right\")),\r\n                          ]}\r\n                          onClick={() =>\r\n                            selectTime(\"hour\", hour.value, \"right\")\r\n                          }\r\n                        >\r\n                          {hour.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>分</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {minutes.value.map((minute) => (\r\n                        <span\r\n                          key={minute.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", minute.isSelected(\"right\")),\r\n                          ]}\r\n                          onClick={() =>\r\n                            selectTime(\"minute\", minute.value, \"right\")\r\n                          }\r\n                        >\r\n                          {minute.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                  <div class={ns.e(\"column\")}>\r\n                    <div class={ns.e(\"column-header\")}>秒</div>\r\n                    <div class={ns.e(\"column-content\")}>\r\n                      {seconds.value.map((second) => (\r\n                        <span\r\n                          key={second.value}\r\n                          class={[\r\n                            ns.e(\"cell\"),\r\n                            ns.is(\"selected\", second.isSelected(\"right\")),\r\n                          ]}\r\n                          onClick={() =>\r\n                            selectTime(\"second\", second.value, \"right\")\r\n                          }\r\n                        >\r\n                          {second.label}\r\n                        </span>\r\n                      ))}\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n\r\n                <div class={ns.e(\"bottom\")}>\r\n                  <x-button size=\"small\" type=\"primary\" onClick={handleConfirm}>\r\n                    确定\r\n                  </x-button>\r\n                  <x-button size=\"small\" onClick={hanleCondel}>\r\n                    取消\r\n                  </x-button>\r\n                </div>\r\n              </div>\r\n            )}\r\n\r\n            {!props.range && (\r\n              <div class={ns.e(\"time-columns\")}>\r\n                <div class={ns.e(\"column\")}>\r\n                  <div class={ns.e(\"column-header\")}>时</div>\r\n                  <div class={ns.e(\"column-content\")}>\r\n                    {hours.value.map((hour) => (\r\n                      <span\r\n                        key={hour.value}\r\n                        class={[\r\n                          ns.e(\"cell\"),\r\n                          ns.is(\"selected\", hour.isSelected()),\r\n                        ]}\r\n                        onClick={() => selectTime(\"hour\", hour.value)}\r\n                      >\r\n                        {hour.label}\r\n                      </span>\r\n                    ))}\r\n                  </div>\r\n                </div>\r\n                <div class={ns.e(\"column\")}>\r\n                  <div class={ns.e(\"column-header\")}>分</div>\r\n                  <div class={ns.e(\"column-content\")}>\r\n                    {minutes.value.map((minute) => (\r\n                      <span\r\n                        key={minute.value}\r\n                        class={[\r\n                          ns.e(\"cell\"),\r\n                          ns.is(\"selected\", minute.isSelected()),\r\n                        ]}\r\n                        onClick={() => selectTime(\"minute\", minute.value)}\r\n                      >\r\n                        {minute.label}\r\n                      </span>\r\n                    ))}\r\n                  </div>\r\n                </div>\r\n                <div class={ns.e(\"column\")}>\r\n                  <div class={ns.e(\"column-header\")}>秒</div>\r\n                  <div class={ns.e(\"column-content\")}>\r\n                    {seconds.value.map((second) => (\r\n                      <span\r\n                        key={second.value}\r\n                        class={[\r\n                          ns.e(\"cell\"),\r\n                          ns.is(\"selected\", second.isSelected()),\r\n                        ]}\r\n                        onClick={() => selectTime(\"second\", second.value)}\r\n                      >\r\n                        {second.label}\r\n                      </span>\r\n                    ))}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            )}\r\n\r\n            {!props.range && (\r\n              <div class={ns.e(\"bottom\")}>\r\n                <x-button size=\"small\" type=\"primary\" onClick={handleConfirm}>\r\n                  确定\r\n                </x-button>\r\n                <x-button size=\"small\" onClick={hanleCondel}>\r\n                  取消\r\n                </x-button>\r\n              </div>\r\n            )}\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  },\r\n});\r\n"],"names":["defineComponent","name","props","modelValue","type","String","Array","default","placeholder","format","disabled","Boolean","readonly","clearable","range","startPlaceholder","endPlaceholder","setup","emit","ns","useNamespace","visible","ref","displayValue","currentTime","Date","rangeState","startTime","endTime","isArray","length","value","formatTime","hours","computed","i","push","label","toString","padStart","isSelected","position","isSelectedHour","minutes","isSelectedMinute","seconds","isSelectedSecond","hour","getHours","minute","getMinutes","second","getSeconds","time","showPanel","handleClear","selecting","selectTime","newTime","baseTime","setHours","setMinutes","setSeconds","addHours","subHours","formattedTime","console","log","generateUniqueId","Math","random","substr","uniqueId","handleClickOutside","e","root","currentTarget","panel","querySelector","input","contains","target","onMounted","document","addEventListener","onUnmounted","removeEventListener","handleConfirm","startFormatted","endFormatted","hanleCondel","_createVNode","b","is","XInput","prepend","XIcon","Clock","m","_createTextVNode","map","onClick","_resolveComponent"],"mappings":"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"}