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.
- package/.DS_Store +0 -0
- package/.prettierrc.js +5 -0
- package/README.md +171 -121
- package/example/.DS_Store +0 -0
- package/example/README.md +32 -0
- package/example/package.json +1 -1
- package/example/src/App.tsx +32 -7
- package/example/src/CandlestickChart.tsx +23 -11
- package/example/src/LineChart.tsx +51 -20
- package/example/src/{candlestick-data.json → data/candlestick-data.json} +0 -0
- package/example/src/{candlestick-data2.json → data/candlestick-data2.json} +0 -0
- package/example/src/{line-data.json → data/line-data.json} +0 -0
- package/example/src/{line-data2.json → data/line-data2.json} +0 -0
- package/example/yarn.lock +5 -5
- package/lib/commonjs/charts/candle/Crosshair.js +6 -17
- package/lib/commonjs/charts/candle/Crosshair.js.map +1 -1
- package/lib/commonjs/charts/candle/CrosshairTooltip.js +12 -8
- package/lib/commonjs/charts/candle/CrosshairTooltip.js.map +1 -1
- package/lib/commonjs/charts/candle/DatetimeText.js +7 -8
- package/lib/commonjs/charts/candle/DatetimeText.js.map +1 -1
- package/lib/commonjs/charts/candle/Line.js.map +1 -1
- package/lib/commonjs/charts/candle/PriceText.js +7 -8
- package/lib/commonjs/charts/candle/PriceText.js.map +1 -1
- package/lib/commonjs/charts/candle/useCandleData.js.map +1 -1
- package/lib/commonjs/charts/candle/useCandlestickChart.js.map +1 -1
- package/lib/commonjs/charts/candle/useDatetime.js.map +1 -1
- package/lib/commonjs/charts/candle/usePrice.js.map +1 -1
- package/lib/commonjs/charts/candle/utils.js.map +1 -1
- package/lib/commonjs/charts/line/Chart.js.map +1 -1
- package/lib/commonjs/charts/line/Cursor.js.map +1 -1
- package/lib/commonjs/charts/line/CursorCrosshair.js +4 -3
- package/lib/commonjs/charts/line/CursorCrosshair.js.map +1 -1
- package/lib/commonjs/charts/line/CursorLine.js +8 -1
- package/lib/commonjs/charts/line/CursorLine.js.map +1 -1
- package/lib/commonjs/charts/line/DatetimeText.js +7 -8
- package/lib/commonjs/charts/line/DatetimeText.js.map +1 -1
- package/lib/commonjs/charts/line/Path.js +13 -16
- package/lib/commonjs/charts/line/Path.js.map +1 -1
- package/lib/commonjs/charts/line/PriceText.js +7 -8
- package/lib/commonjs/charts/line/PriceText.js.map +1 -1
- package/lib/commonjs/charts/line/interpolatePath.js +600 -0
- package/lib/commonjs/charts/line/interpolatePath.js.map +1 -0
- package/lib/commonjs/charts/line/useDatetime.js.map +1 -1
- package/lib/commonjs/charts/line/usePrice.js.map +1 -1
- package/lib/commonjs/charts/line/utils.js +1 -70
- package/lib/commonjs/charts/line/utils.js.map +1 -1
- package/lib/commonjs/components/AnimatedText.js +63 -0
- package/lib/commonjs/components/AnimatedText.js.map +1 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/charts/candle/Crosshair.js +7 -16
- package/lib/module/charts/candle/Crosshair.js.map +1 -1
- package/lib/module/charts/candle/CrosshairTooltip.js +10 -8
- package/lib/module/charts/candle/CrosshairTooltip.js.map +1 -1
- package/lib/module/charts/candle/DatetimeText.js +6 -7
- package/lib/module/charts/candle/DatetimeText.js.map +1 -1
- package/lib/module/charts/candle/Line.js.map +1 -1
- package/lib/module/charts/candle/PriceText.js +6 -7
- package/lib/module/charts/candle/PriceText.js.map +1 -1
- package/lib/module/charts/candle/useCandleData.js.map +1 -1
- package/lib/module/charts/candle/useCandlestickChart.js.map +1 -1
- package/lib/module/charts/candle/useDatetime.js.map +1 -1
- package/lib/module/charts/candle/usePrice.js.map +1 -1
- package/lib/module/charts/candle/utils.js.map +1 -1
- package/lib/module/charts/line/Chart.js.map +1 -1
- package/lib/module/charts/line/Cursor.js.map +1 -1
- package/lib/module/charts/line/CursorCrosshair.js +4 -3
- package/lib/module/charts/line/CursorCrosshair.js.map +1 -1
- package/lib/module/charts/line/CursorLine.js +7 -1
- package/lib/module/charts/line/CursorLine.js.map +1 -1
- package/lib/module/charts/line/DatetimeText.js +6 -7
- package/lib/module/charts/line/DatetimeText.js.map +1 -1
- package/lib/module/charts/line/Path.js +11 -15
- package/lib/module/charts/line/Path.js.map +1 -1
- package/lib/module/charts/line/PriceText.js +6 -7
- package/lib/module/charts/line/PriceText.js.map +1 -1
- package/lib/module/charts/line/interpolatePath.js +587 -0
- package/lib/module/charts/line/interpolatePath.js.map +1 -0
- package/lib/module/charts/line/useDatetime.js.map +1 -1
- package/lib/module/charts/line/usePrice.js.map +1 -1
- package/lib/module/charts/line/utils.js +1 -66
- package/lib/module/charts/line/utils.js.map +1 -1
- package/lib/module/components/AnimatedText.js +43 -0
- package/lib/module/components/AnimatedText.js.map +1 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/src/charts/candle/Crosshair.d.ts +4 -4
- package/lib/typescript/src/charts/candle/DatetimeText.d.ts +3 -2
- package/lib/typescript/src/charts/candle/Line.d.ts +1 -1
- package/lib/typescript/src/charts/candle/PriceText.d.ts +3 -3
- package/lib/typescript/src/charts/candle/types.d.ts +8 -3
- package/lib/typescript/src/charts/candle/useCandleData.d.ts +3 -3
- package/lib/typescript/src/charts/candle/useCandlestickChart.d.ts +2 -1
- package/lib/typescript/src/charts/candle/useDatetime.d.ts +5 -7
- package/lib/typescript/src/charts/candle/usePrice.d.ts +5 -8
- package/lib/typescript/src/charts/candle/utils.d.ts +1 -1
- package/lib/typescript/src/charts/line/Chart.d.ts +1 -1
- package/lib/typescript/src/charts/line/Cursor.d.ts +1 -2
- package/lib/typescript/src/charts/line/CursorCrosshair.d.ts +3 -2
- package/lib/typescript/src/charts/line/DatetimeText.d.ts +5 -6
- package/lib/typescript/src/charts/line/Path.d.ts +17 -1
- package/lib/typescript/src/charts/line/PriceText.d.ts +3 -2
- package/lib/typescript/src/charts/line/interpolatePath.d.ts +50 -0
- package/lib/typescript/src/charts/line/useDatetime.d.ts +4 -5
- package/lib/typescript/src/charts/line/usePrice.d.ts +3 -2
- package/lib/typescript/src/charts/line/utils.d.ts +0 -13
- package/lib/typescript/src/components/AnimatedText.d.ts +9 -0
- package/lib/typescript/src/utils.d.ts +2 -4
- package/package.json +4 -4
- package/src/charts/candle/Crosshair.tsx +20 -20
- package/src/charts/candle/CrosshairTooltip.tsx +11 -4
- package/src/charts/candle/DatetimeText.tsx +5 -4
- package/src/charts/candle/Line.tsx +1 -1
- package/src/charts/candle/PriceText.tsx +5 -5
- package/src/charts/candle/types.ts +11 -3
- package/src/charts/candle/useCandleData.ts +3 -2
- package/src/charts/candle/useCandlestickChart.ts +2 -1
- package/src/charts/candle/useDatetime.ts +7 -3
- package/src/charts/candle/usePrice.ts +10 -3
- package/src/charts/candle/utils.ts +1 -1
- package/src/charts/line/Chart.tsx +1 -1
- package/src/charts/line/Cursor.tsx +7 -3
- package/src/charts/line/CursorCrosshair.tsx +4 -3
- package/src/charts/line/CursorLine.tsx +9 -1
- package/src/charts/line/DatetimeText.tsx +8 -7
- package/src/charts/line/Path.tsx +25 -21
- package/src/charts/line/PriceText.tsx +5 -4
- package/src/charts/line/interpolatePath.ts +650 -0
- package/src/charts/line/useDatetime.ts +3 -2
- package/src/charts/line/usePrice.ts +2 -1
- package/src/charts/line/utils.ts +2 -79
- package/src/components/AnimatedText.tsx +53 -0
- package/src/utils.ts +3 -3
- 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<
|
|
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
|
-
|
|
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
|
-
<
|
|
24
|
-
<
|
|
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
|
|
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
|
|
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
|
|
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<
|
|
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
|
-
|
|
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
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
85
|
+
format={(d) => {
|
|
55
86
|
'worklet';
|
|
56
87
|
return `$${d.formatted} AUD`;
|
|
57
88
|
}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
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
|
-
|
|
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)(() =>
|
|
99
|
-
if (data !==
|
|
100
|
-
(0, _reactNativeReanimated.runOnJS)(
|
|
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.
|
|
104
|
-
|
|
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":["
|
|
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":";;;;;;;;AAAA;;AAEA;;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,
|
|
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":"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","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
|
-
|
|
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(
|
|
33
|
-
text: datetime[variant]
|
|
34
|
-
|
|
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","
|
|
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
|
-
|
|
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(
|
|
33
|
-
text: price[variant]
|
|
34
|
-
|
|
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","
|
|
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;;
|
|
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;;;;;;
|
|
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;;
|
|
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,
|
|
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,
|
|
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?:
|
|
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;;
|
|
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"]}
|