@redsift/charts 13.0.1 → 13.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_internal/BarChart2.js +1 -1
- package/_internal/BarChart2.js.map +1 -1
- package/_internal/Legend3.js +9 -6
- package/_internal/Legend3.js.map +1 -1
- package/_internal/LegendItem.js +1 -1
- package/_internal/LegendItem2.js +95 -27
- package/_internal/LegendItem2.js.map +1 -1
- package/_internal/LineChart2.js +1 -1
- package/_internal/LineChart2.js.map +1 -1
- package/_internal/PieChart2.js +1 -1
- package/_internal/PieChart2.js.map +1 -1
- package/_internal/ScatterPlot2.js +1 -1
- package/_internal/ScatterPlot2.js.map +1 -1
- package/index.d.ts +4 -2
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart2.js","sources":["../../src/components/LineChart/types.ts","../../src/components/LineChart/styles.ts","../../src/components/LineChart/LoadingLineChart.tsx","../../src/components/LineChart/utils.ts","../../src/components/LineChart/EmptyLineChart.tsx","../../src/components/LineChart/intl/index.ts","../../src/components/LineChart/RenderedLineChart.tsx","../../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import {\n ChartDimensions,\n ChartSize,\n ChartTheme,\n TooltipVariant,\n DotDatum,\n TwoCategoryData,\n ChartAxesProps,\n MarginProps,\n Statistics,\n} from '../../types';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ChartContainerProps } from '../ChartContainer';\nimport { ReactElement, ReactNode, RefObject } from 'react';\nimport { DotProps } from '../Dot';\nimport { LegendProps } from '../Legend';\nimport { SortingMethod } from '../../utils';\nimport { AnchorProps } from '../DataPoint';\n\n/**\n * Component's labels variant.\n */\nexport const LineChartLegendVariant = {\n none: 'none',\n externalLabel: 'externalLabel',\n externalLabelValue: 'externalLabelValue',\n externalLabelPercent: 'externalLabelPercent',\n custom: 'custom',\n} as const;\nexport type LineChartLegendVariant = ValueOf<typeof LineChartLegendVariant>;\n\ninterface LocaleText {\n emptyChartText: string;\n}\n\nexport type LineChartDimensions = ChartDimensions & {\n fontSize: number;\n};\n\n/**\n * Component props.\n */\nexport interface LineChartProps extends ChartContainerProps, ChartAxesProps {\n /** Dataset to use to generate the chart. */\n data?: TwoCategoryData;\n /** Dot role. If an onClick is provided, the dots will have the role `button`. For a navigation link, please use `getDotAnchorProps` instead. */\n dotRole?: DotProps['role'];\n /** Component to use if the chart is empty (replacing the default one). */\n emptyComponent?: ReactNode;\n /** Method used to define the anchor props to use when the dot is a navigation link. */\n getDotAnchorProps?: (datum: DotDatum) => AnchorProps;\n /** Method to determine whether a dot is selected or not. */\n isDotSelected?: (datum: DotDatum) => boolean | undefined;\n /** Method to override the data point labels. */\n labelDecorator?: (\n datum: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Method modifying what's displayed within the legend when the legendVariant is \"custom\". */\n legendDecorator?: (\n datum: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Define whether the labels should be displayed inside or outside the charts and if they should contain raw or percentage values. If set to \"custom\", use `legendDecorator` to customize it. */\n legendVariant?: LineChartLegendVariant;\n /** Props to forward to the Legend block. Can be used to make the legend selectable. */\n legendProps?: Omit<LegendProps, 'data' | 'ref' | 'variant' | 'width'> & { extraLegendItems?: Statistics };\n /** Labels and texts. */\n localeText?: LocaleText;\n /** Custom margins, used to give more space for axes labels and legend for instance. */\n margins?: MarginProps;\n /** Method to be called on a click on a dot. For a navigation link, please use `getDotAnchorProps` instead. */\n onDotClick?: (datum: DotDatum) => void;\n /** LineChart size. */\n size?: ChartSize | LineChartDimensions;\n /** Define how to sort categories. */\n sortingMethod?: SortingMethod;\n /** Reference to the SVG tag. */\n svgRef?: RefObject<SVGSVGElement | null>;\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: ChartTheme;\n /** Method modifying what's displayed within the tooltip when the tooltipVariant is \"custom\". */\n tooltipDecorator?: (\n data: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Tooltip variant. */\n tooltipVariant?: TooltipVariant;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledLineChartProps = LineChartProps & {};\n","import styled from 'styled-components';\nimport { StyledLineChartProps } from './types';\nimport { ChartContainer } from '../ChartContainer';\nimport { Theme } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledLineChart = styled(ChartContainer)<StyledLineChartProps>``;\n\nexport const StyledLineChartEmptyText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > span {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n }\n`;\n","/**\n * @internal\n * Loading skeleton rendered by LineChart while data is fetching. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject } from 'react';\n\nimport { LineChartProps } from './types';\nimport { StyledLineChart } from './styles';\n\nexport const LoadingLineChart = forwardRef<HTMLDivElement, LineChartProps>((props, ref) => {\n const { className, ...forwardedProps } = props;\n\n return (\n <StyledLineChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n Loading...\n </StyledLineChart>\n );\n});\n","import { ScaleLinear as d3ScaleLinear } from 'd3';\n\nimport { CoordinatesCategoryData, CoordinatesCategoryDatum, Statistics, TwoCategoryData } from '../../types';\n\nimport { ChartSize } from '../../types';\nimport { LineChartDimensions } from './types';\nimport { SortingMethod, getSortingMethod } from '../../utils';\n\nexport const sizeToDimension = (size: ChartSize | LineChartDimensions): LineChartDimensions => {\n if (typeof size !== 'string') {\n return size;\n }\n\n switch (size) {\n case ChartSize.small:\n return { width: 600, height: 300, fontSize: 30 };\n case ChartSize.medium:\n default:\n return { width: 750, height: 375, fontSize: 34 };\n case ChartSize.large:\n return { width: 900, height: 450, fontSize: 38 };\n }\n};\n\nexport const BASE_NUMBER_OF_TICKS = 20;\n\nexport const getClosestLineIndex = (value: number, scale: d3ScaleLinear<number, number, never>) => {\n const ticks = scale.ticks(BASE_NUMBER_OF_TICKS);\n const delta = ticks[1] - ticks[0];\n const index = Math.round(value / delta);\n const roundValue = index * delta;\n return [index, roundValue];\n};\n\nexport const group = (\n data: CoordinatesCategoryData,\n x: d3ScaleLinear<number, number, never>,\n y: d3ScaleLinear<number, number, never>\n) => {\n const groupDict: Record<\n string,\n {\n category: string;\n x: number;\n y: number;\n data: CoordinatesCategoryDatum;\n points: CoordinatesCategoryData;\n }\n > = {};\n\n data.forEach((d) => {\n const [i, rx] = getClosestLineIndex(d.key[0], x);\n const [j, ry] = getClosestLineIndex(d.key[1], y);\n\n const key = `${i}_${j}_${d.key[2]}`;\n if (!(key in groupDict)) {\n groupDict[key] = {\n category: d.key[2] as string,\n x: rx,\n y: ry,\n data: {\n key: d.key,\n value: 0,\n },\n points: [],\n };\n }\n\n groupDict[key].points.push(d);\n groupDict[key].data.value += 1;\n });\n\n return Object.values(groupDict);\n};\n\nexport const countBy = (arr: CoordinatesCategoryData, sortingMethod: SortingMethod) => {\n const counts = arr.reduce(\n (prev, curr) => ((prev[curr.key[2] as string] = ++(prev[curr.key[2] as string] as number) || 1), prev),\n {} as Record<string, number>\n );\n\n return Object.keys(counts)\n .map((key) => ({ key: key, value: counts[key] as number }))\n .sort(getSortingMethod(sortingMethod));\n};\n\nexport const statsBy: (arr: TwoCategoryData, sortingMethod: SortingMethod) => Statistics = (arr, sortingMethod) => {\n const counts = arr.reduce((prev, curr) => {\n if (!curr.value) {\n return prev;\n }\n if (!prev[curr.key[1] as string]) {\n prev[curr.key[1] as string] = {\n value: curr.value,\n min: curr.value,\n max: curr.value,\n values: [curr.value],\n };\n } else {\n prev[curr.key[1] as string] = {\n value: prev[curr.key[1] as string].value + curr.value,\n min: Math.min(prev[curr.key[1] as string].min, curr.value),\n max: Math.max(prev[curr.key[1] as string].max, curr.value),\n values: [...prev[curr.key[1] as string].values, curr.value],\n };\n }\n return prev;\n }, {} as Record<string, { value: number; min: number; max: number; values: number[] }>);\n\n return Object.keys(counts)\n .map((key) => ({\n key: key,\n value: counts[key].value,\n min: counts[key].min,\n max: counts[key].max,\n values: counts[key].values,\n first: counts[key].values[0],\n last: counts[key].values[counts[key].values.length - 1],\n trending: {\n overall:\n ((counts[key].values[counts[key].values.length - 1] - counts[key].values[0]) * 100) / counts[key].values[0],\n },\n }))\n .sort(getSortingMethod(sortingMethod));\n};\n","/**\n * @internal\n * Empty state rendered by LineChart when data is absent. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport { scaleLinear as d3scaleLinear } from 'd3';\n\nimport { AnyScale, JSONArray } from '../../types';\nimport { LineChartProps } from './types';\nimport { StyledLineChart, StyledLineChartEmptyText } from './styles';\nimport { Axis } from '../Axis';\nimport { sizeToDimension } from './utils';\nimport { useTheme } from '@redsift/design-system';\n\nexport const EmptyLineChart = forwardRef<HTMLDivElement, LineChartProps>((props, ref) => {\n const { className, data: propsData, emptyComponent, localeText, size, svgRef, ...forwardedProps } = props;\n const theme = useTheme();\n\n const cache = useRef<JSONArray>(undefined);\n\n const data = propsData;\n\n useEffect(() => {\n cache.current = data;\n });\n\n const chartDimensions = sizeToDimension(size!);\n const width = chartDimensions.width;\n const height = chartDimensions.height;\n const margins = { top: 16, left: 48, right: 16, bottom: 48 };\n const chartWidth = width - margins.left - margins.right;\n\n return (\n <StyledLineChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n {emptyComponent ?? (\n <>\n <StyledLineChartEmptyText $maxWidth={width} $textSize={chartDimensions.fontSize / 2} $theme={theme}>\n <span>{localeText?.emptyChartText}</span>\n </StyledLineChartEmptyText>\n <svg ref={svgRef as RefObject<SVGSVGElement>} width={width} height={height}>\n <g transform={`translate(${margins.left},${margins.top})`}>\n <Axis\n position=\"bottom\"\n length={width - 32}\n scale={d3scaleLinear().domain([]).range([0, chartWidth]) as AnyScale}\n x={0}\n y={height}\n tickValues={4}\n />\n </g>\n </svg>\n </>\n )}\n </StyledLineChart>\n );\n});\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/**\n * @internal\n * Internal renderer used by LineChart when data is present. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport {\n extent as d3extent,\n scaleLinear as d3scaleLinear,\n scalePoint as d3scalePoint,\n scaleTime as d3scaleTime,\n line as d3line,\n ScaleTime as d3ScaleTime,\n} from 'd3';\n\nimport { Flexbox, useTheme, useMessageFormatter } from '@redsift/design-system';\nimport intlMessages from './intl';\n\nimport { AnyScale, DotDatum, LegendItemDatum, LegendVariant, LinePointDatum, TwoCategoryData } from '../../types';\nimport { LineChartLegendVariant, LineChartProps } from './types';\nimport { StyledLineChart } from './styles';\nimport { useColor } from '../../hooks';\nimport { Axis, AxisVariant } from '../Axis';\nimport { Legend } from '../Legend';\nimport { Dot, DotVariant } from '../Dot';\nimport { statsBy, sizeToDimension } from './utils';\nimport { Line } from '../Line';\nimport { getSortingMethod, isValidDate, mergeLegends } from '../../utils';\n\ninterface RenderedLineChartProps extends Required<Pick<LineChartProps, 'data'>>, Omit<LineChartProps, 'data'> {}\n\nexport const RenderedLineChart = forwardRef<HTMLDivElement, RenderedLineChartProps>((props, ref) => {\n const {\n className,\n data: propsData,\n dotRole,\n disableAnimations,\n getDotAnchorProps,\n id,\n isDotSelected,\n labelDecorator,\n legendDecorator,\n legendVariant,\n legendProps,\n margins: propsMargins,\n onDotClick,\n size,\n sortingMethod,\n svgRef,\n colorTheme,\n tooltipDecorator,\n tooltipVariant,\n xAxisVariant,\n xAxisPlacement,\n xAxisTickFormat: propsXAxisTickFormat,\n xAxisTickPadding,\n xAxisTickRotation,\n xAxisTickSize,\n xAxisTickValues,\n xAxisMinValue,\n xAxisMaxValue,\n xAxisTickRemodelling,\n yAxisVariant,\n yAxisPlacement,\n yAxisTickFormat,\n yAxisTickPadding,\n yAxisTickRotation,\n yAxisTickSize,\n yAxisTickValues,\n yAxisMinValue,\n yAxisMaxValue,\n yAxisTickRemodelling,\n dateParser,\n ...forwardedProps\n } = props;\n\n const cache = useRef<TwoCategoryData>(undefined);\n const theme = useTheme();\n\n const format = useMessageFormatter(intlMessages);\n\n const xScaleType: 'number' | 'string' | 'Date' | 'dateString' | undefined =\n propsData[0].key[0] instanceof Date\n ? 'Date'\n : typeof propsData[0].key[0] === 'number'\n ? 'number'\n : typeof propsData[0].key[0] === 'string' && isValidDate(propsData[0].key[0])\n ? 'dateString'\n : typeof propsData[0].key[0] === 'string'\n ? 'string'\n : undefined;\n const data =\n xScaleType === 'number'\n ? propsData.filter((datum) => typeof datum.key[0] === 'number' && !Number.isNaN(datum.key[0]))\n : xScaleType === 'dateString'\n ? propsData.filter((datum) => isValidDate(datum.key[0] as string))\n : xScaleType === 'string'\n ? propsData.filter((datum) => typeof datum.key[0] === 'string')\n : xScaleType === 'Date'\n ? propsData.filter((datum) => datum.key[0] instanceof Date)\n : propsData;\n\n useEffect(() => {\n cache.current = data;\n });\n\n const chartDimensions = sizeToDimension(size!);\n const width = chartDimensions.width;\n const height = chartDimensions.height;\n const margins = {\n top: xAxisVariant === AxisVariant.default || xAxisVariant === AxisVariant.tickValue ? 24 : 8,\n left: yAxisVariant === AxisVariant.default || yAxisVariant === AxisVariant.tickValue ? 48 : 8,\n right: yAxisVariant === AxisVariant.default || yAxisVariant === AxisVariant.tickValue ? 48 : 8,\n bottom: xAxisVariant === AxisVariant.default || xAxisVariant === AxisVariant.tickValue ? 24 : 8,\n ...propsMargins,\n };\n const chartHeight = height - margins.top - margins.bottom;\n const chartWidth = width - margins.left - margins.right;\n\n const scaleX = (() => {\n if (xScaleType === 'number') {\n const domain = d3extent(data, (d) => d.key[0] as number) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleLinear().domain(domain).range([0, chartWidth]).nice();\n } else if (xScaleType === 'dateString') {\n const domain = d3extent(data, (d) => Date.parse(d.key[0] as string)) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleTime()\n .domain([new Date(domain[0]), new Date(domain[1])])\n .range([0, chartWidth])\n .nice();\n } else if (xScaleType === 'Date') {\n const domain = d3extent(data, (d) => (d.key[0] as Date).valueOf()) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleTime()\n .domain([new Date(domain[0]), new Date(domain[1])])\n .range([0, chartWidth])\n .nice();\n } else {\n const domain =\n xAxisTickValues && Array.isArray(xAxisTickValues)\n ? (xAxisTickValues as string[])\n : data.map((d) => d.key[0] as string);\n domain[0] = (xAxisMinValue as string) ?? domain[0];\n domain[1] = (xAxisMaxValue as string) ?? domain[1];\n return d3scalePoint().domain(domain).range([0, chartWidth]);\n }\n })();\n const scaleY = (() => {\n const domain = d3extent(data, (d) => d.value) as [number, number];\n domain[0] = (yAxisMinValue as number) ?? domain[0];\n domain[1] = (yAxisMaxValue as number) ?? domain[1];\n return d3scaleLinear().domain(domain).range([chartHeight, 0]).nice();\n })();\n const xAxisTickFormat =\n propsXAxisTickFormat ??\n (xScaleType === 'Date' || xScaleType === 'dateString'\n ? (scaleX as d3ScaleTime<number, number, never>).tickFormat()\n : undefined);\n\n const hasCategory = data[0] && data[0].key.length >= 2 && data[0].key[1] !== null && data[0].key[1] !== undefined;\n const statsByCategory = statsBy(data, sortingMethod!);\n const colorScale = useColor({\n data: statsByCategory,\n colorTheme: colorTheme!,\n category: (d) => d.key as string,\n theme,\n });\n\n const circles = data\n .sort((a, b) => {\n if (xScaleType === 'number') {\n if (a.key[0] < b.key[0]) return -1;\n if (a.key[0] > b.key[0]) return 1;\n return 0;\n } else if (xScaleType === 'dateString') {\n if (Date.parse(a.key[0] as string) < Date.parse(b.key[0] as string)) return -1;\n if (Date.parse(a.key[0] as string) > Date.parse(b.key[0] as string)) return 1;\n return 0;\n } else if (xScaleType === 'Date') {\n if ((a.key[0] as Date).valueOf() < (b.key[0] as Date).valueOf()) return -1;\n if ((a.key[0] as Date).valueOf() > (b.key[0] as Date).valueOf()) return 1;\n return 0;\n } else if (xScaleType === 'string' && xAxisTickValues && Array.isArray(xAxisTickValues)) {\n if (xAxisTickValues.indexOf(a.key[0]) < xAxisTickValues.indexOf(b.key[0])) return -1;\n if (xAxisTickValues.indexOf(a.key[0]) > xAxisTickValues.indexOf(b.key[0])) return 1;\n return 0;\n }\n return 0;\n })\n .filter((d) => d.value !== null)\n .map((d) => ({\n category: d.key[1] ?? 'default',\n x:\n xScaleType === 'dateString'\n ? dateParser\n ? dateParser(d.key[0] as string)\n : new Date(Date.parse(d.key[0] as string))\n : d.key[0],\n y: d.value,\n data: {\n key: d.key,\n value: d.value,\n },\n points: [d],\n }));\n const lines = hasCategory\n ? Object.values(\n circles.reduce((prev, curr: (typeof circles)[number]) => {\n if (!prev[curr.category!]) {\n prev[curr.category!] = [];\n }\n prev[curr.category!].push(curr);\n return prev;\n }, {} as Record<string, typeof circles>)\n )\n : [circles];\n\n const createLine = d3line<LinePointDatum>()\n .x((d) => scaleX(d.x as any) as any)\n .y((d) => scaleY(d.y as any));\n\n const categories: string[] = [];\n const pivotedTable = circles.reduce((acc, item) => {\n const { x, category, y } = item;\n if (!categories.includes(category)) {\n categories.push(category);\n }\n let formattedKey = xAxisTickFormat ? xAxisTickFormat(x as any) : x.toString();\n formattedKey = Array.isArray(formattedKey) ? formattedKey.join(' ') : formattedKey;\n\n let entry = acc.find((e) => e.key === formattedKey);\n if (!entry) {\n entry = { key: formattedKey };\n acc.push(entry);\n }\n\n entry[category] = y;\n\n return acc;\n }, [] as Array<Record<string, string | number | null | undefined> & { key: string }>);\n\n const { extraLegendItems, ...forwardedLegendProps } = legendProps || {};\n\n return (\n <StyledLineChart\n mode={typeof onDotClick === 'function' || typeof getDotAnchorProps === 'function' ? 'interactive' : 'static'}\n definition={\n hasCategory\n ? format('definition-linear-with-categories', {\n categoryLength: categories.length,\n circleLength: circles.length,\n })\n : format('definition-linear', { circleLength: circles.length })\n }\n xAxisDefinition={\n xScaleType !== 'string'\n ? format(`x-axis-${xScaleType === 'number' ? 'numbers' : 'dates'}-definition`, {\n numAxis: xAxisPlacement === 'both' ? 2 : 1,\n start: scaleX.domain()[0],\n end: scaleX.domain()[1],\n })\n : format('x-axis-categories-definition', { numAxis: xAxisPlacement === 'both' ? 2 : 1 })\n }\n yAxisDefinition={format('y-axis-numbers-definition', {\n numAxis: yAxisPlacement === 'both' ? 2 : 1,\n start: scaleY.domain()[0],\n end: scaleY.domain()[1],\n })}\n dataTableRepresentation={\n hasCategory\n ? {\n header: (\n <thead>\n <tr>\n <th scope=\"col\">{xScaleType === 'Date' || xScaleType === 'dateString' ? 'Date' : 'Key'}</th>\n {categories.map((category) => (\n <th key={category} scope=\"col\">\n {category}\n </th>\n ))}\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {pivotedTable.map((row) => (\n <tr key={row.key}>\n <th scope=\"row\">{row.key}</th>\n {categories.map((category) => (\n <th key={`${row.key}-${category}-${row[category]}`} scope=\"col\">\n {row[category]}\n </th>\n ))}\n </tr>\n ))}\n </tbody>\n ),\n }\n : {\n header: (\n <thead>\n <tr>\n <th scope=\"col\">{xScaleType === 'Date' || xScaleType === 'dateString' ? 'Date' : 'Key'}</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {circles.map((datum) => {\n let key = xAxisTickFormat ? xAxisTickFormat(datum.x as any) : datum.x.toString();\n key = Array.isArray(key) ? key.join(' ') : key;\n\n return (\n <tr key={key}>\n <th scope=\"row\">{key}</th>\n <td>{datum.y}</td>\n </tr>\n );\n })}\n </tbody>\n ),\n }\n }\n {...forwardedProps}\n id={id}\n className={className}\n ref={ref as RefObject<HTMLDivElement>}\n >\n <Flexbox flexDirection=\"column\" alignItems=\"center\" gap=\"8\">\n <svg\n ref={svgRef as RefObject<SVGSVGElement>}\n width={width}\n height={height}\n aria-label={\n typeof onDotClick === 'function' || typeof getDotAnchorProps === 'function'\n ? format('interactive-chart')\n : format('static-chart')\n }\n >\n <g transform={`translate(${margins.left},${margins.top})`} aria-hidden=\"true\">\n {lines.map((line, index) => {\n return (\n <Line\n color={colorScale?.(line[0].category!)}\n data={line.filter((point) => point.y !== null) as any}\n disableAnimations={disableAnimations}\n createLine={createLine}\n key={`line _${index}`}\n />\n );\n })}\n </g>\n {categories.map((category, categoryIndex) => {\n const filteredCircles = circles.filter((circle) => circle.category === category);\n return (\n <g\n key={`${id}-series-${category}`}\n transform={`translate(${margins.left},${margins.top})`}\n role=\"region\"\n {...(hasCategory\n ? {\n 'aria-label': `${category}, category ${categoryIndex + 1} of ${categories.length} with ${\n filteredCircles.length\n } circles`,\n }\n : {})}\n >\n {filteredCircles.map((circle, index) => {\n const scaleXDomain = scaleX.domain();\n const scaleYDomain = scaleY.domain();\n\n if (\n xScaleType === 'number' &&\n (circle.x! < scaleXDomain[0] ||\n circle.x! > scaleXDomain[1] ||\n circle.y! < scaleYDomain[0] ||\n circle.y! > scaleYDomain[1])\n ) {\n return null;\n }\n\n const to = {\n ...circle,\n r: 4,\n };\n\n return (\n <Dot\n id={`id${id}__circle-${categoryIndex}.${index}`}\n color={colorScale?.(circle.category!)}\n data={to}\n dataset={circles}\n isSelected={Boolean(isDotSelected?.(to))}\n anchorProps={getDotAnchorProps ? getDotAnchorProps(to) : undefined}\n key={`circle _${categoryIndex}.${index}`}\n labelDecorator={labelDecorator}\n onClick={onDotClick}\n role={dotRole}\n scaleX={scaleX}\n scaleY={scaleY}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n variant={DotVariant.hollow}\n />\n );\n })}\n </g>\n );\n })}\n <g transform={`translate(${margins.left},${margins.top})`}>\n {['bottom', 'both'].includes(xAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"bottom\"\n length={chartWidth}\n scale={scaleX as AnyScale}\n x={0}\n y={chartHeight}\n tickValues={xAxisTickValues ?? 8}\n tickPadding={xAxisTickPadding}\n tickRotation={xAxisTickRotation}\n tickSize={xAxisTickSize}\n tickFormat={xAxisTickFormat}\n tickRemodelling={xAxisTickRemodelling}\n variant={xAxisVariant}\n />\n ) : null}\n {['top', 'both'].includes(xAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"top\"\n length={chartWidth}\n scale={scaleX as AnyScale}\n x={0}\n y={0}\n tickValues={xAxisTickValues ?? 8}\n tickPadding={xAxisTickPadding}\n tickRotation={xAxisTickRotation}\n tickSize={xAxisTickSize}\n tickFormat={xAxisTickFormat}\n tickRemodelling={xAxisTickRemodelling}\n variant={xAxisVariant}\n />\n ) : null}\n {['left', 'both'].includes(yAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"left\"\n length={chartHeight}\n scale={scaleY as AnyScale}\n x={0}\n y={chartHeight}\n tickValues={yAxisTickValues ?? 8}\n tickPadding={yAxisTickPadding}\n tickRotation={yAxisTickRotation}\n tickSize={yAxisTickSize}\n tickFormat={yAxisTickFormat}\n tickRemodelling={yAxisTickRemodelling}\n variant={yAxisVariant}\n />\n ) : null}\n {['right', 'both'].includes(yAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"right\"\n length={chartHeight}\n scale={scaleY as AnyScale}\n x={chartWidth}\n y={chartHeight}\n tickValues={yAxisTickValues ?? 8}\n tickPadding={yAxisTickPadding}\n tickRotation={yAxisTickRotation}\n tickSize={yAxisTickSize}\n tickFormat={yAxisTickFormat}\n tickRemodelling={yAxisTickRemodelling}\n variant={yAxisVariant}\n />\n ) : null}\n </g>\n </svg>\n </Flexbox>\n {hasCategory && legendVariant !== LineChartLegendVariant.none ? (\n <Legend\n data={(extraLegendItems\n ? mergeLegends(extraLegendItems, statsByCategory).sort(getSortingMethod(sortingMethod!))\n : statsByCategory\n ).map((d) => ({\n ...d,\n color: colorScale?.(d.key)!,\n }))}\n variant={\n legendVariant === LineChartLegendVariant.externalLabelValue\n ? LegendVariant.value\n : legendVariant === LineChartLegendVariant.externalLabelPercent\n ? LegendVariant.percent\n : legendVariant === LineChartLegendVariant.externalLabel\n ? LegendVariant.label\n : LegendVariant.custom\n }\n legendDecorator={\n legendDecorator\n ? (datum: LegendItemDatum, props) => legendDecorator(datum as unknown as DotDatum, props)\n : undefined\n }\n {...forwardedLegendProps}\n />\n ) : null}\n </StyledLineChart>\n );\n});\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport { Comp, useId } from '@redsift/design-system';\n\nimport { ChartSize, ColorTheme, TooltipVariant } from '../../types';\nimport { LineChartLegendVariant, LineChartProps } from './types';\nimport { LoadingLineChart } from './LoadingLineChart';\nimport { EmptyLineChart } from './EmptyLineChart';\nimport { RenderedLineChart } from './RenderedLineChart';\nimport { AxisVariant } from '../Axis';\n\nconst COMPONENT_NAME = 'LineChart';\nconst CLASSNAME = 'redsift-line-chart';\n\n/**\n * LineChart displays trends over time or continuous data.\n * Built on D3.js with smooth interpolation and interactive data points.\n *\n * This is the only public entry point for line charts. Do not import\n * `RenderedLineChart`, `EmptyLineChart`, or `LoadingLineChart` directly —\n * those are internal sub-components that `LineChart` selects automatically\n * based on whether `data` is present and non-empty.\n *\n * Data format: `LinearData` `[{ key: Date, value: number, label?: string }]`\n *\n * @example\n * // Basic line chart with time data\n * const data = [\n * { key: new Date('2024-01'), value: 100, label: 'January' },\n * { key: new Date('2024-02'), value: 150, label: 'February' },\n * { key: new Date('2024-03'), value: 125, label: 'March' },\n * ];\n * <LineChart data={data} size=\"medium\" />\n *\n * @example\n * // With tooltips and click handler\n * <LineChart\n * data={timeSeriesData}\n * tooltipVariant=\"value\"\n * onDotClick={(d) => showDetails(d)}\n * />\n *\n * @example\n * // Multiple lines with legend (TwoCategoryData format)\n * const multiSeriesData = [\n * { key: [new Date('2024-01'), 'Series A'], value: 100 },\n * { key: [new Date('2024-01'), 'Series B'], value: 80 },\n * { key: [new Date('2024-02'), 'Series A'], value: 120 },\n * { key: [new Date('2024-02'), 'Series B'], value: 95 },\n * ];\n * <LineChart\n * data={multiSeriesData}\n * legendVariant=\"externalLabel\"\n * colorTheme=\"dark\"\n * />\n *\n * @example\n * // Customize axis placement and variant\n * <LineChart\n * data={data}\n * xAxisPlacement=\"top\"\n * yAxisPlacement=\"right\"\n * xAxisVariant=\"minimal\"\n * />\n */\n\nexport const LineChart: Comp<LineChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n className,\n colorTheme = ColorTheme.dark,\n data: propsData,\n dotRole,\n emptyComponent,\n id: propsId,\n isDotSelected,\n labelDecorator,\n legendDecorator,\n legendVariant: propsLegendVariant,\n localeText = { emptyChartText: 'No Data' },\n onDotClick,\n size = ChartSize.medium,\n sortingMethod = 'desc-value',\n svgRef,\n tooltipDecorator,\n tooltipVariant = TooltipVariant.none,\n xAxisPlacement = 'bottom',\n xAxisVariant = AxisVariant.default,\n yAxisPlacement = 'left',\n yAxisVariant = AxisVariant.default,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const legendVariant = propsLegendVariant ?? LineChartLegendVariant.externalLabel;\n\n if (propsData === undefined || propsData === null) {\n return <LoadingLineChart id={id} {...forwardedProps} ref={ref} />;\n }\n\n if (propsData.length === 0) {\n return (\n <EmptyLineChart\n data={propsData}\n emptyComponent={emptyComponent}\n localeText={localeText}\n size={size}\n sortingMethod={sortingMethod}\n svgRef={svgRef}\n xAxisPlacement={xAxisPlacement}\n xAxisVariant={xAxisVariant}\n yAxisPlacement={yAxisPlacement}\n yAxisVariant={yAxisVariant}\n {...forwardedProps}\n ref={ref}\n />\n );\n }\n\n return (\n <RenderedLineChart\n className={classNames(LineChart.className, className)}\n colorTheme={colorTheme}\n data={propsData}\n dotRole={dotRole}\n id={id}\n isDotSelected={isDotSelected}\n labelDecorator={labelDecorator}\n legendDecorator={legendDecorator}\n legendVariant={legendVariant}\n onDotClick={onDotClick}\n size={size}\n sortingMethod={sortingMethod}\n svgRef={svgRef}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n xAxisPlacement={xAxisPlacement}\n xAxisVariant={xAxisVariant}\n yAxisPlacement={yAxisPlacement}\n yAxisVariant={yAxisVariant}\n {...forwardedProps}\n ref={ref}\n />\n );\n});\nLineChart.className = CLASSNAME;\nLineChart.displayName = COMPONENT_NAME;\n"],"names":["LineChartLegendVariant","none","externalLabel","externalLabelValue","externalLabelPercent","custom","StyledLineChart","styled","ChartContainer","StyledLineChartEmptyText","div","_ref","$maxWidth","_ref2","$theme","_ref3","$textSize","_ref4","LoadingLineChart","forwardRef","props","ref","className","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","_extends","sizeToDimension","size","ChartSize","small","width","height","fontSize","medium","large","statsBy","arr","sortingMethod","counts","reduce","prev","curr","value","key","min","max","values","Math","Object","keys","map","first","last","length","trending","overall","sort","getSortingMethod","EmptyLineChart","data","propsData","emptyComponent","localeText","svgRef","theme","useTheme","cache","useRef","undefined","useEffect","current","chartDimensions","margins","top","left","right","bottom","chartWidth","Fragment","emptyChartText","transform","Axis","position","scale","d3scaleLinear","domain","range","x","y","tickValues","enUS","frFR","RenderedLineChart","dotRole","disableAnimations","getDotAnchorProps","id","isDotSelected","labelDecorator","legendDecorator","legendVariant","legendProps","propsMargins","onDotClick","colorTheme","tooltipDecorator","tooltipVariant","xAxisVariant","xAxisPlacement","xAxisTickFormat","propsXAxisTickFormat","xAxisTickPadding","xAxisTickRotation","xAxisTickSize","xAxisTickValues","xAxisMinValue","xAxisMaxValue","xAxisTickRemodelling","yAxisVariant","yAxisPlacement","yAxisTickFormat","yAxisTickPadding","yAxisTickRotation","yAxisTickSize","yAxisTickValues","yAxisMinValue","yAxisMaxValue","yAxisTickRemodelling","dateParser","format","useMessageFormatter","intlMessages","xScaleType","Date","isValidDate","filter","datum","Number","isNaN","_objectSpread","AxisVariant","default","tickValue","chartHeight","scaleX","d3extent","d","nice","parse","d3scaleTime","_ref5","_ref6","valueOf","_ref7","_ref8","Array","isArray","d3scalePoint","scaleY","_ref9","_ref10","tickFormat","hasCategory","statsByCategory","colorScale","useColor","category","circles","a","b","indexOf","_d$key$","points","lines","push","createLine","d3line","categories","pivotedTable","acc","item","includes","formattedKey","toString","join","entry","find","e","_ref11","extraLegendItems","forwardedLegendProps","_excluded2","mode","definition","categoryLength","circleLength","xAxisDefinition","numAxis","start","end","yAxisDefinition","dataTableRepresentation","header","scope","body","row","Flexbox","flexDirection","alignItems","gap","line","index","Line","color","point","categoryIndex","filteredCircles","circle","role","scaleXDomain","scaleYDomain","to","r","Dot","dataset","isSelected","Boolean","anchorProps","onClick","variant","DotVariant","hollow","tickPadding","tickRotation","tickSize","tickRemodelling","Legend","mergeLegends","LegendVariant","percent","label","COMPONENT_NAME","CLASSNAME","LineChart","ColorTheme","dark","propsId","propsLegendVariant","TooltipVariant","_id","useId","classNames","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LineChart2.js","sources":["../../src/components/LineChart/types.ts","../../src/components/LineChart/styles.ts","../../src/components/LineChart/LoadingLineChart.tsx","../../src/components/LineChart/utils.ts","../../src/components/LineChart/EmptyLineChart.tsx","../../src/components/LineChart/intl/index.ts","../../src/components/LineChart/RenderedLineChart.tsx","../../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import {\n ChartDimensions,\n ChartSize,\n ChartTheme,\n TooltipVariant,\n DotDatum,\n TwoCategoryData,\n ChartAxesProps,\n MarginProps,\n Statistics,\n} from '../../types';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ChartContainerProps } from '../ChartContainer';\nimport { ReactElement, ReactNode, RefObject } from 'react';\nimport { DotProps } from '../Dot';\nimport { LegendProps } from '../Legend';\nimport { SortingMethod } from '../../utils';\nimport { AnchorProps } from '../DataPoint';\n\n/**\n * Component's labels variant.\n */\nexport const LineChartLegendVariant = {\n none: 'none',\n externalLabel: 'externalLabel',\n externalLabelValue: 'externalLabelValue',\n externalLabelPercent: 'externalLabelPercent',\n custom: 'custom',\n} as const;\nexport type LineChartLegendVariant = ValueOf<typeof LineChartLegendVariant>;\n\ninterface LocaleText {\n emptyChartText: string;\n}\n\nexport type LineChartDimensions = ChartDimensions & {\n fontSize: number;\n};\n\n/**\n * Component props.\n */\nexport interface LineChartProps extends ChartContainerProps, ChartAxesProps {\n /** Dataset to use to generate the chart. */\n data?: TwoCategoryData;\n /** Dot role. If an onClick is provided, the dots will have the role `button`. For a navigation link, please use `getDotAnchorProps` instead. */\n dotRole?: DotProps['role'];\n /** Component to use if the chart is empty (replacing the default one). */\n emptyComponent?: ReactNode;\n /** Method used to define the anchor props to use when the dot is a navigation link. */\n getDotAnchorProps?: (datum: DotDatum) => AnchorProps;\n /** Method to determine whether a dot is selected or not. */\n isDotSelected?: (datum: DotDatum) => boolean | undefined;\n /** Method to override the data point labels. */\n labelDecorator?: (\n datum: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Method modifying what's displayed within the legend when the legendVariant is \"custom\". */\n legendDecorator?: (\n datum: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Define whether the labels should be displayed inside or outside the charts and if they should contain raw or percentage values. If set to \"custom\", use `legendDecorator` to customize it. */\n legendVariant?: LineChartLegendVariant;\n /** Props to forward to the Legend block. Can be used to make the legend selectable. */\n legendProps?: Omit<LegendProps, 'data' | 'ref' | 'variant' | 'width'> & { extraLegendItems?: Statistics };\n /** Labels and texts. */\n localeText?: LocaleText;\n /** Custom margins, used to give more space for axes labels and legend for instance. */\n margins?: MarginProps;\n /** Method to be called on a click on a dot. For a navigation link, please use `getDotAnchorProps` instead. */\n onDotClick?: (datum: DotDatum) => void;\n /** LineChart size. */\n size?: ChartSize | LineChartDimensions;\n /** Define how to sort categories. */\n sortingMethod?: SortingMethod;\n /** Reference to the SVG tag. */\n svgRef?: RefObject<SVGSVGElement | null>;\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: ChartTheme;\n /** Method modifying what's displayed within the tooltip when the tooltipVariant is \"custom\". */\n tooltipDecorator?: (\n data: DotDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Tooltip variant. */\n tooltipVariant?: TooltipVariant;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledLineChartProps = LineChartProps & {};\n","import styled from 'styled-components';\nimport { StyledLineChartProps } from './types';\nimport { ChartContainer } from '../ChartContainer';\nimport { Theme } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledLineChart = styled(ChartContainer)<StyledLineChartProps>``;\n\nexport const StyledLineChartEmptyText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > span {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n }\n`;\n","/**\n * @internal\n * Loading skeleton rendered by LineChart while data is fetching. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject } from 'react';\n\nimport { LineChartProps } from './types';\nimport { StyledLineChart } from './styles';\n\nexport const LoadingLineChart = forwardRef<HTMLDivElement, LineChartProps>((props, ref) => {\n const { className, ...forwardedProps } = props;\n\n return (\n <StyledLineChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n Loading...\n </StyledLineChart>\n );\n});\n","import { ScaleLinear as d3ScaleLinear } from 'd3';\n\nimport { CoordinatesCategoryData, CoordinatesCategoryDatum, Statistics, TwoCategoryData } from '../../types';\n\nimport { ChartSize } from '../../types';\nimport { LineChartDimensions } from './types';\nimport { SortingMethod, getSortingMethod } from '../../utils';\n\nexport const sizeToDimension = (size: ChartSize | LineChartDimensions): LineChartDimensions => {\n if (typeof size !== 'string') {\n return size;\n }\n\n switch (size) {\n case ChartSize.small:\n return { width: 600, height: 300, fontSize: 30 };\n case ChartSize.medium:\n default:\n return { width: 750, height: 375, fontSize: 34 };\n case ChartSize.large:\n return { width: 900, height: 450, fontSize: 38 };\n }\n};\n\nexport const BASE_NUMBER_OF_TICKS = 20;\n\nexport const getClosestLineIndex = (value: number, scale: d3ScaleLinear<number, number, never>) => {\n const ticks = scale.ticks(BASE_NUMBER_OF_TICKS);\n const delta = ticks[1] - ticks[0];\n const index = Math.round(value / delta);\n const roundValue = index * delta;\n return [index, roundValue];\n};\n\nexport const group = (\n data: CoordinatesCategoryData,\n x: d3ScaleLinear<number, number, never>,\n y: d3ScaleLinear<number, number, never>\n) => {\n const groupDict: Record<\n string,\n {\n category: string;\n x: number;\n y: number;\n data: CoordinatesCategoryDatum;\n points: CoordinatesCategoryData;\n }\n > = {};\n\n data.forEach((d) => {\n const [i, rx] = getClosestLineIndex(d.key[0], x);\n const [j, ry] = getClosestLineIndex(d.key[1], y);\n\n const key = `${i}_${j}_${d.key[2]}`;\n if (!(key in groupDict)) {\n groupDict[key] = {\n category: d.key[2] as string,\n x: rx,\n y: ry,\n data: {\n key: d.key,\n value: 0,\n },\n points: [],\n };\n }\n\n groupDict[key].points.push(d);\n groupDict[key].data.value += 1;\n });\n\n return Object.values(groupDict);\n};\n\nexport const countBy = (arr: CoordinatesCategoryData, sortingMethod: SortingMethod) => {\n const counts = arr.reduce(\n (prev, curr) => ((prev[curr.key[2] as string] = ++(prev[curr.key[2] as string] as number) || 1), prev),\n {} as Record<string, number>\n );\n\n return Object.keys(counts)\n .map((key) => ({ key: key, value: counts[key] as number }))\n .sort(getSortingMethod(sortingMethod));\n};\n\nexport const statsBy: (arr: TwoCategoryData, sortingMethod: SortingMethod) => Statistics = (arr, sortingMethod) => {\n const counts = arr.reduce((prev, curr) => {\n if (!curr.value) {\n return prev;\n }\n if (!prev[curr.key[1] as string]) {\n prev[curr.key[1] as string] = {\n value: curr.value,\n min: curr.value,\n max: curr.value,\n values: [curr.value],\n };\n } else {\n prev[curr.key[1] as string] = {\n value: prev[curr.key[1] as string].value + curr.value,\n min: Math.min(prev[curr.key[1] as string].min, curr.value),\n max: Math.max(prev[curr.key[1] as string].max, curr.value),\n values: [...prev[curr.key[1] as string].values, curr.value],\n };\n }\n return prev;\n }, {} as Record<string, { value: number; min: number; max: number; values: number[] }>);\n\n return Object.keys(counts)\n .map((key) => ({\n key: key,\n value: counts[key].value,\n min: counts[key].min,\n max: counts[key].max,\n values: counts[key].values,\n first: counts[key].values[0],\n last: counts[key].values[counts[key].values.length - 1],\n trending: {\n overall:\n ((counts[key].values[counts[key].values.length - 1] - counts[key].values[0]) * 100) / counts[key].values[0],\n },\n }))\n .sort(getSortingMethod(sortingMethod));\n};\n","/**\n * @internal\n * Empty state rendered by LineChart when data is absent. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport { scaleLinear as d3scaleLinear } from 'd3';\n\nimport { AnyScale, JSONArray } from '../../types';\nimport { LineChartProps } from './types';\nimport { StyledLineChart, StyledLineChartEmptyText } from './styles';\nimport { Axis } from '../Axis';\nimport { sizeToDimension } from './utils';\nimport { useTheme } from '@redsift/design-system';\n\nexport const EmptyLineChart = forwardRef<HTMLDivElement, LineChartProps>((props, ref) => {\n const { className, data: propsData, emptyComponent, localeText, size, svgRef, ...forwardedProps } = props;\n const theme = useTheme();\n\n const cache = useRef<JSONArray>(undefined);\n\n const data = propsData;\n\n useEffect(() => {\n cache.current = data;\n });\n\n const chartDimensions = sizeToDimension(size!);\n const width = chartDimensions.width;\n const height = chartDimensions.height;\n const margins = { top: 16, left: 48, right: 16, bottom: 48 };\n const chartWidth = width - margins.left - margins.right;\n\n return (\n <StyledLineChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n {emptyComponent ?? (\n <>\n <StyledLineChartEmptyText $maxWidth={width} $textSize={chartDimensions.fontSize / 2} $theme={theme}>\n <span>{localeText?.emptyChartText}</span>\n </StyledLineChartEmptyText>\n <svg ref={svgRef as RefObject<SVGSVGElement>} width={width} height={height}>\n <g transform={`translate(${margins.left},${margins.top})`}>\n <Axis\n position=\"bottom\"\n length={width - 32}\n scale={d3scaleLinear().domain([]).range([0, chartWidth]) as AnyScale}\n x={0}\n y={height}\n tickValues={4}\n />\n </g>\n </svg>\n </>\n )}\n </StyledLineChart>\n );\n});\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","/**\n * @internal\n * Internal renderer used by LineChart when data is present. Not part of the public API.\n * Use `LineChart` instead — it handles loading, empty, and rendered states automatically.\n */\nimport React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport {\n extent as d3extent,\n scaleLinear as d3scaleLinear,\n scalePoint as d3scalePoint,\n scaleTime as d3scaleTime,\n line as d3line,\n ScaleTime as d3ScaleTime,\n} from 'd3';\n\nimport { Flexbox, useTheme, useMessageFormatter } from '@redsift/design-system';\nimport intlMessages from './intl';\n\nimport { AnyScale, DotDatum, LegendItemDatum, LegendVariant, LinePointDatum, TwoCategoryData } from '../../types';\nimport { LineChartLegendVariant, LineChartProps } from './types';\nimport { StyledLineChart } from './styles';\nimport { useColor } from '../../hooks';\nimport { Axis, AxisVariant } from '../Axis';\nimport { Legend } from '../Legend';\nimport { Dot, DotVariant } from '../Dot';\nimport { statsBy, sizeToDimension } from './utils';\nimport { Line } from '../Line';\nimport { getSortingMethod, isValidDate, mergeLegends } from '../../utils';\n\ninterface RenderedLineChartProps extends Required<Pick<LineChartProps, 'data'>>, Omit<LineChartProps, 'data'> {}\n\nexport const RenderedLineChart = forwardRef<HTMLDivElement, RenderedLineChartProps>((props, ref) => {\n const {\n className,\n data: propsData,\n dotRole,\n disableAnimations,\n getDotAnchorProps,\n id,\n isDotSelected,\n labelDecorator,\n legendDecorator,\n legendVariant,\n legendProps,\n margins: propsMargins,\n onDotClick,\n size,\n sortingMethod,\n svgRef,\n colorTheme,\n tooltipDecorator,\n tooltipVariant,\n xAxisVariant,\n xAxisPlacement,\n xAxisTickFormat: propsXAxisTickFormat,\n xAxisTickPadding,\n xAxisTickRotation,\n xAxisTickSize,\n xAxisTickValues,\n xAxisMinValue,\n xAxisMaxValue,\n xAxisTickRemodelling,\n yAxisVariant,\n yAxisPlacement,\n yAxisTickFormat,\n yAxisTickPadding,\n yAxisTickRotation,\n yAxisTickSize,\n yAxisTickValues,\n yAxisMinValue,\n yAxisMaxValue,\n yAxisTickRemodelling,\n dateParser,\n ...forwardedProps\n } = props;\n\n const cache = useRef<TwoCategoryData>(undefined);\n const theme = useTheme();\n\n const format = useMessageFormatter(intlMessages);\n\n const xScaleType: 'number' | 'string' | 'Date' | 'dateString' | undefined =\n propsData[0].key[0] instanceof Date\n ? 'Date'\n : typeof propsData[0].key[0] === 'number'\n ? 'number'\n : typeof propsData[0].key[0] === 'string' && isValidDate(propsData[0].key[0])\n ? 'dateString'\n : typeof propsData[0].key[0] === 'string'\n ? 'string'\n : undefined;\n const data =\n xScaleType === 'number'\n ? propsData.filter((datum) => typeof datum.key[0] === 'number' && !Number.isNaN(datum.key[0]))\n : xScaleType === 'dateString'\n ? propsData.filter((datum) => isValidDate(datum.key[0] as string))\n : xScaleType === 'string'\n ? propsData.filter((datum) => typeof datum.key[0] === 'string')\n : xScaleType === 'Date'\n ? propsData.filter((datum) => datum.key[0] instanceof Date)\n : propsData;\n\n useEffect(() => {\n cache.current = data;\n });\n\n const chartDimensions = sizeToDimension(size!);\n const width = chartDimensions.width;\n const height = chartDimensions.height;\n const margins = {\n top: xAxisVariant === AxisVariant.default || xAxisVariant === AxisVariant.tickValue ? 24 : 8,\n left: yAxisVariant === AxisVariant.default || yAxisVariant === AxisVariant.tickValue ? 48 : 8,\n right: yAxisVariant === AxisVariant.default || yAxisVariant === AxisVariant.tickValue ? 48 : 8,\n bottom: xAxisVariant === AxisVariant.default || xAxisVariant === AxisVariant.tickValue ? 24 : 8,\n ...propsMargins,\n };\n const chartHeight = height - margins.top - margins.bottom;\n const chartWidth = width - margins.left - margins.right;\n\n const scaleX = (() => {\n if (xScaleType === 'number') {\n const domain = d3extent(data, (d) => d.key[0] as number) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleLinear().domain(domain).range([0, chartWidth]).nice();\n } else if (xScaleType === 'dateString') {\n const domain = d3extent(data, (d) => Date.parse(d.key[0] as string)) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleTime()\n .domain([new Date(domain[0]), new Date(domain[1])])\n .range([0, chartWidth])\n .nice();\n } else if (xScaleType === 'Date') {\n const domain = d3extent(data, (d) => (d.key[0] as Date).valueOf()) as [number, number];\n domain[0] = (xAxisMinValue as number) ?? domain[0];\n domain[1] = (xAxisMaxValue as number) ?? domain[1];\n return d3scaleTime()\n .domain([new Date(domain[0]), new Date(domain[1])])\n .range([0, chartWidth])\n .nice();\n } else {\n const domain =\n xAxisTickValues && Array.isArray(xAxisTickValues)\n ? (xAxisTickValues as string[])\n : data.map((d) => d.key[0] as string);\n domain[0] = (xAxisMinValue as string) ?? domain[0];\n domain[1] = (xAxisMaxValue as string) ?? domain[1];\n return d3scalePoint().domain(domain).range([0, chartWidth]);\n }\n })();\n const scaleY = (() => {\n const domain = d3extent(data, (d) => d.value) as [number, number];\n domain[0] = (yAxisMinValue as number) ?? domain[0];\n domain[1] = (yAxisMaxValue as number) ?? domain[1];\n return d3scaleLinear().domain(domain).range([chartHeight, 0]).nice();\n })();\n const xAxisTickFormat =\n propsXAxisTickFormat ??\n (xScaleType === 'Date' || xScaleType === 'dateString'\n ? (scaleX as d3ScaleTime<number, number, never>).tickFormat()\n : undefined);\n\n const hasCategory = data[0] && data[0].key.length >= 2 && data[0].key[1] !== null && data[0].key[1] !== undefined;\n const statsByCategory = statsBy(data, sortingMethod!);\n const colorScale = useColor({\n data: statsByCategory,\n colorTheme: colorTheme!,\n category: (d) => d.key as string,\n theme,\n });\n\n const circles = data\n .sort((a, b) => {\n if (xScaleType === 'number') {\n if (a.key[0] < b.key[0]) return -1;\n if (a.key[0] > b.key[0]) return 1;\n return 0;\n } else if (xScaleType === 'dateString') {\n if (Date.parse(a.key[0] as string) < Date.parse(b.key[0] as string)) return -1;\n if (Date.parse(a.key[0] as string) > Date.parse(b.key[0] as string)) return 1;\n return 0;\n } else if (xScaleType === 'Date') {\n if ((a.key[0] as Date).valueOf() < (b.key[0] as Date).valueOf()) return -1;\n if ((a.key[0] as Date).valueOf() > (b.key[0] as Date).valueOf()) return 1;\n return 0;\n } else if (xScaleType === 'string' && xAxisTickValues && Array.isArray(xAxisTickValues)) {\n if (xAxisTickValues.indexOf(a.key[0]) < xAxisTickValues.indexOf(b.key[0])) return -1;\n if (xAxisTickValues.indexOf(a.key[0]) > xAxisTickValues.indexOf(b.key[0])) return 1;\n return 0;\n }\n return 0;\n })\n .filter((d) => d.value !== null)\n .map((d) => ({\n category: d.key[1] ?? 'default',\n x:\n xScaleType === 'dateString'\n ? dateParser\n ? dateParser(d.key[0] as string)\n : new Date(Date.parse(d.key[0] as string))\n : d.key[0],\n y: d.value,\n data: {\n key: d.key,\n value: d.value,\n },\n points: [d],\n }));\n const lines = hasCategory\n ? Object.values(\n circles.reduce((prev, curr: (typeof circles)[number]) => {\n if (!prev[curr.category!]) {\n prev[curr.category!] = [];\n }\n prev[curr.category!].push(curr);\n return prev;\n }, {} as Record<string, typeof circles>)\n )\n : [circles];\n\n const createLine = d3line<LinePointDatum>()\n .x((d) => scaleX(d.x as any) as any)\n .y((d) => scaleY(d.y as any));\n\n const categories: string[] = [];\n const pivotedTable = circles.reduce((acc, item) => {\n const { x, category, y } = item;\n if (!categories.includes(category)) {\n categories.push(category);\n }\n let formattedKey = xAxisTickFormat ? xAxisTickFormat(x as any) : x.toString();\n formattedKey = Array.isArray(formattedKey) ? formattedKey.join(' ') : formattedKey;\n\n let entry = acc.find((e) => e.key === formattedKey);\n if (!entry) {\n entry = { key: formattedKey };\n acc.push(entry);\n }\n\n entry[category] = y;\n\n return acc;\n }, [] as Array<Record<string, string | number | null | undefined> & { key: string }>);\n\n const { extraLegendItems, ...forwardedLegendProps } = legendProps || {};\n\n return (\n <StyledLineChart\n mode={\n typeof onDotClick === 'function' ||\n typeof getDotAnchorProps === 'function' ||\n typeof forwardedLegendProps.getLegendItemAnchorProps === 'function'\n ? 'interactive'\n : 'static'\n }\n definition={\n hasCategory\n ? format('definition-linear-with-categories', {\n categoryLength: categories.length,\n circleLength: circles.length,\n })\n : format('definition-linear', { circleLength: circles.length })\n }\n xAxisDefinition={\n xScaleType !== 'string'\n ? format(`x-axis-${xScaleType === 'number' ? 'numbers' : 'dates'}-definition`, {\n numAxis: xAxisPlacement === 'both' ? 2 : 1,\n start: scaleX.domain()[0],\n end: scaleX.domain()[1],\n })\n : format('x-axis-categories-definition', { numAxis: xAxisPlacement === 'both' ? 2 : 1 })\n }\n yAxisDefinition={format('y-axis-numbers-definition', {\n numAxis: yAxisPlacement === 'both' ? 2 : 1,\n start: scaleY.domain()[0],\n end: scaleY.domain()[1],\n })}\n dataTableRepresentation={\n hasCategory\n ? {\n header: (\n <thead>\n <tr>\n <th scope=\"col\">{xScaleType === 'Date' || xScaleType === 'dateString' ? 'Date' : 'Key'}</th>\n {categories.map((category) => (\n <th key={category} scope=\"col\">\n {category}\n </th>\n ))}\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {pivotedTable.map((row) => (\n <tr key={row.key}>\n <th scope=\"row\">{row.key}</th>\n {categories.map((category) => (\n <th key={`${row.key}-${category}-${row[category]}`} scope=\"col\">\n {row[category]}\n </th>\n ))}\n </tr>\n ))}\n </tbody>\n ),\n }\n : {\n header: (\n <thead>\n <tr>\n <th scope=\"col\">{xScaleType === 'Date' || xScaleType === 'dateString' ? 'Date' : 'Key'}</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {circles.map((datum) => {\n let key = xAxisTickFormat ? xAxisTickFormat(datum.x as any) : datum.x.toString();\n key = Array.isArray(key) ? key.join(' ') : key;\n\n return (\n <tr key={key}>\n <th scope=\"row\">{key}</th>\n <td>{datum.y}</td>\n </tr>\n );\n })}\n </tbody>\n ),\n }\n }\n {...forwardedProps}\n id={id}\n className={className}\n ref={ref as RefObject<HTMLDivElement>}\n >\n <Flexbox flexDirection=\"column\" alignItems=\"center\" gap=\"8\">\n <svg\n ref={svgRef as RefObject<SVGSVGElement>}\n width={width}\n height={height}\n aria-label={\n typeof onDotClick === 'function' || typeof getDotAnchorProps === 'function'\n ? format('interactive-chart')\n : format('static-chart')\n }\n >\n <g transform={`translate(${margins.left},${margins.top})`} aria-hidden=\"true\">\n {lines.map((line, index) => {\n return (\n <Line\n color={colorScale?.(line[0].category!)}\n data={line.filter((point) => point.y !== null) as any}\n disableAnimations={disableAnimations}\n createLine={createLine}\n key={`line _${index}`}\n />\n );\n })}\n </g>\n {categories.map((category, categoryIndex) => {\n const filteredCircles = circles.filter((circle) => circle.category === category);\n return (\n <g\n key={`${id}-series-${category}`}\n transform={`translate(${margins.left},${margins.top})`}\n role=\"region\"\n {...(hasCategory\n ? {\n 'aria-label': `${category}, category ${categoryIndex + 1} of ${categories.length} with ${\n filteredCircles.length\n } circles`,\n }\n : {})}\n >\n {filteredCircles.map((circle, index) => {\n const scaleXDomain = scaleX.domain();\n const scaleYDomain = scaleY.domain();\n\n if (\n xScaleType === 'number' &&\n (circle.x! < scaleXDomain[0] ||\n circle.x! > scaleXDomain[1] ||\n circle.y! < scaleYDomain[0] ||\n circle.y! > scaleYDomain[1])\n ) {\n return null;\n }\n\n const to = {\n ...circle,\n r: 4,\n };\n\n return (\n <Dot\n id={`id${id}__circle-${categoryIndex}.${index}`}\n color={colorScale?.(circle.category!)}\n data={to}\n dataset={circles}\n isSelected={Boolean(isDotSelected?.(to))}\n anchorProps={getDotAnchorProps ? getDotAnchorProps(to) : undefined}\n key={`circle _${categoryIndex}.${index}`}\n labelDecorator={labelDecorator}\n onClick={onDotClick}\n role={dotRole}\n scaleX={scaleX}\n scaleY={scaleY}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n variant={DotVariant.hollow}\n />\n );\n })}\n </g>\n );\n })}\n <g transform={`translate(${margins.left},${margins.top})`}>\n {['bottom', 'both'].includes(xAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"bottom\"\n length={chartWidth}\n scale={scaleX as AnyScale}\n x={0}\n y={chartHeight}\n tickValues={xAxisTickValues ?? 8}\n tickPadding={xAxisTickPadding}\n tickRotation={xAxisTickRotation}\n tickSize={xAxisTickSize}\n tickFormat={xAxisTickFormat}\n tickRemodelling={xAxisTickRemodelling}\n variant={xAxisVariant}\n />\n ) : null}\n {['top', 'both'].includes(xAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"top\"\n length={chartWidth}\n scale={scaleX as AnyScale}\n x={0}\n y={0}\n tickValues={xAxisTickValues ?? 8}\n tickPadding={xAxisTickPadding}\n tickRotation={xAxisTickRotation}\n tickSize={xAxisTickSize}\n tickFormat={xAxisTickFormat}\n tickRemodelling={xAxisTickRemodelling}\n variant={xAxisVariant}\n />\n ) : null}\n {['left', 'both'].includes(yAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"left\"\n length={chartHeight}\n scale={scaleY as AnyScale}\n x={0}\n y={chartHeight}\n tickValues={yAxisTickValues ?? 8}\n tickPadding={yAxisTickPadding}\n tickRotation={yAxisTickRotation}\n tickSize={yAxisTickSize}\n tickFormat={yAxisTickFormat}\n tickRemodelling={yAxisTickRemodelling}\n variant={yAxisVariant}\n />\n ) : null}\n {['right', 'both'].includes(yAxisPlacement!) ? (\n <Axis\n disableAnimations={disableAnimations}\n position=\"right\"\n length={chartHeight}\n scale={scaleY as AnyScale}\n x={chartWidth}\n y={chartHeight}\n tickValues={yAxisTickValues ?? 8}\n tickPadding={yAxisTickPadding}\n tickRotation={yAxisTickRotation}\n tickSize={yAxisTickSize}\n tickFormat={yAxisTickFormat}\n tickRemodelling={yAxisTickRemodelling}\n variant={yAxisVariant}\n />\n ) : null}\n </g>\n </svg>\n </Flexbox>\n {hasCategory && legendVariant !== LineChartLegendVariant.none ? (\n <Legend\n data={(extraLegendItems\n ? mergeLegends(extraLegendItems, statsByCategory).sort(getSortingMethod(sortingMethod!))\n : statsByCategory\n ).map((d) => ({\n ...d,\n color: colorScale?.(d.key)!,\n }))}\n variant={\n legendVariant === LineChartLegendVariant.externalLabelValue\n ? LegendVariant.value\n : legendVariant === LineChartLegendVariant.externalLabelPercent\n ? LegendVariant.percent\n : legendVariant === LineChartLegendVariant.externalLabel\n ? LegendVariant.label\n : LegendVariant.custom\n }\n legendDecorator={\n legendDecorator\n ? (datum: LegendItemDatum, props) => legendDecorator(datum as unknown as DotDatum, props)\n : undefined\n }\n {...forwardedLegendProps}\n />\n ) : null}\n </StyledLineChart>\n );\n});\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport { Comp, useId } from '@redsift/design-system';\n\nimport { ChartSize, ColorTheme, TooltipVariant } from '../../types';\nimport { LineChartLegendVariant, LineChartProps } from './types';\nimport { LoadingLineChart } from './LoadingLineChart';\nimport { EmptyLineChart } from './EmptyLineChart';\nimport { RenderedLineChart } from './RenderedLineChart';\nimport { AxisVariant } from '../Axis';\n\nconst COMPONENT_NAME = 'LineChart';\nconst CLASSNAME = 'redsift-line-chart';\n\n/**\n * LineChart displays trends over time or continuous data.\n * Built on D3.js with smooth interpolation and interactive data points.\n *\n * This is the only public entry point for line charts. Do not import\n * `RenderedLineChart`, `EmptyLineChart`, or `LoadingLineChart` directly —\n * those are internal sub-components that `LineChart` selects automatically\n * based on whether `data` is present and non-empty.\n *\n * Data format: `LinearData` `[{ key: Date, value: number, label?: string }]`\n *\n * @example\n * // Basic line chart with time data\n * const data = [\n * { key: new Date('2024-01'), value: 100, label: 'January' },\n * { key: new Date('2024-02'), value: 150, label: 'February' },\n * { key: new Date('2024-03'), value: 125, label: 'March' },\n * ];\n * <LineChart data={data} size=\"medium\" />\n *\n * @example\n * // With tooltips and click handler\n * <LineChart\n * data={timeSeriesData}\n * tooltipVariant=\"value\"\n * onDotClick={(d) => showDetails(d)}\n * />\n *\n * @example\n * // Multiple lines with legend (TwoCategoryData format)\n * const multiSeriesData = [\n * { key: [new Date('2024-01'), 'Series A'], value: 100 },\n * { key: [new Date('2024-01'), 'Series B'], value: 80 },\n * { key: [new Date('2024-02'), 'Series A'], value: 120 },\n * { key: [new Date('2024-02'), 'Series B'], value: 95 },\n * ];\n * <LineChart\n * data={multiSeriesData}\n * legendVariant=\"externalLabel\"\n * colorTheme=\"dark\"\n * />\n *\n * @example\n * // Customize axis placement and variant\n * <LineChart\n * data={data}\n * xAxisPlacement=\"top\"\n * yAxisPlacement=\"right\"\n * xAxisVariant=\"minimal\"\n * />\n */\n\nexport const LineChart: Comp<LineChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n className,\n colorTheme = ColorTheme.dark,\n data: propsData,\n dotRole,\n emptyComponent,\n id: propsId,\n isDotSelected,\n labelDecorator,\n legendDecorator,\n legendVariant: propsLegendVariant,\n localeText = { emptyChartText: 'No Data' },\n onDotClick,\n size = ChartSize.medium,\n sortingMethod = 'desc-value',\n svgRef,\n tooltipDecorator,\n tooltipVariant = TooltipVariant.none,\n xAxisPlacement = 'bottom',\n xAxisVariant = AxisVariant.default,\n yAxisPlacement = 'left',\n yAxisVariant = AxisVariant.default,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const legendVariant = propsLegendVariant ?? LineChartLegendVariant.externalLabel;\n\n if (propsData === undefined || propsData === null) {\n return <LoadingLineChart id={id} {...forwardedProps} ref={ref} />;\n }\n\n if (propsData.length === 0) {\n return (\n <EmptyLineChart\n data={propsData}\n emptyComponent={emptyComponent}\n localeText={localeText}\n size={size}\n sortingMethod={sortingMethod}\n svgRef={svgRef}\n xAxisPlacement={xAxisPlacement}\n xAxisVariant={xAxisVariant}\n yAxisPlacement={yAxisPlacement}\n yAxisVariant={yAxisVariant}\n {...forwardedProps}\n ref={ref}\n />\n );\n }\n\n return (\n <RenderedLineChart\n className={classNames(LineChart.className, className)}\n colorTheme={colorTheme}\n data={propsData}\n dotRole={dotRole}\n id={id}\n isDotSelected={isDotSelected}\n labelDecorator={labelDecorator}\n legendDecorator={legendDecorator}\n legendVariant={legendVariant}\n onDotClick={onDotClick}\n size={size}\n sortingMethod={sortingMethod}\n svgRef={svgRef}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n xAxisPlacement={xAxisPlacement}\n xAxisVariant={xAxisVariant}\n yAxisPlacement={yAxisPlacement}\n yAxisVariant={yAxisVariant}\n {...forwardedProps}\n ref={ref}\n />\n );\n});\nLineChart.className = CLASSNAME;\nLineChart.displayName = COMPONENT_NAME;\n"],"names":["LineChartLegendVariant","none","externalLabel","externalLabelValue","externalLabelPercent","custom","StyledLineChart","styled","ChartContainer","StyledLineChartEmptyText","div","_ref","$maxWidth","_ref2","$theme","_ref3","$textSize","_ref4","LoadingLineChart","forwardRef","props","ref","className","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","_extends","sizeToDimension","size","ChartSize","small","width","height","fontSize","medium","large","statsBy","arr","sortingMethod","counts","reduce","prev","curr","value","key","min","max","values","Math","Object","keys","map","first","last","length","trending","overall","sort","getSortingMethod","EmptyLineChart","data","propsData","emptyComponent","localeText","svgRef","theme","useTheme","cache","useRef","undefined","useEffect","current","chartDimensions","margins","top","left","right","bottom","chartWidth","Fragment","emptyChartText","transform","Axis","position","scale","d3scaleLinear","domain","range","x","y","tickValues","enUS","frFR","RenderedLineChart","dotRole","disableAnimations","getDotAnchorProps","id","isDotSelected","labelDecorator","legendDecorator","legendVariant","legendProps","propsMargins","onDotClick","colorTheme","tooltipDecorator","tooltipVariant","xAxisVariant","xAxisPlacement","xAxisTickFormat","propsXAxisTickFormat","xAxisTickPadding","xAxisTickRotation","xAxisTickSize","xAxisTickValues","xAxisMinValue","xAxisMaxValue","xAxisTickRemodelling","yAxisVariant","yAxisPlacement","yAxisTickFormat","yAxisTickPadding","yAxisTickRotation","yAxisTickSize","yAxisTickValues","yAxisMinValue","yAxisMaxValue","yAxisTickRemodelling","dateParser","format","useMessageFormatter","intlMessages","xScaleType","Date","isValidDate","filter","datum","Number","isNaN","_objectSpread","AxisVariant","default","tickValue","chartHeight","scaleX","d3extent","d","nice","parse","d3scaleTime","_ref5","_ref6","valueOf","_ref7","_ref8","Array","isArray","d3scalePoint","scaleY","_ref9","_ref10","tickFormat","hasCategory","statsByCategory","colorScale","useColor","category","circles","a","b","indexOf","_d$key$","points","lines","push","createLine","d3line","categories","pivotedTable","acc","item","includes","formattedKey","toString","join","entry","find","e","_ref11","extraLegendItems","forwardedLegendProps","_excluded2","mode","getLegendItemAnchorProps","definition","categoryLength","circleLength","xAxisDefinition","numAxis","start","end","yAxisDefinition","dataTableRepresentation","header","scope","body","row","Flexbox","flexDirection","alignItems","gap","line","index","Line","color","point","categoryIndex","filteredCircles","circle","role","scaleXDomain","scaleYDomain","to","r","Dot","dataset","isSelected","Boolean","anchorProps","onClick","variant","DotVariant","hollow","tickPadding","tickRotation","tickSize","tickRemodelling","Legend","mergeLegends","LegendVariant","percent","label","COMPONENT_NAME","CLASSNAME","LineChart","ColorTheme","dark","propsId","propsLegendVariant","TooltipVariant","_id","useId","classNames","displayName"],"mappings":"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"}
|
package/_internal/PieChart2.js
CHANGED
|
@@ -435,7 +435,7 @@ const RenderedPieChart = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
435
435
|
} = _ref,
|
|
436
436
|
forwardedLegendProps = _objectWithoutProperties(_ref, _excluded2);
|
|
437
437
|
return /*#__PURE__*/React.createElement(StyledPieChart, _extends({
|
|
438
|
-
mode: typeof onSliceClick === 'function' || typeof getSliceAnchorProps === 'function' ? 'interactive' : 'static',
|
|
438
|
+
mode: typeof onSliceClick === 'function' || typeof getSliceAnchorProps === 'function' || typeof forwardedLegendProps.getLegendItemAnchorProps === 'function' ? 'interactive' : 'static',
|
|
439
439
|
definition: format('definition', {
|
|
440
440
|
sliceLength: filteredPieData.length
|
|
441
441
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieChart2.js","sources":["../../src/components/PieChart/types.ts","../../src/components/PieChart/styles.ts","../../src/components/PieChart/LoadingPieChart.tsx","../../src/components/PieChart/utils.ts","../../src/components/PieChart/EmptyPieChart.tsx","../../src/components/PieChart/intl/index.ts","../../src/components/PieChart/RenderedPieChart.tsx","../../src/components/PieChart/PieChart.tsx"],"sourcesContent":["import { ComponentProps, ReactElement, ReactNode } from 'react';\nimport { PieArcDatum as d3PieArcDatum } from 'd3-shape';\nimport {\n ChartDimensions,\n ChartSize,\n ChartTheme,\n ArcDatum,\n TooltipVariant,\n CategoryData,\n CategoryDatum,\n Statistics,\n} from '../../types';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ArcProps } from '../Arc';\nimport { ChartContainerProps } from '../ChartContainer';\nimport { LegendProps } from '../Legend';\nimport { SortingMethod } from '../../utils';\nimport { AnchorProps } from '../DataPoint';\n\n/**\n * Component variant.\n */\nexport const PieChartVariant = {\n plain: 'plain',\n spaced: 'spaced',\n donut: 'donut',\n spacedDonut: 'spacedDonut',\n} as const;\nexport type PieChartVariant = ValueOf<typeof PieChartVariant>;\n\n/**\n * Component's labels variant.\n */\nexport const PieChartLegendVariant = {\n none: 'none',\n internal: 'internal',\n externalLabel: 'externalLabel',\n externalLabelValue: 'externalLabelValue',\n externalLabelPercent: 'externalLabelPercent',\n custom: 'custom',\n} as const;\nexport type PieChartLegendVariant = ValueOf<typeof PieChartLegendVariant>;\n\ninterface LocaleText {\n emptyChartText: string;\n}\n\nexport type PieChartDimensions = ChartDimensions & {\n smallFontSize: number;\n fontSize: number;\n innerRadius: number;\n};\n\n/**\n * Component props.\n */\nexport interface PieChartProps extends ChartContainerProps {\n /** Number of categories to use, the rest being put into a new category called \"Others\". */\n caping?: number;\n /** Dataset to use to generate the chart, should be a list of objects containing a key and a value. */\n data?: CategoryData;\n /** Component to use if the chart is empty (replacing the default one). */\n emptyComponent?: ReactNode;\n /** Method used to define the anchor props to use when the slice is a navigation link. */\n getSliceAnchorProps?: (datum: ArcDatum) => AnchorProps;\n /** Whether the pie or donut is cut in half or not. */\n isHalf?: boolean;\n /** Method to determine whether a slice is selected or not. */\n isSliceSelected?: (datum: ArcDatum) => boolean | undefined;\n /** Method to override the data labels. */\n labelDecorator?: (\n datum: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Method modifying what's displayed within the legend when the legendVariant is \"custom\". */\n legendDecorator?: (\n datum: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Define whether the labels should be displayed inside or outside the charts and if they should contain raw or percentage values. If set to \"custom\", use `legendDecorator` to customize it. */\n legendVariant?: PieChartLegendVariant;\n /** Props to forward to the Legend block. Can be used to make the legend selectable. */\n legendProps?: Omit<LegendProps, 'data' | 'ref' | 'variant'> & { extraLegendItems?: Statistics };\n /** Labels and texts. */\n localeText?: LocaleText;\n /** Method to be called on a click on a slice. For a navigation link, please use `getSliceAnchorProps` instead. */\n onSliceClick?: (datum: ArcDatum) => void;\n /** Whether a category should be displayed for categories that has been removed by the caping option. Optionaly, this prop can be used to change the label of this category. */\n others?: boolean | string;\n /** PieChart size. */\n size?: ChartSize | PieChartDimensions;\n /** Native HTML props to forward to each slice. */\n sliceProps?: Omit<ComponentProps<'g'>, 'onClick' | 'ref' | 'width'>;\n /** Slice role. If an onClick is provided, the slices will have the role `button`. For a navigation link, please use `getSliceAnchorProps` instead. */\n sliceRole?: ArcProps['role'];\n /** Define how to sort categories. */\n sortingMethod?: SortingMethod;\n /** Secondary text to be displayed in the middle of the chart, between the main text and subtext. Recommended to be used with donut variants only. */\n middleText?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Secondary text to be displayed in the middle of the chart, above the main text. Recommended to be used with `donut` variants only. */\n subtext?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Main text to be displayed in the middle of the chart. Recommended to be used with `donut` variants only. */\n text?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: ChartTheme;\n /** PieChart variant. */\n variant?: PieChartVariant;\n /** Method modifying what's displayed within the tooltip when the tooltipVariant is \"custom\". */\n tooltipDecorator?: (\n data: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Tooltip variant. */\n tooltipVariant?: TooltipVariant;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledPieChartProps = PieChartProps & {};\n","import styled, { css } from 'styled-components';\nimport { StyledPieChartProps } from './types';\nimport { ChartContainer } from '../ChartContainer';\nimport { Theme } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledPieChart = styled(ChartContainer)<StyledPieChartProps>`\n .redsift-piechart__chart-wrapper {\n position: relative;\n }\n`;\n\nexport const StyledPieChartCenterText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $smallTextSize: number;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > b {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-weight: var(--redsift-typography-font-weight-medium);\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n\n &:nth-child(2) {\n font-weight: normal;\n margin-top: 8px;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: ${({ $smallTextSize }) => $smallTextSize}px;\n line-height: ${({ $smallTextSize }) => $smallTextSize}px;\n }\n }\n > span {\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n &:nth-child(3) {\n margin-top: 4px;\n font-size: ${({ $smallTextSize }) => $smallTextSize}px;\n line-height: ${({ $smallTextSize }) => $smallTextSize}px;\n }\n }\n > b + span {\n font-size: var(--redsift-typography-body-font-size);\n font-family: var(--redsift-typography-font-family-poppins);\n line-height: var(--redsift-typography-badge-line-height);\n color: ${({ $theme }) => ($theme === Theme.light ? 'rgba(0, 0, 0, 0.6)' : 'rgba(255, 255, 255, 0.6)')};\n text-align: center;\n }\n`;\n\nexport const StyledPieChartEmptyText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $isDonut: boolean;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > span {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $isDonut, $theme }) =>\n $isDonut\n ? css`var(--redsift-color-neutral-mid-grey)`\n : css`var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n }\n`;\n","import React, { forwardRef, RefObject } from 'react';\n\nimport { PieChartProps } from './types';\nimport { StyledPieChart } from './styles';\n\nexport const LoadingPieChart = forwardRef<HTMLDivElement, PieChartProps>(\n (props, ref) => {\n const { className, ...forwardedProps } = props;\n\n return (\n <StyledPieChart\n {...forwardedProps}\n className={className}\n ref={ref as RefObject<HTMLDivElement>}\n >\n Loading...\n </StyledPieChart>\n );\n }\n);\n","import { ChartSize } from '../../types';\nimport { PieChartDimensions } from './types';\n\nexport const sizeToDimension = (size: ChartSize | PieChartDimensions, isHalf?: boolean): PieChartDimensions => {\n if (typeof size !== 'string') {\n return size;\n }\n\n switch (size) {\n case ChartSize.small:\n return {\n width: 200,\n height: 200 * (isHalf ? 0.5 : 1),\n smallFontSize: 13,\n fontSize: 30,\n innerRadius: 55,\n };\n case ChartSize.large:\n return {\n width: 300,\n height: 300 * (isHalf ? 0.5 : 1),\n smallFontSize: 18,\n fontSize: 38,\n innerRadius: 80,\n };\n case ChartSize.medium:\n default:\n return {\n width: 240,\n height: 240 * (isHalf ? 0.5 : 1),\n smallFontSize: 14,\n fontSize: 34,\n innerRadius: 65,\n };\n }\n};\n","import React, { forwardRef, RefObject } from 'react';\nimport { arc as d3arc } from 'd3';\n\nimport { ArcDatum } from '../../types';\nimport { PieChartProps, PieChartVariant } from './types';\nimport { StyledPieChart, StyledPieChartEmptyText } from './styles';\nimport { Arcs } from '../Arcs';\nimport { empty } from '../../scheme';\nimport { sizeToDimension } from './utils';\nimport { useTheme } from '@redsift/design-system';\n\nexport const EmptyPieChart = forwardRef<HTMLDivElement, PieChartProps>((props, ref) => {\n const { className, emptyComponent, localeText, size, variant, ...forwardedProps } = props;\n const theme = useTheme();\n\n const isDonut = variant === PieChartVariant.donut || variant === PieChartVariant.spacedDonut;\n\n const { width, height, fontSize, innerRadius } = sizeToDimension(size!);\n const externalRadiusPadding = 8;\n\n const createArc = d3arc<ArcDatum>()\n .innerRadius(isDonut ? innerRadius : 0)\n .outerRadius(width / 2 - externalRadiusPadding);\n\n return (\n <StyledPieChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n {emptyComponent ?? (\n <>\n <StyledPieChartEmptyText\n $maxWidth={innerRadius * 2}\n $textSize={fontSize / 2}\n $isDonut={isDonut}\n $theme={theme}\n >\n <span>{localeText?.emptyChartText}</span>\n </StyledPieChartEmptyText>\n <svg width={width} height={height}>\n <Arcs\n arcs={[\n {\n createArc,\n previousData: {\n data: {\n key: '',\n value: 0,\n },\n startAngle: 0,\n endAngle: 0,\n padAngle: 0,\n value: 0,\n index: 0,\n },\n data: {\n data: {\n key: 'No Data',\n value: 0,\n },\n index: 0,\n value: 0,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n padAngle: 0,\n },\n dataset: [\n {\n data: {\n key: 'No Data',\n value: 0,\n },\n index: 0,\n value: 0,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n padAngle: 0,\n },\n ],\n color: empty,\n },\n ]}\n transform={`translate(${width / 2} ${height / 2})`}\n />\n </svg>\n </>\n )}\n </StyledPieChart>\n );\n});\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","import React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport { arc as d3arc, pie as d3pie, sum as d3sum } from 'd3';\n\nimport { useTheme, useMessageFormatter } from '@redsift/design-system';\nimport intlMessages from './intl';\n\nimport { LegendVariant, ArcDatum, CategoryData, CategoryDatum, LegendItemDatum } from '../../types';\nimport { PieChartLegendVariant, PieChartProps, PieChartVariant } from './types';\nimport { StyledPieChartCenterText, StyledPieChart } from './styles';\nimport { Arcs } from '../Arcs';\nimport { useFormatCategoricalData } from '../../hooks';\nimport { Legend } from '../Legend';\nimport { sizeToDimension } from './utils';\nimport { PieChart } from './PieChart';\nimport { getSortingMethod, mergeLegends } from '../../utils';\n\ninterface RenderedPieChartProps extends Required<Pick<PieChartProps, 'data'>>, Omit<PieChartProps, 'data'> {}\n\nexport const RenderedPieChart = forwardRef<HTMLDivElement, RenderedPieChartProps>((props, ref) => {\n const {\n caping,\n className,\n data: propsData,\n disableAnimations,\n getSliceAnchorProps,\n id,\n isHalf,\n isSliceSelected,\n labelDecorator,\n legendDecorator,\n legendVariant,\n legendProps,\n middleText: propsMiddleText,\n onSliceClick,\n others,\n size,\n sliceProps,\n sliceRole,\n sortingMethod,\n subtext: propsSubtext,\n text: propsText,\n colorTheme,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tooltipDecorator: _tooltipDecorator,\n tooltipVariant,\n variant,\n ...forwardedProps\n } = props;\n\n const cache = useRef<CategoryData>(undefined);\n const theme = useTheme();\n\n const format = useMessageFormatter(intlMessages);\n\n const isDonut = variant === PieChartVariant.donut || variant === PieChartVariant.spacedDonut;\n const isSpaced = variant === PieChartVariant.spaced || variant === PieChartVariant.spacedDonut;\n\n const { data, colorScale } = useFormatCategoricalData({\n data: propsData,\n colorTheme: colorTheme!,\n sortingMethod: sortingMethod!,\n caping,\n others,\n theme,\n });\n\n useEffect(() => {\n cache.current = data;\n });\n\n const { width, height, smallFontSize, fontSize, innerRadius } = sizeToDimension(size!, isHalf);\n const externalRadiusPadding = 8;\n\n const createPie = d3pie<CategoryDatum>()\n .value((d) => d.value)\n .sort(null)\n .startAngle(isHalf ? Math.PI * -0.5 : 0)\n .endAngle(isHalf ? Math.PI * 0.5 : Math.PI * 2);\n const createArc = d3arc<ArcDatum>()\n .innerRadius(isDonut ? innerRadius : 0)\n .outerRadius(width / 2 - externalRadiusPadding);\n const pieData = createPie(data);\n const previousPieData = cache.current ? createPie(cache.current) : undefined;\n const total = d3sum(data, (d) => d.value);\n const legendWidth = useRef<string>(undefined);\n if (data && !legendWidth.current) {\n legendWidth.current = `${Math.max(...data.map((d) => d.key.length + String(d.value).length)) * 8 + 32}px`;\n }\n\n const text =\n typeof propsText === 'function'\n ? propsText(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsText;\n const subtext =\n typeof propsSubtext === 'function'\n ? propsSubtext(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsSubtext;\n const middleText =\n typeof propsMiddleText === 'function'\n ? propsMiddleText(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsMiddleText;\n\n const filteredPieData = pieData.filter((datum) => datum.data.value);\n\n const { extraLegendItems, ...forwardedLegendProps } = legendProps || {};\n\n return (\n <StyledPieChart\n mode={typeof onSliceClick === 'function' || typeof getSliceAnchorProps === 'function' ? 'interactive' : 'static'}\n definition={format('definition', { sliceLength: filteredPieData.length })}\n dataTableRepresentation={{\n header: (\n <thead>\n <tr>\n <th scope=\"col\">Key</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {filteredPieData.map((datum) => (\n <tr key={datum.data.key}>\n <th scope=\"row\">{datum.data.key}</th>\n <td>{datum.data.value}</td>\n </tr>\n ))}\n </tbody>\n ),\n }}\n {...forwardedProps}\n className={className}\n id={id}\n ref={ref as RefObject<HTMLDivElement>}\n >\n <div className={`${PieChart.className}__chart-wrapper`}>\n {text ? (\n <StyledPieChartCenterText\n $maxWidth={innerRadius * 2}\n $textSize={fontSize}\n $smallTextSize={smallFontSize}\n $theme={theme}\n >\n {subtext ? <b>{text}</b> : <span>{text}</span>}\n {middleText ? <b>{middleText}</b> : null}\n <span>{subtext}</span>\n </StyledPieChartCenterText>\n ) : null}\n <svg\n width={width}\n height={isHalf ? height + externalRadiusPadding : height}\n aria-label={\n typeof onSliceClick === 'function' || typeof getSliceAnchorProps === 'function'\n ? format('interactive-chart')\n : format('static-chart')\n }\n >\n <Arcs\n arcs={filteredPieData.map((datum, index) => {\n const percent = datum.data.value / total;\n const from = previousPieData\n ? previousPieData[index]\n : {\n data: {\n key: '',\n value: 0,\n },\n startAngle: isHalf ? Math.PI * -0.5 : 0,\n endAngle: isHalf ? Math.PI * -0.5 : 0,\n padAngle: 0,\n value: 0,\n index: index,\n };\n const to = { ...datum, data: { ...datum.data, percent } };\n\n return {\n color: colorScale?.(to.data.key),\n createArc,\n previousData: from,\n id: `id${id}__arc-${index}`,\n index,\n isSelected: isSliceSelected!(to),\n key: `id${id}__arc-${index}`,\n data: to,\n dataset: pieData,\n anchorProps: getSliceAnchorProps ? getSliceAnchorProps(to) : undefined,\n };\n })}\n disableAnimations={disableAnimations}\n hasLabels={legendVariant === PieChartLegendVariant.internal}\n hasStroke={isSpaced}\n labelDecorator={labelDecorator}\n onClick={onSliceClick}\n role={sliceRole}\n sliceProps={sliceProps}\n tooltipVariant={tooltipVariant}\n transform={`translate(${width / 2} ${isHalf ? height : height / 2})`}\n />\n </svg>\n </div>\n {legendVariant !== PieChartLegendVariant.none && legendVariant !== PieChartLegendVariant.internal ? (\n <Legend\n data={(extraLegendItems\n ? mergeLegends(extraLegendItems, data).sort(getSortingMethod(sortingMethod!))\n : data\n ).map((d) => ({\n ...d,\n color: colorScale?.(d.key)!,\n }))}\n variant={\n legendVariant === PieChartLegendVariant.externalLabelValue\n ? LegendVariant.value\n : legendVariant === PieChartLegendVariant.externalLabelPercent\n ? LegendVariant.percent\n : legendVariant === PieChartLegendVariant.externalLabel\n ? LegendVariant.label\n : LegendVariant.custom\n }\n width={legendWidth.current}\n labelDecorator={\n labelDecorator ? (datum: LegendItemDatum, props) => labelDecorator(datum as ArcDatum, props) : undefined\n }\n legendDecorator={\n legendDecorator ? (datum: LegendItemDatum, props) => legendDecorator(datum as ArcDatum, props) : undefined\n }\n {...forwardedLegendProps}\n />\n ) : null}\n </StyledPieChart>\n );\n});\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport { Comp, useId } from '@redsift/design-system';\n\nimport { ChartSize, ColorTheme, TooltipVariant } from '../../types';\nimport { PieChartLegendVariant, PieChartProps, PieChartVariant } from './types';\nimport { LoadingPieChart } from './LoadingPieChart';\nimport { EmptyPieChart } from './EmptyPieChart';\nimport { RenderedPieChart } from './RenderedPieChart';\n\nconst COMPONENT_NAME = 'PieChart';\nconst CLASSNAME = 'redsift-piechart';\n\n/**\n * PieChart displays proportional data as slices of a circle.\n * Built on D3.js with interactive slices and customizable legends.\n *\n * Variants: `default`, `spaced`, `donut`, `spacedDonut`\n *\n * Data format: `CategoryData` `[{ key: string, value: number }]`\n *\n * @example\n * // Basic pie chart\n * const data = [\n * { key: 'Category A', value: 30 },\n * { key: 'Category B', value: 45 },\n * { key: 'Category C', value: 25 },\n * ];\n * <PieChart data={data} size=\"medium\" />\n *\n * @example\n * // Donut chart with center text\n * <PieChart\n * data={statusData}\n * variant=\"donut\"\n * text=\"Total\"\n * subtext=\"1,234\"\n * />\n *\n * @example\n * // Half pie (semicircle) chart\n * <PieChart\n * data={progressData}\n * isHalf={true}\n * variant=\"donut\"\n * text=\"Progress\"\n * subtext=\"75%\"\n * />\n *\n * @example\n * // With click handler and tooltips\n * <PieChart\n * data={breakdownData}\n * tooltipVariant=\"value\"\n * onSliceClick={(d) => filterBy(d.key)}\n * legendVariant=\"externalLabel\"\n * />\n *\n * @example\n * // Cap small values into \"Others\"\n * <PieChart\n * data={manyCategories}\n * caping={5}\n * others={true}\n * sortingMethod=\"desc-value\"\n * />\n */\n\nexport const PieChart: Comp<PieChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n caping,\n chartRef,\n className,\n colorTheme = ColorTheme.default,\n data: propsData,\n emptyComponent,\n id: propsId,\n isSliceSelected = () => true,\n labelDecorator,\n legendDecorator,\n legendProps,\n legendVariant: propsLegendVariant,\n localeText = { emptyChartText: 'No Data' },\n middleText,\n onSliceClick,\n others = true,\n size = ChartSize.medium,\n sliceProps,\n sliceRole,\n sortingMethod = 'desc-value',\n subtext,\n text,\n tooltipDecorator,\n tooltipVariant = TooltipVariant.value,\n variant = PieChartVariant.spaced,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const legendVariant = propsLegendVariant ?? PieChartLegendVariant.none;\n\n if (propsData === undefined || propsData === null) {\n return <LoadingPieChart id={id} {...forwardedProps} ref={ref} />;\n }\n\n if (propsData.length === 0) {\n return (\n <EmptyPieChart\n data={propsData}\n emptyComponent={emptyComponent}\n id={id}\n localeText={localeText}\n size={size}\n sortingMethod={sortingMethod}\n variant={variant}\n {...forwardedProps}\n ref={ref}\n />\n );\n }\n\n return (\n <RenderedPieChart\n caping={caping}\n chartRef={chartRef}\n className={classNames(PieChart.className, className)}\n data={propsData}\n id={id}\n isSliceSelected={isSliceSelected}\n labelDecorator={labelDecorator}\n legendDecorator={legendDecorator}\n legendProps={legendProps}\n legendVariant={legendVariant}\n middleText={middleText}\n onSliceClick={onSliceClick}\n others={others}\n size={size}\n sliceProps={sliceProps}\n sliceRole={sliceRole}\n sortingMethod={sortingMethod}\n subtext={subtext}\n text={text}\n colorTheme={colorTheme}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n variant={variant}\n {...forwardedProps}\n ref={ref}\n />\n );\n});\nPieChart.className = CLASSNAME;\nPieChart.displayName = COMPONENT_NAME;\n"],"names":["PieChartVariant","plain","spaced","donut","spacedDonut","PieChartLegendVariant","none","internal","externalLabel","externalLabelValue","externalLabelPercent","custom","StyledPieChart","styled","ChartContainer","StyledPieChartCenterText","div","_ref","$maxWidth","_ref2","$theme","_ref3","$textSize","_ref4","_ref5","$smallTextSize","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","Theme","light","StyledPieChartEmptyText","_ref13","_ref14","$isDonut","css","_ref15","_ref16","LoadingPieChart","forwardRef","props","ref","className","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","_extends","sizeToDimension","size","isHalf","ChartSize","small","width","height","smallFontSize","fontSize","innerRadius","large","medium","EmptyPieChart","emptyComponent","localeText","variant","theme","useTheme","isDonut","externalRadiusPadding","createArc","d3arc","outerRadius","Fragment","emptyChartText","Arcs","arcs","previousData","data","key","value","startAngle","endAngle","padAngle","index","Math","PI","dataset","color","empty","transform","enUS","frFR","RenderedPieChart","caping","propsData","disableAnimations","getSliceAnchorProps","id","isSliceSelected","labelDecorator","legendDecorator","legendVariant","legendProps","middleText","propsMiddleText","onSliceClick","others","sliceProps","sliceRole","sortingMethod","subtext","propsSubtext","text","propsText","colorTheme","tooltipDecorator","_tooltipDecorator","tooltipVariant","cache","useRef","undefined","format","useMessageFormatter","intlMessages","isSpaced","colorScale","useFormatCategoricalData","useEffect","current","createPie","d3pie","d","sort","pieData","previousPieData","total","d3sum","legendWidth","max","map","length","String","datum","percent","_objectSpread","filteredPieData","filter","extraLegendItems","forwardedLegendProps","_excluded2","mode","definition","sliceLength","dataTableRepresentation","header","scope","body","PieChart","from","to","isSelected","anchorProps","hasLabels","hasStroke","onClick","role","Legend","mergeLegends","getSortingMethod","LegendVariant","label","COMPONENT_NAME","CLASSNAME","chartRef","ColorTheme","default","propsId","propsLegendVariant","TooltipVariant","_id","useId","classNames","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PieChart2.js","sources":["../../src/components/PieChart/types.ts","../../src/components/PieChart/styles.ts","../../src/components/PieChart/LoadingPieChart.tsx","../../src/components/PieChart/utils.ts","../../src/components/PieChart/EmptyPieChart.tsx","../../src/components/PieChart/intl/index.ts","../../src/components/PieChart/RenderedPieChart.tsx","../../src/components/PieChart/PieChart.tsx"],"sourcesContent":["import { ComponentProps, ReactElement, ReactNode } from 'react';\nimport { PieArcDatum as d3PieArcDatum } from 'd3-shape';\nimport {\n ChartDimensions,\n ChartSize,\n ChartTheme,\n ArcDatum,\n TooltipVariant,\n CategoryData,\n CategoryDatum,\n Statistics,\n} from '../../types';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ArcProps } from '../Arc';\nimport { ChartContainerProps } from '../ChartContainer';\nimport { LegendProps } from '../Legend';\nimport { SortingMethod } from '../../utils';\nimport { AnchorProps } from '../DataPoint';\n\n/**\n * Component variant.\n */\nexport const PieChartVariant = {\n plain: 'plain',\n spaced: 'spaced',\n donut: 'donut',\n spacedDonut: 'spacedDonut',\n} as const;\nexport type PieChartVariant = ValueOf<typeof PieChartVariant>;\n\n/**\n * Component's labels variant.\n */\nexport const PieChartLegendVariant = {\n none: 'none',\n internal: 'internal',\n externalLabel: 'externalLabel',\n externalLabelValue: 'externalLabelValue',\n externalLabelPercent: 'externalLabelPercent',\n custom: 'custom',\n} as const;\nexport type PieChartLegendVariant = ValueOf<typeof PieChartLegendVariant>;\n\ninterface LocaleText {\n emptyChartText: string;\n}\n\nexport type PieChartDimensions = ChartDimensions & {\n smallFontSize: number;\n fontSize: number;\n innerRadius: number;\n};\n\n/**\n * Component props.\n */\nexport interface PieChartProps extends ChartContainerProps {\n /** Number of categories to use, the rest being put into a new category called \"Others\". */\n caping?: number;\n /** Dataset to use to generate the chart, should be a list of objects containing a key and a value. */\n data?: CategoryData;\n /** Component to use if the chart is empty (replacing the default one). */\n emptyComponent?: ReactNode;\n /** Method used to define the anchor props to use when the slice is a navigation link. */\n getSliceAnchorProps?: (datum: ArcDatum) => AnchorProps;\n /** Whether the pie or donut is cut in half or not. */\n isHalf?: boolean;\n /** Method to determine whether a slice is selected or not. */\n isSliceSelected?: (datum: ArcDatum) => boolean | undefined;\n /** Method to override the data labels. */\n labelDecorator?: (\n datum: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Method modifying what's displayed within the legend when the legendVariant is \"custom\". */\n legendDecorator?: (\n datum: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Define whether the labels should be displayed inside or outside the charts and if they should contain raw or percentage values. If set to \"custom\", use `legendDecorator` to customize it. */\n legendVariant?: PieChartLegendVariant;\n /** Props to forward to the Legend block. Can be used to make the legend selectable. */\n legendProps?: Omit<LegendProps, 'data' | 'ref' | 'variant'> & { extraLegendItems?: Statistics };\n /** Labels and texts. */\n localeText?: LocaleText;\n /** Method to be called on a click on a slice. For a navigation link, please use `getSliceAnchorProps` instead. */\n onSliceClick?: (datum: ArcDatum) => void;\n /** Whether a category should be displayed for categories that has been removed by the caping option. Optionaly, this prop can be used to change the label of this category. */\n others?: boolean | string;\n /** PieChart size. */\n size?: ChartSize | PieChartDimensions;\n /** Native HTML props to forward to each slice. */\n sliceProps?: Omit<ComponentProps<'g'>, 'onClick' | 'ref' | 'width'>;\n /** Slice role. If an onClick is provided, the slices will have the role `button`. For a navigation link, please use `getSliceAnchorProps` instead. */\n sliceRole?: ArcProps['role'];\n /** Define how to sort categories. */\n sortingMethod?: SortingMethod;\n /** Secondary text to be displayed in the middle of the chart, between the main text and subtext. Recommended to be used with donut variants only. */\n middleText?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Secondary text to be displayed in the middle of the chart, above the main text. Recommended to be used with `donut` variants only. */\n subtext?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Main text to be displayed in the middle of the chart. Recommended to be used with `donut` variants only. */\n text?: string | ReactElement | ((data: d3PieArcDatum<CategoryDatum>[], total: number) => string | ReactElement);\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: ChartTheme;\n /** PieChart variant. */\n variant?: PieChartVariant;\n /** Method modifying what's displayed within the tooltip when the tooltipVariant is \"custom\". */\n tooltipDecorator?: (\n data: ArcDatum,\n props?: { index?: number; isSelected?: boolean; color?: string }\n ) => string | ReactElement;\n /** Tooltip variant. */\n tooltipVariant?: TooltipVariant;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledPieChartProps = PieChartProps & {};\n","import styled, { css } from 'styled-components';\nimport { StyledPieChartProps } from './types';\nimport { ChartContainer } from '../ChartContainer';\nimport { Theme } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledPieChart = styled(ChartContainer)<StyledPieChartProps>`\n .redsift-piechart__chart-wrapper {\n position: relative;\n }\n`;\n\nexport const StyledPieChartCenterText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $smallTextSize: number;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > b {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-weight: var(--redsift-typography-font-weight-medium);\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n\n &:nth-child(2) {\n font-weight: normal;\n margin-top: 8px;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: ${({ $smallTextSize }) => $smallTextSize}px;\n line-height: ${({ $smallTextSize }) => $smallTextSize}px;\n }\n }\n > span {\n color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n &:nth-child(3) {\n margin-top: 4px;\n font-size: ${({ $smallTextSize }) => $smallTextSize}px;\n line-height: ${({ $smallTextSize }) => $smallTextSize}px;\n }\n }\n > b + span {\n font-size: var(--redsift-typography-body-font-size);\n font-family: var(--redsift-typography-font-family-poppins);\n line-height: var(--redsift-typography-badge-line-height);\n color: ${({ $theme }) => ($theme === Theme.light ? 'rgba(0, 0, 0, 0.6)' : 'rgba(255, 255, 255, 0.6)')};\n text-align: center;\n }\n`;\n\nexport const StyledPieChartEmptyText = styled.div<{\n $maxWidth: number;\n $textSize: number;\n $isDonut: boolean;\n $theme: Theme;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n\n > * {\n max-width: ${({ $maxWidth }) => $maxWidth}px;\n }\n\n > span {\n font-family: var(--redsift-typography-font-family-poppins);\n color: ${({ $isDonut, $theme }) =>\n $isDonut\n ? css`var(--redsift-color-neutral-mid-grey)`\n : css`var(--redsift-color-${$theme}-components-text-primary)`};\n font-size: ${({ $textSize }) => $textSize}px;\n line-height: ${({ $textSize }) => $textSize}px;\n }\n`;\n","import React, { forwardRef, RefObject } from 'react';\n\nimport { PieChartProps } from './types';\nimport { StyledPieChart } from './styles';\n\nexport const LoadingPieChart = forwardRef<HTMLDivElement, PieChartProps>(\n (props, ref) => {\n const { className, ...forwardedProps } = props;\n\n return (\n <StyledPieChart\n {...forwardedProps}\n className={className}\n ref={ref as RefObject<HTMLDivElement>}\n >\n Loading...\n </StyledPieChart>\n );\n }\n);\n","import { ChartSize } from '../../types';\nimport { PieChartDimensions } from './types';\n\nexport const sizeToDimension = (size: ChartSize | PieChartDimensions, isHalf?: boolean): PieChartDimensions => {\n if (typeof size !== 'string') {\n return size;\n }\n\n switch (size) {\n case ChartSize.small:\n return {\n width: 200,\n height: 200 * (isHalf ? 0.5 : 1),\n smallFontSize: 13,\n fontSize: 30,\n innerRadius: 55,\n };\n case ChartSize.large:\n return {\n width: 300,\n height: 300 * (isHalf ? 0.5 : 1),\n smallFontSize: 18,\n fontSize: 38,\n innerRadius: 80,\n };\n case ChartSize.medium:\n default:\n return {\n width: 240,\n height: 240 * (isHalf ? 0.5 : 1),\n smallFontSize: 14,\n fontSize: 34,\n innerRadius: 65,\n };\n }\n};\n","import React, { forwardRef, RefObject } from 'react';\nimport { arc as d3arc } from 'd3';\n\nimport { ArcDatum } from '../../types';\nimport { PieChartProps, PieChartVariant } from './types';\nimport { StyledPieChart, StyledPieChartEmptyText } from './styles';\nimport { Arcs } from '../Arcs';\nimport { empty } from '../../scheme';\nimport { sizeToDimension } from './utils';\nimport { useTheme } from '@redsift/design-system';\n\nexport const EmptyPieChart = forwardRef<HTMLDivElement, PieChartProps>((props, ref) => {\n const { className, emptyComponent, localeText, size, variant, ...forwardedProps } = props;\n const theme = useTheme();\n\n const isDonut = variant === PieChartVariant.donut || variant === PieChartVariant.spacedDonut;\n\n const { width, height, fontSize, innerRadius } = sizeToDimension(size!);\n const externalRadiusPadding = 8;\n\n const createArc = d3arc<ArcDatum>()\n .innerRadius(isDonut ? innerRadius : 0)\n .outerRadius(width / 2 - externalRadiusPadding);\n\n return (\n <StyledPieChart {...forwardedProps} className={className} ref={ref as RefObject<HTMLDivElement>}>\n {emptyComponent ?? (\n <>\n <StyledPieChartEmptyText\n $maxWidth={innerRadius * 2}\n $textSize={fontSize / 2}\n $isDonut={isDonut}\n $theme={theme}\n >\n <span>{localeText?.emptyChartText}</span>\n </StyledPieChartEmptyText>\n <svg width={width} height={height}>\n <Arcs\n arcs={[\n {\n createArc,\n previousData: {\n data: {\n key: '',\n value: 0,\n },\n startAngle: 0,\n endAngle: 0,\n padAngle: 0,\n value: 0,\n index: 0,\n },\n data: {\n data: {\n key: 'No Data',\n value: 0,\n },\n index: 0,\n value: 0,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n padAngle: 0,\n },\n dataset: [\n {\n data: {\n key: 'No Data',\n value: 0,\n },\n index: 0,\n value: 0,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n padAngle: 0,\n },\n ],\n color: empty,\n },\n ]}\n transform={`translate(${width / 2} ${height / 2})`}\n />\n </svg>\n </>\n )}\n </StyledPieChart>\n );\n});\n","import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","import React, { forwardRef, RefObject, useEffect, useRef } from 'react';\nimport { arc as d3arc, pie as d3pie, sum as d3sum } from 'd3';\n\nimport { useTheme, useMessageFormatter } from '@redsift/design-system';\nimport intlMessages from './intl';\n\nimport { LegendVariant, ArcDatum, CategoryData, CategoryDatum, LegendItemDatum } from '../../types';\nimport { PieChartLegendVariant, PieChartProps, PieChartVariant } from './types';\nimport { StyledPieChartCenterText, StyledPieChart } from './styles';\nimport { Arcs } from '../Arcs';\nimport { useFormatCategoricalData } from '../../hooks';\nimport { Legend } from '../Legend';\nimport { sizeToDimension } from './utils';\nimport { PieChart } from './PieChart';\nimport { getSortingMethod, mergeLegends } from '../../utils';\n\ninterface RenderedPieChartProps extends Required<Pick<PieChartProps, 'data'>>, Omit<PieChartProps, 'data'> {}\n\nexport const RenderedPieChart = forwardRef<HTMLDivElement, RenderedPieChartProps>((props, ref) => {\n const {\n caping,\n className,\n data: propsData,\n disableAnimations,\n getSliceAnchorProps,\n id,\n isHalf,\n isSliceSelected,\n labelDecorator,\n legendDecorator,\n legendVariant,\n legendProps,\n middleText: propsMiddleText,\n onSliceClick,\n others,\n size,\n sliceProps,\n sliceRole,\n sortingMethod,\n subtext: propsSubtext,\n text: propsText,\n colorTheme,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tooltipDecorator: _tooltipDecorator,\n tooltipVariant,\n variant,\n ...forwardedProps\n } = props;\n\n const cache = useRef<CategoryData>(undefined);\n const theme = useTheme();\n\n const format = useMessageFormatter(intlMessages);\n\n const isDonut = variant === PieChartVariant.donut || variant === PieChartVariant.spacedDonut;\n const isSpaced = variant === PieChartVariant.spaced || variant === PieChartVariant.spacedDonut;\n\n const { data, colorScale } = useFormatCategoricalData({\n data: propsData,\n colorTheme: colorTheme!,\n sortingMethod: sortingMethod!,\n caping,\n others,\n theme,\n });\n\n useEffect(() => {\n cache.current = data;\n });\n\n const { width, height, smallFontSize, fontSize, innerRadius } = sizeToDimension(size!, isHalf);\n const externalRadiusPadding = 8;\n\n const createPie = d3pie<CategoryDatum>()\n .value((d) => d.value)\n .sort(null)\n .startAngle(isHalf ? Math.PI * -0.5 : 0)\n .endAngle(isHalf ? Math.PI * 0.5 : Math.PI * 2);\n const createArc = d3arc<ArcDatum>()\n .innerRadius(isDonut ? innerRadius : 0)\n .outerRadius(width / 2 - externalRadiusPadding);\n const pieData = createPie(data);\n const previousPieData = cache.current ? createPie(cache.current) : undefined;\n const total = d3sum(data, (d) => d.value);\n const legendWidth = useRef<string>(undefined);\n if (data && !legendWidth.current) {\n legendWidth.current = `${Math.max(...data.map((d) => d.key.length + String(d.value).length)) * 8 + 32}px`;\n }\n\n const text =\n typeof propsText === 'function'\n ? propsText(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsText;\n const subtext =\n typeof propsSubtext === 'function'\n ? propsSubtext(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsSubtext;\n const middleText =\n typeof propsMiddleText === 'function'\n ? propsMiddleText(\n pieData.map((datum) => {\n const percent = datum.data.value / total;\n return { ...datum, data: { ...datum.data, percent } };\n }),\n total\n )\n : propsMiddleText;\n\n const filteredPieData = pieData.filter((datum) => datum.data.value);\n\n const { extraLegendItems, ...forwardedLegendProps } = legendProps || {};\n\n return (\n <StyledPieChart\n mode={\n typeof onSliceClick === 'function' ||\n typeof getSliceAnchorProps === 'function' ||\n typeof forwardedLegendProps.getLegendItemAnchorProps === 'function'\n ? 'interactive'\n : 'static'\n }\n definition={format('definition', { sliceLength: filteredPieData.length })}\n dataTableRepresentation={{\n header: (\n <thead>\n <tr>\n <th scope=\"col\">Key</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n ),\n body: (\n <tbody>\n {filteredPieData.map((datum) => (\n <tr key={datum.data.key}>\n <th scope=\"row\">{datum.data.key}</th>\n <td>{datum.data.value}</td>\n </tr>\n ))}\n </tbody>\n ),\n }}\n {...forwardedProps}\n className={className}\n id={id}\n ref={ref as RefObject<HTMLDivElement>}\n >\n <div className={`${PieChart.className}__chart-wrapper`}>\n {text ? (\n <StyledPieChartCenterText\n $maxWidth={innerRadius * 2}\n $textSize={fontSize}\n $smallTextSize={smallFontSize}\n $theme={theme}\n >\n {subtext ? <b>{text}</b> : <span>{text}</span>}\n {middleText ? <b>{middleText}</b> : null}\n <span>{subtext}</span>\n </StyledPieChartCenterText>\n ) : null}\n <svg\n width={width}\n height={isHalf ? height + externalRadiusPadding : height}\n aria-label={\n typeof onSliceClick === 'function' || typeof getSliceAnchorProps === 'function'\n ? format('interactive-chart')\n : format('static-chart')\n }\n >\n <Arcs\n arcs={filteredPieData.map((datum, index) => {\n const percent = datum.data.value / total;\n const from = previousPieData\n ? previousPieData[index]\n : {\n data: {\n key: '',\n value: 0,\n },\n startAngle: isHalf ? Math.PI * -0.5 : 0,\n endAngle: isHalf ? Math.PI * -0.5 : 0,\n padAngle: 0,\n value: 0,\n index: index,\n };\n const to = { ...datum, data: { ...datum.data, percent } };\n\n return {\n color: colorScale?.(to.data.key),\n createArc,\n previousData: from,\n id: `id${id}__arc-${index}`,\n index,\n isSelected: isSliceSelected!(to),\n key: `id${id}__arc-${index}`,\n data: to,\n dataset: pieData,\n anchorProps: getSliceAnchorProps ? getSliceAnchorProps(to) : undefined,\n };\n })}\n disableAnimations={disableAnimations}\n hasLabels={legendVariant === PieChartLegendVariant.internal}\n hasStroke={isSpaced}\n labelDecorator={labelDecorator}\n onClick={onSliceClick}\n role={sliceRole}\n sliceProps={sliceProps}\n tooltipVariant={tooltipVariant}\n transform={`translate(${width / 2} ${isHalf ? height : height / 2})`}\n />\n </svg>\n </div>\n {legendVariant !== PieChartLegendVariant.none && legendVariant !== PieChartLegendVariant.internal ? (\n <Legend\n data={(extraLegendItems\n ? mergeLegends(extraLegendItems, data).sort(getSortingMethod(sortingMethod!))\n : data\n ).map((d) => ({\n ...d,\n color: colorScale?.(d.key)!,\n }))}\n variant={\n legendVariant === PieChartLegendVariant.externalLabelValue\n ? LegendVariant.value\n : legendVariant === PieChartLegendVariant.externalLabelPercent\n ? LegendVariant.percent\n : legendVariant === PieChartLegendVariant.externalLabel\n ? LegendVariant.label\n : LegendVariant.custom\n }\n width={legendWidth.current}\n labelDecorator={\n labelDecorator ? (datum: LegendItemDatum, props) => labelDecorator(datum as ArcDatum, props) : undefined\n }\n legendDecorator={\n legendDecorator ? (datum: LegendItemDatum, props) => legendDecorator(datum as ArcDatum, props) : undefined\n }\n {...forwardedLegendProps}\n />\n ) : null}\n </StyledPieChart>\n );\n});\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport { Comp, useId } from '@redsift/design-system';\n\nimport { ChartSize, ColorTheme, TooltipVariant } from '../../types';\nimport { PieChartLegendVariant, PieChartProps, PieChartVariant } from './types';\nimport { LoadingPieChart } from './LoadingPieChart';\nimport { EmptyPieChart } from './EmptyPieChart';\nimport { RenderedPieChart } from './RenderedPieChart';\n\nconst COMPONENT_NAME = 'PieChart';\nconst CLASSNAME = 'redsift-piechart';\n\n/**\n * PieChart displays proportional data as slices of a circle.\n * Built on D3.js with interactive slices and customizable legends.\n *\n * Variants: `default`, `spaced`, `donut`, `spacedDonut`\n *\n * Data format: `CategoryData` `[{ key: string, value: number }]`\n *\n * @example\n * // Basic pie chart\n * const data = [\n * { key: 'Category A', value: 30 },\n * { key: 'Category B', value: 45 },\n * { key: 'Category C', value: 25 },\n * ];\n * <PieChart data={data} size=\"medium\" />\n *\n * @example\n * // Donut chart with center text\n * <PieChart\n * data={statusData}\n * variant=\"donut\"\n * text=\"Total\"\n * subtext=\"1,234\"\n * />\n *\n * @example\n * // Half pie (semicircle) chart\n * <PieChart\n * data={progressData}\n * isHalf={true}\n * variant=\"donut\"\n * text=\"Progress\"\n * subtext=\"75%\"\n * />\n *\n * @example\n * // With click handler and tooltips\n * <PieChart\n * data={breakdownData}\n * tooltipVariant=\"value\"\n * onSliceClick={(d) => filterBy(d.key)}\n * legendVariant=\"externalLabel\"\n * />\n *\n * @example\n * // Cap small values into \"Others\"\n * <PieChart\n * data={manyCategories}\n * caping={5}\n * others={true}\n * sortingMethod=\"desc-value\"\n * />\n */\n\nexport const PieChart: Comp<PieChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n caping,\n chartRef,\n className,\n colorTheme = ColorTheme.default,\n data: propsData,\n emptyComponent,\n id: propsId,\n isSliceSelected = () => true,\n labelDecorator,\n legendDecorator,\n legendProps,\n legendVariant: propsLegendVariant,\n localeText = { emptyChartText: 'No Data' },\n middleText,\n onSliceClick,\n others = true,\n size = ChartSize.medium,\n sliceProps,\n sliceRole,\n sortingMethod = 'desc-value',\n subtext,\n text,\n tooltipDecorator,\n tooltipVariant = TooltipVariant.value,\n variant = PieChartVariant.spaced,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const legendVariant = propsLegendVariant ?? PieChartLegendVariant.none;\n\n if (propsData === undefined || propsData === null) {\n return <LoadingPieChart id={id} {...forwardedProps} ref={ref} />;\n }\n\n if (propsData.length === 0) {\n return (\n <EmptyPieChart\n data={propsData}\n emptyComponent={emptyComponent}\n id={id}\n localeText={localeText}\n size={size}\n sortingMethod={sortingMethod}\n variant={variant}\n {...forwardedProps}\n ref={ref}\n />\n );\n }\n\n return (\n <RenderedPieChart\n caping={caping}\n chartRef={chartRef}\n className={classNames(PieChart.className, className)}\n data={propsData}\n id={id}\n isSliceSelected={isSliceSelected}\n labelDecorator={labelDecorator}\n legendDecorator={legendDecorator}\n legendProps={legendProps}\n legendVariant={legendVariant}\n middleText={middleText}\n onSliceClick={onSliceClick}\n others={others}\n size={size}\n sliceProps={sliceProps}\n sliceRole={sliceRole}\n sortingMethod={sortingMethod}\n subtext={subtext}\n text={text}\n colorTheme={colorTheme}\n tooltipDecorator={tooltipDecorator}\n tooltipVariant={tooltipVariant}\n variant={variant}\n {...forwardedProps}\n ref={ref}\n />\n );\n});\nPieChart.className = CLASSNAME;\nPieChart.displayName = COMPONENT_NAME;\n"],"names":["PieChartVariant","plain","spaced","donut","spacedDonut","PieChartLegendVariant","none","internal","externalLabel","externalLabelValue","externalLabelPercent","custom","StyledPieChart","styled","ChartContainer","StyledPieChartCenterText","div","_ref","$maxWidth","_ref2","$theme","_ref3","$textSize","_ref4","_ref5","$smallTextSize","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","Theme","light","StyledPieChartEmptyText","_ref13","_ref14","$isDonut","css","_ref15","_ref16","LoadingPieChart","forwardRef","props","ref","className","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","_extends","sizeToDimension","size","isHalf","ChartSize","small","width","height","smallFontSize","fontSize","innerRadius","large","medium","EmptyPieChart","emptyComponent","localeText","variant","theme","useTheme","isDonut","externalRadiusPadding","createArc","d3arc","outerRadius","Fragment","emptyChartText","Arcs","arcs","previousData","data","key","value","startAngle","endAngle","padAngle","index","Math","PI","dataset","color","empty","transform","enUS","frFR","RenderedPieChart","caping","propsData","disableAnimations","getSliceAnchorProps","id","isSliceSelected","labelDecorator","legendDecorator","legendVariant","legendProps","middleText","propsMiddleText","onSliceClick","others","sliceProps","sliceRole","sortingMethod","subtext","propsSubtext","text","propsText","colorTheme","tooltipDecorator","_tooltipDecorator","tooltipVariant","cache","useRef","undefined","format","useMessageFormatter","intlMessages","isSpaced","colorScale","useFormatCategoricalData","useEffect","current","createPie","d3pie","d","sort","pieData","previousPieData","total","d3sum","legendWidth","max","map","length","String","datum","percent","_objectSpread","filteredPieData","filter","extraLegendItems","forwardedLegendProps","_excluded2","mode","getLegendItemAnchorProps","definition","sliceLength","dataTableRepresentation","header","scope","body","PieChart","from","to","isSelected","anchorProps","hasLabels","hasStroke","onClick","role","Legend","mergeLegends","getSortingMethod","LegendVariant","label","COMPONENT_NAME","CLASSNAME","chartRef","ColorTheme","default","propsId","propsLegendVariant","TooltipVariant","_id","useId","classNames","displayName"],"mappings":";;;;;;;;;;;;;;AAmBA;AACA;AACA;AACO,MAAMA,eAAe,GAAG;AAC7BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,WAAW,EAAE,aAAA;AACf,EAAU;AAGV;AACA;AACA;AACO,MAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,aAAa,EAAE,eAAe;AAC9BC,EAAAA,kBAAkB,EAAE,oBAAoB;AACxCC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,MAAM,EAAE,QAAA;AACV,EAAU;;AAaV;AACA;AACA;;AClDA;AACA;AACA;MACaC,cAAc,GAAGC,MAAM,CAACC,cAAc,CAAuB,CAAA;AAC1E;AACA;AACA;AACA,EAAC;AAEYC,MAAAA,wBAAwB,GAAGF,MAAM,CAACG,GAK5C,CAAA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAA,EAAiBC,IAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,SAAAA;AAAU,GAAC,GAAAD,IAAA,CAAA;AAAA,EAAA,OAAKC,SAAS,CAAA;AAAA,CAAC,CAAA;AAC9C;AACA;AACA;AACA;AACA,WAAA,EAAaC,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,MAAAA;AAAO,GAAC,GAAAD,KAAA,CAAA;EAAA,OAAM,CAAA,oBAAA,EAAsBC,MAAO,CAA0B,yBAAA,CAAA,CAAA;AAAA,CAAC,CAAA;AACtF;AACA,eAAA,EAAiBC,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,SAAAA;AAAU,GAAC,GAAAD,KAAA,CAAA;AAAA,EAAA,OAAKC,SAAS,CAAA;AAAA,CAAC,CAAA;AAC9C,iBAAA,EAAmBC,KAAA,IAAA;EAAA,IAAC;AAAED,IAAAA,SAAAA;AAAU,GAAC,GAAAC,KAAA,CAAA;AAAA,EAAA,OAAKD,SAAS,CAAA;AAAA,CAAC,CAAA;AAChD;AACA;AACA;AACA;AACA;AACA,iBAAA,EAAmBE,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,cAAAA;AAAe,GAAC,GAAAD,KAAA,CAAA;AAAA,EAAA,OAAKC,cAAc,CAAA;AAAA,CAAC,CAAA;AAC1D,mBAAA,EAAqBC,KAAA,IAAA;EAAA,IAAC;AAAED,IAAAA,cAAAA;AAAe,GAAC,GAAAC,KAAA,CAAA;AAAA,EAAA,OAAKD,cAAc,CAAA;AAAA,CAAC,CAAA;AAC5D;AACA;AACA;AACA,WAAA,EAAaE,KAAA,IAAA;EAAA,IAAC;AAAEP,IAAAA,MAAAA;AAAO,GAAC,GAAAO,KAAA,CAAA;EAAA,OAAM,CAAA,oBAAA,EAAsBP,MAAO,CAA0B,yBAAA,CAAA,CAAA;AAAA,CAAC,CAAA;AACtF,eAAA,EAAiBQ,KAAA,IAAA;EAAA,IAAC;AAAEN,IAAAA,SAAAA;AAAU,GAAC,GAAAM,KAAA,CAAA;AAAA,EAAA,OAAKN,SAAS,CAAA;AAAA,CAAC,CAAA;AAC9C,iBAAA,EAAmBO,KAAA,IAAA;EAAA,IAAC;AAAEP,IAAAA,SAAAA;AAAU,GAAC,GAAAO,KAAA,CAAA;AAAA,EAAA,OAAKP,SAAS,CAAA;AAAA,CAAC,CAAA;AAChD;AACA;AACA,iBAAA,EAAmBQ,MAAA,IAAA;EAAA,IAAC;AAAEL,IAAAA,cAAAA;AAAe,GAAC,GAAAK,MAAA,CAAA;AAAA,EAAA,OAAKL,cAAc,CAAA;AAAA,CAAC,CAAA;AAC1D,mBAAA,EAAqBM,MAAA,IAAA;EAAA,IAAC;AAAEN,IAAAA,cAAAA;AAAe,GAAC,GAAAM,MAAA,CAAA;AAAA,EAAA,OAAKN,cAAc,CAAA;AAAA,CAAC,CAAA;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,WAAA,EAAaO,MAAA,IAAA;EAAA,IAAC;AAAEZ,IAAAA,MAAAA;AAAO,GAAC,GAAAY,MAAA,CAAA;EAAA,OAAMZ,MAAM,KAAKa,KAAK,CAACC,KAAK,GAAG,oBAAoB,GAAG,0BAA0B,CAAA;AAAA,CAAE,CAAA;AAC1G;AACA;AACA,EAAC;AAEYC,MAAAA,uBAAuB,GAAGtB,MAAM,CAACG,GAK3C,CAAA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAA,EAAiBoB,MAAA,IAAA;EAAA,IAAC;AAAElB,IAAAA,SAAAA;AAAU,GAAC,GAAAkB,MAAA,CAAA;AAAA,EAAA,OAAKlB,SAAS,CAAA;AAAA,CAAC,CAAA;AAC9C;AACA;AACA;AACA;AACA,WAAA,EAAamB,MAAA,IAAA;EAAA,IAAC;IAAEC,QAAQ;AAAElB,IAAAA,MAAAA;AAAO,GAAC,GAAAiB,MAAA,CAAA;EAAA,OAC5BC,QAAQ,GACJC,GAAI,CAAA,qCAAA,CAAsC,GAC1CA,GAAI,CAAA,oBAAA,EAAsBnB,MAAO,CAA0B,yBAAA,CAAA,CAAA;AAAA,CAAC,CAAA;AACtE,eAAA,EAAiBoB,MAAA,IAAA;EAAA,IAAC;AAAElB,IAAAA,SAAAA;AAAU,GAAC,GAAAkB,MAAA,CAAA;AAAA,EAAA,OAAKlB,SAAS,CAAA;AAAA,CAAC,CAAA;AAC9C,iBAAA,EAAmBmB,MAAA,IAAA;EAAA,IAAC;AAAEnB,IAAAA,SAAAA;AAAU,GAAC,GAAAmB,MAAA,CAAA;AAAA,EAAA,OAAKnB,SAAS,CAAA;AAAA,CAAC,CAAA;AAChD;AACA;;;AC9FO,MAAMoB,eAAe,gBAAGC,UAAU,CACvC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACd,MAAM;AAAEC,MAAAA,SAAAA;AAA6B,KAAC,GAAGF,KAAK;AAAxBG,IAAAA,cAAc,GAAAC,wBAAA,CAAKJ,KAAK,EAAAK,WAAA,CAAA,CAAA;EAE9C,oBACEC,KAAA,CAAAC,aAAA,CAACvC,cAAc,EAAAwC,QAAA,KACTL,cAAc,EAAA;AAClBD,IAAAA,SAAS,EAAEA,SAAU;AACrBD,IAAAA,GAAG,EAAEA,GAAAA;AAAiC,GAAA,CAAA,EACvC,YAEe,CAAC,CAAA;AAErB,CACF,CAAC;;AChBM,MAAMQ,eAAe,GAAGA,CAACC,IAAoC,EAAEC,MAAgB,KAAyB;AAC7G,EAAA,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;AAC5B,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,QAAQA,IAAI;IACV,KAAKE,SAAS,CAACC,KAAK;MAClB,OAAO;AACLC,QAAAA,KAAK,EAAE,GAAG;QACVC,MAAM,EAAE,GAAG,IAAIJ,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAChCK,QAAAA,aAAa,EAAE,EAAE;AACjBC,QAAAA,QAAQ,EAAE,EAAE;AACZC,QAAAA,WAAW,EAAE,EAAA;OACd,CAAA;IACH,KAAKN,SAAS,CAACO,KAAK;MAClB,OAAO;AACLL,QAAAA,KAAK,EAAE,GAAG;QACVC,MAAM,EAAE,GAAG,IAAIJ,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAChCK,QAAAA,aAAa,EAAE,EAAE;AACjBC,QAAAA,QAAQ,EAAE,EAAE;AACZC,QAAAA,WAAW,EAAE,EAAA;OACd,CAAA;IACH,KAAKN,SAAS,CAACQ,MAAM,CAAA;AACrB,IAAA;MACE,OAAO;AACLN,QAAAA,KAAK,EAAE,GAAG;QACVC,MAAM,EAAE,GAAG,IAAIJ,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAChCK,QAAAA,aAAa,EAAE,EAAE;AACjBC,QAAAA,QAAQ,EAAE,EAAE;AACZC,QAAAA,WAAW,EAAE,EAAA;OACd,CAAA;AACL,GAAA;AACF,CAAC;;;ACxBM,MAAMG,aAAa,gBAAGtB,UAAU,CAAgC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACrF,MAAM;MAAEC,SAAS;MAAEoB,cAAc;MAAEC,UAAU;MAAEb,IAAI;AAAEc,MAAAA,OAAAA;AAA2B,KAAC,GAAGxB,KAAK;AAAxBG,IAAAA,cAAc,GAAAC,wBAAA,CAAKJ,KAAK,EAAAK,WAAA,CAAA,CAAA;AACzF,EAAA,MAAMoB,KAAK,GAAGC,QAAQ,EAAE,CAAA;AAExB,EAAA,MAAMC,OAAO,GAAGH,OAAO,KAAKpE,eAAe,CAACG,KAAK,IAAIiE,OAAO,KAAKpE,eAAe,CAACI,WAAW,CAAA;EAE5F,MAAM;IAAEsD,KAAK;IAAEC,MAAM;IAAEE,QAAQ;AAAEC,IAAAA,WAAAA;AAAY,GAAC,GAAGT,eAAe,CAACC,IAAK,CAAC,CAAA;EACvE,MAAMkB,qBAAqB,GAAG,CAAC,CAAA;EAE/B,MAAMC,SAAS,GAAGC,GAAK,EAAY,CAChCZ,WAAW,CAACS,OAAO,GAAGT,WAAW,GAAG,CAAC,CAAC,CACtCa,WAAW,CAACjB,KAAK,GAAG,CAAC,GAAGc,qBAAqB,CAAC,CAAA;EAEjD,oBACEtB,KAAA,CAAAC,aAAA,CAACvC,cAAc,EAAAwC,QAAA,KAAKL,cAAc,EAAA;AAAED,IAAAA,SAAS,EAAEA,SAAU;AAACD,IAAAA,GAAG,EAAEA,GAAAA;AAAiC,GAAA,CAAA,EAC7FqB,cAAc,KAAdA,IAAAA,IAAAA,cAAc,cAAdA,cAAc,gBACbhB,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAA0B,QAAA,EAAA,IAAA,eACE1B,KAAA,CAAAC,aAAA,CAAChB,uBAAuB,EAAA;IACtBjB,SAAS,EAAE4C,WAAW,GAAG,CAAE;IAC3BxC,SAAS,EAAEuC,QAAQ,GAAG,CAAE;AACxBvB,IAAAA,QAAQ,EAAEiC,OAAQ;AAClBnD,IAAAA,MAAM,EAAEiD,KAAAA;AAAM,GAAA,eAEdnB,KAAA,CAAAC,aAAA,CAAOgB,MAAAA,EAAAA,IAAAA,EAAAA,UAAU,aAAVA,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAVA,UAAU,CAAEU,cAAqB,CACjB,CAAC,eAC1B3B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKO,IAAAA,KAAK,EAAEA,KAAM;AAACC,IAAAA,MAAM,EAAEA,MAAAA;AAAO,GAAA,eAChCT,KAAA,CAAAC,aAAA,CAAC2B,IAAI,EAAA;AACHC,IAAAA,IAAI,EAAE,CACJ;MACEN,SAAS;AACTO,MAAAA,YAAY,EAAE;AACZC,QAAAA,IAAI,EAAE;AACJC,UAAAA,GAAG,EAAE,EAAE;AACPC,UAAAA,KAAK,EAAE,CAAA;SACR;AACDC,QAAAA,UAAU,EAAE,CAAC;AACbC,QAAAA,QAAQ,EAAE,CAAC;AACXC,QAAAA,QAAQ,EAAE,CAAC;AACXH,QAAAA,KAAK,EAAE,CAAC;AACRI,QAAAA,KAAK,EAAE,CAAA;OACR;AACDN,MAAAA,IAAI,EAAE;AACJA,QAAAA,IAAI,EAAE;AACJC,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAE,CAAA;SACR;AACDI,QAAAA,KAAK,EAAE,CAAC;AACRJ,QAAAA,KAAK,EAAE,CAAC;AACRC,QAAAA,UAAU,EAAE,CAAC;AACbC,QAAAA,QAAQ,EAAE,CAAC,GAAGG,IAAI,CAACC,EAAE;AACrBH,QAAAA,QAAQ,EAAE,CAAA;OACX;AACDI,MAAAA,OAAO,EAAE,CACP;AACET,QAAAA,IAAI,EAAE;AACJC,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAE,CAAA;SACR;AACDI,QAAAA,KAAK,EAAE,CAAC;AACRJ,QAAAA,KAAK,EAAE,CAAC;AACRC,QAAAA,UAAU,EAAE,CAAC;AACbC,QAAAA,QAAQ,EAAE,CAAC,GAAGG,IAAI,CAACC,EAAE;AACrBH,QAAAA,QAAQ,EAAE,CAAA;AACZ,OAAC,CACF;AACDK,MAAAA,KAAK,EAAEC,KAAAA;AACT,KAAC,CACD;IACFC,SAAS,EAAG,aAAYnC,KAAK,GAAG,CAAE,CAAGC,CAAAA,EAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;GACjD,CACE,CACL,CAEU,CAAC,CAAA;AAErB,CAAC,CAAC;;;;;;;;;;;;;;;;ACnFF,mBAAe;AACb,EAAA,OAAO,EAAEmC,IAAI;AACb,EAAA,OAAO,EAAEC,IAAAA;AACX,CAAC;;;;ACYM,MAAMC,gBAAgB,gBAAGrD,UAAU,CAAwC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChG,MAAM;MACJoD,MAAM;MACNnD,SAAS;AACTmC,MAAAA,IAAI,EAAEiB,SAAS;MACfC,iBAAiB;MACjBC,mBAAmB;MACnBC,EAAE;MACF9C,MAAM;MACN+C,eAAe;MACfC,cAAc;MACdC,eAAe;MACfC,aAAa;MACbC,WAAW;AACXC,MAAAA,UAAU,EAAEC,eAAe;MAC3BC,YAAY;MACZC,MAAM;MACNxD,IAAI;MACJyD,UAAU;MACVC,SAAS;MACTC,aAAa;AACbC,MAAAA,OAAO,EAAEC,YAAY;AACrBC,MAAAA,IAAI,EAAEC,SAAS;MACfC,UAAU;AACV;AACAC,MAAAA,gBAAgB,EAAEC,iBAAiB;MACnCC,cAAc;AACdrD,MAAAA,OAAAA;AAEF,KAAC,GAAGxB,KAAK;AADJG,IAAAA,cAAc,GAAAC,wBAAA,CACfJ,KAAK,EAAAK,WAAA,CAAA,CAAA;AAET,EAAA,MAAMyE,KAAK,GAAGC,MAAM,CAAeC,SAAS,CAAC,CAAA;AAC7C,EAAA,MAAMvD,KAAK,GAAGC,QAAQ,EAAE,CAAA;AAExB,EAAA,MAAMuD,MAAM,GAAGC,mBAAmB,CAACC,YAAY,CAAC,CAAA;AAEhD,EAAA,MAAMxD,OAAO,GAAGH,OAAO,KAAKpE,eAAe,CAACG,KAAK,IAAIiE,OAAO,KAAKpE,eAAe,CAACI,WAAW,CAAA;AAC5F,EAAA,MAAM4H,QAAQ,GAAG5D,OAAO,KAAKpE,eAAe,CAACE,MAAM,IAAIkE,OAAO,KAAKpE,eAAe,CAACI,WAAW,CAAA;EAE9F,MAAM;IAAE6E,IAAI;AAAEgD,IAAAA,UAAAA;GAAY,GAAGC,wBAAwB,CAAC;AACpDjD,IAAAA,IAAI,EAAEiB,SAAS;AACfoB,IAAAA,UAAU,EAAEA,UAAW;AACvBL,IAAAA,aAAa,EAAEA,aAAc;IAC7BhB,MAAM;IACNa,MAAM;AACNzC,IAAAA,KAAAA;AACF,GAAC,CAAC,CAAA;AAEF8D,EAAAA,SAAS,CAAC,MAAM;IACdT,KAAK,CAACU,OAAO,GAAGnD,IAAI,CAAA;AACtB,GAAC,CAAC,CAAA;EAEF,MAAM;IAAEvB,KAAK;IAAEC,MAAM;IAAEC,aAAa;IAAEC,QAAQ;AAAEC,IAAAA,WAAAA;AAAY,GAAC,GAAGT,eAAe,CAACC,IAAI,EAAGC,MAAM,CAAC,CAAA;EAC9F,MAAMiB,qBAAqB,GAAG,CAAC,CAAA;EAE/B,MAAM6D,SAAS,GAAGC,GAAK,EAAiB,CACrCnD,KAAK,CAAEoD,CAAC,IAAKA,CAAC,CAACpD,KAAK,CAAC,CACrBqD,IAAI,CAAC,IAAI,CAAC,CACVpD,UAAU,CAAC7B,MAAM,GAAGiC,IAAI,CAACC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CACvCJ,QAAQ,CAAC9B,MAAM,GAAGiC,IAAI,CAACC,EAAE,GAAG,GAAG,GAAGD,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC,CAAA;EACjD,MAAMhB,SAAS,GAAGC,GAAK,EAAY,CAChCZ,WAAW,CAACS,OAAO,GAAGT,WAAW,GAAG,CAAC,CAAC,CACtCa,WAAW,CAACjB,KAAK,GAAG,CAAC,GAAGc,qBAAqB,CAAC,CAAA;AACjD,EAAA,MAAMiE,OAAO,GAAGJ,SAAS,CAACpD,IAAI,CAAC,CAAA;AAC/B,EAAA,MAAMyD,eAAe,GAAGhB,KAAK,CAACU,OAAO,GAAGC,SAAS,CAACX,KAAK,CAACU,OAAO,CAAC,GAAGR,SAAS,CAAA;EAC5E,MAAMe,KAAK,GAAGC,GAAK,CAAC3D,IAAI,EAAGsD,CAAC,IAAKA,CAAC,CAACpD,KAAK,CAAC,CAAA;AACzC,EAAA,MAAM0D,WAAW,GAAGlB,MAAM,CAASC,SAAS,CAAC,CAAA;AAC7C,EAAA,IAAI3C,IAAI,IAAI,CAAC4D,WAAW,CAACT,OAAO,EAAE;AAChCS,IAAAA,WAAW,CAACT,OAAO,GAAI,CAAA,EAAE5C,IAAI,CAACsD,GAAG,CAAC,GAAG7D,IAAI,CAAC8D,GAAG,CAAER,CAAC,IAAKA,CAAC,CAACrD,GAAG,CAAC8D,MAAM,GAAGC,MAAM,CAACV,CAAC,CAACpD,KAAK,CAAC,CAAC6D,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAG,CAAG,EAAA,CAAA,CAAA;AAC3G,GAAA;AAEA,EAAA,MAAM5B,IAAI,GACR,OAAOC,SAAS,KAAK,UAAU,GAC3BA,SAAS,CACPoB,OAAO,CAACM,GAAG,CAAEG,KAAK,IAAK;IACrB,MAAMC,OAAO,GAAGD,KAAK,CAACjE,IAAI,CAACE,KAAK,GAAGwD,KAAK,CAAA;AACxC,IAAA,OAAAS,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYF,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjE,MAAAA,IAAI,EAAAmE,cAAA,CAAAA,cAAA,CAAOF,EAAAA,EAAAA,KAAK,CAACjE,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEkE,QAAAA,OAAAA;AAAO,OAAA,CAAA;AAAE,KAAA,CAAA,CAAA;AACrD,GAAC,CAAC,EACFR,KACF,CAAC,GACDtB,SAAS,CAAA;AACf,EAAA,MAAMH,OAAO,GACX,OAAOC,YAAY,KAAK,UAAU,GAC9BA,YAAY,CACVsB,OAAO,CAACM,GAAG,CAAEG,KAAK,IAAK;IACrB,MAAMC,OAAO,GAAGD,KAAK,CAACjE,IAAI,CAACE,KAAK,GAAGwD,KAAK,CAAA;AACxC,IAAA,OAAAS,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYF,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjE,MAAAA,IAAI,EAAAmE,cAAA,CAAAA,cAAA,CAAOF,EAAAA,EAAAA,KAAK,CAACjE,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEkE,QAAAA,OAAAA;AAAO,OAAA,CAAA;AAAE,KAAA,CAAA,CAAA;AACrD,GAAC,CAAC,EACFR,KACF,CAAC,GACDxB,YAAY,CAAA;AAClB,EAAA,MAAMR,UAAU,GACd,OAAOC,eAAe,KAAK,UAAU,GACjCA,eAAe,CACb6B,OAAO,CAACM,GAAG,CAAEG,KAAK,IAAK;IACrB,MAAMC,OAAO,GAAGD,KAAK,CAACjE,IAAI,CAACE,KAAK,GAAGwD,KAAK,CAAA;AACxC,IAAA,OAAAS,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYF,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjE,MAAAA,IAAI,EAAAmE,cAAA,CAAAA,cAAA,CAAOF,EAAAA,EAAAA,KAAK,CAACjE,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEkE,QAAAA,OAAAA;AAAO,OAAA,CAAA;AAAE,KAAA,CAAA,CAAA;AACrD,GAAC,CAAC,EACFR,KACF,CAAC,GACD/B,eAAe,CAAA;AAErB,EAAA,MAAMyC,eAAe,GAAGZ,OAAO,CAACa,MAAM,CAAEJ,KAAK,IAAKA,KAAK,CAACjE,IAAI,CAACE,KAAK,CAAC,CAAA;AAEnE,EAAA,MAAAlE,IAAA,GAAsDyF,WAAW,IAAI,EAAE;AAAjE,IAAA;AAAE6C,MAAAA,gBAAAA;AAA0C,KAAC,GAAAtI,IAAA;AAAtBuI,IAAAA,oBAAoB,GAAAxG,wBAAA,CAAA/B,IAAA,EAAAwI,UAAA,CAAA,CAAA;AAEjD,EAAA,oBACEvG,KAAA,CAAAC,aAAA,CAACvC,cAAc,EAAAwC,QAAA,CAAA;IACbsG,IAAI,EACF,OAAO7C,YAAY,KAAK,UAAU,IAClC,OAAOT,mBAAmB,KAAK,UAAU,IACzC,OAAOoD,oBAAoB,CAACG,wBAAwB,KAAK,UAAU,GAC/D,aAAa,GACb,QACL;AACDC,IAAAA,UAAU,EAAE/B,MAAM,CAAC,YAAY,EAAE;MAAEgC,WAAW,EAAER,eAAe,CAACL,MAAAA;AAAO,KAAC,CAAE;AAC1Ec,IAAAA,uBAAuB,EAAE;MACvBC,MAAM,eACJ7G,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA,IAAA,eACED,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,eACED,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI6G,QAAAA,KAAK,EAAC,KAAA;AAAK,OAAA,EAAC,KAAO,CAAC,eACxB9G,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI6G,QAAAA,KAAK,EAAC,KAAA;OAAM,EAAA,OAAS,CACvB,CACC,CACR;AACDC,MAAAA,IAAI,eACF/G,KAAA,CAAAC,aAAA,CACGkG,OAAAA,EAAAA,IAAAA,EAAAA,eAAe,CAACN,GAAG,CAAEG,KAAK,iBACzBhG,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI+B,QAAAA,GAAG,EAAEgE,KAAK,CAACjE,IAAI,CAACC,GAAAA;OAClBhC,eAAAA,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI6G,QAAAA,KAAK,EAAC,KAAA;AAAK,OAAA,EAAEd,KAAK,CAACjE,IAAI,CAACC,GAAQ,CAAC,eACrChC,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK+F,KAAK,CAACjE,IAAI,CAACE,KAAU,CACxB,CACL,CACI,CAAA;AAEX,KAAA;AAAE,GAAA,EACEpC,cAAc,EAAA;AAClBD,IAAAA,SAAS,EAAEA,SAAU;AACrBuD,IAAAA,EAAE,EAAEA,EAAG;AACPxD,IAAAA,GAAG,EAAEA,GAAAA;GAELK,CAAAA,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAG,CAAA,EAAEoH,QAAQ,CAACpH,SAAU,CAAA,eAAA,CAAA;AAAiB,GAAA,EACpDsE,IAAI,gBACHlE,KAAA,CAAAC,aAAA,CAACpC,wBAAwB,EAAA;IACvBG,SAAS,EAAE4C,WAAW,GAAG,CAAE;AAC3BxC,IAAAA,SAAS,EAAEuC,QAAS;AACpBpC,IAAAA,cAAc,EAAEmC,aAAc;AAC9BxC,IAAAA,MAAM,EAAEiD,KAAAA;AAAM,GAAA,EAEb6C,OAAO,gBAAGhE,KAAA,CAAAC,aAAA,YAAIiE,IAAQ,CAAC,gBAAGlE,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAOiE,IAAW,CAAC,EAC7CT,UAAU,gBAAGzD,KAAA,CAAAC,aAAA,YAAIwD,UAAc,CAAC,GAAG,IAAI,eACxCzD,KAAA,CAAAC,aAAA,CAAO+D,MAAAA,EAAAA,IAAAA,EAAAA,OAAc,CACG,CAAC,GACzB,IAAI,eACRhE,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEO,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,MAAM,EAAEJ,MAAM,GAAGI,MAAM,GAAGa,qBAAqB,GAAGb,MAAO;AACzD,IAAA,YAAA,EACE,OAAOkD,YAAY,KAAK,UAAU,IAAI,OAAOT,mBAAmB,KAAK,UAAU,GAC3EyB,MAAM,CAAC,mBAAmB,CAAC,GAC3BA,MAAM,CAAC,cAAc,CAAA;AAC1B,GAAA,eAED3E,KAAA,CAAAC,aAAA,CAAC2B,IAAI,EAAA;IACHC,IAAI,EAAEsE,eAAe,CAACN,GAAG,CAAC,CAACG,KAAK,EAAE3D,KAAK,KAAK;MAC1C,MAAM4D,OAAO,GAAGD,KAAK,CAACjE,IAAI,CAACE,KAAK,GAAGwD,KAAK,CAAA;MACxC,MAAMwB,IAAI,GAAGzB,eAAe,GACxBA,eAAe,CAACnD,KAAK,CAAC,GACtB;AACEN,QAAAA,IAAI,EAAE;AACJC,UAAAA,GAAG,EAAE,EAAE;AACPC,UAAAA,KAAK,EAAE,CAAA;SACR;QACDC,UAAU,EAAE7B,MAAM,GAAGiC,IAAI,CAACC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QACvCJ,QAAQ,EAAE9B,MAAM,GAAGiC,IAAI,CAACC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACrCH,QAAAA,QAAQ,EAAE,CAAC;AACXH,QAAAA,KAAK,EAAE,CAAC;AACRI,QAAAA,KAAK,EAAEA,KAAAA;OACR,CAAA;AACL,MAAA,MAAM6E,EAAE,GAAAhB,cAAA,CAAAA,cAAA,KAAQF,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjE,QAAAA,IAAI,EAAAmE,cAAA,CAAAA,cAAA,CAAOF,EAAAA,EAAAA,KAAK,CAACjE,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEkE,UAAAA,OAAAA;AAAO,SAAA,CAAA;OAAI,CAAA,CAAA;MAEzD,OAAO;AACLxD,QAAAA,KAAK,EAAEsC,UAAU,KAAVA,IAAAA,IAAAA,UAAU,KAAVA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAGmC,EAAE,CAACnF,IAAI,CAACC,GAAG,CAAC;QAChCT,SAAS;AACTO,QAAAA,YAAY,EAAEmF,IAAI;AAClB9D,QAAAA,EAAE,EAAG,CAAA,EAAA,EAAIA,EAAG,CAAA,MAAA,EAAQd,KAAM,CAAC,CAAA;QAC3BA,KAAK;AACL8E,QAAAA,UAAU,EAAE/D,eAAe,CAAE8D,EAAE,CAAC;AAChClF,QAAAA,GAAG,EAAG,CAAA,EAAA,EAAImB,EAAG,CAAA,MAAA,EAAQd,KAAM,CAAC,CAAA;AAC5BN,QAAAA,IAAI,EAAEmF,EAAE;AACR1E,QAAAA,OAAO,EAAE+C,OAAO;AAChB6B,QAAAA,WAAW,EAAElE,mBAAmB,GAAGA,mBAAmB,CAACgE,EAAE,CAAC,GAAGxC,SAAAA;OAC9D,CAAA;AACH,KAAC,CAAE;AACHzB,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrCoE,IAAAA,SAAS,EAAE9D,aAAa,KAAKpG,qBAAqB,CAACE,QAAS;AAC5DiK,IAAAA,SAAS,EAAExC,QAAS;AACpBzB,IAAAA,cAAc,EAAEA,cAAe;AAC/BkE,IAAAA,OAAO,EAAE5D,YAAa;AACtB6D,IAAAA,IAAI,EAAE1D,SAAU;AAChBD,IAAAA,UAAU,EAAEA,UAAW;AACvBU,IAAAA,cAAc,EAAEA,cAAe;AAC/B5B,IAAAA,SAAS,EAAG,CAAA,UAAA,EAAYnC,KAAK,GAAG,CAAE,CAAA,CAAA,EAAGH,MAAM,GAAGI,MAAM,GAAGA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;GACnE,CACE,CACF,CAAC,EACL8C,aAAa,KAAKpG,qBAAqB,CAACC,IAAI,IAAImG,aAAa,KAAKpG,qBAAqB,CAACE,QAAQ,gBAC/F2C,KAAA,CAAAC,aAAA,CAACwH,MAAM,EAAAvH,QAAA,CAAA;AACL6B,IAAAA,IAAI,EAAE,CAACsE,gBAAgB,GACnBqB,YAAY,CAACrB,gBAAgB,EAAEtE,IAAI,CAAC,CAACuD,IAAI,CAACqC,gBAAgB,CAAC5D,aAAc,CAAC,CAAC,GAC3EhC,IAAI,EACN8D,GAAG,CAAER,CAAC,IAAAa,cAAA,CAAAA,cAAA,KACHb,CAAC,CAAA,EAAA,EAAA,EAAA;MACJ5C,KAAK,EAAEsC,UAAU,KAAVA,IAAAA,IAAAA,UAAU,uBAAVA,UAAU,CAAGM,CAAC,CAACrD,GAAG,CAAA;AAAE,KAAA,CAC3B,CAAE;AACJd,IAAAA,OAAO,EACLqC,aAAa,KAAKpG,qBAAqB,CAACI,kBAAkB,GACtDqK,aAAa,CAAC3F,KAAK,GACnBsB,aAAa,KAAKpG,qBAAqB,CAACK,oBAAoB,GAC5DoK,aAAa,CAAC3B,OAAO,GACrB1C,aAAa,KAAKpG,qBAAqB,CAACG,aAAa,GACrDsK,aAAa,CAACC,KAAK,GACnBD,aAAa,CAACnK,MACnB;IACD+C,KAAK,EAAEmF,WAAW,CAACT,OAAQ;AAC3B7B,IAAAA,cAAc,EACZA,cAAc,GAAG,CAAC2C,KAAsB,EAAEtG,KAAK,KAAK2D,cAAc,CAAC2C,KAAK,EAActG,KAAK,CAAC,GAAGgF,SAChG;AACDpB,IAAAA,eAAe,EACbA,eAAe,GAAG,CAAC0C,KAAsB,EAAEtG,KAAK,KAAK4D,eAAe,CAAC0C,KAAK,EAActG,KAAK,CAAC,GAAGgF,SAAAA;AAClG,GAAA,EACG4B,oBAAoB,CACzB,CAAC,GACA,IACU,CAAC,CAAA;AAErB,CAAC,CAAC;;;ACnPF,MAAMwB,cAAc,GAAG,UAAU,CAAA;AACjC,MAAMC,SAAS,GAAG,kBAAkB,CAAA;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,MAAMf,QAA6C,gBAAGvH,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACtF,MAAM;MACJoD,MAAM;MACNiF,QAAQ;MACRpI,SAAS;MACTwE,UAAU,GAAG6D,UAAU,CAACC,OAAO;AAC/BnG,MAAAA,IAAI,EAAEiB,SAAS;MACfhC,cAAc;AACdmC,MAAAA,EAAE,EAAEgF,OAAO;MACX/E,eAAe,GAAGA,MAAM,IAAI;MAC5BC,cAAc;MACdC,eAAe;MACfE,WAAW;AACXD,MAAAA,aAAa,EAAE6E,kBAAkB;AACjCnH,MAAAA,UAAU,GAAG;AAAEU,QAAAA,cAAc,EAAE,SAAA;OAAW;MAC1C8B,UAAU;MACVE,YAAY;AACZC,MAAAA,MAAM,GAAG,IAAI;MACbxD,IAAI,GAAGE,SAAS,CAACQ,MAAM;MACvB+C,UAAU;MACVC,SAAS;AACTC,MAAAA,aAAa,GAAG,YAAY;MAC5BC,OAAO;MACPE,IAAI;MACJG,gBAAgB;MAChBE,cAAc,GAAG8D,cAAc,CAACpG,KAAK;MACrCf,OAAO,GAAGpE,eAAe,CAACE,MAAAA;AAE5B,KAAC,GAAG0C,KAAK;AADJG,IAAAA,cAAc,GAAAC,wBAAA,CACfJ,KAAK,EAAAK,SAAA,CAAA,CAAA;AACT,EAAA,MAAM,CAACuI,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMpF,EAAE,GAAGgF,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIG,GAAG,CAAA;EAEzB,MAAM/E,aAAa,GAAG6E,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,cAAlBA,kBAAkB,GAAIjL,qBAAqB,CAACC,IAAI,CAAA;AAEtE,EAAA,IAAI4F,SAAS,KAAK0B,SAAS,IAAI1B,SAAS,KAAK,IAAI,EAAE;AACjD,IAAA,oBAAOhD,KAAA,CAAAC,aAAA,CAACT,eAAe,EAAAU,QAAA,CAAA;AAACiD,MAAAA,EAAE,EAAEA,EAAAA;AAAG,KAAA,EAAKtD,cAAc,EAAA;AAAEF,MAAAA,GAAG,EAAEA,GAAAA;AAAI,KAAA,CAAE,CAAC,CAAA;AAClE,GAAA;AAEA,EAAA,IAAIqD,SAAS,CAAC8C,MAAM,KAAK,CAAC,EAAE;AAC1B,IAAA,oBACE9F,KAAA,CAAAC,aAAA,CAACc,aAAa,EAAAb,QAAA,CAAA;AACZ6B,MAAAA,IAAI,EAAEiB,SAAU;AAChBhC,MAAAA,cAAc,EAAEA,cAAe;AAC/BmC,MAAAA,EAAE,EAAEA,EAAG;AACPlC,MAAAA,UAAU,EAAEA,UAAW;AACvBb,MAAAA,IAAI,EAAEA,IAAK;AACX2D,MAAAA,aAAa,EAAEA,aAAc;AAC7B7C,MAAAA,OAAO,EAAEA,OAAAA;AAAQ,KAAA,EACbrB,cAAc,EAAA;AAClBF,MAAAA,GAAG,EAAEA,GAAAA;AAAI,KAAA,CACV,CAAC,CAAA;AAEN,GAAA;AAEA,EAAA,oBACEK,KAAA,CAAAC,aAAA,CAAC6C,gBAAgB,EAAA5C,QAAA,CAAA;AACf6C,IAAAA,MAAM,EAAEA,MAAO;AACfiF,IAAAA,QAAQ,EAAEA,QAAS;IACnBpI,SAAS,EAAE4I,UAAU,CAACxB,QAAQ,CAACpH,SAAS,EAAEA,SAAS,CAAE;AACrDmC,IAAAA,IAAI,EAAEiB,SAAU;AAChBG,IAAAA,EAAE,EAAEA,EAAG;AACPC,IAAAA,eAAe,EAAEA,eAAgB;AACjCC,IAAAA,cAAc,EAAEA,cAAe;AAC/BC,IAAAA,eAAe,EAAEA,eAAgB;AACjCE,IAAAA,WAAW,EAAEA,WAAY;AACzBD,IAAAA,aAAa,EAAEA,aAAc;AAC7BE,IAAAA,UAAU,EAAEA,UAAW;AACvBE,IAAAA,YAAY,EAAEA,YAAa;AAC3BC,IAAAA,MAAM,EAAEA,MAAO;AACfxD,IAAAA,IAAI,EAAEA,IAAK;AACXyD,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,aAAa,EAAEA,aAAc;AAC7BC,IAAAA,OAAO,EAAEA,OAAQ;AACjBE,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCE,IAAAA,cAAc,EAAEA,cAAe;AAC/BrD,IAAAA,OAAO,EAAEA,OAAAA;AAAQ,GAAA,EACbrB,cAAc,EAAA;AAClBF,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,CACV,CAAC,CAAA;AAEN,CAAC,EAAC;AACFqH,QAAQ,CAACpH,SAAS,GAAGmI,SAAS,CAAA;AAC9Bf,QAAQ,CAACyB,WAAW,GAAGX,cAAc;;;;"}
|