{"version":3,"file":"heatmap.vue2.mjs","sources":["../../../../../../packages/components/heatmap/src/heatmap.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DAY_MS = 24 * 60 * 60 * 1000\n</script>\n<template>\r\n  <div :class=\"[bem.b(), bem.m(props.size)]\" :style=\"cssVars\">\r\n    <div\r\n      v-if=\"showIndicator && props.indicatorVerticalPosition === 'top'\"\r\n      :class=\"indicatorRowClass\"\r\n    >\r\n      <slot name=\"indicator\">\r\n        <div v-if=\"props.showColorIndicator\" :class=\"bem.e('indicator')\">\r\n          <span :class=\"bem.e('indicator-label')\">\r\n            <slot name=\"indicator-leading-text\">少</slot>\r\n          </span>\r\n          <div :class=\"bem.e('indicator-cells')\">\r\n            <div\r\n              v-for=\"(color, index) in indicatorColors\"\r\n              :key=\"`indicator-top-${index}`\"\r\n              :class=\"bem.e('indicator-cell')\"\r\n              :style=\"{ backgroundColor: color }\"\r\n            />\r\n          </div>\r\n          <span :class=\"bem.e('indicator-label')\">\r\n            <slot name=\"indicator-trailing-text\">多</slot>\r\n          </span>\r\n        </div>\r\n      </slot>\r\n    </div>\r\n\r\n    <div :class=\"bem.e('content')\">\r\n      <div\r\n        v-if=\"props.showMonthLabels && heatmapMatrix.length\"\r\n        :class=\"bem.e('month-row')\"\r\n      >\r\n        <div v-if=\"props.showWeekLabels\" :class=\"bem.e('month-spacer')\" />\r\n        <div\r\n          v-for=\"(label, index) in monthLabels\"\r\n          :key=\"`month-${index}`\"\r\n          :class=\"bem.e('month-label-cell')\"\r\n        >\r\n          {{ label }}\r\n        </div>\r\n      </div>\r\n\r\n      <div :class=\"bem.e('calendar')\">\r\n        <div v-if=\"props.showWeekLabels\" :class=\"bem.e('week-labels')\">\r\n          <div\r\n            v-for=\"(label, index) in weekLabels\"\r\n            :key=\"`week-${index}`\"\r\n            :class=\"bem.e('week-label-cell')\"\r\n          >\r\n            {{ label }}\r\n          </div>\r\n        </div>\r\n\r\n        <div :class=\"bem.e('weeks')\">\r\n          <div\r\n            v-for=\"(week, weekIndex) in heatmapMatrix\"\r\n            :key=\"`heatmap-week-${weekIndex}`\"\r\n            :class=\"bem.e('week-column')\"\r\n          >\r\n            <div\r\n              v-for=\"(cell, dayIndex) in week\"\r\n              :key=\"getCellKey(cell, weekIndex, dayIndex)\"\r\n              :class=\"bem.e('cell-wrap')\"\r\n            >\r\n              <template v-if=\"cell\">\r\n                <LlTooltip\r\n                  v-if=\"tooltipEnabled && !cell.hidden\"\r\n                  v-bind=\"tooltipBindings\"\r\n                  :tip=\"getTooltipText(cell.data)\"\r\n                  :show-container=\"false\"\r\n                >\r\n                  <template v-if=\"slots.tooltip\" #title>\r\n                    <slot\r\n                      name=\"tooltip\"\r\n                      :timestamp=\"cell.data.timestamp\"\r\n                      :value=\"cell.data.value\"\r\n                    />\r\n                  </template>\r\n                  <div\r\n                    :class=\"getCellClass(cell)\"\r\n                    :style=\"getCellStyle(cell)\"\r\n                  />\r\n                </LlTooltip>\r\n                <div\r\n                  v-else\r\n                  :class=\"getCellClass(cell)\"\r\n                  :style=\"getCellStyle(cell)\"\r\n                />\r\n              </template>\r\n\r\n              <div v-else :class=\"[bem.e('cell'), bem.is('empty')]\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"slots.footer\" :class=\"bem.e('footer')\">\r\n      <div :class=\"bem.e('footer-left')\">\r\n        <slot name=\"footer\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div\r\n      v-if=\"showIndicator && props.indicatorVerticalPosition === 'bottom'\"\r\n      :class=\"indicatorRowClass\"\r\n    >\r\n      <slot name=\"indicator\">\r\n        <div v-if=\"props.showColorIndicator\" :class=\"bem.e('indicator')\">\r\n          <span :class=\"bem.e('indicator-label')\">\r\n            <slot name=\"indicator-leading-text\">少</slot>\r\n          </span>\r\n          <div :class=\"bem.e('indicator-cells')\">\r\n            <div\r\n              v-for=\"(color, index) in indicatorColors\"\r\n              :key=\"`indicator-bottom-${index}`\"\r\n              :class=\"bem.e('indicator-cell')\"\r\n              :style=\"{ backgroundColor: color }\"\r\n            />\r\n          </div>\r\n          <span :class=\"bem.e('indicator-label')\">\r\n            <slot name=\"indicator-trailing-text\">多</slot>\r\n          </span>\r\n        </div>\r\n      </slot>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { addUnit, createNamespace } from '@ll-plus/utils'\r\nimport { computed, useSlots } from 'vue'\r\n\r\nimport { LlTooltip } from '../../tooltip'\r\nimport {\r\n  heatmapColorThemes,\r\n  heatmapProps,\r\n  type HeatmapDataItem,\r\n  type HeatmapTooltipOptions,\r\n} from './heatmap'\r\n\r\ndefineOptions({ name: 'LlHeatmap' })\r\n\r\ninterface HeatmapCellData extends HeatmapDataItem {\r\n  hidden: boolean\r\n  synthetic: boolean\r\n}\r\n\r\ninterface HeatmapCell {\r\n  data: HeatmapCellData\r\n  color: string\r\n  hidden: boolean\r\n  loading: boolean\r\n}\r\n\r\n\r\n\r\nconst SIZE_MAP = {\r\n  small: {\r\n    rectSize: 10,\r\n    radius: 2,\r\n    fontSize: 12,\r\n    labelWidth: 28,\r\n  },\r\n  medium: {\r\n    rectSize: 12,\r\n    radius: 3,\r\n    fontSize: 12,\r\n    labelWidth: 32,\r\n  },\r\n  large: {\r\n    rectSize: 15,\r\n    radius: 4,\r\n    fontSize: 13,\r\n    labelWidth: 36,\r\n  },\r\n} as const\r\n\r\nconst props = defineProps(heatmapProps)\r\nconst slots = useSlots()\r\nconst bem = createNamespace('heatmap')\r\n\r\nconst showIndicator = computed(() => {\r\n  return props.showColorIndicator || !!slots.indicator\r\n})\r\n\r\nconst tooltipOptions = computed<Required<HeatmapTooltipOptions>>(() => {\r\n  return {\r\n    show: false,\r\n    placement: 'top',\r\n    arrow: true,\r\n    bgColor: undefined,\r\n    textColor: undefined,\r\n    isWhiteBg: false,\r\n    maxWidth: '240px',\r\n    tipEllipsis: false,\r\n    tipEllipsisLine: 1,\r\n    overlayClassName: '',\r\n    overlayStyle: {},\r\n    ellipsis: false,\r\n    width: '',\r\n    containerStyle: {},\r\n    showContainer: false,\r\n    ...props.tooltip,\r\n  }\r\n})\r\n\r\nconst tooltipEnabled = computed(() => tooltipOptions.value.show)\r\n\r\nconst tooltipBindings = computed(() => {\r\n  const { show, ...rest } = tooltipOptions.value\r\n  return rest\r\n})\r\n\r\nconst sizeConfig = computed(() => SIZE_MAP[props.size])\r\n\r\nconst activeColors = computed(() => {\r\n  if (props.activeColors?.length) {\r\n    return props.activeColors\r\n  }\r\n\r\n  if (props.colorTheme) {\r\n    return heatmapColorThemes[props.colorTheme]\r\n  }\r\n\r\n  return heatmapColorThemes.green\r\n})\r\n\r\nconst minimumColor = computed(() => props.minimumColor || '#ebedf0')\r\n\r\nconst indicatorColors = computed(() => [\r\n  minimumColor.value,\r\n  ...activeColors.value,\r\n])\r\n\r\nconst indicatorRowClass = computed(() => {\r\n  return [\r\n    bem.e('indicator-row'),\r\n    bem.em('indicator-row', props.indicatorVerticalPosition),\r\n    bem.em('indicator-row', props.indicatorHorizontalAlign),\r\n  ]\r\n})\r\n\r\nconst cssVars = computed(() => ({\r\n  '--ll-heatmap-rect-size': `${sizeConfig.value.rectSize}px`,\r\n  '--ll-heatmap-radius': `${sizeConfig.value.radius}px`,\r\n  '--ll-heatmap-font-size': `${sizeConfig.value.fontSize}px`,\r\n  '--ll-heatmap-label-width': `${sizeConfig.value.labelWidth}px`,\r\n  '--ll-heatmap-x-gap': addUnit(props.xGap) || '4px',\r\n  '--ll-heatmap-y-gap': addUnit(props.yGap) || '4px',\r\n}))\r\n\r\nconst displaySource = computed(() => {\r\n  if (props.loading) {\r\n    if (props.loadingData?.length) {\r\n      return props.loadingData\r\n    }\r\n\r\n    if (props.data.length) {\r\n      return props.data\r\n    }\r\n\r\n    return createRecentLoadingData()\r\n  }\r\n\r\n  return props.data\r\n})\r\n\r\nconst normalizedData = computed<HeatmapCellData[]>(() => {\r\n  if (!displaySource.value.length) {\r\n    return []\r\n  }\r\n\r\n  const sorted = [...displaySource.value]\r\n    .map((item) => ({\r\n      timestamp: startOfDay(item.timestamp).getTime(),\r\n      value: item.value ?? null,\r\n    }))\r\n    .sort((a, b) => a.timestamp - b.timestamp)\r\n\r\n  const sourceMap = new Map<number, HeatmapDataItem>()\r\n\r\n  sorted.forEach((item) => {\r\n    sourceMap.set(item.timestamp, item)\r\n  })\r\n\r\n  const firstTimestamp = sorted[0].timestamp\r\n  const lastTimestamp = sorted[sorted.length - 1].timestamp\r\n\r\n  const gridStart = startOfWeek(firstTimestamp, props.firstDayOfWeek)\r\n  const rangeStart = props.fillCalendarLeading\r\n    ? gridStart\r\n    : startOfDay(firstTimestamp).getTime()\r\n  const rangeEnd = endOfWeek(lastTimestamp, props.firstDayOfWeek)\r\n\r\n  const series: HeatmapCellData[] = []\r\n\r\n  for (let timestamp = rangeStart; timestamp <= rangeEnd; timestamp += DAY_MS) {\r\n    const sourceItem = sourceMap.get(timestamp)\r\n    const value = sourceItem?.value ?? null\r\n    const synthetic = !sourceItem\r\n\r\n    series.push({\r\n      timestamp,\r\n      value,\r\n      hidden: props.loading ? value === null : false,\r\n      synthetic,\r\n    })\r\n  }\r\n\r\n  return series\r\n})\r\n\r\nconst maxValue = computed(() => {\r\n  return normalizedData.value.reduce((current, item) => {\r\n    const value = typeof item.value === 'number' ? item.value : 0\r\n    return value > current ? value : current\r\n  }, 0)\r\n})\r\n\r\nconst heatmapMatrix = computed<Array<Array<HeatmapCell | null>>>(() => {\r\n  if (!normalizedData.value.length) {\r\n    return []\r\n  }\r\n\r\n  const calendarStart = startOfWeek(\r\n    normalizedData.value[0].timestamp,\r\n    props.firstDayOfWeek,\r\n  )\r\n\r\n  const weeks: Array<Array<HeatmapCell | null>> = []\r\n\r\n  normalizedData.value.forEach((item) => {\r\n    const rowIndex = getRowIndex(item.timestamp, props.firstDayOfWeek)\r\n    const columnIndex = getColumnIndex(item.timestamp, calendarStart)\r\n\r\n    if (!weeks[columnIndex]) {\r\n      weeks[columnIndex] = Array.from({ length: 7 }, () => null)\r\n    }\r\n\r\n    weeks[columnIndex][rowIndex] = {\r\n      data: item,\r\n      color: resolveColor(\r\n        item.value,\r\n        maxValue.value,\r\n        activeColors.value,\r\n        minimumColor.value,\r\n      ),\r\n      hidden: item.hidden,\r\n      loading: props.loading && !item.hidden,\r\n    }\r\n  })\r\n\r\n  return weeks\r\n})\r\n\r\nconst monthLabels = computed(() => {\r\n  let lastMonth = ''\r\n\r\n  return heatmapMatrix.value.map((week) => {\r\n    const firstVisibleDay = week.find((item) => item !== null)?.data\r\n\r\n    if (!firstVisibleDay) {\r\n      return ''\r\n    }\r\n\r\n    const month = formatMonth(firstVisibleDay.timestamp)\r\n    if (month !== lastMonth) {\r\n      lastMonth = month\r\n      return month\r\n    }\r\n\r\n    return ''\r\n  })\r\n})\r\n\r\nconst weekLabels = computed(() => {\r\n  const formatter = new Intl.DateTimeFormat(undefined, { weekday: 'short' })\r\n  const reference = getReferenceWeekStart(props.firstDayOfWeek)\r\n\r\n  return Array.from({ length: 7 }, (_, index) => {\r\n    return formatter.format(addDays(reference, index))\r\n  })\r\n})\r\n\r\nconst getTooltipText = (item: HeatmapDataItem) => {\r\n  const dateText = new Date(item.timestamp).toLocaleDateString()\r\n  const value = item.value ?? 0\r\n  const suffix = props.unit ? ` ${value} ${props.unit}` : ` ${value}`\r\n  return `${dateText}${suffix}`\r\n}\r\n\r\nconst getCellClass = (cell: HeatmapCell) => {\r\n  return [\r\n    bem.e('cell'),\r\n    cell.loading ? bem.is('loading') : '',\r\n    cell.hidden ? bem.is('hidden') : '',\r\n    cell.data.synthetic ? bem.is('synthetic') : '',\r\n  ]\r\n}\r\n\r\nconst getCellStyle = (cell: HeatmapCell) => {\r\n  return {\r\n    backgroundColor: cell.hidden ? 'transparent' : cell.color,\r\n  }\r\n}\r\n\r\nconst getCellKey = (\r\n  cell: HeatmapCell | null,\r\n  weekIndex: number,\r\n  dayIndex: number,\r\n) => {\r\n  return cell\r\n    ? `${cell.data.timestamp}-${weekIndex}-${dayIndex}`\r\n    : `empty-${weekIndex}-${dayIndex}`\r\n}\r\n\r\nfunction startOfDay(timestamp: number) {\r\n  const date = new Date(timestamp)\r\n  date.setHours(0, 0, 0, 0)\r\n  return date\r\n}\r\n\r\nfunction addDays(date: Date, days: number) {\r\n  const nextDate = new Date(date)\r\n  nextDate.setDate(nextDate.getDate() + days)\r\n  return nextDate\r\n}\r\n\r\nfunction getJsWeekStart(firstDayOfWeek: number) {\r\n  return (firstDayOfWeek + 1) % 7\r\n}\r\n\r\nfunction getRowIndex(timestamp: number, firstDayOfWeek: number) {\r\n  const weekStart = getJsWeekStart(firstDayOfWeek)\r\n  const day = new Date(timestamp).getDay()\r\n  return (day - weekStart + 7) % 7\r\n}\r\n\r\nfunction startOfWeek(timestamp: number, firstDayOfWeek: number) {\r\n  const date = startOfDay(timestamp)\r\n  return addDays(date, -getRowIndex(date.getTime(), firstDayOfWeek)).getTime()\r\n}\r\n\r\nfunction endOfWeek(timestamp: number, firstDayOfWeek: number) {\r\n  return addDays(new Date(startOfWeek(timestamp, firstDayOfWeek)), 6).getTime()\r\n}\r\n\r\nfunction getColumnIndex(timestamp: number, calendarStart: number) {\r\n  const current = startOfDay(timestamp).getTime()\r\n  return Math.floor((current - calendarStart) / DAY_MS / 7)\r\n}\r\n\r\nfunction resolveColor(\r\n  value: number | null | undefined,\r\n  max: number,\r\n  colors: string[],\r\n  baseColor: string,\r\n) {\r\n  if (value === null || value === undefined || value <= 0 || max <= 0) {\r\n    return baseColor\r\n  }\r\n\r\n  const step = Math.min(colors.length, Math.ceil((value / max) * colors.length))\r\n  return colors[Math.max(0, step - 1)] || colors[colors.length - 1] || baseColor\r\n}\r\n\r\nfunction formatMonth(timestamp: number) {\r\n  return new Intl.DateTimeFormat(undefined, { month: 'short' }).format(\r\n    new Date(timestamp),\r\n  )\r\n}\r\n\r\nfunction getReferenceWeekStart(firstDayOfWeek: number) {\r\n  const jsWeekStart = getJsWeekStart(firstDayOfWeek)\r\n  const date = new Date(2024, 0, 7)\r\n\r\n  while (date.getDay() !== jsWeekStart) {\r\n    date.setDate(date.getDate() + 1)\r\n  }\r\n\r\n  return date\r\n}\r\n\r\nfunction createRecentLoadingData() {\r\n  const today = startOfDay(Date.now())\r\n  const result: HeatmapDataItem[] = []\r\n\r\n  for (let index = 364; index >= 0; index -= 1) {\r\n    result.push({\r\n      timestamp: addDays(today, -index).getTime(),\r\n      value: index % 5 === 0 ? 3 : 1,\r\n    })\r\n  }\r\n\r\n  return result\r\n}\r\n</script>\r\n"],"names":["_createElementBlock","_normalizeClass","_unref","_renderSlot","_createElementVNode","_openBlock","_Fragment","_renderList","_createBlock","_mergeProps","_normalizeStyle"],"mappings":"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"}