react-native-wagmi-charts 1.0.4 → 1.2.1

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/.DS_Store +0 -0
  2. package/.prettierrc.js +5 -0
  3. package/README.md +171 -121
  4. package/example/.DS_Store +0 -0
  5. package/example/README.md +32 -0
  6. package/example/package.json +1 -1
  7. package/example/src/App.tsx +32 -7
  8. package/example/src/CandlestickChart.tsx +23 -11
  9. package/example/src/LineChart.tsx +51 -20
  10. package/example/src/{candlestick-data.json → data/candlestick-data.json} +0 -0
  11. package/example/src/{candlestick-data2.json → data/candlestick-data2.json} +0 -0
  12. package/example/src/{line-data.json → data/line-data.json} +0 -0
  13. package/example/src/{line-data2.json → data/line-data2.json} +0 -0
  14. package/example/yarn.lock +5 -5
  15. package/lib/commonjs/charts/candle/Crosshair.js +6 -17
  16. package/lib/commonjs/charts/candle/Crosshair.js.map +1 -1
  17. package/lib/commonjs/charts/candle/CrosshairTooltip.js +12 -8
  18. package/lib/commonjs/charts/candle/CrosshairTooltip.js.map +1 -1
  19. package/lib/commonjs/charts/candle/DatetimeText.js +7 -8
  20. package/lib/commonjs/charts/candle/DatetimeText.js.map +1 -1
  21. package/lib/commonjs/charts/candle/Line.js.map +1 -1
  22. package/lib/commonjs/charts/candle/PriceText.js +7 -8
  23. package/lib/commonjs/charts/candle/PriceText.js.map +1 -1
  24. package/lib/commonjs/charts/candle/useCandleData.js.map +1 -1
  25. package/lib/commonjs/charts/candle/useCandlestickChart.js.map +1 -1
  26. package/lib/commonjs/charts/candle/useDatetime.js.map +1 -1
  27. package/lib/commonjs/charts/candle/usePrice.js.map +1 -1
  28. package/lib/commonjs/charts/candle/utils.js.map +1 -1
  29. package/lib/commonjs/charts/line/Chart.js.map +1 -1
  30. package/lib/commonjs/charts/line/Cursor.js.map +1 -1
  31. package/lib/commonjs/charts/line/CursorCrosshair.js +4 -3
  32. package/lib/commonjs/charts/line/CursorCrosshair.js.map +1 -1
  33. package/lib/commonjs/charts/line/CursorLine.js +8 -1
  34. package/lib/commonjs/charts/line/CursorLine.js.map +1 -1
  35. package/lib/commonjs/charts/line/DatetimeText.js +7 -8
  36. package/lib/commonjs/charts/line/DatetimeText.js.map +1 -1
  37. package/lib/commonjs/charts/line/Path.js +13 -16
  38. package/lib/commonjs/charts/line/Path.js.map +1 -1
  39. package/lib/commonjs/charts/line/PriceText.js +7 -8
  40. package/lib/commonjs/charts/line/PriceText.js.map +1 -1
  41. package/lib/commonjs/charts/line/interpolatePath.js +600 -0
  42. package/lib/commonjs/charts/line/interpolatePath.js.map +1 -0
  43. package/lib/commonjs/charts/line/useDatetime.js.map +1 -1
  44. package/lib/commonjs/charts/line/usePrice.js.map +1 -1
  45. package/lib/commonjs/charts/line/utils.js +1 -70
  46. package/lib/commonjs/charts/line/utils.js.map +1 -1
  47. package/lib/commonjs/components/AnimatedText.js +63 -0
  48. package/lib/commonjs/components/AnimatedText.js.map +1 -0
  49. package/lib/commonjs/utils.js.map +1 -1
  50. package/lib/module/charts/candle/Crosshair.js +7 -16
  51. package/lib/module/charts/candle/Crosshair.js.map +1 -1
  52. package/lib/module/charts/candle/CrosshairTooltip.js +10 -8
  53. package/lib/module/charts/candle/CrosshairTooltip.js.map +1 -1
  54. package/lib/module/charts/candle/DatetimeText.js +6 -7
  55. package/lib/module/charts/candle/DatetimeText.js.map +1 -1
  56. package/lib/module/charts/candle/Line.js.map +1 -1
  57. package/lib/module/charts/candle/PriceText.js +6 -7
  58. package/lib/module/charts/candle/PriceText.js.map +1 -1
  59. package/lib/module/charts/candle/useCandleData.js.map +1 -1
  60. package/lib/module/charts/candle/useCandlestickChart.js.map +1 -1
  61. package/lib/module/charts/candle/useDatetime.js.map +1 -1
  62. package/lib/module/charts/candle/usePrice.js.map +1 -1
  63. package/lib/module/charts/candle/utils.js.map +1 -1
  64. package/lib/module/charts/line/Chart.js.map +1 -1
  65. package/lib/module/charts/line/Cursor.js.map +1 -1
  66. package/lib/module/charts/line/CursorCrosshair.js +4 -3
  67. package/lib/module/charts/line/CursorCrosshair.js.map +1 -1
  68. package/lib/module/charts/line/CursorLine.js +7 -1
  69. package/lib/module/charts/line/CursorLine.js.map +1 -1
  70. package/lib/module/charts/line/DatetimeText.js +6 -7
  71. package/lib/module/charts/line/DatetimeText.js.map +1 -1
  72. package/lib/module/charts/line/Path.js +11 -15
  73. package/lib/module/charts/line/Path.js.map +1 -1
  74. package/lib/module/charts/line/PriceText.js +6 -7
  75. package/lib/module/charts/line/PriceText.js.map +1 -1
  76. package/lib/module/charts/line/interpolatePath.js +587 -0
  77. package/lib/module/charts/line/interpolatePath.js.map +1 -0
  78. package/lib/module/charts/line/useDatetime.js.map +1 -1
  79. package/lib/module/charts/line/usePrice.js.map +1 -1
  80. package/lib/module/charts/line/utils.js +1 -66
  81. package/lib/module/charts/line/utils.js.map +1 -1
  82. package/lib/module/components/AnimatedText.js +43 -0
  83. package/lib/module/components/AnimatedText.js.map +1 -0
  84. package/lib/module/utils.js.map +1 -1
  85. package/lib/typescript/src/charts/candle/Crosshair.d.ts +4 -4
  86. package/lib/typescript/src/charts/candle/DatetimeText.d.ts +3 -2
  87. package/lib/typescript/src/charts/candle/Line.d.ts +1 -1
  88. package/lib/typescript/src/charts/candle/PriceText.d.ts +3 -3
  89. package/lib/typescript/src/charts/candle/types.d.ts +8 -3
  90. package/lib/typescript/src/charts/candle/useCandleData.d.ts +3 -3
  91. package/lib/typescript/src/charts/candle/useCandlestickChart.d.ts +2 -1
  92. package/lib/typescript/src/charts/candle/useDatetime.d.ts +5 -7
  93. package/lib/typescript/src/charts/candle/usePrice.d.ts +5 -8
  94. package/lib/typescript/src/charts/candle/utils.d.ts +1 -1
  95. package/lib/typescript/src/charts/line/Chart.d.ts +1 -1
  96. package/lib/typescript/src/charts/line/Cursor.d.ts +1 -2
  97. package/lib/typescript/src/charts/line/CursorCrosshair.d.ts +3 -2
  98. package/lib/typescript/src/charts/line/DatetimeText.d.ts +5 -6
  99. package/lib/typescript/src/charts/line/Path.d.ts +17 -1
  100. package/lib/typescript/src/charts/line/PriceText.d.ts +3 -2
  101. package/lib/typescript/src/charts/line/interpolatePath.d.ts +50 -0
  102. package/lib/typescript/src/charts/line/useDatetime.d.ts +4 -5
  103. package/lib/typescript/src/charts/line/usePrice.d.ts +3 -2
  104. package/lib/typescript/src/charts/line/utils.d.ts +0 -13
  105. package/lib/typescript/src/components/AnimatedText.d.ts +9 -0
  106. package/lib/typescript/src/utils.d.ts +2 -4
  107. package/package.json +4 -4
  108. package/src/charts/candle/Crosshair.tsx +20 -20
  109. package/src/charts/candle/CrosshairTooltip.tsx +11 -4
  110. package/src/charts/candle/DatetimeText.tsx +5 -4
  111. package/src/charts/candle/Line.tsx +1 -1
  112. package/src/charts/candle/PriceText.tsx +5 -5
  113. package/src/charts/candle/types.ts +11 -3
  114. package/src/charts/candle/useCandleData.ts +3 -2
  115. package/src/charts/candle/useCandlestickChart.ts +2 -1
  116. package/src/charts/candle/useDatetime.ts +7 -3
  117. package/src/charts/candle/usePrice.ts +10 -3
  118. package/src/charts/candle/utils.ts +1 -1
  119. package/src/charts/line/Chart.tsx +1 -1
  120. package/src/charts/line/Cursor.tsx +7 -3
  121. package/src/charts/line/CursorCrosshair.tsx +4 -3
  122. package/src/charts/line/CursorLine.tsx +9 -1
  123. package/src/charts/line/DatetimeText.tsx +8 -7
  124. package/src/charts/line/Path.tsx +25 -21
  125. package/src/charts/line/PriceText.tsx +5 -4
  126. package/src/charts/line/interpolatePath.ts +650 -0
  127. package/src/charts/line/useDatetime.ts +3 -2
  128. package/src/charts/line/usePrice.ts +2 -1
  129. package/src/charts/line/utils.ts +2 -79
  130. package/src/components/AnimatedText.tsx +53 -0
  131. package/src/utils.ts +3 -3
  132. package/yarn.lock +5 -5
@@ -1,27 +1,39 @@
1
1
  import * as React from 'react';
2
2
  import { Box, Button, Flex, Heading, Text, Stack } from 'bumbag-native';
3
- import { CandlestickChart } from 'react-native-wagmi-charts';
3
+ import { CandlestickChart, TCandle } from 'react-native-wagmi-charts';
4
+ import * as haptics from 'expo-haptics';
4
5
 
5
- import mockData from './candlestick-data.json';
6
- import mockData2 from './candlestick-data2.json';
6
+ import mockData from './data/candlestick-data.json';
7
+ import mockData2 from './data/candlestick-data2.json';
8
+
9
+ function invokeHaptic() {
10
+ haptics.impactAsync(haptics.ImpactFeedbackStyle.Light);
11
+ }
7
12
 
8
13
  export default function App() {
9
- const [data, setData] = React.useState<any>(mockData);
14
+ const [data, setData] = React.useState<TCandle[]>(mockData);
10
15
 
11
16
  return (
12
17
  <>
13
18
  <Heading.H5 paddingX="major-2" marginBottom="major-2">
14
- WAGMI Candlestick Chart 🕯
19
+ Candlestick Chart 🕯
15
20
  </Heading.H5>
16
21
  <CandlestickChart.Provider data={data}>
17
22
  <CandlestickChart>
18
23
  <CandlestickChart.Candles />
19
- <CandlestickChart.Crosshair>
24
+ <CandlestickChart.Crosshair onCurrentXChange={invokeHaptic}>
20
25
  <CandlestickChart.Tooltip />
21
26
  </CandlestickChart.Crosshair>
22
27
  </CandlestickChart>
23
- <Button onPress={() => setData(mockData)}>Data 1</Button>
24
- <Button onPress={() => setData(mockData2)}>Data 2</Button>
28
+ <Heading.H6>Load Data</Heading.H6>
29
+ <Box marginTop="major-2">
30
+ <Flex flexWrap={'wrap'}>
31
+ <Button onPress={() => setData(mockData)}>candlestick-data</Button>
32
+ <Button onPress={() => setData(mockData2)}>
33
+ candlestick-data2
34
+ </Button>
35
+ </Flex>
36
+ </Box>
25
37
  <Stack padding="major-2" spacing="major-1">
26
38
  <Heading.H6>PriceText</Heading.H6>
27
39
  <Box>
@@ -80,7 +92,7 @@ export default function App() {
80
92
  <Box flex="1">
81
93
  <Text fontSize="100">Current</Text>
82
94
  <CandlestickChart.PriceText
83
- format={(d: any) => {
95
+ format={(d) => {
84
96
  'worklet';
85
97
  return `$${d.formatted} AUD`;
86
98
  }}
@@ -90,7 +102,7 @@ export default function App() {
90
102
  <Text fontSize="100">Open</Text>
91
103
  <CandlestickChart.PriceText
92
104
  type="open"
93
- format={(d: any) => {
105
+ format={(d) => {
94
106
  'worklet';
95
107
  return `$${d.formatted} AUD`;
96
108
  }}
@@ -100,7 +112,7 @@ export default function App() {
100
112
  <Text fontSize="100">Close</Text>
101
113
  <CandlestickChart.PriceText
102
114
  type="close"
103
- format={(d: any) => {
115
+ format={(d) => {
104
116
  'worklet';
105
117
  return `$${d.formatted} AUD`;
106
118
  }}
@@ -1,42 +1,73 @@
1
1
  import * as React from 'react';
2
2
  import { Box, Button, Flex, Heading, Stack, Text } from 'bumbag-native';
3
- import { LineChart } from 'react-native-wagmi-charts';
3
+ import { LineChart, TLineChartPoint } from 'react-native-wagmi-charts';
4
+ import * as haptics from 'expo-haptics';
4
5
 
5
- import mockData from './line-data.json';
6
- import mockData2 from './line-data2.json';
6
+ import mockData from './data/line-data.json';
7
+ import mockData2 from './data/line-data2.json';
8
+
9
+ function invokeHaptic() {
10
+ haptics.impactAsync(haptics.ImpactFeedbackStyle.Light);
11
+ }
7
12
 
8
13
  export default function App() {
9
- const [data, setData] = React.useState<any>(mockData);
14
+ const [data, setData] = React.useState<TLineChartPoint[]>(mockData);
10
15
 
11
16
  return (
12
17
  <>
13
18
  <Heading.H5 paddingX="major-2" marginBottom="major-2">
14
- WAGMI Line Chart 📈
19
+ Line Chart 📈
15
20
  </Heading.H5>
16
21
  <LineChart.Provider data={data}>
17
22
  <LineChart>
18
23
  <LineChart.Path />
19
- <LineChart.CursorCrosshair>
24
+ <LineChart.CursorCrosshair
25
+ onActivated={invokeHaptic}
26
+ onEnded={invokeHaptic}
27
+ >
20
28
  <LineChart.Tooltip />
21
29
  {/* <LineChart.Tooltip position="bottom">
22
30
  <LineChart.DatetimeText />
23
31
  </LineChart.Tooltip> */}
24
32
  </LineChart.CursorCrosshair>
25
33
  </LineChart>
34
+ <Heading.H6>Load Data</Heading.H6>
26
35
  <Box marginTop="major-2">
27
- <Button onPress={() => setData(mockData)}>Data 1</Button>
28
- <Button onPress={() => setData(mockData2)}>Data 2</Button>
29
- <Button onPress={() => setData([...mockData, ...mockData2])}>
30
- Data 1 + Data 2
31
- </Button>
32
- <Button onPress={() => setData([...mockData2, ...mockData])}>
33
- Data 2 + Data 1
34
- </Button>
35
- <Button
36
- onPress={() => setData([...mockData2, ...mockData, ...mockData2])}
37
- >
38
- Data 2 + Data 1 + Data 2
39
- </Button>
36
+ <Flex flexWrap={'wrap'}>
37
+ <Button onPress={() => setData(mockData)}>Data 1</Button>
38
+ <Button onPress={() => setData(mockData2)}>Data 2</Button>
39
+ <Button onPress={() => setData([...mockData, ...mockData2])}>
40
+ Data 1 + Data 2
41
+ </Button>
42
+ <Button onPress={() => setData([...mockData2, ...mockData])}>
43
+ Data 2 + Data 1
44
+ </Button>
45
+ <Button
46
+ onPress={() => setData([...mockData2, ...mockData, ...mockData2])}
47
+ >
48
+ Data 2 + Data 1 + Data 2
49
+ </Button>
50
+ <Button
51
+ onPress={() =>
52
+ setData([
53
+ ...mockData2,
54
+ ...mockData,
55
+ ...mockData2,
56
+ ...mockData,
57
+ ...mockData,
58
+ ...mockData2,
59
+ ...mockData2,
60
+ ...mockData,
61
+ ...mockData2,
62
+ ...mockData,
63
+ ...mockData,
64
+ ...mockData2,
65
+ ])
66
+ }
67
+ >
68
+ V large data
69
+ </Button>
70
+ </Flex>
40
71
  </Box>
41
72
  <Stack padding="major-2" spacing="major-1">
42
73
  <Heading.H6>PriceText</Heading.H6>
@@ -51,7 +82,7 @@ export default function App() {
51
82
  <Flex>
52
83
  <Text fontWeight="500">Custom format: </Text>
53
84
  <LineChart.PriceText
54
- format={(d: any) => {
85
+ format={(d) => {
55
86
  'worklet';
56
87
  return `$${d.formatted} AUD`;
57
88
  }}
package/example/yarn.lock CHANGED
@@ -5770,6 +5770,11 @@ expo-font@~9.2.1:
5770
5770
  expo-modules-core "~0.2.0"
5771
5771
  fontfaceobserver "^2.1.0"
5772
5772
 
5773
+ expo-haptics@^10.1.0:
5774
+ version "10.1.0"
5775
+ resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-10.1.0.tgz#2ef5f0c3442f57844f7a7a961d922872e4ea9a71"
5776
+ integrity sha512-2rpixkP3LSCwaJAmbbs0CSqbY7lSk7Ytay4UAYWg3YiJ05My7+MGMPbQJARyAMI5JQNuzcdsZN74btSusBvgYQ==
5777
+
5773
5778
  expo-image-loader@~2.2.0:
5774
5779
  version "2.2.0"
5775
5780
  resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-2.2.0.tgz#b5d49ec65e576c033823050b223ef462c5ec5711"
@@ -10799,11 +10804,6 @@ react-native-gesture-handler@~1.10.2:
10799
10804
  invariant "^2.2.4"
10800
10805
  prop-types "^15.7.2"
10801
10806
 
10802
- react-native-haptic-feedback@^1.11.0:
10803
- version "1.11.0"
10804
- resolved "https://registry.yarnpkg.com/react-native-haptic-feedback/-/react-native-haptic-feedback-1.11.0.tgz#adfd841f3b67046532f912c6ec827aea0037d8ad"
10805
- integrity sha512-KTIy7lExwMtB6pOpCARyUzFj5EzYTh+A1GN/FB5Eb0LrW5C6hbb1kdj9K2/RHyZC+wyAJD1M823ZaDCU6n6cLA==
10806
-
10807
10807
  react-native-reanimated@~2.2.0:
10808
10808
  version "2.2.0"
10809
10809
  resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.2.0.tgz#a6412c56b4e591d1f00fac949f62d0c72c357c78"
@@ -9,8 +9,6 @@ var React = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _reactNativeHapticFeedback = _interopRequireDefault(require("react-native-haptic-feedback"));
13
-
14
12
  var _reactNativeGestureHandler = require("react-native-gesture-handler");
15
13
 
16
14
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
@@ -25,24 +23,15 @@ var _useCandlestickChart = require("./useCandlestickChart");
25
23
 
26
24
  var _CrosshairTooltip = require("./CrosshairTooltip");
27
25
 
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
27
 
32
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
29
 
34
30
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
35
31
 
36
- function invokeHaptic() {
37
- _reactNativeHapticFeedback.default.trigger('impactLight', {
38
- enableVibrateFallback: true,
39
- ignoreAndroidSystemSettings: false
40
- });
41
- }
42
-
43
32
  function CandlestickChartCrosshair({
44
33
  color,
45
- enableHapticFeedback = false,
34
+ onCurrentXChange,
46
35
  children,
47
36
  horizontalCrosshairProps = {},
48
37
  verticalCrosshairProps = {},
@@ -95,13 +84,13 @@ function CandlestickChartCrosshair({
95
84
  translateX: currentX.value
96
85
  }]
97
86
  }));
98
- (0, _reactNativeReanimated.useAnimatedReaction)(() => enableHapticFeedback ? currentX.value : 0, data => {
99
- if (data !== 0) {
100
- (0, _reactNativeReanimated.runOnJS)(invokeHaptic)();
87
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => currentX.value, (data, prevData) => {
88
+ if (data !== -1 && data !== prevData && onCurrentXChange) {
89
+ (0, _reactNativeReanimated.runOnJS)(onCurrentXChange)(data);
101
90
  }
102
91
  });
103
- return /*#__PURE__*/React.createElement(_reactNativeGestureHandler.PanGestureHandler, _extends({
104
- minDist: 0,
92
+ return /*#__PURE__*/React.createElement(_reactNativeGestureHandler.LongPressGestureHandler, _extends({
93
+ minDurationMs: 0,
105
94
  onGestureEvent: onGestureEvent
106
95
  }, props), /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, {
107
96
  style: _reactNative.StyleSheet.absoluteFill
@@ -1 +1 @@
1
- {"version":3,"sources":["Crosshair.tsx"],"names":["invokeHaptic","ReactNativeHapticFeedback","trigger","enableVibrateFallback","ignoreAndroidSystemSettings","CandlestickChartCrosshair","color","enableHapticFeedback","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","props","width","height","React","useContext","CandlestickChartDimensionsContext","currentX","currentY","step","tooltipPosition","opacity","onGestureEvent","onActive","x","y","boundedX","value","onEnd","horizontal","transform","translateY","vertical","translateX","data","StyleSheet","absoluteFill","position"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, ViewProps } from 'react-native';\nimport ReactNativeHapticFeedback from 'react-native-haptic-feedback';\nimport {\n PanGestureHandler,\n PanGestureHandlerProps,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useSharedValue,\n useAnimatedStyle,\n useAnimatedReaction,\n runOnJS,\n} from 'react-native-reanimated';\nimport { clamp } from 'react-native-redash';\n\nimport { CandlestickChartDimensionsContext } from './Chart';\nimport { CandlestickChartLine, CandlestickChartLineProps } from './Line';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport { CandlestickChartCrosshairTooltipContext } from './CrosshairTooltip';\n\ntype CandlestickChartCrosshairProps = PanGestureHandlerProps & {\n color?: string;\n children?: React.ReactNode;\n enableHapticFeedback?: boolean;\n horizontalCrosshairProps?: Animated.AnimateProps<ViewProps>;\n verticalCrosshairProps?: Animated.AnimateProps<ViewProps>;\n lineProps?: Partial<CandlestickChartLineProps>;\n};\n\nfunction invokeHaptic() {\n ReactNativeHapticFeedback.trigger('impactLight', {\n enableVibrateFallback: true,\n ignoreAndroidSystemSettings: false,\n });\n}\n\nexport function CandlestickChartCrosshair({\n color,\n enableHapticFeedback = false,\n children,\n horizontalCrosshairProps = {},\n verticalCrosshairProps = {},\n lineProps = {},\n ...props\n}: CandlestickChartCrosshairProps) {\n const { width, height } = React.useContext(CandlestickChartDimensionsContext);\n const { currentX, currentY, step } = useCandlestickChart();\n\n const tooltipPosition = useSharedValue<'left' | 'right'>('left');\n\n const opacity = useSharedValue(0);\n const onGestureEvent = useAnimatedGestureHandler({\n onActive: ({ x, y }) => {\n const boundedX = x <= width - 1 ? x : width - 1;\n if (boundedX < 100) {\n tooltipPosition.value = 'right';\n } else {\n tooltipPosition.value = 'left';\n }\n opacity.value = 1;\n currentY.value = clamp(y, 0, height);\n currentX.value = boundedX - (boundedX % step) + step / 2;\n },\n onEnd: () => {\n opacity.value = 0;\n currentY.value = -1;\n currentX.value = -1;\n },\n });\n const horizontal = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: currentY.value }],\n }));\n const vertical = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateX: currentX.value }],\n }));\n\n useAnimatedReaction(\n () => (enableHapticFeedback ? currentX.value : 0),\n (data) => {\n if (data !== 0) {\n runOnJS(invokeHaptic)();\n }\n }\n );\n\n return (\n <PanGestureHandler minDist={0} onGestureEvent={onGestureEvent} {...props}>\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[StyleSheet.absoluteFill, horizontal]}\n {...horizontalCrosshairProps}\n >\n <CandlestickChartLine color={color} x={width} y={0} {...lineProps} />\n <CandlestickChartCrosshairTooltipContext.Provider\n value={{ position: tooltipPosition }}\n >\n {children}\n </CandlestickChartCrosshairTooltipContext.Provider>\n </Animated.View>\n <Animated.View\n style={[StyleSheet.absoluteFill, vertical]}\n {...verticalCrosshairProps}\n >\n <CandlestickChartLine color={color} x={0} y={height} {...lineProps} />\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n );\n}\n"]}
1
+ {"version":3,"sources":["Crosshair.tsx"],"names":["CandlestickChartCrosshair","color","onCurrentXChange","children","horizontalCrosshairProps","verticalCrosshairProps","lineProps","props","width","height","React","useContext","CandlestickChartDimensionsContext","currentX","currentY","step","tooltipPosition","opacity","onGestureEvent","onActive","x","y","boundedX","value","onEnd","horizontal","transform","translateY","vertical","translateX","data","prevData","StyleSheet","absoluteFill","position"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, ViewProps } from 'react-native';\nimport {\n GestureEvent,\n LongPressGestureHandler,\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedGestureHandler,\n useSharedValue,\n useAnimatedStyle,\n useAnimatedReaction,\n runOnJS,\n} from 'react-native-reanimated';\nimport { clamp } from 'react-native-redash';\n\nimport { CandlestickChartDimensionsContext } from './Chart';\nimport { CandlestickChartLine, CandlestickChartLineProps } from './Line';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport { CandlestickChartCrosshairTooltipContext } from './CrosshairTooltip';\n\ntype CandlestickChartCrosshairProps = LongPressGestureHandlerProps & {\n color?: string;\n children?: React.ReactNode;\n onCurrentXChange?: (value: number) => unknown;\n horizontalCrosshairProps?: Animated.AnimateProps<ViewProps>;\n verticalCrosshairProps?: Animated.AnimateProps<ViewProps>;\n lineProps?: Partial<CandlestickChartLineProps>;\n};\n\nexport function CandlestickChartCrosshair({\n color,\n onCurrentXChange,\n children,\n horizontalCrosshairProps = {},\n verticalCrosshairProps = {},\n lineProps = {},\n ...props\n}: CandlestickChartCrosshairProps) {\n const { width, height } = React.useContext(CandlestickChartDimensionsContext);\n const { currentX, currentY, step } = useCandlestickChart();\n\n const tooltipPosition = useSharedValue<'left' | 'right'>('left');\n\n const opacity = useSharedValue(0);\n const onGestureEvent = useAnimatedGestureHandler<\n GestureEvent<LongPressGestureHandlerEventPayload>\n >({\n onActive: ({ x, y }) => {\n const boundedX = x <= width - 1 ? x : width - 1;\n if (boundedX < 100) {\n tooltipPosition.value = 'right';\n } else {\n tooltipPosition.value = 'left';\n }\n opacity.value = 1;\n currentY.value = clamp(y, 0, height);\n currentX.value = boundedX - (boundedX % step) + step / 2;\n },\n onEnd: () => {\n opacity.value = 0;\n currentY.value = -1;\n currentX.value = -1;\n },\n });\n const horizontal = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: currentY.value }],\n }));\n const vertical = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateX: currentX.value }],\n }));\n\n useAnimatedReaction(\n () => currentX.value,\n (data, prevData) => {\n if (data !== -1 && data !== prevData && onCurrentXChange) {\n runOnJS(onCurrentXChange)(data);\n }\n }\n );\n\n return (\n <LongPressGestureHandler\n minDurationMs={0}\n onGestureEvent={onGestureEvent}\n {...props}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[StyleSheet.absoluteFill, horizontal]}\n {...horizontalCrosshairProps}\n >\n <CandlestickChartLine color={color} x={width} y={0} {...lineProps} />\n <CandlestickChartCrosshairTooltipContext.Provider\n value={{ position: tooltipPosition }}\n >\n {children}\n </CandlestickChartCrosshairTooltipContext.Provider>\n </Animated.View>\n <Animated.View\n style={[StyleSheet.absoluteFill, vertical]}\n {...verticalCrosshairProps}\n >\n <CandlestickChartLine color={color} x={0} y={height} {...lineProps} />\n </Animated.View>\n </Animated.View>\n </LongPressGestureHandler>\n );\n}\n"]}
@@ -8,6 +8,8 @@ exports.CandlestickChartCrosshairTooltipContext = void 0;
8
8
 
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
 
11
+ var _reactNative = require("react-native");
12
+
11
13
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
12
14
 
13
15
  var _Chart = require("./Chart");
@@ -33,8 +35,8 @@ function CandlestickChartCrosshairTooltip({
33
35
  children,
34
36
  xGutter = 8,
35
37
  yGutter = 8,
36
- tooltipTextProps = {},
37
- textStyle = {},
38
+ tooltipTextProps,
39
+ textStyle,
38
40
  ...props
39
41
  }) {
40
42
  const {
@@ -85,15 +87,17 @@ function CandlestickChartCrosshairTooltip({
85
87
  }, props, {
86
88
  style: [tooltip, leftTooltip, props.style]
87
89
  }), children || /*#__PURE__*/React.createElement(_PriceText.CandlestickChartPriceText, _extends({}, tooltipTextProps, {
88
- style: [{
89
- fontSize: 14
90
- }, tooltipTextProps.style, textStyle]
90
+ style: [styles.text, tooltipTextProps === null || tooltipTextProps === void 0 ? void 0 : tooltipTextProps.style, textStyle]
91
91
  }))), /*#__PURE__*/React.createElement(_reactNativeReanimated.default.View, _extends({}, props, {
92
92
  style: [tooltip, rightTooltip, props.style]
93
93
  }), children || /*#__PURE__*/React.createElement(_PriceText.CandlestickChartPriceText, _extends({}, tooltipTextProps, {
94
- style: [{
95
- fontSize: 14
96
- }, tooltipTextProps.style, textStyle]
94
+ style: [styles.text, tooltipTextProps === null || tooltipTextProps === void 0 ? void 0 : tooltipTextProps.style, textStyle]
97
95
  }))));
98
96
  }
97
+
98
+ const styles = _reactNative.StyleSheet.create({
99
+ text: {
100
+ fontSize: 14
101
+ }
102
+ });
99
103
  //# sourceMappingURL=CrosshairTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["CrosshairTooltip.tsx"],"names":["CandlestickChartCrosshairTooltipContext","React","createContext","position","value","CandlestickChartCrosshairTooltip","children","xGutter","yGutter","tooltipTextProps","textStyle","props","width","height","useContext","CandlestickChartDimensionsContext","currentY","elementHeight","elementWidth","handleLayout","useCallback","event","nativeEvent","layout","topOffset","offset","tooltip","backgroundColor","display","padding","leftTooltip","left","top","opacity","rightTooltip","style","fontSize"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport type { StyleProp, TextStyle, ViewProps } from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\n\nimport { CandlestickChartDimensionsContext } from './Chart';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport {\n CandlestickChartPriceText,\n CandlestickChartPriceTextProps,\n} from './PriceText';\n\nexport type CandlestickChartCrosshairTooltipProps = ViewProps & {\n children?: React.ReactNode;\n xGutter?: number;\n yGutter?: number;\n tooltipTextProps?: CandlestickChartPriceTextProps;\n textStyle?: Animated.AnimateStyle<StyleProp<TextStyle>>;\n};\n\nexport type CandlestickChartCrosshairTooltipContext = {\n position: Animated.SharedValue<'left' | 'right'>;\n};\n\nexport const CandlestickChartCrosshairTooltipContext =\n React.createContext<CandlestickChartCrosshairTooltipContext>({\n position: { value: 'left' },\n });\n\nexport function CandlestickChartCrosshairTooltip({\n children,\n xGutter = 8,\n yGutter = 8,\n tooltipTextProps = {},\n textStyle = {},\n ...props\n}: CandlestickChartCrosshairTooltipProps) {\n const { width, height } = React.useContext(CandlestickChartDimensionsContext);\n const { currentY } = useCandlestickChart();\n const { position } = React.useContext(\n CandlestickChartCrosshairTooltipContext\n );\n\n const elementHeight = useSharedValue(0);\n const elementWidth = useSharedValue(0);\n\n const handleLayout = React.useCallback(\n (event) => {\n elementHeight.value = event.nativeEvent.layout.height;\n elementWidth.value = event.nativeEvent.layout.width;\n },\n [elementHeight, elementWidth]\n );\n\n const topOffset = useDerivedValue(() => {\n let offset = 0;\n if (currentY.value < elementHeight.value / 2 + yGutter) {\n offset = currentY.value - (elementHeight.value / 2 + yGutter);\n } else if (currentY.value + elementHeight.value / 2 > height - yGutter) {\n offset = currentY.value + elementHeight.value / 2 - height + yGutter;\n }\n\n return offset;\n });\n\n const tooltip = useAnimatedStyle(() => ({\n backgroundColor: 'white',\n position: 'absolute',\n display: 'flex',\n padding: 4,\n }));\n const leftTooltip = useAnimatedStyle(() => ({\n left: xGutter,\n top: -(elementHeight.value / 2) - topOffset.value,\n opacity: position.value === 'left' ? 1 : 0,\n }));\n const rightTooltip = useAnimatedStyle(() => ({\n left: width - elementWidth.value - xGutter,\n top: -(elementHeight.value / 2) - topOffset.value,\n opacity: position.value === 'right' ? 1 : 0,\n }));\n\n return (\n <>\n <Animated.View\n onLayout={handleLayout}\n {...props}\n style={[tooltip, leftTooltip, props.style]}\n >\n {children || (\n <CandlestickChartPriceText\n {...tooltipTextProps}\n style={[{ fontSize: 14 }, tooltipTextProps.style, textStyle]}\n />\n )}\n </Animated.View>\n <Animated.View {...props} style={[tooltip, rightTooltip, props.style]}>\n {children || (\n <CandlestickChartPriceText\n {...tooltipTextProps}\n style={[{ fontSize: 14 }, tooltipTextProps.style, textStyle]}\n />\n )}\n </Animated.View>\n </>\n );\n}\n"]}
1
+ {"version":3,"sources":["CrosshairTooltip.tsx"],"names":["CandlestickChartCrosshairTooltipContext","React","createContext","position","value","CandlestickChartCrosshairTooltip","children","xGutter","yGutter","tooltipTextProps","textStyle","props","width","height","useContext","CandlestickChartDimensionsContext","currentY","elementHeight","elementWidth","handleLayout","useCallback","event","nativeEvent","layout","topOffset","offset","tooltip","backgroundColor","display","padding","leftTooltip","left","top","opacity","rightTooltip","style","styles","text","StyleSheet","create","fontSize"],"mappings":";;;;;;;;AAAA;;AAEA;;AACA;;AAMA;;AACA;;AACA;;;;;;;;AAiBO,MAAMA,uCAAuC,gBAClDC,KAAK,CAACC,aAAN,CAA6D;AAC3DC,EAAAA,QAAQ,EAAE;AAAEC,IAAAA,KAAK,EAAE;AAAT;AADiD,CAA7D,CADK;;;AAKA,SAASC,gCAAT,CAA0C;AAC/CC,EAAAA,QAD+C;AAE/CC,EAAAA,OAAO,GAAG,CAFqC;AAG/CC,EAAAA,OAAO,GAAG,CAHqC;AAI/CC,EAAAA,gBAJ+C;AAK/CC,EAAAA,SAL+C;AAM/C,KAAGC;AAN4C,CAA1C,EAOmC;AACxC,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAoBZ,KAAK,CAACa,UAAN,CAAiBC,wCAAjB,CAA1B;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAe,+CAArB;AACA,QAAM;AAAEb,IAAAA;AAAF,MAAeF,KAAK,CAACa,UAAN,CACnBd,uCADmB,CAArB;AAIA,QAAMiB,aAAa,GAAG,2CAAe,CAAf,CAAtB;AACA,QAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,QAAMC,YAAY,GAAGlB,KAAK,CAACmB,WAAN,CAClBC,KAAD,IAAW;AACTJ,IAAAA,aAAa,CAACb,KAAd,GAAsBiB,KAAK,CAACC,WAAN,CAAkBC,MAAlB,CAAyBV,MAA/C;AACAK,IAAAA,YAAY,CAACd,KAAb,GAAqBiB,KAAK,CAACC,WAAN,CAAkBC,MAAlB,CAAyBX,KAA9C;AACD,GAJkB,EAKnB,CAACK,aAAD,EAAgBC,YAAhB,CALmB,CAArB;AAQA,QAAMM,SAAS,GAAG,4CAAgB,MAAM;AACtC,QAAIC,MAAM,GAAG,CAAb;;AACA,QAAIT,QAAQ,CAACZ,KAAT,GAAiBa,aAAa,CAACb,KAAd,GAAsB,CAAtB,GAA0BI,OAA/C,EAAwD;AACtDiB,MAAAA,MAAM,GAAGT,QAAQ,CAACZ,KAAT,IAAkBa,aAAa,CAACb,KAAd,GAAsB,CAAtB,GAA0BI,OAA5C,CAAT;AACD,KAFD,MAEO,IAAIQ,QAAQ,CAACZ,KAAT,GAAiBa,aAAa,CAACb,KAAd,GAAsB,CAAvC,GAA2CS,MAAM,GAAGL,OAAxD,EAAiE;AACtEiB,MAAAA,MAAM,GAAGT,QAAQ,CAACZ,KAAT,GAAiBa,aAAa,CAACb,KAAd,GAAsB,CAAvC,GAA2CS,MAA3C,GAAoDL,OAA7D;AACD;;AAED,WAAOiB,MAAP;AACD,GATiB,CAAlB;AAWA,QAAMC,OAAO,GAAG,6CAAiB,OAAO;AACtCC,IAAAA,eAAe,EAAE,OADqB;AAEtCxB,IAAAA,QAAQ,EAAE,UAF4B;AAGtCyB,IAAAA,OAAO,EAAE,MAH6B;AAItCC,IAAAA,OAAO,EAAE;AAJ6B,GAAP,CAAjB,CAAhB;AAMA,QAAMC,WAAW,GAAG,6CAAiB,OAAO;AAC1CC,IAAAA,IAAI,EAAExB,OADoC;AAE1CyB,IAAAA,GAAG,EAAE,EAAEf,aAAa,CAACb,KAAd,GAAsB,CAAxB,IAA6BoB,SAAS,CAACpB,KAFF;AAG1C6B,IAAAA,OAAO,EAAE9B,QAAQ,CAACC,KAAT,KAAmB,MAAnB,GAA4B,CAA5B,GAAgC;AAHC,GAAP,CAAjB,CAApB;AAKA,QAAM8B,YAAY,GAAG,6CAAiB,OAAO;AAC3CH,IAAAA,IAAI,EAAEnB,KAAK,GAAGM,YAAY,CAACd,KAArB,GAA6BG,OADQ;AAE3CyB,IAAAA,GAAG,EAAE,EAAEf,aAAa,CAACb,KAAd,GAAsB,CAAxB,IAA6BoB,SAAS,CAACpB,KAFD;AAG3C6B,IAAAA,OAAO,EAAE9B,QAAQ,CAACC,KAAT,KAAmB,OAAnB,GAA6B,CAA7B,GAAiC;AAHC,GAAP,CAAjB,CAArB;AAMA,sBACE,uDACE,oBAAC,8BAAD,CAAU,IAAV;AACE,IAAA,QAAQ,EAAEe;AADZ,KAEMR,KAFN;AAGE,IAAA,KAAK,EAAE,CAACe,OAAD,EAAUI,WAAV,EAAuBnB,KAAK,CAACwB,KAA7B;AAHT,MAKG7B,QAAQ,iBACP,oBAAC,oCAAD,eACMG,gBADN;AAEE,IAAA,KAAK,EAAE,CAAC2B,MAAM,CAACC,IAAR,EAAc5B,gBAAd,aAAcA,gBAAd,uBAAcA,gBAAgB,CAAE0B,KAAhC,EAAuCzB,SAAvC;AAFT,KANJ,CADF,eAaE,oBAAC,8BAAD,CAAU,IAAV,eAAmBC,KAAnB;AAA0B,IAAA,KAAK,EAAE,CAACe,OAAD,EAAUQ,YAAV,EAAwBvB,KAAK,CAACwB,KAA9B;AAAjC,MACG7B,QAAQ,iBACP,oBAAC,oCAAD,eACMG,gBADN;AAEE,IAAA,KAAK,EAAE,CAAC2B,MAAM,CAACC,IAAR,EAAc5B,gBAAd,aAAcA,gBAAd,uBAAcA,gBAAgB,CAAE0B,KAAhC,EAAuCzB,SAAvC;AAFT,KAFJ,CAbF,CADF;AAwBD;;AAED,MAAM0B,MAAM,GAAGE,wBAAWC,MAAX,CAAkB;AAC/BF,EAAAA,IAAI,EAAE;AACJG,IAAAA,QAAQ,EAAE;AADN;AADyB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport type { StyleProp, TextStyle, ViewProps } from 'react-native';\nimport { StyleSheet } from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n} from 'react-native-reanimated';\n\nimport { CandlestickChartDimensionsContext } from './Chart';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport {\n CandlestickChartPriceText,\n CandlestickChartPriceTextProps,\n} from './PriceText';\n\nexport type CandlestickChartCrosshairTooltipProps = ViewProps & {\n children?: React.ReactNode;\n xGutter?: number;\n yGutter?: number;\n tooltipTextProps?: CandlestickChartPriceTextProps;\n textStyle?: Animated.AnimateStyle<StyleProp<TextStyle>>;\n};\n\nexport type CandlestickChartCrosshairTooltipContext = {\n position: Animated.SharedValue<'left' | 'right'>;\n};\n\nexport const CandlestickChartCrosshairTooltipContext =\n React.createContext<CandlestickChartCrosshairTooltipContext>({\n position: { value: 'left' },\n });\n\nexport function CandlestickChartCrosshairTooltip({\n children,\n xGutter = 8,\n yGutter = 8,\n tooltipTextProps,\n textStyle,\n ...props\n}: CandlestickChartCrosshairTooltipProps) {\n const { width, height } = React.useContext(CandlestickChartDimensionsContext);\n const { currentY } = useCandlestickChart();\n const { position } = React.useContext(\n CandlestickChartCrosshairTooltipContext\n );\n\n const elementHeight = useSharedValue(0);\n const elementWidth = useSharedValue(0);\n\n const handleLayout = React.useCallback(\n (event) => {\n elementHeight.value = event.nativeEvent.layout.height;\n elementWidth.value = event.nativeEvent.layout.width;\n },\n [elementHeight, elementWidth]\n );\n\n const topOffset = useDerivedValue(() => {\n let offset = 0;\n if (currentY.value < elementHeight.value / 2 + yGutter) {\n offset = currentY.value - (elementHeight.value / 2 + yGutter);\n } else if (currentY.value + elementHeight.value / 2 > height - yGutter) {\n offset = currentY.value + elementHeight.value / 2 - height + yGutter;\n }\n\n return offset;\n });\n\n const tooltip = useAnimatedStyle(() => ({\n backgroundColor: 'white',\n position: 'absolute',\n display: 'flex',\n padding: 4,\n }));\n const leftTooltip = useAnimatedStyle(() => ({\n left: xGutter,\n top: -(elementHeight.value / 2) - topOffset.value,\n opacity: position.value === 'left' ? 1 : 0,\n }));\n const rightTooltip = useAnimatedStyle(() => ({\n left: width - elementWidth.value - xGutter,\n top: -(elementHeight.value / 2) - topOffset.value,\n opacity: position.value === 'right' ? 1 : 0,\n }));\n\n return (\n <>\n <Animated.View\n onLayout={handleLayout}\n {...props}\n style={[tooltip, leftTooltip, props.style]}\n >\n {children || (\n <CandlestickChartPriceText\n {...tooltipTextProps}\n style={[styles.text, tooltipTextProps?.style, textStyle]}\n />\n )}\n </Animated.View>\n <Animated.View {...props} style={[tooltip, rightTooltip, props.style]}>\n {children || (\n <CandlestickChartPriceText\n {...tooltipTextProps}\n style={[styles.text, tooltipTextProps?.style, textStyle]}\n />\n )}\n </Animated.View>\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n text: {\n fontSize: 14,\n },\n});\n"]}
@@ -7,30 +7,29 @@ exports.CandlestickChartDatetimeText = CandlestickChartDatetimeText;
7
7
 
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
 
10
- var _reactNativeRedash = require("react-native-redash");
11
-
12
10
  var _useDatetime = require("./useDatetime");
13
11
 
12
+ var _AnimatedText = require("../../components/AnimatedText");
13
+
14
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
15
 
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
 
18
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
-
20
18
  function CandlestickChartDatetimeText({
21
19
  locale,
22
20
  options,
23
21
  format,
24
22
  variant = 'formatted',
25
- ...props
23
+ style
26
24
  }) {
27
25
  const datetime = (0, _useDatetime.useCandlestickChartDatetime)({
28
26
  format,
29
27
  locale,
30
28
  options
31
29
  });
32
- return /*#__PURE__*/React.createElement(_reactNativeRedash.ReText, _extends({
33
- text: datetime[variant]
34
- }, props));
30
+ return /*#__PURE__*/React.createElement(_AnimatedText.AnimatedText, {
31
+ text: datetime[variant],
32
+ style: style
33
+ });
35
34
  }
36
35
  //# sourceMappingURL=DatetimeText.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["DatetimeText.tsx"],"names":["CandlestickChartDatetimeText","locale","options","format","variant","props","datetime"],"mappings":";;;;;;;AAAA;;AACA;;AAIA;;;;;;;;AAUO,SAASA,4BAAT,CAAsC;AAC3CC,EAAAA,MAD2C;AAE3CC,EAAAA,OAF2C;AAG3CC,EAAAA,MAH2C;AAI3CC,EAAAA,OAAO,GAAG,WAJiC;AAK3C,KAAGC;AALwC,CAAtC,EAM4B;AACjC,QAAMC,QAAQ,GAAG,8CAA4B;AAAEH,IAAAA,MAAF;AAAUF,IAAAA,MAAV;AAAkBC,IAAAA;AAAlB,GAA5B,CAAjB;AACA,sBAAO,oBAAC,yBAAD;AAAQ,IAAA,IAAI,EAAEI,QAAQ,CAACF,OAAD;AAAtB,KAAqCC,KAArC,EAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { ReText } from 'react-native-redash';\nimport type { TextProps as RNTextProps } from 'react-native';\nimport type Animated from 'react-native-reanimated';\n\nimport { useCandlestickChartDatetime } from './useDatetime';\n\ntype CandlestickChartPriceTextProps = {\n locale?: string;\n options?: { [key: string]: string };\n format?: any;\n variant?: 'formatted' | 'value';\n style?: Animated.AnimateProps<RNTextProps>['style'];\n};\n\nexport function CandlestickChartDatetimeText({\n locale,\n options,\n format,\n variant = 'formatted',\n ...props\n}: CandlestickChartPriceTextProps) {\n const datetime = useCandlestickChartDatetime({ format, locale, options });\n return <ReText text={datetime[variant]} {...props} />;\n}\n"]}
1
+ {"version":3,"sources":["DatetimeText.tsx"],"names":["CandlestickChartDatetimeText","locale","options","format","variant","style","datetime"],"mappings":";;;;;;;AAAA;;AAIA;;AAEA;;;;;;AAUO,SAASA,4BAAT,CAAsC;AAC3CC,EAAAA,MAD2C;AAE3CC,EAAAA,OAF2C;AAG3CC,EAAAA,MAH2C;AAI3CC,EAAAA,OAAO,GAAG,WAJiC;AAK3CC,EAAAA;AAL2C,CAAtC,EAM4B;AACjC,QAAMC,QAAQ,GAAG,8CAA4B;AAAEH,IAAAA,MAAF;AAAUF,IAAAA,MAAV;AAAkBC,IAAAA;AAAlB,GAA5B,CAAjB;AACA,sBAAO,oBAAC,0BAAD;AAAc,IAAA,IAAI,EAAEI,QAAQ,CAACF,OAAD,CAA5B;AAAuC,IAAA,KAAK,EAAEC;AAA9C,IAAP;AACD","sourcesContent":["import * as React from 'react';\nimport type { TextProps as RNTextProps } from 'react-native';\nimport type Animated from 'react-native-reanimated';\n\nimport { useCandlestickChartDatetime } from './useDatetime';\nimport type { TFormatterFn } from 'react-native-wagmi-charts';\nimport { AnimatedText } from '../../components/AnimatedText';\n\ntype CandlestickChartPriceTextProps = {\n locale?: string;\n options?: { [key: string]: string };\n format?: TFormatterFn<number>;\n variant?: 'formatted' | 'value';\n style?: Animated.AnimateProps<RNTextProps>['style'];\n};\n\nexport function CandlestickChartDatetimeText({\n locale,\n options,\n format,\n variant = 'formatted',\n style,\n}: CandlestickChartPriceTextProps) {\n const datetime = useCandlestickChartDatetime({ format, locale, options });\n return <AnimatedText text={datetime[variant]} style={style} />;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Line.tsx"],"names":["CandlestickChartLine","color","x","y","props","StyleSheet","absoluteFill"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAQO,MAAMA,oBAAoB,GAAG,CAAC;AACnCC,EAAAA,KAAK,GAAG,MAD2B;AAEnCC,EAAAA,CAFmC;AAGnCC,EAAAA,CAHmC;AAInC,KAAGC;AAJgC,CAAD,KAKH;AAC/B,sBACE,6BAAC,uBAAD;AAAK,IAAA,KAAK,EAAEC,wBAAWC;AAAvB,kBACE,6BAAC,oBAAD;AACE,IAAA,EAAE,EAAE,CADN;AAEE,IAAA,EAAE,EAAE,CAFN;AAGE,IAAA,EAAE,EAAEJ,CAHN;AAIE,IAAA,EAAE,EAAEC,CAJN;AAKE,IAAA,WAAW,EAAE,CALf;AAME,IAAA,MAAM,EAAEF,KANV;AAOE,IAAA,eAAe,EAAC;AAPlB,KAQMG,KARN,EADF,CADF;AAcD,CApBM","sourcesContent":["import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport Svg, { Line as SVGLine, LineProps } from 'react-native-svg';\n\nexport type CandlestickChartLineProps = LineProps & {\n color?: string;\n x: number;\n y: number;\n};\n\nexport const CandlestickChartLine = ({\n color = 'gray',\n x,\n y,\n ...props\n}: CandlestickChartLineProps) => {\n return (\n <Svg style={StyleSheet.absoluteFill}>\n <SVGLine\n x1={0}\n y1={0}\n x2={x}\n y2={y}\n strokeWidth={2}\n stroke={color}\n strokeDasharray=\"6 6\"\n {...props}\n />\n </Svg>\n );\n};\n"]}
1
+ {"version":3,"sources":["Line.tsx"],"names":["CandlestickChartLine","color","x","y","props","StyleSheet","absoluteFill"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAQO,MAAMA,oBAAoB,GAAG,CAAC;AACnCC,EAAAA,KAAK,GAAG,MAD2B;AAEnCC,EAAAA,CAFmC;AAGnCC,EAAAA,CAHmC;AAInC,KAAGC;AAJgC,CAAD,KAKH;AAC/B,sBACE,6BAAC,uBAAD;AAAK,IAAA,KAAK,EAAEC,wBAAWC;AAAvB,kBACE,6BAAC,oBAAD;AACE,IAAA,EAAE,EAAE,CADN;AAEE,IAAA,EAAE,EAAE,CAFN;AAGE,IAAA,EAAE,EAAEJ,CAHN;AAIE,IAAA,EAAE,EAAEC,CAJN;AAKE,IAAA,WAAW,EAAE,CALf;AAME,IAAA,MAAM,EAAEF,KANV;AAOE,IAAA,eAAe,EAAC;AAPlB,KAQMG,KARN,EADF,CADF;AAcD,CApBM","sourcesContent":["import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport Svg, { Line as SVGLine, LineProps } from 'react-native-svg';\n\nexport type CandlestickChartLineProps = Omit<LineProps, 'x' | 'y'> & {\n color?: string;\n x: number;\n y: number;\n};\n\nexport const CandlestickChartLine = ({\n color = 'gray',\n x,\n y,\n ...props\n}: CandlestickChartLineProps) => {\n return (\n <Svg style={StyleSheet.absoluteFill}>\n <SVGLine\n x1={0}\n y1={0}\n x2={x}\n y2={y}\n strokeWidth={2}\n stroke={color}\n strokeDasharray=\"6 6\"\n {...props}\n />\n </Svg>\n );\n};\n"]}
@@ -7,30 +7,29 @@ exports.CandlestickChartPriceText = CandlestickChartPriceText;
7
7
 
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
 
10
- var _reactNativeRedash = require("react-native-redash");
11
-
12
10
  var _usePrice = require("./usePrice");
13
11
 
12
+ var _AnimatedText = require("../../components/AnimatedText");
13
+
14
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
15
 
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
 
18
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
-
20
18
  function CandlestickChartPriceText({
21
19
  format,
22
20
  precision = 2,
23
21
  variant = 'formatted',
24
22
  type = 'crosshair',
25
- ...props
23
+ style
26
24
  }) {
27
25
  const price = (0, _usePrice.useCandlestickChartPrice)({
28
26
  format,
29
27
  precision,
30
28
  type
31
29
  });
32
- return /*#__PURE__*/React.createElement(_reactNativeRedash.ReText, _extends({
33
- text: price[variant]
34
- }, props));
30
+ return /*#__PURE__*/React.createElement(_AnimatedText.AnimatedText, {
31
+ text: price[variant],
32
+ style: style
33
+ });
35
34
  }
36
35
  //# sourceMappingURL=PriceText.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["PriceText.tsx"],"names":["CandlestickChartPriceText","format","precision","variant","type","props","price"],"mappings":";;;;;;;AAAA;;AACA;;AAKA;;;;;;;;AAUO,SAASA,yBAAT,CAAmC;AACxCC,EAAAA,MADwC;AAExCC,EAAAA,SAAS,GAAG,CAF4B;AAGxCC,EAAAA,OAAO,GAAG,WAH8B;AAIxCC,EAAAA,IAAI,GAAG,WAJiC;AAKxC,KAAGC;AALqC,CAAnC,EAM4B;AACjC,QAAMC,KAAK,GAAG,wCAAyB;AAAEL,IAAAA,MAAF;AAAUC,IAAAA,SAAV;AAAqBE,IAAAA;AAArB,GAAzB,CAAd;AACA,sBAAO,oBAAC,yBAAD;AAAQ,IAAA,IAAI,EAAEE,KAAK,CAACH,OAAD;AAAnB,KAAkCE,KAAlC,EAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { ReText } from 'react-native-redash';\nimport type { TextProps as RNTextProps } from 'react-native';\nimport type Animated from 'react-native-reanimated';\nimport type { TPriceType } from './types';\n\nimport { useCandlestickChartPrice } from './usePrice';\n\nexport type CandlestickChartPriceTextProps = {\n format?: any;\n precision?: number;\n variant?: 'formatted' | 'value';\n type?: TPriceType;\n style?: Animated.AnimateProps<RNTextProps>['style'];\n};\n\nexport function CandlestickChartPriceText({\n format,\n precision = 2,\n variant = 'formatted',\n type = 'crosshair',\n ...props\n}: CandlestickChartPriceTextProps) {\n const price = useCandlestickChartPrice({ format, precision, type });\n return <ReText text={price[variant]} {...props} />;\n}\n"]}
1
+ {"version":3,"sources":["PriceText.tsx"],"names":["CandlestickChartPriceText","format","precision","variant","type","style","price"],"mappings":";;;;;;;AAAA;;AAKA;;AACA;;;;;;AAUO,SAASA,yBAAT,CAAmC;AACxCC,EAAAA,MADwC;AAExCC,EAAAA,SAAS,GAAG,CAF4B;AAGxCC,EAAAA,OAAO,GAAG,WAH8B;AAIxCC,EAAAA,IAAI,GAAG,WAJiC;AAKxCC,EAAAA;AALwC,CAAnC,EAM4B;AACjC,QAAMC,KAAK,GAAG,wCAAyB;AAAEL,IAAAA,MAAF;AAAUC,IAAAA,SAAV;AAAqBE,IAAAA;AAArB,GAAzB,CAAd;AACA,sBAAO,oBAAC,0BAAD;AAAc,IAAA,IAAI,EAAEE,KAAK,CAACH,OAAD,CAAzB;AAAoC,IAAA,KAAK,EAAEE;AAA3C,IAAP;AACD","sourcesContent":["import * as React from 'react';\nimport type { TextProps as RNTextProps } from 'react-native';\nimport type Animated from 'react-native-reanimated';\nimport type { TFormatterFn, TPriceType } from './types';\n\nimport { useCandlestickChartPrice } from './usePrice';\nimport { AnimatedText } from '../../components/AnimatedText';\n\nexport type CandlestickChartPriceTextProps = {\n format?: TFormatterFn<string>;\n precision?: number;\n variant?: 'formatted' | 'value';\n type?: TPriceType;\n style?: Animated.AnimateProps<RNTextProps>['style'];\n};\n\nexport function CandlestickChartPriceText({\n format,\n precision = 2,\n variant = 'formatted',\n type = 'crosshair',\n style,\n}: CandlestickChartPriceTextProps) {\n const price = useCandlestickChartPrice({ format, precision, type });\n return <AnimatedText text={price[variant]} style={style} />;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["useCandleData.ts"],"names":["useCandleData","currentX","data","step","candle","value","timestamp","low","open","high","close","Math","floor"],"mappings":";;;;;;;AAAA;;AAEA;;AAEO,SAASA,aAAT,GAAyB;AAC9B,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,IAAZ;AAAkBC,IAAAA;AAAlB,MAA2B,+CAAjC;AAEA,QAAMC,MAAM,GAAG,4CAAgB,MAAM;AACnC,QAAIH,QAAQ,CAACI,KAAT,KAAmB,CAAC,CAAxB,EAA2B;AACzB,aAAO;AAAEC,QAAAA,SAAS,EAAE,CAAC,CAAd;AAAiBC,QAAAA,GAAG,EAAE,CAAC,CAAvB;AAA0BC,QAAAA,IAAI,EAAE,CAAC,CAAjC;AAAoCC,QAAAA,IAAI,EAAE,CAAC,CAA3C;AAA8CC,QAAAA,KAAK,EAAE,CAAC;AAAtD,OAAP;AACD;;AACD,WAAOR,IAAI,CAACS,IAAI,CAACC,KAAL,CAAWX,QAAQ,CAACI,KAAT,GAAiBF,IAA5B,CAAD,CAAX;AACD,GALc,CAAf;AAOA,SAAOC,MAAP;AACD","sourcesContent":["import { useDerivedValue } from 'react-native-reanimated';\n\nimport { useCandlestickChart } from './useCandlestickChart';\n\nexport function useCandleData() {\n const { currentX, data, step } = useCandlestickChart();\n\n const candle = useDerivedValue(() => {\n if (currentX.value === -1) {\n return { timestamp: -1, low: -1, open: -1, high: -1, close: -1 };\n }\n return data[Math.floor(currentX.value / step)];\n });\n\n return candle;\n}\n"]}
1
+ {"version":3,"sources":["useCandleData.ts"],"names":["useCandleData","currentX","data","step","candle","value","timestamp","low","open","high","close","Math","floor"],"mappings":";;;;;;;AAAA;;AAGA;;AAEO,SAASA,aAAT,GAAkE;AACvE,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,IAAZ;AAAkBC,IAAAA;AAAlB,MAA2B,+CAAjC;AAEA,QAAMC,MAAM,GAAG,4CAAgB,MAAM;AACnC,QAAIH,QAAQ,CAACI,KAAT,KAAmB,CAAC,CAAxB,EAA2B;AACzB,aAAO;AAAEC,QAAAA,SAAS,EAAE,CAAC,CAAd;AAAiBC,QAAAA,GAAG,EAAE,CAAC,CAAvB;AAA0BC,QAAAA,IAAI,EAAE,CAAC,CAAjC;AAAoCC,QAAAA,IAAI,EAAE,CAAC,CAA3C;AAA8CC,QAAAA,KAAK,EAAE,CAAC;AAAtD,OAAP;AACD;;AACD,WAAOR,IAAI,CAACS,IAAI,CAACC,KAAL,CAAWX,QAAQ,CAACI,KAAT,GAAiBF,IAA5B,CAAD,CAAX;AACD,GALc,CAAf;AAOA,SAAOC,MAAP;AACD","sourcesContent":["import Animated, { useDerivedValue } from 'react-native-reanimated';\nimport type { TCandle } from './types';\n\nimport { useCandlestickChart } from './useCandlestickChart';\n\nexport function useCandleData(): Readonly<Animated.SharedValue<TCandle>> {\n const { currentX, data, step } = useCandlestickChart();\n\n const candle = useDerivedValue(() => {\n if (currentX.value === -1) {\n return { timestamp: -1, low: -1, open: -1, high: -1, close: -1 };\n }\n return data[Math.floor(currentX.value / step)];\n });\n\n return candle;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["useCandlestickChart.ts"],"names":["useCandlestickChart","React","useContext","CandlestickChartContext"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;AAEO,SAASA,mBAAT,GAA+B;AACpC,SAAOC,KAAK,CAACC,UAAN,CAAiBC,gCAAjB,CAAP;AACD","sourcesContent":["import * as React from 'react';\n\nimport { CandlestickChartContext } from './Context';\n\nexport function useCandlestickChart() {\n return React.useContext(CandlestickChartContext);\n}\n"]}
1
+ {"version":3,"sources":["useCandlestickChart.ts"],"names":["useCandlestickChart","React","useContext","CandlestickChartContext"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;AAGO,SAASA,mBAAT,GAAyC;AAC9C,SAAOC,KAAK,CAACC,UAAN,CAAiBC,gCAAjB,CAAP;AACD","sourcesContent":["import * as React from 'react';\n\nimport { CandlestickChartContext } from './Context';\nimport type { TContext } from './types';\n\nexport function useCandlestickChart(): TContext {\n return React.useContext(CandlestickChartContext);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["useDatetime.ts"],"names":["useCandlestickChartDatetime","format","locale","options","candle","timestamp","value","timestampString","toString","formatted","formattedDatetime"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEO,SAASA,2BAAT,CAAqC;AAC1CC,EAAAA,MAD0C;AAE1CC,EAAAA,MAF0C;AAG1CC,EAAAA;AAH0C,IAQxC,EARG,EAQC;AACN,QAAMC,MAAM,GAAG,mCAAf;AAEA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,WAAOD,MAAM,CAACE,KAAP,CAAaD,SAApB;AACD,GAFiB,CAAlB;AAIA,QAAME,eAAe,GAAG,4CAAgB,MAAM;AAC5C,QAAIF,SAAS,CAACC,KAAV,KAAoB,CAAC,CAAzB,EAA4B,OAAO,EAAP;AAC5B,WAAOD,SAAS,CAACC,KAAV,CAAgBE,QAAhB,EAAP;AACD,GAHuB,CAAxB;AAKA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,QAAIJ,SAAS,CAACC,KAAV,KAAoB,CAAC,CAAzB,EAA4B,OAAO,EAAP;AAC5B,UAAMI,iBAAiB,GAAG,2BAAe;AACvCJ,MAAAA,KAAK,EAAED,SAAS,CAACC,KADsB;AAEvCJ,MAAAA,MAFuC;AAGvCC,MAAAA;AAHuC,KAAf,CAA1B;AAKA,WAAOF,MAAM,GACTA,MAAM,CAAC;AAAEK,MAAAA,KAAK,EAAED,SAAS,CAACC,KAAnB;AAA0BG,MAAAA,SAAS,EAAEC;AAArC,KAAD,CADG,GAETA,iBAFJ;AAGD,GAViB,CAAlB;AAYA,SAAO;AAAEJ,IAAAA,KAAK,EAAEC,eAAT;AAA0BE,IAAAA;AAA1B,GAAP;AACD","sourcesContent":["import { useDerivedValue } from 'react-native-reanimated';\n\nimport { formatDatetime } from '../../utils';\nimport { useCandleData } from './useCandleData';\n\nexport function useCandlestickChartDatetime({\n format,\n locale,\n options,\n}: {\n format?: any;\n locale?: string;\n options?: { [key: string]: string };\n} = {}) {\n const candle = useCandleData();\n\n const timestamp = useDerivedValue(() => {\n return candle.value.timestamp;\n });\n\n const timestampString = useDerivedValue(() => {\n if (timestamp.value === -1) return '';\n return timestamp.value.toString();\n });\n\n const formatted = useDerivedValue(() => {\n if (timestamp.value === -1) return '';\n const formattedDatetime = formatDatetime({\n value: timestamp.value,\n locale,\n options,\n });\n return format\n ? format({ value: timestamp.value, formatted: formattedDatetime })\n : formattedDatetime;\n });\n\n return { value: timestampString, formatted };\n}\n"]}
1
+ {"version":3,"sources":["useDatetime.ts"],"names":["useCandlestickChartDatetime","format","locale","options","candle","timestamp","value","timestampString","toString","formatted","formattedDatetime"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEO,SAASA,2BAAT,CAAqC;AAC1CC,EAAAA,MAD0C;AAE1CC,EAAAA,MAF0C;AAG1CC,EAAAA;AAH0C,IAQxC,EARG,EAWL;AACA,QAAMC,MAAM,GAAG,mCAAf;AAEA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,WAAOD,MAAM,CAACE,KAAP,CAAaD,SAApB;AACD,GAFiB,CAAlB;AAIA,QAAME,eAAe,GAAG,4CAAgB,MAAM;AAC5C,QAAIF,SAAS,CAACC,KAAV,KAAoB,CAAC,CAAzB,EAA4B,OAAO,EAAP;AAC5B,WAAOD,SAAS,CAACC,KAAV,CAAgBE,QAAhB,EAAP;AACD,GAHuB,CAAxB;AAKA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,QAAIJ,SAAS,CAACC,KAAV,KAAoB,CAAC,CAAzB,EAA4B,OAAO,EAAP;AAC5B,UAAMI,iBAAiB,GAAG,2BAAe;AACvCJ,MAAAA,KAAK,EAAED,SAAS,CAACC,KADsB;AAEvCJ,MAAAA,MAFuC;AAGvCC,MAAAA;AAHuC,KAAf,CAA1B;AAKA,WAAOF,MAAM,GACTA,MAAM,CAAC;AAAEK,MAAAA,KAAK,EAAED,SAAS,CAACC,KAAnB;AAA0BG,MAAAA,SAAS,EAAEC;AAArC,KAAD,CADG,GAETA,iBAFJ;AAGD,GAViB,CAAlB;AAYA,SAAO;AAAEJ,IAAAA,KAAK,EAAEC,eAAT;AAA0BE,IAAAA;AAA1B,GAAP;AACD","sourcesContent":["import Animated, { useDerivedValue } from 'react-native-reanimated';\n\nimport { formatDatetime } from '../../utils';\nimport type { TFormatterFn } from './types';\nimport { useCandleData } from './useCandleData';\n\nexport function useCandlestickChartDatetime({\n format,\n locale,\n options,\n}: {\n format?: TFormatterFn<number>;\n locale?: string;\n options?: { [key: string]: string };\n} = {}): {\n value: Readonly<Animated.SharedValue<string>>;\n formatted: Readonly<Animated.SharedValue<string>>;\n} {\n const candle = useCandleData();\n\n const timestamp = useDerivedValue(() => {\n return candle.value.timestamp;\n });\n\n const timestampString = useDerivedValue(() => {\n if (timestamp.value === -1) return '';\n return timestamp.value.toString();\n });\n\n const formatted = useDerivedValue(() => {\n if (timestamp.value === -1) return '';\n const formattedDatetime = formatDatetime({\n value: timestamp.value,\n locale,\n options,\n });\n return format\n ? format({ value: timestamp.value, formatted: formattedDatetime })\n : formattedDatetime;\n });\n\n return { value: timestampString, formatted };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["usePrice.ts"],"names":["useCandlestickChartPrice","format","precision","type","currentY","domain","height","candle","float","price","y","value","Math","min","max","maxHeight","toFixed","toString","formatted","formattedPrice"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AAEA;;AAEO,SAASA,wBAAT,CAAkC;AACvCC,EAAAA,MADuC;AAEvCC,EAAAA,SAAS,GAAG,CAF2B;AAGvCC,EAAAA,IAAI,GAAG;AAHgC,IAIoB,EAJtD,EAI0D;AAC/D,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoBC,IAAAA;AAApB,MAA+B,+CAArC;AACA,QAAMC,MAAM,GAAG,mCAAf;AAEA,QAAMC,KAAK,GAAG,4CAAgB,MAAM;AAClC,QAAIC,KAAK,GAAG,CAAZ;;AACA,QAAIN,IAAI,KAAK,WAAb,EAA0B;AACxBM,MAAAA,KAAK,GAAG,sBAAS;AACfC,QAAAA,CAAC,EAAEN,QAAQ,CAACO,KADG;AAEfN,QAAAA,MAAM,EAAE,CAACO,IAAI,CAACC,GAAL,CAAS,GAAGR,MAAZ,CAAD,EAAsBO,IAAI,CAACE,GAAL,CAAS,GAAGT,MAAZ,CAAtB,CAFO;AAGfU,QAAAA,SAAS,EAAET;AAHI,OAAT,CAAR;AAKD,KAND,MAMO;AACLG,MAAAA,KAAK,GAAGF,MAAM,CAACI,KAAP,CAAaR,IAAb,CAAR;AACD;;AACD,QAAIM,KAAK,KAAK,CAAC,CAAf,EAAkB,OAAO,EAAP;AAClB,WAAOA,KAAK,CAACO,OAAN,CAAcd,SAAd,EAAyBe,QAAzB,EAAP;AACD,GAba,CAAd;AAcA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,QAAI,CAACV,KAAK,CAACG,KAAX,EAAkB,OAAO,EAAP;AAClB,UAAMQ,cAAc,GAAG,wBAAY;AAAER,MAAAA,KAAK,EAAEH,KAAK,CAACG;AAAf,KAAZ,CAAvB;AACA,WAAOV,MAAM,GACTA,MAAM,CAAC;AAAEU,MAAAA,KAAK,EAAEH,KAAK,CAACG,KAAf;AAAsBO,MAAAA,SAAS,EAAEC;AAAjC,KAAD,CADG,GAETA,cAFJ;AAGD,GANiB,CAAlB;AAQA,SAAO;AAAER,IAAAA,KAAK,EAAEH,KAAT;AAAgBU,IAAAA;AAAhB,GAAP;AACD","sourcesContent":["import { useDerivedValue } from 'react-native-reanimated';\n\nimport { formatPrice } from '../../utils';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport { getPrice } from './utils';\nimport type { TPriceType } from './types';\nimport { useCandleData } from './useCandleData';\n\nexport function useCandlestickChartPrice({\n format,\n precision = 2,\n type = 'crosshair',\n}: { format?: any; precision?: number; type?: TPriceType } = {}) {\n const { currentY, domain, height } = useCandlestickChart();\n const candle = useCandleData();\n\n const float = useDerivedValue(() => {\n let price = 0;\n if (type === 'crosshair') {\n price = getPrice({\n y: currentY.value,\n domain: [Math.min(...domain), Math.max(...domain)],\n maxHeight: height,\n });\n } else {\n price = candle.value[type];\n }\n if (price === -1) return '';\n return price.toFixed(precision).toString();\n });\n const formatted = useDerivedValue(() => {\n if (!float.value) return '';\n const formattedPrice = formatPrice({ value: float.value });\n return format\n ? format({ value: float.value, formatted: formattedPrice })\n : formattedPrice;\n });\n\n return { value: float, formatted };\n}\n"]}
1
+ {"version":3,"sources":["usePrice.ts"],"names":["useCandlestickChartPrice","format","precision","type","currentY","domain","height","candle","float","price","y","value","Math","min","max","maxHeight","toFixed","toString","formatted","formattedPrice"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AAEA;;AAEO,SAASA,wBAAT,CAAkC;AACvCC,EAAAA,MADuC;AAEvCC,EAAAA,SAAS,GAAG,CAF2B;AAGvCC,EAAAA,IAAI,GAAG;AAHgC,IAQrC,EARG,EAWL;AACA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoBC,IAAAA;AAApB,MAA+B,+CAArC;AACA,QAAMC,MAAM,GAAG,mCAAf;AAEA,QAAMC,KAAK,GAAG,4CAAgB,MAAM;AAClC,QAAIC,KAAK,GAAG,CAAZ;;AACA,QAAIN,IAAI,KAAK,WAAb,EAA0B;AACxBM,MAAAA,KAAK,GAAG,sBAAS;AACfC,QAAAA,CAAC,EAAEN,QAAQ,CAACO,KADG;AAEfN,QAAAA,MAAM,EAAE,CAACO,IAAI,CAACC,GAAL,CAAS,GAAGR,MAAZ,CAAD,EAAsBO,IAAI,CAACE,GAAL,CAAS,GAAGT,MAAZ,CAAtB,CAFO;AAGfU,QAAAA,SAAS,EAAET;AAHI,OAAT,CAAR;AAKD,KAND,MAMO;AACLG,MAAAA,KAAK,GAAGF,MAAM,CAACI,KAAP,CAAaR,IAAb,CAAR;AACD;;AACD,QAAIM,KAAK,KAAK,CAAC,CAAf,EAAkB,OAAO,EAAP;AAClB,WAAOA,KAAK,CAACO,OAAN,CAAcd,SAAd,EAAyBe,QAAzB,EAAP;AACD,GAba,CAAd;AAcA,QAAMC,SAAS,GAAG,4CAAgB,MAAM;AACtC,QAAI,CAACV,KAAK,CAACG,KAAX,EAAkB,OAAO,EAAP;AAClB,UAAMQ,cAAc,GAAG,wBAAY;AAAER,MAAAA,KAAK,EAAEH,KAAK,CAACG;AAAf,KAAZ,CAAvB;AACA,WAAOV,MAAM,GACTA,MAAM,CAAC;AAAEU,MAAAA,KAAK,EAAEH,KAAK,CAACG,KAAf;AAAsBO,MAAAA,SAAS,EAAEC;AAAjC,KAAD,CADG,GAETA,cAFJ;AAGD,GANiB,CAAlB;AAQA,SAAO;AAAER,IAAAA,KAAK,EAAEH,KAAT;AAAgBU,IAAAA;AAAhB,GAAP;AACD","sourcesContent":["import Animated, { useDerivedValue } from 'react-native-reanimated';\n\nimport { formatPrice } from '../../utils';\nimport { useCandlestickChart } from './useCandlestickChart';\nimport { getPrice } from './utils';\nimport type { TFormatterFn, TPriceType } from './types';\nimport { useCandleData } from './useCandleData';\n\nexport function useCandlestickChartPrice({\n format,\n precision = 2,\n type = 'crosshair',\n}: {\n format?: TFormatterFn<string>;\n precision?: number;\n type?: TPriceType;\n} = {}): {\n value: Readonly<Animated.SharedValue<string>>;\n formatted: Readonly<Animated.SharedValue<string>>;\n} {\n const { currentY, domain, height } = useCandlestickChart();\n const candle = useCandleData();\n\n const float = useDerivedValue(() => {\n let price = 0;\n if (type === 'crosshair') {\n price = getPrice({\n y: currentY.value,\n domain: [Math.min(...domain), Math.max(...domain)],\n maxHeight: height,\n });\n } else {\n price = candle.value[type];\n }\n if (price === -1) return '';\n return price.toFixed(precision).toString();\n });\n const formatted = useDerivedValue(() => {\n if (!float.value) return '';\n const formattedPrice = formatPrice({ value: float.value });\n return format\n ? format({ value: float.value, formatted: formattedPrice })\n : formattedPrice;\n });\n\n return { value: float, formatted };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["getDomain","rows","values","map","high","low","flat","min","Math","max","getY","value","domain","maxHeight","Extrapolate","CLAMP","getHeight","getPrice","y","reverse"],"mappings":";;;;;;;;;;AAAA;;AAIO,SAASA,SAAT,CAAmBC,IAAnB,EAAsD;AAC3D;;AACA,QAAMC,MAAM,GAAGD,IAAI,CAACE,GAAL,CAAS,CAAC;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAD,KAAmB,CAACD,IAAD,EAAOC,GAAP,CAA5B,EAAyCC,IAAzC,EAAf;AACA,QAAMC,GAAG,GAAGC,IAAI,CAACD,GAAL,CAAS,GAAGL,MAAZ,CAAZ;AACA,QAAMO,GAAG,GAAGD,IAAI,CAACC,GAAL,CAAS,GAAGP,MAAZ,CAAZ;AACA,SAAO,CAACK,GAAG,GAAG,CAACE,GAAG,GAAGF,GAAP,IAAc,KAArB,EAA4BE,GAAG,GAAG,CAACA,GAAG,GAAGF,GAAP,IAAc,KAAhD,CAAP;AACD;;AAEM,SAASG,IAAT,CAAc;AACnBC,EAAAA,KADmB;AAEnBC,EAAAA,MAFmB;AAGnBC,EAAAA;AAHmB,CAAd,EAQJ;AACD;;AACA,SAAO,wCAAYF,KAAZ,EAAmBC,MAAnB,EAA2B,CAACC,SAAD,EAAY,CAAZ,CAA3B,EAA2CC,mCAAYC,KAAvD,CAAP;AACD;;AAEM,SAASC,SAAT,CAAmB;AACxBL,EAAAA,KADwB;AAExBC,EAAAA,MAFwB;AAGxBC,EAAAA;AAHwB,CAAnB,EAQJ;AACD;;AACA,SAAO,wCACLF,KADK,EAEL,CAAC,CAAD,EAAIH,IAAI,CAACC,GAAL,CAAS,GAAGG,MAAZ,IAAsBJ,IAAI,CAACD,GAAL,CAAS,GAAGK,MAAZ,CAA1B,CAFK,EAGL,CAAC,CAAD,EAAIC,SAAJ,CAHK,EAILC,mCAAYC,KAJP,CAAP;AAMD;;AAEM,SAASE,QAAT,CAAkB;AACvBC,EAAAA,CADuB;AAEvBN,EAAAA,MAFuB;AAGvBC,EAAAA;AAHuB,CAAlB,EAQJ;AACD;;AACA,MAAIK,CAAC,KAAK,CAAC,CAAX,EAAc,OAAO,CAAC,CAAR;AACd,SAAO,wCAAYA,CAAZ,EAAe,CAAC,CAAD,EAAIL,SAAJ,CAAf,EAA+BD,MAAM,CAACO,OAAP,EAA/B,EAAiDL,mCAAYC,KAA7D,CAAP;AACD","sourcesContent":["import { interpolate, Extrapolate } from 'react-native-reanimated';\n\nimport type { TCandle, TDomain } from './types';\n\nexport function getDomain(rows: TCandle[]): [number, number] {\n 'worklet';\n const values = rows.map(({ high, low }) => [high, low]).flat();\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min - (max - min) * 0.025, max + (max - min) * 0.025];\n}\n\nexport function getY({\n value,\n domain,\n maxHeight,\n}: {\n value: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n return interpolate(value, domain, [maxHeight, 0], Extrapolate.CLAMP);\n}\n\nexport function getHeight({\n value,\n domain,\n maxHeight,\n}: {\n value: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n return interpolate(\n value,\n [0, Math.max(...domain) - Math.min(...domain)],\n [0, maxHeight],\n Extrapolate.CLAMP\n );\n}\n\nexport function getPrice({\n y,\n domain,\n maxHeight,\n}: {\n y: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n if (y === -1) return -1;\n return interpolate(y, [0, maxHeight], domain.reverse(), Extrapolate.CLAMP);\n}\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["getDomain","rows","values","map","high","low","flat","min","Math","max","getY","value","domain","maxHeight","Extrapolate","CLAMP","getHeight","getPrice","y","reverse"],"mappings":";;;;;;;;;;AAAA;;AAIO,SAASA,SAAT,CAAmBC,IAAnB,EAAgE;AACrE;;AACA,QAAMC,MAAM,GAAGD,IAAI,CAACE,GAAL,CAAS,CAAC;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAD,KAAmB,CAACD,IAAD,EAAOC,GAAP,CAA5B,EAAyCC,IAAzC,EAAf;AACA,QAAMC,GAAG,GAAGC,IAAI,CAACD,GAAL,CAAS,GAAGL,MAAZ,CAAZ;AACA,QAAMO,GAAG,GAAGD,IAAI,CAACC,GAAL,CAAS,GAAGP,MAAZ,CAAZ;AACA,SAAO,CAACK,GAAG,GAAG,CAACE,GAAG,GAAGF,GAAP,IAAc,KAArB,EAA4BE,GAAG,GAAG,CAACA,GAAG,GAAGF,GAAP,IAAc,KAAhD,CAAP;AACD;;AAEM,SAASG,IAAT,CAAc;AACnBC,EAAAA,KADmB;AAEnBC,EAAAA,MAFmB;AAGnBC,EAAAA;AAHmB,CAAd,EAQJ;AACD;;AACA,SAAO,wCAAYF,KAAZ,EAAmBC,MAAnB,EAA2B,CAACC,SAAD,EAAY,CAAZ,CAA3B,EAA2CC,mCAAYC,KAAvD,CAAP;AACD;;AAEM,SAASC,SAAT,CAAmB;AACxBL,EAAAA,KADwB;AAExBC,EAAAA,MAFwB;AAGxBC,EAAAA;AAHwB,CAAnB,EAQJ;AACD;;AACA,SAAO,wCACLF,KADK,EAEL,CAAC,CAAD,EAAIH,IAAI,CAACC,GAAL,CAAS,GAAGG,MAAZ,IAAsBJ,IAAI,CAACD,GAAL,CAAS,GAAGK,MAAZ,CAA1B,CAFK,EAGL,CAAC,CAAD,EAAIC,SAAJ,CAHK,EAILC,mCAAYC,KAJP,CAAP;AAMD;;AAEM,SAASE,QAAT,CAAkB;AACvBC,EAAAA,CADuB;AAEvBN,EAAAA,MAFuB;AAGvBC,EAAAA;AAHuB,CAAlB,EAQJ;AACD;;AACA,MAAIK,CAAC,KAAK,CAAC,CAAX,EAAc,OAAO,CAAC,CAAR;AACd,SAAO,wCAAYA,CAAZ,EAAe,CAAC,CAAD,EAAIL,SAAJ,CAAf,EAA+BD,MAAM,CAACO,OAAP,EAA/B,EAAiDL,mCAAYC,KAA7D,CAAP;AACD","sourcesContent":["import { interpolate, Extrapolate } from 'react-native-reanimated';\n\nimport type { TCandle, TDomain } from './types';\n\nexport function getDomain(rows: TCandle[]): [min: number, max: number] {\n 'worklet';\n const values = rows.map(({ high, low }) => [high, low]).flat();\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min - (max - min) * 0.025, max + (max - min) * 0.025];\n}\n\nexport function getY({\n value,\n domain,\n maxHeight,\n}: {\n value: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n return interpolate(value, domain, [maxHeight, 0], Extrapolate.CLAMP);\n}\n\nexport function getHeight({\n value,\n domain,\n maxHeight,\n}: {\n value: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n return interpolate(\n value,\n [0, Math.max(...domain) - Math.min(...domain)],\n [0, maxHeight],\n Extrapolate.CLAMP\n );\n}\n\nexport function getPrice({\n y,\n domain,\n maxHeight,\n}: {\n y: number;\n domain: TDomain;\n maxHeight: number;\n}) {\n 'worklet';\n if (y === -1) return -1;\n return interpolate(y, [0, maxHeight], domain.reverse(), Extrapolate.CLAMP);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Chart.tsx"],"names":["LineChartDimensionsContext","React","createContext","width","height","path","gutter","screenWidth","Dimensions","get","LineChart","children","yGutter","shape","props","data","useMemo","length","contextValue"],"mappings":";;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;AAEO,MAAMA,0BAA0B,gBAAGC,KAAK,CAACC,aAAN,CAAoB;AAC5DC,EAAAA,KAAK,EAAE,CADqD;AAE5DC,EAAAA,MAAM,EAAE,CAFoD;AAG5DC,EAAAA,IAAI,EAAE,EAHsD;AAI5DC,EAAAA,MAAM,EAAE;AAJoD,CAApB,CAAnC;;;AAeP,MAAM;AAAEH,EAAAA,KAAK,EAAEI;AAAT,IAAyBC,wBAAWC,GAAX,CAAe,QAAf,CAA/B;;AAEO,SAASC,SAAT,CAAmB;AACxBC,EAAAA,QADwB;AAExBC,EAAAA,OAAO,GAAG,EAFc;AAGxBT,EAAAA,KAAK,GAAGI,WAHgB;AAIxBH,EAAAA,MAAM,GAAGG,WAJe;AAKxBM,EAAAA,KALwB;AAMxB,KAAGC;AANqB,CAAnB,EAOY;AACjB,QAAM;AAAEC,IAAAA;AAAF,MAAW,iCAAjB;AAEA,QAAMV,IAAI,GAAGJ,KAAK,CAACe,OAAN,CAAc,MAAM;AAC/B,QAAID,IAAI,IAAIA,IAAI,CAACE,MAAL,GAAc,CAA1B,EAA6B;AAC3B,aAAO,oBAAQ;AAAEF,QAAAA,IAAF;AAAQZ,QAAAA,KAAR;AAAeC,QAAAA,MAAf;AAAuBE,QAAAA,MAAM,EAAEM,OAA/B;AAAwCC,QAAAA;AAAxC,OAAR,CAAP;AACD;;AACD,WAAO,EAAP;AACD,GALY,EAKV,CAACE,IAAD,EAAOZ,KAAP,EAAcC,MAAd,EAAsBQ,OAAtB,EAA+BC,KAA/B,CALU,CAAb;AAOA,QAAMK,YAAY,GAAGjB,KAAK,CAACe,OAAN,CACnB,OAAO;AACLV,IAAAA,MAAM,EAAEM,OADH;AAELP,IAAAA,IAFK;AAGLF,IAAAA,KAHK;AAILC,IAAAA;AAJK,GAAP,CADmB,EAOnB,CAACA,MAAD,EAASC,IAAT,EAAeF,KAAf,EAAsBS,OAAtB,CAPmB,CAArB;AAUA,sBACE,oBAAC,0BAAD,CAA4B,QAA5B;AAAqC,IAAA,KAAK,EAAEM;AAA5C,kBACE,oBAAC,iBAAD,EAAUJ,KAAV,EAAkBH,QAAlB,CADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport { Dimensions, View, ViewProps } from 'react-native';\n\nimport { useLineChart } from './useLineChart';\nimport { getPath } from './utils';\n\nexport const LineChartDimensionsContext = React.createContext({\n width: 0,\n height: 0,\n path: '',\n gutter: 0,\n});\n\ntype LineChartProps = ViewProps & {\n children: React.ReactNode;\n yGutter?: number;\n width?: number;\n height?: number;\n shape?: any;\n};\n\nconst { width: screenWidth } = Dimensions.get('window');\n\nexport function LineChart({\n children,\n yGutter = 16,\n width = screenWidth,\n height = screenWidth,\n shape,\n ...props\n}: LineChartProps) {\n const { data } = useLineChart();\n\n const path = React.useMemo(() => {\n if (data && data.length > 0) {\n return getPath({ data, width, height, gutter: yGutter, shape });\n }\n return '';\n }, [data, width, height, yGutter, shape]);\n\n const contextValue = React.useMemo(\n () => ({\n gutter: yGutter,\n path,\n width,\n height,\n }),\n [height, path, width, yGutter]\n );\n\n return (\n <LineChartDimensionsContext.Provider value={contextValue}>\n <View {...props}>{children}</View>\n </LineChartDimensionsContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"sources":["Chart.tsx"],"names":["LineChartDimensionsContext","React","createContext","width","height","path","gutter","screenWidth","Dimensions","get","LineChart","children","yGutter","shape","props","data","useMemo","length","contextValue"],"mappings":";;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;AAEO,MAAMA,0BAA0B,gBAAGC,KAAK,CAACC,aAAN,CAAoB;AAC5DC,EAAAA,KAAK,EAAE,CADqD;AAE5DC,EAAAA,MAAM,EAAE,CAFoD;AAG5DC,EAAAA,IAAI,EAAE,EAHsD;AAI5DC,EAAAA,MAAM,EAAE;AAJoD,CAApB,CAAnC;;;AAeP,MAAM;AAAEH,EAAAA,KAAK,EAAEI;AAAT,IAAyBC,wBAAWC,GAAX,CAAe,QAAf,CAA/B;;AAEO,SAASC,SAAT,CAAmB;AACxBC,EAAAA,QADwB;AAExBC,EAAAA,OAAO,GAAG,EAFc;AAGxBT,EAAAA,KAAK,GAAGI,WAHgB;AAIxBH,EAAAA,MAAM,GAAGG,WAJe;AAKxBM,EAAAA,KALwB;AAMxB,KAAGC;AANqB,CAAnB,EAOY;AACjB,QAAM;AAAEC,IAAAA;AAAF,MAAW,iCAAjB;AAEA,QAAMV,IAAI,GAAGJ,KAAK,CAACe,OAAN,CAAc,MAAM;AAC/B,QAAID,IAAI,IAAIA,IAAI,CAACE,MAAL,GAAc,CAA1B,EAA6B;AAC3B,aAAO,oBAAQ;AAAEF,QAAAA,IAAF;AAAQZ,QAAAA,KAAR;AAAeC,QAAAA,MAAf;AAAuBE,QAAAA,MAAM,EAAEM,OAA/B;AAAwCC,QAAAA;AAAxC,OAAR,CAAP;AACD;;AACD,WAAO,EAAP;AACD,GALY,EAKV,CAACE,IAAD,EAAOZ,KAAP,EAAcC,MAAd,EAAsBQ,OAAtB,EAA+BC,KAA/B,CALU,CAAb;AAOA,QAAMK,YAAY,GAAGjB,KAAK,CAACe,OAAN,CACnB,OAAO;AACLV,IAAAA,MAAM,EAAEM,OADH;AAELP,IAAAA,IAFK;AAGLF,IAAAA,KAHK;AAILC,IAAAA;AAJK,GAAP,CADmB,EAOnB,CAACA,MAAD,EAASC,IAAT,EAAeF,KAAf,EAAsBS,OAAtB,CAPmB,CAArB;AAUA,sBACE,oBAAC,0BAAD,CAA4B,QAA5B;AAAqC,IAAA,KAAK,EAAEM;AAA5C,kBACE,oBAAC,iBAAD,EAAUJ,KAAV,EAAkBH,QAAlB,CADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport { Dimensions, View, ViewProps } from 'react-native';\n\nimport { useLineChart } from './useLineChart';\nimport { getPath } from './utils';\n\nexport const LineChartDimensionsContext = React.createContext({\n width: 0,\n height: 0,\n path: '',\n gutter: 0,\n});\n\ntype LineChartProps = ViewProps & {\n children: React.ReactNode;\n yGutter?: number;\n width?: number;\n height?: number;\n shape?: string;\n};\n\nconst { width: screenWidth } = Dimensions.get('window');\n\nexport function LineChart({\n children,\n yGutter = 16,\n width = screenWidth,\n height = screenWidth,\n shape,\n ...props\n}: LineChartProps) {\n const { data } = useLineChart();\n\n const path = React.useMemo(() => {\n if (data && data.length > 0) {\n return getPath({ data, width, height, gutter: yGutter, shape });\n }\n return '';\n }, [data, width, height, yGutter, shape]);\n\n const contextValue = React.useMemo(\n () => ({\n gutter: yGutter,\n path,\n width,\n height,\n }),\n [height, path, width, yGutter]\n );\n\n return (\n <LineChartDimensionsContext.Provider value={contextValue}>\n <View {...props}>{children}</View>\n </LineChartDimensionsContext.Provider>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["Cursor.tsx"],"names":["CursorContext","React","createContext","type","LineChartCursor","children","props","width","path","useContext","LineChartDimensionsContext","currentX","currentY","currentIndex","isActive","data","parsedPath","useMemo","undefined","onGestureEvent","onActive","x","boundedX","value","Math","round","length","onEnd","StyleSheet","absoluteFill"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;AAEA;;AACA;;;;;;;;AAOO,MAAMA,aAAa,gBAAGC,KAAK,CAACC,aAAN,CAAoB;AAAEC,EAAAA,IAAI,EAAE;AAAR,CAApB,CAAtB;;;AAEA,SAASC,eAAT,CAAyB;AAC9BC,EAAAA,QAD8B;AAE9BF,EAAAA,IAF8B;AAG9B,KAAGG;AAH2B,CAAzB,EAIkB;AACvB,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAkBP,KAAK,CAACQ,UAAN,CAAiBC,iCAAjB,CAAxB;AACA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,YAAtB;AAAoCC,IAAAA,QAApC;AAA8CC,IAAAA;AAA9C,MAAuD,iCAA7D;AAEA,QAAMC,UAAU,GAAGf,KAAK,CAACgB,OAAN,CACjB,MAAOT,IAAI,GAAG,8BAAMA,IAAN,CAAH,GAAiBU,SADX,EAEjB,CAACV,IAAD,CAFiB,CAAnB;AAKA,QAAMW,cAAc,GAAG,sDAA0B;AAC/CC,IAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAW;AACnB,UAAIL,UAAJ,EAAgB;AACd,cAAMM,QAAQ,GAAGD,CAAC,IAAId,KAAL,GAAac,CAAb,GAAiBd,KAAlC;AACAO,QAAAA,QAAQ,CAACS,KAAT,GAAiB,IAAjB;AACAZ,QAAAA,QAAQ,CAACY,KAAT,GAAiBD,QAAjB;AACAV,QAAAA,QAAQ,CAACW,KAAT,GAAiB,iCAASP,UAAT,EAAqBM,QAArB,KAAkC,CAAnD;AACAT,QAAAA,YAAY,CAACU,KAAb,GAAqBC,IAAI,CAACC,KAAL,CACnBH,QAAQ,GAAGf,KAAX,IAAoB,KAAKQ,IAAI,CAACW,MAAL,GAAc,CAAnB,CAApB,CADmB,CAArB;AAGD;AACF,KAX8C;AAY/CC,IAAAA,KAAK,EAAE,MAAM;AACXb,MAAAA,QAAQ,CAACS,KAAT,GAAiB,KAAjB;AACAV,MAAAA,YAAY,CAACU,KAAb,GAAqB,CAAC,CAAtB;AACD;AAf8C,GAA1B,CAAvB;AAkBA,sBACE,oBAAC,aAAD,CAAe,QAAf;AAAwB,IAAA,KAAK,EAAE;AAAEpB,MAAAA;AAAF;AAA/B,kBACE,oBAAC,kDAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,cAAc,EAAEgB;AAFlB,KAGMb,KAHN,gBAKE,oBAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAEsB,wBAAWC;AAAjC,KACGxB,QADH,CALF,CADF,CADF;AAaD","sourcesContent":["import * as React from 'react';\nimport { StyleSheet } from 'react-native';\nimport {\n LongPressGestureHandler,\n LongPressGestureHandlerProps,\n} from 'react-native-gesture-handler';\nimport Animated, { useAnimatedGestureHandler } from 'react-native-reanimated';\nimport { getYForX, parse } from 'react-native-redash';\n\nimport { LineChartDimensionsContext } from './Chart';\nimport { useLineChart } from './useLineChart';\n\ntype LineChartCursorProps = LongPressGestureHandlerProps & {\n children: React.ReactNode;\n type: 'line' | 'crosshair';\n};\n\nexport const CursorContext = React.createContext({ type: '' });\n\nexport function LineChartCursor({\n children,\n type,\n ...props\n}: LineChartCursorProps) {\n const { width, path } = React.useContext(LineChartDimensionsContext);\n const { currentX, currentY, currentIndex, isActive, data } = useLineChart();\n\n const parsedPath = React.useMemo(\n () => (path ? parse(path) : undefined),\n [path]\n );\n\n const onGestureEvent = useAnimatedGestureHandler({\n onActive: ({ x }) => {\n if (parsedPath) {\n const boundedX = x <= width ? x : width;\n isActive.value = true;\n currentX.value = boundedX;\n currentY.value = getYForX(parsedPath, boundedX) || 0;\n currentIndex.value = Math.round(\n boundedX / width / (1 / (data.length - 1))\n );\n }\n },\n onEnd: () => {\n isActive.value = false;\n currentIndex.value = -1;\n },\n });\n\n return (\n <CursorContext.Provider value={{ type }}>\n <LongPressGestureHandler\n minDurationMs={0}\n onGestureEvent={onGestureEvent as any}\n {...props}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n {children}\n </Animated.View>\n </LongPressGestureHandler>\n </CursorContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"sources":["Cursor.tsx"],"names":["CursorContext","React","createContext","type","LineChartCursor","children","props","width","path","useContext","LineChartDimensionsContext","currentX","currentY","currentIndex","isActive","data","parsedPath","useMemo","undefined","onGestureEvent","onActive","x","boundedX","value","Math","round","length","onEnd","StyleSheet","absoluteFill"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;AAMA;;AACA;;AAEA;;AACA;;;;;;;;AAOO,MAAMA,aAAa,gBAAGC,KAAK,CAACC,aAAN,CAAoB;AAAEC,EAAAA,IAAI,EAAE;AAAR,CAApB,CAAtB;;;AAEA,SAASC,eAAT,CAAyB;AAC9BC,EAAAA,QAD8B;AAE9BF,EAAAA,IAF8B;AAG9B,KAAGG;AAH2B,CAAzB,EAIkB;AACvB,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAkBP,KAAK,CAACQ,UAAN,CAAiBC,iCAAjB,CAAxB;AACA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,YAAtB;AAAoCC,IAAAA,QAApC;AAA8CC,IAAAA;AAA9C,MAAuD,iCAA7D;AAEA,QAAMC,UAAU,GAAGf,KAAK,CAACgB,OAAN,CACjB,MAAOT,IAAI,GAAG,8BAAMA,IAAN,CAAH,GAAiBU,SADX,EAEjB,CAACV,IAAD,CAFiB,CAAnB;AAKA,QAAMW,cAAc,GAAG,sDAErB;AACAC,IAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAW;AACnB,UAAIL,UAAJ,EAAgB;AACd,cAAMM,QAAQ,GAAGD,CAAC,IAAId,KAAL,GAAac,CAAb,GAAiBd,KAAlC;AACAO,QAAAA,QAAQ,CAACS,KAAT,GAAiB,IAAjB;AACAZ,QAAAA,QAAQ,CAACY,KAAT,GAAiBD,QAAjB;AACAV,QAAAA,QAAQ,CAACW,KAAT,GAAiB,iCAASP,UAAT,EAAqBM,QAArB,KAAkC,CAAnD;AACAT,QAAAA,YAAY,CAACU,KAAb,GAAqBC,IAAI,CAACC,KAAL,CACnBH,QAAQ,GAAGf,KAAX,IAAoB,KAAKQ,IAAI,CAACW,MAAL,GAAc,CAAnB,CAApB,CADmB,CAArB;AAGD;AACF,KAXD;AAYAC,IAAAA,KAAK,EAAE,MAAM;AACXb,MAAAA,QAAQ,CAACS,KAAT,GAAiB,KAAjB;AACAV,MAAAA,YAAY,CAACU,KAAb,GAAqB,CAAC,CAAtB;AACD;AAfD,GAFqB,CAAvB;AAoBA,sBACE,oBAAC,aAAD,CAAe,QAAf;AAAwB,IAAA,KAAK,EAAE;AAAEpB,MAAAA;AAAF;AAA/B,kBACE,oBAAC,kDAAD;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,cAAc,EAAEgB;AAFlB,KAGMb,KAHN,gBAKE,oBAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAEsB,wBAAWC;AAAjC,KACGxB,QADH,CALF,CADF,CADF;AAaD","sourcesContent":["import * as React from 'react';\nimport { StyleSheet } from 'react-native';\nimport {\n GestureEvent,\n LongPressGestureHandler,\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from 'react-native-gesture-handler';\nimport Animated, { useAnimatedGestureHandler } from 'react-native-reanimated';\nimport { getYForX, parse } from 'react-native-redash';\n\nimport { LineChartDimensionsContext } from './Chart';\nimport { useLineChart } from './useLineChart';\n\nexport type LineChartCursorProps = LongPressGestureHandlerProps & {\n children: React.ReactNode;\n type: 'line' | 'crosshair';\n};\n\nexport const CursorContext = React.createContext({ type: '' });\n\nexport function LineChartCursor({\n children,\n type,\n ...props\n}: LineChartCursorProps) {\n const { width, path } = React.useContext(LineChartDimensionsContext);\n const { currentX, currentY, currentIndex, isActive, data } = useLineChart();\n\n const parsedPath = React.useMemo(\n () => (path ? parse(path) : undefined),\n [path]\n );\n\n const onGestureEvent = useAnimatedGestureHandler<\n GestureEvent<LongPressGestureHandlerEventPayload>\n >({\n onActive: ({ x }) => {\n if (parsedPath) {\n const boundedX = x <= width ? x : width;\n isActive.value = true;\n currentX.value = boundedX;\n currentY.value = getYForX(parsedPath, boundedX) || 0;\n currentIndex.value = Math.round(\n boundedX / width / (1 / (data.length - 1))\n );\n }\n },\n onEnd: () => {\n isActive.value = false;\n currentIndex.value = -1;\n },\n });\n\n return (\n <CursorContext.Provider value={{ type }}>\n <LongPressGestureHandler\n minDurationMs={0}\n onGestureEvent={onGestureEvent}\n {...props}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n {children}\n </Animated.View>\n </LongPressGestureHandler>\n </CursorContext.Provider>\n );\n}\n"]}