@sproutsocial/seeds-react-data-viz 0.18.0 → 0.20.0

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.
Files changed (54) hide show
  1. package/dist/bar/index.d.mts +20 -4
  2. package/dist/bar/index.d.ts +20 -4
  3. package/dist/bar/index.js +53 -85
  4. package/dist/bar/index.js.map +1 -1
  5. package/dist/bar.css +39 -0
  6. package/dist/chart-styles.css +295 -0
  7. package/dist/charts.css +583 -0
  8. package/dist/{chunk-XP7HNV23.js → chunk-27M4FDNK.js} +16 -17
  9. package/dist/chunk-27M4FDNK.js.map +1 -0
  10. package/dist/chunk-46L4YBLC.js +544 -0
  11. package/dist/chunk-46L4YBLC.js.map +1 -0
  12. package/dist/chunk-6EIJCJCN.js +22 -0
  13. package/dist/chunk-6EIJCJCN.js.map +1 -0
  14. package/dist/{chunk-GVAMWFB7.js → chunk-XYE6O77Z.js} +3 -3
  15. package/dist/{chunk-GVAMWFB7.js.map → chunk-XYE6O77Z.js.map} +1 -1
  16. package/dist/donut/index.d.mts +21 -4
  17. package/dist/donut/index.d.ts +21 -4
  18. package/dist/donut/index.js +39 -49
  19. package/dist/donut/index.js.map +1 -1
  20. package/dist/donut.css +45 -0
  21. package/dist/esm/bar/index.js +42 -74
  22. package/dist/esm/bar/index.js.map +1 -1
  23. package/dist/esm/{chunk-X2KAXY3P.js → chunk-KMFRRUTY.js} +2 -2
  24. package/dist/esm/chunk-P3MVYSHX.js +22 -0
  25. package/dist/esm/chunk-P3MVYSHX.js.map +1 -0
  26. package/dist/esm/{chunk-JLFXOEV2.js → chunk-QSSYSKRP.js} +3 -4
  27. package/dist/esm/chunk-QSSYSKRP.js.map +1 -0
  28. package/dist/esm/chunk-XEKQTAUH.js +544 -0
  29. package/dist/esm/chunk-XEKQTAUH.js.map +1 -0
  30. package/dist/esm/donut/index.js +38 -48
  31. package/dist/esm/donut/index.js.map +1 -1
  32. package/dist/esm/index.js +536 -134
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/line-area/index.js +30 -21
  35. package/dist/esm/line-area/index.js.map +1 -1
  36. package/dist/esm/sparkline/index.js +2 -2
  37. package/dist/index.js +497 -95
  38. package/dist/index.js.map +1 -1
  39. package/dist/interactions-DoWoL7bu.d.mts +29 -0
  40. package/dist/interactions-DoWoL7bu.d.ts +29 -0
  41. package/dist/line-area/index.d.mts +30 -4
  42. package/dist/line-area/index.d.ts +30 -4
  43. package/dist/line-area/index.js +35 -26
  44. package/dist/line-area/index.js.map +1 -1
  45. package/dist/line-area.css +112 -0
  46. package/dist/sparkline/index.js +4 -4
  47. package/package.json +16 -7
  48. package/dist/chunk-WEKDYQ4T.js +0 -968
  49. package/dist/chunk-WEKDYQ4T.js.map +0 -1
  50. package/dist/chunk-XP7HNV23.js.map +0 -1
  51. package/dist/esm/chunk-JLFXOEV2.js.map +0 -1
  52. package/dist/esm/chunk-Z4LOM4OZ.js +0 -968
  53. package/dist/esm/chunk-Z4LOM4OZ.js.map +0 -1
  54. /package/dist/esm/{chunk-X2KAXY3P.js.map → chunk-KMFRRUTY.js.map} +0 -0
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  DONUT_CHART_HEIGHT
3
3
  } from "../chunk-XMYGML25.js";
4
+ import {
5
+ getChartContainerProps
6
+ } from "../chunk-P3MVYSHX.js";
4
7
  import {
5
8
  ChartRenderer,
6
9
  buildBaseChartOptions,
7
10
  useSeedsChartSetup
8
- } from "../chunk-JLFXOEV2.js";
9
- import {
10
- donutChartStyles
11
- } from "../chunk-Z4LOM4OZ.js";
11
+ } from "../chunk-QSSYSKRP.js";
12
+ import "../chunk-XEKQTAUH.js";
12
13
 
13
14
  // src/charts/donut/DonutChart.tsx
14
15
  import { memo, useMemo } from "react";
@@ -40,12 +41,18 @@ function buildDonutOptions(props, colors) {
40
41
  borderRadius: 0,
41
42
  dataLabels: { enabled: false },
42
43
  innerSize: "50%",
43
- ...props.onClick ? {
44
+ ...props.onClick || props.onMouseEnter || props.onMouseLeave ? {
44
45
  point: {
45
46
  events: {
46
- click() {
47
- props.onClick?.({ position: this.name });
48
- }
47
+ click: props.onClick ? function() {
48
+ props.onClick({ position: this.name });
49
+ } : void 0,
50
+ mouseOver: props.onMouseEnter ? function() {
51
+ props.onMouseEnter({ position: this.name });
52
+ } : void 0,
53
+ mouseOut: props.onMouseLeave ? function() {
54
+ props.onMouseLeave({ position: this.name });
55
+ } : void 0
49
56
  }
50
57
  }
51
58
  } : {}
@@ -65,21 +72,6 @@ function buildDonutOptions(props, colors) {
65
72
  };
66
73
  }
67
74
 
68
- // src/charts/donut/styles.ts
69
- import styled from "styled-components";
70
- var DonutChartContainer = styled.div`
71
- background-color: ${({ theme }) => theme.colors.container.background.base};
72
- ${donutChartStyles}
73
-
74
- /* Dim non-hovered slices. Highcharts adds .highcharts-point-inactive to
75
- all pie points except the hovered one. In styledMode, opacity is CSS-only
76
- (JS plotOptions.states.inactive.opacity is ignored). */
77
- .highcharts-pie-series .highcharts-point-inactive {
78
- opacity: 0.3;
79
- transition: opacity 0s;
80
- }
81
- `;
82
-
83
75
  // src/charts/donut/DonutChart.tsx
84
76
  import { jsx } from "react/jsx-runtime";
85
77
  var DonutChart = memo(function DonutChart2(props) {
@@ -91,34 +83,32 @@ var DonutChart = memo(function DonutChart2(props) {
91
83
  [props, colors]
92
84
  );
93
85
  const hasOnClick = Boolean(props.onClick);
86
+ const containerProps = getChartContainerProps({
87
+ familyClasses: ["seeds-chart-donut"],
88
+ colors: props.data.map((d) => d.color),
89
+ hasOnClick,
90
+ className: props.className
91
+ });
94
92
  const tooltip = props.tooltip ? (args) => props.tooltip(args) : void 0;
95
- return /* @__PURE__ */ jsx(
96
- DonutChartContainer,
93
+ return /* @__PURE__ */ jsx("div", { ...containerProps, children: /* @__PURE__ */ jsx(
94
+ ChartRenderer,
97
95
  {
98
- $colors: colors,
99
- $hasOnClick: hasOnClick,
100
- className: props.className,
101
- children: /* @__PURE__ */ jsx(
102
- ChartRenderer,
103
- {
104
- options,
105
- series: props.data.map((d, i) => ({
106
- name: d.name,
107
- color: colors[i],
108
- icon: d.icon
109
- })),
110
- colors,
111
- tooltip,
112
- hasOnClick,
113
- tooltipClickLabel: props.tooltipClickLabel,
114
- invalidNumberLabel: props.invalidNumberLabel,
115
- valueFormat: props.format,
116
- exportTitle: props.exportTitle,
117
- onReady: props.onReady
118
- }
119
- )
96
+ options,
97
+ series: props.data.map((d, i) => ({
98
+ name: d.name,
99
+ color: colors[i],
100
+ icon: d.icon
101
+ })),
102
+ colors,
103
+ tooltip,
104
+ hasOnClick,
105
+ tooltipClickLabel: props.tooltipClickLabel,
106
+ invalidNumberLabel: props.invalidNumberLabel,
107
+ valueFormat: props.format,
108
+ exportTitle: props.exportTitle,
109
+ onReady: props.onReady
120
110
  }
121
- );
111
+ ) });
122
112
  });
123
113
  export {
124
114
  DonutChart
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/charts/donut/DonutChart.tsx","../../../src/charts/donut/adapter.ts","../../../src/charts/donut/styles.ts"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport {\n useSeedsChartSetup,\n ChartRenderer,\n type ChartTooltipProps,\n} from \"../shared/chartBase\";\nimport { buildDonutOptions } from \"./adapter\";\nimport { DonutChartContainer } from \"./styles\";\nimport type { DonutChartProps, DonutChartTooltipProps } from \"./types\";\n\nexport const DonutChart = memo(function DonutChart(props: DonutChartProps) {\n // Map each data item to { color? } so useSeedsChartSetup resolves the palette.\n const { colors } = useSeedsChartSetup({\n series: props.data.map((d) => ({ color: d.color })),\n });\n\n // Memoize to avoid spurious Highcharts redraws on parent re-renders.\n const options = useMemo(\n () => buildDonutOptions(props, colors),\n [props, colors]\n );\n const hasOnClick = Boolean(props.onClick);\n\n // `ChartRenderer` expects `(ChartTooltipProps) => ReactNode`. The consumer's\n // function expects the narrower `DonutChartTooltipProps` (required `percent`).\n // Wrap rather than cast the function type so the intent is explicit.\n const tooltip = props.tooltip\n ? (args: ChartTooltipProps) =>\n props.tooltip!(args as unknown as DonutChartTooltipProps)\n : undefined;\n\n return (\n <DonutChartContainer\n $colors={colors}\n $hasOnClick={hasOnClick}\n className={props.className}\n >\n <ChartRenderer\n options={options}\n series={props.data.map((d, i) => ({\n name: d.name,\n color: colors[i],\n icon: d.icon,\n }))}\n colors={colors}\n tooltip={tooltip}\n hasOnClick={hasOnClick}\n tooltipClickLabel={props.tooltipClickLabel}\n invalidNumberLabel={props.invalidNumberLabel}\n valueFormat={props.format}\n exportTitle={props.exportTitle}\n onReady={props.onReady}\n />\n </DonutChartContainer>\n );\n});\n","import type { SeedsChartOptions } from \"../shared/chartBase\";\nimport { buildBaseChartOptions } from \"../shared/baseChartOptions\";\nimport { DONUT_CHART_HEIGHT } from \"../../constants/chartOptions\";\nimport type { DonutChartProps } from \"./types\";\n\nexport function buildDonutOptions(\n props: DonutChartProps,\n colors: ReadonlyArray<string>\n): SeedsChartOptions {\n const base = buildBaseChartOptions({\n type: \"pie\",\n description: props.description,\n });\n return {\n ...base,\n chart: {\n type: \"pie\" as const,\n styledMode: true,\n animation: false,\n // Height only — width is left fluid (v1 parity) so the chart fills its\n // container and the pie auto-centers. The container bounds the width (see\n // styles.ts) so the legend below wraps to the donut and centers with it.\n height: DONUT_CHART_HEIGHT,\n // Drop Highcharts' default spacing so the donut uses the full height.\n spacing: [0, 0, 0, 0],\n },\n plotOptions: {\n pie: {\n animation: false,\n // borderRadius must be set in JS, not CSS, because Highcharts computes\n // the arc path before applying it — CSS border-radius has no effect.\n borderRadius: 0,\n dataLabels: { enabled: false },\n innerSize: \"50%\",\n ...(props.onClick\n ? {\n point: {\n events: {\n click(this: { name: string }) {\n props.onClick?.({ position: this.name });\n },\n },\n },\n }\n : {}),\n },\n },\n series: [\n {\n type: \"pie\",\n name: \"Data\",\n data: props.data.map((d, i) => ({\n name: d.name,\n y: d.value,\n color: d.color ?? colors[i] ?? \"\",\n })),\n },\n ],\n };\n}\n","import styled from \"styled-components\";\nimport { donutChartStyles } from \"../../styles/chartStyles\";\nimport type {\n TypeChartStyleColor,\n TypeChartStyleHasOnClick,\n} from \"../../types\";\n\ntype StyleProps = Readonly<{\n $colors: ReadonlyArray<TypeChartStyleColor>;\n $hasOnClick: TypeChartStyleHasOnClick;\n}>;\n\n// Plain styled `div` — not `Box`. Per the DS Tailwind direction (established in\n// CE-28/line-area), new components render semantic elements internally.\n//\n// No width constraint (v1 parity): the chart fills the container and the pie\n// auto-centers, while the legend centers in the same width — so the legend\n// stays on one row and centers with the donut instead of wrapping to match it.\nexport const DonutChartContainer = styled.div<StyleProps>`\n background-color: ${({ theme }) => theme.colors.container.background.base};\n ${donutChartStyles}\n\n /* Dim non-hovered slices. Highcharts adds .highcharts-point-inactive to\n all pie points except the hovered one. In styledMode, opacity is CSS-only\n (JS plotOptions.states.inactive.opacity is ignored). */\n .highcharts-pie-series .highcharts-point-inactive {\n opacity: 0.3;\n transition: opacity 0s;\n }\n`;\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,MAAM,eAAe;;;ACKvB,SAAS,kBACd,OACA,QACmB;AACnB,QAAM,OAAO,sBAAsB;AAAA,IACjC,MAAM;AAAA,IACN,aAAa,MAAM;AAAA,EACrB,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA;AAAA;AAAA;AAAA,MAIX,QAAQ;AAAA;AAAA,MAER,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACtB;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,QACH,WAAW;AAAA;AAAA;AAAA,QAGX,cAAc;AAAA,QACd,YAAY,EAAE,SAAS,MAAM;AAAA,QAC7B,WAAW;AAAA,QACX,GAAI,MAAM,UACN;AAAA,UACE,OAAO;AAAA,YACL,QAAQ;AAAA,cACN,QAA8B;AAC5B,sBAAM,UAAU,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,cACzC;AAAA,YACF;AAAA,UACF;AAAA,QACF,IACA,CAAC;AAAA,MACP;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,UAC9B,MAAM,EAAE;AAAA,UACR,GAAG,EAAE;AAAA,UACL,OAAO,EAAE,SAAS,OAAO,CAAC,KAAK;AAAA,QACjC,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;;;AC3DA,OAAO,YAAY;AAkBZ,IAAM,sBAAsB,OAAO;AAAA,sBACpB,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,UAAU,WAAW,IAAI;AAAA,IACvE,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AFiBd;AA3BC,IAAM,aAAa,KAAK,SAASA,YAAW,OAAwB;AAEzE,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAAA,IACpC,QAAQ,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAAA,EACpD,CAAC;AAGD,QAAM,UAAU;AAAA,IACd,MAAM,kBAAkB,OAAO,MAAM;AAAA,IACrC,CAAC,OAAO,MAAM;AAAA,EAChB;AACA,QAAM,aAAa,QAAQ,MAAM,OAAO;AAKxC,QAAM,UAAU,MAAM,UAClB,CAAC,SACC,MAAM,QAAS,IAAyC,IAC1D;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW,MAAM;AAAA,MAEjB;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,QAAQ,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,YAChC,MAAM,EAAE;AAAA,YACR,OAAO,OAAO,CAAC;AAAA,YACf,MAAM,EAAE;AAAA,UACV,EAAE;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB,MAAM;AAAA,UACzB,oBAAoB,MAAM;AAAA,UAC1B,aAAa,MAAM;AAAA,UACnB,aAAa,MAAM;AAAA,UACnB,SAAS,MAAM;AAAA;AAAA,MACjB;AAAA;AAAA,EACF;AAEJ,CAAC;","names":["DonutChart"]}
1
+ {"version":3,"sources":["../../../src/charts/donut/DonutChart.tsx","../../../src/charts/donut/adapter.ts"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport {\n useSeedsChartSetup,\n ChartRenderer,\n type ChartTooltipProps,\n} from \"../shared/chartBase\";\nimport { getChartContainerProps } from \"../shared/chartContainer\";\nimport { buildDonutOptions } from \"./adapter\";\nimport type { DonutChartProps, DonutChartTooltipProps } from \"./types\";\n\n/**\n * DonutChart renders a donut (ring) chart from a flat list of named values.\n *\n * Like SparklineChart, it carries no `styled-components`: the wrapper is a plain\n * `<div>` and the Highcharts styling ships as static CSS. Consumers import both\n * `@sproutsocial/seeds-react-data-viz/chart-styles.css` and `.../donut.css` once\n * (the component never self-imports its CSS).\n */\nexport const DonutChart = memo(function DonutChart(props: DonutChartProps) {\n // Map each data item to { color? } so useSeedsChartSetup resolves the palette\n // used for the Highcharts options and the legend swatches.\n const { colors } = useSeedsChartSetup({\n series: props.data.map((d) => ({ color: d.color })),\n });\n\n // Memoize to avoid spurious Highcharts redraws on parent re-renders.\n const options = useMemo(\n () => buildDonutOptions(props, colors),\n [props, colors]\n );\n const hasOnClick = Boolean(props.onClick);\n\n // Container props from the shared contract. RAW per-series colors only —\n // an unset series falls through to chart-styles.css's --highcharts-color-N\n // default (the DS data-viz palette, light/dark-correct), matching the\n // bar/line-area convention. Only an explicit consumer override is inlined.\n const containerProps = getChartContainerProps({\n familyClasses: [\"seeds-chart-donut\"],\n colors: props.data.map((d) => d.color),\n hasOnClick,\n className: props.className,\n });\n\n // `ChartRenderer` expects `(ChartTooltipProps) => ReactNode`. The consumer's\n // function expects the narrower `DonutChartTooltipProps` (required `percent`).\n // Wrap rather than cast the function type so the intent is explicit.\n const tooltip = props.tooltip\n ? (args: ChartTooltipProps) =>\n props.tooltip!(args as unknown as DonutChartTooltipProps)\n : undefined;\n\n return (\n <div {...containerProps}>\n <ChartRenderer\n options={options}\n series={props.data.map((d, i) => ({\n name: d.name,\n color: colors[i],\n icon: d.icon,\n }))}\n colors={colors}\n tooltip={tooltip}\n hasOnClick={hasOnClick}\n tooltipClickLabel={props.tooltipClickLabel}\n invalidNumberLabel={props.invalidNumberLabel}\n valueFormat={props.format}\n exportTitle={props.exportTitle}\n onReady={props.onReady}\n />\n </div>\n );\n});\n","import type { SeedsChartOptions } from \"../shared/chartBase\";\nimport { buildBaseChartOptions } from \"../shared/baseChartOptions\";\nimport { DONUT_CHART_HEIGHT } from \"../../constants/chartOptions\";\nimport type { DonutChartProps } from \"./types\";\n\nexport function buildDonutOptions(\n props: DonutChartProps,\n colors: ReadonlyArray<string>\n): SeedsChartOptions {\n const base = buildBaseChartOptions({\n type: \"pie\",\n description: props.description,\n });\n return {\n ...base,\n chart: {\n type: \"pie\" as const,\n styledMode: true,\n animation: false,\n // Height only — width is left fluid (v1 parity) so the chart fills its\n // container and the pie auto-centers. The container bounds the width (see\n // styles.ts) so the legend below wraps to the donut and centers with it.\n height: DONUT_CHART_HEIGHT,\n // Drop Highcharts' default spacing so the donut uses the full height.\n spacing: [0, 0, 0, 0],\n },\n plotOptions: {\n pie: {\n animation: false,\n // borderRadius must be set in JS, not CSS, because Highcharts computes\n // the arc path before applying it — CSS border-radius has no effect.\n borderRadius: 0,\n dataLabels: { enabled: false },\n innerSize: \"50%\",\n ...(props.onClick || props.onMouseEnter || props.onMouseLeave\n ? {\n point: {\n events: {\n click: props.onClick\n ? function (this: { name: string }) {\n props.onClick!({ position: this.name });\n }\n : undefined,\n mouseOver: props.onMouseEnter\n ? function (this: { name: string }) {\n props.onMouseEnter!({ position: this.name });\n }\n : undefined,\n mouseOut: props.onMouseLeave\n ? function (this: { name: string }) {\n props.onMouseLeave!({ position: this.name });\n }\n : undefined,\n },\n },\n }\n : {}),\n },\n },\n series: [\n {\n type: \"pie\",\n name: \"Data\",\n data: props.data.map((d, i) => ({\n name: d.name,\n y: d.value,\n color: d.color ?? colors[i] ?? \"\",\n })),\n },\n ],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,MAAM,eAAe;;;ACKvB,SAAS,kBACd,OACA,QACmB;AACnB,QAAM,OAAO,sBAAsB;AAAA,IACjC,MAAM;AAAA,IACN,aAAa,MAAM;AAAA,EACrB,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA;AAAA;AAAA;AAAA,MAIX,QAAQ;AAAA;AAAA,MAER,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACtB;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,QACH,WAAW;AAAA;AAAA;AAAA,QAGX,cAAc;AAAA,QACd,YAAY,EAAE,SAAS,MAAM;AAAA,QAC7B,WAAW;AAAA,QACX,GAAI,MAAM,WAAW,MAAM,gBAAgB,MAAM,eAC7C;AAAA,UACE,OAAO;AAAA,YACL,QAAQ;AAAA,cACN,OAAO,MAAM,UACT,WAAkC;AAChC,sBAAM,QAAS,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,cACxC,IACA;AAAA,cACJ,WAAW,MAAM,eACb,WAAkC;AAChC,sBAAM,aAAc,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,cAC7C,IACA;AAAA,cACJ,UAAU,MAAM,eACZ,WAAkC;AAChC,sBAAM,aAAc,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,cAC7C,IACA;AAAA,YACN;AAAA,UACF;AAAA,QACF,IACA,CAAC;AAAA,MACP;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,UAC9B,MAAM,EAAE;AAAA,UACR,GAAG,EAAE;AAAA,UACL,OAAO,EAAE,SAAS,OAAO,CAAC,KAAK;AAAA,QACjC,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;;;ADlBM;AAnCC,IAAM,aAAa,KAAK,SAASA,YAAW,OAAwB;AAGzE,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAAA,IACpC,QAAQ,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAAA,EACpD,CAAC;AAGD,QAAM,UAAU;AAAA,IACd,MAAM,kBAAkB,OAAO,MAAM;AAAA,IACrC,CAAC,OAAO,MAAM;AAAA,EAChB;AACA,QAAM,aAAa,QAAQ,MAAM,OAAO;AAMxC,QAAM,iBAAiB,uBAAuB;AAAA,IAC5C,eAAe,CAAC,mBAAmB;AAAA,IACnC,QAAQ,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,IACrC;AAAA,IACA,WAAW,MAAM;AAAA,EACnB,CAAC;AAKD,QAAM,UAAU,MAAM,UAClB,CAAC,SACC,MAAM,QAAS,IAAyC,IAC1D;AAEJ,SACE,oBAAC,SAAK,GAAG,gBACP;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,QAAQ,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,QAChC,MAAM,EAAE;AAAA,QACR,OAAO,OAAO,CAAC;AAAA,QACf,MAAM,EAAE;AAAA,MACV,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,MAAM;AAAA,MACzB,oBAAoB,MAAM;AAAA,MAC1B,aAAa,MAAM;AAAA,MACnB,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA;AAAA,EACjB,GACF;AAEJ,CAAC;","names":["DonutChart"]}