{"version":3,"file":"ChartLine.mjs","sources":["../../../packages/chart-line/ChartLine.tsx"],"sourcesContent":["import {\n  ForwardedRef,\n  forwardRef,\n  useMemo,\n  useLayoutEffect,\n  useState,\n  useId,\n} from 'react'\n\nimport { InlineLoader } from '../loaders/index.js'\n\nimport { ChartLineLabel } from './ChartLineLabel.js'\nimport { getContainerSize, processData } from './utils/index.js'\nimport { ContainerStyle, LineStyle, WrapperStyle } from './ChartLineStyles.js'\nimport { ChartLineProps } from './types.js'\n\nexport const ChartLine = forwardRef(\n  (props: ChartLineProps, ref?: ForwardedRef<HTMLDivElement>) => {\n    const {\n      loading = false,\n      onClick,\n      children,\n      height,\n      border,\n      data,\n      showLabels,\n      maxValue,\n      thresholdType,\n      ...rest\n    } = props\n\n    const [containerSize, setContainerSize] = useState<{\n      size: number\n      isCenterAlign: boolean\n    } | null>(null)\n    const containerId = useId()\n\n    const { data: processedData, ids } = useMemo(\n      () => processData(data, containerId, maxValue),\n      [data, maxValue, containerId],\n    )\n\n    const allPreviousIds = useMemo(\n      () => ids.map((_, index) => ids.slice(0, index)),\n      [ids],\n    )\n\n    useLayoutEffect(() => {\n      if (!showLabels) {\n        setContainerSize(null)\n        return\n      }\n      const containerSize = getContainerSize(ids)\n      setContainerSize(containerSize)\n    }, [ids, showLabels])\n\n    if (loading) {\n      return (\n        <WrapperStyle $border={border} $height={height} ref={ref} {...rest}>\n          <InlineLoader />\n        </WrapperStyle>\n      )\n    }\n\n    return (\n      <ContainerStyle\n        id={containerId}\n        $alignItems={containerSize?.isCenterAlign ? 'center' : 'flex-start'}\n        $height={containerSize?.size ?? 0}\n      >\n        <WrapperStyle $border={border} $height={height} ref={ref} {...rest}>\n          {processedData.map((item, index) => {\n            const { color, id, width } = item\n            const previousIds = allPreviousIds[index]\n\n            return (\n              <LineStyle\n                key={id}\n                $width={`${width}%`}\n                $backgroundColor={color}\n                $zIndex={processedData.length - index}\n                $border={border}\n                $isFullWidth={width === 100}\n              >\n                <ChartLineLabel\n                  zIndex={processedData.length - index}\n                  show={showLabels}\n                  previousIds={previousIds}\n                  height={height}\n                  thresholdType={thresholdType}\n                  containerId={containerId}\n                  {...item}\n                />\n              </LineStyle>\n            )\n          })}\n        </WrapperStyle>\n      </ContainerStyle>\n    )\n  },\n)\nChartLine.displayName = 'ChartLine'\n"],"names":["ChartLine","forwardRef","props","ref","loading","onClick","children","height","border","data","showLabels","maxValue","thresholdType","rest","containerSize","setContainerSize","useState","containerId","useId","processedData","ids","useMemo","processData","allPreviousIds","map","_","index","slice","useLayoutEffect","getContainerSize","_jsx","WrapperStyle","$border","$height","InlineLoader","ContainerStyle","id","$alignItems","isCenterAlign","size","item","color","width","previousIds","LineStyle","$width","$backgroundColor","$zIndex","length","$isFullWidth","ChartLineLabel","zIndex","show","displayName"],"mappings":"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"}