related-ui-components 2.7.0 → 2.7.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/lib/module/app.js CHANGED
@@ -4,8 +4,8 @@ import React, { useState } from "react";
4
4
  import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
5
5
  // Adjust path as needed
6
6
  import { GestureHandlerRootView } from "react-native-gesture-handler";
7
+ import { RangeSlider } from "./components/index.js";
7
8
  import { lightTheme, RelatedProvider, useTheme } from "./theme/index.js";
8
- import PhoneInput from "./components/Input/PhoneInput.js";
9
9
  import { BottomSheetStackProvider } from "./contexts/index.js";
10
10
  import { SafeAreaProvider } from "react-native-safe-area-context";
11
11
 
@@ -63,12 +63,13 @@ const App = () => {
63
63
  barStyle: "light-content"
64
64
  }), /*#__PURE__*/_jsx(SafeAreaView, {
65
65
  style: styles.appContainer,
66
- children: /*#__PURE__*/_jsx(PhoneInput, {
67
- value: "",
68
- onChangeText: () => {},
69
- inputContainerStyle: {
70
- height: 55
71
- }
66
+ children: /*#__PURE__*/_jsx(RangeSlider, {
67
+ initialMinValue: 0,
68
+ initialMaxValue: 100,
69
+ min: 0,
70
+ max: 500,
71
+ sliderWidth: 300,
72
+ onValueChange: console.log
72
73
  })
73
74
  })]
74
75
  })
@@ -81,7 +82,9 @@ const styles = StyleSheet.create({
81
82
  appContainer: {
82
83
  flex: 1,
83
84
  backgroundColor: "grey",
84
- justifyContent: "center" // Center the carousel vertically if it's the main content
85
+ justifyContent: "center",
86
+ // Center the carousel vertically if it's the main content
87
+ alignItems: "center"
85
88
  }
86
89
  });
87
90
  export default App;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","lightTheme","RelatedProvider","useTheme","PhoneInput","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","value","onChangeText","inputContainerStyle","height","create","backgroundColor","justifyContent"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAeC,QAAQ,QAAQ,OAAO;AAClD,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAkC,cAAc;AACV;AAClF,SAASC,sBAAsB,QAAQ,8BAA8B;AAWrE,SAASC,UAAU,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,kBAAS;AAE/D,OAAOC,UAAU,MAAM,kCAA+B;AACtD,SAASC,wBAAwB,QAAQ,qBAAY;AACrD,SAASC,gBAAgB,QAAQ,gCAAgC;;AAEjE;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AACA,MAAMC,UAAU,GAAG,CACjB;EACEC,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,CACD;AAED,MAAMC,GAAG,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGf,QAAQ,CAAC,CAAC;EAE5B,MAAM,CAACgB,aAAa,EAAEC,gBAAgB,CAAC,GAAGxB,QAAQ,CAChDyB,SACF,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG3B,QAAQ,CAAqByB,SAAS,CAAC;EAE3E,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAG7B,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM8B,aAAa,GAAGA,CAAA,KAAM;IAC1B;IACA,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IACnDL,WAAW,CAACE,WAAW,CAAC;EAC1B,CAAC;EAED,oBACEnB,IAAA,CAAAI,SAAA;IAAAmB,QAAA,eACEvB,IAAA,CAACF,gBAAgB;MAAAyB,QAAA,eACfvB,IAAA,CAACR,sBAAsB;QAACgC,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAF,QAAA,eACzCvB,IAAA,CAACN,eAAe;UAACgB,KAAK,EAAEjB,UAAW;UAAA8B,QAAA,eACjCrB,KAAA,CAACL,wBAAwB;YAAA0B,QAAA,gBACvBvB,IAAA,CAACT,SAAS;cAACmC,QAAQ,EAAC;YAAe,CAAE,CAAC,eACtC1B,IAAA,CAACX,YAAY;cAACmC,KAAK,EAAEG,MAAM,CAACC,YAAa;cAAAL,QAAA,eAiDvCvB,IAAA,CAACJ,UAAU;gBACTiC,KAAK,EAAC,EAAE;gBACRC,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAE;gBACvBC,mBAAmB,EAAE;kBAAEC,MAAM,EAAE;gBAAG;cAAE,CACzB;YAAC,CACF,CAAC;UAAA,CACS;QAAC,CACZ;MAAC,CACI;IAAC,CACT;EAAC,CACnB,CAAC;AAEP,CAAC;AAED,MAAML,MAAM,GAAGrC,UAAU,CAAC2C,MAAM,CAAC;EAC/BL,YAAY,EAAE;IACZH,IAAI,EAAE,CAAC;IACPS,eAAe,EAAE,MAAM;IACvBC,cAAc,EAAE,QAAQ,CAAE;EAC5B;AACF,CAAC,CAAC;AAEF,eAAe1B,GAAG","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","RangeSlider","lightTheme","RelatedProvider","useTheme","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","initialMinValue","initialMaxValue","min","max","sliderWidth","onValueChange","console","log","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAeC,QAAQ,QAAQ,OAAO;AAClD,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAkC,cAAc;AACV;AAClF,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAQEC,WAAW,QACN,uBAAc;AACrB,SAASC,UAAU,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,kBAAS;AAG/D,SAASC,wBAAwB,QAAQ,qBAAY;AACrD,SAASC,gBAAgB,QAAQ,gCAAgC;;AAEjE;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AACA,MAAMC,UAAU,GAAG,CACjB;EACEC,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,CACD;AAED,MAAMC,GAAG,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGd,QAAQ,CAAC,CAAC;EAE5B,MAAM,CAACe,aAAa,EAAEC,gBAAgB,CAAC,GAAGxB,QAAQ,CAChDyB,SACF,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG3B,QAAQ,CAAqByB,SAAS,CAAC;EAE3E,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAG7B,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM8B,aAAa,GAAGA,CAAA,KAAM;IAC1B;IACA,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IACnDL,WAAW,CAACE,WAAW,CAAC;EAC1B,CAAC;EAED,oBACEnB,IAAA,CAAAI,SAAA;IAAAmB,QAAA,eACEvB,IAAA,CAACF,gBAAgB;MAAAyB,QAAA,eACfvB,IAAA,CAACR,sBAAsB;QAACgC,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAF,QAAA,eACzCvB,IAAA,CAACL,eAAe;UAACe,KAAK,EAAEhB,UAAW;UAAA6B,QAAA,eACjCrB,KAAA,CAACL,wBAAwB;YAAA0B,QAAA,gBACvBvB,IAAA,CAACT,SAAS;cAACmC,QAAQ,EAAC;YAAe,CAAE,CAAC,eACtC1B,IAAA,CAACX,YAAY;cAACmC,KAAK,EAAEG,MAAM,CAACC,YAAa;cAAAL,QAAA,eAgDvCvB,IAAA,CAACP,WAAW;gBAACoC,eAAe,EAAE,CAAE;gBAACC,eAAe,EAAE,GAAI;gBAACC,GAAG,EAAE,CAAE;gBAACC,GAAG,EAAE,GAAI;gBAACC,WAAW,EAAE,GAAI;gBAACC,aAAa,EAAEC,OAAO,CAACC;cAAI,CAAc;YAAC,CAMzH,CAAC;UAAA,CACS;QAAC,CACZ;MAAC,CACI;IAAC,CACT;EAAC,CACnB,CAAC;AAEP,CAAC;AAED,MAAMT,MAAM,GAAGrC,UAAU,CAAC+C,MAAM,CAAC;EAC/BT,YAAY,EAAE;IACZH,IAAI,EAAE,CAAC;IACPa,eAAe,EAAE,MAAM;IACvBC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,UAAU,EAAC;EACb;AACF,CAAC,CAAC;AAEF,eAAe/B,GAAG","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useCallback, useState } from "react";
4
- import { StyleSheet, View } from "react-native";
4
+ import { I18nManager, StyleSheet, View } from "react-native";
5
5
  import { Gesture, GestureDetector } from "react-native-gesture-handler";
6
6
  import Animated, { runOnJS, useAnimatedStyle, useSharedValue } from "react-native-reanimated";
7
7
  import { SliderLabels } from "./SliderLabel.js";
@@ -25,21 +25,28 @@ const RangeSlider = ({
25
25
  } = useTheme();
26
26
  const currTheme = theme || defaultTheme;
27
27
  const styles = getStyles(currTheme);
28
+ const isRTL = I18nManager.isRTL;
28
29
 
29
30
  // State for label text values, passed down to the SliderLabels component
30
31
  const [leftLabel, setLeftLabel] = useState(initialMinValue.toLocaleString());
31
32
  const [rightLabel, setRightLabel] = useState(initialMaxValue.toLocaleString());
33
+
34
+ // These functions correctly map a value to its thumb's CENTER position for both LTR and RTL.
32
35
  const valueToPosition = useCallback(value => {
33
36
  "worklet";
34
37
 
35
- return (value - min) / (max - min) * sliderWidth;
36
- }, [min, max, sliderWidth]);
38
+ const position = (value - min) / (max - min) * sliderWidth;
39
+ return isRTL ? sliderWidth - position : position;
40
+ }, [min, max, sliderWidth, isRTL]);
37
41
  const positionToValue = useCallback(position => {
38
42
  "worklet";
39
43
 
40
- const rawValue = position / sliderWidth * (max - min) + min;
44
+ const pos = isRTL ? sliderWidth - position : position;
45
+ const rawValue = pos / sliderWidth * (max - min) + min;
41
46
  return Math.round(rawValue / step) * step;
42
- }, [min, max, step, sliderWidth]);
47
+ }, [min, max, step, sliderWidth, isRTL]);
48
+
49
+ // 'leftPosition' is for the min value, 'rightPosition' is for the max value.
43
50
  const leftPosition = useSharedValue(valueToPosition(initialMinValue));
44
51
  const rightPosition = useSharedValue(valueToPosition(initialMaxValue));
45
52
  const context = useSharedValue({
@@ -62,13 +69,17 @@ const RangeSlider = ({
62
69
  }
63
70
  }).onUpdate(e => {
64
71
  if (activeThumb.value === null) return;
72
+
73
+ // Invert translation for RTL
65
74
  const newPos = context.value.x + e.translationX;
66
75
  if (activeThumb.value === "left") {
67
- const clampedPos = Math.max(0, Math.min(newPos, rightPosition.value - THUMB_SIZE));
76
+ // This is the MINIMUM value thumb
77
+ const clampedPos = isRTL ? Math.min(sliderWidth - THUMB_SIZE / 2, Math.max(newPos, rightPosition.value + THUMB_SIZE)) : Math.max(THUMB_SIZE / 2, Math.min(newPos, rightPosition.value - THUMB_SIZE));
68
78
  leftPosition.value = clampedPos;
69
79
  runOnJS(setLeftLabel)(positionToValue(clampedPos).toLocaleString());
70
80
  } else {
71
- const clampedPos = Math.min(sliderWidth, Math.max(newPos, leftPosition.value + THUMB_SIZE));
81
+ // This is the MAXIMUM value thumb
82
+ const clampedPos = isRTL ? Math.max(THUMB_SIZE / 2, Math.min(newPos, leftPosition.value - THUMB_SIZE)) : Math.min(sliderWidth - THUMB_SIZE / 2, Math.max(newPos, leftPosition.value + THUMB_SIZE));
72
83
  rightPosition.value = clampedPos;
73
84
  runOnJS(setRightLabel)(positionToValue(clampedPos).toLocaleString());
74
85
  }
@@ -82,25 +93,35 @@ const RangeSlider = ({
82
93
  });
83
94
  activeThumb.value = null;
84
95
  });
96
+
97
+ // These styles center the thumb on its position value
85
98
  const animatedLeftThumbStyle = useAnimatedStyle(() => ({
86
99
  transform: [{
87
- translateX: leftPosition.value
100
+ translateX: leftPosition.value - THUMB_SIZE / 2
88
101
  }]
89
102
  }));
90
103
  const animatedRightThumbStyle = useAnimatedStyle(() => ({
91
104
  transform: [{
92
- translateX: rightPosition.value - THUMB_SIZE
105
+ translateX: rightPosition.value - THUMB_SIZE / 2
93
106
  }]
94
107
  }));
95
- const animatedActiveRailStyle = useAnimatedStyle(() => ({
96
- left: leftPosition.value,
97
- right: sliderWidth - rightPosition.value
98
- }));
108
+
109
+ // This style correctly draws the active rail between the two thumb centers in both LTR and RTL.
110
+ const animatedActiveRailStyle = useAnimatedStyle(() => {
111
+ const start = isRTL ? rightPosition.value : leftPosition.value;
112
+ const end = isRTL ? leftPosition.value : rightPosition.value;
113
+ return {
114
+ left: start,
115
+ width: end - start
116
+ };
117
+ });
99
118
  return /*#__PURE__*/_jsxs(View, {
100
119
  style: [styles.container, {
101
120
  width: sliderWidth
102
121
  }],
103
- children: [/*#__PURE__*/_jsx(SliderLabels, {
122
+ children: [/*#__PURE__*/_jsx(SliderLabels
123
+ // isRtl={isRTL} // Pass isRTL to SliderLabels so it can adjust accordingly
124
+ , {
104
125
  leftValue: leftLabel,
105
126
  rightValue: rightLabel,
106
127
  leftPosition: leftPosition,
@@ -134,7 +155,7 @@ const getStyles = theme => StyleSheet.create({
134
155
  container: {
135
156
  height: LABEL_HEIGHT + THUMB_SIZE,
136
157
  justifyContent: "center",
137
- marginTop: LABEL_HEIGHT // Add margin to prevent label cutoff
158
+ marginTop: LABEL_HEIGHT
138
159
  },
139
160
  railContainer: {
140
161
  justifyContent: "center",
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useState","StyleSheet","View","Gesture","GestureDetector","Animated","runOnJS","useAnimatedStyle","useSharedValue","SliderLabels","useTheme","jsx","_jsx","jsxs","_jsxs","THUMB_SIZE","RAIL_HEIGHT","LABEL_HEIGHT","RangeSlider","min","max","step","sliderWidth","initialMinValue","initialMaxValue","onValueChange","theme","defaultTheme","currTheme","styles","getStyles","leftLabel","setLeftLabel","toLocaleString","rightLabel","setRightLabel","valueToPosition","value","positionToValue","position","rawValue","Math","round","leftPosition","rightPosition","context","x","activeThumb","panGesture","Pan","onBegin","e","distToLeft","abs","distToRight","onUpdate","newPos","translationX","clampedPos","onEnd","finalLeftValue","finalRightValue","animatedLeftThumbStyle","transform","translateX","animatedRightThumbStyle","animatedActiveRailStyle","left","right","style","container","width","children","leftValue","rightValue","thumbSize","gesture","railContainer","rail","activeRail","thumbContainer","thumb","create","height","justifyContent","marginTop","borderRadius","backgroundColor","surface","primary","alignItems","background","borderColor","borderWidth"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/RangeSlider/RangeSlider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useState","I18nManager","StyleSheet","View","Gesture","GestureDetector","Animated","runOnJS","useAnimatedStyle","useSharedValue","SliderLabels","useTheme","jsx","_jsx","jsxs","_jsxs","THUMB_SIZE","RAIL_HEIGHT","LABEL_HEIGHT","RangeSlider","min","max","step","sliderWidth","initialMinValue","initialMaxValue","onValueChange","theme","defaultTheme","currTheme","styles","getStyles","isRTL","leftLabel","setLeftLabel","toLocaleString","rightLabel","setRightLabel","valueToPosition","value","position","positionToValue","pos","rawValue","Math","round","leftPosition","rightPosition","context","x","activeThumb","panGesture","Pan","onBegin","e","distToLeft","abs","distToRight","onUpdate","newPos","translationX","clampedPos","onEnd","finalLeftValue","finalRightValue","animatedLeftThumbStyle","transform","translateX","animatedRightThumbStyle","animatedActiveRailStyle","start","end","left","width","style","container","children","leftValue","rightValue","thumbSize","gesture","railContainer","rail","activeRail","thumbContainer","thumb","create","height","justifyContent","marginTop","borderRadius","backgroundColor","surface","primary","alignItems","background","borderColor","borderWidth"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/RangeSlider/RangeSlider.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React from "react";
4
4
  import { StyleSheet, Text, View } from "react-native";
5
- import Animated, { useAnimatedStyle, useDerivedValue, useSharedValue } from "react-native-reanimated";
5
+ import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated";
6
6
  import { useTheme } from "../../theme/index.js";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  const LABEL_HEIGHT = 26;
@@ -20,7 +20,7 @@ const CenteredLabel = ({
20
20
  const currTheme = theme || defaultTheme;
21
21
  const styles = getStyles(currTheme);
22
22
  const animatedLabelStyle = useAnimatedStyle(() => {
23
- const rawCenter = position.value + thumbSize / 2;
23
+ const rawCenter = position.value;
24
24
  const shifted = rawCenter - labelWidth.value / 2;
25
25
  const left = Math.min(Math.max(shifted, 0), sliderWidth - labelWidth.value);
26
26
  return {
@@ -52,9 +52,6 @@ export const SliderLabels = ({
52
52
  } = useTheme();
53
53
  const currTheme = theme || defaultTheme;
54
54
  const styles = getStyles(currTheme);
55
- const rightThumbLeftPosition = useDerivedValue(() => {
56
- return rightPosition.value - thumbSize;
57
- });
58
55
  return /*#__PURE__*/_jsxs(View, {
59
56
  style: styles.wrapper,
60
57
  pointerEvents: "none",
@@ -66,7 +63,7 @@ export const SliderLabels = ({
66
63
  }), /*#__PURE__*/_jsx(CenteredLabel, {
67
64
  value: rightValue,
68
65
  thumbSize: thumbSize,
69
- position: rightThumbLeftPosition,
66
+ position: rightPosition,
70
67
  sliderWidth: sliderWidth
71
68
  })]
72
69
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","Text","View","Animated","useAnimatedStyle","useDerivedValue","useSharedValue","useTheme","jsx","_jsx","jsxs","_jsxs","LABEL_HEIGHT","CenteredLabel","value","position","sliderWidth","thumbSize","theme","labelWidth","defaultTheme","currTheme","styles","getStyles","animatedLabelStyle","rawCenter","shifted","left","Math","min","max","style","labelContainer","onLayout","e","nativeEvent","layout","width","children","labelText","SliderLabels","leftValue","rightValue","leftPosition","rightPosition","rightThumbLeftPosition","wrapper","pointerEvents","create","height","top","alignItems","backgroundColor","surface","paddingHorizontal","paddingVertical","borderRadius","color","onSurface","fontSize","fontFamily"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/RangeSlider/SliderLabel.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","Text","View","Animated","useAnimatedStyle","useSharedValue","useTheme","jsx","_jsx","jsxs","_jsxs","LABEL_HEIGHT","CenteredLabel","value","position","sliderWidth","thumbSize","theme","labelWidth","defaultTheme","currTheme","styles","getStyles","animatedLabelStyle","rawCenter","shifted","left","Math","min","max","style","labelContainer","onLayout","e","nativeEvent","layout","width","children","labelText","SliderLabels","leftValue","rightValue","leftPosition","rightPosition","wrapper","pointerEvents","create","height","top","alignItems","backgroundColor","surface","paddingHorizontal","paddingVertical","borderRadius","color","onSurface","fontSize","fontFamily"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/RangeSlider/SliderLabel.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,OAAOC,QAAQ,IAEbC,gBAAgB,EAEhBC,cAAc,QACT,yBAAyB;AAChC,SAAoBC,QAAQ,QAAQ,sBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElD,MAAMC,YAAY,GAAG,EAAE;AAoBvB,MAAMC,aAA2C,GAAGA,CAAC;EACnDC,KAAK;EACLC,QAAQ;EACRC,WAAW;EACXC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAGb,cAAc,CAAC,CAAC,CAAC;EACpC,MAAM;IAAEY,KAAK,EAAEE;EAAa,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAC1C,MAAMc,SAAS,GAAGH,KAAK,IAAIE,YAAY;EACvC,MAAME,MAAM,GAAGC,SAAS,CAACF,SAAS,CAAC;EAEnC,MAAMG,kBAAkB,GAAGnB,gBAAgB,CAAC,MAAM;IAChD,MAAMoB,SAAS,GAAGV,QAAQ,CAACD,KAAK;IAChC,MAAMY,OAAO,GAAGD,SAAS,GAAGN,UAAU,CAACL,KAAK,GAAG,CAAC;IAEhD,MAAMa,IAAI,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,OAAO,EAAE,CAAC,CAAC,EAAEV,WAAW,GAAGG,UAAU,CAACL,KAAK,CAAC;IAE3E,OAAO;MACLa,IAAI,EAAEA;IACR,CAAC;EACH,CAAC,CAAC;EAEF,oBACElB,IAAA,CAACL,QAAQ,CAACD,IAAI;IACZ4B,KAAK,EAAE,CAACT,MAAM,CAACU,cAAc,EAAER,kBAAkB,CAAE;IACnDS,QAAQ,EAAGC,CAAC,IAAK;MACff,UAAU,CAACL,KAAK,GAAGoB,CAAC,CAACC,WAAW,CAACC,MAAM,CAACC,KAAK;IAC/C,CAAE;IAAAC,QAAA,eAEF7B,IAAA,CAACP,IAAI;MAAC6B,KAAK,EAAET,MAAM,CAACiB,SAAU;MAAAD,QAAA,EAAExB;IAAK,CAAO;EAAC,CAChC,CAAC;AAEpB,CAAC;AAED,OAAO,MAAM0B,YAAyC,GAAGA,CAAC;EACxDC,SAAS;EACTC,UAAU;EACVC,YAAY;EACZC,aAAa;EACb5B,WAAW;EACXC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEA,KAAK,EAAEE;EAAa,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAC1C,MAAMc,SAAS,GAAGH,KAAK,IAAIE,YAAY;EACvC,MAAME,MAAM,GAAGC,SAAS,CAACF,SAAS,CAAC;EACnC,oBACEV,KAAA,CAACR,IAAI;IAAC4B,KAAK,EAAET,MAAM,CAACuB,OAAQ;IAACC,aAAa,EAAC,MAAM;IAAAR,QAAA,gBAC/C7B,IAAA,CAACI,aAAa;MACZC,KAAK,EAAE2B,SAAU;MACjBxB,SAAS,EAAEA,SAAU;MACrBF,QAAQ,EAAE4B,YAAa;MACvB3B,WAAW,EAAEA;IAAY,CAC1B,CAAC,eACFP,IAAA,CAACI,aAAa;MACZC,KAAK,EAAE4B,UAAW;MAClBzB,SAAS,EAAEA,SAAU;MACrBF,QAAQ,EAAE6B,aAAc;MACxB5B,WAAW,EAAEA;IAAY,CAC1B,CAAC;EAAA,CACE,CAAC;AAEX,CAAC;AAED,MAAMO,SAAS,GAAIL,KAAgB,IACjCjB,UAAU,CAAC8C,MAAM,CAAC;EAChBF,OAAO,EAAE;IACP9B,QAAQ,EAAE,UAAU;IACpBsB,KAAK,EAAE,MAAM;IACbW,MAAM,EAAE;EACV,CAAC;EACDhB,cAAc,EAAE;IACdjB,QAAQ,EAAE,UAAU;IACpBkC,GAAG,EAAE,CAACrC,YAAY,GAAG,CAAC;IACtBsC,UAAU,EAAE;EACd,CAAC;EACDX,SAAS,EAAE;IACTY,eAAe,EAAEjC,KAAK,CAACkC,OAAO;IAC9BC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBC,YAAY,EAAE,CAAC;IACfC,KAAK,EAAEtC,KAAK,CAACuC,SAAS;IACtBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -6,9 +6,6 @@
6
6
  // import App from "./app";
7
7
  // import { I18nManager } from "react-native";
8
8
 
9
- // I18nManager.allowRTL(true);
10
- // I18nManager.forceRTL(true);
11
-
12
9
  // registerRootComponent(App);
13
10
 
14
11
  export * from "./theme/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,cAAc,kBAAS;AACvB,cAAc,uBAAc;AAC5B,cAAc,qBAAY","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;;AAEA,cAAc,kBAAS;AACvB,cAAc,uBAAc;AAC5B,cAAc,qBAAY","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAsDnD,QAAA,MAAM,GAAG,yBAmFR,CAAC;AAUF,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAsDnD,QAAA,MAAM,GAAG,yBAmFR,CAAC;AAWF,eAAe,GAAG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RangeSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/RangeSlider/RangeSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AASrD,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAMlD,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAE9D,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgI3C,CAAC;AAwCF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"RangeSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/RangeSlider/RangeSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AASrD,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAMlD,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyJ3C,CAAC;AAwCF,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/RangeSlider/SliderLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAiB,EACf,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAIlD,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAgDD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+BpD,CAAC"}
1
+ {"version":3,"file":"SliderLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/RangeSlider/SliderLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAiB,EACf,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAIlD,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA6CD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4BpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "main": "./src/index.ts",
5
5
  "scripts": {
6
6
  "start": "expo start",
package/src/app.tsx CHANGED
@@ -66,7 +66,7 @@ const App = () => {
66
66
  const newProgress = Math.floor(Math.random() * 101);
67
67
  setProgress(newProgress);
68
68
  };
69
-
69
+
70
70
  return (
71
71
  <>
72
72
  <SafeAreaProvider>
@@ -122,12 +122,12 @@ const App = () => {
122
122
  {/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
123
123
  {/* <CarouselCardStack data={DUMMY_DATA} /> */}
124
124
  {/* <CircularProgressBar variant="steps" totalSteps={4} currentStep={4} size={43} strokeWidth={2} progressColor="#9CA0A3"></CircularProgressBar> */}
125
- {/* <RangeSlider initialMinValue={0} initialMaxValue={100} min={0} max={500} sliderWidth={100} onValueChange={console.log}></RangeSlider> */}
126
- <PhoneInput
125
+ <RangeSlider initialMinValue={0} initialMaxValue={100} min={0} max={500} sliderWidth={300} onValueChange={console.log}></RangeSlider>
126
+ {/* <PhoneInput
127
127
  value=""
128
128
  onChangeText={() => {}}
129
129
  inputContainerStyle={{ height: 55 }}
130
- ></PhoneInput>
130
+ ></PhoneInput> */}
131
131
  </SafeAreaView>
132
132
  </BottomSheetStackProvider>
133
133
  </RelatedProvider>
@@ -142,6 +142,7 @@ const styles = StyleSheet.create({
142
142
  flex: 1,
143
143
  backgroundColor: "grey",
144
144
  justifyContent: "center", // Center the carousel vertically if it's the main content
145
+ alignItems:"center"
145
146
  },
146
147
  });
147
148
 
@@ -21,8 +21,7 @@ interface RangeSliderProps {
21
21
  initialMinValue: number;
22
22
  initialMaxValue: number;
23
23
  onValueChange: (values: { min: number; max: number }) => void;
24
-
25
- theme?: ThemeType
24
+ theme?: ThemeType;
26
25
  }
27
26
 
28
27
  const RangeSlider: React.FC<RangeSliderProps> = ({
@@ -33,37 +32,41 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
33
32
  initialMinValue,
34
33
  initialMaxValue,
35
34
  onValueChange,
36
- theme
35
+ theme,
37
36
  }) => {
38
- const { theme: defaultTheme} = useTheme();
39
-
37
+ const { theme: defaultTheme } = useTheme();
40
38
  const currTheme = theme || defaultTheme;
41
-
42
39
  const styles = getStyles(currTheme);
43
40
 
41
+ const isRTL = I18nManager.isRTL;
42
+
44
43
  // State for label text values, passed down to the SliderLabels component
45
44
  const [leftLabel, setLeftLabel] = useState(initialMinValue.toLocaleString());
46
45
  const [rightLabel, setRightLabel] = useState(
47
46
  initialMaxValue.toLocaleString()
48
47
  );
49
48
 
49
+ // These functions correctly map a value to its thumb's CENTER position for both LTR and RTL.
50
50
  const valueToPosition = useCallback(
51
51
  (value: number) => {
52
52
  "worklet";
53
- return ((value - min) / (max - min)) * sliderWidth;
53
+ const position = ((value - min) / (max - min)) * sliderWidth;
54
+ return isRTL ? sliderWidth - position : position;
54
55
  },
55
- [min, max, sliderWidth]
56
+ [min, max, sliderWidth, isRTL]
56
57
  );
57
58
 
58
59
  const positionToValue = useCallback(
59
60
  (position: number) => {
60
61
  "worklet";
61
- const rawValue = (position / sliderWidth) * (max - min) + min;
62
+ const pos = isRTL ? sliderWidth - position : position;
63
+ const rawValue = (pos / sliderWidth) * (max - min) + min;
62
64
  return Math.round(rawValue / step) * step;
63
65
  },
64
- [min, max, step, sliderWidth]
66
+ [min, max, step, sliderWidth, isRTL]
65
67
  );
66
68
 
69
+ // 'leftPosition' is for the min value, 'rightPosition' is for the max value.
67
70
  const leftPosition = useSharedValue(valueToPosition(initialMinValue));
68
71
  const rightPosition = useSharedValue(valueToPosition(initialMaxValue));
69
72
  const context = useSharedValue({ x: 0 });
@@ -83,20 +86,34 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
83
86
  })
84
87
  .onUpdate((e) => {
85
88
  if (activeThumb.value === null) return;
89
+
90
+ // Invert translation for RTL
86
91
  const newPos = context.value.x + e.translationX;
87
92
 
88
93
  if (activeThumb.value === "left") {
89
- const clampedPos = Math.max(
90
- 0,
91
- Math.min(newPos, rightPosition.value - THUMB_SIZE)
92
- );
94
+ // This is the MINIMUM value thumb
95
+ const clampedPos = isRTL
96
+ ? Math.min(
97
+ sliderWidth - THUMB_SIZE / 2,
98
+ Math.max(newPos, rightPosition.value + THUMB_SIZE)
99
+ )
100
+ : Math.max(
101
+ THUMB_SIZE / 2,
102
+ Math.min(newPos, rightPosition.value - THUMB_SIZE)
103
+ );
93
104
  leftPosition.value = clampedPos;
94
105
  runOnJS(setLeftLabel)(positionToValue(clampedPos).toLocaleString());
95
106
  } else {
96
- const clampedPos = Math.min(
97
- sliderWidth,
98
- Math.max(newPos, leftPosition.value + THUMB_SIZE)
99
- );
107
+ // This is the MAXIMUM value thumb
108
+ const clampedPos = isRTL
109
+ ? Math.max(
110
+ THUMB_SIZE / 2,
111
+ Math.min(newPos, leftPosition.value - THUMB_SIZE)
112
+ )
113
+ : Math.min(
114
+ sliderWidth - THUMB_SIZE / 2,
115
+ Math.max(newPos, leftPosition.value + THUMB_SIZE)
116
+ );
100
117
  rightPosition.value = clampedPos;
101
118
  runOnJS(setRightLabel)(positionToValue(clampedPos).toLocaleString());
102
119
  }
@@ -109,22 +126,29 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
109
126
  activeThumb.value = null;
110
127
  });
111
128
 
129
+ // These styles center the thumb on its position value
112
130
  const animatedLeftThumbStyle = useAnimatedStyle(() => ({
113
- transform: [{ translateX: leftPosition.value }],
131
+ transform: [{ translateX: leftPosition.value - THUMB_SIZE / 2 }],
114
132
  }));
115
133
 
116
134
  const animatedRightThumbStyle = useAnimatedStyle(() => ({
117
- transform: [{ translateX: rightPosition.value - THUMB_SIZE }],
135
+ transform: [{ translateX: rightPosition.value - THUMB_SIZE / 2 }],
118
136
  }));
119
137
 
120
- const animatedActiveRailStyle = useAnimatedStyle(() => ({
121
- left: leftPosition.value,
122
- right: sliderWidth - rightPosition.value,
123
- }));
138
+ // This style correctly draws the active rail between the two thumb centers in both LTR and RTL.
139
+ const animatedActiveRailStyle = useAnimatedStyle(() => {
140
+ const start = isRTL ? rightPosition.value : leftPosition.value;
141
+ const end = isRTL ? leftPosition.value : rightPosition.value;
142
+ return {
143
+ left: start,
144
+ width: end - start,
145
+ };
146
+ });
124
147
 
125
148
  return (
126
149
  <View style={[styles.container, { width: sliderWidth }]}>
127
150
  <SliderLabels
151
+ // isRtl={isRTL} // Pass isRTL to SliderLabels so it can adjust accordingly
128
152
  leftValue={leftLabel}
129
153
  rightValue={rightLabel}
130
154
  leftPosition={leftPosition}
@@ -160,7 +184,7 @@ const getStyles = (theme: ThemeType) =>
160
184
  container: {
161
185
  height: LABEL_HEIGHT + THUMB_SIZE,
162
186
  justifyContent: "center",
163
- marginTop: LABEL_HEIGHT, // Add margin to prevent label cutoff
187
+ marginTop: LABEL_HEIGHT,
164
188
  },
165
189
  railContainer: {
166
190
  justifyContent: "center",
@@ -17,7 +17,7 @@ interface SliderLabelsProps {
17
17
  rightPosition: SharedValue<number>;
18
18
  sliderWidth: number;
19
19
  thumbSize: number;
20
- theme?: ThemeType
20
+ theme?: ThemeType;
21
21
  }
22
22
 
23
23
  interface CenteredLabelProps {
@@ -25,8 +25,7 @@ interface CenteredLabelProps {
25
25
  position: SharedValue<number>;
26
26
  sliderWidth: number;
27
27
  thumbSize: number;
28
- theme?: ThemeType
29
-
28
+ theme?: ThemeType;
30
29
  }
31
30
 
32
31
  const CenteredLabel: React.FC<CenteredLabelProps> = ({
@@ -34,15 +33,15 @@ const CenteredLabel: React.FC<CenteredLabelProps> = ({
34
33
  position,
35
34
  sliderWidth,
36
35
  thumbSize,
37
- theme
36
+ theme,
38
37
  }) => {
39
38
  const labelWidth = useSharedValue(0);
40
- const {theme: defaultTheme} = useTheme();
39
+ const { theme: defaultTheme } = useTheme();
41
40
  const currTheme = theme || defaultTheme;
42
41
  const styles = getStyles(currTheme);
43
42
 
44
43
  const animatedLabelStyle = useAnimatedStyle(() => {
45
- const rawCenter = position.value + thumbSize / 2;
44
+ const rawCenter = position.value;
46
45
  const shifted = rawCenter - labelWidth.value / 2;
47
46
 
48
47
  const left = Math.min(Math.max(shifted, 0), sliderWidth - labelWidth.value);
@@ -59,9 +58,7 @@ const CenteredLabel: React.FC<CenteredLabelProps> = ({
59
58
  labelWidth.value = e.nativeEvent.layout.width;
60
59
  }}
61
60
  >
62
- <Text style={styles.labelText}>
63
- {value}
64
- </Text>
61
+ <Text style={styles.labelText}>{value}</Text>
65
62
  </Animated.View>
66
63
  );
67
64
  };
@@ -73,14 +70,11 @@ export const SliderLabels: React.FC<SliderLabelsProps> = ({
73
70
  rightPosition,
74
71
  sliderWidth,
75
72
  thumbSize,
76
- theme
73
+ theme,
77
74
  }) => {
78
- const {theme: defaultTheme} = useTheme();
75
+ const { theme: defaultTheme } = useTheme();
79
76
  const currTheme = theme || defaultTheme;
80
77
  const styles = getStyles(currTheme);
81
- const rightThumbLeftPosition = useDerivedValue(() => {
82
- return rightPosition.value - thumbSize;
83
- });
84
78
  return (
85
79
  <View style={styles.wrapper} pointerEvents="none">
86
80
  <CenteredLabel
@@ -92,7 +86,7 @@ export const SliderLabels: React.FC<SliderLabelsProps> = ({
92
86
  <CenteredLabel
93
87
  value={rightValue}
94
88
  thumbSize={thumbSize}
95
- position={rightThumbLeftPosition}
89
+ position={rightPosition}
96
90
  sliderWidth={sliderWidth}
97
91
  />
98
92
  </View>
package/src/index.ts CHANGED
@@ -4,9 +4,6 @@
4
4
  // import App from "./app";
5
5
  // import { I18nManager } from "react-native";
6
6
 
7
- // I18nManager.allowRTL(true);
8
- // I18nManager.forceRTL(true);
9
-
10
7
  // registerRootComponent(App);
11
8
 
12
9
  export * from "./theme";