bento-charts 1.0.2 → 1.0.4

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.
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { ChartTheme, LngDictionary, TranslationObject } from "./types/chartTypes";
3
+ export declare function useChartTheme(): ChartTheme;
4
+ export declare function useChartTranslation(): LngDictionary;
5
+ declare const ChartConfigProvider: ({ theme, Lng, translationMap, children, }: {
6
+ theme?: ChartTheme | undefined;
7
+ Lng: string;
8
+ translationMap?: TranslationObject | undefined;
9
+ children: React.ReactElement;
10
+ }) => JSX.Element;
11
+ export default ChartConfigProvider;
@@ -0,0 +1,35 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import React, { useContext } from "react";
14
+ import { DEFAULT_CHART_THEME, defaultTranslationObject, } from "./constants/chartConstants";
15
+ var ChartThemeContext = React.createContext(DEFAULT_CHART_THEME);
16
+ export function useChartTheme() {
17
+ return useContext(ChartThemeContext);
18
+ }
19
+ var ChartTranslationContext = React.createContext(defaultTranslationObject.en);
20
+ export function useChartTranslation() {
21
+ return useContext(ChartTranslationContext);
22
+ }
23
+ var ChartConfigProvider = function (_a) {
24
+ var _b = _a.theme, theme = _b === void 0 ? useChartTheme() : _b, Lng = _a.Lng, translationMap = _a.translationMap, children = _a.children;
25
+ var lang = "en";
26
+ try {
27
+ lang = Lng;
28
+ }
29
+ catch (e) {
30
+ console.error("Lng is not a supported language");
31
+ }
32
+ return (_jsx(ChartThemeContext.Provider, __assign({ value: theme }, { children: _jsx(ChartTranslationContext.Provider, __assign({ value: translationMap ? translationMap[lang] : defaultTranslationObject[lang] }, { children: children })) })));
33
+ };
34
+ export default ChartConfigProvider;
35
+ //# sourceMappingURL=ChartConfigProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartConfigProvider.js","sourceRoot":"","sources":["../src/ChartConfigProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAQpC,IAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAa,mBAAmB,CAAC,CAAC;AAC/E,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED,IAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CACjD,wBAAwB,CAAC,EAAE,CAC5B,CAAC;AACF,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAC7C,CAAC;AAED,IAAM,mBAAmB,GAAG,UAAC,EAU5B;QATC,aAAuB,EAAvB,KAAK,mBAAG,aAAa,EAAE,KAAA,EACvB,GAAG,SAAA,EACH,cAAc,oBAAA,EACd,QAAQ,cAAA;IAOR,IAAI,IAAI,GAAiB,IAAI,CAAC;IAC9B,IAAI;QACF,IAAI,GAAG,GAAmB,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;KAClD;IACD,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,aAAC,KAAK,EAAE,KAAK,gBACtC,KAAC,uBAAuB,CAAC,QAAQ,aAC/B,KAAK,EACH,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAGvE,QAAQ,IACwB,IACR,CAC9B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { BarChartProps } from '../types/chartTypes';
3
+ declare const BentoBarChart: ({ data, height, units, title, preFilter, dataMap, postFilter, removeEmpty, colorTheme, }: BarChartProps) => JSX.Element;
4
+ export default BentoBarChart;
@@ -0,0 +1,65 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { BarChart, Bar, Cell, XAxis, YAxis, Tooltip, Label } from 'recharts';
23
+ import { TOOL_TIP_STYLE, COUNT_STYLE, LABEL_STYLE, CHART_WRAPPER_STYLE, MAX_TICK_LABEL_CHARS, TITLE_STYLE, ASPECT_RATIO, TICKS_SHOW_ALL_LABELS_BELOW, UNITS_LABEL_OFFSET, TICK_MARGIN, } from '../constants/chartConstants';
24
+ import { useChartTheme, useChartTranslation } from '../ChartConfigProvider';
25
+ var tickFormatter = function (tickLabel) {
26
+ if (tickLabel.length <= MAX_TICK_LABEL_CHARS) {
27
+ return tickLabel;
28
+ }
29
+ return "".concat(tickLabel.substring(0, MAX_TICK_LABEL_CHARS), "...");
30
+ };
31
+ var BentoBarChart = function (_a) {
32
+ var data = _a.data, height = _a.height, units = _a.units, title = _a.title, preFilter = _a.preFilter, dataMap = _a.dataMap, postFilter = _a.postFilter, _b = _a.removeEmpty, removeEmpty = _b === void 0 ? true : _b, _c = _a.colorTheme, colorTheme = _c === void 0 ? 'default' : _c;
33
+ var t = useChartTranslation();
34
+ var _d = useChartTheme().bar[colorTheme], chartFill = _d.fill, missing = _d.missing;
35
+ var fill = function (entry) { return (entry.x === 'missing' ? missing : chartFill); };
36
+ data = __spreadArray([], data, true);
37
+ if (preFilter)
38
+ data = data.filter(preFilter);
39
+ if (dataMap)
40
+ data = data.map(dataMap);
41
+ if (postFilter)
42
+ data = data.filter(postFilter);
43
+ if (removeEmpty)
44
+ data = data.filter(function (d) { return d.y !== 0; });
45
+ var totalCount = data.reduce(function (sum, e) { return sum + e.y; }, 0);
46
+ // Regarding XAxis.ticks below:
47
+ // The weird conditional is added from https://github.com/recharts/recharts/issues/2593#issuecomment-1311678397
48
+ // Basically, if data is empty, Recharts will default to a domain of [0, "auto"] and our tickFormatter trips up
49
+ // on formatting a non-string. This hack manually overrides the ticks for the axis and blanks it out.
50
+ // - David L, 2023-01-03
51
+ return (_jsxs("div", __assign({ style: CHART_WRAPPER_STYLE }, { children: [_jsx("div", __assign({ style: TITLE_STYLE }, { children: title })), _jsxs(BarChart, __assign({ width: height * ASPECT_RATIO, height: height, data: data, margin: { top: 10, bottom: 100, right: 20 } }, { children: [_jsx(XAxis, __assign({ dataKey: "x", height: 20, angle: -45, ticks: data.length ? undefined : [''], tickFormatter: tickFormatter, tickMargin: TICK_MARGIN, textAnchor: "end", interval: data.length < TICKS_SHOW_ALL_LABELS_BELOW ? 0 : 'preserveStartEnd' }, { children: _jsx(Label, { value: units, offset: UNITS_LABEL_OFFSET, position: "insideBottom" }) })), _jsx(YAxis, { children: _jsx(Label, { value: t['Count'], offset: -10, position: "left", angle: 270 }) }), _jsx(Tooltip, { content: _jsx(BarTooltip, { totalCount: totalCount }) }), _jsx(Bar, __assign({ dataKey: "y", isAnimationActive: false }, { children: data.map(function (entry) { return (_jsx(Cell, { fill: fill(entry) }, entry.x)); }) }))] }))] })));
52
+ };
53
+ var BarTooltip = function (_a) {
54
+ var _b, _c, _d;
55
+ var active = _a.active, payload = _a.payload, totalCount = _a.totalCount;
56
+ if (!active) {
57
+ return null;
58
+ }
59
+ var name = (payload && ((_c = (_b = payload[0]) === null || _b === void 0 ? void 0 : _b.payload) === null || _c === void 0 ? void 0 : _c.x)) || '';
60
+ var value = (payload && ((_d = payload[0]) === null || _d === void 0 ? void 0 : _d.value)) || 0;
61
+ var percentage = totalCount ? Math.round((value / totalCount) * 100) : 0;
62
+ return (_jsxs("div", __assign({ style: TOOL_TIP_STYLE }, { children: [_jsx("p", __assign({ style: LABEL_STYLE }, { children: name })), _jsxs("p", __assign({ style: COUNT_STYLE }, { children: [value, " (", percentage, "%)"] }))] })));
63
+ };
64
+ export default BentoBarChart;
65
+ //# sourceMappingURL=BentoBarChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BentoBarChart.js","sourceRoot":"","sources":["../../src/Charts/BentoBarChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { PieChartProps } from '../types/chartTypes';
3
+ declare const BentoPie: ({ data, height, preFilter, dataMap, postFilter, sort, removeEmpty, colorTheme, }: PieChartProps) => JSX.Element;
4
+ export default BentoPie;
@@ -0,0 +1,122 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { useState } from 'react';
23
+ import { PieChart, Pie, Cell, Curve, Tooltip, Sector } from 'recharts';
24
+ import { TOOL_TIP_STYLE, LABEL_STYLE, COUNT_STYLE, OTHER_THRESHOLD, CHART_MISSING_FILL, CHART_WRAPPER_STYLE, RADIAN, MAX_LABEL_CHARS, CHART_ASPECT_RATIO, LABEL_THRESHOLD, COUNT_TEXT_STYLE, TEXT_STYLE, } from '../constants/chartConstants';
25
+ import { useChartTheme, useChartTranslation } from '../ChartConfigProvider';
26
+ import { polarToCartesian } from '../util/chartUtils';
27
+ var labelShortName = function (name) {
28
+ if (name.length <= MAX_LABEL_CHARS) {
29
+ return name;
30
+ }
31
+ // removing 3 character cause ... s add three characters
32
+ return "".concat(name.substring(0, MAX_LABEL_CHARS - 3), "\u2026");
33
+ };
34
+ var BentoPie = function (_a) {
35
+ var data = _a.data, height = _a.height, preFilter = _a.preFilter, dataMap = _a.dataMap, postFilter = _a.postFilter, _b = _a.sort, sort = _b === void 0 ? true : _b, _c = _a.removeEmpty, removeEmpty = _c === void 0 ? true : _c, _d = _a.colorTheme, colorTheme = _d === void 0 ? 'default' : _d;
36
+ var t = useChartTranslation();
37
+ var theme = useChartTheme().pie[colorTheme];
38
+ var _e = useState(undefined), activeIndex = _e[0], setActiveIndex = _e[1];
39
+ // ##################### Data processing #####################
40
+ data = __spreadArray([], data, true); // Changing immutable data to mutable data
41
+ if (preFilter)
42
+ data = data.filter(preFilter);
43
+ if (dataMap)
44
+ data = data.map(dataMap);
45
+ if (postFilter)
46
+ data = data.filter(postFilter);
47
+ // removing empty values
48
+ if (removeEmpty)
49
+ data = data.filter(function (e) { return e.y !== 0; });
50
+ if (sort)
51
+ data.sort(function (a, b) { return a.y - b.y; });
52
+ // combining sections with less than OTHER_THRESHOLD
53
+ var sum = data.reduce(function (acc, e) { return acc + e.y; }, 0);
54
+ var length = data.length;
55
+ var threshold = OTHER_THRESHOLD * sum;
56
+ var temp = data.filter(function (e) { return e.y > threshold; });
57
+ // length - 1 intentional: if there is just one category bellow threshold the "Other" category is not necessary
58
+ data = temp.length === length - 1 ? data : temp;
59
+ if (data.length !== length) {
60
+ data.push({ x: t['Other'], y: sum - data.reduce(function (acc, e) { return acc + e.y; }, 0) });
61
+ }
62
+ var bentoFormatData = data.map(function (e) { return ({ name: e.x, value: e.y }); });
63
+ // ##################### Rendering #####################
64
+ var onEnter = function (_data, index) {
65
+ setActiveIndex(index);
66
+ };
67
+ var onHover = function (_data, _index, e) {
68
+ var target = e.target;
69
+ if (target)
70
+ target.style.cursor = 'pointer';
71
+ };
72
+ var onLeave = function () {
73
+ setActiveIndex(undefined);
74
+ };
75
+ return (_jsx("div", __assign({ style: CHART_WRAPPER_STYLE }, { children: _jsxs(PieChart, __assign({ height: height, width: height * CHART_ASPECT_RATIO }, { children: [_jsx(Pie, __assign({ data: bentoFormatData, dataKey: "value", cx: "50%", cy: "50%", innerRadius: 35, outerRadius: 80, label: RenderLabel, labelLine: false, isAnimationActive: false, onMouseEnter: onEnter, onMouseLeave: onLeave, onMouseOver: onHover, activeIndex: activeIndex, activeShape: RenderActiveLabel }, { children: data.map(function (entry, index) {
76
+ var fill = theme[index % theme.length];
77
+ fill = entry.x.toLowerCase() === 'missing' ? CHART_MISSING_FILL : fill;
78
+ return _jsx(Cell, { fill: fill }, index);
79
+ }) })), _jsx(Tooltip, { content: _jsx(CustomTooltip, { totalCount: sum }), isAnimationActive: false, allowEscapeViewBox: { x: true, y: true } })] })) })));
80
+ };
81
+ var RenderLabel = function (params) {
82
+ var cx = params.cx, cy = params.cy, midAngle = params.midAngle, outerRadius = params.outerRadius, fill = params.fill, payload = params.payload, index = params.index, activeIndex = params.activeIndex;
83
+ // skip rendering this static label if the sector is selected.
84
+ // this will let the 'renderActiveState' draw without overlapping.
85
+ // also, skip rendering if segment is too small a percentage (avoids label clutter)
86
+ if (index === activeIndex || params.percent < LABEL_THRESHOLD) {
87
+ return;
88
+ }
89
+ var name = payload.name === 'null' ? '(Empty)' : payload.name;
90
+ var sin = Math.sin(-RADIAN * midAngle);
91
+ var cos = Math.cos(-RADIAN * midAngle);
92
+ var sx = cx + (outerRadius + 10) * cos;
93
+ var sy = cy + (outerRadius + 10) * sin;
94
+ var mx = cx + (outerRadius + 20) * cos;
95
+ var my = cy + (outerRadius + 20) * sin;
96
+ var ex = mx + (cos >= 0 ? 1 : -1) * 22;
97
+ var ey = my;
98
+ var textAnchor = cos >= 0 ? 'start' : 'end';
99
+ var currentTextStyle = __assign(__assign({}, TEXT_STYLE), { fontWeight: payload.selected ? 'bold' : 'normal', fontStyle: payload.name === 'null' ? 'italic' : 'normal' });
100
+ var offsetRadius = 20;
101
+ var startPoint = polarToCartesian(params.cx, params.cy, params.outerRadius, midAngle);
102
+ var endPoint = polarToCartesian(params.cx, params.cy, params.outerRadius + offsetRadius, midAngle);
103
+ var lineProps = __assign(__assign({}, params), { fill: 'none', stroke: fill, points: [startPoint, endPoint] });
104
+ return (_jsxs("g", { children: [_jsx(Curve, __assign({}, lineProps, { type: "linear", className: "recharts-pie-label-line" })), _jsx("path", { d: "M".concat(sx, ",").concat(sy, "L").concat(mx, ",").concat(my, "L").concat(ex, ",").concat(ey), stroke: fill, fill: "none" }), _jsx("circle", { cx: ex, cy: ey, r: 2, fill: fill, stroke: "none" }), _jsx("text", __assign({ x: ex + (cos >= 0 ? 1 : -1) * 12, y: ey + 3, textAnchor: textAnchor, style: currentTextStyle }, { children: labelShortName(name) })), _jsx("text", __assign({ x: ex + (cos >= 0 ? 1 : -1) * 12, y: ey, dy: 14, textAnchor: textAnchor, style: COUNT_TEXT_STYLE }, { children: "(".concat(payload.value, ")") }))] }));
105
+ };
106
+ var RenderActiveLabel = function (params) {
107
+ var cx = params.cx, cy = params.cy, innerRadius = params.innerRadius, outerRadius = params.outerRadius, startAngle = params.startAngle, endAngle = params.endAngle, fill = params.fill;
108
+ // render arc around active segment
109
+ return (_jsxs("g", { children: [_jsx(Sector, { cx: cx, cy: cy, startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius, fill: fill }), _jsx(Sector, { cx: cx, cy: cy, startAngle: startAngle, endAngle: endAngle, innerRadius: outerRadius + 6, outerRadius: outerRadius + 10, fill: fill })] }));
110
+ };
111
+ var CustomTooltip = function (_a) {
112
+ var active = _a.active, payload = _a.payload, totalCount = _a.totalCount;
113
+ if (!active) {
114
+ return null;
115
+ }
116
+ var name = payload ? payload[0].name : '';
117
+ var value = payload ? payload[0].value : 0;
118
+ var percentage = totalCount ? Math.round((value / totalCount) * 100) : 0;
119
+ return (_jsxs("div", __assign({ style: TOOL_TIP_STYLE }, { children: [_jsx("p", __assign({ style: LABEL_STYLE }, { children: name })), _jsxs("p", __assign({ style: COUNT_STYLE }, { children: [' ', value, " (", percentage, "%)"] }))] })));
120
+ };
121
+ export default BentoPie;
122
+ //# sourceMappingURL=BentoPie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BentoPie.js","sourceRoot":"","sources":["../../src/Charts/BentoPie.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type CSS from 'csstype';
2
+ import { ChartTheme, HexColor, TranslationObject } from '../types/chartTypes';
3
+ export declare const defaultTranslationObject: TranslationObject;
4
+ export declare const COLORS: HexColor[];
5
+ export declare const BAR_CHART_FILL = "#4575b4";
6
+ export declare const CHART_MISSING_FILL = "#bbbbbb";
7
+ export declare const DEFAULT_CHART_THEME: ChartTheme;
8
+ export declare const TOOL_TIP_STYLE: CSS.Properties;
9
+ export declare const LABEL_STYLE: CSS.Properties;
10
+ export declare const COUNT_STYLE: CSS.Properties;
11
+ export declare const CHART_WRAPPER_STYLE: CSS.Properties;
12
+ export declare const TITLE_STYLE: CSS.Properties;
13
+ export declare const TEXT_STYLE: CSS.Properties;
14
+ export declare const COUNT_TEXT_STYLE: CSS.Properties;
15
+ export declare const ASPECT_RATIO = 1.2;
16
+ export declare const MAX_TICK_LABEL_CHARS = 15;
17
+ export declare const UNITS_LABEL_OFFSET = -75;
18
+ export declare const TICKS_SHOW_ALL_LABELS_BELOW = 11;
19
+ export declare const TICK_MARGIN = 5;
20
+ export declare const CHART_ASPECT_RATIO = 1.4;
21
+ export declare const LABEL_THRESHOLD = 0.05;
22
+ export declare const MAX_LABEL_CHARS = 14;
23
+ export declare const OTHER_THRESHOLD = 0.01;
24
+ export declare const RADIAN: number;
@@ -0,0 +1,105 @@
1
+ // ################### PACKAGE CONSTANTS ###################
2
+ export var defaultTranslationObject = {
3
+ en: {
4
+ Count: 'Count',
5
+ Other: 'Other',
6
+ },
7
+ fr: {
8
+ Count: 'Comptage',
9
+ Other: 'Autre',
10
+ },
11
+ };
12
+ // ################### THEME CONSTANTS ###################
13
+ // Bento-web colours
14
+ export var COLORS = [
15
+ '#3366CC',
16
+ '#DC3912',
17
+ '#FF9900',
18
+ '#109618',
19
+ '#990099',
20
+ '#3B3EAC',
21
+ '#0099C6',
22
+ '#DD4477',
23
+ '#66AA00',
24
+ '#B82E2E',
25
+ '#316395',
26
+ '#994499',
27
+ '#22AA99',
28
+ '#AAAA11',
29
+ '#6633CC',
30
+ '#E67300',
31
+ '#8B0707',
32
+ '#329262',
33
+ '#5574A6',
34
+ '#3B3EAC',
35
+ ];
36
+ export var BAR_CHART_FILL = '#4575b4';
37
+ export var CHART_MISSING_FILL = '#bbbbbb';
38
+ export var DEFAULT_CHART_THEME = {
39
+ pie: {
40
+ default: COLORS,
41
+ },
42
+ bar: {
43
+ default: {
44
+ fill: BAR_CHART_FILL,
45
+ missing: CHART_MISSING_FILL,
46
+ },
47
+ },
48
+ };
49
+ // ################### CHART STYLES ###################
50
+ // common
51
+ export var TOOL_TIP_STYLE = {
52
+ backgroundColor: 'rgba(255, 255, 255, 0.9)',
53
+ padding: '5px',
54
+ border: '1px solid grey',
55
+ boxShadow: '0px 0px 2px rgba(0, 0, 0, 0.9)',
56
+ borderRadius: '2px',
57
+ textAlign: 'left',
58
+ };
59
+ export var LABEL_STYLE = {
60
+ fontWeight: 'bold',
61
+ fontSize: '12px',
62
+ padding: '0',
63
+ margin: '0',
64
+ };
65
+ export var COUNT_STYLE = {
66
+ fontWeight: 'normal',
67
+ fontSize: '11px',
68
+ padding: '0',
69
+ margin: '0',
70
+ };
71
+ export var CHART_WRAPPER_STYLE = {
72
+ display: 'flex',
73
+ flexDirection: 'column',
74
+ alignItems: 'center',
75
+ };
76
+ // bar chart
77
+ export var TITLE_STYLE = {
78
+ fontStyle: 'italic',
79
+ fontSize: '1.5em',
80
+ textAlign: 'center',
81
+ };
82
+ // pie chart
83
+ export var TEXT_STYLE = {
84
+ fontSize: '11px',
85
+ fill: '#333',
86
+ };
87
+ export var COUNT_TEXT_STYLE = {
88
+ fontSize: '10px',
89
+ fill: '#999',
90
+ };
91
+ // ################### CHART CONSTANTS ###################
92
+ // bar chart
93
+ export var ASPECT_RATIO = 1.2;
94
+ export var MAX_TICK_LABEL_CHARS = 15;
95
+ export var UNITS_LABEL_OFFSET = -75;
96
+ export var TICKS_SHOW_ALL_LABELS_BELOW = 11; // Below this # of X-axis ticks, force-show all labels
97
+ export var TICK_MARGIN = 5; // vertical spacing between tick line and tick label
98
+ // pie chart
99
+ export var CHART_ASPECT_RATIO = 1.4;
100
+ export var LABEL_THRESHOLD = 0.05;
101
+ export var MAX_LABEL_CHARS = 14;
102
+ export var OTHER_THRESHOLD = 0.01;
103
+ // ################### UTIL CONSTANTS ###################
104
+ export var RADIAN = Math.PI / 180;
105
+ //# sourceMappingURL=chartConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartConstants.js","sourceRoot":"","sources":["../../src/constants/chartConstants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default as BarChart } from './Charts/BentoBarChart';
2
+ export { default as PieChart } from './Charts/BentoPie';
3
+ export { default as ChartConfigProvider } from './ChartConfigProvider';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEvD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,63 @@
1
+ export interface ChartDataType extends Array<ChartDataItem> {
2
+ }
3
+ export interface ChartDataItem {
4
+ x: string;
5
+ y: number;
6
+ }
7
+ export interface TooltipPayload extends Array<TooltipPayloadItem> {
8
+ }
9
+ interface TooltipPayloadItem {
10
+ name: string;
11
+ payload: {
12
+ x: string;
13
+ };
14
+ value: number;
15
+ }
16
+ export type HexColor = `#${string}`;
17
+ export type ChartTheme = {
18
+ pie: {
19
+ [key in string]: HexColor[];
20
+ } & {
21
+ default: HexColor[];
22
+ };
23
+ bar: {
24
+ [key in string]: {
25
+ fill: HexColor;
26
+ missing: HexColor;
27
+ };
28
+ } & {
29
+ default: {
30
+ fill: HexColor;
31
+ missing: HexColor;
32
+ };
33
+ };
34
+ };
35
+ export type FilterCallback<T> = (value: T, index: number, array: T[]) => boolean;
36
+ export type UnitaryMapCallback<T> = (value: T, index: number, array: T[]) => T;
37
+ export type ChartFilterCallback = FilterCallback<ChartDataItem>;
38
+ export type SupportedLng = 'en' | 'fr';
39
+ type TranslationWords = 'Count' | 'Other';
40
+ export type LngDictionary = {
41
+ [key in TranslationWords]: string;
42
+ };
43
+ export type TranslationObject = {
44
+ [key in SupportedLng]: LngDictionary;
45
+ };
46
+ interface BaseChartProps {
47
+ data: ChartDataType;
48
+ height: number;
49
+ preFilter?: ChartFilterCallback;
50
+ dataMap?: UnitaryMapCallback<ChartDataItem>;
51
+ postFilter?: ChartFilterCallback;
52
+ removeEmpty?: boolean;
53
+ }
54
+ export interface PieChartProps extends BaseChartProps {
55
+ colorTheme?: keyof ChartTheme['pie'];
56
+ sort?: boolean;
57
+ }
58
+ export interface BarChartProps extends BaseChartProps {
59
+ colorTheme?: keyof ChartTheme['bar'];
60
+ title?: string;
61
+ units: string;
62
+ }
63
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chartTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTypes.js","sourceRoot":"","sources":["../../src/types/chartTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare const polarToCartesian: (cx: number, cy: number, radius: number, angle: number) => {
2
+ x: number;
3
+ y: number;
4
+ };
@@ -0,0 +1,8 @@
1
+ import { RADIAN } from '../constants/chartConstants';
2
+ export var polarToCartesian = function (cx, cy, radius, angle) {
3
+ return {
4
+ x: cx + Math.cos(-RADIAN * angle) * radius,
5
+ y: cy + Math.sin(-RADIAN * angle) * radius,
6
+ };
7
+ };
8
+ //# sourceMappingURL=chartUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartUtils.js","sourceRoot":"","sources":["../../src/util/chartUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,EAAU,EAAE,EAAU,EAAE,MAAc,EAAE,KAAa;IACpF,OAAO;QACL,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM;QAC1C,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM;KAC3C,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bento-charts",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Charts library for Bento-platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,13 +1,27 @@
1
- import React, { useContext } from 'react';
1
+ import React, { useContext } from "react";
2
2
 
3
- import { DEFAULT_CHART_THEME, defaultTranslationObject } from './constants/chartConstants';
4
- import { ChartTheme, LngDictionary, SupportedLng, TranslationObject } from './types/chartTypes';
3
+ import {
4
+ DEFAULT_CHART_THEME,
5
+ defaultTranslationObject,
6
+ } from "./constants/chartConstants";
7
+ import {
8
+ ChartTheme,
9
+ LngDictionary,
10
+ SupportedLng,
11
+ TranslationObject,
12
+ } from "./types/chartTypes";
5
13
 
6
14
  const ChartThemeContext = React.createContext<ChartTheme>(DEFAULT_CHART_THEME);
7
- export const useChartTheme = () => useContext(ChartThemeContext);
15
+ export function useChartTheme() {
16
+ return useContext(ChartThemeContext);
17
+ }
8
18
 
9
- const ChartTranslationContext = React.createContext<LngDictionary>(defaultTranslationObject.en);
10
- export const useChartTranslation = () => useContext(ChartTranslationContext);
19
+ const ChartTranslationContext = React.createContext<LngDictionary>(
20
+ defaultTranslationObject.en
21
+ );
22
+ export function useChartTranslation() {
23
+ return useContext(ChartTranslationContext);
24
+ }
11
25
 
12
26
  const ChartConfigProvider = ({
13
27
  theme = useChartTheme(),
@@ -20,15 +34,19 @@ const ChartConfigProvider = ({
20
34
  translationMap?: TranslationObject;
21
35
  children: React.ReactElement;
22
36
  }) => {
23
- let lang: SupportedLng = 'en';
37
+ let lang: SupportedLng = "en";
24
38
  try {
25
39
  lang = Lng as SupportedLng;
26
40
  } catch (e) {
27
- console.error('Lng is not a supported language');
41
+ console.error("Lng is not a supported language");
28
42
  }
29
43
  return (
30
44
  <ChartThemeContext.Provider value={theme}>
31
- <ChartTranslationContext.Provider value={translationMap ? translationMap[lang] : defaultTranslationObject[lang]}>
45
+ <ChartTranslationContext.Provider
46
+ value={
47
+ translationMap ? translationMap[lang] : defaultTranslationObject[lang]
48
+ }
49
+ >
32
50
  {children}
33
51
  </ChartTranslationContext.Provider>
34
52
  </ChartThemeContext.Provider>