@jamadd/react-native-template-ui 0.7.6 → 0.7.7
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/lib/module/components/slider/Slider.js +175 -0
- package/lib/module/components/slider/Slider.js.map +1 -0
- package/lib/module/components/slider/ThemedSlider.js +39 -166
- package/lib/module/components/slider/ThemedSlider.js.map +1 -1
- package/lib/module/components/slider/ThemedSliderStepIndicator.js +2 -1
- package/lib/module/components/slider/ThemedSliderStepIndicator.js.map +1 -1
- package/lib/module/hooks/react.js +10 -1
- package/lib/module/hooks/react.js.map +1 -1
- package/lib/module/utils/slider/const.js +1 -0
- package/lib/module/utils/slider/const.js.map +1 -1
- package/lib/typescript/src/components/slider/Slider.d.ts +4 -0
- package/lib/typescript/src/components/slider/Slider.d.ts.map +1 -0
- package/lib/typescript/src/components/slider/ThemedSlider.d.ts.map +1 -1
- package/lib/typescript/src/components/slider/ThemedSliderStepIndicator.d.ts +2 -3
- package/lib/typescript/src/components/slider/ThemedSliderStepIndicator.d.ts.map +1 -1
- package/lib/typescript/src/hooks/react.d.ts +5 -0
- package/lib/typescript/src/hooks/react.d.ts.map +1 -1
- package/lib/typescript/src/types/slider.d.ts +11 -1
- package/lib/typescript/src/types/slider.d.ts.map +1 -1
- package/lib/typescript/src/utils/slider/const.d.ts +1 -0
- package/lib/typescript/src/utils/slider/const.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMappingHelper } from '@shopify/flash-list';
|
|
4
|
+
import { memo, useLayoutEffect, useState } from 'react';
|
|
5
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
+
import { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
|
|
7
|
+
import { scheduleOnRN } from 'react-native-worklets';
|
|
8
|
+
import { useViewRef } from "../../hooks/view.js";
|
|
9
|
+
import { sliderStepIndicatorDefaultWidth, sliderThumbDefaultSize, SliderTrackSize } from "../../utils/slider/const.js";
|
|
10
|
+
import AnimatedThemedView from "../view/AnimatedThemedView.js";
|
|
11
|
+
import ThemedView from "../view/ThemedView.js";
|
|
12
|
+
import ThemedSliderStepIndicator from "./ThemedSliderStepIndicator.js";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const Slider = ({
|
|
15
|
+
range,
|
|
16
|
+
steps = 1,
|
|
17
|
+
stepIndicator,
|
|
18
|
+
stepIndicatorProps,
|
|
19
|
+
snapToStepAnimated = true,
|
|
20
|
+
onValueChange,
|
|
21
|
+
sliderWrapProps,
|
|
22
|
+
trackSize = SliderTrackSize.M,
|
|
23
|
+
trackActiveColor = 'themePri',
|
|
24
|
+
trackActiveProps,
|
|
25
|
+
trackInactiveColor = 'separator',
|
|
26
|
+
trackInactiveProps,
|
|
27
|
+
thumbSize = sliderThumbDefaultSize,
|
|
28
|
+
thumbColor = 'themePri',
|
|
29
|
+
thumbProps,
|
|
30
|
+
gestureActivateDuration = 40,
|
|
31
|
+
setSelectedVal,
|
|
32
|
+
selectedValSharedVal
|
|
33
|
+
}) => {
|
|
34
|
+
const isNumRange = typeof range[0] === 'number';
|
|
35
|
+
const processedRange = isNumRange ? range.sort() : range;
|
|
36
|
+
const totalSteps = isNumRange ? Math.abs(processedRange[1] - processedRange[0]) / steps : processedRange.length - 1;
|
|
37
|
+
const thumbSizeHalf = thumbSize / 2;
|
|
38
|
+
const {
|
|
39
|
+
getMappingKey
|
|
40
|
+
} = useMappingHelper();
|
|
41
|
+
const trackViewRef = useViewRef();
|
|
42
|
+
const [sliderWidth, setSliderWidth] = useState();
|
|
43
|
+
const [trackWidth, setTrackWidth] = useState();
|
|
44
|
+
const [stepWidth, setStepWidth] = useState();
|
|
45
|
+
const xSharedVal = useSharedValue(-(trackWidth ?? 0));
|
|
46
|
+
const trackAnimatedStyle = useAnimatedStyle(() => ({
|
|
47
|
+
transform: [{
|
|
48
|
+
translateX: xSharedVal.get()
|
|
49
|
+
}]
|
|
50
|
+
}), [trackWidth]);
|
|
51
|
+
const thumbAnimatedStyle = useAnimatedStyle(() => ({
|
|
52
|
+
transform: [{
|
|
53
|
+
translateX: xSharedVal.get() - thumbSizeHalf
|
|
54
|
+
}]
|
|
55
|
+
}), [thumbSizeHalf]);
|
|
56
|
+
useLayoutEffect(() => {
|
|
57
|
+
trackViewRef.current?.measure((_x, _y, w) => {
|
|
58
|
+
const tempWidth = w - thumbSize;
|
|
59
|
+
const tempStepWidth = tempWidth / totalSteps;
|
|
60
|
+
setSliderWidth(w + thumbSize + thumbSizeHalf);
|
|
61
|
+
setTrackWidth(tempWidth);
|
|
62
|
+
setStepWidth(tempStepWidth);
|
|
63
|
+
let index = 0;
|
|
64
|
+
if (isNumRange) {
|
|
65
|
+
const numRange = processedRange;
|
|
66
|
+
const numCurrentValue = selectedValSharedVal?.get();
|
|
67
|
+
index = numCurrentValue ? (numCurrentValue - numRange[0]) / steps : 0;
|
|
68
|
+
} else {
|
|
69
|
+
const strRange = processedRange;
|
|
70
|
+
const strCurrentValue = selectedValSharedVal?.get();
|
|
71
|
+
index = strCurrentValue ? strRange.indexOf(strCurrentValue) : 0;
|
|
72
|
+
}
|
|
73
|
+
xSharedVal.set(-(totalSteps - index) * tempStepWidth);
|
|
74
|
+
});
|
|
75
|
+
}, [thumbSize, isNumRange, processedRange, totalSteps]);
|
|
76
|
+
const updateSelectedVal = x => {
|
|
77
|
+
if (!stepWidth) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (isNumRange) {
|
|
81
|
+
const numRange = processedRange;
|
|
82
|
+
const numIndex = Math.round(x / stepWidth);
|
|
83
|
+
const tempSelectedVal = numRange[1] - numIndex * steps;
|
|
84
|
+
setSelectedVal?.(tempSelectedVal);
|
|
85
|
+
onValueChange(tempSelectedVal);
|
|
86
|
+
} else {
|
|
87
|
+
const strRange = processedRange;
|
|
88
|
+
const strIndex = Math.round(x / stepWidth);
|
|
89
|
+
const tempSelectedVal = strRange[totalSteps - strIndex];
|
|
90
|
+
setSelectedVal?.(tempSelectedVal);
|
|
91
|
+
onValueChange(tempSelectedVal);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const updateXSharedVal = (x, animated = false) => {
|
|
95
|
+
'worklet';
|
|
96
|
+
|
|
97
|
+
const tempX = Math.min(0, Math.max(x, -(trackWidth ?? 0)));
|
|
98
|
+
xSharedVal.set(animated ? withTiming(tempX) : tempX);
|
|
99
|
+
scheduleOnRN(updateSelectedVal, Math.abs(tempX));
|
|
100
|
+
};
|
|
101
|
+
const touchStart = useSharedValue(0);
|
|
102
|
+
const gesture = Gesture.Simultaneous(Gesture.LongPress().minDuration(gestureActivateDuration).onStart(({
|
|
103
|
+
x
|
|
104
|
+
}) => {
|
|
105
|
+
if (sliderWidth) {
|
|
106
|
+
updateXSharedVal(-(sliderWidth - (x + thumbSize + thumbSizeHalf)));
|
|
107
|
+
}
|
|
108
|
+
}).onTouchesUp(({
|
|
109
|
+
allTouches
|
|
110
|
+
}) => {
|
|
111
|
+
const touch = allTouches[0];
|
|
112
|
+
if (touch && sliderWidth && stepWidth) {
|
|
113
|
+
const nearestStep = Math.round(-(sliderWidth - (touch.x + thumbSize + thumbSizeHalf)) / stepWidth);
|
|
114
|
+
updateXSharedVal(nearestStep * stepWidth, snapToStepAnimated);
|
|
115
|
+
}
|
|
116
|
+
}), Gesture.Pan().manualActivation(true).onBegin(() => {
|
|
117
|
+
touchStart.set(Date.now());
|
|
118
|
+
}).onTouchesMove(({}, state) => {
|
|
119
|
+
const timeToCheck = Date.now() - touchStart.get();
|
|
120
|
+
if (timeToCheck >= gestureActivateDuration) {
|
|
121
|
+
state.activate();
|
|
122
|
+
} else {
|
|
123
|
+
state.fail();
|
|
124
|
+
}
|
|
125
|
+
}).onChange(({
|
|
126
|
+
changeX
|
|
127
|
+
}) => {
|
|
128
|
+
updateXSharedVal(xSharedVal.get() + changeX);
|
|
129
|
+
}).onEnd(() => {
|
|
130
|
+
if (stepWidth) {
|
|
131
|
+
const nearestStep = Math.round(xSharedVal.get() / stepWidth);
|
|
132
|
+
updateXSharedVal(nearestStep * stepWidth, snapToStepAnimated);
|
|
133
|
+
}
|
|
134
|
+
}));
|
|
135
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
136
|
+
gesture: gesture,
|
|
137
|
+
children: /*#__PURE__*/_jsxs(ThemedView, {
|
|
138
|
+
ref: trackViewRef,
|
|
139
|
+
alignItems: 'center',
|
|
140
|
+
justifyContent: 'center',
|
|
141
|
+
alignSelf: 'stretch',
|
|
142
|
+
height: thumbSize,
|
|
143
|
+
...sliderWrapProps,
|
|
144
|
+
children: [/*#__PURE__*/_jsx(ThemedView, {
|
|
145
|
+
position: 'absolute',
|
|
146
|
+
width: trackWidth,
|
|
147
|
+
height: trackSize,
|
|
148
|
+
overflow: 'hidden',
|
|
149
|
+
backgroundColor: trackInactiveColor,
|
|
150
|
+
...trackActiveProps,
|
|
151
|
+
children: /*#__PURE__*/_jsx(AnimatedThemedView, {
|
|
152
|
+
height: trackSize,
|
|
153
|
+
backgroundColor: trackActiveColor,
|
|
154
|
+
style: trackAnimatedStyle,
|
|
155
|
+
...trackInactiveProps
|
|
156
|
+
})
|
|
157
|
+
}), !!stepIndicator && processedRange.map((value, index) => /*#__PURE__*/_jsx(ThemedSliderStepIndicator, {
|
|
158
|
+
left: index * (stepWidth ?? 0) + thumbSizeHalf - sliderStepIndicatorDefaultWidth / 2,
|
|
159
|
+
height: thumbSize,
|
|
160
|
+
...stepIndicatorProps
|
|
161
|
+
}, getMappingKey(value, index))), /*#__PURE__*/_jsx(AnimatedThemedView, {
|
|
162
|
+
position: 'absolute',
|
|
163
|
+
right: -thumbSizeHalf,
|
|
164
|
+
width: thumbSize,
|
|
165
|
+
aspectRatio: 1,
|
|
166
|
+
opacity: 0.8,
|
|
167
|
+
backgroundColor: thumbColor,
|
|
168
|
+
style: thumbAnimatedStyle,
|
|
169
|
+
...thumbProps
|
|
170
|
+
})]
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
export default /*#__PURE__*/memo(Slider);
|
|
175
|
+
//# sourceMappingURL=Slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMappingHelper","memo","useLayoutEffect","useState","Gesture","GestureDetector","useAnimatedStyle","useSharedValue","withTiming","scheduleOnRN","useViewRef","sliderStepIndicatorDefaultWidth","sliderThumbDefaultSize","SliderTrackSize","AnimatedThemedView","ThemedView","ThemedSliderStepIndicator","jsx","_jsx","jsxs","_jsxs","Slider","range","steps","stepIndicator","stepIndicatorProps","snapToStepAnimated","onValueChange","sliderWrapProps","trackSize","M","trackActiveColor","trackActiveProps","trackInactiveColor","trackInactiveProps","thumbSize","thumbColor","thumbProps","gestureActivateDuration","setSelectedVal","selectedValSharedVal","isNumRange","processedRange","sort","totalSteps","Math","abs","length","thumbSizeHalf","getMappingKey","trackViewRef","sliderWidth","setSliderWidth","trackWidth","setTrackWidth","stepWidth","setStepWidth","xSharedVal","trackAnimatedStyle","transform","translateX","get","thumbAnimatedStyle","current","measure","_x","_y","w","tempWidth","tempStepWidth","index","numRange","numCurrentValue","strRange","strCurrentValue","indexOf","set","updateSelectedVal","x","numIndex","round","tempSelectedVal","strIndex","updateXSharedVal","animated","tempX","min","max","touchStart","gesture","Simultaneous","LongPress","minDuration","onStart","onTouchesUp","allTouches","touch","nearestStep","Pan","manualActivation","onBegin","Date","now","onTouchesMove","state","timeToCheck","activate","fail","onChange","changeX","onEnd","children","ref","alignItems","justifyContent","alignSelf","height","position","width","overflow","backgroundColor","style","map","value","left","right","aspectRatio","opacity"],"sourceRoot":"../../../../src","sources":["components/slider/Slider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,142 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { useViewRef } from "../../hooks/view.js";
|
|
9
|
-
import { sliderStepIndicatorDefaultWidth, SliderThumbSize, SliderTrackSize, SliderValueDisplayMode } from "../../utils/slider/const.js";
|
|
10
|
-
import AnimatedThemedView from "../view/AnimatedThemedView.js";
|
|
3
|
+
import { memo, useLayoutEffect } from 'react';
|
|
4
|
+
import { useSharedValue } from 'react-native-reanimated';
|
|
5
|
+
import { useDeferredState } from "../../hooks/react.js";
|
|
6
|
+
import { useThemeSpacing } from "../../hooks/theme.js";
|
|
7
|
+
import { sliderThumbDefaultSize, SliderValueDisplayMode } from "../../utils/slider/const.js";
|
|
11
8
|
import ThemedView from "../view/ThemedView.js";
|
|
9
|
+
import Slider from "./Slider.js";
|
|
12
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
11
|
const ThemedText = require('../text/ThemedText').default;
|
|
14
|
-
const
|
|
12
|
+
const MemoThemedText = /*#__PURE__*/memo(ThemedText);
|
|
15
13
|
const ThemedSlider = ({
|
|
16
|
-
range,
|
|
17
|
-
steps = 1,
|
|
18
14
|
defaultValue,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
trackActiveColor = 'themePri',
|
|
25
|
-
trackActiveProps,
|
|
26
|
-
trackInactiveColor = 'separator',
|
|
27
|
-
trackInactiveProps,
|
|
28
|
-
thumbSize = SliderThumbSize.M,
|
|
29
|
-
thumbColor = 'themePri',
|
|
30
|
-
thumbProps,
|
|
15
|
+
wrapProps: {
|
|
16
|
+
paddingHorizontal,
|
|
17
|
+
px,
|
|
18
|
+
...wrapProps
|
|
19
|
+
} = {},
|
|
31
20
|
valueDisplayMode = SliderValueDisplayMode.None,
|
|
32
21
|
valueDisplayWrapProps,
|
|
33
22
|
valueTextProps,
|
|
34
23
|
valueDescription,
|
|
35
24
|
valueDescriptionTextProps,
|
|
36
|
-
|
|
25
|
+
...props
|
|
37
26
|
}) => {
|
|
38
|
-
const isNumRange = typeof range[0] === 'number';
|
|
39
|
-
const processedRange = isNumRange ? range.sort() : range;
|
|
40
|
-
const totalSteps = isNumRange ? Math.abs(processedRange[1] - processedRange[0]) / steps : processedRange.length - 1;
|
|
41
|
-
const thumbSizeHalf = thumbSize / 2;
|
|
42
27
|
const {
|
|
43
|
-
|
|
44
|
-
} =
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
const xSharedVal = useSharedValue(-(trackWidth ?? 0));
|
|
53
|
-
const trackAnimatedStyle = useAnimatedStyle(() => ({
|
|
54
|
-
transform: [{
|
|
55
|
-
translateX: xSharedVal.get()
|
|
56
|
-
}]
|
|
57
|
-
}), [trackWidth]);
|
|
58
|
-
const thumbAnimatedStyle = useAnimatedStyle(() => ({
|
|
59
|
-
transform: [{
|
|
60
|
-
translateX: xSharedVal.get() - thumbSizeHalf
|
|
61
|
-
}]
|
|
62
|
-
}), [thumbSizeHalf]);
|
|
63
|
-
useLayoutEffect(() => {
|
|
64
|
-
sliderViewRef.current?.measure((_x, _y, w) => {
|
|
65
|
-
setSliderWidth(w);
|
|
66
|
-
});
|
|
67
|
-
}, []);
|
|
28
|
+
thumbSize
|
|
29
|
+
} = props;
|
|
30
|
+
const themeSpacing = useThemeSpacing();
|
|
31
|
+
const {
|
|
32
|
+
state: selectedVal,
|
|
33
|
+
setState: setSelectedVal,
|
|
34
|
+
deferredState: deferredSelectedValue
|
|
35
|
+
} = useDeferredState(defaultValue);
|
|
36
|
+
const selectedValSharedVal = useSharedValue(selectedVal);
|
|
68
37
|
useLayoutEffect(() => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
setTrackWidth(tempWidth);
|
|
73
|
-
setStepWidth(tempStepWidth);
|
|
74
|
-
let index = 0;
|
|
75
|
-
if (isNumRange) {
|
|
76
|
-
const numRange = processedRange;
|
|
77
|
-
const numCurrentValue = selectedVal;
|
|
78
|
-
index = numCurrentValue ? (numCurrentValue - numRange[0]) / steps : 0;
|
|
79
|
-
} else {
|
|
80
|
-
const strRange = processedRange;
|
|
81
|
-
const strCurrentValue = selectedVal;
|
|
82
|
-
index = strCurrentValue ? strRange.indexOf(strCurrentValue) : 0;
|
|
83
|
-
}
|
|
84
|
-
xSharedVal.set(-(totalSteps - index) * tempStepWidth);
|
|
85
|
-
});
|
|
86
|
-
}, [thumbSize, isNumRange, processedRange, totalSteps]);
|
|
38
|
+
selectedValSharedVal.set(selectedVal);
|
|
39
|
+
}, [selectedVal]);
|
|
40
|
+
const thumbSizeHalf = (thumbSize ?? sliderThumbDefaultSize) / 2;
|
|
87
41
|
const wrapStyle = {
|
|
88
|
-
marginHorizontal: thumbSizeHalf
|
|
42
|
+
marginHorizontal: typeof paddingHorizontal === 'string' ? themeSpacing[paddingHorizontal] : typeof px === 'string' ? themeSpacing[px] : thumbSizeHalf
|
|
89
43
|
};
|
|
90
|
-
const updateSelectedVal = x => {
|
|
91
|
-
if (!stepWidth) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (isNumRange) {
|
|
95
|
-
const numRange = processedRange;
|
|
96
|
-
const numIndex = Math.round(x / stepWidth);
|
|
97
|
-
const tempSelectedVal = numRange[1] - numIndex * steps;
|
|
98
|
-
setSelectedVal(tempSelectedVal);
|
|
99
|
-
onValueChange(tempSelectedVal);
|
|
100
|
-
} else {
|
|
101
|
-
const strRange = processedRange;
|
|
102
|
-
const strIndex = Math.round(x / stepWidth);
|
|
103
|
-
const tempSelectedVal = strRange[totalSteps - strIndex];
|
|
104
|
-
setSelectedVal(tempSelectedVal);
|
|
105
|
-
onValueChange(tempSelectedVal);
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
const updateXSharedVal = (x, animated = false) => {
|
|
109
|
-
'worklet';
|
|
110
|
-
|
|
111
|
-
const tempX = Math.min(0, Math.max(x, -(trackWidth ?? 0)));
|
|
112
|
-
xSharedVal.set(animated ? withTiming(tempX) : tempX);
|
|
113
|
-
scheduleOnRN(updateSelectedVal, Math.abs(tempX));
|
|
114
|
-
};
|
|
115
|
-
const gesture = Gesture.Simultaneous(Gesture.Tap().onTouchesDown(({
|
|
116
|
-
allTouches
|
|
117
|
-
}) => {
|
|
118
|
-
const touch = allTouches[0];
|
|
119
|
-
if (touch && sliderWidth) {
|
|
120
|
-
updateXSharedVal(-(sliderWidth - (touch.x + thumbSize + thumbSizeHalf)));
|
|
121
|
-
}
|
|
122
|
-
}).onTouchesUp(({
|
|
123
|
-
allTouches
|
|
124
|
-
}) => {
|
|
125
|
-
const touch = allTouches[0];
|
|
126
|
-
if (touch && sliderWidth && stepWidth) {
|
|
127
|
-
const nearestStep = Math.round(-(sliderWidth - (touch.x + thumbSize + thumbSizeHalf)) / stepWidth);
|
|
128
|
-
updateXSharedVal(nearestStep * stepWidth, snapToStepAnimated);
|
|
129
|
-
}
|
|
130
|
-
}), Gesture.Pan().onChange(({
|
|
131
|
-
changeX
|
|
132
|
-
}) => {
|
|
133
|
-
updateXSharedVal(xSharedVal.get() + changeX);
|
|
134
|
-
}).onEnd(() => {
|
|
135
|
-
if (stepWidth) {
|
|
136
|
-
const nearestStep = Math.round(xSharedVal.get() / stepWidth);
|
|
137
|
-
updateXSharedVal(nearestStep * stepWidth, snapToStepAnimated);
|
|
138
|
-
}
|
|
139
|
-
}));
|
|
140
44
|
const isValueDisplayModeNone = valueDisplayMode === SliderValueDisplayMode.None;
|
|
141
45
|
const isValueDisplayModeTop = valueDisplayMode === SliderValueDisplayMode.Top;
|
|
142
46
|
const isValueDisplayModeBottom = valueDisplayMode === SliderValueDisplayMode.Bottom;
|
|
@@ -144,16 +48,14 @@ const ThemedSlider = ({
|
|
|
144
48
|
flexDirection: 'row',
|
|
145
49
|
alignItems: 'center',
|
|
146
50
|
alignSelf: 'stretch',
|
|
147
|
-
marginTop: isValueDisplayModeBottom ? 's' : undefined,
|
|
148
|
-
marginBottom: isValueDisplayModeTop ? 's' : undefined,
|
|
149
51
|
...valueDisplayWrapProps,
|
|
150
|
-
children: [!!valueDescription && /*#__PURE__*/_jsx(
|
|
52
|
+
children: [!!valueDescription && /*#__PURE__*/_jsx(MemoThemedText, {
|
|
151
53
|
variant: 'textS',
|
|
152
54
|
flex: 1,
|
|
153
55
|
textAlign: 'center',
|
|
154
56
|
...valueDescriptionTextProps,
|
|
155
57
|
children: valueDescription
|
|
156
|
-
}), /*#__PURE__*/_jsx(
|
|
58
|
+
}), /*#__PURE__*/_jsx(MemoThemedText, {
|
|
157
59
|
variant: 'textSBold',
|
|
158
60
|
flex: 1,
|
|
159
61
|
textAlign: 'center',
|
|
@@ -161,47 +63,18 @@ const ThemedSlider = ({
|
|
|
161
63
|
children: deferredSelectedValue
|
|
162
64
|
})]
|
|
163
65
|
});
|
|
66
|
+
const sliderProps = {
|
|
67
|
+
...props,
|
|
68
|
+
setSelectedVal,
|
|
69
|
+
selectedValSharedVal
|
|
70
|
+
};
|
|
164
71
|
return /*#__PURE__*/_jsxs(ThemedView, {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
alignItems: 'center',
|
|
172
|
-
justifyContent: 'center',
|
|
173
|
-
alignSelf: 'stretch',
|
|
174
|
-
height: thumbSize,
|
|
175
|
-
style: wrapStyle,
|
|
176
|
-
...wrapProps,
|
|
177
|
-
children: [/*#__PURE__*/_jsx(ThemedView, {
|
|
178
|
-
position: 'absolute',
|
|
179
|
-
width: trackWidth,
|
|
180
|
-
height: trackSize,
|
|
181
|
-
overflow: 'hidden',
|
|
182
|
-
backgroundColor: trackInactiveColor,
|
|
183
|
-
...trackActiveProps,
|
|
184
|
-
children: /*#__PURE__*/_jsx(AnimatedThemedView, {
|
|
185
|
-
height: trackSize,
|
|
186
|
-
backgroundColor: trackActiveColor,
|
|
187
|
-
style: trackAnimatedStyle,
|
|
188
|
-
...trackInactiveProps
|
|
189
|
-
})
|
|
190
|
-
}), !!stepIndicator && processedRange.map((value, index) => /*#__PURE__*/_jsx(ThemedSliderStepIndicator, {
|
|
191
|
-
left: index * (stepWidth ?? 0) + thumbSizeHalf - sliderStepIndicatorDefaultWidth / 2,
|
|
192
|
-
height: thumbSize,
|
|
193
|
-
...stepIndicatorProps
|
|
194
|
-
}, getMappingKey(value, index))), /*#__PURE__*/_jsx(AnimatedThemedView, {
|
|
195
|
-
position: 'absolute',
|
|
196
|
-
right: -thumbSizeHalf,
|
|
197
|
-
width: thumbSize,
|
|
198
|
-
aspectRatio: 1,
|
|
199
|
-
opacity: 0.8,
|
|
200
|
-
backgroundColor: thumbColor,
|
|
201
|
-
style: thumbAnimatedStyle,
|
|
202
|
-
...thumbProps
|
|
203
|
-
})]
|
|
204
|
-
})
|
|
72
|
+
paddingVertical: 's',
|
|
73
|
+
gap: 'xs',
|
|
74
|
+
style: wrapStyle,
|
|
75
|
+
...wrapProps,
|
|
76
|
+
children: [isValueDisplayModeTop && valueDisplayComponent, /*#__PURE__*/_jsx(Slider, {
|
|
77
|
+
...sliderProps
|
|
205
78
|
}), isValueDisplayModeBottom && valueDisplayComponent]
|
|
206
79
|
});
|
|
207
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["memo","useLayoutEffect","useSharedValue","useDeferredState","useThemeSpacing","sliderThumbDefaultSize","SliderValueDisplayMode","ThemedView","Slider","jsx","_jsx","jsxs","_jsxs","ThemedText","require","default","MemoThemedText","ThemedSlider","defaultValue","wrapProps","paddingHorizontal","px","valueDisplayMode","None","valueDisplayWrapProps","valueTextProps","valueDescription","valueDescriptionTextProps","props","thumbSize","themeSpacing","state","selectedVal","setState","setSelectedVal","deferredState","deferredSelectedValue","selectedValSharedVal","set","thumbSizeHalf","wrapStyle","marginHorizontal","isValueDisplayModeNone","isValueDisplayModeTop","Top","isValueDisplayModeBottom","Bottom","valueDisplayComponent","flexDirection","alignItems","alignSelf","children","variant","flex","textAlign","sliderProps","paddingVertical","gap","style"],"sourceRoot":"../../../../src","sources":["components/slider/ThemedSlider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/** @internal */
|
|
4
4
|
|
|
5
|
+
import { memo } from 'react';
|
|
5
6
|
import { sliderStepIndicatorDefaultWidth } from "../../utils/slider/const.js";
|
|
6
7
|
import ThemedView from "../view/ThemedView.js";
|
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -18,5 +19,5 @@ const ThemedSliderStepIndicator = ({
|
|
|
18
19
|
...props
|
|
19
20
|
});
|
|
20
21
|
};
|
|
21
|
-
export default ThemedSliderStepIndicator;
|
|
22
|
+
export default /*#__PURE__*/memo(ThemedSliderStepIndicator);
|
|
22
23
|
//# sourceMappingURL=ThemedSliderStepIndicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sliderStepIndicatorDefaultWidth","ThemedView","jsx","_jsx","ThemedSliderStepIndicator","width","height","props","position","backgroundColor"],"sourceRoot":"../../../../src","sources":["components/slider/ThemedSliderStepIndicator.tsx"],"mappings":";;AAAA;;
|
|
1
|
+
{"version":3,"names":["memo","sliderStepIndicatorDefaultWidth","ThemedView","jsx","_jsx","ThemedSliderStepIndicator","width","height","props","position","backgroundColor"],"sourceRoot":"../../../../src","sources":["components/slider/ThemedSliderStepIndicator.tsx"],"mappings":";;AAAA;;AAEA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,+BAA+B,QAAQ,6BAA0B;AAC1E,OAAOC,UAAU,MAAM,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE5C,MAAMC,yBAA6D,GAAGA,CAAC;EACrEC,KAAK,GAAGL,+BAA+B;EACvCM,MAAM;EACN,GAAGC;AACL,CAAC,KAAK;EACJ,oBACEJ,IAAA,CAACF,UAAU;IACTO,QAAQ,EAAE,UAAW;IACrBH,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfG,eAAe,EAAE,UAAW;IAAA,GACxBF;EAAK,CACV,CAAC;AAEN,CAAC;AAED,4BAAeR,IAAI,CAACK,yBAAyB,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { useDeferredValue, useEffect, useRef, useState } from 'react';
|
|
4
4
|
export function useTimeout() {
|
|
5
5
|
const timeoutRef = useRef(null);
|
|
6
6
|
const clearTimeoutRef = () => {
|
|
@@ -29,4 +29,13 @@ export function useInterval() {
|
|
|
29
29
|
clearIntervalRef
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
export function useDeferredState(initialState) {
|
|
33
|
+
const [state, setState] = useState(initialState);
|
|
34
|
+
const deferredState = useDeferredValue(state);
|
|
35
|
+
return {
|
|
36
|
+
state,
|
|
37
|
+
setState,
|
|
38
|
+
deferredState
|
|
39
|
+
};
|
|
40
|
+
}
|
|
32
41
|
//# sourceMappingURL=react.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useTimeout","timeoutRef","clearTimeoutRef","current","clearTimeout","useInterval","intervalRef","clearIntervalRef","clearInterval"],"sourceRoot":"../../../src","sources":["hooks/react.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["useDeferredValue","useEffect","useRef","useState","useTimeout","timeoutRef","clearTimeoutRef","current","clearTimeout","useInterval","intervalRef","clearIntervalRef","clearInterval","useDeferredState","initialState","state","setState","deferredState"],"sourceRoot":"../../../src","sources":["hooks/react.ts"],"mappings":";;AAAA,SAASA,gBAAgB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAErE,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMC,UAAU,GAAGH,MAAM,CAAS,IAAI,CAAC;EACvC,MAAMI,eAAe,GAAGA,CAAA,KAAM;IAC5B,IAAID,UAAU,CAACE,OAAO,EAAE;MACtBC,YAAY,CAACH,UAAU,CAACE,OAAO,CAAC;MAChCF,UAAU,CAACE,OAAO,GAAG,IAAI;IAC3B;EACF,CAAC;EACDN,SAAS,CAAC,MAAMK,eAAe,EAAE,EAAE,CAAC;EAEpC,OAAO;IAAED,UAAU;IAAEC;EAAgB,CAAC;AACxC;AAEA,OAAO,SAASG,WAAWA,CAAA,EAAG;EAC5B,MAAMC,WAAW,GAAGR,MAAM,CAAS,IAAI,CAAC;EACxC,MAAMS,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,IAAID,WAAW,CAACH,OAAO,EAAE;MACvBK,aAAa,CAACF,WAAW,CAACH,OAAO,CAAC;MAClCG,WAAW,CAACH,OAAO,GAAG,IAAI;IAC5B;EACF,CAAC;EACDN,SAAS,CAAC,MAAMU,gBAAgB,EAAE,EAAE,CAAC;EAErC,OAAO;IAAED,WAAW;IAAEC;EAAiB,CAAC;AAC1C;AAEA,OAAO,SAASE,gBAAgBA,CAAIC,YAAgB,EAAE;EACpD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAgBW,YAAY,CAAC;EAC/D,MAAMG,aAAa,GAAGjB,gBAAgB,CAACe,KAAK,CAAC;EAE7C,OAAO;IAAEA,KAAK;IAAEC,QAAQ;IAAEC;EAAc,CAAC;AAC3C","ignoreList":[]}
|
|
@@ -19,5 +19,6 @@ export let SliderThumbSize = /*#__PURE__*/function (SliderThumbSize) {
|
|
|
19
19
|
SliderThumbSize[SliderThumbSize["L"] = 28] = "L";
|
|
20
20
|
return SliderThumbSize;
|
|
21
21
|
}({});
|
|
22
|
+
export const sliderThumbDefaultSize = SliderThumbSize.M;
|
|
22
23
|
export const sliderStepIndicatorDefaultWidth = BorderSize.M;
|
|
23
24
|
//# sourceMappingURL=const.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BorderSize","SliderValueDisplayMode","SliderTrackSize","SliderThumbSize","
|
|
1
|
+
{"version":3,"names":["BorderSize","SliderValueDisplayMode","SliderTrackSize","SliderThumbSize","sliderThumbDefaultSize","M","sliderStepIndicatorDefaultWidth"],"sourceRoot":"../../../../src","sources":["utils/slider/const.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,mBAAgB;AAE3C,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAMlC,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B,OAAO,MAAMC,sBAAsB,GAAGD,eAAe,CAACE,CAAC;AAEvD,OAAO,MAAMC,+BAA+B,GAAGN,UAAU,CAACK,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../../../src/components/slider/Slider.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,oBAAoB,CAAC;;AAoM5B,wBAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemedSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/slider/ThemedSlider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemedSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/slider/ThemedSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAczE,QAAA,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkFvC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export default ThemedSliderStepIndicator;
|
|
1
|
+
declare const _default: import("react").NamedExoticComponent<import("../..").ThemedViewProps>;
|
|
2
|
+
export default _default;
|
|
4
3
|
//# sourceMappingURL=ThemedSliderStepIndicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemedSliderStepIndicator.d.ts","sourceRoot":"","sources":["../../../../../src/components/slider/ThemedSliderStepIndicator.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemedSliderStepIndicator.d.ts","sourceRoot":"","sources":["../../../../../src/components/slider/ThemedSliderStepIndicator.tsx"],"names":[],"mappings":";AAuBA,wBAA+C"}
|
|
@@ -6,4 +6,9 @@ export declare function useInterval(): {
|
|
|
6
6
|
intervalRef: import("react").RefObject<number | null>;
|
|
7
7
|
clearIntervalRef: () => void;
|
|
8
8
|
};
|
|
9
|
+
export declare function useDeferredState<T>(initialState?: T): {
|
|
10
|
+
state: T | undefined;
|
|
11
|
+
setState: import("react").Dispatch<import("react").SetStateAction<T | undefined>>;
|
|
12
|
+
deferredState: T | undefined;
|
|
13
|
+
};
|
|
9
14
|
//# sourceMappingURL=react.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/hooks/react.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU;;;EAWzB;AAED,wBAAgB,WAAW;;;EAW1B"}
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/hooks/react.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU;;;EAWzB;AAED,wBAAgB,WAAW;;;EAW1B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;;;;EAKnD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { SharedValue } from 'react-native-reanimated';
|
|
1
2
|
import type { SliderThumbSize, SliderTrackSize, SliderValueDisplayMode } from '../utils/slider/const';
|
|
3
|
+
import type { SetState } from './react';
|
|
2
4
|
import type { ThemedTextProps } from './text';
|
|
3
5
|
import type { ThemeColors } from './theme';
|
|
4
6
|
import type { AnimatedThemedViewProps, ThemedViewProps } from './view';
|
|
@@ -16,9 +18,10 @@ export type StringSlider = {
|
|
|
16
18
|
stepIndicator?: boolean;
|
|
17
19
|
stepIndicatorProps?: ThemedSliderStepIndicatorProps;
|
|
18
20
|
};
|
|
19
|
-
export type
|
|
21
|
+
export type SliderProps = (NumberSlider | StringSlider) & {
|
|
20
22
|
snapToStepAnimated?: boolean;
|
|
21
23
|
onValueChange: (value: number | string) => void;
|
|
24
|
+
sliderWrapProps?: ThemedViewProps;
|
|
22
25
|
trackSize?: SliderTrackSize | number;
|
|
23
26
|
trackActiveColor?: ThemeColors;
|
|
24
27
|
trackActiveProps?: ThemedViewProps;
|
|
@@ -32,6 +35,13 @@ export type ThemedSliderProps = (NumberSlider | StringSlider) & {
|
|
|
32
35
|
valueTextProps?: Omit<ThemedTextProps, 'children'>;
|
|
33
36
|
valueDescription?: string;
|
|
34
37
|
valueDescriptionTextProps?: Omit<ThemedTextProps, 'children'>;
|
|
38
|
+
gestureActivateDuration?: number;
|
|
39
|
+
setSelectedVal: SetState<number | string | undefined>;
|
|
40
|
+
selectedValSharedVal: SharedValue<number | string | undefined>;
|
|
41
|
+
};
|
|
42
|
+
export type ThemedSliderProps = Omit<SliderProps, 'setSelectedVal' | 'selectedValSharedVal'> & {
|
|
43
|
+
snapToStepAnimated?: boolean;
|
|
44
|
+
onValueChange: (value: number | string) => void;
|
|
35
45
|
wrapProps?: ThemedViewProps;
|
|
36
46
|
};
|
|
37
47
|
export type ThemedSliderStepIndicatorProps = ThemedViewProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../../src/types/slider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,8BAA8B,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../../src/types/slider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,8BAA8B,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IACrC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IACrC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACxC,cAAc,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC9D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,oBAAoB,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,WAAW,EACX,gBAAgB,GAAG,sBAAsB,CAC1C,GAAG;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../../../src/utils/slider/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,oBAAY,sBAAsB;IAChC,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AAED,oBAAY,eAAe;IACzB,CAAC,IAAI;IACL,CAAC,KAAK;IACN,CAAC,KAAK;CACP;AAED,oBAAY,eAAe;IACzB,CAAC,KAAK;IACN,CAAC,KAAK;IACN,CAAC,KAAK;CACP;AAED,eAAO,MAAM,+BAA+B,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../../../src/utils/slider/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,oBAAY,sBAAsB;IAChC,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AAED,oBAAY,eAAe;IACzB,CAAC,IAAI;IACL,CAAC,KAAK;IACN,CAAC,KAAK;CACP;AAED,oBAAY,eAAe;IACzB,CAAC,KAAK;IACN,CAAC,KAAK;IACN,CAAC,KAAK;CACP;AAED,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD,eAAO,MAAM,+BAA+B,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jamadd/react-native-template-ui",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.7",
|
|
4
4
|
"description": "React Native Template UI is a collection of UI components designed by JaMa D&D.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|