{"version":3,"file":"index.mjs","sources":["../../../../../../../../packages/components/visualized/charts/scrolling-list-chart/src/index.vue"],"sourcesContent":["<template>\n  <hl-scrollbar\n    class=\"scrolling-list-chart-container\"\n    :style=\"{ height, '--bar-color': barStyle?.color }\"\n  >\n    <div class=\"scrolling-list-chart\">\n      <div v-for=\"(barItem, idx) in chartData\" :key=\"idx\" class=\"list-item\" :style=\"itemStyle\">\n        <div class=\"list-box m-b-xxs\">\n          <slot name=\"label\" :row=\"barItem\">\n            <span class=\"label\" :style=\"getLabelStyle(barItem)\">\n              {{\n                labelFormatter(barItem.label)\n              }}\n            </span>\n          </slot>\n          <div\n            :class=\"['list-bg', isStack ? 'stack' : '']\"\n            :style=\"{\n              background: barItem?.barStyle?.background || barStyle?.background,\n              height: barItem?.barStyle?.width || barStyle?.width,\n            }\"\n          >\n            <template v-if=\"isStack\">\n              <div\n                v-for=\"(subBarItem, sidx) in barItem.value\"\n                :key=\"sidx\"\n                class=\"list\"\n                :style=\"{\n                  background: subBarItem?.barStyle?.color || barStyle?.color,\n                  width: `${(subBarItem.value / maxVal) * 100}%`,\n                }\"\n              ></div>\n            </template>\n            <div\n              v-else\n              class=\"list\"\n              :style=\"{\n                background: barItem?.barStyle?.color || barStyle?.color,\n                width: `${(barItem.value / maxVal) * 100}%`,\n              }\"\n            ></div>\n            <span class=\"value\" :style=\"getValueStyle(barItem)\">\n              {{\n                valueFormatter(getBarItemTotal(barItem))\n              }}\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </hl-scrollbar>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, PropType, computed } from 'vue'\nimport { HlScrollbar } from 'hongluan-ui'\nimport { ScrollingListChartData } from './types'\n\nexport default defineComponent({\n  name: 'VScrollingListChart',\n  components: { HlScrollbar },\n  props: {\n    height: {\n      type: String,\n    },\n    itemStyle: {\n      type: Object as PropType<Record<string, any>>,\n      default: () => ({\n        margin: '4px 0 0',\n        height: '44px',\n        lineHeight: '44px',\n      }),\n    },\n    barStyle: {\n      type: Object as PropType<{\n        width: string\n        color: string\n        backgroundColor: string\n      }>,\n      default: () => ({\n        width: '1em',\n        color: '#71F8FC',\n        backgroundColor: 'none',\n      }),\n    },\n    labelStyle: {\n      type: Object as PropType<Record<string, any>>,\n      default: () => ({\n        fontSize: '1em',\n        color: '#FFFFFF',\n        width: '30%',\n      }),\n    },\n    valueStyle: {\n      type: Object as PropType<Record<string, any>>,\n      default: () => ({\n        fontSize: '1.2em',\n        color: '#FFFFFF',\n      }),\n    },\n    chartData: {\n      type: Array as PropType<ScrollingListChartData[]>,\n      default: () => [],\n    },\n    labelFormatter: {\n      type: Function as PropType<(label: string) => string>,\n      default: (label: string) => label,\n    },\n    valueFormatter: {\n      type: Function as PropType<(value: number) => string>,\n      default: (value: number) => value,\n    },\n  },\n  setup(props) {\n    const isStack = computed(() => props.chartData.every(d => Array.isArray(d.value)))\n    const maxVal = computed(() => {\n      if (isStack.value) {\n        return Math.max(\n          ...props.chartData.map(d => (d.value as ScrollingListChartData[]).reduce(\n            (prev, cur) => prev + (cur.value as number),\n            0,\n          )),\n        )\n      }\n      return Math.max(...props.chartData.map(d => d.value as number))\n    })\n\n    const getLabelStyle = (charItem: ScrollingListChartData) => ({\n      ...props.labelStyle,\n      ...(charItem?.labelStyle ?? {}),\n    })\n    const getValueStyle = (charItem: ScrollingListChartData) => ({\n      left: `${(charItem.value as number / maxVal.value) * 100}%`,\n      ...props.valueStyle,\n      ...(charItem?.valueStyle ?? {}),\n    })\n    const getBarItemTotal = (charItem: ScrollingListChartData) => (isStack.value\n      ? (charItem.value as ScrollingListChartData[]).reduce(\n        (prev, cur) => prev + (cur.value as number),\n        0,\n      )\n      : charItem.value)\n\n    return {\n      maxVal,\n      isStack,\n      getLabelStyle,\n      getValueStyle,\n      getBarItemTotal,\n    }\n  },\n})\n</script>\n"],"names":["_createBlock","_normalizeStyle","_createElementVNode","_openBlock","_createElementBlock","_Fragment","_renderList","_renderSlot","_toDisplayString","_normalizeClass"],"mappings":"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"}