Skip to content

Commit 5049b12

Browse files
authored
Incubator Slider - fix step interpolation (#2988)
* Incubator Slider - fix step interpolation * refine interpolate and format file * fix logic
1 parent 01709e3 commit 5049b12

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/incubator/Slider/SliderPresenter.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function countDecimals(value: number) {
1515
if (Math.floor(value.valueOf()) === value.valueOf()) {
1616
return 0;
1717
}
18-
return value.toString().split('.')[1].length || 0;
18+
return value.toString().split('.')[1].length || 0;
1919
}
2020

2121
export function getValueForOffset(offset: number, span: number, minimum = 0, maximum = 1, step = 0) {
@@ -39,26 +39,37 @@ function inRange(value: number, min: number, max: number) {
3939

4040
export function validateValues(props: SliderProps) {
4141
const {useRange, value, minimumValue = 0, maximumValue = 1, initialMinimumValue, initialMaximumValue} = props;
42-
if (minimumValue > maximumValue ||
43-
useRange && initialMinimumValue && initialMaximumValue && initialMinimumValue > initialMaximumValue) {
42+
if (
43+
minimumValue > maximumValue ||
44+
(useRange && initialMinimumValue && initialMaximumValue && initialMinimumValue > initialMaximumValue)
45+
) {
4446
console.error('Your passed values are invalid. Please check if minimum values are not higher than maximum values');
4547
}
4648
if (value !== undefined && minimumValue && maximumValue && !inRange(value, minimumValue, maximumValue)) {
4749
console.error(`Your passed value (${value}) is invalid.
4850
Please check that it is in range of the minimum (${minimumValue}) and maximum (${maximumValue}) values`);
4951
}
5052
if (useRange && initialMinimumValue && initialMaximumValue) {
51-
if (!inRange(initialMinimumValue, minimumValue, maximumValue) ||
52-
!inRange(initialMaximumValue, minimumValue, maximumValue)) {
53-
console.error('Your passed values are invalid. Please check that they are in range of the minimum and maximum values');
53+
if (
54+
!inRange(initialMinimumValue, minimumValue, maximumValue) ||
55+
!inRange(initialMaximumValue, minimumValue, maximumValue)
56+
) {
57+
console.error(
58+
'Your passed values are invalid. Please check that they are in range of the minimum and maximum values'
59+
);
5460
}
5561
}
5662
}
5763

58-
export function getStepInterpolated(trackWidth: number, minimumValue: number, maximumValue: number, stepXValue: SharedValue<number>) {
64+
export function getStepInterpolated(
65+
trackWidth: number,
66+
minimumValue: number,
67+
maximumValue: number,
68+
stepXValue: SharedValue<number>
69+
) {
5970
'worklet';
6071
const outputRange = [0, trackWidth];
61-
const inputRange = minimumValue < 0 ?
62-
[Math.abs(maximumValue), Math.abs(minimumValue)] : [minimumValue, maximumValue];
72+
const inputRange =
73+
minimumValue < 0 ? [0, Math.abs(minimumValue) + maximumValue] : [0, maximumValue - minimumValue];
6374
return interpolate(stepXValue.value, inputRange, outputRange);
6475
}

0 commit comments

Comments
 (0)