@apia/charts 2.0.7 → 2.0.8

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 (82) hide show
  1. package/dist/charts/chartJsRenderer/ChartComponent.d.ts +22 -0
  2. package/dist/charts/chartJsRenderer/ChartComponent.d.ts.map +1 -0
  3. package/dist/charts/chartJsRenderer/ChartComponent.js +244 -0
  4. package/dist/charts/chartJsRenderer/ChartComponent.js.map +1 -0
  5. package/dist/charts/types.d.ts +2 -17
  6. package/dist/index.d.ts +3 -4
  7. package/dist/index.js +2 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/widgets/WidgetComponent.d.ts +10 -0
  10. package/dist/widgets/WidgetComponent.d.ts.map +1 -0
  11. package/dist/widgets/WidgetComponent.js +54 -0
  12. package/dist/widgets/WidgetComponent.js.map +1 -0
  13. package/dist/widgets/counter/Counter.js +8 -8
  14. package/dist/widgets/counter/Counter.js.map +1 -1
  15. package/dist/widgets/custom/useCustomWidget.js +3 -3
  16. package/dist/widgets/custom/useCustomWidget.js.map +1 -1
  17. package/dist/widgets/custom/util.js.map +1 -1
  18. package/dist/widgets/oxford/Oxford.js +3 -1
  19. package/dist/widgets/oxford/Oxford.js.map +1 -1
  20. package/dist/widgets/ring/Ring.js +4 -4
  21. package/dist/widgets/ring/Ring.js.map +1 -1
  22. package/dist/widgets/scale/Scale.js.map +1 -1
  23. package/dist/widgets/speedMeter/SpeedMeter.js +3 -1
  24. package/dist/widgets/speedMeter/SpeedMeter.js.map +1 -1
  25. package/dist/widgets/tLight/TLight.js +4 -4
  26. package/dist/widgets/tLight/TLight.js.map +1 -1
  27. package/dist/widgets/thermometer/Thermometer.js +7 -5
  28. package/dist/widgets/thermometer/Thermometer.js.map +1 -1
  29. package/dist/widgets/thermometer/util.js +4 -1
  30. package/dist/widgets/thermometer/util.js.map +1 -1
  31. package/dist/widgets/types.d.ts +66 -1
  32. package/package.json +8 -6
  33. package/dist/charts/ChartContext.js +0 -6
  34. package/dist/charts/ChartContext.js.map +0 -1
  35. package/dist/charts/ChartRenderer.d.ts +0 -17
  36. package/dist/charts/ChartRenderer.d.ts.map +0 -1
  37. package/dist/charts/ChartRenderer.js +0 -175
  38. package/dist/charts/ChartRenderer.js.map +0 -1
  39. package/dist/charts/horizontalBars/Bar.js +0 -228
  40. package/dist/charts/horizontalBars/Bar.js.map +0 -1
  41. package/dist/charts/horizontalBars/HorizontalBars.js +0 -374
  42. package/dist/charts/horizontalBars/HorizontalBars.js.map +0 -1
  43. package/dist/charts/linear/LineChart.js +0 -469
  44. package/dist/charts/linear/LineChart.js.map +0 -1
  45. package/dist/charts/linear/Node.js +0 -56
  46. package/dist/charts/linear/Node.js.map +0 -1
  47. package/dist/charts/pie/Pie.js +0 -183
  48. package/dist/charts/pie/Pie.js.map +0 -1
  49. package/dist/charts/pie/Slice.js +0 -96
  50. package/dist/charts/pie/Slice.js.map +0 -1
  51. package/dist/charts/pie/usePieAnimation.js +0 -123
  52. package/dist/charts/pie/usePieAnimation.js.map +0 -1
  53. package/dist/charts/util/ChartSelector.js +0 -36
  54. package/dist/charts/util/ChartSelector.js.map +0 -1
  55. package/dist/charts/util/ColoredLegendItem.js +0 -46
  56. package/dist/charts/util/ColoredLegendItem.js.map +0 -1
  57. package/dist/charts/util/EmptyGrid.d.ts +0 -8
  58. package/dist/charts/util/EmptyGrid.d.ts.map +0 -1
  59. package/dist/charts/util/EmptyGrid.js +0 -51
  60. package/dist/charts/util/EmptyGrid.js.map +0 -1
  61. package/dist/charts/util/LegendContainer.js +0 -54
  62. package/dist/charts/util/LegendContainer.js.map +0 -1
  63. package/dist/charts/util/NumberedLegendItem.js +0 -45
  64. package/dist/charts/util/NumberedLegendItem.js.map +0 -1
  65. package/dist/charts/util/getBarColor.js +0 -29
  66. package/dist/charts/util/getBarColor.js.map +0 -1
  67. package/dist/charts/util/parseMargin.js +0 -11
  68. package/dist/charts/util/parseMargin.js.map +0 -1
  69. package/dist/charts/util/useChartStyles.js +0 -35
  70. package/dist/charts/util/useChartStyles.js.map +0 -1
  71. package/dist/charts/verticalBars/Bar.js +0 -241
  72. package/dist/charts/verticalBars/Bar.js.map +0 -1
  73. package/dist/charts/verticalBars/VerticalBars.js +0 -394
  74. package/dist/charts/verticalBars/VerticalBars.js.map +0 -1
  75. package/dist/charts/waterfallBars/WaterfallBar.js +0 -84
  76. package/dist/charts/waterfallBars/WaterfallBar.js.map +0 -1
  77. package/dist/charts/waterfallBars/WaterfallBars.js +0 -247
  78. package/dist/charts/waterfallBars/WaterfallBars.js.map +0 -1
  79. package/dist/widgets/WidgetContainer.d.ts +0 -10
  80. package/dist/widgets/WidgetContainer.d.ts.map +0 -1
  81. package/dist/widgets/WidgetContainer.js +0 -68
  82. package/dist/widgets/WidgetContainer.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/charts",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "sideEffects": false,
5
5
  "author": "Felipe Arzuaga <felipearax.2012@gmail.com>",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true"
14
14
  },
15
15
  "dependencies": {
16
- "@apia/components": "^2.0.7",
17
- "@apia/icons": "^2.0.7",
18
- "@apia/theme": "^2.0.7",
19
- "@apia/util": "^2.0.7",
16
+ "@apia/components": "^2.0.8",
17
+ "@apia/icons": "^2.0.8",
18
+ "@apia/theme": "^2.0.8",
19
+ "@apia/util": "^2.0.8",
20
20
  "@types/d3-array": "^3.0.5",
21
21
  "@visx/axis": "^3.1.0",
22
22
  "@visx/curve": "^3.0.0",
@@ -29,7 +29,9 @@
29
29
  "@visx/shape": "^3.0.0",
30
30
  "@visx/tooltip": "^3.1.2",
31
31
  "@visx/visx": "^3.1.2",
32
+ "chart.js": "^4.4.2",
32
33
  "d3-array": "^3.2.4",
34
+ "react-chartjs-2": "^5.2.0",
33
35
  "react-spring": "^9.7.1",
34
36
  "tinycolor2": "^1.6.0",
35
37
  "use-gauge": "^0.6.0"
@@ -50,5 +52,5 @@
50
52
  "access": "public",
51
53
  "registry": "https://registry.npmjs.org/"
52
54
  },
53
- "gitHead": "5ea5635f0ee4f38d2623fefd12210fe991ad80dc"
55
+ "gitHead": "7081b9e9d30efe218f23e835d29737aab3c89824"
54
56
  }
@@ -1,6 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- const ChartContext = createContext({});
4
-
5
- export { ChartContext };
6
- //# sourceMappingURL=ChartContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChartContext.js","sources":["../../src/charts/ChartContext.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport type TChartContext = {\n chartId: string;\n};\n\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\n"],"names":[],"mappings":";;AAMa,MAAA,YAAA,GAAe,aAA6B,CAAA,EAAmB;;;;"}
@@ -1,17 +0,0 @@
1
- import * as _apia_util from '@apia/util';
2
- import { TApiaChartDefinition, TChartRendererProps } from './types.js';
3
- import React__default from 'react';
4
-
5
- declare const ChartRenderer: React__default.FC<{
6
- currentChart: TApiaChartDefinition;
7
- chartConfig?: Partial<Omit<TApiaChartDefinition, "columns">> | undefined;
8
- chartProps?: Partial<TChartRendererProps> | undefined;
9
- allowScaleChange?: boolean | undefined;
10
- chartId: string;
11
- allowZoom?: boolean | undefined;
12
- } & React__default.RefAttributes<HTMLElement> & {
13
- id: _apia_util.TId;
14
- }>;
15
-
16
- export { ChartRenderer };
17
- //# sourceMappingURL=ChartRenderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChartRenderer.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,175 +0,0 @@
1
- import { jsx } from '@apia/theme/jsx-runtime';
2
- import React, { useMemo } from 'react';
3
- import { makeStyledComponent, responsive, spacing, Box, getVariant } from '@apia/theme';
4
- import { HorizontalBars } from './horizontalBars/HorizontalBars.js';
5
- import { PieChart } from './pie/Pie.js';
6
- import { makeImperativeComponent, useImperativeComponentContext, getIndex } from '@apia/util';
7
- import { VerticalBars } from './verticalBars/VerticalBars.js';
8
- import { ChartContext } from './ChartContext.js';
9
- import { LineChart } from './linear/LineChart.js';
10
- import { WaterfallBars } from './waterfallBars/WaterfallBars.js';
11
-
12
- const frontColor = "hsl(196, 37%, 13%)";
13
- function useMultipleRefs(...refs) {
14
- return React.useCallback(
15
- function setRef(element) {
16
- refs.forEach((current) => {
17
- if (current)
18
- current.current = element;
19
- });
20
- },
21
- [refs]
22
- );
23
- }
24
- const [, chartMethods, ChartRenderer] = makeImperativeComponent()({
25
- Component: makeStyledComponent(
26
- "ChartRenderer",
27
- "layout.charts",
28
- {
29
- red: {
30
- schema: "schemas.red"
31
- },
32
- orange: {
33
- schema: "schemas.orange"
34
- },
35
- green: {
36
- schema: "schemas.green"
37
- },
38
- blue: {
39
- schema: "schemas.blue"
40
- },
41
- violet: {
42
- schema: "schemas.violet"
43
- },
44
- turquoise: {
45
- schema: "schemas.turquoise"
46
- },
47
- yellow: {
48
- schema: "schemas.yellow"
49
- },
50
- grey: {
51
- schema: "schemas.grey"
52
- },
53
- ocean: {
54
- schema: "schemas.ocean"
55
- },
56
- sunset: {
57
- schema: "schemas.sunset"
58
- },
59
- common: {
60
- axis: {
61
- stroke: frontColor,
62
- title: frontColor
63
- },
64
- schema: frontColor,
65
- background: "hsl(200deg 20% 98%)",
66
- grid: {
67
- stroke: frontColor,
68
- opacity: "0.1"
69
- },
70
- toolTip: {
71
- backgroundColor: "rgb(232, 241, 255)",
72
- border: "1px solid #07c",
73
- color: frontColor,
74
- padding: ".3rem .5rem",
75
- borderRadius: "3px",
76
- fontSize: "18px",
77
- boxShadow: "0 1px 2px rgba(33,33,33,0.2)",
78
- lineHeight: "1em"
79
- }
80
- },
81
- ".chartBox": () => {
82
- return {
83
- position: responsive({ 0: "static", 3: "sticky" }),
84
- top: "0",
85
- background: "white",
86
- zIndex: "1"
87
- };
88
- },
89
- ".legendContainer": {
90
- display: "flex",
91
- flexDirection: "column",
92
- gap: spacing(2),
93
- overflow: "hidden",
94
- alignItems: "start",
95
- button: () => ({
96
- justifyContent: "start",
97
- textAlign: "start",
98
- width: "100%",
99
- textDecoration: "none",
100
- svg: {
101
- paddingLeft: spacing(1)
102
- }
103
- })
104
- },
105
- ".legendItem": {
106
- transition: "opacity 200ms",
107
- "&.isBlurred": {
108
- opacity: "0.15"
109
- },
110
- ".button__content": {
111
- overflow: "hidden",
112
- textOverflow: "ellipsis",
113
- wordWrap: "normal",
114
- display: "block",
115
- whiteSpace: "nowrap",
116
- p: spacing(1)
117
- }
118
- }
119
- },
120
- // eslint-disable-next-line react/display-name
121
- React.forwardRef(
122
- ({
123
- currentChart,
124
- chartId,
125
- allowZoom,
126
- id
127
- }, ref) => {
128
- const innerRef = React.useRef(null);
129
- const setRefs = useMultipleRefs(
130
- ref,
131
- innerRef
132
- );
133
- const { id: imperativeId } = useImperativeComponentContext();
134
- const contextValue = useMemo(
135
- () => ({ chartId: String(imperativeId) }),
136
- [imperativeId]
137
- );
138
- const CurrentChart = getIndex(
139
- [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],
140
- [
141
- currentChart.chartType === "pie2D",
142
- currentChart.chartType === "barH2D",
143
- currentChart.chartType === "barV2D",
144
- currentChart.chartType === "linear",
145
- currentChart.chartType === "waterfall"
146
- ],
147
- 0
148
- );
149
- return /* @__PURE__ */ jsx(ChartContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
150
- Box,
151
- {
152
- ref: setRefs,
153
- className: "chart__chartRenderer",
154
- ...getVariant("layout.charts"),
155
- id,
156
- children: /* @__PURE__ */ jsx(
157
- CurrentChart,
158
- {
159
- chart: currentChart,
160
- chartId,
161
- parentRef: innerRef,
162
- allowZoom,
163
- margin: currentChart.margin
164
- }
165
- )
166
- }
167
- ) });
168
- }
169
- ),
170
- true
171
- )
172
- });
173
-
174
- export { ChartRenderer, chartMethods };
175
- //# sourceMappingURL=ChartRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChartRenderer.js","sources":["../../src/charts/ChartRenderer.tsx"],"sourcesContent":["import { TApiaChartDefinition, TChartRendererProps } from './types';\nimport React, { useMemo, RefAttributes } from 'react';\nimport { Box, responsive } from '@apia/theme';\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\nimport { PieChart } from './pie/Pie';\nimport {\n getIndex,\n makeImperativeComponent,\n useImperativeComponentContext,\n} from '@apia/util';\nimport { VerticalBars } from './verticalBars/VerticalBars';\nimport { ChartContext } from './ChartContext';\nimport { LineChart } from './linear/LineChart';\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\n\nconst frontColor = 'hsl(196, 37%, 13%)';\n\nfunction useMultipleRefs<T extends HTMLElement | null>(\n ...refs: React.MutableRefObject<T>[]\n) {\n return React.useCallback(\n function setRef(element: T) {\n refs.forEach((current) => {\n // eslint-disable-next-line no-param-reassign\n if (current) current.current = element;\n });\n },\n [refs],\n );\n}\n\nexport type TChartEvents = {\n highlight: string;\n};\n\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\n {\n currentChart: TApiaChartDefinition;\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowZoom?: boolean;\n } & RefAttributes<HTMLElement>,\n TChartEvents\n>()({\n Component: makeStyledComponent(\n 'ChartRenderer',\n 'layout.charts',\n {\n red: {\n schema: 'schemas.red',\n },\n orange: {\n schema: 'schemas.orange',\n },\n green: {\n schema: 'schemas.green',\n },\n blue: {\n schema: 'schemas.blue',\n },\n violet: {\n schema: 'schemas.violet',\n },\n turquoise: {\n schema: 'schemas.turquoise',\n },\n yellow: {\n schema: 'schemas.yellow',\n },\n grey: {\n schema: 'schemas.grey',\n },\n ocean: {\n schema: 'schemas.ocean',\n },\n sunset: {\n schema: 'schemas.sunset',\n },\n common: {\n axis: {\n stroke: frontColor,\n title: frontColor,\n },\n schema: frontColor,\n background: 'hsl(200deg 20% 98%)',\n grid: {\n stroke: frontColor,\n opacity: '0.1',\n },\n toolTip: {\n backgroundColor: 'rgb(232, 241, 255)',\n border: '1px solid #07c',\n color: frontColor,\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '18px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n },\n },\n '.chartBox': () => {\n return {\n position: responsive({ 0: 'static', 3: 'sticky' }),\n top: '0',\n background: 'white',\n zIndex: '1',\n };\n },\n '.legendContainer': {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing(2),\n overflow: 'hidden',\n alignItems: 'start',\n button: () => ({\n justifyContent: 'start',\n textAlign: 'start',\n width: '100%',\n textDecoration: 'none',\n svg: {\n paddingLeft: spacing(1),\n },\n }),\n },\n\n '.legendItem': {\n transition: 'opacity 200ms',\n\n '&.isBlurred': {\n opacity: '0.15',\n },\n\n '.button__content': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordWrap: 'normal',\n display: 'block',\n whiteSpace: 'nowrap',\n p: spacing(1),\n },\n },\n },\n // eslint-disable-next-line react/display-name\n React.forwardRef(\n (\n {\n currentChart,\n chartId,\n allowZoom,\n id,\n }: {\n currentChart: TApiaChartDefinition;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n id: string;\n allowModal?: boolean;\n allowZoom?: boolean;\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLElement | null>(null);\n const setRefs = useMultipleRefs(\n ref as React.MutableRefObject<HTMLElement>,\n innerRef,\n );\n\n const { id: imperativeId } = useImperativeComponentContext();\n\n const contextValue = useMemo(\n () => ({ chartId: String(imperativeId) }),\n [imperativeId],\n );\n const CurrentChart = getIndex(\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\n [\n currentChart.chartType === 'pie2D',\n currentChart.chartType === 'barH2D',\n currentChart.chartType === 'barV2D',\n currentChart.chartType === 'linear',\n currentChart.chartType === 'waterfall',\n ],\n 0,\n );\n return (\n <ChartContext.Provider value={contextValue}>\n <Box\n ref={setRefs}\n className=\"chart__chartRenderer\"\n {...getVariant('layout.charts')}\n id={id}\n >\n <CurrentChart\n chart={currentChart}\n chartId={chartId}\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\n allowZoom={allowZoom}\n margin={currentChart.margin}\n />\n </Box>\n </ChartContext.Provider>\n );\n },\n ),\n true,\n ),\n});\n"],"names":[],"mappings":"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"}
@@ -1,228 +0,0 @@
1
- import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
2
- import tinycolor from 'tinycolor2';
3
- import { Box } from '@apia/theme';
4
- import { localPoint } from '@visx/event';
5
- import { arrayOrArray, useImperativeComponentEvents } from '@apia/util';
6
- import { legendContainerMethods } from '../util/LegendContainer.js';
7
- import { useState, useRef, useContext, useMemo } from 'react';
8
- import { ChartContext } from '../ChartContext.js';
9
- import { chartMethods } from '../ChartRenderer.js';
10
- import { ApiaUtil } from '@apia/components';
11
-
12
- const Bar = ({
13
- bar,
14
- barGroup,
15
- chart,
16
- parsedData,
17
- isSingle,
18
- effectiveMargin,
19
- setsWithColor
20
- }) => {
21
- const column = arrayOrArray(chart.dataSets.data)[bar.index];
22
- const set = arrayOrArray(column?.sets)[barGroup.index];
23
- const currentBarColor = setsWithColor.find(
24
- (innerSet) => innerSet.columnName === column.name && innerSet.key === set.key
25
- )?.color;
26
- const [isHighlighted, setIsHighlighted] = useState(false);
27
- const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);
28
- const ref = useRef(null);
29
- useImperativeComponentEvents({
30
- highlight(barNameColumn) {
31
- let barName = barNameColumn;
32
- let columnName = "";
33
- if (barNameColumn.includes("_$_")) {
34
- barName = barNameColumn.split("_$_")[0];
35
- columnName = barNameColumn.split("_$_")[1];
36
- if (isSingle && barNameColumn !== "" && barNameColumn !== void 0) {
37
- barName = barNameColumn.split("_$_")[1];
38
- columnName = barNameColumn.split("_$_")[1];
39
- }
40
- }
41
- if (barName.split(" - ").length === 1) {
42
- if (arrayOrArray(chart.dataSets.data).length === 1) {
43
- setIsHighlighted(barName === parsedData[barGroup.index].columnName);
44
- setIsAnyHighlighted(
45
- barName !== parsedData[barGroup.index].columnName && barName !== ""
46
- );
47
- if (barName === parsedData[barGroup.index].columnName && columnName === parsedData[barGroup.index].columnName) {
48
- if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
49
- new ApiaUtil().tooltips.open({
50
- children: /* @__PURE__ */ jsxs(Fragment, { children: [
51
- /* @__PURE__ */ jsx(
52
- "div",
53
- {
54
- style: {
55
- color: currentBarColor
56
- },
57
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
58
- }
59
- ),
60
- chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
61
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
62
- ] }),
63
- attachToElement: () => ref.current,
64
- attachToElementAnchorPoint: "center"
65
- });
66
- }
67
- }
68
- } else {
69
- setIsHighlighted(barName === bar.key);
70
- setIsAnyHighlighted(barName !== bar.key && barName !== "");
71
- const currentBar = document.querySelector(
72
- `.${parsedData[barGroup.index].columnName}__${bar.key}`
73
- );
74
- if (barName === bar.key && columnName === parsedData[barGroup.index].columnName) {
75
- if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
76
- new ApiaUtil().tooltips.open({
77
- children: /* @__PURE__ */ jsxs(Fragment, { children: [
78
- /* @__PURE__ */ jsx(
79
- "div",
80
- {
81
- style: {
82
- color: currentBarColor
83
- },
84
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
85
- }
86
- ),
87
- chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
88
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
89
- ] }),
90
- attachToElement: () => ref.current,
91
- attachToElementAnchorPoint: "center"
92
- });
93
- }
94
- } else if (barName === bar.key && currentBar && columnName === "") {
95
- if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
96
- new ApiaUtil().tooltips.open({
97
- children: parsedData.map((dat, i) => {
98
- return /* @__PURE__ */ jsxs("div", { children: [
99
- /* @__PURE__ */ jsx(
100
- "div",
101
- {
102
- style: {
103
- color: currentBarColor
104
- },
105
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? dat.columnName : chart.showLegend ? Object.keys(dat).find(
106
- (key) => dat[key] === dat[barName]
107
- ) : "" })
108
- }
109
- ),
110
- chart.showValues && /* @__PURE__ */ jsx("div", { children: dat[barName] }),
111
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? Object.keys(dat).find(
112
- (key) => dat[key] === dat[barName]
113
- ) : "" }),
114
- parsedData[i + 1] && /* @__PURE__ */ jsx("hr", {})
115
- ] }, `${dat.columnName}_${dat[barName]}`);
116
- }),
117
- attachToMousePosition: true
118
- });
119
- }
120
- }
121
- }
122
- } else if (barName.split(" - ").length === 2) {
123
- setIsHighlighted(
124
- barName.split(" - ")[0] === bar.key && barName.split(" - ")[1] === set.key
125
- );
126
- setIsAnyHighlighted(
127
- barName.split(" - ")[0] !== bar.key && barName.split(" - ")[0] !== ""
128
- );
129
- if (barName.split(" - ")[0] === bar.key && barName.split(" - ")[1] === set.key && columnName === parsedData[barGroup.index].columnName) {
130
- if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
131
- new ApiaUtil().tooltips.open({
132
- children: /* @__PURE__ */ jsxs(Fragment, { children: [
133
- /* @__PURE__ */ jsx(
134
- "div",
135
- {
136
- style: {
137
- color: currentBarColor
138
- },
139
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
140
- }
141
- ),
142
- chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
143
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
144
- ] }),
145
- attachToElement: () => ref.current,
146
- attachToElementAnchorPoint: "center"
147
- });
148
- }
149
- }
150
- }
151
- }
152
- });
153
- const { chartId } = useContext(ChartContext);
154
- return /* @__PURE__ */ jsx("g", { children: /* @__PURE__ */ jsx(
155
- Box,
156
- {
157
- as: "rect",
158
- className: `chart__barRect ${parsedData[barGroup.index].columnName}__${bar.key}`,
159
- ref,
160
- sx: useMemo(
161
- () => ({
162
- fill: isAnyHighlighted ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}` : currentBarColor,
163
- "&:hover": {
164
- fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`
165
- },
166
- transition: "fill 500ms, opacity 500ms",
167
- x: bar.x,
168
- y: bar.y,
169
- width: bar.width - effectiveMargin.left,
170
- opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,
171
- height: bar.height > 0 ? bar.height : 0
172
- }),
173
- [
174
- bar.height,
175
- bar.width,
176
- bar.x,
177
- bar.y,
178
- currentBarColor,
179
- effectiveMargin.left,
180
- isAnyHighlighted,
181
- isHighlighted
182
- ]
183
- ),
184
- onMouseEnter: (ev) => {
185
- if (!isSingle) {
186
- legendContainerMethods.highlight(chartId, bar.key);
187
- } else {
188
- legendContainerMethods.highlight(
189
- chartId,
190
- parsedData[barGroup.index].columnName
191
- );
192
- }
193
- chartMethods(
194
- chartId,
195
- "highlight",
196
- `${bar.key}_$_${parsedData[barGroup.index].columnName}`
197
- );
198
- ev.target.classList?.add("over");
199
- const point = {
200
- x: localPoint(ev)?.x,
201
- y: localPoint(ev)?.y
202
- };
203
- if (!point || !chart.showValues)
204
- return;
205
- },
206
- onMouseLeave: (ev) => {
207
- legendContainerMethods.highlight(chartId, "");
208
- chartMethods(chartId, "highlight", "");
209
- ev.target.classList?.remove("over");
210
- },
211
- children: /* @__PURE__ */ jsx(
212
- "animate",
213
- {
214
- attributeName: "width",
215
- from: 0,
216
- to: bar.width,
217
- dur: "0.5s",
218
- calcMode: "paced",
219
- keySplines: "0.5 0 0.5 1;",
220
- keyTimes: "0; 1"
221
- }
222
- )
223
- }
224
- ) });
225
- };
226
-
227
- export { Bar };
228
- //# sourceMappingURL=Bar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bar.js","sources":["../../../src/charts/horizontalBars/Bar.tsx"],"sourcesContent":["import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else if (barName === bar.key && currentBar && columnName === '') {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? dat.columnName\n : chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n"],"names":[],"mappings":"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"}