@bashem/rn-charts 0.0.2

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 (97) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +35 -0
  3. package/lib/module/index.js +14 -0
  4. package/lib/module/index.js.map +1 -0
  5. package/lib/module/package.json +1 -0
  6. package/lib/module/skia/AreaChart/AreaChart.js +122 -0
  7. package/lib/module/skia/AreaChart/AreaChart.js.map +1 -0
  8. package/lib/module/skia/AreaChart/useAreaChart.js +141 -0
  9. package/lib/module/skia/AreaChart/useAreaChart.js.map +1 -0
  10. package/lib/module/skia/BarChart/BarChart.js +127 -0
  11. package/lib/module/skia/BarChart/BarChart.js.map +1 -0
  12. package/lib/module/skia/BarChart/useBarChart.js +172 -0
  13. package/lib/module/skia/BarChart/useBarChart.js.map +1 -0
  14. package/lib/module/skia/Common/VerticalLabel.js +73 -0
  15. package/lib/module/skia/Common/VerticalLabel.js.map +1 -0
  16. package/lib/module/skia/HeatMap/HeatMap.js +76 -0
  17. package/lib/module/skia/HeatMap/HeatMap.js.map +1 -0
  18. package/lib/module/skia/HeatMap/useHeatMap.js +139 -0
  19. package/lib/module/skia/HeatMap/useHeatMap.js.map +1 -0
  20. package/lib/module/skia/PieChart/PieChart.js +96 -0
  21. package/lib/module/skia/PieChart/PieChart.js.map +1 -0
  22. package/lib/module/skia/PieChart/usePieChart.js +103 -0
  23. package/lib/module/skia/PieChart/usePieChart.js.map +1 -0
  24. package/lib/module/skia/Popup.js +58 -0
  25. package/lib/module/skia/Popup.js.map +1 -0
  26. package/lib/module/skia/Progress/LinearProgress.js +69 -0
  27. package/lib/module/skia/Progress/LinearProgress.js.map +1 -0
  28. package/lib/module/skia/Progress/SemiCircleProgress.js +70 -0
  29. package/lib/module/skia/Progress/SemiCircleProgress.js.map +1 -0
  30. package/lib/module/skia/RadarChart/RadarChart.js +98 -0
  31. package/lib/module/skia/RadarChart/RadarChart.js.map +1 -0
  32. package/lib/module/skia/RadarChart/useRadarChart.js +164 -0
  33. package/lib/module/skia/RadarChart/useRadarChart.js.map +1 -0
  34. package/lib/module/skia/common.js +65 -0
  35. package/lib/module/skia/common.js.map +1 -0
  36. package/lib/module/util/colors.js +182 -0
  37. package/lib/module/util/colors.js.map +1 -0
  38. package/lib/module/util/util.js +71 -0
  39. package/lib/module/util/util.js.map +1 -0
  40. package/lib/typescript/index.d.ts +2 -0
  41. package/lib/typescript/index.d.ts.map +1 -0
  42. package/lib/typescript/package.json +1 -0
  43. package/lib/typescript/src/index.d.ts +10 -0
  44. package/lib/typescript/src/index.d.ts.map +1 -0
  45. package/lib/typescript/src/skia/AreaChart/AreaChart.d.ts +25 -0
  46. package/lib/typescript/src/skia/AreaChart/AreaChart.d.ts.map +1 -0
  47. package/lib/typescript/src/skia/AreaChart/useAreaChart.d.ts +47 -0
  48. package/lib/typescript/src/skia/AreaChart/useAreaChart.d.ts.map +1 -0
  49. package/lib/typescript/src/skia/BarChart/BarChart.d.ts +30 -0
  50. package/lib/typescript/src/skia/BarChart/BarChart.d.ts.map +1 -0
  51. package/lib/typescript/src/skia/BarChart/useBarChart.d.ts +41 -0
  52. package/lib/typescript/src/skia/BarChart/useBarChart.d.ts.map +1 -0
  53. package/lib/typescript/src/skia/Common/VerticalLabel.d.ts +17 -0
  54. package/lib/typescript/src/skia/Common/VerticalLabel.d.ts.map +1 -0
  55. package/lib/typescript/src/skia/HeatMap/HeatMap.d.ts +33 -0
  56. package/lib/typescript/src/skia/HeatMap/HeatMap.d.ts.map +1 -0
  57. package/lib/typescript/src/skia/HeatMap/useHeatMap.d.ts +25 -0
  58. package/lib/typescript/src/skia/HeatMap/useHeatMap.d.ts.map +1 -0
  59. package/lib/typescript/src/skia/PieChart/PieChart.d.ts +27 -0
  60. package/lib/typescript/src/skia/PieChart/PieChart.d.ts.map +1 -0
  61. package/lib/typescript/src/skia/PieChart/usePieChart.d.ts +13 -0
  62. package/lib/typescript/src/skia/PieChart/usePieChart.d.ts.map +1 -0
  63. package/lib/typescript/src/skia/Popup.d.ts +26 -0
  64. package/lib/typescript/src/skia/Popup.d.ts.map +1 -0
  65. package/lib/typescript/src/skia/Progress/LinearProgress.d.ts +18 -0
  66. package/lib/typescript/src/skia/Progress/LinearProgress.d.ts.map +1 -0
  67. package/lib/typescript/src/skia/Progress/SemiCircleProgress.d.ts +18 -0
  68. package/lib/typescript/src/skia/Progress/SemiCircleProgress.d.ts.map +1 -0
  69. package/lib/typescript/src/skia/RadarChart/RadarChart.d.ts +27 -0
  70. package/lib/typescript/src/skia/RadarChart/RadarChart.d.ts.map +1 -0
  71. package/lib/typescript/src/skia/RadarChart/useRadarChart.d.ts +41 -0
  72. package/lib/typescript/src/skia/RadarChart/useRadarChart.d.ts.map +1 -0
  73. package/lib/typescript/src/skia/common.d.ts +31 -0
  74. package/lib/typescript/src/skia/common.d.ts.map +1 -0
  75. package/lib/typescript/src/util/colors.d.ts +4 -0
  76. package/lib/typescript/src/util/colors.d.ts.map +1 -0
  77. package/lib/typescript/src/util/util.d.ts +33 -0
  78. package/lib/typescript/src/util/util.d.ts.map +1 -0
  79. package/package.json +172 -0
  80. package/src/index.tsx +12 -0
  81. package/src/skia/AreaChart/AreaChart.tsx +140 -0
  82. package/src/skia/AreaChart/useAreaChart.ts +180 -0
  83. package/src/skia/BarChart/BarChart.tsx +190 -0
  84. package/src/skia/BarChart/useBarChart.ts +210 -0
  85. package/src/skia/Common/VerticalLabel.tsx +91 -0
  86. package/src/skia/HeatMap/HeatMap.tsx +106 -0
  87. package/src/skia/HeatMap/useHeatMap.ts +175 -0
  88. package/src/skia/PieChart/PieChart.tsx +114 -0
  89. package/src/skia/PieChart/usePieChart.ts +156 -0
  90. package/src/skia/Popup.tsx +125 -0
  91. package/src/skia/Progress/LinearProgress.tsx +84 -0
  92. package/src/skia/Progress/SemiCircleProgress.tsx +82 -0
  93. package/src/skia/RadarChart/RadarChart.tsx +159 -0
  94. package/src/skia/RadarChart/useRadarChart.ts +208 -0
  95. package/src/skia/common.ts +82 -0
  96. package/src/util/colors.ts +186 -0
  97. package/src/util/util.ts +89 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useState","rect","arrayFrom","isDefined","useWindowDimensions","getCommonStyleFont","getPaddings","useBarChart","data","style","maxValue","minValue","maxValueCalculated","minValueCalculated","length","Number","MIN_VALUE","MAX_VALUE","forEach","item","currentValue","values","reduce","acc","value","Math","min","max","steps","tooltip","setTooltip","undefined","startX","setStartX","paddingLeft","paddingRight","paddingTop","paddingBottom","chartBarWidth","barWidth","chartBarSpacing","barSpacing","verticalLabelWidth","chartHeight","height","strokeWidth","bottomLabelHeight","canvasHeight","width","windowWidth","totalWidth","totalHeight","initialSpacing","firstBarLeadingSpacing","endSpacing","lastBarTrailingSpacing","scrollAreaWidth","canvasWidth","font","rectangles","leftBoundary","rightBoundary","startArrayIndex","floor","endArrayIndex","ceil","slice","map","bar","xIndex","previousHeight","x","bars","yIndex","barHeight","y","label","dataIndex","touchHandler","touchedX","touchedY","startingXIndex","console","log","yPassed","categoryData","lastBarHeight","centerX","centerY","onScroll","translateX","prev","newX"],"sourceRoot":"../../../../src","sources":["skia/BarChart/useBarChart.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ import { Canvas, Line, Text, Skia } from '@shopify/react-native-skia';
4
+ import { getFont } from "../common.js";
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ function VerticalLabel({
7
+ minValue,
8
+ maxValue,
9
+ labelCount,
10
+ styles
11
+ }) {
12
+ const {
13
+ width,
14
+ height,
15
+ strokeWidth = 2,
16
+ strokeColor = 'white',
17
+ textColor = 'white',
18
+ paddingTop = 0,
19
+ paddingRight = 0,
20
+ paddingBottom = 0,
21
+ paddingLeft = 0,
22
+ fontSize = 12,
23
+ backgroundColor
24
+ } = styles;
25
+
26
+ // Generate evenly spaced values
27
+ const stepValue = labelCount > 1 ? (maxValue - minValue) / (labelCount - 1) : 0;
28
+ const labels = Array.from({
29
+ length: labelCount
30
+ }, (_, i) => minValue + i * stepValue);
31
+ const font = getFont(fontSize);
32
+ const usableHeight = height - paddingTop - paddingBottom - fontSize;
33
+ const stepY = labelCount > 1 ? usableHeight / (labelCount - 1) : 0;
34
+
35
+ // Precompute text paint
36
+ const paint = Skia.Paint();
37
+ paint.setColor(Skia.Color(textColor));
38
+ return /*#__PURE__*/_jsxs(Canvas, {
39
+ style: {
40
+ width,
41
+ height,
42
+ backgroundColor
43
+ },
44
+ children: [/*#__PURE__*/_jsx(Line, {
45
+ p1: {
46
+ x: width - paddingRight - strokeWidth / 2,
47
+ y: paddingTop
48
+ },
49
+ p2: {
50
+ x: width - paddingRight - strokeWidth / 2,
51
+ y: height - paddingBottom
52
+ },
53
+ color: strokeColor,
54
+ strokeWidth: strokeWidth
55
+ }), labels.map((label, i) => {
56
+ const y = height - paddingBottom - stepY * i;
57
+ const text = label.toFixed(0);
58
+
59
+ // measure text width for right-align
60
+ const textWidth = font.measureText(text).width;
61
+ const x = width - paddingRight - strokeWidth - 4 - textWidth;
62
+ return /*#__PURE__*/_jsx(Text, {
63
+ x: x,
64
+ y: y,
65
+ text: text,
66
+ font: font,
67
+ color: textColor
68
+ }, i);
69
+ })]
70
+ });
71
+ }
72
+ export default VerticalLabel;
73
+ //# sourceMappingURL=VerticalLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Canvas","Line","Text","Skia","getFont","jsx","_jsx","jsxs","_jsxs","VerticalLabel","minValue","maxValue","labelCount","styles","width","height","strokeWidth","strokeColor","textColor","paddingTop","paddingRight","paddingBottom","paddingLeft","fontSize","backgroundColor","stepValue","labels","Array","from","length","_","i","font","usableHeight","stepY","paint","Paint","setColor","Color","style","children","p1","x","y","p2","color","map","label","text","toFixed","textWidth","measureText"],"sourceRoot":"../../../../src","sources":["skia/Common/VerticalLabel.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,QAAQ,4BAA4B;AACrE,SAASC,OAAO,QAA0B,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBtD,SAASC,aAAaA,CAAC;EACrBC,QAAQ;EACRC,QAAQ;EACRC,UAAU;EACVC;AACkB,CAAC,EAAE;EACrB,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,WAAW,GAAG,CAAC;IACfC,WAAW,GAAG,OAAO;IACrBC,SAAS,GAAG,OAAO;IACnBC,UAAU,GAAG,CAAC;IACdC,YAAY,GAAG,CAAC;IAChBC,aAAa,GAAG,CAAC;IACjBC,WAAW,GAAG,CAAC;IACfC,QAAQ,GAAG,EAAE;IACbC;EACF,CAAC,GAAGX,MAAM;;EAEV;EACA,MAAMY,SAAS,GACbb,UAAU,GAAG,CAAC,GAAG,CAACD,QAAQ,GAAGD,QAAQ,KAAKE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;EAC/D,MAAMc,MAAM,GAAGC,KAAK,CAACC,IAAI,CACvB;IAAEC,MAAM,EAAEjB;EAAW,CAAC,EACtB,CAACkB,CAAC,EAAEC,CAAC,KAAKrB,QAAQ,GAAGqB,CAAC,GAAGN,SAC3B,CAAC;EAED,MAAMO,IAAI,GAAG5B,OAAO,CAACmB,QAAQ,CAAC;EAE9B,MAAMU,YAAY,GAAGlB,MAAM,GAAGI,UAAU,GAAGE,aAAa,GAAGE,QAAQ;EACnE,MAAMW,KAAK,GAAGtB,UAAU,GAAG,CAAC,GAAGqB,YAAY,IAAIrB,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;;EAElE;EACA,MAAMuB,KAAK,GAAGhC,IAAI,CAACiC,KAAK,CAAC,CAAC;EAC1BD,KAAK,CAACE,QAAQ,CAAClC,IAAI,CAACmC,KAAK,CAACpB,SAAS,CAAC,CAAC;EAErC,oBACEV,KAAA,CAACR,MAAM;IAACuC,KAAK,EAAE;MAAEzB,KAAK;MAAEC,MAAM;MAAES;IAAgB,CAAE;IAAAgB,QAAA,gBAChDlC,IAAA,CAACL,IAAI;MACHwC,EAAE,EAAE;QAAEC,CAAC,EAAE5B,KAAK,GAAGM,YAAY,GAAGJ,WAAW,GAAG,CAAC;QAAE2B,CAAC,EAAExB;MAAW,CAAE;MACjEyB,EAAE,EAAE;QACFF,CAAC,EAAE5B,KAAK,GAAGM,YAAY,GAAGJ,WAAW,GAAG,CAAC;QACzC2B,CAAC,EAAE5B,MAAM,GAAGM;MACd,CAAE;MACFwB,KAAK,EAAE5B,WAAY;MACnBD,WAAW,EAAEA;IAAY,CAC1B,CAAC,EAEDU,MAAM,CAACoB,GAAG,CAAC,CAACC,KAAK,EAAEhB,CAAC,KAAK;MACxB,MAAMY,CAAC,GAAG5B,MAAM,GAAGM,aAAa,GAAGa,KAAK,GAAGH,CAAC;MAC5C,MAAMiB,IAAI,GAAGD,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;;MAE7B;MACA,MAAMC,SAAS,GAAGlB,IAAI,CAACmB,WAAW,CAACH,IAAI,CAAC,CAAClC,KAAK;MAC9C,MAAM4B,CAAC,GAAG5B,KAAK,GAAGM,YAAY,GAAGJ,WAAW,GAAG,CAAC,GAAGkC,SAAS;MAE5D,oBACE5C,IAAA,CAACJ,IAAI;QAEHwC,CAAC,EAAEA,CAAE;QACLC,CAAC,EAAEA,CAAE;QACLK,IAAI,EAAEA,IAAK;QACXhB,IAAI,EAAEA,IAAK;QACXa,KAAK,EAAE3B;MAAU,GALZa,CAMN,CAAC;IAEN,CAAC,CAAC;EAAA,CACI,CAAC;AAEb;AAEA,eAAetB,aAAa","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View } from 'react-native';
5
+ import { Canvas, Group, Rect } from '@shopify/react-native-skia';
6
+ import useHeatMap from "./useHeatMap.js";
7
+ import Popup from "../Popup.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ function HeatMap(props) {
10
+ const {
11
+ daysInRange,
12
+ totalWidth,
13
+ totalHeight,
14
+ popupData,
15
+ popupRef,
16
+ popupDimension,
17
+ touchHandler,
18
+ getColor,
19
+ cellSize,
20
+ onTouchOutside
21
+ } = useHeatMap(props);
22
+ const [viewOffset, setViewOffset] = React.useState({
23
+ x: 0,
24
+ y: 0
25
+ });
26
+ return /*#__PURE__*/_jsxs(View, {
27
+ style: {
28
+ backgroundColor: props.style?.backgroundColor
29
+ },
30
+ ref: view => {
31
+ view?.measureInWindow((fx, fy) => {
32
+ setViewOffset(prev => {
33
+ if (prev.x === fx && prev.y === fy) {
34
+ return prev;
35
+ }
36
+ return {
37
+ x: fx,
38
+ y: fy
39
+ };
40
+ });
41
+ });
42
+ },
43
+ children: [/*#__PURE__*/_jsx(Canvas, {
44
+ style: {
45
+ width: totalWidth,
46
+ height: totalHeight
47
+ },
48
+ onTouchStart: event => touchHandler(event.nativeEvent.locationX, event.nativeEvent.locationY),
49
+ children: /*#__PURE__*/_jsx(Group, {
50
+ children: daysInRange.map(day => {
51
+ return /*#__PURE__*/_jsx(Rect, {
52
+ x: day.x,
53
+ y: day.y,
54
+ width: cellSize,
55
+ height: cellSize,
56
+ color: getColor(day.value)
57
+ }, day.date);
58
+ })
59
+ })
60
+ }), popupData && props.popupStyle && /*#__PURE__*/_jsx(Popup, {
61
+ popupData: {
62
+ x: popupData.x,
63
+ y: popupData.y,
64
+ data: popupData.day
65
+ },
66
+ totalWidth: totalWidth,
67
+ totalHeight: totalHeight,
68
+ touchHandler: touchHandler,
69
+ onTouchOutside: onTouchOutside,
70
+ popupStyle: props.popupStyle,
71
+ viewOffset: viewOffset
72
+ })]
73
+ });
74
+ }
75
+ export default HeatMap;
76
+ //# sourceMappingURL=HeatMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Canvas","Group","Rect","useHeatMap","Popup","jsx","_jsx","jsxs","_jsxs","HeatMap","props","daysInRange","totalWidth","totalHeight","popupData","popupRef","popupDimension","touchHandler","getColor","cellSize","onTouchOutside","viewOffset","setViewOffset","useState","x","y","style","backgroundColor","ref","view","measureInWindow","fx","fy","prev","children","width","height","onTouchStart","event","nativeEvent","locationX","locationY","map","day","color","value","date","popupStyle","data"],"sourceRoot":"../../../../src","sources":["skia/HeatMap/HeatMap.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAoB,OAAO;AACvC,SAASC,IAAI,QAAe,cAAc;AAC1C,SAASC,MAAM,EAAEC,KAAK,EAAEC,IAAI,QAAQ,4BAA4B;AAChE,OAAOC,UAAU,MAAM,iBAAc;AAErC,OAAOC,KAAK,MAA2B,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiClD,SAASC,OAAOA,CAACC,KAAmB,EAAE;EACpC,MAAM;IACJC,WAAW;IACXC,UAAU;IACVC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,cAAc;IACdC,YAAY;IACZC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,GAAGjB,UAAU,CAACO,KAAK,CAAC;EAErB,MAAM,CAACW,UAAU,EAAEC,aAAa,CAAC,GAAGxB,KAAK,CAACyB,QAAQ,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAAC;EAElE,oBACEjB,KAAA,CAACT,IAAI;IACH2B,KAAK,EAAE;MAAEC,eAAe,EAAEjB,KAAK,CAACgB,KAAK,EAAEC;IAAgB,CAAE;IACzDC,GAAG,EAAGC,IAAI,IAAK;MACbA,IAAI,EAAEC,eAAe,CAAC,CAACC,EAAE,EAAEC,EAAE,KAAK;QAChCV,aAAa,CAAEW,IAAI,IAAK;UACtB,IAAIA,IAAI,CAACT,CAAC,KAAKO,EAAE,IAAIE,IAAI,CAACR,CAAC,KAAKO,EAAE,EAAE;YAClC,OAAOC,IAAI;UACb;UACA,OAAO;YAAET,CAAC,EAAEO,EAAE;YAAEN,CAAC,EAAEO;UAAG,CAAC;QACzB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAE;IAAAE,QAAA,gBAEF5B,IAAA,CAACN,MAAM;MACL0B,KAAK,EAAE;QAAES,KAAK,EAAEvB,UAAU;QAAEwB,MAAM,EAAEvB;MAAY,CAAE;MAClDwB,YAAY,EAAGC,KAAK,IAClBrB,YAAY,CAACqB,KAAK,CAACC,WAAW,CAACC,SAAS,EAAEF,KAAK,CAACC,WAAW,CAACE,SAAS,CACtE;MAAAP,QAAA,eAED5B,IAAA,CAACL,KAAK;QAAAiC,QAAA,EACHvB,WAAW,CAAC+B,GAAG,CAAEC,GAAG,IAAK;UACxB,oBACErC,IAAA,CAACJ,IAAI;YAEHsB,CAAC,EAAEmB,GAAG,CAACnB,CAAE;YACTC,CAAC,EAAEkB,GAAG,CAAClB,CAAE;YACTU,KAAK,EAAEhB,QAAS;YAChBiB,MAAM,EAAEjB,QAAS;YACjByB,KAAK,EAAE1B,QAAQ,CAACyB,GAAG,CAACE,KAAK;UAAE,GALtBF,GAAG,CAACG,IAMV,CAAC;QAEN,CAAC;MAAC,CACG;IAAC,CACF,CAAC,EAERhC,SAAS,IAAIJ,KAAK,CAACqC,UAAU,iBAC5BzC,IAAA,CAACF,KAAK;MACJU,SAAS,EAAE;QAAEU,CAAC,EAAEV,SAAS,CAACU,CAAC;QAAEC,CAAC,EAAEX,SAAS,CAACW,CAAC;QAAEuB,IAAI,EAAElC,SAAS,CAAC6B;MAAI,CAAE;MACnE/B,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEA,WAAY;MACzBI,YAAY,EAAEA,YAAa;MAC3BG,cAAc,EAAEA,cAAe;MAC/B2B,UAAU,EAAErC,KAAK,CAACqC,UAAW;MAC7B1B,UAAU,EAAEA;IAAW,CACxB,CACF;EAAA,CACG,CAAC;AAEX;AAEA,eAAeZ,OAAO","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ import { useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
4
+ function useHeatMap({
5
+ startDate,
6
+ endDate,
7
+ data,
8
+ style,
9
+ minValue,
10
+ maxValue,
11
+ ref,
12
+ popupStyle
13
+ }) {
14
+ const cellSize = style?.cellSize ?? 24;
15
+ const cellGap = style?.cellGap ?? 4;
16
+ const cellMaxColor = style?.cellMaxColor ?? '#50f555ff';
17
+ const cellMinColor = style?.cellMinColor ?? '#ffffffff';
18
+ const numberOfDaysInWeek = 7;
19
+ const numberOfMsInDay = 1000 * 60 * 60 * 24;
20
+ const [popupData, setPopupData] = useState(undefined);
21
+ const [popupDimension, setPopupDimension] = useState({
22
+ width: 0,
23
+ height: 0
24
+ });
25
+ const popupRef = useRef(null);
26
+ const formatDate = date => `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
27
+ const {
28
+ daysInRange,
29
+ computedMin,
30
+ computedMax
31
+ } = useMemo(() => {
32
+ const start = new Date(startDate);
33
+ const end = new Date(endDate);
34
+ const output = [];
35
+ let computedMax = Number.MIN_VALUE;
36
+ let computedMin = Number.MAX_VALUE;
37
+ const startDayOfWeek = start.getDay();
38
+ for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {
39
+ const dateStr = formatDate(d);
40
+ const value = data?.[dateStr] ?? 0;
41
+ const dayOfWeek = d.getDay();
42
+ const daysFromStart = Math.floor((d.getTime() - start.getTime()) / numberOfMsInDay);
43
+ const week = Math.floor((startDayOfWeek + daysFromStart) / numberOfDaysInWeek);
44
+ computedMax = Math.max(computedMax, value);
45
+ computedMin = Math.min(computedMin, value);
46
+ output.push({
47
+ date: dateStr,
48
+ value,
49
+ dayOfWeek,
50
+ week,
51
+ x: week * (cellSize + cellGap),
52
+ y: dayOfWeek * (cellSize + cellGap)
53
+ });
54
+ }
55
+ return {
56
+ daysInRange: output,
57
+ computedMin: minValue !== undefined ? minValue : computedMin,
58
+ computedMax: maxValue !== undefined ? maxValue : computedMax
59
+ };
60
+ }, [startDate, endDate, data, minValue, maxValue, cellSize, cellGap]);
61
+
62
+ // --- COLOR LOGIC ---
63
+ const getColor = value => {
64
+ if (value <= 0) return cellMinColor;
65
+ const intensity = Math.min(1, Math.max(0, (value - computedMin) / (computedMax - computedMin || 1)));
66
+ const bigint = parseInt(cellMaxColor.replace('#', ''), 16);
67
+ const r = bigint >> 16 & 255;
68
+ const g = bigint >> 8 & 255;
69
+ const b = bigint & 255;
70
+ const mix = base => Math.round(255 - (255 - base) * intensity);
71
+ return `rgb(${mix(r)}, ${mix(g)}, ${mix(b)})`;
72
+ };
73
+
74
+ // Heatmap size
75
+ const numWeeks = Math.ceil(daysInRange.length / 7 + 1);
76
+ const totalWidth = numWeeks * (cellSize + cellGap);
77
+ const totalHeight = 7 * (cellSize + cellGap);
78
+
79
+ // --- POPUP MEASUREMENT ---
80
+ useLayoutEffect(() => {
81
+ if (popupRef.current) {
82
+ popupRef.current.measure((x, y, width, height) => {
83
+ setPopupDimension({
84
+ width,
85
+ height
86
+ });
87
+ });
88
+ }
89
+ }, [popupData]);
90
+
91
+ // --- TOUCH HANDLER ---
92
+ const touchHandler = (x, y) => {
93
+ if (!popupStyle?.renderPopup || x < 0 || y < 0 || x >= totalWidth || y >= totalHeight) {
94
+ setPopupData(undefined);
95
+ return;
96
+ }
97
+ const col = Math.floor(x / (cellSize + cellGap));
98
+ const row = Math.floor(y / (cellSize + cellGap));
99
+ const start = new Date(startDate);
100
+ const startDayOfWeek = start.getDay();
101
+ const index = col * numberOfDaysInWeek + row;
102
+ if (index >= startDayOfWeek && index - startDayOfWeek < daysInRange.length) {
103
+ const day = daysInRange[index - startDayOfWeek];
104
+ if (day) {
105
+ setPopupData({
106
+ x: col * (cellSize + cellGap),
107
+ y: row * (cellSize + cellGap),
108
+ day
109
+ });
110
+ return;
111
+ }
112
+ }
113
+ setPopupData(undefined);
114
+ };
115
+ const onTouchOutside = () => {
116
+ setPopupData(undefined);
117
+ };
118
+ useImperativeHandle(ref, () => ({
119
+ touchedOutside: () => {
120
+ setPopupData(undefined);
121
+ }
122
+ }), [ref]);
123
+ return {
124
+ daysInRange,
125
+ computedMin,
126
+ computedMax,
127
+ totalWidth,
128
+ totalHeight,
129
+ popupData,
130
+ popupRef,
131
+ popupDimension,
132
+ touchHandler,
133
+ getColor,
134
+ cellSize,
135
+ onTouchOutside
136
+ };
137
+ }
138
+ export default useHeatMap;
139
+ //# sourceMappingURL=useHeatMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","useHeatMap","startDate","endDate","data","style","minValue","maxValue","ref","popupStyle","cellSize","cellGap","cellMaxColor","cellMinColor","numberOfDaysInWeek","numberOfMsInDay","popupData","setPopupData","undefined","popupDimension","setPopupDimension","width","height","popupRef","formatDate","date","getFullYear","String","getMonth","padStart","getDate","daysInRange","computedMin","computedMax","start","Date","end","output","Number","MIN_VALUE","MAX_VALUE","startDayOfWeek","getDay","d","setDate","dateStr","value","dayOfWeek","daysFromStart","Math","floor","getTime","week","max","min","push","x","y","getColor","intensity","bigint","parseInt","replace","r","g","b","mix","base","round","numWeeks","ceil","length","totalWidth","totalHeight","current","measure","touchHandler","renderPopup","col","row","index","day","onTouchOutside","touchedOutside"],"sourceRoot":"../../../../src","sources":["skia/HeatMap/useHeatMap.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ import { Canvas, Path } from '@shopify/react-native-skia';
4
+ import { View } from 'react-native';
5
+ import { usePieChart } from "./usePieChart.js";
6
+ import Popup from "../Popup.js";
7
+ import { useState } from 'react';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ function PieChart(props) {
10
+ const {
11
+ radius,
12
+ innerRadius,
13
+ paths,
14
+ popupData,
15
+ touchHandler
16
+ } = usePieChart(props);
17
+ const {
18
+ style,
19
+ centerView,
20
+ popupStyle
21
+ } = props;
22
+ const paddingTop = style.paddingTop ?? style.padding ?? 0;
23
+ const paddingBottom = style.paddingBottom ?? style.padding ?? 0;
24
+ const paddingLeft = style.paddingLeft ?? style.padding ?? 0;
25
+ const paddingRight = style.paddingRight ?? style.padding ?? 0;
26
+ const [viewOffset, setViewOffset] = useState({
27
+ x: 0,
28
+ y: 0
29
+ });
30
+ return /*#__PURE__*/_jsxs(View, {
31
+ style: {
32
+ paddingTop: paddingTop,
33
+ paddingBottom: paddingBottom,
34
+ paddingRight: paddingRight,
35
+ paddingLeft: paddingLeft,
36
+ backgroundColor: style.backgroundColor ?? 'transparent'
37
+ },
38
+ ref: view => {
39
+ view?.measureInWindow((fx, fy) => {
40
+ setViewOffset(prev => {
41
+ if (prev.x === fx && prev.y === fy) {
42
+ return prev;
43
+ }
44
+ return {
45
+ x: fx,
46
+ y: fy
47
+ };
48
+ });
49
+ });
50
+ },
51
+ children: [centerView && /*#__PURE__*/_jsx(View, {
52
+ style: {
53
+ position: 'absolute',
54
+ top: paddingTop + radius - innerRadius,
55
+ left: paddingLeft + radius - innerRadius,
56
+ width: innerRadius * 2,
57
+ height: innerRadius * 2,
58
+ borderRadius: innerRadius,
59
+ justifyContent: 'center',
60
+ alignItems: 'center',
61
+ backgroundColor: style.innerColor ?? 'black'
62
+ },
63
+ children: centerView
64
+ }), /*#__PURE__*/_jsx(Canvas, {
65
+ style: {
66
+ width: radius * 2,
67
+ height: radius * 2,
68
+ backgroundColor: style.backgroundColor ?? 'transparent'
69
+ },
70
+ onTouchStart: event => touchHandler(event.nativeEvent.locationX, event.nativeEvent.locationY),
71
+ children: paths.map(({
72
+ path,
73
+ color
74
+ }, index) => /*#__PURE__*/_jsx(Path, {
75
+ path: path,
76
+ color: color,
77
+ stroke: {
78
+ width: 5
79
+ }
80
+ }, index))
81
+ }), popupData && /*#__PURE__*/_jsx(Popup, {
82
+ popupData: {
83
+ x: popupData.centerX,
84
+ y: popupData.centerY,
85
+ data: popupData.data
86
+ },
87
+ totalWidth: radius * 2,
88
+ totalHeight: radius * 2,
89
+ touchHandler: (x, y) => touchHandler(x - paddingLeft, y - paddingTop),
90
+ viewOffset: viewOffset,
91
+ popupStyle: popupStyle
92
+ })]
93
+ });
94
+ }
95
+ export default PieChart;
96
+ //# sourceMappingURL=PieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Canvas","Path","View","usePieChart","Popup","useState","jsx","_jsx","jsxs","_jsxs","PieChart","props","radius","innerRadius","paths","popupData","touchHandler","style","centerView","popupStyle","paddingTop","padding","paddingBottom","paddingLeft","paddingRight","viewOffset","setViewOffset","x","y","backgroundColor","ref","view","measureInWindow","fx","fy","prev","children","position","top","left","width","height","borderRadius","justifyContent","alignItems","innerColor","onTouchStart","event","nativeEvent","locationX","locationY","map","path","color","index","stroke","centerX","centerY","data","totalWidth","totalHeight"],"sourceRoot":"../../../../src","sources":["skia/PieChart/PieChart.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ import { useState } from "react";
4
+ import { rect, Skia } from "@shopify/react-native-skia";
5
+ import { getRandomRGBColor } from "../common.js";
6
+ function deegreesToRadians(degrees) {
7
+ return degrees * Math.PI / 180;
8
+ }
9
+ function ypoint(angle, radius, cy) {
10
+ return cy - radius * Math.sin(deegreesToRadians(angle));
11
+ }
12
+ function xpoint(angle, radius, cx) {
13
+ return cx - radius * Math.cos(deegreesToRadians(angle));
14
+ }
15
+ function getCircularPoints(startAngle, radius, angle, cx, cy) {
16
+ let x1 = xpoint(startAngle, radius, cx);
17
+ let y1 = ypoint(startAngle, radius, cy);
18
+ let x2 = xpoint(startAngle + angle, radius, cx);
19
+ let y2 = ypoint(startAngle + angle, radius, cy);
20
+ return [x1, y1, x2, y2];
21
+ }
22
+ export function usePieChart({
23
+ slices,
24
+ style,
25
+ onSliceTouch
26
+ }) {
27
+ const [popupData, setPopupData] = useState(undefined);
28
+ const radius = style.radius ?? 150;
29
+ const diameter = radius * 2;
30
+ const innerRadius = style.innerRadius ?? 100;
31
+ const cx = radius;
32
+ const cy = radius;
33
+ const total = slices.reduce((sum, slice) => sum + slice.value, 0);
34
+ let startAngle = 0;
35
+ const paths = slices.map(({
36
+ value,
37
+ color
38
+ }, index) => {
39
+ const sweepAngle = value / total * 360;
40
+ let [x1, y1, x2, y2] = getCircularPoints(startAngle, radius, sweepAngle, cx, cy);
41
+ let [cx1, cy1, cx2, cy2] = getCircularPoints(startAngle, innerRadius, sweepAngle, cx, cy);
42
+ const path = Skia.Path.Make();
43
+ path.moveTo(cx1, cy1);
44
+ path.lineTo(x1, y1);
45
+ path.addArc(rect(cx - radius, cy - radius, radius * 2, radius * 2), startAngle + 180, sweepAngle);
46
+ path.lineTo(cx2, cy2);
47
+ path.addArc(rect(cx - innerRadius, cy - innerRadius, innerRadius * 2, innerRadius * 2), startAngle + 180 + sweepAngle, -sweepAngle);
48
+ path.lineTo(x1, y1);
49
+ path.close();
50
+ startAngle += sweepAngle;
51
+ return {
52
+ path,
53
+ color: color ?? getRandomRGBColor()
54
+ };
55
+ });
56
+ const touchHandler = (locationX, locationY) => {
57
+ if (!onSliceTouch || locationX < 0 || locationY < 0 || locationX >= diameter || locationY >= diameter) {
58
+ setPopupData(undefined);
59
+ return;
60
+ }
61
+ let foundPath = false;
62
+ let angles = 0;
63
+ paths.forEach(({
64
+ path
65
+ }, index) => {
66
+ let slice = slices[index];
67
+ if (!slice) return;
68
+ let lastAngle = slice.value / total * 360;
69
+ if (path.contains(locationX, locationY)) {
70
+ const label = slice.label || 'Slice';
71
+ const outerX = xpoint(angles + lastAngle / 2, radius, cx);
72
+ const innerX = xpoint(angles + lastAngle / 2, innerRadius, cx);
73
+ const outerY = ypoint(angles + lastAngle / 2, radius, cy);
74
+ const innerY = ypoint(angles + lastAngle / 2, innerRadius, cy);
75
+ const centerY = (outerY + innerY) / 2;
76
+ const centerX = (outerX + innerX) / 2;
77
+ onSliceTouch?.(slice);
78
+ setPopupData({
79
+ centerX: centerX,
80
+ centerY: centerY,
81
+ data: slice
82
+ });
83
+ foundPath = true;
84
+ return;
85
+ }
86
+ angles += lastAngle;
87
+ });
88
+ if (!foundPath) {
89
+ console.log('No slice found at touch location');
90
+ onSliceTouch?.(undefined);
91
+ setPopupData(undefined);
92
+ }
93
+ };
94
+ return {
95
+ paths,
96
+ diameter,
97
+ innerRadius,
98
+ radius,
99
+ popupData,
100
+ touchHandler
101
+ };
102
+ }
103
+ //# sourceMappingURL=usePieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","rect","Skia","getRandomRGBColor","deegreesToRadians","degrees","Math","PI","ypoint","angle","radius","cy","sin","xpoint","cx","cos","getCircularPoints","startAngle","x1","y1","x2","y2","usePieChart","slices","style","onSliceTouch","popupData","setPopupData","undefined","diameter","innerRadius","total","reduce","sum","slice","value","paths","map","color","index","sweepAngle","cx1","cy1","cx2","cy2","path","Path","Make","moveTo","lineTo","addArc","close","touchHandler","locationX","locationY","foundPath","angles","forEach","lastAngle","contains","label","outerX","innerX","outerY","innerY","centerY","centerX","data","console","log"],"sourceRoot":"../../../../src","sources":["skia/PieChart/usePieChart.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAASC,IAAI,EAAEC,IAAI,QAAQ,4BAA4B;AACvD,SAASC,iBAAiB,QAAQ,cAAW;AAE7C,SAASC,iBAAiBA,CAACC,OAAe,EAAU;EACnD,OAAQA,OAAO,GAAGC,IAAI,CAACC,EAAE,GAAI,GAAG;AACjC;AAEA,SAASC,MAAMA,CAACC,KAAa,EAAEC,MAAc,EAAEC,EAAU,EAAU;EAClE,OAAOA,EAAE,GAAGD,MAAM,GAAGJ,IAAI,CAACM,GAAG,CAACR,iBAAiB,CAACK,KAAK,CAAC,CAAC;AACxD;AAEA,SAASI,MAAMA,CAACJ,KAAa,EAAEC,MAAc,EAAEI,EAAU,EAAU;EAClE,OAAOA,EAAE,GAAGJ,MAAM,GAAGJ,IAAI,CAACS,GAAG,CAACX,iBAAiB,CAACK,KAAK,CAAC,CAAC;AACxD;AAEA,SAASO,iBAAiBA,CACzBC,UAAkB,EAClBP,MAAc,EACdD,KAAa,EACbK,EAAU,EACVH,EAAU,EACyB;EACnC,IAAIO,EAAE,GAAGL,MAAM,CAACI,UAAU,EAAEP,MAAM,EAAEI,EAAE,CAAC;EACvC,IAAIK,EAAE,GAAGX,MAAM,CAACS,UAAU,EAAEP,MAAM,EAAEC,EAAE,CAAC;EACvC,IAAIS,EAAE,GAAGP,MAAM,CAACI,UAAU,GAAGR,KAAK,EAAEC,MAAM,EAAEI,EAAE,CAAC;EAC/C,IAAIO,EAAE,GAAGb,MAAM,CAACS,UAAU,GAAGR,KAAK,EAAEC,MAAM,EAAEC,EAAE,CAAC;EAE/C,OAAO,CAACO,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;AACxB;AAEA,OAAO,SAASC,WAAWA,CAAC;EAC3BC,MAAM;EACNC,KAAK;EACLC;AACc,CAAC,EACd;EACD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG3B,QAAQ,CAAwB4B,SAAS,CAAC;EAE5E,MAAMlB,MAAM,GAAGc,KAAK,CAACd,MAAM,IAAI,GAAG;EAClC,MAAMmB,QAAQ,GAAGnB,MAAM,GAAG,CAAC;EAC3B,MAAMoB,WAAW,GAAGN,KAAK,CAACM,WAAW,IAAI,GAAG;EAC5C,MAAMhB,EAAE,GAAGJ,MAAM;EACjB,MAAMC,EAAE,GAAGD,MAAM;EAEjB,MAAMqB,KAAK,GAAGR,MAAM,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAKD,GAAG,GAAGC,KAAK,CAACC,KAAK,EAAE,CAAC,CAAC;EAEjE,IAAIlB,UAAU,GAAG,CAAC;EAElB,MAAMmB,KAAK,GAAGb,MAAM,CAACc,GAAG,CAAC,CAAC;IAAEF,KAAK;IAAEG;EAAM,CAAC,EAAEC,KAAK,KAAK;IACrD,MAAMC,UAAU,GAAIL,KAAK,GAAGJ,KAAK,GAAI,GAAG;IAExC,IAAI,CAACb,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAGL,iBAAiB,CACvCC,UAAU,EACVP,MAAM,EACN8B,UAAU,EACV1B,EAAE,EACFH,EACD,CAAC;IACD,IAAI,CAAC8B,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC,GAAG5B,iBAAiB,CAC3CC,UAAU,EACVa,WAAW,EACXU,UAAU,EACV1B,EAAE,EACFH,EACD,CAAC;IAED,MAAMkC,IAAI,GAAG3C,IAAI,CAAC4C,IAAI,CAACC,IAAI,CAAC,CAAC;IAC7BF,IAAI,CAACG,MAAM,CAACP,GAAG,EAAEC,GAAG,CAAC;IACrBG,IAAI,CAACI,MAAM,CAAC/B,EAAE,EAAEC,EAAE,CAAC;IACnB0B,IAAI,CAACK,MAAM,CACVjD,IAAI,CACHa,EAAE,GAAGJ,MAAM,EACXC,EAAE,GAAGD,MAAM,EACXA,MAAM,GAAG,CAAC,EACVA,MAAM,GAAG,CACV,CAAC,EACDO,UAAU,GAAG,GAAG,EAChBuB,UACD,CAAC;IACDK,IAAI,CAACI,MAAM,CAACN,GAAG,EAAEC,GAAG,CAAC;IAErBC,IAAI,CAACK,MAAM,CACVjD,IAAI,CACHa,EAAE,GAAGgB,WAAW,EAChBnB,EAAE,GAAGmB,WAAW,EAChBA,WAAW,GAAG,CAAC,EACfA,WAAW,GAAG,CACf,CAAC,EACDb,UAAU,GAAG,GAAG,GAAGuB,UAAU,EAC7B,CAACA,UACF,CAAC;IACDK,IAAI,CAACI,MAAM,CAAC/B,EAAE,EAAEC,EAAE,CAAC;IACnB0B,IAAI,CAACM,KAAK,CAAC,CAAC;IAEZlC,UAAU,IAAIuB,UAAU;IAExB,OAAO;MAAEK,IAAI;MAAEP,KAAK,EAAEA,KAAK,IAAInC,iBAAiB,CAAC;IAAE,CAAC;EACrD,CAAC,CAAC;EAEF,MAAMiD,YAAY,GAAGA,CAACC,SAAiB,EAAEC,SAAiB,KAAK;IAC9D,IAAI,CAAC7B,YAAY,IAAI4B,SAAS,GAAG,CAAC,IAAIC,SAAS,GAAG,CAAC,IAAID,SAAS,IAAIxB,QAAQ,IAAIyB,SAAS,IAAIzB,QAAQ,EAAE;MACtGF,YAAY,CAACC,SAAS,CAAC;MACvB;IACD;IAEA,IAAI2B,SAAS,GAAG,KAAK;IACrB,IAAIC,MAAM,GAAG,CAAC;IAEdpB,KAAK,CAACqB,OAAO,CAAC,CAAC;MAAEZ;IAAK,CAAC,EAAEN,KAAK,KAAK;MAClC,IAAIL,KAAK,GAAGX,MAAM,CAACgB,KAAK,CAAC;MACzB,IAAI,CAACL,KAAK,EAAE;MAEZ,IAAIwB,SAAS,GAAIxB,KAAK,CAACC,KAAK,GAAGJ,KAAK,GAAI,GAAG;MAC3C,IAAIc,IAAI,CAACc,QAAQ,CAACN,SAAS,EAAEC,SAAS,CAAC,EAAE;QACxC,MAAMM,KAAK,GAAG1B,KAAK,CAAC0B,KAAK,IAAI,OAAO;QAEpC,MAAMC,MAAM,GAAGhD,MAAM,CAAC2C,MAAM,GAAGE,SAAS,GAAG,CAAC,EAAEhD,MAAM,EAAEI,EAAE,CAAC;QACzD,MAAMgD,MAAM,GAAGjD,MAAM,CAAC2C,MAAM,GAAGE,SAAS,GAAG,CAAC,EAAE5B,WAAW,EAAEhB,EAAE,CAAC;QAE9D,MAAMiD,MAAM,GAAGvD,MAAM,CAACgD,MAAM,GAAGE,SAAS,GAAG,CAAC,EAAEhD,MAAM,EAAEC,EAAE,CAAC;QACzD,MAAMqD,MAAM,GAAGxD,MAAM,CAACgD,MAAM,GAAGE,SAAS,GAAG,CAAC,EAAE5B,WAAW,EAAEnB,EAAE,CAAC;QAE9D,MAAMsD,OAAO,GAAG,CAACF,MAAM,GAAGC,MAAM,IAAI,CAAC;QACrC,MAAME,OAAO,GAAG,CAACL,MAAM,GAAGC,MAAM,IAAI,CAAC;QAErCrC,YAAY,GAAGS,KAAK,CAAC;QACrBP,YAAY,CAAC;UACZuC,OAAO,EAAEA,OAAO;UAChBD,OAAO,EAAEA,OAAO;UAChBE,IAAI,EAAEjC;QACP,CAAC,CAAC;QAEFqB,SAAS,GAAG,IAAI;QAChB;MACD;MAEAC,MAAM,IAAIE,SAAS;IACpB,CAAC,CAAC;IAEF,IAAI,CAACH,SAAS,EAAE;MACfa,OAAO,CAACC,GAAG,CAAC,kCAAkC,CAAC;MAC/C5C,YAAY,GAAGG,SAAS,CAAC;MACzBD,YAAY,CAACC,SAAS,CAAC;IACxB;EACD,CAAC;EACD,OAAO;IACNQ,KAAK;IACLP,QAAQ;IACRC,WAAW;IACXpB,MAAM;IACNgB,SAAS;IACT0B;EACD,CAAC;AACF","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Modal, View } from 'react-native';
5
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
6
+ export default function Popup({
7
+ popupData,
8
+ totalWidth,
9
+ totalHeight,
10
+ touchHandler,
11
+ onTouchOutside,
12
+ popupStyle,
13
+ viewOffset
14
+ }) {
15
+ return /*#__PURE__*/_jsx(_Fragment, {
16
+ children: popupData && popupStyle?.renderPopup && /*#__PURE__*/_jsx(Modal, {
17
+ animationType: "fade",
18
+ transparent: true,
19
+ visible: true,
20
+ onRequestClose: () => {
21
+ onTouchOutside?.();
22
+ },
23
+ onTouchStart: e => {
24
+ console.log('modal touched ');
25
+ },
26
+ children: /*#__PURE__*/_jsxs(View, {
27
+ style: {
28
+ flex: 1,
29
+ width: '100%',
30
+ height: '100%'
31
+ },
32
+ onTouchStart: e => {
33
+ const x = e.nativeEvent.pageX;
34
+ const y = e.nativeEvent.pageY;
35
+ touchHandler?.(x - viewOffset.x, y - viewOffset.y);
36
+ },
37
+ children: [popupData && !Array.isArray(popupData) && /*#__PURE__*/_jsx(View, {
38
+ style: [{
39
+ position: 'absolute',
40
+ left: Math.max(0, Math.min(popupData.x, totalWidth - (popupStyle?.width ?? 0)) + viewOffset.x),
41
+ top: Math.max(0, Math.min(popupData.y, totalHeight - (popupStyle?.height ?? 0)) + viewOffset.y)
42
+ }],
43
+ onTouchStart: e => e.stopPropagation(),
44
+ children: popupStyle?.renderPopup(popupData.data)
45
+ }), popupData && Array.isArray(popupData) && popupData.map((popupItem, index) => /*#__PURE__*/_jsx(View, {
46
+ style: [{
47
+ position: 'absolute',
48
+ left: Math.max(0, Math.min(popupItem.x, totalWidth - (popupStyle?.width ?? 0)) + viewOffset.x),
49
+ top: Math.max(0, Math.min(popupItem.y, totalHeight - (popupStyle?.height ?? 0)) + viewOffset.y)
50
+ }],
51
+ onTouchStart: e => e.stopPropagation(),
52
+ children: popupStyle?.renderPopup?.(popupItem.data)
53
+ }, index))]
54
+ })
55
+ })
56
+ });
57
+ }
58
+ //# sourceMappingURL=Popup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Modal","View","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Popup","popupData","totalWidth","totalHeight","touchHandler","onTouchOutside","popupStyle","viewOffset","children","renderPopup","animationType","transparent","visible","onRequestClose","onTouchStart","e","console","log","style","flex","width","height","x","nativeEvent","pageX","y","pageY","Array","isArray","position","left","Math","max","min","top","stopPropagation","data","map","popupItem","index"],"sourceRoot":"../../../src","sources":["skia/Popup.tsx"],"mappings":"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","ignoreList":[]}