@baby-journey/rn-segmented-progress-bar 0.1.5 → 0.4.0

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.
Files changed (50) hide show
  1. package/lib/commonjs/helpers/index.js +4 -5
  2. package/lib/commonjs/helpers/index.js.map +1 -1
  3. package/lib/commonjs/index.js +198 -142
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/package.json +1 -0
  6. package/lib/module/helpers/index.js +6 -5
  7. package/lib/module/helpers/index.js.map +1 -1
  8. package/lib/module/index.js +199 -139
  9. package/lib/module/index.js.map +1 -1
  10. package/lib/typescript/helpers/index.d.ts +2 -2
  11. package/lib/typescript/helpers/index.d.ts.map +1 -1
  12. package/lib/typescript/index.d.ts +1 -2
  13. package/lib/typescript/index.d.ts.map +1 -1
  14. package/package.json +23 -16
  15. package/src/helpers/index.ts +16 -9
  16. package/src/index.tsx +236 -190
  17. package/.editorconfig +0 -15
  18. package/.gitattributes +0 -3
  19. package/.gitignore +0 -70
  20. package/.nvmrc +0 -1
  21. package/.watchmanconfig +0 -1
  22. package/.yarnrc +0 -3
  23. package/CODE_OF_CONDUCT.md +0 -133
  24. package/CONTRIBUTING.md +0 -116
  25. package/babel.config.js +0 -3
  26. package/docs/CODE_OF_CONDUCT.md +0 -44
  27. package/docs/CONTRIBUTING.md +0 -95
  28. package/docs/pull_request_template.md +0 -28
  29. package/example/.expo/README.md +0 -8
  30. package/example/.expo/devices.json +0 -3
  31. package/example/App.js +0 -1
  32. package/example/app.json +0 -33
  33. package/example/assets/adaptive-icon.png +0 -0
  34. package/example/assets/favicon.png +0 -0
  35. package/example/assets/icon.png +0 -0
  36. package/example/assets/splash.png +0 -0
  37. package/example/babel.config.js +0 -22
  38. package/example/metro.config.js +0 -38
  39. package/example/package.json +0 -30
  40. package/example/src/App.tsx +0 -41
  41. package/example/tsconfig.json +0 -6
  42. package/example/webpack.config.js +0 -25
  43. package/example/yarn.lock +0 -10640
  44. package/lefthook.yml +0 -16
  45. package/scripts/bootstrap.js +0 -29
  46. package/src/__tests__/helper/index.test.js +0 -92
  47. package/src/__tests__/index.test.js +0 -28
  48. package/tsconfig.build.json +0 -5
  49. package/tsconfig.json +0 -28
  50. package/yarn.lock +0 -9933
@@ -1,12 +1,50 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
1
+ "use strict";
2
+
3
+ import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
3
4
  import { Animated, Easing, StyleSheet, View } from 'react-native';
4
5
  import Svg, { Circle, G, TSpan } from 'react-native-svg';
5
6
  import { getArcEndCoordinates, getPathValues } from './helpers';
7
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
6
8
  const IndicatorCircle = Animated.createAnimatedComponent(Circle);
7
9
  const ProgressCircle = Animated.createAnimatedComponent(Circle);
8
10
  const max = 100;
9
11
  const duration = 1200;
12
+ const progressDelay = 500;
13
+ const INDICATOR_FONT = {
14
+ textAnchor: 'middle',
15
+ fontSize: 18
16
+ };
17
+
18
+ /**
19
+ * Computes the declarative strokeDashoffset for a segment.
20
+ * Returns an Animated.AnimatedInterpolation when the segment has progress,
21
+ * or a static number when it doesn't.
22
+ */
23
+ const computeStrokeDashoffset = (animatedVal, target, circumference, numSegments, gap) => {
24
+ if (target <= 0) return circumference;
25
+ const gapAdjust = numSegments * target * gap / 100;
26
+ const targetOffset = circumference * (1 - target / 100) + gapAdjust;
27
+ const thresholdV = gapAdjust > 0 ? gapAdjust * 100 / circumference : 0;
28
+
29
+ // Gap consumes all progress — segment stays hidden
30
+ if (thresholdV >= target) return circumference;
31
+
32
+ // With gap: dead zone at start where offset stays at circumference
33
+ if (thresholdV > 0) {
34
+ return animatedVal.interpolate({
35
+ inputRange: [0, thresholdV, target],
36
+ outputRange: [circumference, circumference, targetOffset],
37
+ extrapolate: 'clamp'
38
+ });
39
+ }
40
+
41
+ // No gap: simple linear interpolation
42
+ return animatedVal.interpolate({
43
+ inputRange: [0, target],
44
+ outputRange: [circumference, targetOffset],
45
+ extrapolate: 'clamp'
46
+ });
47
+ };
10
48
  const RNSegmentedProgressBar = (props, ref) => {
11
49
  const {
12
50
  radius,
@@ -18,181 +56,203 @@ const RNSegmentedProgressBar = (props, ref) => {
18
56
  indicator,
19
57
  centerComponent
20
58
  } = props;
21
- const circleRef = useRef([]);
22
59
  const animatedValue = useRef(new Animated.Value(0)).current;
23
- const progressAnimatedValues = useRef([...Array(segments)].map(() => new Animated.Value(0))).current;
60
+ const progressAnimatedValues = useRef(new Array(segments).fill(null).map(() => new Animated.Value(0))).current;
24
61
  const indicatorCircleRef = useRef(null);
25
62
  const tSpanRef = useRef(null);
26
- const indicatorSegmentsGap = (indicator === null || indicator === void 0 ? void 0 : indicator.radius) ?? 0;
63
+
64
+ // Per-segment target values — drives both render-time interpolation and animation
65
+ const [segmentTargets, setSegmentTargets] = useState(() => new Array(segments).fill(0));
66
+ // Overall progress stored in ref (only needed inside animation, not for render)
67
+ const activeProgressRef = useRef(0);
68
+ // Pending animation config — bridges run() and the post-render effect
69
+ const pendingAnimationRef = useRef(null);
70
+ const indicatorSegmentsGap = indicator?.radius ?? 0;
27
71
  const halfCircle = radius + strokeWidth + indicatorSegmentsGap;
28
72
  const circleCircumference = 2 * Math.PI * radius;
29
73
  const rotation = -90 + 180 * (segmentsGap / 2 / radius) / Math.PI;
30
74
  const getProgressValues = useCallback(progress => getPathValues(progress, max, segments), [segments]);
31
- const progressDelay = 10;
32
- const animation = useCallback((animatedVal, toValue, delay, durationValue) => {
33
- return Animated.timing(animatedVal, {
34
- toValue,
35
- duration: durationValue,
36
- delay,
37
- useNativeDriver: true,
38
- easing: Easing.linear
39
- });
40
- }, []);
75
+ const getMeanSegmentsGap = useCallback(progress => {
76
+ const pathValues = getProgressValues(progress);
77
+ const activeSegments = pathValues.filter(val => val > 0).length;
78
+ return progress / (activeSegments || 1) * segments * segmentsGap / 100;
79
+ }, [getProgressValues, segments, segmentsGap]);
80
+
81
+ // Clean up on unmount
41
82
  useEffect(() => {
42
- () => {
83
+ return () => {
84
+ animatedValue.stopAnimation();
43
85
  animatedValue.removeAllListeners();
44
- progressAnimatedValues.forEach(progressAnimatedValue => progressAnimatedValue.removeAllListeners());
86
+ progressAnimatedValues.forEach(v => {
87
+ v.stopAnimation();
88
+ v.removeAllListeners();
89
+ });
45
90
  };
46
91
  }, [animatedValue, progressAnimatedValues]);
47
- const getMeanSegmentsGap = useCallback(progress => {
48
- const pathValues = getProgressValues(progress);
49
- return (progress / pathValues.filter(val => val > 0).length || 1) * segments * segmentsGap / 100;
50
- }, [getProgressValues, segments, segmentsGap]);
51
- const runIndicator = useCallback((calculatedStrokeDashoffset, val) => {
92
+
93
+ // Start animations AFTER React has re-rendered with updated segmentTargets.
94
+ // This guarantees progressTrack useMemo has correct interpolations before
95
+ // any animated values start ticking.
96
+ useEffect(() => {
97
+ const pending = pendingAnimationRef.current;
98
+ if (!pending) return;
99
+ pendingAnimationRef.current = null;
52
100
  const {
53
- x: cx,
54
- y: cy
55
- } = getArcEndCoordinates(radius, calculatedStrokeDashoffset, halfCircle, halfCircle, rotation);
56
- if (!calculatedStrokeDashoffset) {
57
- return;
101
+ progress,
102
+ targets
103
+ } = pending;
104
+ const progressAnimations = Animated.sequence(progressAnimatedValues.map((animVal, index) => Animated.timing(animVal, {
105
+ toValue: targets[index] ?? 0,
106
+ duration: duration * (targets[index] ?? 0) / max,
107
+ delay: index === 0 ? progressDelay : 0,
108
+ useNativeDriver: false,
109
+ easing: Easing.linear
110
+ })));
111
+ if (indicator?.show) {
112
+ const percentageAnim = Animated.timing(animatedValue, {
113
+ toValue: progress,
114
+ duration: duration * progress / max,
115
+ delay: progressDelay,
116
+ useNativeDriver: false,
117
+ easing: Easing.linear
118
+ });
119
+ Animated.parallel([progressAnimations, percentageAnim]).start();
120
+ } else {
121
+ progressAnimations.start();
58
122
  }
59
- const calculatedProgress = `${Math.round(val)}%`;
60
- if (indicatorCircleRef !== null && indicatorCircleRef !== void 0 && indicatorCircleRef.current && tSpanRef !== null && tSpanRef !== void 0 && tSpanRef.current) {
61
- //@ts-ignore
123
+ }, [segmentTargets, animatedValue, indicator?.show, progressAnimatedValues]);
124
+ const run = useCallback(({
125
+ progress
126
+ }) => {
127
+ // Stop ongoing animations and clear all listeners
128
+ animatedValue.stopAnimation();
129
+ animatedValue.removeAllListeners();
130
+ animatedValue.setValue(0);
131
+ progressAnimatedValues.forEach(v => {
132
+ v.stopAnimation();
133
+ v.removeAllListeners();
134
+ v.setValue(0);
135
+ });
136
+ const targets = getProgressValues(progress);
137
+ activeProgressRef.current = progress;
138
+
139
+ // Set up indicator static properties once (not per-frame)
140
+ if (indicator?.show && indicatorCircleRef.current && tSpanRef.current) {
141
+ const calculatedProgress = `${Math.round(progress)}%`;
142
+ // @ts-ignore – setNativeProps exists on native ref
62
143
  indicatorCircleRef.current.setNativeProps({
63
- r: (indicator === null || indicator === void 0 ? void 0 : indicator.radius) || 0,
64
- strokeWidth: (indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth) || 0,
65
- cx,
66
- cy
144
+ r: indicator.radius || 0,
145
+ strokeWidth: indicator.strokeWidth || 0
67
146
  });
68
-
69
- //@ts-ignore
70
- tSpanRef === null || tSpanRef === void 0 ? void 0 : tSpanRef.current.setNativeProps({
147
+ // @ts-ignore – setNativeProps exists on native ref
148
+ tSpanRef.current.setNativeProps({
71
149
  children: calculatedProgress,
72
- dx: cx,
73
- dy: cy + 5,
74
- font: {
75
- textAnchor: 'middle',
76
- fontSize: 18
77
- }
150
+ font: INDICATOR_FONT
78
151
  });
79
152
  }
80
- }, [radius, halfCircle, rotation, indicator === null || indicator === void 0 ? void 0 : indicator.radius, indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth]);
81
- const run = useCallback(_ref => {
82
- let {
83
- progress
84
- } = _ref;
85
- const circleProgressValues = getProgressValues(progress);
86
- progressAnimatedValues.forEach((progressAnimated, index) => {
87
- progressAnimated.addListener(v => {
88
- if (circleRef !== null && circleRef !== void 0 && circleRef.current[index]) {
89
- var _circleRef$current$in;
90
- var strokeDashoffset = circleCircumference;
91
- var val = v.value <= (circleProgressValues[index] ?? 0) ? v.value : circleProgressValues[index] ?? 0;
92
- strokeDashoffset = circleProgressValues[index] ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
93
- const paintedLength = circleCircumference - strokeDashoffset - segments * (circleProgressValues[index] ?? 0) * segmentsGap / 100;
94
153
 
95
- //@ts-ignore
96
- circleRef === null || circleRef === void 0 ? void 0 : (_circleRef$current$in = circleRef.current[index]) === null || _circleRef$current$in === void 0 ? void 0 : _circleRef$current$in.setNativeProps({
97
- strokeDashoffset: circleCircumference - paintedLength > circleCircumference ? circleCircumference : circleCircumference - paintedLength
154
+ // Set up indicator position listener (trig-based, can't use interpolate)
155
+ if (indicator?.show) {
156
+ const meanGap = getMeanSegmentsGap(progress);
157
+ animatedValue.addListener(v => {
158
+ const val = Math.min(v.value, progress);
159
+ const paintedLength = circleCircumference * val / 100;
160
+ const adjustedLength = paintedLength - meanGap;
161
+ if (adjustedLength <= 0) return;
162
+ const {
163
+ x: cx,
164
+ y: cy
165
+ } = getArcEndCoordinates(radius, adjustedLength, halfCircle, halfCircle, rotation);
166
+ if (indicatorCircleRef.current) {
167
+ // @ts-ignore – setNativeProps exists on native ref
168
+ indicatorCircleRef.current.setNativeProps({
169
+ cx,
170
+ cy
171
+ });
172
+ }
173
+ if (tSpanRef.current) {
174
+ // @ts-ignore – setNativeProps exists on native ref
175
+ tSpanRef.current.setNativeProps({
176
+ dx: cx,
177
+ dy: cy + 5
98
178
  });
99
179
  }
100
- });
101
- });
102
- if (indicator !== null && indicator !== void 0 && indicator.show) {
103
- animatedValue.addListener(v => {
104
- var strokeDashoffset = circleCircumference;
105
- var val = v.value <= progress ? v.value : progress;
106
- strokeDashoffset = progress ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
107
- const paintedLength = circleCircumference - strokeDashoffset;
108
- const meanSegmentsGap = getMeanSegmentsGap(progress);
109
- const calculatedStrokeDashoffset = paintedLength - meanSegmentsGap;
110
- runIndicator(calculatedStrokeDashoffset, progress);
111
180
  });
112
181
  }
113
182
 
114
- // Animate circles sequentially
115
- const progressAnimations = Animated.sequence(progressAnimatedValues.map((tav, index) => animation(tav,
116
- // Animated value
117
- circleProgressValues[index] ?? 0,
118
- // To value
119
- index === 0 ? progressDelay : 0,
120
- // Delay
121
- duration * (circleProgressValues[index] ?? 0) / max // Duration
122
- )));
123
-
124
- if (indicator !== null && indicator !== void 0 && indicator.show) {
125
- // Animate percentage circle
126
- const percentageAnim = animation(animatedValue,
127
- // Animated value
183
+ // Store pending config and trigger re-render with new targets.
184
+ // Animations start in a useEffect AFTER React has re-rendered,
185
+ // ensuring interpolations in progressTrack are set up correctly.
186
+ pendingAnimationRef.current = {
128
187
  progress,
129
- // To value
130
- progressDelay,
131
- // Delay
132
- duration * progress / max // Duration
133
- );
134
- // Progress Animations run parallelly with percentage circle
135
- Animated.parallel([progressAnimations, percentageAnim]).start();
136
- } else {
137
- progressAnimations.start();
138
- }
139
- }, [animatedValue, animation, segments, circleCircumference, segmentsGap, getMeanSegmentsGap, indicator === null || indicator === void 0 ? void 0 : indicator.show, getProgressValues, runIndicator, progressAnimatedValues]);
140
- const getProgress = useMemo(() => {
141
- const progressConfig = {
142
- stroke: progressColor,
188
+ targets
189
+ };
190
+ setSegmentTargets(targets);
191
+ }, [animatedValue, circleCircumference, getMeanSegmentsGap, getProgressValues, halfCircle, indicator?.show, indicator?.radius, indicator?.strokeWidth, progressAnimatedValues, radius, rotation]);
192
+
193
+ // Memoize base track circles (static, never animate)
194
+ const baseTrack = useMemo(() => {
195
+ const baseStrokeDashoffset = circleCircumference - circleCircumference / segments + segmentsGap;
196
+ return new Array(segments).fill(null).map((_, key) => /*#__PURE__*/_jsx(Circle, {
143
197
  cx: halfCircle,
144
198
  cy: halfCircle,
145
199
  r: radius,
200
+ stroke: baseColor,
201
+ rotation: rotation + key * 360 / segments,
146
202
  origin: `${halfCircle}, ${halfCircle}`,
147
203
  strokeWidth: strokeWidth,
148
204
  strokeDasharray: circleCircumference,
149
- strokeDashoffset: circleCircumference
150
- };
151
- return progressAnimatedValues.map((_, key) => /*#__PURE__*/React.createElement(ProgressCircle, _extends({
152
- key: key
153
- //@ts-ignore
154
- ,
155
- ref: el => circleRef.current[key] = el
156
- }, progressConfig, {
157
- rotation: rotation + key * 360 / segments,
205
+ strokeDashoffset: baseStrokeDashoffset,
158
206
  strokeLinecap: "round"
159
- })));
160
- }, [segments, circleCircumference, halfCircle, progressColor, radius, rotation, strokeWidth, progressAnimatedValues]);
207
+ }, key));
208
+ }, [baseColor, circleCircumference, halfCircle, radius, rotation, segments, segmentsGap, strokeWidth]);
209
+
210
+ // Memoize progress overlay circles with declarative interpolated strokeDashoffset
211
+ const progressTrack = useMemo(() => {
212
+ return progressAnimatedValues.map((animVal, key) => {
213
+ const target = segmentTargets[key] ?? 0;
214
+ const strokeDashoffset = computeStrokeDashoffset(animVal, target, circleCircumference, segments, segmentsGap);
215
+ return /*#__PURE__*/_jsx(ProgressCircle, {
216
+ stroke: progressColor,
217
+ cx: halfCircle,
218
+ cy: halfCircle,
219
+ r: radius,
220
+ origin: `${halfCircle}, ${halfCircle}`,
221
+ strokeWidth: strokeWidth,
222
+ strokeDasharray: circleCircumference,
223
+ strokeDashoffset: strokeDashoffset,
224
+ rotation: rotation + key * 360 / segments,
225
+ strokeLinecap: "round"
226
+ }, key);
227
+ });
228
+ }, [circleCircumference, halfCircle, progressAnimatedValues, progressColor, radius, rotation, segmentTargets, segments, segmentsGap, strokeWidth]);
161
229
  useImperativeHandle(ref, () => ({
162
230
  run
163
- }));
164
- return /*#__PURE__*/React.createElement(Svg, {
231
+ }), [run]);
232
+ return /*#__PURE__*/_jsxs(Svg, {
165
233
  viewBox: `0 0 ${halfCircle * 2} ${halfCircle * 2}`,
166
234
  width: '100%',
167
235
  fill: "none",
168
- height: radius * 2
169
- }, centerComponent && /*#__PURE__*/React.createElement(View, {
170
- style: styles.centerComponent
171
- }, centerComponent), /*#__PURE__*/React.createElement(G, null, [...Array(segments)].map((_, key) => {
172
- return /*#__PURE__*/React.createElement(Circle, {
173
- key: key,
174
- cx: halfCircle,
175
- cy: halfCircle,
176
- r: radius,
177
- stroke: baseColor,
178
- rotation: rotation + key * 360 / segments,
179
- origin: `${halfCircle}, ${halfCircle}`,
180
- strokeWidth: strokeWidth,
181
- strokeDasharray: circleCircumference,
182
- strokeDashoffset: circleCircumference - circleCircumference / segments + segmentsGap,
183
- strokeLinecap: "round"
184
- });
185
- }), getProgress, (indicator === null || indicator === void 0 ? void 0 : indicator.show) === true && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(IndicatorCircle, {
186
- stroke: progressColor,
187
- ref: indicatorCircleRef,
188
- fill: "white"
189
- }), /*#__PURE__*/React.createElement(TSpan, {
190
- stroke: progressColor,
191
- fill: progressColor,
192
- ref: tSpanRef
193
- }))));
236
+ height: radius * 2,
237
+ children: [centerComponent && /*#__PURE__*/_jsx(View, {
238
+ style: styles.centerComponent,
239
+ children: centerComponent
240
+ }), /*#__PURE__*/_jsxs(G, {
241
+ children: [baseTrack, progressTrack, indicator?.show === true && /*#__PURE__*/_jsxs(_Fragment, {
242
+ children: [/*#__PURE__*/_jsx(IndicatorCircle, {
243
+ stroke: progressColor,
244
+ ref: indicatorCircleRef,
245
+ fill: "white"
246
+ }), /*#__PURE__*/_jsx(TSpan, {
247
+ stroke: progressColor,
248
+ fill: progressColor,
249
+ ref: tSpanRef
250
+ })]
251
+ })]
252
+ })]
253
+ });
194
254
  };
195
- export default /*#__PURE__*/memo( /*#__PURE__*/forwardRef(RNSegmentedProgressBar));
255
+ export default /*#__PURE__*/memo(/*#__PURE__*/forwardRef(RNSegmentedProgressBar));
196
256
  const styles = StyleSheet.create({
197
257
  centerComponent: {
198
258
  height: '100%',
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","Animated","Easing","StyleSheet","View","Svg","Circle","G","TSpan","getArcEndCoordinates","getPathValues","IndicatorCircle","createAnimatedComponent","ProgressCircle","max","duration","RNSegmentedProgressBar","props","ref","radius","strokeWidth","baseColor","progressColor","segments","segmentsGap","indicator","centerComponent","circleRef","animatedValue","Value","current","progressAnimatedValues","Array","map","indicatorCircleRef","tSpanRef","indicatorSegmentsGap","halfCircle","circleCircumference","Math","PI","rotation","getProgressValues","progress","progressDelay","animation","animatedVal","toValue","delay","durationValue","timing","useNativeDriver","easing","linear","removeAllListeners","forEach","progressAnimatedValue","getMeanSegmentsGap","pathValues","filter","val","length","runIndicator","calculatedStrokeDashoffset","x","cx","y","cy","calculatedProgress","round","setNativeProps","r","children","dx","dy","font","textAnchor","fontSize","run","circleProgressValues","progressAnimated","index","addListener","v","strokeDashoffset","value","paintedLength","show","meanSegmentsGap","progressAnimations","sequence","tav","percentageAnim","parallel","start","getProgress","progressConfig","stroke","origin","strokeDasharray","_","key","el","styles","create","height","justifyContent","alignItems"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","Animated","Easing","StyleSheet","View","Svg","Circle","G","TSpan","getArcEndCoordinates","getPathValues","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IndicatorCircle","createAnimatedComponent","ProgressCircle","max","duration","progressDelay","INDICATOR_FONT","textAnchor","fontSize","computeStrokeDashoffset","animatedVal","target","circumference","numSegments","gap","gapAdjust","targetOffset","thresholdV","interpolate","inputRange","outputRange","extrapolate","RNSegmentedProgressBar","props","ref","radius","strokeWidth","baseColor","progressColor","segments","segmentsGap","indicator","centerComponent","animatedValue","Value","current","progressAnimatedValues","Array","fill","map","indicatorCircleRef","tSpanRef","segmentTargets","setSegmentTargets","activeProgressRef","pendingAnimationRef","indicatorSegmentsGap","halfCircle","circleCircumference","Math","PI","rotation","getProgressValues","progress","getMeanSegmentsGap","pathValues","activeSegments","filter","val","length","stopAnimation","removeAllListeners","forEach","v","pending","targets","progressAnimations","sequence","animVal","index","timing","toValue","delay","useNativeDriver","easing","linear","show","percentageAnim","parallel","start","run","setValue","calculatedProgress","round","setNativeProps","r","children","font","meanGap","addListener","min","value","paintedLength","adjustedLength","x","cx","y","cy","dx","dy","baseTrack","baseStrokeDashoffset","_","key","stroke","origin","strokeDasharray","strokeDashoffset","strokeLinecap","progressTrack","viewBox","width","height","style","styles","create","justifyContent","alignItems"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- export declare const getPathValues: (progress: number | undefined, max: number, segments: number) => number[];
2
- export declare const getArcEndCoordinates: (radius: number, circleCircumference: number, cx: number, cy: number, rotation?: number) => {
1
+ export declare const getPathValues: (progress: number | null | undefined, max: number, segments: number) => number[];
2
+ export declare const getArcEndCoordinates: (radius: number | null | undefined, circleCircumference: number | null | undefined, cx: number | null | undefined, cy: number | null | undefined, rotation?: number) => {
3
3
  x: number;
4
4
  y: number;
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,aACd,MAAM,GAAG,SAAS,OACvB,MAAM,YACD,MAAM,KACf,MAAM,EAsBR,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,MAAM,uBACO,MAAM,MACvB,MAAM,MACN,MAAM,aACA,MAAM;OACV,MAAM;OAAK,MAAM;CAUxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,KAAK,MAAM,EACX,UAAU,MAAM,KACf,MAAM,EAsBR,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,qBAAqB,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9C,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,WAAU,MAAU,KACnB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAiBxB,CAAC"}
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  interface Indicator {
3
2
  show?: boolean;
4
3
  radius?: number;
@@ -20,6 +19,6 @@ export type RunAnimationHandler = {
20
19
  progress: number;
21
20
  }) => void;
22
21
  };
23
- declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<RNSegmentedProgressBarProps & React.RefAttributes<RunAnimationHandler>>>;
22
+ declare const _default: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<RNSegmentedProgressBarProps & import("react").RefAttributes<RunAnimationHandler>>>;
24
23
  export default _default;
25
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAKf,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnD,CAAC;;AAySF,wBAAwD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAeA,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnD,CAAC;;AAsVF,wBAAwD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baby-journey/rn-segmented-progress-bar",
3
- "version": "0.1.5",
3
+ "version": "0.4.0",
4
4
  "description": "Animated circular progress bar with segments",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -62,39 +62,41 @@
62
62
  "@evilmartians/lefthook": "^1.2.2",
63
63
  "@react-native-community/eslint-config": "^3.0.2",
64
64
  "@release-it/conventional-changelog": "^5.0.0",
65
- "@testing-library/jest-native": "^5.4.1",
66
- "@testing-library/react-native": "^11.5.1",
67
- "@types/jest": "^28.1.2",
68
- "@types/react": "~17.0.21",
65
+ "@testing-library/jest-native": "^5.4.3",
66
+ "@testing-library/react-native": "^11.5.4",
67
+ "@types/jest": "^29.5.0",
68
+ "@types/react": "18.2.79",
69
69
  "@types/react-native": "0.70.0",
70
70
  "commitlint": "^17.0.2",
71
71
  "del-cli": "^5.0.0",
72
72
  "eslint": "^8.4.1",
73
- "eslint-config-prettier": "^8.5.0",
74
- "eslint-plugin-prettier": "^4.0.0",
73
+ "eslint-config-prettier": "^9.1.0",
74
+ "eslint-plugin-ft-flow": "^3.0.11",
75
+ "eslint-plugin-prettier": "^5.2.0",
75
76
  "jest": "^28.1.1",
77
+ "metro-react-native-babel-preset": "^0.77.0",
76
78
  "pod-install": "^0.1.0",
77
- "prettier": "^2.0.5",
79
+ "prettier": "^3.5.0",
78
80
  "react": "18.1.0",
79
81
  "react-native": "0.70.5",
80
- "react-native-builder-bob": "^0.20.0",
81
- "react-native-svg": "^13.7.0",
82
+ "react-native-builder-bob": "^0.40.0",
83
+ "react-native-svg": "^15.11.0",
82
84
  "react-test-renderer": "^18.2.0",
83
85
  "release-it": "^15.0.0",
84
- "typescript": "^4.5.2"
86
+ "typescript": "^5.7.0"
85
87
  },
86
88
  "resolutions": {
87
- "@types/react": "17.0.21"
89
+ "@types/react": "18.2.79"
88
90
  },
89
91
  "peerDependencies": {
90
92
  "react": "*",
91
93
  "react-native": "*",
92
- "react-native-svg": "> 13.7.0"
94
+ "react-native-svg": ">= 13.7.0"
93
95
  },
94
96
  "engines": {
95
- "node": ">= 16.0.0"
97
+ "node": ">= 18.0.0"
96
98
  },
97
- "packageManager": "^yarn@1.22.15",
99
+ "packageManager": "yarn@1.22.22",
98
100
  "jest": {
99
101
  "preset": "react-native",
100
102
  "setupFilesAfterEnv": [
@@ -103,7 +105,11 @@
103
105
  "modulePathIgnorePatterns": [
104
106
  "<rootDir>/example/node_modules",
105
107
  "<rootDir>/lib/"
106
- ]
108
+ ],
109
+ "testEnvironment": "node",
110
+ "globals": {
111
+ "performance": {}
112
+ }
107
113
  },
108
114
  "commitlint": {
109
115
  "extends": [
@@ -134,6 +140,7 @@
134
140
  "prettier"
135
141
  ],
136
142
  "rules": {
143
+ "react/react-in-jsx-scope": "off",
137
144
  "prettier/prettier": [
138
145
  "error",
139
146
  {
@@ -1,13 +1,13 @@
1
1
  export const getPathValues = (
2
- progress: number | undefined,
2
+ progress: number | null | undefined,
3
3
  max: number,
4
4
  segments: number
5
5
  ): number[] => {
6
6
  if (!progress) {
7
- return [...Array(segments)].map(() => 0);
7
+ return new Array(segments).fill(0);
8
8
  }
9
9
 
10
- const pathLengths = [];
10
+ const pathLengths: number[] = [];
11
11
 
12
12
  if (progress > max) {
13
13
  progress = max;
@@ -18,7 +18,7 @@ export const getPathValues = (
18
18
  let i = 0;
19
19
  while (i < segments) {
20
20
  const val: number = progress >= max / segments ? max / segments : progress;
21
- pathLengths.push(Number.parseFloat(val.toFixed(4)));
21
+ pathLengths.push(Math.round(val * 10000) / 10000);
22
22
  progress = progress - val;
23
23
  i++;
24
24
  }
@@ -27,13 +27,20 @@ export const getPathValues = (
27
27
  };
28
28
 
29
29
  export const getArcEndCoordinates = (
30
- radius: number,
31
- circleCircumference: number,
32
- cx: number,
33
- cy: number,
30
+ radius: number | null | undefined,
31
+ circleCircumference: number | null | undefined,
32
+ cx: number | null | undefined,
33
+ cy: number | null | undefined,
34
34
  rotation: number = 0
35
35
  ): { x: number; y: number } => {
36
- if (!circleCircumference || !radius || !cx || !cy) {
36
+ if (
37
+ circleCircumference == null ||
38
+ circleCircumference === 0 ||
39
+ radius == null ||
40
+ radius === 0 ||
41
+ cx == null ||
42
+ cy == null
43
+ ) {
37
44
  return { x: 0, y: 0 };
38
45
  }
39
46