@redsift/charts 12.6.6 → 13.0.1

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.
@@ -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>();\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>();\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 aria-hidden=\"false\"\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","format","useMessageFormatter","intlMessages","isSpaced","colorScale","useFormatCategoricalData","useEffect","current","createPie","d3pie","d","sort","pieData","previousPieData","undefined","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={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,5 +1,5 @@
1
1
  import { _ as _objectWithoutProperties, a as _extends, b as _objectSpread2 } from './_rollupPluginBabelHelpers.js';
2
- import React__default, { useRef, useEffect, useState, forwardRef } from 'react';
2
+ import React, { useRef, useEffect, useState, forwardRef } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { useTheme, useMessageFormatter, Flexbox, Button, Text, useId } from '@redsift/design-system';
5
5
  import styled from 'styled-components';
@@ -7,7 +7,7 @@ import { C as ChartContainer } from './ChartContainer2.js';
7
7
  import { brush, select, zoom, interpolateRound, scaleLinear, min, extent, descending, scaleSqrt, max } from 'd3';
8
8
  import { C as ChartSize, g as getSortingMethod, u as useColor, m as mergeLegends, a as ColorTheme } from './theme.js';
9
9
  import { A as Axis, a as AxisVariant } from './Axis2.js';
10
- import { Popover } from '@redsift/popovers';
10
+ import { useMergeRefs, Popover } from '@redsift/popovers';
11
11
  import { D as Dot } from './Dot2.js';
12
12
  import { L as Legend } from './Legend3.js';
13
13
  import { L as LegendVariant, T as TooltipVariant } from './legend2.js';
@@ -34,7 +34,7 @@ const useBrush = _ref => {
34
34
  onBrush,
35
35
  onBrushEnd
36
36
  } = _ref;
37
- const brushRef = propsBrushRef || useRef();
37
+ const brushRef = propsBrushRef || useRef(undefined);
38
38
  useEffect(() => {
39
39
  if (svgRef.current && isBrushable) {
40
40
  brushRef.current = brush().extent(extent).keyModifiers(false).filter(event => event.shiftKey).on('brush', event => {
@@ -165,7 +165,7 @@ const LoadingScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
165
165
  className
166
166
  } = props,
167
167
  forwardedProps = _objectWithoutProperties(props, _excluded$3);
168
- return /*#__PURE__*/React__default.createElement(StyledScatterPlot, _extends({}, forwardedProps, {
168
+ return /*#__PURE__*/React.createElement(StyledScatterPlot, _extends({}, forwardedProps, {
169
169
  className: className,
170
170
  ref: ref
171
171
  }), "Loading...");
@@ -236,18 +236,19 @@ const countBy = (arr, sortingMethod) => {
236
236
  })).sort(getSortingMethod(sortingMethod));
237
237
  };
238
238
 
239
- const _excluded$2 = ["className", "data", "emptyComponent", "localeText", "size"];
239
+ const _excluded$2 = ["className", "data", "emptyComponent", "localeText", "size", "svgRef"];
240
240
  const EmptyScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
241
241
  const {
242
242
  className,
243
243
  data: propsData,
244
244
  emptyComponent,
245
245
  localeText,
246
- size
246
+ size,
247
+ svgRef
247
248
  } = props,
248
249
  forwardedProps = _objectWithoutProperties(props, _excluded$2);
249
250
  const theme = useTheme();
250
- const cache = useRef();
251
+ const cache = useRef(undefined);
251
252
  const data = propsData;
252
253
  useEffect(() => {
253
254
  cache.current = data;
@@ -262,19 +263,20 @@ const EmptyScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
262
263
  bottom: 48
263
264
  };
264
265
  const chartWidth = width - margins.left - margins.right;
265
- return /*#__PURE__*/React__default.createElement(StyledScatterPlot, _extends({}, forwardedProps, {
266
+ return /*#__PURE__*/React.createElement(StyledScatterPlot, _extends({}, forwardedProps, {
266
267
  className: className,
267
268
  ref: ref
268
- }), emptyComponent !== null && emptyComponent !== void 0 ? emptyComponent : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(StyledScatterPlotEmptyText, {
269
+ }), emptyComponent !== null && emptyComponent !== void 0 ? emptyComponent : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledScatterPlotEmptyText, {
269
270
  $maxWidth: width,
270
271
  $textSize: chartDimensions.fontSize / 2,
271
272
  $theme: theme
272
- }, /*#__PURE__*/React__default.createElement("span", null, localeText === null || localeText === void 0 ? void 0 : localeText.emptyChartText)), /*#__PURE__*/React__default.createElement("svg", {
273
+ }, /*#__PURE__*/React.createElement("span", null, localeText === null || localeText === void 0 ? void 0 : localeText.emptyChartText)), /*#__PURE__*/React.createElement("svg", {
274
+ ref: svgRef,
273
275
  width: width,
274
276
  height: height
275
- }, /*#__PURE__*/React__default.createElement("g", {
277
+ }, /*#__PURE__*/React.createElement("g", {
276
278
  transform: `translate(${margins.left},${margins.top})`
277
- }, /*#__PURE__*/React__default.createElement(Axis, {
279
+ }, /*#__PURE__*/React.createElement(Axis, {
278
280
  position: "bottom",
279
281
  length: width - 32,
280
282
  scale: scaleLinear().domain([]).range([0, chartWidth]),
@@ -317,7 +319,7 @@ var intlMessages = {
317
319
  // Material Design Icons v7.2.96
318
320
  const mdiChevronDown='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z';const mdiChevronRight='M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z';const mdiMouse='M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z';
319
321
 
320
- const _excluded$1 = ["isBrushable", "className", "data", "dotRole", "disableAnimations", "getDotAnchorProps", "hideControlKeyPanel", "id", "isDotSelected", "labelDecorator", "legendDecorator", "legendVariant", "legendProps", "margins", "onBrush", "onBrushEnd", "onDotClick", "size", "sortingMethod", "colorTheme", "tooltipDecorator", "tooltipVariant", "xAxisVariant", "xAxisPlacement", "xAxisTickFormat", "xAxisTickPadding", "xAxisTickRotation", "xAxisTickSize", "xAxisTickValues", "yAxisVariant", "yAxisPlacement", "yAxisTickFormat", "yAxisTickPadding", "yAxisTickRotation", "yAxisTickSize", "yAxisTickValues", "variant"],
322
+ const _excluded$1 = ["isBrushable", "className", "data", "dotRole", "disableAnimations", "getDotAnchorProps", "hideControlKeyPanel", "id", "isDotSelected", "labelDecorator", "legendDecorator", "legendVariant", "legendProps", "margins", "onBrush", "onBrushEnd", "onDotClick", "size", "sortingMethod", "svgRef", "colorTheme", "tooltipDecorator", "tooltipVariant", "xAxisVariant", "xAxisPlacement", "xAxisTickFormat", "xAxisTickPadding", "xAxisTickRotation", "xAxisTickSize", "xAxisTickValues", "yAxisVariant", "yAxisPlacement", "yAxisTickFormat", "yAxisTickPadding", "yAxisTickRotation", "yAxisTickSize", "yAxisTickValues", "variant"],
321
323
  _excluded2 = ["extraLegendItems"];
322
324
  const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
323
325
  const {
@@ -340,6 +342,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
340
342
  onDotClick,
341
343
  size,
342
344
  sortingMethod,
345
+ svgRef: propsSvgRef,
343
346
  colorTheme,
344
347
  tooltipDecorator,
345
348
  tooltipVariant,
@@ -360,7 +363,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
360
363
  variant
361
364
  } = props,
362
365
  forwardedProps = _objectWithoutProperties(props, _excluded$1);
363
- const cache = useRef();
366
+ const cache = useRef(undefined);
364
367
  const theme = useTheme();
365
368
  const format = useMessageFormatter(intlMessages);
366
369
  const data = propsData.filter(datum => datum.value && typeof datum.key[0] === 'number' && !Number.isNaN(datum.key[0]) && typeof datum.key[1] === 'number' && !Number.isNaN(datum.key[1]));
@@ -401,9 +404,11 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
401
404
  category: 'key',
402
405
  theme
403
406
  });
404
- const svgRef = useRef();
405
- const brushRef = useRef();
406
- const svgBrushRef = useRef();
407
+ const svgRef = useRef(undefined);
408
+ // useZoom reads svgRef; the consumer's svgRef gets the same svg.
409
+ const mergedSvgRef = useMergeRefs([svgRef, propsSvgRef]);
410
+ const brushRef = useRef(undefined);
411
+ const svgBrushRef = useRef(undefined);
407
412
  const {
408
413
  scaleX,
409
414
  scaleY,
@@ -453,7 +458,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
453
458
  };
454
459
  });
455
460
  const globalSize = variant === ScatterPlotVariant.gridded ? scaleSqrt().domain([1, Math.max(max(circles, d => d.points.length), 1)]).range([3, minSize / BASE_NUMBER_OF_TICKS / 2]) : undefined;
456
- const legendWidth = useRef();
461
+ const legendWidth = useRef(undefined);
457
462
  if (countsByCategory && !legendWidth.current) {
458
463
  legendWidth.current = `${Math.max(...countsByCategory.map(d => d.key.length + String(d.value).length)) * 8 + 32}px`;
459
464
  }
@@ -482,7 +487,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
482
487
  extraLegendItems
483
488
  } = _ref,
484
489
  forwardedLegendProps = _objectWithoutProperties(_ref, _excluded2);
485
- return /*#__PURE__*/React__default.createElement(StyledScatterPlot, _extends({
490
+ return /*#__PURE__*/React.createElement(StyledScatterPlot, _extends({
486
491
  mode: typeof onDotClick === 'function' || typeof getDotAnchorProps === 'function' ? 'interactive' : 'static',
487
492
  definition: hasCategory ? format('definition-with-categories', {
488
493
  categoryLength: categories.length,
@@ -504,24 +509,24 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
504
509
  id: id,
505
510
  className: className,
506
511
  ref: ref
507
- }), /*#__PURE__*/React__default.createElement(Flexbox, {
512
+ }), /*#__PURE__*/React.createElement(Flexbox, {
508
513
  flexDirection: "column",
509
514
  alignItems: "center",
510
515
  gap: "8"
511
- }, !hideControlKeyPanel ? /*#__PURE__*/React__default.createElement(Flexbox, {
516
+ }, !hideControlKeyPanel ? /*#__PURE__*/React.createElement(Flexbox, {
512
517
  width: width,
513
518
  position: "absolute"
514
- }, /*#__PURE__*/React__default.createElement(Flexbox, {
519
+ }, /*#__PURE__*/React.createElement(Flexbox, {
515
520
  flexDirection: "column",
516
521
  alignItems: "flex-end",
517
522
  position: "absolute",
518
523
  top: `${margins.top + 16}px`,
519
524
  right: `${margins.right + 16}px`
520
- }, /*#__PURE__*/React__default.createElement(Popover, {
525
+ }, /*#__PURE__*/React.createElement(Popover, {
521
526
  placement: "bottom-end",
522
527
  isOpen: isKeyPanelOpen,
523
528
  onOpen: setIsKeyPanelOpen
524
- }, /*#__PURE__*/React__default.createElement(Popover.Trigger, null, /*#__PURE__*/React__default.createElement(Button, {
529
+ }, /*#__PURE__*/React.createElement(Popover.Trigger, null, /*#__PURE__*/React.createElement(Button, {
525
530
  variant: "secondary",
526
531
  leftIcon: mdiMouse,
527
532
  rightIcon: isKeyPanelOpen ? mdiChevronDown : mdiChevronRight,
@@ -530,28 +535,28 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
530
535
  border: '1px solid var(--redsift-color-neutral-mid-grey)',
531
536
  gap: '4px'
532
537
  }
533
- })), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement(Flexbox, {
538
+ })), /*#__PURE__*/React.createElement(Popover.Content, null, /*#__PURE__*/React.createElement(Flexbox, {
534
539
  flexDirection: "column",
535
540
  alignItems: "flex-start"
536
- }, /*#__PURE__*/React__default.createElement(Text, {
541
+ }, /*#__PURE__*/React.createElement(Text, {
537
542
  margin: "8px 16px 0",
538
543
  fontSize: "13px"
539
- }, "Zoom - Mouse wheel"), /*#__PURE__*/React__default.createElement(Text, {
544
+ }, "Zoom - Mouse wheel"), /*#__PURE__*/React.createElement(Text, {
540
545
  margin: "0 16px",
541
546
  fontSize: "13px"
542
- }, "Pan - Left click and drag"), /*#__PURE__*/React__default.createElement(Text, {
547
+ }, "Pan - Left click and drag"), /*#__PURE__*/React.createElement(Text, {
543
548
  margin: "0 16px 8px",
544
549
  fontSize: "13px"
545
- }, "Select - Hold shift, left click and drag")))))) : null, /*#__PURE__*/React__default.createElement("svg", {
546
- ref: svgRef,
550
+ }, "Select - Hold shift, left click and drag")))))) : null, /*#__PURE__*/React.createElement("svg", {
551
+ ref: mergedSvgRef,
547
552
  width: width,
548
553
  height: height
549
- }, /*#__PURE__*/React__default.createElement("g", {
554
+ }, /*#__PURE__*/React.createElement("g", {
550
555
  ref: svgBrushRef,
551
556
  transform: `translate(${margins.left},${margins.top})`
552
- }), /*#__PURE__*/React__default.createElement("g", {
557
+ }), /*#__PURE__*/React.createElement("g", {
553
558
  transform: `translate(${margins.left},${margins.top})`
554
- }, /*#__PURE__*/React__default.createElement("g", null, circles.map((circle, index) => {
559
+ }, /*#__PURE__*/React.createElement("g", null, circles.map((circle, index) => {
555
560
  var _countsByCategory$fin;
556
561
  const scaleXDomain = scaleX.domain();
557
562
  const scaleYDomain = scaleY.domain();
@@ -569,7 +574,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
569
574
  }),
570
575
  r: variant === ScatterPlotVariant.gridded ? globalSize(circle.points.length) / (transform.k < 1 ? transform.k : 1) : 4
571
576
  });
572
- return /*#__PURE__*/React__default.createElement(Dot, {
577
+ return /*#__PURE__*/React.createElement(Dot, {
573
578
  color: colorScale === null || colorScale === void 0 ? void 0 : colorScale(circle.category),
574
579
  data: to,
575
580
  dataset: circles,
@@ -583,9 +588,9 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
583
588
  tooltipDecorator: tooltipDecorator,
584
589
  tooltipVariant: tooltipVariant
585
590
  });
586
- }))), /*#__PURE__*/React__default.createElement("g", {
591
+ }))), /*#__PURE__*/React.createElement("g", {
587
592
  transform: `translate(${margins.left},${margins.top})`
588
- }, ['bottom', 'both'].includes(xAxisPlacement) ? /*#__PURE__*/React__default.createElement(Axis, {
593
+ }, ['bottom', 'both'].includes(xAxisPlacement) ? /*#__PURE__*/React.createElement(Axis, {
589
594
  disableAnimations: disableAnimations,
590
595
  position: "bottom",
591
596
  length: chartWidth,
@@ -598,7 +603,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
598
603
  tickSize: xAxisTickSize,
599
604
  tickFormat: xAxisTickFormat,
600
605
  variant: xAxisVariant
601
- }) : null, ['top', 'both'].includes(xAxisPlacement) ? /*#__PURE__*/React__default.createElement(Axis, {
606
+ }) : null, ['top', 'both'].includes(xAxisPlacement) ? /*#__PURE__*/React.createElement(Axis, {
602
607
  disableAnimations: disableAnimations,
603
608
  position: "top",
604
609
  length: chartWidth,
@@ -611,7 +616,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
611
616
  tickSize: xAxisTickSize,
612
617
  tickFormat: xAxisTickFormat,
613
618
  variant: xAxisVariant
614
- }) : null, ['left', 'both'].includes(yAxisPlacement) ? /*#__PURE__*/React__default.createElement(Axis, {
619
+ }) : null, ['left', 'both'].includes(yAxisPlacement) ? /*#__PURE__*/React.createElement(Axis, {
615
620
  disableAnimations: disableAnimations,
616
621
  position: "left",
617
622
  length: chartHeight,
@@ -624,7 +629,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
624
629
  tickSize: yAxisTickSize,
625
630
  tickFormat: yAxisTickFormat,
626
631
  variant: yAxisVariant
627
- }) : null, ['right', 'both'].includes(yAxisPlacement) ? /*#__PURE__*/React__default.createElement(Axis, {
632
+ }) : null, ['right', 'both'].includes(yAxisPlacement) ? /*#__PURE__*/React.createElement(Axis, {
628
633
  disableAnimations: disableAnimations,
629
634
  position: "right",
630
635
  length: chartHeight,
@@ -637,7 +642,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
637
642
  tickSize: yAxisTickSize,
638
643
  tickFormat: yAxisTickFormat,
639
644
  variant: yAxisVariant
640
- }) : null))), hasCategory && legendVariant !== ScatterPlotLegendVariant.none ? /*#__PURE__*/React__default.createElement(Legend, _extends({
645
+ }) : null))), hasCategory && legendVariant !== ScatterPlotLegendVariant.none ? /*#__PURE__*/React.createElement(Legend, _extends({
641
646
  data: (extraLegendItems ? mergeLegends(extraLegendItems, countsByCategory).sort(getSortingMethod(sortingMethod)) : countsByCategory).map(d => _objectSpread2(_objectSpread2({}, d), {}, {
642
647
  color: colorScale === null || colorScale === void 0 ? void 0 : colorScale(d.key)
643
648
  })),
@@ -647,7 +652,7 @@ const RenderedScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
647
652
  }, forwardedLegendProps)) : null);
648
653
  });
649
654
 
650
- const _excluded = ["className", "colorTheme", "data", "dotRole", "emptyComponent", "hideControlKeyPanel", "id", "isDotSelected", "labelDecorator", "legendDecorator", "legendVariant", "localeText", "onBrush", "onBrushEnd", "onDotClick", "size", "sortingMethod", "tooltipDecorator", "tooltipVariant", "variant", "xAxisPlacement", "xAxisVariant", "yAxisPlacement", "yAxisVariant"];
655
+ const _excluded = ["className", "colorTheme", "data", "dotRole", "emptyComponent", "hideControlKeyPanel", "id", "isDotSelected", "labelDecorator", "legendDecorator", "legendVariant", "localeText", "onBrush", "onBrushEnd", "onDotClick", "size", "sortingMethod", "svgRef", "tooltipDecorator", "tooltipVariant", "variant", "xAxisPlacement", "xAxisVariant", "yAxisPlacement", "yAxisVariant"];
651
656
  const COMPONENT_NAME = 'ScatterPlot';
652
657
  const CLASSNAME = 'redsift-scatterplot';
653
658
 
@@ -720,6 +725,7 @@ const ScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
720
725
  onDotClick,
721
726
  size = ChartSize.medium,
722
727
  sortingMethod = 'desc-value',
728
+ svgRef,
723
729
  tooltipDecorator,
724
730
  tooltipVariant = TooltipVariant.none,
725
731
  variant = ScatterPlotVariant.default,
@@ -733,20 +739,21 @@ const ScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
733
739
  const id = propsId !== null && propsId !== void 0 ? propsId : _id;
734
740
  const legendVariant = propsLegendVariant !== null && propsLegendVariant !== void 0 ? propsLegendVariant : ScatterPlotLegendVariant.externalLabel;
735
741
  if (propsData === undefined || propsData === null) {
736
- return /*#__PURE__*/React__default.createElement(LoadingScatterPlot, _extends({
742
+ return /*#__PURE__*/React.createElement(LoadingScatterPlot, _extends({
737
743
  id: id
738
744
  }, forwardedProps, {
739
745
  ref: ref
740
746
  }));
741
747
  }
742
748
  if (propsData.length === 0) {
743
- return /*#__PURE__*/React__default.createElement(EmptyScatterPlot, _extends({
749
+ return /*#__PURE__*/React.createElement(EmptyScatterPlot, _extends({
744
750
  data: propsData,
745
751
  emptyComponent: emptyComponent,
746
752
  hideControlKeyPanel: hideControlKeyPanel,
747
753
  localeText: localeText,
748
754
  size: size,
749
755
  sortingMethod: sortingMethod,
756
+ svgRef: svgRef,
750
757
  xAxisPlacement: xAxisPlacement,
751
758
  xAxisVariant: xAxisVariant,
752
759
  yAxisPlacement: yAxisPlacement,
@@ -755,7 +762,7 @@ const ScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
755
762
  ref: ref
756
763
  }));
757
764
  }
758
- return /*#__PURE__*/React__default.createElement(RenderedScatterPlot, _extends({
765
+ return /*#__PURE__*/React.createElement(RenderedScatterPlot, _extends({
759
766
  className: classNames(ScatterPlot.className, className),
760
767
  colorTheme: colorTheme,
761
768
  data: propsData,
@@ -771,6 +778,7 @@ const ScatterPlot = /*#__PURE__*/forwardRef((props, ref) => {
771
778
  onDotClick: onDotClick,
772
779
  size: size,
773
780
  sortingMethod: sortingMethod,
781
+ svgRef: svgRef,
774
782
  tooltipDecorator: tooltipDecorator,
775
783
  tooltipVariant: tooltipVariant,
776
784
  variant: variant,