related-ui-components 4.2.0 → 4.2.2

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
@@ -5,7 +5,6 @@ import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
5
5
  // Adjust path as needed
6
6
  import { GestureHandlerRootView } from "react-native-gesture-handler";
7
7
  import { lightTheme, RelatedProvider, useTheme } from "./theme/index.js";
8
- import CircularProgressBar from "./components/ProgressBar/CircularProgressBar.js";
9
8
  import PhoneInput from "./components/Input/PhoneInput.js";
10
9
  import { BottomSheetStackProvider } from "./contexts/index.js";
11
10
  import { SafeAreaProvider } from "react-native-safe-area-context";
@@ -41,24 +40,16 @@ const App = () => {
41
40
  children: /*#__PURE__*/_jsxs(BottomSheetStackProvider, {
42
41
  children: [/*#__PURE__*/_jsx(StatusBar, {
43
42
  barStyle: "light-content"
44
- }), /*#__PURE__*/_jsxs(SafeAreaView, {
43
+ }), /*#__PURE__*/_jsx(SafeAreaView, {
45
44
  style: styles.appContainer,
46
- children: [/*#__PURE__*/_jsx(CircularProgressBar, {
47
- variant: "steps",
48
- totalSteps: 4,
49
- currentStep: 1,
50
- size: 43,
51
- fontSize: 14,
52
- strokeWidth: 2,
53
- progressColor: "blue"
54
- }), /*#__PURE__*/_jsx(PhoneInput, {
45
+ children: /*#__PURE__*/_jsx(PhoneInput, {
55
46
  value: "",
56
47
  placeholder: "123 456 7890",
57
48
  onChangeText: () => {},
58
49
  inputContainerStyle: {
59
50
  height: 55
60
51
  }
61
- })]
52
+ })
62
53
  })]
63
54
  })
64
55
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","lightTheme","RelatedProvider","useTheme","CircularProgressBar","PhoneInput","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","Array","from","length","_","i","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","variant","totalSteps","currentStep","size","fontSize","strokeWidth","progressColor","value","placeholder","onChangeText","inputContainerStyle","height","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","lightTheme","RelatedProvider","useTheme","PhoneInput","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","Array","from","length","_","i","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","value","placeholder","onChangeText","inputContainerStyle","height","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAeC,QAAQ,QAAQ,OAAO;AAClD,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAwC,cAAc;AAChB;AAClF,SAASC,sBAAsB,QAAQ,8BAA8B;AAarE,SAAoBC,UAAU,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,kBAAS;AAE1E,OAAOC,UAAU,MAAM,kCAA+B;AACtD,SAASC,wBAAwB,QAAQ,qBAAY;AACrD,SAASC,gBAAgB,QAAQ,gCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAMlE,MAAMC,UAAU,GAAGC,KAAK,CAACC,IAAI,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAC,EAAE,CAACC,CAAC,EAAEC,CAAC,MAAM;EACvDC,EAAE,EAAE,SAASD,CAAC,GAAG,CAAC,EAAE;EACpB;EACAE,KAAK,EAAE,2CAA2C;EAClDC,KAAK,EAAE,UAAUH,CAAC,GAAG,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,MAAMI,GAAG,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGpB,QAAQ,CAAC,CAAC;EAE5B,MAAM,CAACqB,aAAa,EAAEC,gBAAgB,CAAC,GAAG7B,QAAQ,CAChD8B,SACF,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGhC,QAAQ,CAAqB8B,SAAS,CAAC;EAE3E,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAGlC,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAMmC,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,oBACExB,IAAA,CAAAI,SAAA;IAAAwB,QAAA,eACE5B,IAAA,CAACF,gBAAgB;MAAA8B,QAAA,eACf5B,IAAA,CAACR,sBAAsB;QAACqC,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAF,QAAA,eACzC5B,IAAA,CAACN,eAAe;UAACqB,KAAK,EAAEtB,UAAW;UAAAmC,QAAA,eACjC1B,KAAA,CAACL,wBAAwB;YAAA+B,QAAA,gBACvB5B,IAAA,CAACT,SAAS;cAACwC,QAAQ,EAAC;YAAe,CAAE,CAAC,eACtC/B,IAAA,CAACX,YAAY;cAACwC,KAAK,EAAEG,MAAM,CAACC,YAAa;cAAAL,QAAA,eAiEvC5B,IAAA,CAACJ,UAAU;gBACTsC,KAAK,EAAC,EAAE;gBACRC,WAAW,EAAC,cAAc;gBAC1BC,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAE;gBACvBC,mBAAmB,EAAE;kBAAEC,MAAM,EAAE;gBAAG;cAAE,CACzB;YAAC,CA6CF,CAAC;UAAA,CACS;QAAC,CACZ;MAAC,CACI;IAAC,CACT;EAAC,CACnB,CAAC;AAEP,CAAC;AAED,MAAMN,MAAM,GAAG1C,UAAU,CAACiD,MAAM,CAAC;EAC/BN,YAAY,EAAE;IACZH,IAAI,EAAE,CAAC;IACPU,eAAe,EAAE,MAAM;IACvBC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,UAAU,EAAC;EACb;AACF,CAAC,CAAC;AAEF,eAAe5B,GAAG","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import { Canvas, DashPathEffect, Path, Shadow, Skia, SweepGradient, vec } from "@shopify/react-native-skia";
3
4
  import React, { useEffect } from "react";
4
5
  import { StyleSheet, TextInput, View } from "react-native";
5
- import { Canvas, DashPathEffect, Path, Shadow, Skia } from "@shopify/react-native-skia";
6
6
  import Animated, { Easing, useAnimatedProps, useDerivedValue, useSharedValue, withTiming } from "react-native-reanimated";
7
7
  import { useTheme } from "../../theme/index.js";
8
8
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -11,7 +11,7 @@ const CircularProgressBar = ({
11
11
  size = 120,
12
12
  strokeWidth = 8,
13
13
  backgroundColor,
14
- progressColor,
14
+ progressColors,
15
15
  lineCap = "round",
16
16
  customText,
17
17
  textColor,
@@ -31,11 +31,12 @@ const CircularProgressBar = ({
31
31
  theme
32
32
  } = useTheme();
33
33
  const animatedValue = useSharedValue(0);
34
- const finalProgressColor = progressColor || theme.primary;
34
+ const finalColors = progressColors || [theme.primary, theme.primaryVariant, theme.primary];
35
35
  const finalBackgroundColor = backgroundColor || theme.disabled;
36
36
  const finalTextColor = textColor || theme.onSurface;
37
37
  const radius = (size - strokeWidth) / 2;
38
38
  const circumference = 2 * Math.PI * radius;
39
+ const center = vec(size / 2, size / 2);
39
40
  const path = Skia.Path.Make();
40
41
  path.addCircle(size / 2, size / 2, radius);
41
42
  const progressStrokeWidth = Math.max(0, strokeWidth - progressPadding * 2);
@@ -87,7 +88,7 @@ const CircularProgressBar = ({
87
88
  style: "stroke",
88
89
  strokeWidth: strokeWidth,
89
90
  strokeCap: lineCap,
90
- color: finalProgressColor,
91
+ color: finalColors[0],
91
92
  start: 0,
92
93
  end: animatedValue,
93
94
  children: [/*#__PURE__*/_jsx(DashPathEffect, {
@@ -109,21 +110,26 @@ const CircularProgressBar = ({
109
110
  strokeWidth: strokeWidth,
110
111
  strokeCap: lineCap,
111
112
  color: finalBackgroundColor
112
- }), /*#__PURE__*/_jsx(Path, {
113
+ }), /*#__PURE__*/_jsxs(Path, {
113
114
  path: path,
114
115
  style: "stroke",
115
116
  strokeWidth: progressStrokeWidth,
116
- strokeCap: lineCap,
117
- color: finalProgressColor,
117
+ strokeCap: lineCap
118
+ // color={finalProgressColor}
119
+ ,
118
120
  start: 0,
119
121
  end: animatedValue,
120
- children: innerShadowColor && /*#__PURE__*/_jsx(Shadow, {
122
+ children: [/*#__PURE__*/_jsx(SweepGradient, {
123
+ c: center,
124
+ colors: finalColors,
125
+ origin: center
126
+ }), innerShadowColor && /*#__PURE__*/_jsx(Shadow, {
121
127
  dx: 0,
122
128
  dy: 0,
123
129
  blur: 4,
124
130
  color: innerShadowColor,
125
131
  inner: true
126
- })
132
+ })]
127
133
  })]
128
134
  });
129
135
  return /*#__PURE__*/_jsxs(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","StyleSheet","TextInput","View","Canvas","DashPathEffect","Path","Shadow","Skia","Animated","Easing","useAnimatedProps","useDerivedValue","useSharedValue","withTiming","useTheme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AnimatedTextInput","createAnimatedComponent","CircularProgressBar","size","strokeWidth","backgroundColor","progressColor","lineCap","customText","textColor","fontSize","style","innerShadowColor","duration","variant","progress","progressPadding","currentStep","totalSteps","stepGap","fontFamily","theme","animatedValue","finalProgressColor","primary","finalBackgroundColor","disabled","finalTextColor","onSurface","radius","circumference","Math","PI","path","Make","addCircle","progressStrokeWidth","max","targetValue","value","easing","out","cubic","textToDisplay","undefined","displayStep","round","animatedProps","text","getInitialText","renderSteps","totalGapDegrees","totalArcDegrees","stepArcLength","gapLength","dashPattern","children","strokeCap","color","intervals","start","end","dx","dy","blur","inner","renderProgress","width","height","justifyContent","alignItems","absoluteFill","editable","defaultValue","textAlign","padding"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/ProgressBar/CircularProgressBar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Canvas","DashPathEffect","Path","Shadow","Skia","SweepGradient","vec","React","useEffect","StyleSheet","TextInput","View","Animated","Easing","useAnimatedProps","useDerivedValue","useSharedValue","withTiming","useTheme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AnimatedTextInput","createAnimatedComponent","CircularProgressBar","size","strokeWidth","backgroundColor","progressColors","lineCap","customText","textColor","fontSize","style","innerShadowColor","duration","variant","progress","progressPadding","currentStep","totalSteps","stepGap","fontFamily","theme","animatedValue","finalColors","primary","primaryVariant","finalBackgroundColor","disabled","finalTextColor","onSurface","radius","circumference","Math","PI","center","path","Make","addCircle","progressStrokeWidth","max","targetValue","value","easing","out","cubic","textToDisplay","undefined","displayStep","round","animatedProps","text","getInitialText","renderSteps","totalGapDegrees","totalArcDegrees","stepArcLength","gapLength","dashPattern","children","strokeCap","color","intervals","start","end","dx","dy","blur","inner","renderProgress","c","colors","origin","width","height","justifyContent","alignItems","absoluteFill","editable","defaultValue","textAlign","padding"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/ProgressBar/CircularProgressBar.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useState } from "react";
3
+ import React, { useCallback, useMemo, useState } from "react";
4
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";
@@ -10,6 +10,49 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const THUMB_SIZE = 28;
11
11
  const RAIL_HEIGHT = 6;
12
12
  const LABEL_HEIGHT = 26;
13
+ /**
14
+ * Creates percentile breakpoints from data
15
+ * Returns sorted unique values that represent the distribution
16
+ */
17
+ function createPercentileBreakpoints(data) {
18
+ const sorted = [...new Set(data)].sort((a, b) => a - b);
19
+
20
+ // If small dataset, use all unique values
21
+ if (sorted.length <= 100) {
22
+ return sorted;
23
+ }
24
+
25
+ // For larger datasets, sample at percentile intervals
26
+ const breakpoints = [];
27
+ const numBreakpoints = 100;
28
+ for (let i = 0; i <= numBreakpoints; i++) {
29
+ const index = Math.floor(i / numBreakpoints * (sorted.length - 1));
30
+ const value = sorted[index];
31
+ if (breakpoints[breakpoints.length - 1] !== value) {
32
+ breakpoints.push(value);
33
+ }
34
+ }
35
+ return breakpoints;
36
+ }
37
+
38
+ /**
39
+ * Binary search to find position in breakpoints
40
+ */
41
+ function findBreakpointIndex(breakpoints, value) {
42
+ "worklet";
43
+
44
+ let left = 0;
45
+ let right = breakpoints.length - 1;
46
+ while (left < right) {
47
+ const mid = Math.floor((left + right) / 2);
48
+ if (breakpoints[mid] < value) {
49
+ left = mid + 1;
50
+ } else {
51
+ right = mid;
52
+ }
53
+ }
54
+ return left;
55
+ }
13
56
  const RangeSlider = ({
14
57
  min,
15
58
  max,
@@ -18,7 +61,9 @@ const RangeSlider = ({
18
61
  initialMinValue,
19
62
  initialMaxValue,
20
63
  onValueChange,
21
- theme
64
+ theme,
65
+ scale = "linear",
66
+ dataPoints
22
67
  }) => {
23
68
  const {
24
69
  theme: defaultTheme
@@ -26,25 +71,72 @@ const RangeSlider = ({
26
71
  const currTheme = theme || defaultTheme;
27
72
  const styles = getStyles(currTheme);
28
73
  const isRTL = I18nManager.isRTL;
29
-
30
- // State for label text values, passed down to the SliderLabels component
31
74
  const [leftLabel, setLeftLabel] = useState(initialMinValue.toLocaleString());
32
75
  const [rightLabel, setRightLabel] = useState(initialMaxValue.toLocaleString());
76
+
77
+ // Pre-compute breakpoints for percentile scale
78
+ const breakpoints = useMemo(() => {
79
+ if (scale === "percentile" && dataPoints?.length) {
80
+ return createPercentileBreakpoints(dataPoints);
81
+ }
82
+ return [];
83
+ }, [scale, dataPoints]);
84
+ const safeMin = scale === "logarithmic" ? Math.max(min, 0.001) : min;
33
85
  const valueToPosition = useCallback(value => {
34
86
  "worklet";
35
87
 
36
- // 3. Invert position calculation for RTL
37
- const percentage = (value - min) / (max - min);
88
+ let percentage;
89
+ if (scale === "percentile" && breakpoints.length > 1) {
90
+ // Find where this value falls in the breakpoints
91
+ const index = findBreakpointIndex(breakpoints, value);
92
+ if (index === 0) {
93
+ percentage = 0;
94
+ } else if (index >= breakpoints.length - 1) {
95
+ percentage = 1;
96
+ } else {
97
+ // Interpolate between breakpoints
98
+ const lowerVal = breakpoints[index - 1];
99
+ const upperVal = breakpoints[index];
100
+ const lowerPct = (index - 1) / (breakpoints.length - 1);
101
+ const upperPct = index / (breakpoints.length - 1);
102
+ if (upperVal === lowerVal) {
103
+ percentage = lowerPct;
104
+ } else {
105
+ const ratio = (value - lowerVal) / (upperVal - lowerVal);
106
+ percentage = lowerPct + ratio * (upperPct - lowerPct);
107
+ }
108
+ }
109
+ } else if (scale === "logarithmic") {
110
+ const logMin = Math.log(safeMin);
111
+ const logMax = Math.log(max);
112
+ const logValue = Math.log(Math.max(value, safeMin));
113
+ percentage = (logValue - logMin) / (logMax - logMin);
114
+ } else {
115
+ percentage = (value - min) / (max - min);
116
+ }
38
117
  return isRTL ? (1 - percentage) * sliderWidth : percentage * sliderWidth;
39
- }, [min, max, sliderWidth, isRTL]);
118
+ }, [min, max, safeMin, sliderWidth, isRTL, scale, breakpoints]);
40
119
  const positionToValue = useCallback(position => {
41
120
  "worklet";
42
121
 
43
- // 4. Invert value calculation for RTL
44
- const percentage = position / sliderWidth;
45
- const rawValue = isRTL ? (1 - percentage) * (max - min) + min : percentage * (max - min) + min;
122
+ const percentage = isRTL ? 1 - position / sliderWidth : position / sliderWidth;
123
+ let rawValue;
124
+ if (scale === "percentile" && breakpoints.length > 1) {
125
+ // Map percentage to breakpoint index
126
+ const exactIndex = percentage * (breakpoints.length - 1);
127
+ const lowerIndex = Math.floor(exactIndex);
128
+ const upperIndex = Math.min(lowerIndex + 1, breakpoints.length - 1);
129
+ const ratio = exactIndex - lowerIndex;
130
+ rawValue = breakpoints[lowerIndex] + ratio * (breakpoints[upperIndex] - breakpoints[lowerIndex]);
131
+ } else if (scale === "logarithmic") {
132
+ const logMin = Math.log(safeMin);
133
+ const logMax = Math.log(max);
134
+ rawValue = Math.exp(logMin + percentage * (logMax - logMin));
135
+ } else {
136
+ rawValue = percentage * (max - min) + min;
137
+ }
46
138
  return Math.round(rawValue / step) * step;
47
- }, [min, max, step, sliderWidth, isRTL]);
139
+ }, [min, max, safeMin, step, sliderWidth, isRTL, scale, breakpoints]);
48
140
  const leftPosition = useSharedValue(valueToPosition(initialMinValue));
49
141
  const rightPosition = useSharedValue(valueToPosition(initialMaxValue));
50
142
  const context = useSharedValue({
@@ -68,8 +160,6 @@ const RangeSlider = ({
68
160
  }).onUpdate(e => {
69
161
  if (activeThumb.value === null) return;
70
162
  const newPos = context.value.x + e.translationX;
71
-
72
- // 5. Adjust clamping logic for RTL
73
163
  if (activeThumb.value === "left") {
74
164
  const lowerBound = isRTL ? rightPosition.value + THUMB_SIZE : 0;
75
165
  const upperBound = isRTL ? sliderWidth : rightPosition.value - THUMB_SIZE;
@@ -104,7 +194,6 @@ const RangeSlider = ({
104
194
  }]
105
195
  }));
106
196
  const animatedActiveRailStyle = useAnimatedStyle(() => {
107
- // 6. Use Math.min and Math.max to correctly draw the active rail in both LTR and RTL
108
197
  const start = Math.min(leftPosition.value, rightPosition.value);
109
198
  const end = Math.max(leftPosition.value, rightPosition.value);
110
199
  return {
@@ -1 +1 @@
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","percentage","positionToValue","position","rawValue","Math","round","leftPosition","rightPosition","context","x","activeThumb","panGesture","Pan","onBegin","e","distToLeft","abs","distToRight","onUpdate","newPos","translationX","lowerBound","upperBound","clampedPos","onEnd","finalLeftValue","finalRightValue","animatedLeftThumbStyle","transform","translateX","animatedRightThumbStyle","animatedActiveRailStyle","start","end","left","right","style","container","width","children","leftValue","rightValue","thumbSize","gesture","railContainer","rail","activeRail","thumbContainer","thumb","create","height","justifyContent","marginTop","direction","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","useMemo","useState","I18nManager","StyleSheet","View","Gesture","GestureDetector","Animated","runOnJS","useAnimatedStyle","useSharedValue","SliderLabels","useTheme","jsx","_jsx","jsxs","_jsxs","THUMB_SIZE","RAIL_HEIGHT","LABEL_HEIGHT","createPercentileBreakpoints","data","sorted","Set","sort","a","b","length","breakpoints","numBreakpoints","i","index","Math","floor","value","push","findBreakpointIndex","left","right","mid","RangeSlider","min","max","step","sliderWidth","initialMinValue","initialMaxValue","onValueChange","theme","scale","dataPoints","defaultTheme","currTheme","styles","getStyles","isRTL","leftLabel","setLeftLabel","toLocaleString","rightLabel","setRightLabel","safeMin","valueToPosition","percentage","lowerVal","upperVal","lowerPct","upperPct","ratio","logMin","log","logMax","logValue","positionToValue","position","rawValue","exactIndex","lowerIndex","upperIndex","exp","round","leftPosition","rightPosition","context","x","activeThumb","panGesture","Pan","onBegin","e","distToLeft","abs","distToRight","onUpdate","newPos","translationX","lowerBound","upperBound","clampedPos","onEnd","finalLeftValue","finalRightValue","animatedLeftThumbStyle","transform","translateX","animatedRightThumbStyle","animatedActiveRailStyle","start","end","style","container","width","children","leftValue","rightValue","thumbSize","gesture","railContainer","rail","activeRail","thumbContainer","thumb","create","height","justifyContent","marginTop","direction","borderRadius","backgroundColor","surface","primary","alignItems","background","borderColor","borderWidth"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/RangeSlider/RangeSlider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAC7D,SAASC,WAAW,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC5D,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AACvE,OAAOC,QAAQ,IACbC,OAAO,EACPC,gBAAgB,EAChBC,cAAc,QACT,yBAAyB;AAChC,SAASC,YAAY,QAAQ,kBAAe;AAC5C,SAAoBC,QAAQ,QAAQ,sBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElD,MAAMC,UAAU,GAAG,EAAE;AACrB,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,YAAY,GAAG,EAAE;AAqBvB;AACA;AACA;AACA;AACA,SAASC,2BAA2BA,CAACC,IAAc,EAAY;EAC7D,MAAMC,MAAM,GAAG,CAAC,GAAG,IAAIC,GAAG,CAACF,IAAI,CAAC,CAAC,CAACG,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;;EAEvD;EACA,IAAIJ,MAAM,CAACK,MAAM,IAAI,GAAG,EAAE;IACxB,OAAOL,MAAM;EACf;;EAEA;EACA,MAAMM,WAAqB,GAAG,EAAE;EAChC,MAAMC,cAAc,GAAG,GAAG;EAE1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAID,cAAc,EAAEC,CAAC,EAAE,EAAE;IACxC,MAAMC,KAAK,GAAGC,IAAI,CAACC,KAAK,CAAEH,CAAC,GAAGD,cAAc,IAAKP,MAAM,CAACK,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,MAAMO,KAAK,GAAGZ,MAAM,CAACS,KAAK,CAAC;IAC3B,IAAIH,WAAW,CAACA,WAAW,CAACD,MAAM,GAAG,CAAC,CAAC,KAAKO,KAAK,EAAE;MACjDN,WAAW,CAACO,IAAI,CAACD,KAAK,CAAC;IACzB;EACF;EAEA,OAAON,WAAW;AACpB;;AAEA;AACA;AACA;AACA,SAASQ,mBAAmBA,CAACR,WAAqB,EAAEM,KAAa,EAAU;EACzE,SAAS;;EACT,IAAIG,IAAI,GAAG,CAAC;EACZ,IAAIC,KAAK,GAAGV,WAAW,CAACD,MAAM,GAAG,CAAC;EAElC,OAAOU,IAAI,GAAGC,KAAK,EAAE;IACnB,MAAMC,GAAG,GAAGP,IAAI,CAACC,KAAK,CAAC,CAACI,IAAI,GAAGC,KAAK,IAAI,CAAC,CAAC;IAC1C,IAAIV,WAAW,CAACW,GAAG,CAAC,GAAGL,KAAK,EAAE;MAC5BG,IAAI,GAAGE,GAAG,GAAG,CAAC;IAChB,CAAC,MAAM;MACLD,KAAK,GAAGC,GAAG;IACb;EACF;EAEA,OAAOF,IAAI;AACb;AAEA,MAAMG,WAAuC,GAAGA,CAAC;EAC/CC,GAAG;EACHC,GAAG;EACHC,IAAI,GAAG,CAAC;EACRC,WAAW;EACXC,eAAe;EACfC,eAAe;EACfC,aAAa;EACbC,KAAK;EACLC,KAAK,GAAG,QAAQ;EAChBC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEF,KAAK,EAAEG;EAAa,CAAC,GAAGvC,QAAQ,CAAC,CAAC;EAC1C,MAAMwC,SAAS,GAAGJ,KAAK,IAAIG,YAAY;EACvC,MAAME,MAAM,GAAGC,SAAS,CAACF,SAAS,CAAC;EACnC,MAAMG,KAAK,GAAGrD,WAAW,CAACqD,KAAK;EAE/B,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGxD,QAAQ,CAAC4C,eAAe,CAACa,cAAc,CAAC,CAAC,CAAC;EAC5E,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG3D,QAAQ,CAC1C6C,eAAe,CAACY,cAAc,CAAC,CACjC,CAAC;;EAED;EACA,MAAM9B,WAAW,GAAG5B,OAAO,CAAC,MAAM;IAChC,IAAIiD,KAAK,KAAK,YAAY,IAAIC,UAAU,EAAEvB,MAAM,EAAE;MAChD,OAAOP,2BAA2B,CAAC8B,UAAU,CAAC;IAChD;IACA,OAAO,EAAE;EACX,CAAC,EAAE,CAACD,KAAK,EAAEC,UAAU,CAAC,CAAC;EAEvB,MAAMW,OAAO,GAAGZ,KAAK,KAAK,aAAa,GAAGjB,IAAI,CAACU,GAAG,CAACD,GAAG,EAAE,KAAK,CAAC,GAAGA,GAAG;EAEpE,MAAMqB,eAAe,GAAG/D,WAAW,CAChCmC,KAAa,IAAK;IACjB,SAAS;;IACT,IAAI6B,UAAkB;IAEtB,IAAId,KAAK,KAAK,YAAY,IAAIrB,WAAW,CAACD,MAAM,GAAG,CAAC,EAAE;MACpD;MACA,MAAMI,KAAK,GAAGK,mBAAmB,CAACR,WAAW,EAAEM,KAAK,CAAC;MAErD,IAAIH,KAAK,KAAK,CAAC,EAAE;QACfgC,UAAU,GAAG,CAAC;MAChB,CAAC,MAAM,IAAIhC,KAAK,IAAIH,WAAW,CAACD,MAAM,GAAG,CAAC,EAAE;QAC1CoC,UAAU,GAAG,CAAC;MAChB,CAAC,MAAM;QACL;QACA,MAAMC,QAAQ,GAAGpC,WAAW,CAACG,KAAK,GAAG,CAAC,CAAC;QACvC,MAAMkC,QAAQ,GAAGrC,WAAW,CAACG,KAAK,CAAC;QACnC,MAAMmC,QAAQ,GAAG,CAACnC,KAAK,GAAG,CAAC,KAAKH,WAAW,CAACD,MAAM,GAAG,CAAC,CAAC;QACvD,MAAMwC,QAAQ,GAAGpC,KAAK,IAAIH,WAAW,CAACD,MAAM,GAAG,CAAC,CAAC;QAEjD,IAAIsC,QAAQ,KAAKD,QAAQ,EAAE;UACzBD,UAAU,GAAGG,QAAQ;QACvB,CAAC,MAAM;UACL,MAAME,KAAK,GAAG,CAAClC,KAAK,GAAG8B,QAAQ,KAAKC,QAAQ,GAAGD,QAAQ,CAAC;UACxDD,UAAU,GAAGG,QAAQ,GAAGE,KAAK,IAAID,QAAQ,GAAGD,QAAQ,CAAC;QACvD;MACF;IACF,CAAC,MAAM,IAAIjB,KAAK,KAAK,aAAa,EAAE;MAClC,MAAMoB,MAAM,GAAGrC,IAAI,CAACsC,GAAG,CAACT,OAAO,CAAC;MAChC,MAAMU,MAAM,GAAGvC,IAAI,CAACsC,GAAG,CAAC5B,GAAG,CAAC;MAC5B,MAAM8B,QAAQ,GAAGxC,IAAI,CAACsC,GAAG,CAACtC,IAAI,CAACU,GAAG,CAACR,KAAK,EAAE2B,OAAO,CAAC,CAAC;MACnDE,UAAU,GAAG,CAACS,QAAQ,GAAGH,MAAM,KAAKE,MAAM,GAAGF,MAAM,CAAC;IACtD,CAAC,MAAM;MACLN,UAAU,GAAG,CAAC7B,KAAK,GAAGO,GAAG,KAAKC,GAAG,GAAGD,GAAG,CAAC;IAC1C;IAEA,OAAOc,KAAK,GAAG,CAAC,CAAC,GAAGQ,UAAU,IAAInB,WAAW,GAAGmB,UAAU,GAAGnB,WAAW;EAC1E,CAAC,EACD,CAACH,GAAG,EAAEC,GAAG,EAAEmB,OAAO,EAAEjB,WAAW,EAAEW,KAAK,EAAEN,KAAK,EAAErB,WAAW,CAC5D,CAAC;EAED,MAAM6C,eAAe,GAAG1E,WAAW,CAChC2E,QAAgB,IAAK;IACpB,SAAS;;IACT,MAAMX,UAAU,GAAGR,KAAK,GACpB,CAAC,GAAGmB,QAAQ,GAAG9B,WAAW,GAC1B8B,QAAQ,GAAG9B,WAAW;IAE1B,IAAI+B,QAAgB;IAEpB,IAAI1B,KAAK,KAAK,YAAY,IAAIrB,WAAW,CAACD,MAAM,GAAG,CAAC,EAAE;MACpD;MACA,MAAMiD,UAAU,GAAGb,UAAU,IAAInC,WAAW,CAACD,MAAM,GAAG,CAAC,CAAC;MACxD,MAAMkD,UAAU,GAAG7C,IAAI,CAACC,KAAK,CAAC2C,UAAU,CAAC;MACzC,MAAME,UAAU,GAAG9C,IAAI,CAACS,GAAG,CAACoC,UAAU,GAAG,CAAC,EAAEjD,WAAW,CAACD,MAAM,GAAG,CAAC,CAAC;MACnE,MAAMyC,KAAK,GAAGQ,UAAU,GAAGC,UAAU;MAErCF,QAAQ,GACN/C,WAAW,CAACiD,UAAU,CAAC,GACvBT,KAAK,IAAIxC,WAAW,CAACkD,UAAU,CAAC,GAAGlD,WAAW,CAACiD,UAAU,CAAC,CAAC;IAC/D,CAAC,MAAM,IAAI5B,KAAK,KAAK,aAAa,EAAE;MAClC,MAAMoB,MAAM,GAAGrC,IAAI,CAACsC,GAAG,CAACT,OAAO,CAAC;MAChC,MAAMU,MAAM,GAAGvC,IAAI,CAACsC,GAAG,CAAC5B,GAAG,CAAC;MAC5BiC,QAAQ,GAAG3C,IAAI,CAAC+C,GAAG,CAACV,MAAM,GAAGN,UAAU,IAAIQ,MAAM,GAAGF,MAAM,CAAC,CAAC;IAC9D,CAAC,MAAM;MACLM,QAAQ,GAAGZ,UAAU,IAAIrB,GAAG,GAAGD,GAAG,CAAC,GAAGA,GAAG;IAC3C;IAEA,OAAOT,IAAI,CAACgD,KAAK,CAACL,QAAQ,GAAGhC,IAAI,CAAC,GAAGA,IAAI;EAC3C,CAAC,EACD,CAACF,GAAG,EAAEC,GAAG,EAAEmB,OAAO,EAAElB,IAAI,EAAEC,WAAW,EAAEW,KAAK,EAAEN,KAAK,EAAErB,WAAW,CAClE,CAAC;EAED,MAAMqD,YAAY,GAAGvE,cAAc,CAACoD,eAAe,CAACjB,eAAe,CAAC,CAAC;EACrE,MAAMqC,aAAa,GAAGxE,cAAc,CAACoD,eAAe,CAAChB,eAAe,CAAC,CAAC;EACtE,MAAMqC,OAAO,GAAGzE,cAAc,CAAC;IAAE0E,CAAC,EAAE;EAAE,CAAC,CAAC;EACxC,MAAMC,WAAW,GAAG3E,cAAc,CAA0B,IAAI,CAAC;EAEjE,MAAM4E,UAAU,GAAGjF,OAAO,CAACkF,GAAG,CAAC,CAAC,CAC7BC,OAAO,CAAEC,CAAC,IAAK;IACd,MAAMC,UAAU,GAAG1D,IAAI,CAAC2D,GAAG,CAACF,CAAC,CAACL,CAAC,GAAGH,YAAY,CAAC/C,KAAK,CAAC;IACrD,MAAM0D,WAAW,GAAG5D,IAAI,CAAC2D,GAAG,CAACF,CAAC,CAACL,CAAC,GAAGF,aAAa,CAAChD,KAAK,CAAC;IACvD,IAAIwD,UAAU,IAAIE,WAAW,EAAE;MAC7BP,WAAW,CAACnD,KAAK,GAAG,MAAM;MAC1BiD,OAAO,CAACjD,KAAK,GAAG;QAAEkD,CAAC,EAAEH,YAAY,CAAC/C;MAAM,CAAC;IAC3C,CAAC,MAAM;MACLmD,WAAW,CAACnD,KAAK,GAAG,OAAO;MAC3BiD,OAAO,CAACjD,KAAK,GAAG;QAAEkD,CAAC,EAAEF,aAAa,CAAChD;MAAM,CAAC;IAC5C;EACF,CAAC,CAAC,CACD2D,QAAQ,CAAEJ,CAAC,IAAK;IACf,IAAIJ,WAAW,CAACnD,KAAK,KAAK,IAAI,EAAE;IAChC,MAAM4D,MAAM,GAAGX,OAAO,CAACjD,KAAK,CAACkD,CAAC,GAAGK,CAAC,CAACM,YAAY;IAE/C,IAAIV,WAAW,CAACnD,KAAK,KAAK,MAAM,EAAE;MAChC,MAAM8D,UAAU,GAAGzC,KAAK,GAAG2B,aAAa,CAAChD,KAAK,GAAGjB,UAAU,GAAG,CAAC;MAC/D,MAAMgF,UAAU,GAAG1C,KAAK,GACpBX,WAAW,GACXsC,aAAa,CAAChD,KAAK,GAAGjB,UAAU;MACpC,MAAMiF,UAAU,GAAGlE,IAAI,CAACU,GAAG,CAACV,IAAI,CAACS,GAAG,CAACqD,MAAM,EAAEG,UAAU,CAAC,EAAED,UAAU,CAAC;MACrEf,YAAY,CAAC/C,KAAK,GAAGgE,UAAU;MAC/B1F,OAAO,CAACiD,YAAY,CAAC,CAACgB,eAAe,CAACyB,UAAU,CAAC,CAACxC,cAAc,CAAC,CAAC,CAAC;IACrE,CAAC,MAAM;MACL,MAAMsC,UAAU,GAAGzC,KAAK,GAAG,CAAC,GAAG0B,YAAY,CAAC/C,KAAK,GAAGjB,UAAU;MAC9D,MAAMgF,UAAU,GAAG1C,KAAK,GACpB0B,YAAY,CAAC/C,KAAK,GAAGjB,UAAU,GAC/B2B,WAAW;MACf,MAAMsD,UAAU,GAAGlE,IAAI,CAACU,GAAG,CAACV,IAAI,CAACS,GAAG,CAACqD,MAAM,EAAEG,UAAU,CAAC,EAAED,UAAU,CAAC;MACrEd,aAAa,CAAChD,KAAK,GAAGgE,UAAU;MAChC1F,OAAO,CAACoD,aAAa,CAAC,CAACa,eAAe,CAACyB,UAAU,CAAC,CAACxC,cAAc,CAAC,CAAC,CAAC;IACtE;EACF,CAAC,CAAC,CACDyC,KAAK,CAAC,MAAM;IACX,IAAId,WAAW,CAACnD,KAAK,KAAK,IAAI,EAAE;IAChC,MAAMkE,cAAc,GAAG3B,eAAe,CAACQ,YAAY,CAAC/C,KAAK,CAAC;IAC1D,MAAMmE,eAAe,GAAG5B,eAAe,CAACS,aAAa,CAAChD,KAAK,CAAC;IAC5D1B,OAAO,CAACuC,aAAa,CAAC,CAAC;MAAEN,GAAG,EAAE2D,cAAc;MAAE1D,GAAG,EAAE2D;IAAgB,CAAC,CAAC;IACrEhB,WAAW,CAACnD,KAAK,GAAG,IAAI;EAC1B,CAAC,CAAC;EAEJ,MAAMoE,sBAAsB,GAAG7F,gBAAgB,CAAC,OAAO;IACrD8F,SAAS,EAAE,CAAC;MAAEC,UAAU,EAAEvB,YAAY,CAAC/C,KAAK,IAAIqB,KAAK,GAAGtC,UAAU,GAAG,CAAC;IAAE,CAAC;EAC3E,CAAC,CAAC,CAAC;EAEH,MAAMwF,uBAAuB,GAAGhG,gBAAgB,CAAC,OAAO;IACtD8F,SAAS,EAAE,CAAC;MAAEC,UAAU,EAAEtB,aAAa,CAAChD,KAAK,IAAIqB,KAAK,GAAG,CAAC,GAAGtC,UAAU;IAAE,CAAC;EAC5E,CAAC,CAAC,CAAC;EAEH,MAAMyF,uBAAuB,GAAGjG,gBAAgB,CAAC,MAAM;IACrD,MAAMkG,KAAK,GAAG3E,IAAI,CAACS,GAAG,CAACwC,YAAY,CAAC/C,KAAK,EAAEgD,aAAa,CAAChD,KAAK,CAAC;IAC/D,MAAM0E,GAAG,GAAG5E,IAAI,CAACU,GAAG,CAACuC,YAAY,CAAC/C,KAAK,EAAEgD,aAAa,CAAChD,KAAK,CAAC;IAC7D,OAAO;MACLG,IAAI,EAAEsE,KAAK;MACXrE,KAAK,EAAEM,WAAW,GAAGgE;IACvB,CAAC;EACH,CAAC,CAAC;EAEF,oBACE5F,KAAA,CAACZ,IAAI;IAACyG,KAAK,EAAE,CAACxD,MAAM,CAACyD,SAAS,EAAE;MAAEC,KAAK,EAAEnE;IAAY,CAAC,CAAE;IAAAoE,QAAA,gBACtDlG,IAAA,CAACH,YAAY;MACXsG,SAAS,EAAEzD,SAAU;MACrB0D,UAAU,EAAEvD,UAAW;MACvBsB,YAAY,EAAEA,YAAa;MAC3BC,aAAa,EAAEA,aAAc;MAC7BtC,WAAW,EAAEA,WAAY;MACzBuE,SAAS,EAAElG;IAAW,CACvB,CAAC,eAEFH,IAAA,CAACR,eAAe;MAAC8G,OAAO,EAAE9B,UAAW;MAAA0B,QAAA,eACnChG,KAAA,CAACZ,IAAI;QAACyG,KAAK,EAAExD,MAAM,CAACgE,aAAc;QAAAL,QAAA,gBAChClG,IAAA,CAACV,IAAI;UAACyG,KAAK,EAAExD,MAAM,CAACiE;QAAK,CAAE,CAAC,eAC5BxG,IAAA,CAACP,QAAQ,CAACH,IAAI;UAACyG,KAAK,EAAE,CAACxD,MAAM,CAACkE,UAAU,EAAEb,uBAAuB;QAAE,CAAE,CAAC,eAEtE5F,IAAA,CAACP,QAAQ,CAACH,IAAI;UACZyG,KAAK,EAAE,CAACxD,MAAM,CAACmE,cAAc,EAAElB,sBAAsB,CAAE;UAAAU,QAAA,eAEvDlG,IAAA,CAACV,IAAI;YAACyG,KAAK,EAAExD,MAAM,CAACoE;UAAM,CAAE;QAAC,CAChB,CAAC,eAEhB3G,IAAA,CAACP,QAAQ,CAACH,IAAI;UACZyG,KAAK,EAAE,CAACxD,MAAM,CAACmE,cAAc,EAAEf,uBAAuB,CAAE;UAAAO,QAAA,eAExDlG,IAAA,CAACV,IAAI;YAACyG,KAAK,EAAExD,MAAM,CAACoE;UAAM,CAAE;QAAC,CAChB,CAAC;MAAA,CACZ;IAAC,CACQ,CAAC;EAAA,CACd,CAAC;AAEX,CAAC;AAED,MAAMnE,SAAS,GAAIN,KAAgB,IACjC7C,UAAU,CAACuH,MAAM,CAAC;EAChBZ,SAAS,EAAE;IACTa,MAAM,EAAExG,YAAY,GAAGF,UAAU;IACjC2G,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE1G,YAAY;IACvB2G,SAAS,EAAE;EACb,CAAC;EACDT,aAAa,EAAE;IACbO,cAAc,EAAE,QAAQ;IACxBD,MAAM,EAAE1G;EACV,CAAC;EACDqG,IAAI,EAAE;IACJK,MAAM,EAAEzG,WAAW;IACnB6G,YAAY,EAAE7G,WAAW,GAAG,CAAC;IAC7B8G,eAAe,EAAEhF,KAAK,CAACiF;EACzB,CAAC;EACDV,UAAU,EAAE;IACVI,MAAM,EAAEzG,WAAW;IACnB8G,eAAe,EAAEhF,KAAK,CAACkF,OAAO;IAC9BxD,QAAQ,EAAE;EACZ,CAAC;EACD8C,cAAc,EAAE;IACd9C,QAAQ,EAAE,UAAU;IACpBqC,KAAK,EAAE9F,UAAU;IACjB0G,MAAM,EAAE1G,UAAU;IAClB2G,cAAc,EAAE,QAAQ;IACxBO,UAAU,EAAE;EACd,CAAC;EACDV,KAAK,EAAE;IACLV,KAAK,EAAE9F,UAAU;IACjB0G,MAAM,EAAE1G,UAAU;IAClB8G,YAAY,EAAE9G,UAAU,GAAG,CAAC;IAC5B+G,eAAe,EAAEhF,KAAK,CAACoF,UAAU;IACjCC,WAAW,EAAErF,KAAK,CAACkF,OAAO;IAC1BI,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEJ,eAAe9F,WAAW","ignoreList":[]}
@@ -4,7 +4,7 @@ interface CircularProgressBarProps {
4
4
  size?: number;
5
5
  strokeWidth?: number;
6
6
  backgroundColor?: string;
7
- progressColor?: string;
7
+ progressColors?: string[];
8
8
  lineCap?: "butt" | "round" | "square";
9
9
  customText?: string;
10
10
  textColor?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"CircularProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProgressBar/CircularProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAA+B,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBtE,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAgK3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"CircularProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProgressBar/CircularProgressBar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAA+B,SAAS,EAAE,MAAM,cAAc,CAAC;AAYtE,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuK3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
2
  import { ThemeType } from "../../theme";
3
+ type ScaleType = "linear" | "logarithmic" | "percentile";
3
4
  interface RangeSliderProps {
4
5
  min: number;
5
6
  max: number;
@@ -12,6 +13,12 @@ interface RangeSliderProps {
12
13
  max: number;
13
14
  }) => void;
14
15
  theme?: ThemeType;
16
+ scale?: ScaleType;
17
+ /**
18
+ * For percentile scale: array of all values in your dataset
19
+ * The slider will distribute positions based on data density
20
+ */
21
+ dataPoints?: number[];
15
22
  }
16
23
  declare const RangeSlider: React.FC<RangeSliderProps>;
17
24
  export default RangeSlider;
@@ -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,CAqJ3C,CAAC;AAyCF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"RangeSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/RangeSlider/RangeSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAS9D,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAMlD,KAAK,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC;AAEzD,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;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAiDD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwM3C,CAAC;AAyCF,eAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
- "version": "4.2.0",
3
+ "version": "4.2.2",
4
4
  "main": "lib/module/index.js",
5
5
  "scripts": {
6
6
  "start": "expo start",
package/src/app.tsx CHANGED
@@ -108,7 +108,7 @@ const App = () => {
108
108
  {/* <DateRangePicker onDatesChange={()=>{}} labelContainerStyle={{backgroundColor:"red"}}></DateRangePicker> */}
109
109
  {/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
110
110
  {/* <CarouselCardStack data={DUMMY_DATA} /> */}
111
- <CircularProgressBar
111
+ {/* <CircularProgressBar
112
112
  variant="steps"
113
113
  totalSteps={4}
114
114
  currentStep={1}
@@ -116,7 +116,7 @@ const App = () => {
116
116
  fontSize={14}
117
117
  strokeWidth={2}
118
118
  progressColor="blue"
119
- ></CircularProgressBar>
119
+ ></CircularProgressBar> */}
120
120
  {/* <RangeSlider initialMinValue={0} initialMaxValue={100} min={0} max={500} sliderWidth={300} onValueChange={console.log}></RangeSlider> */}
121
121
  <PhoneInput
122
122
  value=""
@@ -1,12 +1,14 @@
1
- import React, { useEffect } from "react";
2
- import { StyleSheet, TextInput, View, ViewStyle } from "react-native";
3
1
  import {
4
2
  Canvas,
5
3
  DashPathEffect,
6
4
  Path,
7
5
  Shadow,
8
6
  Skia,
7
+ SweepGradient,
8
+ vec,
9
9
  } from "@shopify/react-native-skia";
10
+ import React, { useEffect } from "react";
11
+ import { StyleSheet, TextInput, View, ViewStyle } from "react-native";
10
12
  import Animated, {
11
13
  Easing,
12
14
  useAnimatedProps,
@@ -22,7 +24,7 @@ interface CircularProgressBarProps {
22
24
  size?: number;
23
25
  strokeWidth?: number;
24
26
  backgroundColor?: string;
25
- progressColor?: string;
27
+ progressColors?: string[];
26
28
  lineCap?: "butt" | "round" | "square";
27
29
  customText?: string;
28
30
  textColor?: string;
@@ -43,7 +45,7 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
43
45
  size = 120,
44
46
  strokeWidth = 8,
45
47
  backgroundColor,
46
- progressColor,
48
+ progressColors,
47
49
  lineCap = "round",
48
50
  customText,
49
51
  textColor,
@@ -62,12 +64,18 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
62
64
  const { theme } = useTheme();
63
65
  const animatedValue = useSharedValue(0);
64
66
 
65
- const finalProgressColor = progressColor || theme.primary;
67
+ const finalColors = progressColors || [
68
+ theme.primary,
69
+ theme.primaryVariant,
70
+ theme.primary,
71
+ ];
66
72
  const finalBackgroundColor = backgroundColor || theme.disabled;
67
73
  const finalTextColor = textColor || theme.onSurface;
68
74
 
69
75
  const radius = (size - strokeWidth) / 2;
70
76
  const circumference = 2 * Math.PI * radius;
77
+ const center = vec(size / 2, size / 2);
78
+
71
79
  const path = Skia.Path.Make();
72
80
  path.addCircle(size / 2, size / 2, radius);
73
81
 
@@ -129,7 +137,7 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
129
137
  style="stroke"
130
138
  strokeWidth={strokeWidth}
131
139
  strokeCap={lineCap}
132
- color={finalProgressColor}
140
+ color={finalColors[0]}
133
141
  start={0}
134
142
  end={animatedValue}
135
143
  >
@@ -156,10 +164,11 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
156
164
  style="stroke"
157
165
  strokeWidth={progressStrokeWidth}
158
166
  strokeCap={lineCap}
159
- color={finalProgressColor}
167
+ // color={finalProgressColor}
160
168
  start={0}
161
169
  end={animatedValue}
162
170
  >
171
+ <SweepGradient c={center} colors={finalColors} origin={center} />
163
172
  {innerShadowColor && (
164
173
  <Shadow dx={0} dy={0} blur={4} color={innerShadowColor} inner />
165
174
  )}
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useState } from "react";
1
+ import React, { useCallback, useMemo, useState } from "react";
2
2
  import { I18nManager, StyleSheet, View } from "react-native";
3
3
  import { Gesture, GestureDetector } from "react-native-gesture-handler";
4
4
  import Animated, {
@@ -13,6 +13,8 @@ const THUMB_SIZE = 28;
13
13
  const RAIL_HEIGHT = 6;
14
14
  const LABEL_HEIGHT = 26;
15
15
 
16
+ type ScaleType = "linear" | "logarithmic" | "percentile";
17
+
16
18
  interface RangeSliderProps {
17
19
  min: number;
18
20
  max: number;
@@ -21,8 +23,60 @@ interface RangeSliderProps {
21
23
  initialMinValue: number;
22
24
  initialMaxValue: number;
23
25
  onValueChange: (values: { min: number; max: number }) => void;
26
+ theme?: ThemeType;
27
+ scale?: ScaleType;
28
+ /**
29
+ * For percentile scale: array of all values in your dataset
30
+ * The slider will distribute positions based on data density
31
+ */
32
+ dataPoints?: number[];
33
+ }
34
+
35
+ /**
36
+ * Creates percentile breakpoints from data
37
+ * Returns sorted unique values that represent the distribution
38
+ */
39
+ function createPercentileBreakpoints(data: number[]): number[] {
40
+ const sorted = [...new Set(data)].sort((a, b) => a - b);
41
+
42
+ // If small dataset, use all unique values
43
+ if (sorted.length <= 100) {
44
+ return sorted;
45
+ }
46
+
47
+ // For larger datasets, sample at percentile intervals
48
+ const breakpoints: number[] = [];
49
+ const numBreakpoints = 100;
50
+
51
+ for (let i = 0; i <= numBreakpoints; i++) {
52
+ const index = Math.floor((i / numBreakpoints) * (sorted.length - 1));
53
+ const value = sorted[index];
54
+ if (breakpoints[breakpoints.length - 1] !== value) {
55
+ breakpoints.push(value);
56
+ }
57
+ }
58
+
59
+ return breakpoints;
60
+ }
61
+
62
+ /**
63
+ * Binary search to find position in breakpoints
64
+ */
65
+ function findBreakpointIndex(breakpoints: number[], value: number): number {
66
+ "worklet";
67
+ let left = 0;
68
+ let right = breakpoints.length - 1;
24
69
 
25
- theme?: ThemeType
70
+ while (left < right) {
71
+ const mid = Math.floor((left + right) / 2);
72
+ if (breakpoints[mid] < value) {
73
+ left = mid + 1;
74
+ } else {
75
+ right = mid;
76
+ }
77
+ }
78
+
79
+ return left;
26
80
  }
27
81
 
28
82
  const RangeSlider: React.FC<RangeSliderProps> = ({
@@ -33,45 +87,101 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
33
87
  initialMinValue,
34
88
  initialMaxValue,
35
89
  onValueChange,
36
- theme
90
+ theme,
91
+ scale = "linear",
92
+ dataPoints,
37
93
  }) => {
38
- const { theme: defaultTheme} = useTheme();
39
-
94
+ const { theme: defaultTheme } = useTheme();
40
95
  const currTheme = theme || defaultTheme;
41
-
42
96
  const styles = getStyles(currTheme);
43
-
44
97
  const isRTL = I18nManager.isRTL;
45
98
 
46
- // State for label text values, passed down to the SliderLabels component
47
99
  const [leftLabel, setLeftLabel] = useState(initialMinValue.toLocaleString());
48
100
  const [rightLabel, setRightLabel] = useState(
49
101
  initialMaxValue.toLocaleString()
50
102
  );
51
103
 
104
+ // Pre-compute breakpoints for percentile scale
105
+ const breakpoints = useMemo(() => {
106
+ if (scale === "percentile" && dataPoints?.length) {
107
+ return createPercentileBreakpoints(dataPoints);
108
+ }
109
+ return [];
110
+ }, [scale, dataPoints]);
111
+
112
+ const safeMin = scale === "logarithmic" ? Math.max(min, 0.001) : min;
113
+
52
114
  const valueToPosition = useCallback(
53
115
  (value: number) => {
54
116
  "worklet";
55
- // 3. Invert position calculation for RTL
56
- const percentage = (value - min) / (max - min);
57
- return isRTL
58
- ? (1 - percentage) * sliderWidth
59
- : percentage * sliderWidth;
117
+ let percentage: number;
118
+
119
+ if (scale === "percentile" && breakpoints.length > 1) {
120
+ // Find where this value falls in the breakpoints
121
+ const index = findBreakpointIndex(breakpoints, value);
122
+
123
+ if (index === 0) {
124
+ percentage = 0;
125
+ } else if (index >= breakpoints.length - 1) {
126
+ percentage = 1;
127
+ } else {
128
+ // Interpolate between breakpoints
129
+ const lowerVal = breakpoints[index - 1];
130
+ const upperVal = breakpoints[index];
131
+ const lowerPct = (index - 1) / (breakpoints.length - 1);
132
+ const upperPct = index / (breakpoints.length - 1);
133
+
134
+ if (upperVal === lowerVal) {
135
+ percentage = lowerPct;
136
+ } else {
137
+ const ratio = (value - lowerVal) / (upperVal - lowerVal);
138
+ percentage = lowerPct + ratio * (upperPct - lowerPct);
139
+ }
140
+ }
141
+ } else if (scale === "logarithmic") {
142
+ const logMin = Math.log(safeMin);
143
+ const logMax = Math.log(max);
144
+ const logValue = Math.log(Math.max(value, safeMin));
145
+ percentage = (logValue - logMin) / (logMax - logMin);
146
+ } else {
147
+ percentage = (value - min) / (max - min);
148
+ }
149
+
150
+ return isRTL ? (1 - percentage) * sliderWidth : percentage * sliderWidth;
60
151
  },
61
- [min, max, sliderWidth, isRTL]
152
+ [min, max, safeMin, sliderWidth, isRTL, scale, breakpoints]
62
153
  );
63
154
 
64
155
  const positionToValue = useCallback(
65
156
  (position: number) => {
66
157
  "worklet";
67
- // 4. Invert value calculation for RTL
68
- const percentage = position / sliderWidth;
69
- const rawValue = isRTL
70
- ? (1 - percentage) * (max - min) + min
71
- : percentage * (max - min) + min;
158
+ const percentage = isRTL
159
+ ? 1 - position / sliderWidth
160
+ : position / sliderWidth;
161
+
162
+ let rawValue: number;
163
+
164
+ if (scale === "percentile" && breakpoints.length > 1) {
165
+ // Map percentage to breakpoint index
166
+ const exactIndex = percentage * (breakpoints.length - 1);
167
+ const lowerIndex = Math.floor(exactIndex);
168
+ const upperIndex = Math.min(lowerIndex + 1, breakpoints.length - 1);
169
+ const ratio = exactIndex - lowerIndex;
170
+
171
+ rawValue =
172
+ breakpoints[lowerIndex] +
173
+ ratio * (breakpoints[upperIndex] - breakpoints[lowerIndex]);
174
+ } else if (scale === "logarithmic") {
175
+ const logMin = Math.log(safeMin);
176
+ const logMax = Math.log(max);
177
+ rawValue = Math.exp(logMin + percentage * (logMax - logMin));
178
+ } else {
179
+ rawValue = percentage * (max - min) + min;
180
+ }
181
+
72
182
  return Math.round(rawValue / step) * step;
73
183
  },
74
- [min, max, step, sliderWidth, isRTL]
184
+ [min, max, safeMin, step, sliderWidth, isRTL, scale, breakpoints]
75
185
  );
76
186
 
77
187
  const leftPosition = useSharedValue(valueToPosition(initialMinValue));
@@ -95,23 +205,20 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
95
205
  if (activeThumb.value === null) return;
96
206
  const newPos = context.value.x + e.translationX;
97
207
 
98
- // 5. Adjust clamping logic for RTL
99
208
  if (activeThumb.value === "left") {
100
209
  const lowerBound = isRTL ? rightPosition.value + THUMB_SIZE : 0;
101
- const upperBound = isRTL ? sliderWidth : rightPosition.value - THUMB_SIZE;
102
- const clampedPos = Math.max(
103
- Math.min(newPos, upperBound),
104
- lowerBound
105
- );
210
+ const upperBound = isRTL
211
+ ? sliderWidth
212
+ : rightPosition.value - THUMB_SIZE;
213
+ const clampedPos = Math.max(Math.min(newPos, upperBound), lowerBound);
106
214
  leftPosition.value = clampedPos;
107
215
  runOnJS(setLeftLabel)(positionToValue(clampedPos).toLocaleString());
108
216
  } else {
109
217
  const lowerBound = isRTL ? 0 : leftPosition.value + THUMB_SIZE;
110
- const upperBound = isRTL ? leftPosition.value - THUMB_SIZE : sliderWidth;
111
- const clampedPos = Math.max(
112
- Math.min(newPos, upperBound),
113
- lowerBound
114
- );
218
+ const upperBound = isRTL
219
+ ? leftPosition.value - THUMB_SIZE
220
+ : sliderWidth;
221
+ const clampedPos = Math.max(Math.min(newPos, upperBound), lowerBound);
115
222
  rightPosition.value = clampedPos;
116
223
  runOnJS(setRightLabel)(positionToValue(clampedPos).toLocaleString());
117
224
  }
@@ -124,9 +231,8 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
124
231
  activeThumb.value = null;
125
232
  });
126
233
 
127
-
128
234
  const animatedLeftThumbStyle = useAnimatedStyle(() => ({
129
- transform: [{ translateX: leftPosition.value - (isRTL ? THUMB_SIZE : 0)}],
235
+ transform: [{ translateX: leftPosition.value - (isRTL ? THUMB_SIZE : 0) }],
130
236
  }));
131
237
 
132
238
  const animatedRightThumbStyle = useAnimatedStyle(() => ({
@@ -134,7 +240,6 @@ const RangeSlider: React.FC<RangeSliderProps> = ({
134
240
  }));
135
241
 
136
242
  const animatedActiveRailStyle = useAnimatedStyle(() => {
137
- // 6. Use Math.min and Math.max to correctly draw the active rail in both LTR and RTL
138
243
  const start = Math.min(leftPosition.value, rightPosition.value);
139
244
  const end = Math.max(leftPosition.value, rightPosition.value);
140
245
  return {
@@ -182,7 +287,7 @@ const getStyles = (theme: ThemeType) =>
182
287
  height: LABEL_HEIGHT + THUMB_SIZE,
183
288
  justifyContent: "center",
184
289
  marginTop: LABEL_HEIGHT,
185
- direction: "ltr"
290
+ direction: "ltr",
186
291
  },
187
292
  railContainer: {
188
293
  justifyContent: "center",
@@ -215,4 +320,4 @@ const getStyles = (theme: ThemeType) =>
215
320
  },
216
321
  });
217
322
 
218
- export default RangeSlider;
323
+ export default RangeSlider;