{"version":3,"file":"time-ago2.mjs","sources":["../../../../../../packages/components/time-ago/src/time-ago.vue"],"sourcesContent":["<template>\n  <div>\n    <div\n      v-for=\"(_dateTime, index) in datetimesArray\"\n      :key=\"index\"\n      :class=\"ns.b()\"\n    >\n      <span>{{ relativeTimes[index] }}</span>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useNamespace } from '@lit-element/hooks'\nimport { timeAgoProps } from './time-ago'\n\n// 定义组件选项\ndefineOptions({\n  name: 'LtTimeAgo',\n})\n// 使用命名空间\nconst ns = useNamespace('time-ago')\nconst props = defineProps(timeAgoProps)\n\n// 存储相对时间的数组\nconst relativeTimes = ref<string[]>([])\n\n// 将 datetimes 转换为数组\nconst datetimesArray = computed<Array<number | string>>(() => {\n  if (Array.isArray(props.datetimes)) {\n    return props.datetimes\n  } else if (typeof props.datetimes === 'string') {\n    // 如果是字符串，尝试解析为 JSON 数组\n    try {\n      const parsed = JSON.parse(props.datetimes)\n      if (Array.isArray(parsed)) {\n        return parsed\n      }\n    } catch (error) {\n      console.error('Failed to parse datetimes as JSON array:', error)\n      return [props.datetimes]\n    }\n  } else if (typeof props.datetimes === 'number') {\n    // 如果是数字，放入数组\n    return [props.datetimes]\n  }\n  return []\n})\n\n// 计算相对时间的方法\nconst calculateRelativeTime = (dateTime: number | string): string => {\n  const now = Date.now()\n  const then = new Date(dateTime).getTime()\n  const diff = now - then\n\n  const second = 1000\n  const minute = 60 * 1000\n  const hour = minute * 60\n  const day = hour * 24\n  const week = day * 7\n  const month = day * 30\n  const year = day * 365\n\n  if (diff < second) {\n    return '刚刚'\n  } else if (diff < minute) {\n    return `${Math.floor(diff / second)}秒前`\n  } else if (diff < hour) {\n    return `${Math.floor(diff / minute)}分钟前`\n  } else if (diff < day) {\n    return `${Math.floor(diff / hour)}小时前`\n  } else if (diff < week) {\n    return `${Math.floor(diff / day)}天前`\n  } else if (diff < month) {\n    return `${Math.floor(diff / week)}周前`\n  } else if (diff < year) {\n    return `${Math.floor(diff / month)}个月前`\n  } else {\n    return `${Math.floor(diff / year)}年前`\n  }\n}\n\n// 更新相对时间的方法\nconst updateRelativeTimes = () => {\n  relativeTimes.value = datetimesArray.value.map((dateTime) =>\n    calculateRelativeTime(dateTime)\n  )\n}\n\n// 组件挂载时更新相对时间，并设置定时器\nonMounted(() => {\n  updateRelativeTimes()\n  const intervalId = setInterval(\n    updateRelativeTimes,\n    props.interval ?? 10000000\n  )\n  onUnmounted(() => {\n    clearInterval(intervalId)\n  })\n})\n\n// 监听 datetimes 属性的变化，更新相对时间\nwatch(\n  () => props.datetimes,\n  (newDatetimes) => {\n    if (newDatetimes) {\n      updateRelativeTimes()\n    }\n  }\n)\n</script>\n"],"names":["_openBlock","_createElementBlock","_Fragment","_renderList","_unref","_normalizeClass"],"mappings":"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"}