@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.
- package/LICENSE +49 -0
- package/README.md +41 -0
- package/dist/charts/ChartFrame.d.ts +75 -0
- package/dist/charts/ChartFrame.d.ts.map +1 -0
- package/dist/charts/ChartFrame.js +100 -0
- package/dist/charts/ChartFrame.js.map +1 -0
- package/dist/charts/LinePlot.d.ts +32 -0
- package/dist/charts/LinePlot.d.ts.map +1 -0
- package/dist/charts/LinePlot.js +93 -0
- package/dist/charts/LinePlot.js.map +1 -0
- package/dist/charts/cartesian.d.ts +35 -0
- package/dist/charts/cartesian.d.ts.map +1 -0
- package/dist/charts/cartesian.js +23 -0
- package/dist/charts/cartesian.js.map +1 -0
- package/dist/charts/format.d.ts +7 -0
- package/dist/charts/format.d.ts.map +1 -0
- package/dist/charts/format.js +12 -0
- package/dist/charts/format.js.map +1 -0
- package/dist/charts/index.d.ts +7 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +7 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/scale.d.ts +20 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +75 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/svg.d.ts +51 -0
- package/dist/charts/svg.d.ts.map +1 -0
- package/dist/charts/svg.js +13 -0
- package/dist/charts/svg.js.map +1 -0
- package/dist/charts/svg.native.d.ts +50 -0
- package/dist/charts/svg.native.d.ts.map +1 -0
- package/dist/charts/svg.native.js +14 -0
- package/dist/charts/svg.native.js.map +1 -0
- package/dist/components/area-chart/AreaChart.d.ts +11 -0
- package/dist/components/area-chart/AreaChart.d.ts.map +1 -0
- package/dist/components/area-chart/AreaChart.js +10 -0
- package/dist/components/area-chart/AreaChart.js.map +1 -0
- package/dist/components/area-chart/index.d.ts +2 -0
- package/dist/components/area-chart/index.d.ts.map +1 -0
- package/dist/components/area-chart/index.js +2 -0
- package/dist/components/area-chart/index.js.map +1 -0
- package/dist/components/bar-chart/BarChart.d.ts +31 -0
- package/dist/components/bar-chart/BarChart.d.ts.map +1 -0
- package/dist/components/bar-chart/BarChart.js +114 -0
- package/dist/components/bar-chart/BarChart.js.map +1 -0
- package/dist/components/bar-chart/index.d.ts +2 -0
- package/dist/components/bar-chart/index.d.ts.map +1 -0
- package/dist/components/bar-chart/index.js +2 -0
- package/dist/components/bar-chart/index.js.map +1 -0
- package/dist/components/line-chart/LineChart.d.ts +8 -0
- package/dist/components/line-chart/LineChart.d.ts.map +1 -0
- package/dist/components/line-chart/LineChart.js +10 -0
- package/dist/components/line-chart/LineChart.js.map +1 -0
- package/dist/components/line-chart/index.d.ts +2 -0
- package/dist/components/line-chart/index.d.ts.map +1 -0
- package/dist/components/line-chart/index.js +2 -0
- package/dist/components/line-chart/index.js.map +1 -0
- package/dist/components/pie-chart/PieChart.d.ts +37 -0
- package/dist/components/pie-chart/PieChart.d.ts.map +1 -0
- package/dist/components/pie-chart/PieChart.js +89 -0
- package/dist/components/pie-chart/PieChart.js.map +1 -0
- package/dist/components/pie-chart/index.d.ts +2 -0
- package/dist/components/pie-chart/index.d.ts.map +1 -0
- package/dist/components/pie-chart/index.js +2 -0
- package/dist/components/pie-chart/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/package.json +93 -0
- package/src/charts/ChartFrame.tsx +303 -0
- package/src/charts/LinePlot.tsx +216 -0
- package/src/charts/cartesian.tsx +99 -0
- package/src/charts/format.ts +14 -0
- package/src/charts/index.ts +16 -0
- package/src/charts/scale.ts +91 -0
- package/src/charts/svg.native.tsx +62 -0
- package/src/charts/svg.tsx +57 -0
- package/src/components/area-chart/AreaChart.tsx +14 -0
- package/src/components/area-chart/index.ts +1 -0
- package/src/components/bar-chart/BarChart.tsx +300 -0
- package/src/components/bar-chart/index.ts +1 -0
- package/src/components/line-chart/LineChart.tsx +11 -0
- package/src/components/line-chart/index.ts +1 -0
- package/src/components/pie-chart/PieChart.tsx +192 -0
- package/src/components/pie-chart/index.ts +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|