@advui/charts 0.5.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 (88) hide show
  1. package/LICENSE +49 -0
  2. package/README.md +41 -0
  3. package/dist/charts/ChartFrame.d.ts +75 -0
  4. package/dist/charts/ChartFrame.d.ts.map +1 -0
  5. package/dist/charts/ChartFrame.js +100 -0
  6. package/dist/charts/ChartFrame.js.map +1 -0
  7. package/dist/charts/LinePlot.d.ts +32 -0
  8. package/dist/charts/LinePlot.d.ts.map +1 -0
  9. package/dist/charts/LinePlot.js +93 -0
  10. package/dist/charts/LinePlot.js.map +1 -0
  11. package/dist/charts/cartesian.d.ts +35 -0
  12. package/dist/charts/cartesian.d.ts.map +1 -0
  13. package/dist/charts/cartesian.js +23 -0
  14. package/dist/charts/cartesian.js.map +1 -0
  15. package/dist/charts/format.d.ts +7 -0
  16. package/dist/charts/format.d.ts.map +1 -0
  17. package/dist/charts/format.js +12 -0
  18. package/dist/charts/format.js.map +1 -0
  19. package/dist/charts/index.d.ts +7 -0
  20. package/dist/charts/index.d.ts.map +1 -0
  21. package/dist/charts/index.js +7 -0
  22. package/dist/charts/index.js.map +1 -0
  23. package/dist/charts/scale.d.ts +20 -0
  24. package/dist/charts/scale.d.ts.map +1 -0
  25. package/dist/charts/scale.js +75 -0
  26. package/dist/charts/scale.js.map +1 -0
  27. package/dist/charts/svg.d.ts +51 -0
  28. package/dist/charts/svg.d.ts.map +1 -0
  29. package/dist/charts/svg.js +13 -0
  30. package/dist/charts/svg.js.map +1 -0
  31. package/dist/charts/svg.native.d.ts +50 -0
  32. package/dist/charts/svg.native.d.ts.map +1 -0
  33. package/dist/charts/svg.native.js +14 -0
  34. package/dist/charts/svg.native.js.map +1 -0
  35. package/dist/components/area-chart/AreaChart.d.ts +11 -0
  36. package/dist/components/area-chart/AreaChart.d.ts.map +1 -0
  37. package/dist/components/area-chart/AreaChart.js +10 -0
  38. package/dist/components/area-chart/AreaChart.js.map +1 -0
  39. package/dist/components/area-chart/index.d.ts +2 -0
  40. package/dist/components/area-chart/index.d.ts.map +1 -0
  41. package/dist/components/area-chart/index.js +2 -0
  42. package/dist/components/area-chart/index.js.map +1 -0
  43. package/dist/components/bar-chart/BarChart.d.ts +31 -0
  44. package/dist/components/bar-chart/BarChart.d.ts.map +1 -0
  45. package/dist/components/bar-chart/BarChart.js +114 -0
  46. package/dist/components/bar-chart/BarChart.js.map +1 -0
  47. package/dist/components/bar-chart/index.d.ts +2 -0
  48. package/dist/components/bar-chart/index.d.ts.map +1 -0
  49. package/dist/components/bar-chart/index.js +2 -0
  50. package/dist/components/bar-chart/index.js.map +1 -0
  51. package/dist/components/line-chart/LineChart.d.ts +8 -0
  52. package/dist/components/line-chart/LineChart.d.ts.map +1 -0
  53. package/dist/components/line-chart/LineChart.js +10 -0
  54. package/dist/components/line-chart/LineChart.js.map +1 -0
  55. package/dist/components/line-chart/index.d.ts +2 -0
  56. package/dist/components/line-chart/index.d.ts.map +1 -0
  57. package/dist/components/line-chart/index.js +2 -0
  58. package/dist/components/line-chart/index.js.map +1 -0
  59. package/dist/components/pie-chart/PieChart.d.ts +37 -0
  60. package/dist/components/pie-chart/PieChart.d.ts.map +1 -0
  61. package/dist/components/pie-chart/PieChart.js +89 -0
  62. package/dist/components/pie-chart/PieChart.js.map +1 -0
  63. package/dist/components/pie-chart/index.d.ts +2 -0
  64. package/dist/components/pie-chart/index.d.ts.map +1 -0
  65. package/dist/components/pie-chart/index.js +2 -0
  66. package/dist/components/pie-chart/index.js.map +1 -0
  67. package/dist/index.d.ts +5 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +7 -0
  70. package/dist/index.js.map +1 -0
  71. package/package.json +93 -0
  72. package/src/charts/ChartFrame.tsx +303 -0
  73. package/src/charts/LinePlot.tsx +216 -0
  74. package/src/charts/cartesian.tsx +99 -0
  75. package/src/charts/format.ts +14 -0
  76. package/src/charts/index.ts +16 -0
  77. package/src/charts/scale.ts +91 -0
  78. package/src/charts/svg.native.tsx +62 -0
  79. package/src/charts/svg.tsx +57 -0
  80. package/src/components/area-chart/AreaChart.tsx +14 -0
  81. package/src/components/area-chart/index.ts +1 -0
  82. package/src/components/bar-chart/BarChart.tsx +300 -0
  83. package/src/components/bar-chart/index.ts +1 -0
  84. package/src/components/line-chart/LineChart.tsx +11 -0
  85. package/src/components/line-chart/index.ts +1 -0
  86. package/src/components/pie-chart/PieChart.tsx +192 -0
  87. package/src/components/pie-chart/index.ts +1 -0
  88. package/src/index.ts +6 -0
@@ -0,0 +1,75 @@
1
+ /** Clean, round tick values ("nice numbers") covering [min, max]. */
2
+ export function niceTicks(min, max, count = 5) {
3
+ if (!Number.isFinite(min) || !Number.isFinite(max))
4
+ return [0];
5
+ if (min === max) {
6
+ if (min === 0)
7
+ return [0, 1];
8
+ [min, max] = min > 0 ? [0, min] : [min, 0];
9
+ }
10
+ const step = niceStep((max - min) / Math.max(1, count - 1));
11
+ const start = Math.floor(min / step) * step;
12
+ const end = Math.ceil(max / step) * step;
13
+ const ticks = [];
14
+ // Rounding keeps 0.1 + 0.2 style float noise out of the labels.
15
+ for (let v = start; v <= end + step / 2; v += step)
16
+ ticks.push(Number(v.toPrecision(12)));
17
+ return ticks;
18
+ }
19
+ function niceStep(raw) {
20
+ const power = 10 ** Math.floor(Math.log10(raw));
21
+ const fraction = raw / power;
22
+ const nice = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 2.5 ? 2.5 : fraction <= 5 ? 5 : 10;
23
+ return nice * power;
24
+ }
25
+ /** Maps a value in [d0, d1] to [r0, r1]. */
26
+ export function linearScale([d0, d1], [r0, r1]) {
27
+ const span = d1 - d0 || 1;
28
+ return (value) => r0 + ((value - d0) / span) * (r1 - r0);
29
+ }
30
+ /**
31
+ * Splits [start, end] into `count` equal bands; `band(i)` is the start of
32
+ * band i and `bandwidth` its size.
33
+ */
34
+ export function bandScale(count, [start, end]) {
35
+ const bandwidth = (end - start) / Math.max(1, count);
36
+ return { band: (index) => start + index * bandwidth, bandwidth };
37
+ }
38
+ /**
39
+ * A rectangle with rounded corners on its data end only (the end away from
40
+ * the baseline), as an SVG path. `direction` is where the data end points.
41
+ */
42
+ export function barPath(x, y, width, height, radius, direction) {
43
+ if (width <= 0 || height <= 0)
44
+ return '';
45
+ const r = Math.max(0, Math.min(radius, width / 2, height / 2));
46
+ const x2 = x + width;
47
+ const y2 = y + height;
48
+ switch (direction) {
49
+ case 'up':
50
+ return `M${x},${y2}V${y + r}Q${x},${y} ${x + r},${y}H${x2 - r}Q${x2},${y} ${x2},${y + r}V${y2}Z`;
51
+ case 'down':
52
+ return `M${x},${y}V${y2 - r}Q${x},${y2} ${x + r},${y2}H${x2 - r}Q${x2},${y2} ${x2},${y2 - r}V${y}Z`;
53
+ case 'right':
54
+ return `M${x},${y}H${x2 - r}Q${x2},${y} ${x2},${y + r}V${y2 - r}Q${x2},${y2} ${x2 - r},${y2}H${x}Z`;
55
+ case 'left':
56
+ return `M${x2},${y}H${x + r}Q${x},${y} ${x},${y + r}V${y2 - r}Q${x},${y2} ${x + r},${y2}H${x2}Z`;
57
+ }
58
+ }
59
+ /** A pie or donut slice as an SVG path; angles in radians, 0 at 12 o'clock. */
60
+ export function arcPath(cx, cy, outer, inner, start, end) {
61
+ const point = (radius, angle) => `${cx + radius * Math.sin(angle)},${cy - radius * Math.cos(angle)}`;
62
+ const large = end - start > Math.PI ? 1 : 0;
63
+ // A full circle cannot be one arc: split it in two.
64
+ if (end - start >= Math.PI * 2 - 1e-6) {
65
+ const mid = start + Math.PI;
66
+ return inner > 0
67
+ ? `M${point(outer, start)}A${outer},${outer} 0 1 1 ${point(outer, mid)}A${outer},${outer} 0 1 1 ${point(outer, start)}` +
68
+ `M${point(inner, start)}A${inner},${inner} 0 1 0 ${point(inner, mid)}A${inner},${inner} 0 1 0 ${point(inner, start)}Z`
69
+ : `M${point(outer, start)}A${outer},${outer} 0 1 1 ${point(outer, mid)}A${outer},${outer} 0 1 1 ${point(outer, start)}Z`;
70
+ }
71
+ return inner > 0
72
+ ? `M${point(outer, start)}A${outer},${outer} 0 ${large} 1 ${point(outer, end)}L${point(inner, end)}A${inner},${inner} 0 ${large} 0 ${point(inner, start)}Z`
73
+ : `M${cx},${cy}L${point(outer, start)}A${outer},${outer} 0 ${large} 1 ${point(outer, end)}Z`;
74
+ }
75
+ //# sourceMappingURL=scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/charts/scale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { ReactNode } from 'react';
2
+ type Common = {
3
+ children?: ReactNode;
4
+ opacity?: number;
5
+ };
6
+ type Paint = {
7
+ fill?: string;
8
+ fillOpacity?: number;
9
+ stroke?: string;
10
+ strokeWidth?: number;
11
+ };
12
+ export declare function Svg({ width, height, children }: Common & {
13
+ width: number;
14
+ height: number;
15
+ }): import("react").JSX.Element;
16
+ export declare const G: ({ children, opacity }: Common) => import("react").JSX.Element;
17
+ export declare const Rect: (props: Paint & {
18
+ x: number;
19
+ y: number;
20
+ width: number;
21
+ height: number;
22
+ }) => import("react").JSX.Element;
23
+ export declare const Path: (props: Paint & {
24
+ d: string;
25
+ strokeLinejoin?: "round";
26
+ strokeLinecap?: "round";
27
+ }) => import("react").JSX.Element;
28
+ export declare const Line: (props: Paint & {
29
+ x1: number;
30
+ y1: number;
31
+ x2: number;
32
+ y2: number;
33
+ }) => import("react").JSX.Element;
34
+ export declare const Circle: (props: Paint & {
35
+ cx: number;
36
+ cy: number;
37
+ r: number;
38
+ }) => import("react").JSX.Element;
39
+ export declare function SvgText({ children, ...props }: {
40
+ children: ReactNode;
41
+ x: number;
42
+ y: number;
43
+ fill: string;
44
+ fontSize: number;
45
+ fontWeight?: string;
46
+ textAnchor?: 'start' | 'middle' | 'end';
47
+ /** Vertical nudge: 0.35em centers text on y. */
48
+ dy?: string;
49
+ }): import("react").JSX.Element;
50
+ export {};
51
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/charts/svg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,KAAK,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACxD,KAAK,KAAK,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BAa1F;AAED,eAAO,MAAM,CAAC,GAAI,uBAAuB,MAAM,gCAAwC,CAAA;AAEvF,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gCAE1F,CAAA;AAED,eAAO,MAAM,IAAI,GACf,OAAO,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,gCACzD,CAAA;AAExB,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,gCAErF,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,gCAE1E,CAAA;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IACvC,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,+BAEA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function Svg({ width, height, children }) {
3
+ return (_jsx("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, style: { display: 'block', overflow: 'visible', fontFamily: 'inherit' }, "aria-hidden": true, focusable: "false", children: children }));
4
+ }
5
+ export const G = ({ children, opacity }) => _jsx("g", { opacity: opacity, children: children });
6
+ export const Rect = (props) => (_jsx("rect", { ...props }));
7
+ export const Path = (props) => _jsx("path", { ...props });
8
+ export const Line = (props) => (_jsx("line", { ...props }));
9
+ export const Circle = (props) => (_jsx("circle", { ...props }));
10
+ export function SvgText({ children, ...props }) {
11
+ return _jsx("text", { ...props, children: children });
12
+ }
13
+ //# sourceMappingURL=svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/charts/svg.tsx"],"names":[],"mappings":";AAQA,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAA8C;IACzF,OAAO,CACL,cACE,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EACjC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,uBAEvE,SAAS,EAAC,OAAO,YAEhB,QAAQ,GACL,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAU,EAAE,EAAE,CAAC,YAAG,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAK,CAAA;AAEvF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAsE,EAAE,EAAE,CAAC,CAC9F,kBAAU,KAAK,GAAI,CACpB,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAA+E,EAC/E,EAAE,CAAC,kBAAU,KAAK,GAAI,CAAA;AAExB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAiE,EAAE,EAAE,CAAC,CACzF,kBAAU,KAAK,GAAI,CACpB,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAoD,EAAE,EAAE,CAAC,CAC9E,oBAAY,KAAK,GAAI,CACtB,CAAA;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,GAAG,KAAK,EAWT;IACC,OAAO,kBAAU,KAAK,YAAG,QAAQ,GAAQ,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { ReactNode } from 'react';
2
+ type Common = {
3
+ children?: ReactNode;
4
+ opacity?: number;
5
+ };
6
+ type Paint = {
7
+ fill?: string;
8
+ fillOpacity?: number;
9
+ stroke?: string;
10
+ strokeWidth?: number;
11
+ };
12
+ export declare function Svg({ width, height, children }: Common & {
13
+ width: number;
14
+ height: number;
15
+ }): import("react").JSX.Element;
16
+ export declare const G: ({ children, opacity }: Common) => import("react").JSX.Element;
17
+ export declare const Rect: (props: Paint & {
18
+ x: number;
19
+ y: number;
20
+ width: number;
21
+ height: number;
22
+ }) => import("react").JSX.Element;
23
+ export declare const Path: (props: Paint & {
24
+ d: string;
25
+ strokeLinejoin?: "round";
26
+ strokeLinecap?: "round";
27
+ }) => import("react").JSX.Element;
28
+ export declare const Line: (props: Paint & {
29
+ x1: number;
30
+ y1: number;
31
+ x2: number;
32
+ y2: number;
33
+ }) => import("react").JSX.Element;
34
+ export declare const Circle: (props: Paint & {
35
+ cx: number;
36
+ cy: number;
37
+ r: number;
38
+ }) => import("react").JSX.Element;
39
+ export declare function SvgText({ children, ...props }: {
40
+ children: ReactNode;
41
+ x: number;
42
+ y: number;
43
+ fill: string;
44
+ fontSize: number;
45
+ fontWeight?: string;
46
+ textAnchor?: 'start' | 'middle' | 'end';
47
+ dy?: string;
48
+ }): import("react").JSX.Element;
49
+ export {};
50
+ //# sourceMappingURL=svg.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.native.d.ts","sourceRoot":"","sources":["../../src/charts/svg.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAYtC,KAAK,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACxD,KAAK,KAAK,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BAY1F;AAED,eAAO,MAAM,CAAC,GAAI,uBAAuB,MAAM,gCAAoD,CAAA;AAEnG,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gCAE1F,CAAA;AAED,eAAO,MAAM,IAAI,GACf,OAAO,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,gCACnD,CAAA;AAE9B,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,gCAErF,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,gCAE1E,CAAA;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IACvC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,+BAEA"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import NativeSvg, { Circle as NativeCircle, G as NativeG, Line as NativeLine, Path as NativePath, Rect as NativeRect, Text as NativeText, } from 'react-native-svg';
3
+ export function Svg({ width, height, children }) {
4
+ return (_jsx(NativeSvg, { width: width, height: height, viewBox: `0 0 ${width} ${height}`, accessible: false, importantForAccessibility: "no-hide-descendants", children: children }));
5
+ }
6
+ export const G = ({ children, opacity }) => _jsx(NativeG, { opacity: opacity, children: children });
7
+ export const Rect = (props) => (_jsx(NativeRect, { ...props }));
8
+ export const Path = (props) => _jsx(NativePath, { ...props });
9
+ export const Line = (props) => (_jsx(NativeLine, { ...props }));
10
+ export const Circle = (props) => (_jsx(NativeCircle, { ...props }));
11
+ export function SvgText({ children, ...props }) {
12
+ return _jsx(NativeText, { ...props, children: children });
13
+ }
14
+ //# sourceMappingURL=svg.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.native.js","sourceRoot":"","sources":["../../src/charts/svg.native.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,EAAE,EAChB,MAAM,IAAI,YAAY,EACtB,CAAC,IAAI,OAAO,EACZ,IAAI,IAAI,UAAU,EAClB,IAAI,IAAI,UAAU,EAClB,IAAI,IAAI,UAAU,EAClB,IAAI,IAAI,UAAU,GACnB,MAAM,kBAAkB,CAAA;AAOzB,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAA8C;IACzF,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EACjC,UAAU,EAAE,KAAK,EACjB,yBAAyB,EAAC,qBAAqB,YAE9C,QAAQ,GACC,CACb,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAU,EAAE,EAAE,CAAC,KAAC,OAAO,IAAC,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAW,CAAA;AAEnG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAsE,EAAE,EAAE,CAAC,CAC9F,KAAC,UAAU,OAAK,KAAK,GAAI,CAC1B,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAA+E,EAC/E,EAAE,CAAC,KAAC,UAAU,OAAK,KAAK,GAAI,CAAA;AAE9B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAiE,EAAE,EAAE,CAAC,CACzF,KAAC,UAAU,OAAK,KAAK,GAAI,CAC1B,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAoD,EAAE,EAAE,CAAC,CAC9E,KAAC,YAAY,OAAK,KAAK,GAAI,CAC5B,CAAA;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,GAAG,KAAK,EAUT;IACC,OAAO,KAAC,UAAU,OAAM,KAAgB,YAAG,QAAQ,GAAc,CAAA;AACnE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type LinePlotProps } from '../../charts';
2
+ export interface AreaChartProps extends LinePlotProps {
3
+ /** Stacks the series, so the top edge is their total (part-to-whole over time). */
4
+ stacked?: boolean;
5
+ }
6
+ /**
7
+ * A line chart with a light wash under each line, from zero. Best for one
8
+ * series, or for stacked totals over time.
9
+ */
10
+ export declare function AreaChart({ stacked, ...props }: AreaChartProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=AreaChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/components/area-chart/AreaChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAEtE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LinePlot } from '../../charts';
3
+ /**
4
+ * A line chart with a light wash under each line, from zero. Best for one
5
+ * series, or for stacked totals over time.
6
+ */
7
+ export function AreaChart({ stacked = false, ...props }) {
8
+ return _jsx(LinePlot, { ...props, area: true, stacked: stacked });
9
+ }
10
+ //# sourceMappingURL=AreaChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/components/area-chart/AreaChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,cAAc,CAAA;AAO3D;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAkB;IACrE,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,IAAI,QAAC,OAAO,EAAE,OAAO,GAAI,CAAA;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AreaChart, type AreaChartProps } from './AreaChart';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/area-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { AreaChart } from './AreaChart';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/area-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { type ChartLabels, type ChartSeries } from '../../charts';
2
+ export interface BarChartProps {
3
+ /** Names the chart: its heading and accessible name. */
4
+ title: string;
5
+ description?: string;
6
+ /** One object per category, e.g. `{ month: 'Jan', health: 120, wash: 80 }`. */
7
+ data: Record<string, unknown>[];
8
+ /** The field holding each row's category name. */
9
+ index: string;
10
+ /** Heading of the category column in the table view. Default: `index`. */
11
+ indexLabel?: string;
12
+ /** The numeric fields to plot, in color order. */
13
+ series: ChartSeries[];
14
+ /** `vertical` draws columns; `horizontal` bars suit long category names. */
15
+ layout?: 'vertical' | 'horizontal';
16
+ /** Stacks the series in one bar per category (part-to-whole). */
17
+ stacked?: boolean;
18
+ /** Height in pixels. Default: 240, or 36 per category for horizontal bars. */
19
+ height?: number;
20
+ /** Fixed width; by default the chart fills its container. */
21
+ width?: number;
22
+ /** Formats values in the tooltip and table. Axis ticks are always compact (1.2K). */
23
+ valueFormatter?: (value: number) => string;
24
+ labels?: Partial<ChartLabels>;
25
+ }
26
+ /**
27
+ * Compares values across categories as columns or bars, grouped or stacked.
28
+ * Includes a legend, a tooltip (hover, tap or arrow keys) and a table view.
29
+ */
30
+ export declare function BarChart({ title, description, data, index, indexLabel, series, layout, stacked, height: heightProp, width, valueFormatter, labels, }: BarChartProps): import("react").JSX.Element;
31
+ //# sourceMappingURL=BarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/components/bar-chart/BarChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EAiBjB,MAAM,cAAc,CAAA;AAMrB,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IAClC,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qFAAqF;IACrF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAC9B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,UAAkB,EAClB,MAAM,EACN,MAAmB,EACnB,OAAe,EACf,MAAM,EAAE,UAAU,EAClB,KAAK,EACL,cAA2B,EAC3B,MAAM,GACP,EAAE,aAAa,+BAkOf"}
@@ -0,0 +1,114 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CategoryLabels, ChartFrame, G, Line, Path, Svg, SvgText, ValueGrid, bandScale, barPath, cartesianPadding, formatCompact, formatFull, linearScale, niceTicks, numberAt, useChartColors, useChartInk, } from '../../charts';
3
+ const MAX_BAR = 24;
4
+ const GAP = 2;
5
+ const RADIUS = 4;
6
+ /**
7
+ * Compares values across categories as columns or bars, grouped or stacked.
8
+ * Includes a legend, a tooltip (hover, tap or arrow keys) and a table view.
9
+ */
10
+ export function BarChart({ title, description, data, index, indexLabel = index, series, layout = 'vertical', stacked = false, height: heightProp, width, valueFormatter = formatFull, labels, }) {
11
+ const colors = useChartColors();
12
+ const ink = useChartInk('$background');
13
+ const horizontal = layout === 'horizontal';
14
+ const height = heightProp ?? (horizontal ? Math.max(120, data.length * 36 + 32) : 240);
15
+ const categories = data.map((row) => String(row[index] ?? ''));
16
+ const values = data.map((row) => series.map((s) => numberAt(row, s.key)));
17
+ // Stacks sum positives up and negatives down; groups need each value.
18
+ const extents = values.flatMap((row) => stacked
19
+ ? [
20
+ row.reduce((sum, v) => sum + Math.max(0, v ?? 0), 0),
21
+ row.reduce((sum, v) => sum + Math.min(0, v ?? 0), 0),
22
+ ]
23
+ : row.map((v) => v ?? 0));
24
+ const ticks = niceTicks(Math.min(0, ...extents), Math.max(0, ...extents));
25
+ const domain = [ticks[0], ticks.at(-1)];
26
+ const categoryWidth = horizontal
27
+ ? Math.min(160, Math.max(...categories.map((c) => c.length), 1) * 7 + 12)
28
+ : 0;
29
+ const pad = horizontal
30
+ ? { top: 8, right: 16, bottom: 24, left: categoryWidth }
31
+ : cartesianPadding(ticks);
32
+ const layoutAt = (w) => {
33
+ const valueScale = horizontal
34
+ ? linearScale(domain, [pad.left, w - pad.right])
35
+ : linearScale(domain, [height - pad.bottom, pad.top]);
36
+ const band = horizontal
37
+ ? bandScale(data.length, [pad.top, height - pad.bottom])
38
+ : bandScale(data.length, [pad.left, w - pad.right]);
39
+ const k = stacked ? 1 : series.length;
40
+ // Bars never fill their slot: at most 24px, and the rest of the band is air.
41
+ const thickness = Math.max(2, Math.min(MAX_BAR, (band.bandwidth * 0.7 - GAP * (k - 1)) / k));
42
+ const group = k * thickness + (k - 1) * GAP;
43
+ return { valueScale, band, thickness, group };
44
+ };
45
+ const hitTest = (x, y, w) => {
46
+ const { band } = layoutAt(w);
47
+ const position = horizontal ? y : x;
48
+ const i = Math.floor((position - (horizontal ? pad.top : pad.left)) / band.bandwidth);
49
+ return i >= 0 && i < data.length ? i : null;
50
+ };
51
+ const format = (value) => (value == null ? '–' : valueFormatter(value));
52
+ const legend = series.length > 1
53
+ ? series.map((s, i) => ({ label: s.label, color: colors[i % 8], shape: 'square' }))
54
+ : [];
55
+ return (_jsx(ChartFrame, { title: title, description: description, legend: legend, height: height, width: width, count: data.length, hitTest: hitTest, anchor: (i, w) => {
56
+ const { band } = layoutAt(w);
57
+ const center = band.band(i) + band.bandwidth / 2;
58
+ return horizontal ? { x: w - pad.right, y: center } : { x: center, y: pad.top };
59
+ }, tooltip: (i) => ({
60
+ title: categories[i],
61
+ rows: series.map((s, j) => ({
62
+ label: s.label,
63
+ value: format(values[i][j]),
64
+ color: colors[j % 8],
65
+ shape: 'square',
66
+ })),
67
+ }), table: {
68
+ columns: [indexLabel, ...series.map((s) => s.label)],
69
+ rows: data.map((_, i) => [categories[i], ...values[i].map(format)]),
70
+ numeric: [false, ...series.map(() => true)],
71
+ }, labels: labels, children: (w, active) => {
72
+ const { valueScale, band, thickness, group } = layoutAt(w);
73
+ const zero = valueScale(0);
74
+ return (_jsxs(Svg, { width: w, height: height, children: [horizontal ? (_jsxs(_Fragment, { children: [ticks.map((tick) => (_jsx(Line, { x1: valueScale(tick), x2: valueScale(tick), y1: pad.top, y2: height - pad.bottom, stroke: tick === 0 ? ink.axis : ink.grid, strokeWidth: 1 }, `grid-${tick}`))), ticks.map((tick) => (_jsx(SvgText, { x: valueScale(tick), y: height - pad.bottom + 4, dy: "0.9em", fill: ink.text, fontSize: 12, textAnchor: "middle", children: formatCompact(tick) }, `tick-${tick}`))), categories.map((category, i) => (_jsx(SvgText, { x: pad.left - 8, y: band.band(i) + band.bandwidth / 2, dy: "0.35em", fill: ink.text, fontSize: 12, textAnchor: "end", children: truncate(category, Math.floor((pad.left - 12) / 7)) }, `cat-${i}`)))] })) : (_jsxs(_Fragment, { children: [_jsx(ValueGrid, { ticks: ticks, y: valueScale, left: pad.left, right: w - pad.right, ink: ink }), _jsx(CategoryLabels, { labels: categories, x: (i) => band.band(i) + band.bandwidth / 2, y: height - pad.bottom + 4, available: band.bandwidth, ink: ink })] })), values.map((row, i) => {
75
+ const start = band.band(i) + (band.bandwidth - group) / 2;
76
+ let positive = 0;
77
+ let negative = 0;
78
+ // In a stack, only the outermost segment on each side gets the rounded end.
79
+ const lastPositive = row.reduce((last, v, j) => ((v ?? 0) > 0 ? j : last), -1);
80
+ const lastNegative = row.reduce((last, v, j) => ((v ?? 0) < 0 ? j : last), -1);
81
+ return (_jsx(G, { opacity: active == null || active === i ? 1 : 0.55, children: row.map((value, j) => {
82
+ if (value == null || value === 0)
83
+ return null;
84
+ const offset = stacked ? start : start + j * (thickness + GAP);
85
+ const from = stacked ? (value > 0 ? positive : negative) : 0;
86
+ const to = from + value;
87
+ if (stacked) {
88
+ if (value > 0)
89
+ positive = to;
90
+ else
91
+ negative = to;
92
+ }
93
+ const a = valueScale(from);
94
+ const b = valueScale(to);
95
+ // A 2px gap separates a stacked segment from the one on its baseline side.
96
+ const inset = stacked && from !== 0 ? GAP : 0;
97
+ const rounded = !stacked || j === (value > 0 ? lastPositive : lastNegative);
98
+ const radius = rounded ? RADIUS : 0;
99
+ const d = horizontal
100
+ ? value > 0
101
+ ? barPath(Math.min(a, b) + inset, offset, Math.abs(b - a) - inset, thickness, radius, 'right')
102
+ : barPath(Math.min(a, b), offset, Math.abs(b - a) - inset, thickness, radius, 'left')
103
+ : value > 0
104
+ ? barPath(offset, Math.min(a, b), thickness, Math.abs(b - a) - inset, radius, 'up')
105
+ : barPath(offset, Math.min(a, b) + inset, thickness, Math.abs(b - a) - inset, radius, 'down');
106
+ return _jsx(Path, { d: d, fill: colors[j % 8] }, j);
107
+ }) }, i));
108
+ }), horizontal ? null : (_jsx(Line, { x1: pad.left, x2: w - pad.right, y1: zero, y2: zero, stroke: ink.axis, strokeWidth: 1 }))] }));
109
+ } }));
110
+ }
111
+ function truncate(text, max) {
112
+ return text.length > max ? `${text.slice(0, Math.max(1, max - 1))}…` : text;
113
+ }
114
+ //# sourceMappingURL=BarChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/components/bar-chart/BarChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { BarChart, type BarChartProps } from './BarChart';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/bar-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { BarChart } from './BarChart';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/bar-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { type LinePlotProps } from '../../charts';
2
+ export type LineChartProps = LinePlotProps;
3
+ /**
4
+ * Shows change over an ordered axis (months, years) as 2px lines, with a
5
+ * crosshair tooltip (hover, tap or arrow keys), a legend and a table view.
6
+ */
7
+ export declare function LineChart(props: LineChartProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=LineChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/LineChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,MAAM,cAAc,GAAG,aAAa,CAAA;AAE1C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAE9C"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LinePlot } from '../../charts';
3
+ /**
4
+ * Shows change over an ordered axis (months, years) as 2px lines, with a
5
+ * crosshair tooltip (hover, tap or arrow keys), a legend and a table view.
6
+ */
7
+ export function LineChart(props) {
8
+ return _jsx(LinePlot, { ...props });
9
+ }
10
+ //# sourceMappingURL=LineChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../src/components/line-chart/LineChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,cAAc,CAAA;AAI3D;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,OAAO,KAAC,QAAQ,OAAK,KAAK,GAAI,CAAA;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { LineChart, type LineChartProps } from './LineChart';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { LineChart } from './LineChart';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/line-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { type ChartLabels } from '../../charts';
2
+ export interface PieSlice {
3
+ label: string;
4
+ value: number;
5
+ }
6
+ export interface PieChartProps {
7
+ /** Names the chart: its heading and accessible name. */
8
+ title: string;
9
+ description?: string;
10
+ /** The parts of the whole. Negative and zero values are left out. */
11
+ data: PieSlice[];
12
+ /** `donut` leaves room for the total in the middle. */
13
+ variant?: 'donut' | 'pie';
14
+ /** More slices than this fold the smallest into "Other". Default: 6. */
15
+ maxSlices?: number;
16
+ /** Height in pixels. Default: 240. */
17
+ height?: number;
18
+ width?: number;
19
+ /** Formats values in the legend, tooltip and table. */
20
+ valueFormatter?: (value: number) => string;
21
+ /** Headings for the table and the folded slice, for translation. */
22
+ text?: {
23
+ label?: string;
24
+ value?: string;
25
+ share?: string;
26
+ other?: string;
27
+ total?: string;
28
+ };
29
+ labels?: Partial<ChartLabels>;
30
+ }
31
+ /**
32
+ * Part-to-whole at a glance, for up to six parts. Each slice is named in the
33
+ * legend with its share; the tooltip (hover, tap or arrow keys) and the
34
+ * table view give the exact values. For close values, a bar chart reads better.
35
+ */
36
+ export declare function PieChart({ title, description, data, variant, maxSlices, height, width, valueFormatter, text: textProp, labels, }: PieChartProps): import("react").JSX.Element;
37
+ //# sourceMappingURL=PieChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../src/components/pie-chart/PieChart.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EASjB,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,oEAAoE;IACpE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAC9B;AAKD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,IAAI,EACJ,OAAiB,EACjB,SAAa,EACb,MAAY,EACZ,KAAK,EACL,cAA2B,EAC3B,IAAI,EAAE,QAAQ,EACd,MAAM,GACP,EAAE,aAAa,+BAqIf"}