@@ -20,10 +20,17 @@ import Animated, {
20
20
withTiming ,
21
21
withRepeat ,
22
22
withSequence ,
23
+ configureReanimatedLogger ,
24
+ ReanimatedLogLevel ,
23
25
} from 'react-native-reanimated' ;
24
26
import { Bubble , BubbleRef } from './ballon' ;
25
27
import { palette } from './theme/palette' ;
26
28
import { clamp } from './utils' ;
29
+
30
+ configureReanimatedLogger ( {
31
+ level : ReanimatedLogLevel . warn ,
32
+ strict : false ,
33
+ } ) ;
27
34
const formatSeconds = ( second : number ) => `${ Math . round ( second * 100 ) / 100 } ` ;
28
35
const hitSlop = {
29
36
top : 12 ,
@@ -185,8 +192,14 @@ export type AwesomeSliderProps = {
185
192
*/
186
193
thumbScaleValue ?: Animated . SharedValue < number > ;
187
194
panHitSlop ?: Insets ;
188
-
195
+ /**
196
+ * @deprecated use `steps` instead.
197
+ */
189
198
step ?: number ;
199
+ /**
200
+ * Count of segmented sliders.
201
+ */
202
+ steps ?: number ;
190
203
/**
191
204
* withTiming options when step is defined. if false, no animation will be used. default false.
192
205
*/
@@ -217,30 +230,34 @@ export type AwesomeSliderProps = {
217
230
*
218
231
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetxvalue-number--number
219
232
*/
220
- activeOffsetX ?: number | number [ ] ;
233
+ activeOffsetX ?:
234
+ | number
235
+ | [ activeOffsetXStart : number , activeOffsetXEnd : number ] ;
221
236
/**
222
237
* Range along Y axis (in points) where fingers travels without activation of
223
238
* gesture. Moving outside of this range implies activation of gesture.
224
239
*
225
240
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetyvalue-number--number
226
241
*/
227
- activeOffsetY ?: number | number [ ] ;
242
+ activeOffsetY ?:
243
+ | number
244
+ | [ activeOffsetYStart : number , activeOffsetYEnd : number ] ;
228
245
/**
229
246
* When the finger moves outside this range (in points) along X axis and
230
247
* gesture hasn't yet activated it will fail recognizing the gesture. Range
231
248
* can be given as an array or a single number.
232
249
*
233
250
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetyvalue-number--number
234
251
*/
235
- failOffsetX ?: number | number [ ] ;
252
+ failOffsetX ?: number | [ failOffsetXStart : number , failOffsetXEnd : number ] ;
236
253
/**
237
254
* When the finger moves outside this range (in points) along Y axis and
238
255
* gesture hasn't yet activated it will fail recognizing the gesture. Range
239
256
* can be given as an array or a single number
240
257
*
241
258
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetxvalue-number--number
242
259
*/
243
- failOffsetY ?: number | number [ ] ;
260
+ failOffsetY ?: number | [ failOffsetYStart : number , failOffsetYEnd : number ] ;
244
261
/**
245
262
* When 'heartbeat' is set to true, the progress bar color will animate back and forth between its current color and the color specified for the heartbeat.
246
263
*/
@@ -285,7 +302,8 @@ export const Slider: FC<AwesomeSliderProps> = memo(function Slider({
285
302
renderMark,
286
303
setBubbleText,
287
304
sliderHeight = 5 ,
288
- step,
305
+ step : propsStep ,
306
+ steps,
289
307
stepTimingOptions = false ,
290
308
style,
291
309
testID,
@@ -299,6 +317,7 @@ export const Slider: FC<AwesomeSliderProps> = memo(function Slider({
299
317
failOffsetY,
300
318
heartbeat = false ,
301
319
} ) {
320
+ const step = propsStep || steps ;
302
321
const snappingEnabled = snapToStep && step ;
303
322
const bubbleRef = useRef < BubbleRef > ( null ) ;
304
323
const isScrubbingInner = useSharedValue ( false ) ;
@@ -437,7 +456,7 @@ export const Slider: FC<AwesomeSliderProps> = memo(function Slider({
437
456
} ,
438
457
] ,
439
458
} ;
440
- } ) ;
459
+ } , [ bubbleTranslateY , bubbleWidth , width ] ) ;
441
460
442
461
const animatedCacheXStyle = useAnimatedStyle ( ( ) => {
443
462
const cacheX =
@@ -448,7 +467,7 @@ export const Slider: FC<AwesomeSliderProps> = memo(function Slider({
448
467
return {
449
468
width : cacheX ,
450
469
} ;
451
- } ) ;
470
+ } , [ cache , sliderTotalValue , width ] ) ;
452
471
453
472
const animatedHeartbeatStyle = useAnimatedStyle ( ( ) => {
454
473
// Goes to one and zero continuously
@@ -469,7 +488,7 @@ export const Slider: FC<AwesomeSliderProps> = memo(function Slider({
469
488
width : sliderWidth ,
470
489
opacity,
471
490
} ;
472
- } ) ;
491
+ } , [ sliderWidth , heartbeat ] ) ;
473
492
474
493
const onSlideAcitve = useCallback (
475
494
( seconds : number ) => {
0 commit comments