@obitrain/charts 0.10.4 → 0.12.0

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 (132) hide show
  1. package/README.md +6 -4
  2. package/lib/commonjs/Charts/BottomAxis/AxisLine.js +1 -1
  3. package/lib/commonjs/Charts/BottomAxis/BottomAxis.js +54 -14
  4. package/lib/commonjs/Charts/BottomAxis/BottomAxis.js.map +1 -1
  5. package/lib/commonjs/Charts/BottomAxis/Tick.js +29 -13
  6. package/lib/commonjs/Charts/BottomAxis/Tick.js.map +1 -1
  7. package/lib/commonjs/Charts/BottomAxis/index.js.map +1 -1
  8. package/lib/commonjs/Charts/Cursor.js +33 -13
  9. package/lib/commonjs/Charts/Cursor.js.map +1 -1
  10. package/lib/commonjs/Charts/Dot.js +51 -0
  11. package/lib/commonjs/Charts/Dot.js.map +1 -0
  12. package/lib/commonjs/Charts/Dots.js +74 -0
  13. package/lib/commonjs/Charts/Dots.js.map +1 -0
  14. package/lib/commonjs/Charts/Linechart/index.js +1 -1
  15. package/lib/commonjs/Charts/YAxis.js +77 -0
  16. package/lib/commonjs/Charts/YAxis.js.map +1 -0
  17. package/lib/commonjs/Charts/ZoomableLinechart/ScalablePath.js +5 -4
  18. package/lib/commonjs/Charts/ZoomableLinechart/ScalablePath.js.map +1 -1
  19. package/lib/commonjs/Charts/ZoomableLinechart/index.js +1 -1
  20. package/lib/commonjs/Charts/gesture.js +90 -38
  21. package/lib/commonjs/Charts/gesture.js.map +1 -1
  22. package/lib/commonjs/Charts/graphUtils.js +69 -16
  23. package/lib/commonjs/Charts/graphUtils.js.map +1 -1
  24. package/lib/commonjs/Charts/index.js +39 -0
  25. package/lib/commonjs/Charts/index.js.map +1 -1
  26. package/lib/commonjs/Charts/maths.js +107 -16
  27. package/lib/commonjs/Charts/maths.js.map +1 -1
  28. package/lib/module/Charts/BottomAxis/AxisLine.js +1 -1
  29. package/lib/module/Charts/BottomAxis/AxisLine.js.map +1 -1
  30. package/lib/module/Charts/BottomAxis/BottomAxis.js +56 -15
  31. package/lib/module/Charts/BottomAxis/BottomAxis.js.map +1 -1
  32. package/lib/module/Charts/BottomAxis/Tick.js +29 -11
  33. package/lib/module/Charts/BottomAxis/Tick.js.map +1 -1
  34. package/lib/module/Charts/BottomAxis/index.js.map +1 -1
  35. package/lib/module/Charts/Cursor.js +35 -15
  36. package/lib/module/Charts/Cursor.js.map +1 -1
  37. package/lib/module/Charts/Dot.js +47 -0
  38. package/lib/module/Charts/Dot.js.map +1 -0
  39. package/lib/module/Charts/Dots.js +70 -0
  40. package/lib/module/Charts/Dots.js.map +1 -0
  41. package/lib/module/Charts/Linechart/index.js +1 -1
  42. package/lib/module/Charts/Linechart/index.js.map +1 -1
  43. package/lib/module/Charts/YAxis.js +73 -0
  44. package/lib/module/Charts/YAxis.js.map +1 -0
  45. package/lib/module/Charts/ZoomableLinechart/ScalablePath.js +5 -4
  46. package/lib/module/Charts/ZoomableLinechart/ScalablePath.js.map +1 -1
  47. package/lib/module/Charts/ZoomableLinechart/index.js +1 -1
  48. package/lib/module/Charts/ZoomableLinechart/index.js.map +1 -1
  49. package/lib/module/Charts/gesture.js +90 -39
  50. package/lib/module/Charts/gesture.js.map +1 -1
  51. package/lib/module/Charts/graphUtils.js +71 -18
  52. package/lib/module/Charts/graphUtils.js.map +1 -1
  53. package/lib/module/Charts/index.js +5 -2
  54. package/lib/module/Charts/index.js.map +1 -1
  55. package/lib/module/Charts/maths.js +101 -14
  56. package/lib/module/Charts/maths.js.map +1 -1
  57. package/lib/typescript/commonjs/src/Charts/BottomAxis/AxisLine.d.ts +1 -1
  58. package/lib/typescript/commonjs/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts +26 -3
  60. package/lib/typescript/commonjs/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts +16 -3
  62. package/lib/typescript/commonjs/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/src/Charts/BottomAxis/index.d.ts +1 -1
  64. package/lib/typescript/commonjs/src/Charts/BottomAxis/index.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/src/Charts/Cursor.d.ts +5 -2
  66. package/lib/typescript/commonjs/src/Charts/Cursor.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/src/Charts/Dot.d.ts +22 -0
  68. package/lib/typescript/commonjs/src/Charts/Dot.d.ts.map +1 -0
  69. package/lib/typescript/commonjs/src/Charts/Dots.d.ts +28 -0
  70. package/lib/typescript/commonjs/src/Charts/Dots.d.ts.map +1 -0
  71. package/lib/typescript/commonjs/src/Charts/Linechart/index.d.ts +1 -1
  72. package/lib/typescript/commonjs/src/Charts/Linechart/index.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/src/Charts/YAxis.d.ts +21 -0
  74. package/lib/typescript/commonjs/src/Charts/YAxis.d.ts.map +1 -0
  75. package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts +2 -2
  76. package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/index.d.ts +1 -1
  78. package/lib/typescript/commonjs/src/Charts/ZoomableLinechart/index.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/src/Charts/gesture.d.ts +6 -0
  80. package/lib/typescript/commonjs/src/Charts/gesture.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/src/Charts/graphUtils.d.ts +1 -1
  82. package/lib/typescript/commonjs/src/Charts/graphUtils.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/src/Charts/index.d.ts +9 -3
  84. package/lib/typescript/commonjs/src/Charts/index.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/src/Charts/maths.d.ts +15 -1
  86. package/lib/typescript/commonjs/src/Charts/maths.d.ts.map +1 -1
  87. package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts +1 -1
  88. package/lib/typescript/module/src/Charts/BottomAxis/AxisLine.d.ts.map +1 -1
  89. package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts +26 -3
  90. package/lib/typescript/module/src/Charts/BottomAxis/BottomAxis.d.ts.map +1 -1
  91. package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts +16 -3
  92. package/lib/typescript/module/src/Charts/BottomAxis/Tick.d.ts.map +1 -1
  93. package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts +1 -1
  94. package/lib/typescript/module/src/Charts/BottomAxis/index.d.ts.map +1 -1
  95. package/lib/typescript/module/src/Charts/Cursor.d.ts +5 -2
  96. package/lib/typescript/module/src/Charts/Cursor.d.ts.map +1 -1
  97. package/lib/typescript/module/src/Charts/Dot.d.ts +22 -0
  98. package/lib/typescript/module/src/Charts/Dot.d.ts.map +1 -0
  99. package/lib/typescript/module/src/Charts/Dots.d.ts +28 -0
  100. package/lib/typescript/module/src/Charts/Dots.d.ts.map +1 -0
  101. package/lib/typescript/module/src/Charts/Linechart/index.d.ts +1 -1
  102. package/lib/typescript/module/src/Charts/Linechart/index.d.ts.map +1 -1
  103. package/lib/typescript/module/src/Charts/YAxis.d.ts +21 -0
  104. package/lib/typescript/module/src/Charts/YAxis.d.ts.map +1 -0
  105. package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts +2 -2
  106. package/lib/typescript/module/src/Charts/ZoomableLinechart/ScalablePath.d.ts.map +1 -1
  107. package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts +1 -1
  108. package/lib/typescript/module/src/Charts/ZoomableLinechart/index.d.ts.map +1 -1
  109. package/lib/typescript/module/src/Charts/gesture.d.ts +6 -0
  110. package/lib/typescript/module/src/Charts/gesture.d.ts.map +1 -1
  111. package/lib/typescript/module/src/Charts/graphUtils.d.ts +1 -1
  112. package/lib/typescript/module/src/Charts/graphUtils.d.ts.map +1 -1
  113. package/lib/typescript/module/src/Charts/index.d.ts +9 -3
  114. package/lib/typescript/module/src/Charts/index.d.ts.map +1 -1
  115. package/lib/typescript/module/src/Charts/maths.d.ts +15 -1
  116. package/lib/typescript/module/src/Charts/maths.d.ts.map +1 -1
  117. package/package.json +5 -5
  118. package/src/Charts/BottomAxis/AxisLine.tsx +1 -1
  119. package/src/Charts/BottomAxis/BottomAxis.tsx +100 -19
  120. package/src/Charts/BottomAxis/Tick.tsx +61 -15
  121. package/src/Charts/BottomAxis/index.tsx +5 -1
  122. package/src/Charts/Cursor.tsx +38 -10
  123. package/src/Charts/Dot.tsx +64 -0
  124. package/src/Charts/Dots.tsx +96 -0
  125. package/src/Charts/Linechart/index.tsx +1 -1
  126. package/src/Charts/YAxis.tsx +103 -0
  127. package/src/Charts/ZoomableLinechart/ScalablePath.tsx +8 -9
  128. package/src/Charts/ZoomableLinechart/index.tsx +1 -1
  129. package/src/Charts/gesture.ts +132 -71
  130. package/src/Charts/graphUtils.ts +78 -16
  131. package/src/Charts/index.tsx +9 -0
  132. package/src/Charts/maths.ts +107 -16
package/README.md CHANGED
@@ -9,7 +9,7 @@ zoomable/pannable variant, a scalable bottom axis and a cursor, all driven from
9
9
 
10
10
  ```sh
11
11
  yarn add @obitrain/charts
12
- yarn add @shopify/react-native-skia react-native-reanimated react-native-worklets react-native-gesture-handler d3-scale d3-shape
12
+ yarn add react-native-skia react-native-reanimated react-native-worklets react-native-gesture-handler d3-scale d3-shape
13
13
  ```
14
14
 
15
15
  `react-native-worklets` is only needed with Reanimated 4 (it is an optional peer dependency).
@@ -18,7 +18,7 @@ yarn add @shopify/react-native-skia react-native-reanimated react-native-worklet
18
18
 
19
19
  | Peer dependency | Supported versions |
20
20
  | ---------------------------- | ----------------------------------------------------- |
21
- | `@shopify/react-native-skia` | `>=2.0.0 <3.0.0` |
21
+ | `react-native-skia` | `>=3.0.4` (Android minSdk 26) |
22
22
  | `react-native-reanimated` | 3.x or 4.x |
23
23
  | `react-native-worklets` | `>=0.10.0` (optional, required with Reanimated 4) |
24
24
  | `react-native-gesture-handler` | 2.x or 3.x |
@@ -155,8 +155,10 @@ From `example/src/screens/DotsScreen`.
155
155
 
156
156
  ![Advanced chart](./static/advanced-chart.gif)
157
157
 
158
- `AxisLine` + `Tick` + a Y axis and dots composed in a single Skia canvas, with a shared scale driven
159
- by gestures or sliders. From `example/src/screens/AdvancedChartScreen`.
158
+ Two series with hollow markers (ring and diamond), pinch-to-zoom with live-clamped panning, period
159
+ presets, and a light/dark themed time axis whose bucketing and labels adapt to the visible window
160
+ (years → months → weeks → days). See the [implementation notes](./docs/advanced-chart.md).
161
+ From `example/src/screens/AdvancedChartScreen`.
160
162
 
161
163
  ## Example app
162
164
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.AxisLine = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
7
+ var _reactNativeSkia = require("react-native-skia");
8
8
  var _reactNative = require("react-native");
9
9
  var _reactNativeReanimated = require("react-native-reanimated");
10
10
  var _gesture = require("../gesture.js");
@@ -4,41 +4,81 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BottomAxis = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _react = require("react");
8
9
  var _AxisLine = require("./AxisLine.js");
9
10
  var _Tick = require("./Tick.js");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
- // ChartUtilsScreen.tsx
12
+ /** A tick at an explicit position in graph space, as returned by a d3 scale. */
12
13
 
13
14
  const BottomAxis = function (props) {
14
15
  const {
15
16
  labels,
17
+ ticks,
16
18
  scale,
17
19
  focalX,
18
20
  offsetX,
19
21
  style,
20
22
  width,
21
- font
23
+ font,
24
+ offsetY = 0,
25
+ standalone = true,
26
+ showAxisLine = true,
27
+ color,
28
+ labelColor,
29
+ tickLength,
30
+ strokeWidth,
31
+ dash,
32
+ labelAlign,
33
+ labelGap,
34
+ showLabels
22
35
  } = props;
23
- const offsetY = props.offsetY ?? 0;
24
- const tickInterval = labels.length > 1 ? width / (labels.length - 1) : 0;
25
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Canvas, {
26
- style: style,
27
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AxisLine.AxisLine, {
36
+ const items = (0, _react.useMemo)(() => {
37
+ if (ticks !== undefined) return ticks;
38
+ if (labels === undefined) return [];
39
+ const interval = labels.length > 1 ? width / (labels.length - 1) : 0;
40
+ return labels.map((label, i) => ({
41
+ x: interval * i,
42
+ label
43
+ }));
44
+ }, [ticks, labels, width]);
45
+
46
+ // Callers naturally write `dash={[3, 4]}`; keying the memo on the values
47
+ // keeps one reference so the memoized Ticks are not rebuilt every render
48
+ const dashStart = dash?.[0];
49
+ const dashEnd = dash?.[1];
50
+ const dashIntervals = (0, _react.useMemo)(() => dashStart === undefined || dashEnd === undefined ? undefined : [dashStart, dashEnd], [dashStart, dashEnd]);
51
+ const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
52
+ children: [showAxisLine ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AxisLine.AxisLine, {
28
53
  width,
29
54
  offsetY,
30
55
  focalX,
31
56
  scale,
32
- offsetX
33
- }), labels.map((_label, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tick.Tick, {
34
- label: _label,
35
- initPosition: tickInterval * i,
57
+ offsetX,
58
+ color,
59
+ strokeWidth
60
+ }) : null, items.map(tick => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tick.Tick, {
61
+ initPosition: tick.x,
62
+ label: tick.label,
63
+ dash: dashIntervals,
36
64
  offsetX,
37
65
  offsetY,
38
66
  focalX,
39
67
  scale,
40
- font
41
- }, i))]
68
+ font,
69
+ color,
70
+ labelColor,
71
+ tickLength,
72
+ strokeWidth,
73
+ labelAlign,
74
+ labelGap,
75
+ showLabel: showLabels
76
+ }, `${tick.x}:${tick.label}`))]
77
+ });
78
+ if (!standalone) return content;
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Canvas, {
80
+ style: style,
81
+ children: content
42
82
  });
43
83
  };
44
84
  exports.BottomAxis = BottomAxis;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSkia","require","_AxisLine","_Tick","_jsxRuntime","BottomAxis","props","labels","scale","focalX","offsetX","style","width","font","offsetY","tickInterval","length","jsxs","Canvas","children","jsx","AxisLine","map","_label","i","Tick","label","initPosition","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/BottomAxis.tsx"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA8B,IAAAG,WAAA,GAAAH,OAAA;AAN9B;;AAoBA,MAAMI,UAA+B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACvD,MAAM;IAAEC,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGP,KAAK;EACpE,MAAMQ,OAAO,GAAGR,KAAK,CAACQ,OAAO,IAAI,CAAC;EAClC,MAAMC,YAAY,GAAGR,MAAM,CAACS,MAAM,GAAG,CAAC,GAAGJ,KAAK,IAAIL,MAAM,CAACS,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;EAExE,oBACE,IAAAZ,WAAA,CAAAa,IAAA,EAACjB,gBAAA,CAAAkB,MAAM;IAACP,KAAK,EAAEA,KAAM;IAAAQ,QAAA,gBACnB,IAAAf,WAAA,CAAAgB,GAAA,EAAClB,SAAA,CAAAmB,QAAQ;MAAOT,KAAK;MAAEE,OAAO;MAAEL,MAAM;MAAED,KAAK;MAAEE;IAAO,CAAK,CAAC,EAC3DH,MAAM,CAACe,GAAG,CAAC,CAACC,MAAM,EAAEC,CAAC,kBACpB,IAAApB,WAAA,CAAAgB,GAAA,EAACjB,KAAA,CAAAsB,IAAI;MAEHC,KAAK,EAAEH,MAAO;MACdI,YAAY,EAAEZ,YAAY,GAAGS,CAAE;MACzBd,OAAO;MAAEI,OAAO;MAAEL,MAAM;MAAED,KAAK;MAAEK;IAAI,GAHtCW,CAIN,CACF,CAAC;EAAA,CACI,CAAC;AAEb,CAAC;AAACI,OAAA,CAAAvB,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSkia","require","_react","_AxisLine","_Tick","_jsxRuntime","BottomAxis","props","labels","ticks","scale","focalX","offsetX","style","width","font","offsetY","standalone","showAxisLine","color","labelColor","tickLength","strokeWidth","dash","labelAlign","labelGap","showLabels","items","useMemo","undefined","interval","length","map","label","i","x","dashStart","dashEnd","dashIntervals","content","jsxs","Fragment","children","jsx","AxisLine","tick","Tick","initPosition","showLabel","Canvas","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/BottomAxis.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAA8B,IAAAI,WAAA,GAAAJ,OAAA;AAE9B;;AAgCA,MAAMK,UAA+B,GAAG,SAAAA,CAAUC,KAAK,EAAE;EACvD,MAAM;IACJC,MAAM;IACNC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC,KAAK;IACLC,KAAK;IACLC,IAAI;IACJC,OAAO,GAAG,CAAC;IACXC,UAAU,GAAG,IAAI;IACjBC,YAAY,GAAG,IAAI;IACnBC,KAAK;IACLC,UAAU;IACVC,UAAU;IACVC,WAAW;IACXC,IAAI;IACJC,UAAU;IACVC,QAAQ;IACRC;EACF,CAAC,GAAGnB,KAAK;EAET,MAAMoB,KAAK,GAAG,IAAAC,cAAO,EAAa,MAAM;IACtC,IAAInB,KAAK,KAAKoB,SAAS,EAAE,OAAOpB,KAAK;IACrC,IAAID,MAAM,KAAKqB,SAAS,EAAE,OAAO,EAAE;IACnC,MAAMC,QAAQ,GAAGtB,MAAM,CAACuB,MAAM,GAAG,CAAC,GAAGjB,KAAK,IAAIN,MAAM,CAACuB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;IACpE,OAAOvB,MAAM,CAACwB,GAAG,CAAC,CAACC,KAAK,EAAEC,CAAC,MAAM;MAAEC,CAAC,EAAEL,QAAQ,GAAGI,CAAC;MAAED;IAAM,CAAC,CAAC,CAAC;EAC/D,CAAC,EAAE,CAACxB,KAAK,EAAED,MAAM,EAAEM,KAAK,CAAC,CAAC;;EAE1B;EACA;EACA,MAAMsB,SAAS,GAAGb,IAAI,GAAG,CAAC,CAAC;EAC3B,MAAMc,OAAO,GAAGd,IAAI,GAAG,CAAC,CAAC;EACzB,MAAMe,aAAa,GAAG,IAAAV,cAAO,EAC3B,MACEQ,SAAS,KAAKP,SAAS,IAAIQ,OAAO,KAAKR,SAAS,GAC5CA,SAAS,GACR,CAACO,SAAS,EAAEC,OAAO,CAAsB,EAChD,CAACD,SAAS,EAAEC,OAAO,CACrB,CAAC;EAED,MAAME,OAAO,gBACX,IAAAlC,WAAA,CAAAmC,IAAA,EAAAnC,WAAA,CAAAoC,QAAA;IAAAC,QAAA,GACGxB,YAAY,gBACX,IAAAb,WAAA,CAAAsC,GAAA,EAACxC,SAAA,CAAAyC,QAAQ;MACD9B,KAAK;MAAEE,OAAO;MAAEL,MAAM;MAAED,KAAK;MAAEE,OAAO;MAAEO,KAAK;MAAEG;IAAW,CACjE,CAAC,GACA,IAAI,EACPK,KAAK,CAACK,GAAG,CAAEa,IAAI,iBACd,IAAAxC,WAAA,CAAAsC,GAAA,EAACvC,KAAA,CAAA0C,IAAI;MAEHC,YAAY,EAAEF,IAAI,CAACV,CAAE;MACrBF,KAAK,EAAEY,IAAI,CAACZ,KAAM;MAClBV,IAAI,EAAEe,aAAc;MAElB1B,OAAO;MACPI,OAAO;MACPL,MAAM;MACND,KAAK;MACLK,IAAI;MACJI,KAAK;MACLC,UAAU;MACVC,UAAU;MACVC,WAAW;MACXE,UAAU;MACVC,QAAQ;MAEVuB,SAAS,EAAEtB;IAAW,GAjBjB,GAAGmB,IAAI,CAACV,CAAC,IAAIU,IAAI,CAACZ,KAAK,EAkB7B,CACF,CAAC;EAAA,CACF,CACH;EAED,IAAI,CAAChB,UAAU,EAAE,OAAOsB,OAAO;EAC/B,oBAAO,IAAAlC,WAAA,CAAAsC,GAAA,EAAC3C,gBAAA,CAAAiD,MAAM;IAACpC,KAAK,EAAEA,KAAM;IAAA6B,QAAA,EAAEH;EAAO,CAAS,CAAC;AACjD,CAAC;AAACW,OAAA,CAAA5C,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -4,40 +4,56 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Tick = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
8
- var _react = _interopRequireDefault(require("react"));
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _react = require("react");
9
9
  var _reactNativeReanimated = require("react-native-reanimated");
10
10
  var _gesture = require("../gesture.js");
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- const Tick = props => {
12
+ const TickComponent = function (props) {
14
13
  const {
15
14
  label,
16
15
  scale,
17
16
  focalX,
18
17
  offsetX,
19
18
  initPosition,
20
- font
19
+ font,
20
+ color = 'black',
21
+ labelColor,
22
+ tickLength = 10,
23
+ strokeWidth,
24
+ dash,
25
+ showLabel = true,
26
+ labelAlign = 'center',
27
+ labelGap = 6
21
28
  } = props;
22
29
  const offsetY = props.offsetY ?? 0;
23
30
  const transform = (0, _reactNativeReanimated.useDerivedValue)(() => [{
24
31
  translateX: (0, _gesture.getPositionWl)(initPosition, focalX.value, scale.value, offsetX.value)
25
32
  }]);
26
- const width = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
33
+ const width = (0, _react.useMemo)(() => font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0), [font, label]);
34
+ const labelX = labelAlign === 'left' ? labelGap : -width / 2;
27
35
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
28
36
  transform: transform,
29
37
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
30
- color: "black",
38
+ color: color,
39
+ strokeWidth: strokeWidth,
31
40
  p1: (0, _reactNativeSkia.vec)(0, offsetY),
32
- p2: (0, _reactNativeSkia.vec)(0, offsetY + 10)
33
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Text, {
41
+ p2: (0, _reactNativeSkia.vec)(0, offsetY + tickLength),
42
+ children: dash !== undefined ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.DashPathEffect, {
43
+ intervals: dash
44
+ }) : null
45
+ }), showLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Text, {
34
46
  text: label,
35
- color: "black",
36
- x: -width / 2,
47
+ color: labelColor ?? color,
48
+ x: labelX,
37
49
  y: offsetY + 23,
38
50
  font: font
39
- })]
51
+ }) : null]
40
52
  });
41
53
  };
42
- exports.Tick = Tick;
54
+
55
+ // Memoized: zoom/pan flows through shared values, so a Tick only needs to
56
+ // re-render when its label or base position changes
57
+ const Tick = exports.Tick = /*#__PURE__*/(0, _react.memo)(TickComponent);
58
+ Tick.displayName = 'Tick';
43
59
  //# sourceMappingURL=Tick.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSkia","require","_react","_interopRequireDefault","_reactNativeReanimated","_gesture","_jsxRuntime","e","__esModule","default","Tick","props","label","scale","focalX","offsetX","initPosition","font","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","getGlyphWidths","getGlyphIDs","reduce","a","b","jsxs","Group","children","jsx","Line","color","p1","vec","p2","Text","text","x","y","exports"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAA2C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAYpC,MAAMG,IAAyB,GAAIC,KAAK,IAAK;EAClD,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,YAAY;IAAEC;EAAK,CAAC,GAAGN,KAAK;EACnE,MAAMO,OAAO,GAAGP,KAAK,CAACO,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAAC,MAAM,CACtC;IACEC,UAAU,EAAE,IAAAC,sBAAa,EACvBN,YAAY,EACZF,MAAM,CAACS,KAAK,EACZV,KAAK,CAACU,KAAK,EACXR,OAAO,CAACQ,KACV;EACF,CAAC,CACF,CAAC;EACF,MAAMC,KAAK,GAAGP,IAAI,CACfQ,cAAc,CAACR,IAAI,CAACS,WAAW,CAACd,KAAK,CAAC,CAAC,CACvCe,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC;EAE7B,oBACE,IAAAvB,WAAA,CAAAwB,IAAA,EAAC9B,gBAAA,CAAA+B,KAAK;IAACZ,SAAS,EAAEA,SAAU;IAAAa,QAAA,gBAC1B,IAAA1B,WAAA,CAAA2B,GAAA,EAACjC,gBAAA,CAAAkC,IAAI;MAACC,KAAK,EAAC,OAAO;MAACC,EAAE,EAAE,IAAAC,oBAAG,EAAC,CAAC,EAAEnB,OAAO,CAAE;MAACoB,EAAE,EAAE,IAAAD,oBAAG,EAAC,CAAC,EAAEnB,OAAO,GAAG,EAAE;IAAE,CAAE,CAAC,eACrE,IAAAZ,WAAA,CAAA2B,GAAA,EAACjC,gBAAA,CAAAuC,IAAI;MACHC,IAAI,EAAE5B,KAAM;MACZuB,KAAK,EAAC,OAAO;MACbM,CAAC,EAAE,CAACjB,KAAK,GAAG,CAAE;MACdkB,CAAC,EAAExB,OAAO,GAAG,EAAG;MAChBD,IAAI,EAAEA;IAAK,CACZ,CAAC;EAAA,CACG,CAAC;AAEZ,CAAC;AAAC0B,OAAA,CAAAjC,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_gesture","_jsxRuntime","TickComponent","props","label","scale","focalX","offsetX","initPosition","font","color","labelColor","tickLength","strokeWidth","dash","showLabel","labelAlign","labelGap","offsetY","transform","useDerivedValue","translateX","getPositionWl","value","width","useMemo","getGlyphWidths","getGlyphIDs","reduce","a","b","labelX","jsxs","Group","children","jsx","Line","p1","vec","p2","undefined","DashPathEffect","intervals","Text","text","x","y","Tick","exports","memo","displayName"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/Tick.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAwB3C,MAAMK,aAAa,GAAG,SAAAA,CAAUC,KAAgB,EAAE;EAChD,MAAM;IACJC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,IAAI;IACJC,KAAK,GAAG,OAAO;IACfC,UAAU;IACVC,UAAU,GAAG,EAAE;IACfC,WAAW;IACXC,IAAI;IACJC,SAAS,GAAG,IAAI;IAChBC,UAAU,GAAG,QAAQ;IACrBC,QAAQ,GAAG;EACb,CAAC,GAAGd,KAAK;EACT,MAAMe,OAAO,GAAGf,KAAK,CAACe,OAAO,IAAI,CAAC;EAClC,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAAC,MAAM,CACtC;IACEC,UAAU,EAAE,IAAAC,sBAAa,EACvBd,YAAY,EACZF,MAAM,CAACiB,KAAK,EACZlB,KAAK,CAACkB,KAAK,EACXhB,OAAO,CAACgB,KACV;EACF,CAAC,CACF,CAAC;EACF,MAAMC,KAAK,GAAG,IAAAC,cAAO,EACnB,MACEhB,IAAI,CAACiB,cAAc,CAACjB,IAAI,CAACkB,WAAW,CAACvB,KAAK,CAAC,CAAC,CAACwB,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC,EACzE,CAACrB,IAAI,EAAEL,KAAK,CACd,CAAC;EACD,MAAM2B,MAAM,GAAGf,UAAU,KAAK,MAAM,GAAGC,QAAQ,GAAG,CAACO,KAAK,GAAG,CAAC;EAE5D,oBACE,IAAAvB,WAAA,CAAA+B,IAAA,EAACpC,gBAAA,CAAAqC,KAAK;IAACd,SAAS,EAAEA,SAAU;IAAAe,QAAA,gBAC1B,IAAAjC,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAAwC,IAAI;MACH1B,KAAK,EAAEA,KAAM;MACbG,WAAW,EAAEA,WAAY;MACzBwB,EAAE,EAAE,IAAAC,oBAAG,EAAC,CAAC,EAAEpB,OAAO,CAAE;MACpBqB,EAAE,EAAE,IAAAD,oBAAG,EAAC,CAAC,EAAEpB,OAAO,GAAGN,UAAU,CAAE;MAAAsB,QAAA,EAEhCpB,IAAI,KAAK0B,SAAS,gBAAG,IAAAvC,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAA6C,cAAc;QAACC,SAAS,EAAE5B;MAAK,CAAE,CAAC,GAAG;IAAI,CAC5D,CAAC,EACNC,SAAS,gBACR,IAAAd,WAAA,CAAAkC,GAAA,EAACvC,gBAAA,CAAA+C,IAAI;MACHC,IAAI,EAAExC,KAAM;MACZM,KAAK,EAAEC,UAAU,IAAID,KAAM;MAC3BmC,CAAC,EAAEd,MAAO;MACVe,CAAC,EAAE5B,OAAO,GAAG,EAAG;MAChBT,IAAI,EAAEA;IAAK,CACZ,CAAC,GACA,IAAI;EAAA,CACH,CAAC;AAEZ,CAAC;;AAED;AACA;AACO,MAAMsC,IAAI,GAAAC,OAAA,CAAAD,IAAA,gBAAG,IAAAE,WAAI,EAAC/C,aAAa,CAAC;AACvC6C,IAAI,CAACG,WAAW,GAAG,MAAM","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_AxisLine","require","_BottomAxis","_Tick"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AxisLine","require","_BottomAxis","_Tick"],"sourceRoot":"../../../../src","sources":["Charts/BottomAxis/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAKA,IAAAE,KAAA,GAAAF,OAAA","ignoreList":[]}
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Cursor = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _react = require("react");
8
9
  var _reactNativeReanimated = require("react-native-reanimated");
9
10
  var _maths = require("./maths.js");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
@@ -13,19 +14,28 @@ const Cursor = function ({
13
14
  commands,
14
15
  positionX,
15
16
  color,
17
+ strokeColor,
18
+ strokeWidth = 2,
16
19
  currentValue,
17
20
  translateY,
18
21
  size = CURSOR_SIZE
19
22
  }) {
20
- if (currentValue !== undefined && translateY !== undefined) {
21
- console.warn('currentValue has no effect when translateY is set');
22
- }
23
- const derivedTranslateY = (0, _reactNativeReanimated.useDerivedValue)(() => {
23
+ const conflictingProps = currentValue !== undefined && translateY !== undefined;
24
+ (0, _react.useEffect)(() => {
25
+ if (conflictingProps) console.warn('currentValue has no effect when translateY is set');
26
+ }, [conflictingProps]);
27
+
28
+ // Normalized once per path change, not on every cursor move
29
+ const beziers = (0, _reactNativeReanimated.useDerivedValue)(() => {
24
30
  const _commands = commands?.value;
25
- if (_commands === undefined) {
31
+ return _commands === undefined ? undefined : (0, _maths.commandsToBezier)(_commands);
32
+ });
33
+ const derivedTranslateY = (0, _reactNativeReanimated.useDerivedValue)(() => {
34
+ const _beziers = beziers.value;
35
+ if (_beziers === undefined) {
26
36
  return 0;
27
37
  }
28
- const _value = (0, _maths.getYForX)(_commands, positionX.value) ?? 0;
38
+ const _value = (0, _maths.getYForXOnBeziers)(_beziers, positionX.value) ?? 0;
29
39
  if (translateY === undefined && currentValue !== undefined) {
30
40
  currentValue.value = _value;
31
41
  }
@@ -37,12 +47,22 @@ const Cursor = function ({
37
47
  }, {
38
48
  translateY: _translateY.value ?? 0
39
49
  }]);
40
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
41
- transform: transform,
42
- cx: 0,
43
- cy: 0,
44
- r: size,
45
- color: color
50
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
51
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
52
+ transform: transform,
53
+ cx: 0,
54
+ cy: 0,
55
+ r: size,
56
+ color: color
57
+ }), strokeColor !== undefined ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
58
+ transform: transform,
59
+ cx: 0,
60
+ cy: 0,
61
+ r: size,
62
+ color: strokeColor,
63
+ style: "stroke",
64
+ strokeWidth: strokeWidth
65
+ }) : null]
46
66
  });
47
67
  };
48
68
  exports.Cursor = Cursor;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","currentValue","translateY","size","undefined","console","warn","derivedTranslateY","useDerivedValue","_commands","value","_value","getYForX","_translateY","transform","translateX","jsx","Circle","cx","cy","r","exports"],"sourceRoot":"../../../src","sources":["Charts/Cursor.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAAmC,IAAAG,WAAA,GAAAH,OAAA;AAEnC,MAAMI,WAAW,GAAG,EAAE;AAWtB,MAAMC,MAAuB,GAAG,SAAAA,CAAU;EACxCC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,YAAY;EACZC,UAAU;EACVC,IAAI,GAAGP;AACT,CAAC,EAAE;EACD,IAAIK,YAAY,KAAKG,SAAS,IAAIF,UAAU,KAAKE,SAAS,EAAE;IAC1DC,OAAO,CAACC,IAAI,CAAC,mDAAmD,CAAC;EACnE;EAEA,MAAMC,iBAAiB,GAAG,IAAAC,sCAAe,EAAC,MAAM;IAC9C,MAAMC,SAAS,GAAGX,QAAQ,EAAEY,KAAK;IACjC,IAAID,SAAS,KAAKL,SAAS,EAAE;MAC3B,OAAO,CAAC;IACV;IACA,MAAMO,MAAM,GAAG,IAAAC,eAAQ,EAACH,SAAS,EAAEV,SAAS,CAACW,KAAK,CAAC,IAAI,CAAC;IACxD,IAAIR,UAAU,KAAKE,SAAS,IAAIH,YAAY,KAAKG,SAAS,EAAE;MAC1DH,YAAY,CAACS,KAAK,GAAGC,MAAM;IAC7B;IACA,OAAOA,MAAM;EACf,CAAC,CAAC;EAEF,MAAME,WAAW,GAAGX,UAAU,IAAIK,iBAAiB;EAEnD,MAAMO,SAAS,GAAG,IAAAN,sCAAe,EAAC,MAAM,CACtC;IAAEO,UAAU,EAAEhB,SAAS,CAACW;EAAM,CAAC,EAC/B;IAAER,UAAU,EAAEW,WAAW,CAACH,KAAK,IAAI;EAAE,CAAC,CACvC,CAAC;EACF,oBAAO,IAAAf,WAAA,CAAAqB,GAAA,EAACzB,gBAAA,CAAA0B,MAAM;IAACH,SAAS,EAAEA,SAAU;IAACI,EAAE,EAAE,CAAE;IAACC,EAAE,EAAE,CAAE;IAACC,CAAC,EAAEjB,IAAK;IAACH,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC9E,CAAC;AAACqB,OAAA,CAAAxB,MAAA,GAAAA,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_maths","_jsxRuntime","CURSOR_SIZE","Cursor","commands","positionX","color","strokeColor","strokeWidth","currentValue","translateY","size","conflictingProps","undefined","useEffect","console","warn","beziers","useDerivedValue","_commands","value","commandsToBezier","derivedTranslateY","_beziers","_value","getYForXOnBeziers","_translateY","transform","translateX","jsxs","Fragment","children","jsx","Circle","cx","cy","r","style","exports"],"sourceRoot":"../../../src","sources":["Charts/Cursor.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAE9D,MAAMK,WAAW,GAAG,EAAE;AActB,MAAMC,MAAuB,GAAG,SAAAA,CAAU;EACxCC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,WAAW;EACXC,WAAW,GAAG,CAAC;EACfC,YAAY;EACZC,UAAU;EACVC,IAAI,GAAGT;AACT,CAAC,EAAE;EACD,MAAMU,gBAAgB,GAAGH,YAAY,KAAKI,SAAS,IAAIH,UAAU,KAAKG,SAAS;EAC/E,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIF,gBAAgB,EAClBG,OAAO,CAACC,IAAI,CAAC,mDAAmD,CAAC;EACrE,CAAC,EAAE,CAACJ,gBAAgB,CAAC,CAAC;;EAEtB;EACA,MAAMK,OAAO,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACpC,MAAMC,SAAS,GAAGf,QAAQ,EAAEgB,KAAK;IACjC,OAAOD,SAAS,KAAKN,SAAS,GAAGA,SAAS,GAAG,IAAAQ,uBAAgB,EAACF,SAAS,CAAC;EAC1E,CAAC,CAAC;EAEF,MAAMG,iBAAiB,GAAG,IAAAJ,sCAAe,EAAC,MAAM;IAC9C,MAAMK,QAAQ,GAAGN,OAAO,CAACG,KAAK;IAC9B,IAAIG,QAAQ,KAAKV,SAAS,EAAE;MAC1B,OAAO,CAAC;IACV;IACA,MAAMW,MAAM,GAAG,IAAAC,wBAAiB,EAACF,QAAQ,EAAElB,SAAS,CAACe,KAAK,CAAC,IAAI,CAAC;IAChE,IAAIV,UAAU,KAAKG,SAAS,IAAIJ,YAAY,KAAKI,SAAS,EAAE;MAC1DJ,YAAY,CAACW,KAAK,GAAGI,MAAM;IAC7B;IACA,OAAOA,MAAM;EACf,CAAC,CAAC;EAEF,MAAME,WAAW,GAAGhB,UAAU,IAAIY,iBAAiB;EAEnD,MAAMK,SAAS,GAAG,IAAAT,sCAAe,EAAC,MAAM,CACtC;IAAEU,UAAU,EAAEvB,SAAS,CAACe;EAAM,CAAC,EAC/B;IAAEV,UAAU,EAAEgB,WAAW,CAACN,KAAK,IAAI;EAAE,CAAC,CACvC,CAAC;EACF,oBACE,IAAAnB,WAAA,CAAA4B,IAAA,EAAA5B,WAAA,CAAA6B,QAAA;IAAAC,QAAA,gBACE,IAAA9B,WAAA,CAAA+B,GAAA,EAACpC,gBAAA,CAAAqC,MAAM;MAACN,SAAS,EAAEA,SAAU;MAACO,EAAE,EAAE,CAAE;MAACC,EAAE,EAAE,CAAE;MAACC,CAAC,EAAEzB,IAAK;MAACL,KAAK,EAAEA;IAAM,CAAE,CAAC,EACpEC,WAAW,KAAKM,SAAS,gBACxB,IAAAZ,WAAA,CAAA+B,GAAA,EAACpC,gBAAA,CAAAqC,MAAM;MACLN,SAAS,EAAEA,SAAU;MACrBO,EAAE,EAAE,CAAE;MACNC,EAAE,EAAE,CAAE;MACNC,CAAC,EAAEzB,IAAK;MACRL,KAAK,EAAEC,WAAY;MACnB8B,KAAK,EAAC,QAAQ;MACd7B,WAAW,EAAEA;IAAY,CAC1B,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC;AAAC8B,OAAA,CAAAnC,MAAA,GAAAA,MAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dot = void 0;
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _react = require("react");
9
+ var _reactNativeReanimated = require("react-native-reanimated");
10
+ var _gesture = require("./gesture.js");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function DotComponent(props) {
13
+ const {
14
+ x,
15
+ y,
16
+ opacity = 1,
17
+ r = 4,
18
+ color = 'black',
19
+ fillColor,
20
+ strokeWidth = 2,
21
+ scale,
22
+ focalX,
23
+ offsetX
24
+ } = props;
25
+ const cx = (0, _reactNativeReanimated.useDerivedValue)(() => {
26
+ const _x = typeof x === 'number' ? x : x.value;
27
+ if (scale === undefined || focalX === undefined || offsetX === undefined) return _x;
28
+ return (0, _gesture.getPositionWl)(_x, focalX.value, scale.value, offsetX.value);
29
+ });
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
31
+ opacity: opacity,
32
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
33
+ cx: cx,
34
+ cy: y,
35
+ r: r,
36
+ color: fillColor ?? color
37
+ }), fillColor !== undefined ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Circle, {
38
+ cx: cx,
39
+ cy: y,
40
+ r: r,
41
+ style: "stroke",
42
+ color: color,
43
+ strokeWidth: strokeWidth
44
+ }) : null]
45
+ });
46
+ }
47
+
48
+ // Memoized: charts render many dots and the position updates flow through
49
+ // shared values, so parent re-renders don't need to reach them
50
+ const Dot = exports.Dot = /*#__PURE__*/(0, _react.memo)(DotComponent);
51
+ //# sourceMappingURL=Dot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeSkia","require","_react","_reactNativeReanimated","_gesture","_jsxRuntime","DotComponent","props","x","y","opacity","r","color","fillColor","strokeWidth","scale","focalX","offsetX","cx","useDerivedValue","_x","value","undefined","getPositionWl","jsxs","Group","children","jsx","Circle","cy","style","Dot","exports","memo"],"sourceRoot":"../../../src","sources":["Charts/Dot.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA0C,IAAAI,WAAA,GAAAJ,OAAA;AAoB1C,SAASK,YAAYA,CAACC,KAAe,EAAE;EACrC,MAAM;IACJC,CAAC;IACDC,CAAC;IACDC,OAAO,GAAG,CAAC;IACXC,CAAC,GAAG,CAAC;IACLC,KAAK,GAAG,OAAO;IACfC,SAAS;IACTC,WAAW,GAAG,CAAC;IACfC,KAAK;IACLC,MAAM;IACNC;EACF,CAAC,GAAGV,KAAK;EAET,MAAMW,EAAE,GAAG,IAAAC,sCAAe,EAAC,MAAM;IAC/B,MAAMC,EAAE,GAAG,OAAOZ,CAAC,KAAK,QAAQ,GAAGA,CAAC,GAAGA,CAAC,CAACa,KAAK;IAC9C,IAAIN,KAAK,KAAKO,SAAS,IAAIN,MAAM,KAAKM,SAAS,IAAIL,OAAO,KAAKK,SAAS,EACtE,OAAOF,EAAE;IACX,OAAO,IAAAG,sBAAa,EAACH,EAAE,EAAEJ,MAAM,CAACK,KAAK,EAAEN,KAAK,CAACM,KAAK,EAAEJ,OAAO,CAACI,KAAK,CAAC;EACpE,CAAC,CAAC;EAEF,oBACE,IAAAhB,WAAA,CAAAmB,IAAA,EAACxB,gBAAA,CAAAyB,KAAK;IAACf,OAAO,EAAEA,OAAQ;IAAAgB,QAAA,gBACtB,IAAArB,WAAA,CAAAsB,GAAA,EAAC3B,gBAAA,CAAA4B,MAAM;MAACV,EAAE,EAAEA,EAAG;MAACW,EAAE,EAAEpB,CAAE;MAACE,CAAC,EAAEA,CAAE;MAACC,KAAK,EAAEC,SAAS,IAAID;IAAM,CAAE,CAAC,EACzDC,SAAS,KAAKS,SAAS,gBACtB,IAAAjB,WAAA,CAAAsB,GAAA,EAAC3B,gBAAA,CAAA4B,MAAM;MACLV,EAAE,EAAEA,EAAG;MACPW,EAAE,EAAEpB,CAAE;MACNE,CAAC,EAAEA,CAAE;MACLmB,KAAK,EAAC,QAAQ;MACdlB,KAAK,EAAEA,KAAM;MACbE,WAAW,EAAEA;IAAY,CAC1B,CAAC,GACA,IAAI;EAAA,CACH,CAAC;AAEZ;;AAEA;AACA;AACO,MAAMiB,GAAG,GAAAC,OAAA,CAAAD,GAAA,gBAAG,IAAAE,WAAI,EAAC3B,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dots = void 0;
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _reactNativeReanimated = require("react-native-reanimated");
9
+ var _gesture = require("./gesture.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * Draw a whole series of dots as a single Skia path (two with `fillColor`).
13
+ * Unlike mapping over {@link Dot}, this runs one worklet per frame instead of
14
+ * one per dot, which keeps large series smooth during zoom/pan gestures.
15
+ * Per-dot opacity is binary here: dots below 0.5 are hidden.
16
+ */
17
+ const Dots = function (props) {
18
+ const {
19
+ dots,
20
+ r = 4,
21
+ shape = 'circle',
22
+ color = 'black',
23
+ fillColor,
24
+ strokeWidth = 2,
25
+ width,
26
+ scale,
27
+ focalX,
28
+ offsetX
29
+ } = props;
30
+ const path = (0, _reactNativeReanimated.useDerivedValue)(() => {
31
+ const p = _reactNativeSkia.Skia.PathBuilder.Make();
32
+ const margin = r + strokeWidth;
33
+ for (const dot of dots) {
34
+ if (dot.opacity.value < 0.5) continue;
35
+ const x = scale === undefined || focalX === undefined || offsetX === undefined ? dot.x.value : (0, _gesture.getPositionWl)(dot.x.value, focalX.value, scale.value, offsetX.value);
36
+ if (width !== undefined && (x < -margin || x > width + margin)) continue;
37
+ const y = dot.y.value;
38
+ if (shape === 'diamond') {
39
+ // One addPoly beats four moveTo/lineTo calls: each is a JSI hop, and
40
+ // this worklet rebuilds every dot on every frame of a gesture
41
+ p.addPoly([{
42
+ x,
43
+ y: y - r
44
+ }, {
45
+ x: x + r,
46
+ y
47
+ }, {
48
+ x,
49
+ y: y + r
50
+ }, {
51
+ x: x - r,
52
+ y
53
+ }], true);
54
+ } else {
55
+ p.addCircle(x, y, r);
56
+ }
57
+ }
58
+ return p.build();
59
+ });
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
61
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
62
+ path: path,
63
+ color: fillColor ?? color
64
+ }), fillColor !== undefined ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
65
+ path: path,
66
+ style: "stroke",
67
+ color: color,
68
+ strokeWidth: strokeWidth,
69
+ strokeJoin: "round"
70
+ }) : null]
71
+ });
72
+ };
73
+ exports.Dots = Dots;
74
+ //# sourceMappingURL=Dots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_gesture","_jsxRuntime","Dots","props","dots","r","shape","color","fillColor","strokeWidth","width","scale","focalX","offsetX","path","useDerivedValue","p","Skia","PathBuilder","Make","margin","dot","opacity","value","x","undefined","getPositionWl","y","addPoly","addCircle","build","jsxs","Fragment","children","jsx","Path","style","strokeJoin","exports"],"sourceRoot":"../../../src","sources":["Charts/Dots.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAqB1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,IAAmB,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC3C,MAAM;IACJC,IAAI;IACJC,CAAC,GAAG,CAAC;IACLC,KAAK,GAAG,QAAQ;IAChBC,KAAK,GAAG,OAAO;IACfC,SAAS;IACTC,WAAW,GAAG,CAAC;IACfC,KAAK;IACLC,KAAK;IACLC,MAAM;IACNC;EACF,CAAC,GAAGV,KAAK;EAET,MAAMW,IAAI,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACjC,MAAMC,CAAC,GAAGC,qBAAI,CAACC,WAAW,CAACC,IAAI,CAAC,CAAC;IACjC,MAAMC,MAAM,GAAGf,CAAC,GAAGI,WAAW;IAC9B,KAAK,MAAMY,GAAG,IAAIjB,IAAI,EAAE;MACtB,IAAIiB,GAAG,CAACC,OAAO,CAACC,KAAK,GAAG,GAAG,EAAE;MAC7B,MAAMC,CAAC,GACLb,KAAK,KAAKc,SAAS,IAAIb,MAAM,KAAKa,SAAS,IAAIZ,OAAO,KAAKY,SAAS,GAChEJ,GAAG,CAACG,CAAC,CAACD,KAAK,GACX,IAAAG,sBAAa,EACXL,GAAG,CAACG,CAAC,CAACD,KAAK,EACXX,MAAM,CAACW,KAAK,EACZZ,KAAK,CAACY,KAAK,EACXV,OAAO,CAACU,KACV,CAAC;MACP,IAAIb,KAAK,KAAKe,SAAS,KAAKD,CAAC,GAAG,CAACJ,MAAM,IAAII,CAAC,GAAGd,KAAK,GAAGU,MAAM,CAAC,EAAE;MAChE,MAAMO,CAAC,GAAGN,GAAG,CAACM,CAAC,CAACJ,KAAK;MACrB,IAAIjB,KAAK,KAAK,SAAS,EAAE;QACvB;QACA;QACAU,CAAC,CAACY,OAAO,CACP,CACE;UAAEJ,CAAC;UAAEG,CAAC,EAAEA,CAAC,GAAGtB;QAAE,CAAC,EACf;UAAEmB,CAAC,EAAEA,CAAC,GAAGnB,CAAC;UAAEsB;QAAE,CAAC,EACf;UAAEH,CAAC;UAAEG,CAAC,EAAEA,CAAC,GAAGtB;QAAE,CAAC,EACf;UAAEmB,CAAC,EAAEA,CAAC,GAAGnB,CAAC;UAAEsB;QAAE,CAAC,CAChB,EACD,IACF,CAAC;MACH,CAAC,MAAM;QACLX,CAAC,CAACa,SAAS,CAACL,CAAC,EAAEG,CAAC,EAAEtB,CAAC,CAAC;MACtB;IACF;IACA,OAAOW,CAAC,CAACc,KAAK,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,oBACE,IAAA7B,WAAA,CAAA8B,IAAA,EAAA9B,WAAA,CAAA+B,QAAA;IAAAC,QAAA,gBACE,IAAAhC,WAAA,CAAAiC,GAAA,EAACrC,gBAAA,CAAAsC,IAAI;MAACrB,IAAI,EAAEA,IAAK;MAACP,KAAK,EAAEC,SAAS,IAAID;IAAM,CAAE,CAAC,EAC9CC,SAAS,KAAKiB,SAAS,gBACtB,IAAAxB,WAAA,CAAAiC,GAAA,EAACrC,gBAAA,CAAAsC,IAAI;MACHrB,IAAI,EAAEA,IAAK;MACXsB,KAAK,EAAC,QAAQ;MACd7B,KAAK,EAAEA,KAAM;MACbE,WAAW,EAAEA,WAAY;MACzB4B,UAAU,EAAC;IAAO,CACnB,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC;AAACC,OAAA,CAAApC,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.LineChart = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
7
+ var _reactNativeSkia = require("react-native-skia");
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPaddedTicks = exports.YAxis = void 0;
7
+ var _reactNativeSkia = require("react-native-skia");
8
+ var _react = require("react");
9
+ var _reactNative = require("react-native");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ const defaultFormatLabel = value => `${Math.round(value)}`;
12
+
13
+ /** Evenly spaced integer ticks from 0 to a padded maximum, e.g. 0, 26, 52, 78, 104. */
14
+ const getPaddedTicks = function (maxValue, nbTicks = 4, padding = 1.15) {
15
+ const step = Math.max(1, Math.ceil(maxValue * padding / nbTicks));
16
+ return Array.from({
17
+ length: nbTicks + 1
18
+ }, (_, i) => i * step);
19
+ };
20
+ exports.getPaddedTicks = getPaddedTicks;
21
+ const YAxis = function (props) {
22
+ const {
23
+ width,
24
+ height,
25
+ font,
26
+ minY,
27
+ maxY,
28
+ nbTicks = 4,
29
+ color = 'black',
30
+ labelColor,
31
+ strokeWidth = _reactNative.StyleSheet.hairlineWidth,
32
+ showLabels = true,
33
+ formatLabel = defaultFormatLabel
34
+ } = props;
35
+
36
+ // Measured once per input change: parents re-render while panning
37
+ const rows = (0, _react.useMemo)(() => {
38
+ // A flat range would divide by zero
39
+ const span = maxY - minY || 1;
40
+ const values = props.values ?? Array.from({
41
+ length: nbTicks
42
+ }, (_, i) => minY + (i + 1) * (maxY - minY) / nbTicks);
43
+ return values.map(value => {
44
+ const label = formatLabel(value);
45
+ const labelWidth = font.getGlyphWidths(font.getGlyphIDs(label)).reduce((a, b) => a + b, 0);
46
+ return {
47
+ label,
48
+ labelWidth,
49
+ transform: [{
50
+ translateY: height - (value - minY) * height / span
51
+ }],
52
+ p1: (0, _reactNativeSkia.vec)(0, 0),
53
+ p2: (0, _reactNativeSkia.vec)(showLabels ? width - 10 - labelWidth : width, 0)
54
+ };
55
+ });
56
+ }, [props.values, nbTicks, minY, maxY, height, width, font, showLabels, formatLabel]);
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Group, {
58
+ children: rows.map((row, i) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSkia.Group, {
59
+ transform: row.transform,
60
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Line, {
61
+ p1: row.p1,
62
+ p2: row.p2,
63
+ color: color,
64
+ strokeWidth: strokeWidth
65
+ }), showLabels ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Text, {
66
+ text: row.label,
67
+ x: width - row.labelWidth,
68
+ y: font.getSize() / 2.5,
69
+ font: font,
70
+ color: labelColor ?? color
71
+ }) : null]
72
+ }, `YTick-${i}`))
73
+ });
74
+ };
75
+ const MemoYAxis = exports.YAxis = /*#__PURE__*/(0, _react.memo)(YAxis);
76
+ MemoYAxis.displayName = 'YAxis';
77
+ //# sourceMappingURL=YAxis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeSkia","require","_react","_reactNative","_jsxRuntime","defaultFormatLabel","value","Math","round","getPaddedTicks","maxValue","nbTicks","padding","step","max","ceil","Array","from","length","_","i","exports","YAxis","props","width","height","font","minY","maxY","color","labelColor","strokeWidth","StyleSheet","hairlineWidth","showLabels","formatLabel","rows","useMemo","span","values","map","label","labelWidth","getGlyphWidths","getGlyphIDs","reduce","a","b","transform","translateY","p1","vec","p2","jsx","Group","children","row","jsxs","Line","Text","text","x","y","getSize","MemoYAxis","memo","displayName"],"sourceRoot":"../../../src","sources":["Charts/YAxis.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ScalablePath = void 0;
7
- var _reactNativeSkia = require("@shopify/react-native-skia");
7
+ var _reactNativeSkia = require("react-native-skia");
8
8
  var _reactNativeReanimated = require("react-native-reanimated");
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  const ScalablePath = function (props) {
@@ -18,9 +18,10 @@ const ScalablePath = function (props) {
18
18
  } = props;
19
19
  const animatedPath = (0, _reactNativeReanimated.useDerivedValue)(() => {
20
20
  // Affine equivalent of getPositionWl: x' = scale * x + focalX * (1 - scale) + offsetX
21
- const _path = path.value.copy();
22
- _path.transform(_reactNativeSkia.Skia.Matrix().translate(focalX.value * (1 - scale.value) + offsetX.value, 0).scale(scale.value, 1));
23
- return _path;
21
+ // Plain 3x3 matrix: a Skia.Matrix() would allocate a native object per frame
22
+ const s = scale.value;
23
+ const tx = focalX.value * (1 - s) + offsetX.value;
24
+ return _reactNativeSkia.Skia.PathBuilder.MakeFromPath(path.value).transform([s, 0, tx, 0, 1, 0, 0, 0, 1]).build();
24
25
  });
25
26
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSkia.Path, {
26
27
  style: "stroke",
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_jsxRuntime","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","useDerivedValue","_path","value","copy","transform","Skia","Matrix","translate","jsx","Path","style","strokeWidth","strokeJoin","strokeCap","exports"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/ScalablePath.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AAA4E,IAAAE,WAAA,GAAAF,OAAA;AAW5E,MAAMG,YAAmC,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC3D,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,KAAK,GAAG;EAAM,CAAC,GAAGN,KAAK;EAExE,MAAMO,YAAY,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACzC;IACA,MAAMC,KAAK,GAAGR,IAAI,CAACS,KAAK,CAACC,IAAI,CAAC,CAAC;IAC/BF,KAAK,CAACG,SAAS,CACbC,qBAAI,CAACC,MAAM,CAAC,CAAC,CACVC,SAAS,CAACZ,MAAM,CAACO,KAAK,IAAI,CAAC,GAAGR,KAAK,CAACQ,KAAK,CAAC,GAAGN,OAAO,CAACM,KAAK,EAAE,CAAC,CAAC,CAC9DR,KAAK,CAACA,KAAK,CAACQ,KAAK,EAAE,CAAC,CACzB,CAAC;IACD,OAAOD,KAAK;EACd,CAAC,CAAC;EAEF,oBACE,IAAAX,WAAA,CAAAkB,GAAA,EAACrB,gBAAA,CAAAsB,IAAI;IACHC,KAAK,EAAC,QAAQ;IACdjB,IAAI,EAAEM,YAAa;IACnBY,WAAW,EAAE,CAAE;IACfC,UAAU,EAAC,OAAO;IAClBC,SAAS,EAAC,OAAO;IACjBf,KAAK,EAAEA,KAAM;IAAA,GACTD;EAAS,CACd,CAAC;AAEN,CAAC;AAACiB,OAAA,CAAAvB,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSkia","require","_reactNativeReanimated","_jsxRuntime","ScalablePath","props","path","scale","focalX","offsetX","pathProps","color","animatedPath","useDerivedValue","s","value","tx","Skia","PathBuilder","MakeFromPath","transform","build","jsx","Path","style","strokeWidth","strokeJoin","strokeCap","exports"],"sourceRoot":"../../../../src","sources":["Charts/ZoomableLinechart/ScalablePath.tsx"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AAA4E,IAAAE,WAAA,GAAAF,OAAA;AAW5E,MAAMG,YAAmC,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC3D,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,KAAK,GAAG;EAAM,CAAC,GAAGN,KAAK;EAExE,MAAMO,YAAY,GAAG,IAAAC,sCAAe,EAAC,MAAM;IACzC;IACA;IACA,MAAMC,CAAC,GAAGP,KAAK,CAACQ,KAAK;IACrB,MAAMC,EAAE,GAAGR,MAAM,CAACO,KAAK,IAAI,CAAC,GAAGD,CAAC,CAAC,GAAGL,OAAO,CAACM,KAAK;IACjD,OAAOE,qBAAI,CAACC,WAAW,CAACC,YAAY,CAACb,IAAI,CAACS,KAAK,CAAC,CAC7CK,SAAS,CAAC,CAACN,CAAC,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACvCK,KAAK,CAAC,CAAC;EACZ,CAAC,CAAC;EAEF,oBACE,IAAAlB,WAAA,CAAAmB,GAAA,EAACtB,gBAAA,CAAAuB,IAAI;IACHC,KAAK,EAAC,QAAQ;IACdlB,IAAI,EAAEM,YAAa;IACnBa,WAAW,EAAE,CAAE;IACfC,UAAU,EAAC,OAAO;IAClBC,SAAS,EAAC,OAAO;IACjBhB,KAAK,EAAEA,KAAM;IAAA,GACTD;EAAS,CACd,CAAC;AAEN,CAAC;AAACkB,OAAA,CAAAxB,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "ScalablePath", {
10
10
  }
11
11
  });
12
12
  exports.ZoomableLineChart = void 0;
13
- var _reactNativeSkia = require("@shopify/react-native-skia");
13
+ var _reactNativeSkia = require("react-native-skia");
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
  var _ScalablePath = require("./ScalablePath.js");
16
16
  var _jsxRuntime = require("react/jsx-runtime");