@bashem/rn-charts 0.0.4 → 0.0.5

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 (79) hide show
  1. package/README.md +1 -1
  2. package/lib/module/skia/AreaChart/AreaChart.js +60 -51
  3. package/lib/module/skia/AreaChart/AreaChart.js.map +1 -1
  4. package/lib/module/skia/AreaChart/useAreaChart.js +18 -14
  5. package/lib/module/skia/AreaChart/useAreaChart.js.map +1 -1
  6. package/lib/module/skia/BarChart/BarChart.js +156 -69
  7. package/lib/module/skia/BarChart/BarChart.js.map +1 -1
  8. package/lib/module/skia/BarChart/useBarChart.js +53 -41
  9. package/lib/module/skia/BarChart/useBarChart.js.map +1 -1
  10. package/lib/module/skia/Common/HorizontalLabelView.js +121 -0
  11. package/lib/module/skia/Common/HorizontalLabelView.js.map +1 -0
  12. package/lib/module/skia/Common/VerticalLabelView.js +100 -0
  13. package/lib/module/skia/Common/VerticalLabelView.js.map +1 -0
  14. package/lib/module/skia/Common/useComponentLayout.js +13 -0
  15. package/lib/module/skia/Common/useComponentLayout.js.map +1 -0
  16. package/lib/module/skia/HeatMap/DateHeatMap.js +472 -0
  17. package/lib/module/skia/HeatMap/DateHeatMap.js.map +1 -0
  18. package/lib/module/skia/HeatMap/HeatMap.js +121 -33
  19. package/lib/module/skia/HeatMap/HeatMap.js.map +1 -1
  20. package/lib/module/skia/HeatMap/useHeatMap.js +132 -48
  21. package/lib/module/skia/HeatMap/useHeatMap.js.map +1 -1
  22. package/lib/module/skia/PieChart/PieChart.js +21 -17
  23. package/lib/module/skia/PieChart/PieChart.js.map +1 -1
  24. package/lib/module/skia/PieChart/usePieChart.js +241 -30
  25. package/lib/module/skia/PieChart/usePieChart.js.map +1 -1
  26. package/lib/module/skia/Popup.js +7 -5
  27. package/lib/module/skia/Popup.js.map +1 -1
  28. package/lib/module/skia/common.js +4 -41
  29. package/lib/module/skia/common.js.map +1 -1
  30. package/lib/typescript/src/index.d.ts +1 -0
  31. package/lib/typescript/src/index.d.ts.map +1 -1
  32. package/lib/typescript/src/skia/AreaChart/AreaChart.d.ts +15 -3
  33. package/lib/typescript/src/skia/AreaChart/AreaChart.d.ts.map +1 -1
  34. package/lib/typescript/src/skia/AreaChart/useAreaChart.d.ts +13 -14
  35. package/lib/typescript/src/skia/AreaChart/useAreaChart.d.ts.map +1 -1
  36. package/lib/typescript/src/skia/BarChart/BarChart.d.ts +16 -2
  37. package/lib/typescript/src/skia/BarChart/BarChart.d.ts.map +1 -1
  38. package/lib/typescript/src/skia/BarChart/useBarChart.d.ts +17 -5
  39. package/lib/typescript/src/skia/BarChart/useBarChart.d.ts.map +1 -1
  40. package/lib/typescript/src/skia/Common/HorizontalLabelView.d.ts +33 -0
  41. package/lib/typescript/src/skia/Common/HorizontalLabelView.d.ts.map +1 -0
  42. package/lib/typescript/src/skia/Common/VerticalLabelView.d.ts +24 -0
  43. package/lib/typescript/src/skia/Common/VerticalLabelView.d.ts.map +1 -0
  44. package/lib/typescript/src/skia/Common/useComponentLayout.d.ts +4 -0
  45. package/lib/typescript/src/skia/Common/useComponentLayout.d.ts.map +1 -0
  46. package/lib/typescript/src/skia/HeatMap/DateHeatMap.d.ts +1 -0
  47. package/lib/typescript/src/skia/HeatMap/DateHeatMap.d.ts.map +1 -0
  48. package/lib/typescript/src/skia/HeatMap/HeatMap.d.ts +28 -12
  49. package/lib/typescript/src/skia/HeatMap/HeatMap.d.ts.map +1 -1
  50. package/lib/typescript/src/skia/HeatMap/useHeatMap.d.ts +15 -4
  51. package/lib/typescript/src/skia/HeatMap/useHeatMap.d.ts.map +1 -1
  52. package/lib/typescript/src/skia/PieChart/PieChart.d.ts +5 -1
  53. package/lib/typescript/src/skia/PieChart/PieChart.d.ts.map +1 -1
  54. package/lib/typescript/src/skia/PieChart/usePieChart.d.ts +6 -1
  55. package/lib/typescript/src/skia/PieChart/usePieChart.d.ts.map +1 -1
  56. package/lib/typescript/src/skia/Popup.d.ts.map +1 -1
  57. package/lib/typescript/src/skia/common.d.ts +3 -10
  58. package/lib/typescript/src/skia/common.d.ts.map +1 -1
  59. package/package.json +6 -3
  60. package/src/index.tsx +6 -4
  61. package/src/skia/AreaChart/AreaChart.tsx +85 -62
  62. package/src/skia/AreaChart/useAreaChart.ts +25 -26
  63. package/src/skia/BarChart/BarChart.tsx +163 -95
  64. package/src/skia/BarChart/useBarChart.ts +55 -44
  65. package/src/skia/Common/HorizontalLabelView.tsx +153 -0
  66. package/src/skia/Common/VerticalLabelView.tsx +113 -0
  67. package/src/skia/Common/useComponentLayout.ts +14 -0
  68. package/src/skia/HeatMap/DateHeatMap.tsx +470 -0
  69. package/src/skia/HeatMap/HeatMap.tsx +168 -54
  70. package/src/skia/HeatMap/useHeatMap.ts +139 -65
  71. package/src/skia/PieChart/PieChart.tsx +16 -11
  72. package/src/skia/PieChart/usePieChart.ts +316 -66
  73. package/src/skia/Popup.tsx +38 -36
  74. package/src/skia/common.ts +8 -46
  75. package/lib/module/skia/Common/VerticalLabel.js +0 -73
  76. package/lib/module/skia/Common/VerticalLabel.js.map +0 -1
  77. package/lib/typescript/src/skia/Common/VerticalLabel.d.ts +0 -17
  78. package/lib/typescript/src/skia/Common/VerticalLabel.d.ts.map +0 -1
  79. package/src/skia/Common/VerticalLabel.tsx +0 -91
package/README.md CHANGED
@@ -6,7 +6,7 @@ Experimental Charts Library. ⚠️ Not ready for use.
6
6
 
7
7
 
8
8
  ```sh
9
- npm install @bashem/rn-charts @shopify/react-native-skia@2.2.12 react-native-gesture-handler@2.28.0
9
+ npm install @bashem/rn-charts @shopify/react-native-skia@2.2.12 react-native-gesture-handler@2.28.0 react-native-reanimated@4.1.1 react-native-worklets@0.5.1
10
10
  ```
11
11
 
12
12
 
@@ -1,28 +1,36 @@
1
1
  "use strict";
2
2
 
3
3
  // AreaChart.tsx
4
- import { Canvas, Circle, Group, Path, Text } from '@shopify/react-native-skia';
5
- import VerticalLabel from "../Common/VerticalLabel.js";
4
+ import { Canvas, Circle, Group, Path } from '@shopify/react-native-skia';
6
5
  import { View } from 'react-native';
7
6
  import useAreaChart from "./useAreaChart.js";
8
7
  import { useState } from 'react';
9
8
  import { lighten } from "../../util/colors.js";
10
9
  import Popup from "../Popup.js";
10
+ import VerticalLabelView from "../Common/VerticalLabelView.js";
11
+ import HorizontalLabelView from "../Common/HorizontalLabelView.js";
11
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- function AreaChart(props) {
13
+ function AreaChart({
14
+ xLabelView,
15
+ yLabelView,
16
+ ...props
17
+ }) {
13
18
  const {
14
19
  minValue,
15
20
  maxValue,
16
21
  canvasHeight,
17
22
  areaCanvasHeight,
18
- labelWidth,
23
+ verticalLabelWidth,
24
+ verticalLabelStrokeWidth,
25
+ yLabels,
26
+ setVerticalLabelWidth,
27
+ setHorizontalLabelHeight,
19
28
  chartWidth,
20
29
  paths,
21
30
  xLabelsData,
22
31
  paddingLeft,
23
32
  paddingTop,
24
33
  paddingHorizontal,
25
- font,
26
34
  touchLine,
27
35
  touchHandler
28
36
  } = useAreaChart(props);
@@ -34,12 +42,9 @@ function AreaChart(props) {
34
42
  x: 0,
35
43
  y: 0
36
44
  });
37
- console.log('AreaChart render', {
38
- touchLine
39
- });
40
45
  return /*#__PURE__*/_jsxs(View, {
41
46
  style: [style, {
42
- flexDirection: 'row'
47
+ flexDirection: "column"
43
48
  }],
44
49
  ref: view => {
45
50
  view?.measureInWindow((fx, fy) => {
@@ -54,49 +59,53 @@ function AreaChart(props) {
54
59
  });
55
60
  });
56
61
  },
57
- children: [/*#__PURE__*/_jsx(VerticalLabel, {
58
- minValue: minValue,
59
- maxValue: maxValue,
60
- styles: {
61
- height: areaCanvasHeight,
62
- width: labelWidth,
63
- fontSize: style?.fontSize
64
- },
65
- labelCount: 5
66
- }), /*#__PURE__*/_jsxs(Canvas, {
62
+ children: [/*#__PURE__*/_jsxs(View, {
67
63
  style: {
68
- width: chartWidth,
69
- height: canvasHeight
64
+ flexDirection: "row"
70
65
  },
71
- onTouchStart: event => touchHandler(event.nativeEvent.locationX, event.nativeEvent.locationY),
72
- children: [paths.map(({
73
- path,
74
- points,
75
- color
76
- }, index) => {
77
- return /*#__PURE__*/_jsxs(Group, {
78
- children: [/*#__PURE__*/_jsx(Path, {
79
- path: path,
80
- color: color
81
- }), style?.showPoints && color && points.map(points => /*#__PURE__*/_jsx(Circle, {
82
- cx: points.x,
83
- cy: points.y,
84
- r: style?.pointRadius ?? 3,
85
- color: lighten(color, style?.lightenPointsBy ?? 0.3)
86
- }, `${points.x}-${points.y}`))]
87
- }, index);
88
- }), xLabelsData.map(({
89
- label,
90
- xPosition
91
- }, index) => {
92
- return /*#__PURE__*/_jsx(Text, {
93
- x: xPosition,
94
- y: canvasHeight,
95
- text: label,
96
- font: font,
97
- color: 'white'
98
- }, index);
66
+ children: [yLabelView && /*#__PURE__*/_jsx(VerticalLabelView, {
67
+ onLayout: event => {
68
+ setVerticalLabelWidth(event.nativeEvent.layout.width);
69
+ },
70
+ labelPercentages: yLabels,
71
+ styles: {
72
+ height: areaCanvasHeight,
73
+ verticalLabelStyle: props.style?.verticalLabelStyle
74
+ },
75
+ children: percentage => yLabelView(percentage, minValue, maxValue)
76
+ }), /*#__PURE__*/_jsx(Canvas, {
77
+ style: {
78
+ width: chartWidth,
79
+ height: areaCanvasHeight
80
+ },
81
+ onTouchStart: event => touchHandler(event.nativeEvent.locationX, event.nativeEvent.locationY),
82
+ children: paths.map(({
83
+ path,
84
+ points,
85
+ color
86
+ }, index) => {
87
+ return /*#__PURE__*/_jsxs(Group, {
88
+ children: [/*#__PURE__*/_jsx(Path, {
89
+ path: path,
90
+ color: color
91
+ }), style?.showPoints && color && points.map(points => /*#__PURE__*/_jsx(Circle, {
92
+ cx: points.x,
93
+ cy: points.y,
94
+ r: style?.pointRadius ?? 3,
95
+ color: lighten(color, style?.lightenPointsBy ?? 0.3)
96
+ }, `${points.x}-${points.y}`))]
97
+ }, index);
98
+ })
99
99
  })]
100
+ }), xLabelView && /*#__PURE__*/_jsx(HorizontalLabelView, {
101
+ labels: xLabelsData.map(labelData => labelData.label),
102
+ positions: xLabelsData.map(labelData => labelData.xPosition),
103
+ style: {
104
+ left: verticalLabelWidth,
105
+ width: chartWidth
106
+ },
107
+ onLayout: event => setHorizontalLabelHeight(event.nativeEvent.layout.height),
108
+ children: label => xLabelView(label.toString())
100
109
  }), touchLine && /*#__PURE__*/_jsx(Popup, {
101
110
  popupData: touchLine.y.map((y, index) => ({
102
111
  x: touchLine.x,
@@ -107,11 +116,11 @@ function AreaChart(props) {
107
116
  value: touchLine.values[index]
108
117
  }
109
118
  })),
110
- totalWidth: chartWidth + labelWidth + paddingHorizontal,
119
+ totalWidth: chartWidth + verticalLabelWidth + paddingHorizontal,
111
120
  totalHeight: canvasHeight,
112
121
  touchHandler: (x, y) => {
113
122
  console.log('Popup touchHandler', x, y);
114
- touchHandler(x - labelWidth - paddingLeft, y - paddingTop);
123
+ touchHandler(x - verticalLabelWidth - paddingLeft, y - paddingTop);
115
124
  },
116
125
  viewOffset: viewOffset,
117
126
  popupStyle: popupStyle
@@ -1 +1 @@
1
- {"version":3,"names":["Canvas","Circle","Group","Path","Text","VerticalLabel","View","useAreaChart","useState","lighten","Popup","jsx","_jsx","jsxs","_jsxs","AreaChart","props","minValue","maxValue","canvasHeight","areaCanvasHeight","labelWidth","chartWidth","paths","xLabelsData","paddingLeft","paddingTop","paddingHorizontal","font","touchLine","touchHandler","style","popupStyle","viewOffset","setViewOffset","x","y","console","log","flexDirection","ref","view","measureInWindow","fx","fy","prev","children","styles","height","width","fontSize","labelCount","onTouchStart","event","nativeEvent","locationX","locationY","map","path","points","color","index","showPoints","cx","cy","r","pointRadius","lightenPointsBy","label","xPosition","text","popupData","data","rowIndex","colIndex","col","value","values","totalWidth","totalHeight"],"sourceRoot":"../../../../src","sources":["skia/AreaChart/AreaChart.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Canvas","Circle","Group","Path","View","useAreaChart","useState","lighten","Popup","VerticalLabelView","HorizontalLabelView","jsx","_jsx","jsxs","_jsxs","AreaChart","xLabelView","yLabelView","props","minValue","maxValue","canvasHeight","areaCanvasHeight","verticalLabelWidth","verticalLabelStrokeWidth","yLabels","setVerticalLabelWidth","setHorizontalLabelHeight","chartWidth","paths","xLabelsData","paddingLeft","paddingTop","paddingHorizontal","touchLine","touchHandler","style","popupStyle","viewOffset","setViewOffset","x","y","flexDirection","ref","view","measureInWindow","fx","fy","prev","children","onLayout","event","nativeEvent","layout","width","labelPercentages","styles","height","verticalLabelStyle","percentage","onTouchStart","locationX","locationY","map","path","points","color","index","showPoints","cx","cy","r","pointRadius","lightenPointsBy","labels","labelData","label","positions","xPosition","left","toString","popupData","data","rowIndex","colIndex","col","value","values","totalWidth","totalHeight","console","log"],"sourceRoot":"../../../../src","sources":["skia/AreaChart/AreaChart.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,14 +2,15 @@
2
2
 
3
3
  import { Skia } from "@shopify/react-native-skia";
4
4
  import { useMemo, useState } from "react";
5
- import { getCommonStyleFont, getPaddings } from "../common.js";
5
+ import { getPaddings } from "../common.js";
6
6
  import { isDefined } from "../../util/util.js";
7
7
  function useAreaChart({
8
8
  data,
9
9
  xLabels,
10
10
  maxValue,
11
11
  minValue,
12
- style
12
+ style,
13
+ yLabels
13
14
  }) {
14
15
  const height = style?.height ?? 200;
15
16
  const width = style?.width ?? 200;
@@ -20,13 +21,12 @@ function useAreaChart({
20
21
  paddingVertical
21
22
  } = getPaddings(style);
22
23
  const canvasHeight = height - paddingVertical;
23
- const labelWidth = 30;
24
- const chartWidth = width - labelWidth - paddingHorizontal;
25
- const xLabelHeight = xLabels && xLabels.length > 0 ? (style?.fontSize ?? 12) + 5 : 0;
26
- const areaCanvasHeight = canvasHeight - xLabelHeight;
27
- const {
28
- font
29
- } = getCommonStyleFont(style);
24
+ const [verticalLabelWidth, setVerticalLabelWidth] = useState(style?.verticalLabelStyle?.width ?? 0);
25
+ const strokeWidth = style?.strokeWidth ?? 2;
26
+ const verticalLabelStrokeWidth = style?.verticalLabelStyle?.strokeWidth ?? strokeWidth;
27
+ const chartWidth = width - verticalLabelWidth - paddingHorizontal;
28
+ const [horizontalLabelHeight, setHorizontalLabelHeight] = useState(20);
29
+ const areaCanvasHeight = canvasHeight - horizontalLabelHeight;
30
30
  const {
31
31
  maxValueCalculated,
32
32
  minValueCalculated
@@ -93,7 +93,7 @@ function useAreaChart({
93
93
  const labels = xLabels.map((label, i) => {
94
94
  return {
95
95
  label,
96
- xPosition: i * stepX + font.getSize()
96
+ xPosition: i * stepX
97
97
  };
98
98
  });
99
99
  return labels;
@@ -114,7 +114,7 @@ function useAreaChart({
114
114
  const values = paths.map(path => path.values[xIndex]);
115
115
  setTouchLine({
116
116
  col: xIndex,
117
- x: xIndex * stepX,
117
+ x: xIndex * stepX + verticalLabelWidth,
118
118
  y: yValues,
119
119
  values
120
120
  });
@@ -127,12 +127,16 @@ function useAreaChart({
127
127
  paddingTop,
128
128
  paddingHorizontal,
129
129
  areaCanvasHeight,
130
- labelWidth,
130
+ strokeWidth,
131
+ verticalLabelStrokeWidth,
132
+ yLabels,
133
+ verticalLabelWidth,
134
+ setVerticalLabelWidth,
131
135
  maxValue: maxValueCalculated,
132
136
  minValue: minValueCalculated,
133
137
  xLabelsData,
134
- xLabelHeight,
135
- font,
138
+ horizontalLabelHeight,
139
+ setHorizontalLabelHeight,
136
140
  touchHandler,
137
141
  touchLine
138
142
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Skia","useMemo","useState","getCommonStyleFont","getPaddings","isDefined","useAreaChart","data","xLabels","maxValue","minValue","style","height","width","paddingLeft","paddingTop","paddingHorizontal","paddingVertical","canvasHeight","labelWidth","chartWidth","xLabelHeight","length","fontSize","areaCanvasHeight","font","maxValueCalculated","minValueCalculated","Number","MIN_VALUE","MAX_VALUE","forEach","datum","values","value","paths","pathData","areaData","stepX","p","Path","Make","moveTo","points","y","i","xPos","yPos","Math","max","push","x","lineTo","close","path","color","label","xLabelsData","labels","map","xPosition","getSize","touchLine","setTouchLine","undefined","touchHandler","touchedX","touchedY","xIndex","round","yValues","col"],"sourceRoot":"../../../../src","sources":["skia/AreaChart/useAreaChart.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Skia","useMemo","useState","getPaddings","isDefined","useAreaChart","data","xLabels","maxValue","minValue","style","yLabels","height","width","paddingLeft","paddingTop","paddingHorizontal","paddingVertical","canvasHeight","verticalLabelWidth","setVerticalLabelWidth","verticalLabelStyle","strokeWidth","verticalLabelStrokeWidth","chartWidth","horizontalLabelHeight","setHorizontalLabelHeight","areaCanvasHeight","maxValueCalculated","minValueCalculated","Number","MIN_VALUE","MAX_VALUE","forEach","datum","values","value","paths","pathData","areaData","stepX","length","p","Path","Make","moveTo","points","y","i","xPos","yPos","Math","max","push","x","lineTo","close","path","color","label","xLabelsData","labels","map","xPosition","touchLine","setTouchLine","undefined","touchHandler","touchedX","touchedY","xIndex","round","yValues","col"],"sourceRoot":"../../../../src","sources":["skia/AreaChart/useAreaChart.ts"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,28 @@
1
1
  "use strict";
2
2
 
3
- import { Fragment, useState } from 'react';
3
+ import React, { useMemo, useRef, useState } from 'react';
4
4
  import { View } from 'react-native';
5
- import { GestureDetector, Gesture, GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import { Canvas, Rect, Text, vec, Line } from '@shopify/react-native-skia';
5
+ import { GestureDetector, Gesture, GestureHandlerRootView, ScrollView } from 'react-native-gesture-handler';
6
+ import { Canvas, Rect, vec, LinearGradient, Group, rect as SKRect } from '@shopify/react-native-skia';
7
7
  import useBarChart from "./useBarChart.js";
8
- import VerticalLabel from "../Common/VerticalLabel.js";
9
8
  import Popup from "../Popup.js";
10
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- function BarChart(props) {
9
+ import VerticalLabelView from "../Common/VerticalLabelView.js";
10
+ import HorizontalLabelView from "../Common/HorizontalLabelView.js";
11
+ import { useDerivedValue } from "react-native-reanimated";
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ function BarChart({
14
+ xLabelView,
15
+ yLabelView,
16
+ yLabelSkiaView,
17
+ barSkiaView,
18
+ onSelectBarSkiaView,
19
+ onSelectBarView,
20
+ ...props
21
+ }) {
12
22
  const {
13
23
  maxValueCalculated,
14
24
  minValueCalculated,
15
- canvasHeight,
25
+ yLabels,
16
26
  canvasWidth,
17
27
  paddingRight,
18
28
  paddingLeft,
@@ -20,31 +30,53 @@ function BarChart(props) {
20
30
  paddingTop,
21
31
  rectangles,
22
32
  verticalLabelWidth,
33
+ setVerticalLabelWidth,
23
34
  chartHeight,
24
- strokeWidth,
25
35
  tooltip,
26
- bottomLabelHeight,
27
- font,
36
+ setBottomLabelHeight,
28
37
  onScroll,
29
38
  touchHandler,
30
39
  totalHeight,
31
- totalWidth
40
+ totalWidth,
41
+ horizontalStrokeWidth,
42
+ startX,
43
+ offset
32
44
  } = useBarChart(props);
33
- const dragGesture = Gesture.Pan().runOnJS(true).onChange(event => {
45
+ const panGestureRef = useRef(Gesture.Pan());
46
+ const panGesture = Gesture.Pan().onChange(event => {
34
47
  onScroll(-event.changeX);
48
+ }).withRef(panGestureRef);
49
+ const tapGesture = Gesture.Tap().runOnJS(true).onStart(event => {
50
+ touchHandler(event.x, event.y);
35
51
  });
36
52
  const [viewOffset, setViewOffset] = useState({
37
53
  x: 0,
38
54
  y: 0
39
55
  });
56
+ const canvasGestures = Gesture.Exclusive(panGesture, tapGesture);
57
+ const onSelectBarViewMemo = useMemo(() => {
58
+ if (tooltip === undefined) {
59
+ return undefined;
60
+ }
61
+ return onSelectBarView?.(tooltip.data, tooltip.xLabel);
62
+ }, [tooltip]);
63
+ const onSelectBarSkiaViewMemo = useMemo(() => {
64
+ if (tooltip === undefined) {
65
+ return undefined;
66
+ }
67
+ return onSelectBarSkiaView?.(tooltip.rect, tooltip.data, tooltip.xLabel);
68
+ }, [tooltip]);
69
+ const canvasGroupTranslate = useDerivedValue(() => [{
70
+ translateX: -offset.value
71
+ }], []);
40
72
  return /*#__PURE__*/_jsx(GestureHandlerRootView, {
41
73
  children: /*#__PURE__*/_jsxs(View, {
42
74
  style: {
43
75
  width: totalWidth,
44
- flexDirection: 'row',
76
+ flexDirection: 'column',
45
77
  backgroundColor: props.style?.backgroundColor,
46
- paddingLeft: paddingLeft,
47
- paddingRight: paddingRight,
78
+ paddingStart: paddingLeft,
79
+ paddingEnd: paddingRight,
48
80
  paddingTop: paddingTop,
49
81
  paddingBottom: paddingBottom
50
82
  },
@@ -61,64 +93,119 @@ function BarChart(props) {
61
93
  });
62
94
  });
63
95
  },
64
- children: [/*#__PURE__*/_jsx(VerticalLabel, {
65
- maxValue: maxValueCalculated,
66
- minValue: minValueCalculated,
67
- labelCount: 6,
68
- styles: {
69
- width: verticalLabelWidth,
96
+ children: [/*#__PURE__*/_jsxs(View, {
97
+ style: {
98
+ flexDirection: "row",
70
99
  height: chartHeight,
71
- strokeWidth
72
- }
73
- }), /*#__PURE__*/_jsx(GestureDetector, {
74
- gesture: dragGesture,
75
- children: /*#__PURE__*/_jsxs(Canvas, {
100
+ padding: 0
101
+ },
102
+ children: [(yLabelView || yLabelSkiaView) && /*#__PURE__*/_jsx(VerticalLabelView, {
103
+ onLayout: event => {
104
+ setVerticalLabelWidth(event.nativeEvent.layout.width);
105
+ },
106
+ labelPercentages: yLabels,
107
+ styles: {
108
+ height: chartHeight + horizontalStrokeWidth,
109
+ verticalLabelStyle: props.style?.verticalLabelStyle
110
+ },
111
+ labelSkiaView: (percentage, yPosition) => yLabelSkiaView?.(percentage, yPosition),
112
+ children: percentage => yLabelView?.(percentage, minValueCalculated, maxValueCalculated)
113
+ }), /*#__PURE__*/_jsx(ScrollView, {
114
+ horizontal: true,
115
+ simultaneousHandlers: panGestureRef,
76
116
  style: {
77
- width: canvasWidth,
78
- height: canvasHeight,
79
- paddingRight: 50,
80
- backgroundColor: 'red'
117
+ padding: 0
81
118
  },
82
- onTouchStart: event => touchHandler(event.nativeEvent.locationX, event.nativeEvent.locationY),
83
- children: [/*#__PURE__*/_jsx(Line, {
84
- p1: vec(0, chartHeight),
85
- p2: vec(canvasWidth, chartHeight),
86
- color: "white",
87
- strokeWidth: strokeWidth
88
- }), rectangles.map((bar, xIndex) => {
89
- if (bar.bars.length === 0) return null;
90
- return /*#__PURE__*/_jsxs(Fragment, {
91
- children: [/*#__PURE__*/_jsx(Text, {
92
- x: bar.bars[0].x,
93
- y: chartHeight + font.getSize() + (bottomLabelHeight - font.getSize()) / 2,
94
- text: bar.label ?? '',
95
- color: "white",
96
- font: font
97
- }), bar.bars.map((item, yIndex) => {
98
- let currentData = props.data[xIndex].values[yIndex];
99
- let color = props?.colors?.[currentData.id ?? currentData.label] || '#4A90E2';
100
- return /*#__PURE__*/_jsx(Rect, {
101
- x: item.x,
102
- y: item.y,
103
- width: item.width,
104
- height: item.height,
105
- color: color
106
- }, xIndex + '-' + yIndex);
107
- })]
108
- }, xIndex);
109
- })]
110
- })
111
- }), tooltip && /*#__PURE__*/_jsx(Popup, {
112
- popupData: {
113
- x: tooltip.centerX,
114
- y: tooltip.centerY,
115
- data: tooltip.data
119
+ children: /*#__PURE__*/_jsx(GestureDetector, {
120
+ gesture: canvasGestures,
121
+ children: /*#__PURE__*/_jsxs(Canvas, {
122
+ style: {
123
+ width: canvasWidth,
124
+ height: chartHeight
125
+ },
126
+ children: [/*#__PURE__*/_jsx(Group, {
127
+ transform: canvasGroupTranslate,
128
+ children: rectangles.map((bar, xIndex) => {
129
+ if (bar.bars.length === 0) return null;
130
+ return /*#__PURE__*/_jsx(Group, {
131
+ children: bar.bars.map(({
132
+ rect,
133
+ stackValue
134
+ }, yIndex) => {
135
+ let skiaView = barSkiaView?.(SKRect(rect.x, rect.y, rect.width, rect.height), stackValue, bar.label);
136
+ if (skiaView !== undefined) {
137
+ return /*#__PURE__*/_jsx(Group, {
138
+ children: skiaView
139
+ }, xIndex + "-" + yIndex);
140
+ }
141
+ let currentData = props.data[xIndex].values[yIndex];
142
+ let color = props?.colors?.[currentData.id ?? currentData.label];
143
+ return /*#__PURE__*/_jsx(Rect, {
144
+ x: rect.x,
145
+ y: rect.y,
146
+ width: rect.width,
147
+ height: rect.height,
148
+ color: Array.isArray(color) ? undefined : color,
149
+ children: Array.isArray(color) && /*#__PURE__*/_jsx(LinearGradient, {
150
+ start: vec(rect.x, rect.y),
151
+ end: vec(rect.x + rect.width, rect.y + rect.height),
152
+ colors: color
153
+ })
154
+ }, xIndex + '-' + yIndex);
155
+ })
156
+ }, xIndex);
157
+ })
158
+ }), onSelectBarSkiaViewMemo]
159
+ })
160
+ })
161
+ })]
162
+ }), xLabelView && /*#__PURE__*/_jsx(HorizontalLabelView, {
163
+ labels: rectangles.map(bar => bar.label),
164
+ positions: rectangles.map(bar => bar.x),
165
+ transform: canvasGroupTranslate,
166
+ xOffset: offset,
167
+ style: {
168
+ left: verticalLabelWidth,
169
+ width: canvasWidth,
170
+ horizontalLabelStyle: props.style?.horizontalLabelStyle
116
171
  },
117
- popupStyle: props.popupStyle,
118
- totalWidth: totalWidth,
119
- totalHeight: totalHeight,
120
- touchHandler: (x, y) => touchHandler(x - verticalLabelWidth - paddingLeft, y - paddingTop),
121
- viewOffset: viewOffset
172
+ onLayout: event => setBottomLabelHeight(event.nativeEvent.layout.height),
173
+ children: (_index, data) => xLabelView(data)
174
+ }), tooltip && /*#__PURE__*/_jsxs(_Fragment, {
175
+ children: [onSelectBarViewMemo && /*#__PURE__*/_jsx(View, {
176
+ style: {
177
+ position: "absolute",
178
+ top: tooltip.rect.y + paddingTop,
179
+ left: verticalLabelWidth + paddingLeft + Math.max(0, tooltip.rect.x),
180
+ width: tooltip.rect.width,
181
+ height: tooltip.rect.height,
182
+ overflow: "hidden"
183
+ },
184
+ children: /*#__PURE__*/_jsx(View, {
185
+ style: {
186
+ position: "relative",
187
+ top: 0,
188
+ left: -Math.max(0, -tooltip.rect.x),
189
+ width: tooltip.rect.width,
190
+ height: tooltip.rect.height
191
+ },
192
+ children: onSelectBarViewMemo
193
+ })
194
+ }), /*#__PURE__*/_jsx(Popup, {
195
+ popupData: {
196
+ x: tooltip.centerX,
197
+ y: tooltip.centerY,
198
+ data: tooltip.data
199
+ },
200
+ popupStyle: props.popupStyle,
201
+ totalWidth: totalWidth,
202
+ totalHeight: totalHeight,
203
+ touchHandler: (x, y) => {
204
+ touchHandler(x - verticalLabelWidth - paddingLeft, y);
205
+ },
206
+ onTouchOutside: () => touchHandler(-1, -1),
207
+ viewOffset: viewOffset
208
+ })]
122
209
  })]
123
210
  })
124
211
  });