@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.
- package/dist/charts/chartJsRenderer/ChartComponent.d.ts +22 -0
- package/dist/charts/chartJsRenderer/ChartComponent.d.ts.map +1 -0
- package/dist/charts/chartJsRenderer/ChartComponent.js +244 -0
- package/dist/charts/chartJsRenderer/ChartComponent.js.map +1 -0
- package/dist/charts/types.d.ts +2 -17
- package/dist/index.d.ts +3 -4
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/widgets/WidgetComponent.d.ts +10 -0
- package/dist/widgets/WidgetComponent.d.ts.map +1 -0
- package/dist/widgets/WidgetComponent.js +54 -0
- package/dist/widgets/WidgetComponent.js.map +1 -0
- package/dist/widgets/counter/Counter.js +8 -8
- package/dist/widgets/counter/Counter.js.map +1 -1
- package/dist/widgets/custom/useCustomWidget.js +3 -3
- package/dist/widgets/custom/useCustomWidget.js.map +1 -1
- package/dist/widgets/custom/util.js.map +1 -1
- package/dist/widgets/oxford/Oxford.js +3 -1
- package/dist/widgets/oxford/Oxford.js.map +1 -1
- package/dist/widgets/ring/Ring.js +4 -4
- package/dist/widgets/ring/Ring.js.map +1 -1
- package/dist/widgets/scale/Scale.js.map +1 -1
- package/dist/widgets/speedMeter/SpeedMeter.js +3 -1
- package/dist/widgets/speedMeter/SpeedMeter.js.map +1 -1
- package/dist/widgets/tLight/TLight.js +4 -4
- package/dist/widgets/tLight/TLight.js.map +1 -1
- package/dist/widgets/thermometer/Thermometer.js +7 -5
- package/dist/widgets/thermometer/Thermometer.js.map +1 -1
- package/dist/widgets/thermometer/util.js +4 -1
- package/dist/widgets/thermometer/util.js.map +1 -1
- package/dist/widgets/types.d.ts +66 -1
- package/package.json +8 -6
- package/dist/charts/ChartContext.js +0 -6
- package/dist/charts/ChartContext.js.map +0 -1
- package/dist/charts/ChartRenderer.d.ts +0 -17
- package/dist/charts/ChartRenderer.d.ts.map +0 -1
- package/dist/charts/ChartRenderer.js +0 -175
- package/dist/charts/ChartRenderer.js.map +0 -1
- package/dist/charts/horizontalBars/Bar.js +0 -228
- package/dist/charts/horizontalBars/Bar.js.map +0 -1
- package/dist/charts/horizontalBars/HorizontalBars.js +0 -374
- package/dist/charts/horizontalBars/HorizontalBars.js.map +0 -1
- package/dist/charts/linear/LineChart.js +0 -469
- package/dist/charts/linear/LineChart.js.map +0 -1
- package/dist/charts/linear/Node.js +0 -56
- package/dist/charts/linear/Node.js.map +0 -1
- package/dist/charts/pie/Pie.js +0 -183
- package/dist/charts/pie/Pie.js.map +0 -1
- package/dist/charts/pie/Slice.js +0 -96
- package/dist/charts/pie/Slice.js.map +0 -1
- package/dist/charts/pie/usePieAnimation.js +0 -123
- package/dist/charts/pie/usePieAnimation.js.map +0 -1
- package/dist/charts/util/ChartSelector.js +0 -36
- package/dist/charts/util/ChartSelector.js.map +0 -1
- package/dist/charts/util/ColoredLegendItem.js +0 -46
- package/dist/charts/util/ColoredLegendItem.js.map +0 -1
- package/dist/charts/util/EmptyGrid.d.ts +0 -8
- package/dist/charts/util/EmptyGrid.d.ts.map +0 -1
- package/dist/charts/util/EmptyGrid.js +0 -51
- package/dist/charts/util/EmptyGrid.js.map +0 -1
- package/dist/charts/util/LegendContainer.js +0 -54
- package/dist/charts/util/LegendContainer.js.map +0 -1
- package/dist/charts/util/NumberedLegendItem.js +0 -45
- package/dist/charts/util/NumberedLegendItem.js.map +0 -1
- package/dist/charts/util/getBarColor.js +0 -29
- package/dist/charts/util/getBarColor.js.map +0 -1
- package/dist/charts/util/parseMargin.js +0 -11
- package/dist/charts/util/parseMargin.js.map +0 -1
- package/dist/charts/util/useChartStyles.js +0 -35
- package/dist/charts/util/useChartStyles.js.map +0 -1
- package/dist/charts/verticalBars/Bar.js +0 -241
- package/dist/charts/verticalBars/Bar.js.map +0 -1
- package/dist/charts/verticalBars/VerticalBars.js +0 -394
- package/dist/charts/verticalBars/VerticalBars.js.map +0 -1
- package/dist/charts/waterfallBars/WaterfallBar.js +0 -84
- package/dist/charts/waterfallBars/WaterfallBar.js.map +0 -1
- package/dist/charts/waterfallBars/WaterfallBars.js +0 -247
- package/dist/charts/waterfallBars/WaterfallBars.js.map +0 -1
- package/dist/widgets/WidgetContainer.d.ts +0 -10
- package/dist/widgets/WidgetContainer.d.ts.map +0 -1
- package/dist/widgets/WidgetContainer.js +0 -68
- package/dist/widgets/WidgetContainer.js.map +0 -1
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { jsx } from '@apia/theme/jsx-runtime';
|
|
2
|
-
import { Box } from '@apia/theme';
|
|
3
|
-
import { ColoredLegendItem } from './ColoredLegendItem.js';
|
|
4
|
-
import { makeImperativeComponent } from '@apia/util';
|
|
5
|
-
import { NumberedLegendItem } from './NumberedLegendItem.js';
|
|
6
|
-
|
|
7
|
-
const [legendContainerMethods, , LegendContainer] = makeImperativeComponent()({
|
|
8
|
-
initialState: {
|
|
9
|
-
highlightedBarGroup: ""
|
|
10
|
-
},
|
|
11
|
-
methods: {
|
|
12
|
-
highlight(setState, highlightedBarGroup) {
|
|
13
|
-
console.log(highlightedBarGroup);
|
|
14
|
-
setState({ highlightedBarGroup });
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
Component: ({
|
|
18
|
-
references,
|
|
19
|
-
highlightedBarGroup,
|
|
20
|
-
avoidEvent,
|
|
21
|
-
useNumbered
|
|
22
|
-
}) => {
|
|
23
|
-
return /* @__PURE__ */ jsx(Box, { className: `legendContainer`, children: !useNumbered ? references.map((data) => {
|
|
24
|
-
return /* @__PURE__ */ jsx(
|
|
25
|
-
ColoredLegendItem,
|
|
26
|
-
{
|
|
27
|
-
isHighlighted: data.title === highlightedBarGroup,
|
|
28
|
-
isAnyHighlighted: highlightedBarGroup !== "",
|
|
29
|
-
groupId: data.title,
|
|
30
|
-
color: data.color,
|
|
31
|
-
title: data.title,
|
|
32
|
-
avoidEvent: avoidEvent ?? false
|
|
33
|
-
},
|
|
34
|
-
data.title
|
|
35
|
-
);
|
|
36
|
-
}) : references.map((data, i) => {
|
|
37
|
-
return /* @__PURE__ */ jsx(
|
|
38
|
-
NumberedLegendItem,
|
|
39
|
-
{
|
|
40
|
-
isHighlighted: data.title === highlightedBarGroup,
|
|
41
|
-
isAnyHighlighted: highlightedBarGroup !== "",
|
|
42
|
-
groupId: data.title,
|
|
43
|
-
position: `${i + 1}`,
|
|
44
|
-
title: data.title,
|
|
45
|
-
avoidEvent: avoidEvent ?? false
|
|
46
|
-
},
|
|
47
|
-
data.title
|
|
48
|
-
);
|
|
49
|
-
}) });
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
export { LegendContainer, legendContainerMethods };
|
|
54
|
-
//# sourceMappingURL=LegendContainer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegendContainer.js","sources":["../../../src/charts/util/LegendContainer.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\nimport { ColoredLegendItem } from './ColoredLegendItem';\nimport { makeImperativeComponent } from '@apia/util';\nimport { NumberedLegendItem } from './NumberedLegendItem';\n\nexport type TChartReference = {\n color: string;\n title: string;\n}[];\n\nexport const [legendContainerMethods, , LegendContainer] =\n makeImperativeComponent<\n {\n references: TChartReference;\n itemClassName?: string;\n avoidEvent?: boolean;\n useNumbered?: boolean;\n },\n never\n >()({\n initialState: {\n highlightedBarGroup: '',\n },\n methods: {\n highlight(setState, highlightedBarGroup: string) {\n console.log(highlightedBarGroup);\n\n setState({ highlightedBarGroup });\n },\n },\n Component: ({\n references,\n highlightedBarGroup,\n avoidEvent,\n useNumbered,\n }) => {\n return (\n <Box className={`legendContainer`}>\n {!useNumbered\n ? references.map((data) => {\n return (\n <ColoredLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n color={data.color}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })\n : references.map((data, i) => {\n return (\n <NumberedLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n position={`${i + 1}`}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })}\n </Box>\n );\n },\n });\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,CAAC,sBAAwB,IAAE,eAAe,CAAA,GACrD,yBAQI,CAAA;AAAA,EACF,YAAc,EAAA;AAAA,IACZ,mBAAqB,EAAA,EAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,SAAA,CAAU,UAAU,mBAA6B,EAAA;AAC/C,MAAA,OAAA,CAAQ,IAAI,mBAAmB,CAAA,CAAA;AAE/B,MAAS,QAAA,CAAA,EAAE,qBAAqB,CAAA,CAAA;AAAA,KAClC;AAAA,GACF;AAAA,EACA,WAAW,CAAC;AAAA,IACV,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,GACI,KAAA;AACJ,IACE,uBAAA,GAAA,CAAC,OAAI,SAAW,EAAA,CAAA,eAAA,CAAA,EACb,WAAC,WACE,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,IAAS,KAAA;AACvB,MACE,uBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,KAAK,KAAU,KAAA,mBAAA;AAAA,UAC9B,kBAAkB,mBAAwB,KAAA,EAAA;AAAA,UAC1C,SAAS,IAAK,CAAA,KAAA;AAAA,UAEd,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,YAAY,UAAc,IAAA,KAAA;AAAA,SAAA;AAAA,QAHrB,IAAK,CAAA,KAAA;AAAA,OAIZ,CAAA;AAAA,KAEH,CACD,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,MAAM,CAAM,KAAA;AAC1B,MACE,uBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,KAAK,KAAU,KAAA,mBAAA;AAAA,UAC9B,kBAAkB,mBAAwB,KAAA,EAAA;AAAA,UAC1C,SAAS,IAAK,CAAA,KAAA;AAAA,UAEd,QAAA,EAAU,CAAG,EAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAAA,UAClB,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,YAAY,UAAc,IAAA,KAAA;AAAA,SAAA;AAAA,QAHrB,IAAK,CAAA,KAAA;AAAA,OAIZ,CAAA;AAAA,KAEH,CACP,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,CAAC;;;;"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { jsx } from '@apia/theme/jsx-runtime';
|
|
2
|
-
import { ApiaUtil, SimpleButton } from '@apia/components';
|
|
3
|
-
import { useCallback } from 'react';
|
|
4
|
-
import { chartMethods } from '../ChartRenderer.js';
|
|
5
|
-
import { useImperativeComponentContext } from '@apia/util';
|
|
6
|
-
|
|
7
|
-
const NumberedLegendItem = ({
|
|
8
|
-
groupId,
|
|
9
|
-
title,
|
|
10
|
-
className,
|
|
11
|
-
isHighlighted,
|
|
12
|
-
isAnyHighlighted,
|
|
13
|
-
avoidEvent
|
|
14
|
-
}) => {
|
|
15
|
-
const { id: chartId } = useImperativeComponentContext();
|
|
16
|
-
const handleMouseEnter = useCallback(() => {
|
|
17
|
-
if (avoidEvent) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
chartMethods(chartId, "highlight", groupId);
|
|
21
|
-
}, [avoidEvent, chartId, groupId]);
|
|
22
|
-
const handleMouseLeave = useCallback(() => {
|
|
23
|
-
if (avoidEvent) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
new ApiaUtil().tooltips.closeAll();
|
|
27
|
-
chartMethods(chartId, "highlight", "");
|
|
28
|
-
}, [avoidEvent, chartId]);
|
|
29
|
-
return /* @__PURE__ */ jsx(
|
|
30
|
-
SimpleButton,
|
|
31
|
-
{
|
|
32
|
-
variant: "link",
|
|
33
|
-
className: `${className ?? ""} ${isHighlighted ? "highlight" : ""} ${isAnyHighlighted && !isHighlighted ? "isBlurred" : ""} legendItem`,
|
|
34
|
-
sx: {
|
|
35
|
-
opacity: isAnyHighlighted && !isHighlighted ? "0.15" : "1"
|
|
36
|
-
},
|
|
37
|
-
onMouseEnter: handleMouseEnter,
|
|
38
|
-
onMouseLeave: handleMouseLeave,
|
|
39
|
-
children: title
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export { NumberedLegendItem };
|
|
45
|
-
//# sourceMappingURL=NumberedLegendItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NumberedLegendItem.js","sources":["../../../src/charts/util/NumberedLegendItem.tsx"],"sourcesContent":["import { SimpleButton } from '@apia/components';\nimport { useCallback } from 'react';\nimport { chartMethods } from '../ChartRenderer';\nimport { useImperativeComponentContext } from '@apia/util';\nimport { ApiaUtil } from '@apia/components';\n\nconst NumberedLegendItem = ({\n groupId,\n title,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n position: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { id: chartId } = useImperativeComponentContext();\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n new ApiaUtil().tooltips.closeAll();\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"link\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''} ${\n isAnyHighlighted && !isHighlighted ? 'isBlurred' : ''\n } legendItem`}\n sx={{\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { NumberedLegendItem };\n"],"names":[],"mappings":";;;;;;AAMA,MAAM,qBAAqB,CAAC;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AACF,CAQM,KAAA;AACJ,EAAA,MAAM,EAAE,EAAA,EAAI,OAAQ,EAAA,GAAI,6BAA8B,EAAA,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,OAAO,CAAA,CAAA;AAAA,GACzC,EAAA,CAAC,UAAY,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA,CAAA;AACjC,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AACjC,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAAA,GACpC,EAAA,CAAC,UAAY,EAAA,OAAO,CAAC,CAAA,CAAA;AACxB,EACE,uBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,MAAA;AAAA,MACR,SAAW,EAAA,CAAA,EAAG,SAAa,IAAA,EAAE,CAAI,CAAA,EAAA,aAAA,GAAgB,WAAc,GAAA,EAAE,CAC/D,CAAA,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,cAAc,EACrD,CAAA,WAAA,CAAA;AAAA,MACA,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,MAAS,GAAA,GAAA;AAAA,OACzD;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,YAAc,EAAA,gBAAA;AAAA,MAEb,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import tinycolor from 'tinycolor2';
|
|
2
|
-
|
|
3
|
-
function getBarColor(colors, index, alwaysDiffer = false) {
|
|
4
|
-
const module = colors.length;
|
|
5
|
-
let count = 0;
|
|
6
|
-
let barColor = "";
|
|
7
|
-
if (!alwaysDiffer) {
|
|
8
|
-
if (colors[index]) {
|
|
9
|
-
barColor = colors[index];
|
|
10
|
-
} else {
|
|
11
|
-
let innerIndex = index;
|
|
12
|
-
while (innerIndex >= module) {
|
|
13
|
-
innerIndex = index / module;
|
|
14
|
-
count++;
|
|
15
|
-
}
|
|
16
|
-
barColor = tinycolor(colors[index % module]).desaturate(count * 5).toHex().startsWith("#") ? tinycolor(colors[index % module]).desaturate(count * 5).toHex() : `#${tinycolor(colors[index % module]).desaturate(count * 5).toHex()}`;
|
|
17
|
-
}
|
|
18
|
-
} else {
|
|
19
|
-
if (colors[index]) {
|
|
20
|
-
barColor = colors[index];
|
|
21
|
-
} else {
|
|
22
|
-
barColor = tinycolor(colors[index % module]).toHex();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return barColor;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export { getBarColor };
|
|
29
|
-
//# sourceMappingURL=getBarColor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getBarColor.js","sources":["../../../src/charts/util/getBarColor.tsx"],"sourcesContent":["import tinycolor from 'tinycolor2';\n\nexport function getBarColor(\n colors: string[],\n index: number,\n alwaysDiffer = false,\n) {\n const module = colors.length;\n let count = 0;\n let barColor = '';\n if (!alwaysDiffer) {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n let innerIndex = index;\n while (innerIndex >= module) {\n innerIndex = index / module;\n count++;\n }\n barColor = tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()\n .startsWith('#')\n ? tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()\n : `#${tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()}`;\n }\n } else {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n barColor = tinycolor(colors[index % module]).toHex();\n }\n }\n return barColor;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,WACd,CAAA,MAAA,EACA,KACA,EAAA,YAAA,GAAe,KACf,EAAA;AACA,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,CAAA;AACtB,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,MAAA,OAAO,cAAc,MAAQ,EAAA;AAC3B,QAAA,UAAA,GAAa,KAAQ,GAAA,MAAA,CAAA;AACrB,QAAA,KAAA,EAAA,CAAA;AAAA,OACF;AACA,MAAA,QAAA,GAAW,UAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EACxC,UAAW,CAAA,KAAA,GAAQ,CAAC,CAAA,CACpB,OACA,CAAA,UAAA,CAAW,GAAG,CACb,GAAA,SAAA,CAAU,OAAO,KAAQ,GAAA,MAAM,CAAC,CAAA,CAC7B,WAAW,KAAQ,GAAA,CAAC,EACpB,KAAM,EAAA,GACT,IAAI,SAAU,CAAA,MAAA,CAAO,KAAQ,GAAA,MAAM,CAAC,CACjC,CAAA,UAAA,CAAW,QAAQ,CAAC,CAAA,CACpB,OAAO,CAAA,CAAA,CAAA;AAAA,KAChB;AAAA,GACK,MAAA;AACL,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,QAAA,GAAW,UAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EAAE,KAAM,EAAA,CAAA;AAAA,KACrD;AAAA,GACF;AACA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
function parseMargin(margin = {
|
|
2
|
-
left: 100,
|
|
3
|
-
right: 50,
|
|
4
|
-
top: 50,
|
|
5
|
-
bottom: 70
|
|
6
|
-
}) {
|
|
7
|
-
return typeof margin === "number" ? { left: margin, right: margin, top: margin, bottom: margin } : margin;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { parseMargin };
|
|
11
|
-
//# sourceMappingURL=parseMargin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseMargin.js","sources":["../../../src/charts/util/parseMargin.ts"],"sourcesContent":["import { TChartRendererProps } from '../types';\n\nexport function parseMargin(\n margin: TChartRendererProps['margin'] = {\n left: 100,\n right: 50,\n top: 50,\n bottom: 70,\n },\n) {\n return typeof margin === 'number'\n ? { left: margin, right: margin, top: margin, bottom: margin }\n : margin;\n}\n"],"names":[],"mappings":"AAEO,SAAS,YACd,MAAwC,GAAA;AAAA,EACtC,IAAM,EAAA,GAAA;AAAA,EACN,KAAO,EAAA,EAAA;AAAA,EACP,GAAK,EAAA,EAAA;AAAA,EACL,MAAQ,EAAA,EAAA;AACV,CACA,EAAA;AACA,EAAA,OAAO,OAAO,MAAA,KAAW,QACrB,GAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,MAAQ,EAAA,MAAA,EACpD,GAAA,MAAA,CAAA;AACN;;;;"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useThemeUI } from '@apia/theme';
|
|
2
|
-
import { getValueByPath } from '@apia/util';
|
|
3
|
-
|
|
4
|
-
function useChartStyles(schemeName) {
|
|
5
|
-
const { theme } = useThemeUI();
|
|
6
|
-
if (!theme.layout)
|
|
7
|
-
console.error("The layout property is missing in the current theme");
|
|
8
|
-
const charts = theme.layout?.charts ?? {};
|
|
9
|
-
const defaultStyles = charts.common;
|
|
10
|
-
const currentStylescheme = {
|
|
11
|
-
schema: getValueByPath(
|
|
12
|
-
theme.colors,
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
14
|
-
charts[schemeName && schemeName !== "0" ? schemeName : "blue"]?.schema
|
|
15
|
-
)
|
|
16
|
-
};
|
|
17
|
-
if (typeof currentStylescheme.schema === "object" && currentStylescheme.schema) {
|
|
18
|
-
const returnStyles = Object.entries(
|
|
19
|
-
currentStylescheme.schema
|
|
20
|
-
).map((e) => {
|
|
21
|
-
const element = document.querySelector("*");
|
|
22
|
-
if (element) {
|
|
23
|
-
if (e[1].startsWith("var(")) {
|
|
24
|
-
return window.getComputedStyle(element).getPropertyValue(e[1].slice(4, -1));
|
|
25
|
-
}
|
|
26
|
-
return window.getComputedStyle(element).getPropertyValue(e[1]);
|
|
27
|
-
}
|
|
28
|
-
return window.getComputedStyle(document.querySelector("*")).getPropertyValue(e[1]);
|
|
29
|
-
});
|
|
30
|
-
return { ...defaultStyles, schema: returnStyles };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export { useChartStyles };
|
|
35
|
-
//# sourceMappingURL=useChartStyles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useChartStyles.js","sources":["../../../src/charts/util/useChartStyles.ts"],"sourcesContent":["import { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\nimport { getValueByPath } from '@apia/util';\n\nexport function useChartStyles(\n schemeName?: string,\n): TChartStylesDefinition | undefined {\n const { theme } = useThemeUI();\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n const defaultStyles = charts.common;\n const currentStylescheme = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[schemeName && schemeName !== '0' ? schemeName : 'blue']\n ?.schema as string,\n ),\n };\n if (\n typeof currentStylescheme.schema === 'object' &&\n currentStylescheme.schema\n ) {\n const returnStyles: string[] = Object.entries(\n currentStylescheme.schema,\n ).map((e) => {\n const element = document.querySelector('*');\n if (element) {\n if ((e[1] as string).startsWith('var(')) {\n return window\n .getComputedStyle(element)\n .getPropertyValue((e[1] as string).slice(4, -1));\n }\n return window\n .getComputedStyle(element)\n .getPropertyValue(e[1] as unknown as string);\n }\n\n return window\n .getComputedStyle(document.querySelector('*') as Element)\n .getPropertyValue(e[1] as unknown as string);\n });\n return { ...defaultStyles, schema: returnStyles };\n }\n // return {\n // ...defaultStyles,\n // ...currentStylescheme,\n // };\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,eACd,UACoC,EAAA;AACpC,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,UAAW,EAAA,CAAA;AAE7B,EAAA,IAAI,CAAC,KAAM,CAAA,MAAA;AACT,IAAA,OAAA,CAAQ,MAAM,qDAAqD,CAAA,CAAA;AAErE,EAAA,MAAM,MAAW,GAAA,KAAA,CAAM,MACnB,EAAA,MAAA,IAAU,EAAC,CAAA;AACf,EAAA,MAAM,gBAAgB,MAAO,CAAA,MAAA,CAAA;AAC7B,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,MAAQ,EAAA,cAAA;AAAA,MACN,KAAM,CAAA,MAAA;AAAA;AAAA,MAEN,OAAO,UAAc,IAAA,UAAA,KAAe,GAAM,GAAA,UAAA,GAAa,MAAM,CACzD,EAAA,MAAA;AAAA,KACN;AAAA,GACF,CAAA;AACA,EAAA,IACE,OAAO,kBAAA,CAAmB,MAAW,KAAA,QAAA,IACrC,mBAAmB,MACnB,EAAA;AACA,IAAA,MAAM,eAAyB,MAAO,CAAA,OAAA;AAAA,MACpC,kBAAmB,CAAA,MAAA;AAAA,KACrB,CAAE,GAAI,CAAA,CAAC,CAAM,KAAA;AACX,MAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAC1C,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAK,CAAE,CAAA,CAAC,CAAa,CAAA,UAAA,CAAW,MAAM,CAAG,EAAA;AACvC,UAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,OAAO,CACxB,CAAA,gBAAA,CAAkB,CAAE,CAAA,CAAC,CAAa,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SACnD;AACA,QAAA,OAAO,OACJ,gBAAiB,CAAA,OAAO,EACxB,gBAAiB,CAAA,CAAA,CAAE,CAAC,CAAsB,CAAA,CAAA;AAAA,OAC/C;AAEA,MAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,aAAc,CAAA,GAAG,CAAY,CACvD,CAAA,gBAAA,CAAiB,CAAE,CAAA,CAAC,CAAsB,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AACD,IAAA,OAAO,EAAE,GAAG,aAAe,EAAA,MAAA,EAAQ,YAAa,EAAA,CAAA;AAAA,GAClD;AAKF;;;;"}
|
|
@@ -1,241 +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
|
-
setsWithColor
|
|
19
|
-
}) => {
|
|
20
|
-
const column = arrayOrArray(chart.dataSets.data)[bar.index];
|
|
21
|
-
const set = arrayOrArray(column?.sets)[barGroup.index];
|
|
22
|
-
const currentBarColor = setsWithColor.find(
|
|
23
|
-
(innerSet) => innerSet.columnName === column.name && innerSet.key === set.key
|
|
24
|
-
)?.color;
|
|
25
|
-
const [isHighlighted, setIsHighlighted] = useState(false);
|
|
26
|
-
const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);
|
|
27
|
-
const ref = useRef(null);
|
|
28
|
-
useImperativeComponentEvents({
|
|
29
|
-
highlight(barNameColumn) {
|
|
30
|
-
let barName = barNameColumn;
|
|
31
|
-
let columnName = "";
|
|
32
|
-
if (barNameColumn.includes("_$_")) {
|
|
33
|
-
barName = barNameColumn.split("_$_")[0];
|
|
34
|
-
columnName = barNameColumn.split("_$_")[1];
|
|
35
|
-
if (isSingle && barNameColumn !== "" && barNameColumn !== void 0) {
|
|
36
|
-
barName = barNameColumn.split("_$_")[1];
|
|
37
|
-
columnName = barNameColumn.split("_$_")[1];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (barName.split(" - ").length === 1) {
|
|
41
|
-
if (arrayOrArray(chart.dataSets.data).length === 1) {
|
|
42
|
-
setIsHighlighted(barName === parsedData[barGroup.index].columnName);
|
|
43
|
-
setIsAnyHighlighted(
|
|
44
|
-
barName !== parsedData[barGroup.index].columnName && barName !== ""
|
|
45
|
-
);
|
|
46
|
-
if (barName === parsedData[barGroup.index].columnName || columnName === parsedData[barGroup.index].columnName) {
|
|
47
|
-
if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
|
|
48
|
-
new ApiaUtil().tooltips.open({
|
|
49
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
50
|
-
/* @__PURE__ */ jsx(
|
|
51
|
-
"div",
|
|
52
|
-
{
|
|
53
|
-
style: {
|
|
54
|
-
color: currentBarColor
|
|
55
|
-
},
|
|
56
|
-
children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
|
|
60
|
-
/* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
|
|
61
|
-
] }),
|
|
62
|
-
attachToElement: () => ref.current,
|
|
63
|
-
attachToElementAnchorPoint: "center"
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
setIsHighlighted(barName === bar.key);
|
|
69
|
-
setIsAnyHighlighted(barName !== bar.key && barName !== "");
|
|
70
|
-
const currentBar = document.querySelector(
|
|
71
|
-
`.${parsedData[barGroup.index].columnName}__${bar.key}`
|
|
72
|
-
);
|
|
73
|
-
if (barName === bar.key && columnName === parsedData[barGroup.index].columnName) {
|
|
74
|
-
if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
|
|
75
|
-
new ApiaUtil().tooltips.open({
|
|
76
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
-
/* @__PURE__ */ jsx(
|
|
78
|
-
"div",
|
|
79
|
-
{
|
|
80
|
-
style: {
|
|
81
|
-
color: currentBarColor
|
|
82
|
-
},
|
|
83
|
-
children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
|
|
84
|
-
}
|
|
85
|
-
),
|
|
86
|
-
chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
|
|
87
|
-
/* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
|
|
88
|
-
] }),
|
|
89
|
-
attachToElement: () => ref.current,
|
|
90
|
-
attachToElementAnchorPoint: "center"
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
} else if (barName === bar.key && currentBar && columnName === "") {
|
|
94
|
-
if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
|
|
95
|
-
new ApiaUtil().tooltips.open({
|
|
96
|
-
children: parsedData.map((dat, i) => {
|
|
97
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
98
|
-
/* @__PURE__ */ jsx(
|
|
99
|
-
"div",
|
|
100
|
-
{
|
|
101
|
-
style: {
|
|
102
|
-
color: currentBarColor
|
|
103
|
-
},
|
|
104
|
-
children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? dat.columnName : chart.showLegend ? Object.keys(dat).find(
|
|
105
|
-
(key) => dat[key] === dat[barName]
|
|
106
|
-
) : "" })
|
|
107
|
-
}
|
|
108
|
-
),
|
|
109
|
-
chart.showValues && /* @__PURE__ */ jsx("div", { children: dat[barName] }),
|
|
110
|
-
/* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? Object.keys(dat).find(
|
|
111
|
-
(key) => dat[key] === dat[barName]
|
|
112
|
-
) : "" }),
|
|
113
|
-
parsedData[i + 1] && /* @__PURE__ */ jsx("hr", {})
|
|
114
|
-
] }, `${dat.columnName}_${dat[barName]}`);
|
|
115
|
-
}),
|
|
116
|
-
attachToMousePosition: true
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
} else if (barName.split(" - ").length === 2) {
|
|
122
|
-
setIsHighlighted(
|
|
123
|
-
barName.split(" - ")[0] === bar.key && barName.split(" - ")[1] === set.key
|
|
124
|
-
);
|
|
125
|
-
setIsAnyHighlighted(
|
|
126
|
-
barName.split(" - ")[0] !== bar.key && barName.split(" - ")[0] !== ""
|
|
127
|
-
);
|
|
128
|
-
if (barName.split(" - ")[0] === bar.key && barName.split(" - ")[1] === set.key && columnName === parsedData[barGroup.index].columnName) {
|
|
129
|
-
if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
|
|
130
|
-
new ApiaUtil().tooltips.open({
|
|
131
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
132
|
-
/* @__PURE__ */ jsx(
|
|
133
|
-
"div",
|
|
134
|
-
{
|
|
135
|
-
style: {
|
|
136
|
-
color: currentBarColor
|
|
137
|
-
},
|
|
138
|
-
children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? parsedData[barGroup.index].columnName : chart.showLegend ? bar.key : "" })
|
|
139
|
-
}
|
|
140
|
-
),
|
|
141
|
-
chart.showValues && /* @__PURE__ */ jsx("div", { children: bar.value }),
|
|
142
|
-
/* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? bar.key : "" })
|
|
143
|
-
] }),
|
|
144
|
-
attachToElement: () => ref.current,
|
|
145
|
-
attachToElementAnchorPoint: "center"
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
const { chartId } = useContext(ChartContext);
|
|
153
|
-
return /* @__PURE__ */ jsx("g", { children: /* @__PURE__ */ jsxs(
|
|
154
|
-
Box,
|
|
155
|
-
{
|
|
156
|
-
as: "rect",
|
|
157
|
-
className: `chart__barRect ${parsedData[barGroup.index].columnName}__${bar.key}`,
|
|
158
|
-
ref,
|
|
159
|
-
sx: useMemo(
|
|
160
|
-
() => ({
|
|
161
|
-
fill: isAnyHighlighted ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}` : currentBarColor,
|
|
162
|
-
"&:hover": {
|
|
163
|
-
fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`
|
|
164
|
-
},
|
|
165
|
-
transition: "fill 500ms, opacity 500ms",
|
|
166
|
-
x: bar.x,
|
|
167
|
-
y: bar.y,
|
|
168
|
-
width: bar.width,
|
|
169
|
-
opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,
|
|
170
|
-
height: bar.height > 0 ? bar.height : 0
|
|
171
|
-
}),
|
|
172
|
-
[
|
|
173
|
-
bar.height,
|
|
174
|
-
bar.width,
|
|
175
|
-
bar.x,
|
|
176
|
-
bar.y,
|
|
177
|
-
currentBarColor,
|
|
178
|
-
isAnyHighlighted,
|
|
179
|
-
isHighlighted
|
|
180
|
-
]
|
|
181
|
-
),
|
|
182
|
-
onMouseEnter: (ev) => {
|
|
183
|
-
console.log(bar.key, parsedData[barGroup.index].columnName);
|
|
184
|
-
if (!isSingle) {
|
|
185
|
-
legendContainerMethods.highlight(chartId, bar.key);
|
|
186
|
-
} else {
|
|
187
|
-
legendContainerMethods.highlight(
|
|
188
|
-
chartId,
|
|
189
|
-
parsedData[barGroup.index].columnName
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
chartMethods(
|
|
193
|
-
chartId,
|
|
194
|
-
"highlight",
|
|
195
|
-
`${bar.key}_$_${parsedData[barGroup.index].columnName}`
|
|
196
|
-
);
|
|
197
|
-
ev.target.classList?.add("over");
|
|
198
|
-
const point = {
|
|
199
|
-
x: localPoint(ev)?.x,
|
|
200
|
-
y: localPoint(ev)?.y
|
|
201
|
-
};
|
|
202
|
-
if (!point || !chart.showValues)
|
|
203
|
-
return;
|
|
204
|
-
},
|
|
205
|
-
onMouseLeave: (ev) => {
|
|
206
|
-
legendContainerMethods.highlight(chartId, "");
|
|
207
|
-
chartMethods(chartId, "highlight", "");
|
|
208
|
-
ev.target.classList?.remove("over");
|
|
209
|
-
},
|
|
210
|
-
children: [
|
|
211
|
-
/* @__PURE__ */ jsx(
|
|
212
|
-
"animate",
|
|
213
|
-
{
|
|
214
|
-
attributeName: "height",
|
|
215
|
-
from: 0,
|
|
216
|
-
to: bar.height,
|
|
217
|
-
dur: "0.5s",
|
|
218
|
-
calcMode: "paced",
|
|
219
|
-
keySplines: "0.5 0 0.5 1;",
|
|
220
|
-
keyTimes: "0; 1"
|
|
221
|
-
}
|
|
222
|
-
),
|
|
223
|
-
/* @__PURE__ */ jsx(
|
|
224
|
-
"animate",
|
|
225
|
-
{
|
|
226
|
-
attributeName: "y",
|
|
227
|
-
from: bar.y + bar.height,
|
|
228
|
-
to: bar.y,
|
|
229
|
-
dur: "0.5s",
|
|
230
|
-
calcMode: "paced",
|
|
231
|
-
keySplines: "0.5 0 0.5 1;",
|
|
232
|
-
keyTimes: "0; 1"
|
|
233
|
-
}
|
|
234
|
-
)
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
) });
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
export { Bar };
|
|
241
|
-
//# sourceMappingURL=Bar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Bar.js","sources":["../../../src/charts/verticalBars/Bar.tsx"],"sourcesContent":["import tinycolor from 'tinycolor2';\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './VerticalBars';\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 setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroup<string>;\n parsedData: IParsedColumn[];\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 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 const { chartId } = useContext(ChartContext);\n\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + bar.width / 2}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"middle\"\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,\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 isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n console.log(bar.key, parsedData[barGroup.index].columnName);\n\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=\"height\"\n from={0}\n to={bar.height}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n <animate\n attributeName=\"y\"\n from={bar.y + bar.height}\n to={bar.y}\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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"}
|