{"version":3,"file":"countdown.vue2.mjs","sources":["../../../../../../packages/components/countdown/src/countdown.vue"],"sourcesContent":["<template>\r\n  <div :class=\"[bem.b(), bem.m(props.theme), isFinish ? bem.is('finish') : '']\">\r\n    <!-- 礼花容器 -->\r\n    <div ref=\"confettiContainer\" :class=\"bem.e('confetti-container')\"></div>\r\n\r\n    <div v-if=\"!!props.title\" :class=\"bem.e('title')\" :style=\"props.titleStyle\">\r\n      {{ props.title }}\r\n    </div>\r\n    <div :class=\"bem.e('content')\">\r\n      <template v-for=\"(item, index) in displayItems\" :key=\"item.key\">\r\n        <div :class=\"bem.e('item')\">\r\n          <span :class=\"bem.e('value')\">{{ item.value }}</span>\r\n          <span :class=\"bem.e('label')\">{{ item.label }}</span>\r\n        </div>\r\n        <span\r\n          v-if=\"index < displayItems.length - 1\"\r\n          :class=\"bem.e('separator')\"\r\n        >\r\n          :\r\n        </span>\r\n      </template>\r\n    </div>\r\n\r\n    <!-- 控制按钮 -->\r\n    <div v-if=\"props.control\" :class=\"bem.e('controls')\">\r\n      <button :class=\"[bem.e('btn'), isRunning ? bem.em('btn', 'pause') : bem.em('btn', 'play')]\" @click=\"togglePlayPause\">\r\n        <!-- 播放图标 -->\r\n        <svg v-if=\"!isRunning\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n          <path d=\"M8 5v14l11-7z\" />\r\n        </svg>\r\n        <!-- 暂停图标 -->\r\n        <svg v-else viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n          <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\r\n        </svg>\r\n      </button>\r\n      <button :class=\"[bem.e('btn'), bem.em('btn', 'reset')]\" @click=\"handleReset\">\r\n        <!-- 重置图标 -->\r\n        <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n          <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\r\n        </svg>\r\n      </button>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue'\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { countdownProps, countdownEmits } from './countdown'\r\nimport type { TimeUnit } from './countdown'\r\n\r\ndefineOptions({ name: 'LlCountdown' })\r\n\r\nconst props = defineProps(countdownProps)\r\nconst emits = defineEmits(countdownEmits)\r\nconst bem = createNamespace('countdown')\r\n\r\n// 单位标签\r\nconst UNIT_LABELS: Record<TimeUnit, string> = {\r\n  yyyy: '年',\r\n  MM: '月',\r\n  dd: '日',\r\n  HH: '时',\r\n  mm: '分',\r\n  ss: '秒',\r\n}\r\n\r\n// 全量单位顺序（从大到小）\r\nconst ALL_UNITS: TimeUnit[] = ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss']\r\n\r\n// 各单位换算为秒\r\nconst UNIT_SECONDS: Record<TimeUnit, number> = {\r\n  yyyy: 365 * 24 * 60 * 60,\r\n  MM: 30 * 24 * 60 * 60,\r\n  dd: 24 * 60 * 60,\r\n  HH: 60 * 60,\r\n  mm: 60,\r\n  ss: 1,\r\n}\r\n\r\n// 目标时间戳（ms）\r\nconst targetTime = ref<number>(0)\r\n// 剩余时间（ms）\r\nconst remainingMs = ref<number>(0)\r\n// 倒计时是否完成\r\nconst isFinish = ref(false)\r\n// 是否正在运行\r\nconst isRunning = ref(false)\r\n// 计时器\r\nlet timer: ReturnType<typeof setInterval> | null = null\r\n// 完成态动画定时器\r\nlet finishTimer: ReturnType<typeof setTimeout> | null = null\r\n// 礼花容器\r\nconst confettiContainer = ref<HTMLElement | null>(null)\r\n\r\n// 计算目标时间戳：mode='timer' 时把 value 解析为目标时间，否则以 value 为时长从当前时刻起算\r\nconst resolveTargetTime = (): number => {\r\n  if (props.mode === 'timer') {\r\n    const v =\r\n      props.value instanceof Date\r\n        ? props.value\r\n        : new Date(props.value as string | number)\r\n    return v.getTime()\r\n  }\r\n  return Date.now() + Number(props.value)\r\n}\r\n\r\nconst init = () => {\r\n  if (finishTimer !== null) {\r\n    clearTimeout(finishTimer)\r\n    finishTimer = null\r\n  }\r\n  targetTime.value = resolveTargetTime()\r\n  remainingMs.value = Math.max(0, targetTime.value - Date.now())\r\n  isFinish.value = false\r\n}\r\n\r\nconst tick = () => {\r\n  const delta = targetTime.value - Date.now()\r\n  if (delta <= 0) {\r\n    remainingMs.value = 0\r\n    stopTimer()\r\n    isFinish.value = true\r\n\r\n    if (finishTimer !== null) {\r\n      clearTimeout(finishTimer)\r\n    }\r\n\r\n    finishTimer = setTimeout(() => {\r\n      isFinish.value = false\r\n      finishTimer = null\r\n    }, 600)\r\n\r\n    if (props.showConfetti) {\r\n      createConfetti()\r\n    }\r\n    emits('finish')\r\n  } else {\r\n    remainingMs.value = delta\r\n  }\r\n}\r\n\r\nconst stopTimer = () => {\r\n  if (timer !== null) {\r\n    clearInterval(timer)\r\n    timer = null\r\n  }\r\n  isRunning.value = false\r\n}\r\n\r\n/** 生成礼花特效 */\r\nconst createConfetti = () => {\r\n  if (!confettiContainer.value) return\r\n\r\n  const container = confettiContainer.value\r\n  const { width, height } = container.getBoundingClientRect()\r\n\r\n  if (width <= 0 || height <= 0) return\r\n\r\n  const confettiCount = 50\r\n  const colors = [\r\n    '#b24a2e',\r\n    '#d3a437',\r\n    '#4d956f',\r\n    '#537bd0',\r\n    '#9a4faf',\r\n    '#5fa0aa',\r\n  ]\r\n\r\n  for (let i = 0; i < confettiCount; i++) {\r\n    const confetti = document.createElement('div')\r\n    const size = Math.random() * 10 + 4\r\n    const duration = 2.8 + Math.random() * 0.4\r\n    const delay = Math.random() * 0.2\r\n    const centerX = width / 2\r\n    const centerY = height / 2\r\n    const angle = Math.random() * Math.PI * 2\r\n    const distance = Math.min(width, height) * (0.2 + Math.random() * 0.45)\r\n    const rotation = Math.random() * 360\r\n    const rotateMid =\r\n      rotation + (Math.random() > 0.5 ? 1 : -1) * (80 + Math.random() * 140)\r\n    const rotateEnd =\r\n      rotateMid + (Math.random() > 0.5 ? 1 : -1) * (180 + Math.random() * 240)\r\n    const color = colors[Math.floor(Math.random() * colors.length)]\r\n    const isStrip = Math.random() > 0.45\r\n    const pieceWidth = isStrip ? size * 1.6 : size\r\n    const pieceHeight = isStrip ? Math.max(3, size * 0.45) : size\r\n    const opacity = 0.88 + Math.random() * 0.1\r\n    const fromLeft = Math.random() > 0.5\r\n    const launchX =\r\n      width * (fromLeft ? 0.18 : 0.82) + (Math.random() - 0.5) * width * 0.08\r\n    const launchY = height * 0.88 + (Math.random() - 0.5) * height * 0.06\r\n    const centerTargetX =\r\n      centerX - pieceWidth / 2 + (Math.random() - 0.5) * width * 0.08\r\n    const centerTargetY =\r\n      centerY - pieceHeight / 2 + (Math.random() - 0.5) * height * 0.08\r\n    const toCenterX = centerTargetX - launchX\r\n    const toCenterY = centerTargetY - launchY\r\n    const explodeX = Math.cos(angle) * distance\r\n    const explodeY = Math.sin(angle) * distance\r\n    const finalX = toCenterX + explodeX\r\n    const finalY = toCenterY + explodeY\r\n\r\n    confetti.style.cssText = `\r\n      position: absolute;\r\n      left: ${launchX}px;\r\n      top: ${launchY}px;\r\n      width: ${pieceWidth}px;\r\n      height: ${pieceHeight}px;\r\n      background-color: ${color};\r\n      border-radius: ${isStrip ? pieceHeight / 2 : 50}%;\r\n      pointer-events: none;\r\n      --ll-confetti-center-x: ${toCenterX}px;\r\n      --ll-confetti-center-y: ${toCenterY}px;\r\n      --ll-confetti-final-x: ${finalX}px;\r\n      --ll-confetti-final-y: ${finalY}px;\r\n      --ll-confetti-rotate-start: ${rotation}deg;\r\n      --ll-confetti-rotate-mid: ${rotateMid}deg;\r\n      --ll-confetti-rotate-end: ${rotateEnd}deg;\r\n      animation: confetti-fall ${duration}s linear ${delay}s forwards;\r\n      transform: rotate(${rotation}deg);\r\n      opacity: ${opacity};\r\n      box-shadow: 0 0 ${Math.max(4, size / 1.9)}px ${color};\r\n    `\r\n\r\n    container.appendChild(confetti)\r\n\r\n    // 动画结束后清理\r\n    setTimeout(\r\n      () => {\r\n        confetti.remove()\r\n      },\r\n      (duration + delay) * 1000,\r\n    )\r\n  }\r\n}\r\n\r\nconst startTimer = () => {\r\n  stopTimer()\r\n  tick()\r\n  isRunning.value = true\r\n\r\n  const interval =\r\n    props.precision > 0 ? Math.pow(10, 3 - props.precision) : 1000\r\n  timer = setInterval(tick, interval)\r\n}\r\n\r\n/** 重置倒计时 */\r\nconst reset = () => {\r\n  stopTimer()\r\n  init()\r\n}\r\n\r\n/** 控制按钮：开始/暂停切换 */\r\nconst togglePlayPause = () => {\r\n  if (isRunning.value) {\r\n    pause()\r\n  } else {\r\n    start()\r\n  }\r\n}\r\n\r\n/** 控制按钮：重置 */\r\nconst handleReset = () => {\r\n  reset()\r\n}\r\n\r\nwatch(\r\n  () => props.active,\r\n  (val) => {\r\n    if (val) {\r\n      // timer 模式：重新解析 lastTime，确保显示最新剩余时间\r\n      // countdown 模式：基于暂停时存储的剩余时间恢复\r\n      if (props.mode === 'timer') {\r\n        targetTime.value = resolveTargetTime()\r\n        remainingMs.value = Math.max(0, targetTime.value - Date.now())\r\n      } else {\r\n        targetTime.value = Date.now() + remainingMs.value\r\n      }\r\n      startTimer()\r\n    } else {\r\n      stopTimer()\r\n    }\r\n  },\r\n)\r\n\r\n// value 变化时自动重置并停止\r\nwatch(\r\n  () => props.value,\r\n  () => {\r\n    stopTimer()\r\n    init()\r\n  },\r\n)\r\n\r\nonMounted(() => {\r\n  init()\r\n  if (props.active) {\r\n    startTimer()\r\n  }\r\n})\r\n\r\nonUnmounted(() => {\r\n  stopTimer()\r\n  if (finishTimer !== null) {\r\n    clearTimeout(finishTimer)\r\n  }\r\n})\r\n\r\n// 根据剩余时间和选中单位计算展示数据\r\nconst displayItems = computed(() => {\r\n  const selected = new Set(props.units)\r\n  const totalMs = remainingMs.value\r\n  const totalSeconds = Math.floor(totalMs / 1000)\r\n  const subMs = totalMs - totalSeconds * 1000 // 不足 1 秒的毫秒部分\r\n\r\n  let remaining = totalSeconds\r\n  const result: { key: TimeUnit; value: string; label: string }[] = []\r\n\r\n  for (let i = 0; i < ALL_UNITS.length; i++) {\r\n    const unit = ALL_UNITS[i]\r\n    if (!selected.has(unit)) {\r\n      // 未选中：跳过，剩余时间由下一个选中单位承接（自动向下合并）\r\n      continue\r\n    }\r\n\r\n    const factor = UNIT_SECONDS[unit]\r\n    const val = Math.floor(remaining / factor)\r\n    remaining = remaining % factor\r\n\r\n    // 最小单位 ss 且精度 > 0：追加毫秒小数部分\r\n    if (unit === 'ss' && props.precision > 0) {\r\n      const decimal = subMs / 1000\r\n      const intPart = String(val).padStart(2, '0')\r\n      const decPart = decimal.toFixed(props.precision).slice(1) // \".3\" / \".32\"\r\n      result.push({\r\n        key: unit,\r\n        value: intPart + decPart,\r\n        label: UNIT_LABELS[unit],\r\n      })\r\n    } else {\r\n      const digits = 2\r\n      result.push({\r\n        key: unit,\r\n        value: String(val).padStart(digits, '0'),\r\n        label: UNIT_LABELS[unit],\r\n      })\r\n    }\r\n  }\r\n\r\n  return result\r\n})\r\n\r\n/** 开始/恢复倒计时 */\r\nconst start = () => {\r\n  if (props.mode === 'timer') {\r\n    targetTime.value = resolveTargetTime()\r\n    remainingMs.value = Math.max(0, targetTime.value - Date.now())\r\n  } else {\r\n    targetTime.value = Date.now() + remainingMs.value\r\n  }\r\n  startTimer()\r\n}\r\n\r\n/** 暂停倒计时 */\r\nconst pause = () => {\r\n  stopTimer()\r\n}\r\n\r\ndefineExpose({ reset, start, pause, isRunning })\r\n</script>\r\n"],"names":["_createElementBlock","_unref","_createCommentVNode","_createElementVNode","_normalizeClass","_normalizeStyle","_toDisplayString","_openBlock","_Fragment","_renderList"],"mappings":"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"}