@baby-journey/rn-segmented-progress-bar 0.1.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.
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPathValues = exports.getArcEndCoordinates = void 0;
7
+ const getPathValues = (progress, max, baseParts) => {
8
+ if (!progress) {
9
+ return [...Array(baseParts)].map(() => 0);
10
+ }
11
+ const pathLengths = [];
12
+ if (progress > max) {
13
+ progress = max;
14
+ }
15
+ progress = 100 * progress / max;
16
+ let i = 0;
17
+ while (i < baseParts) {
18
+ const val = progress >= max / baseParts ? max / baseParts : progress;
19
+ pathLengths.push(Number.parseFloat(val.toFixed(4)));
20
+ progress = progress - val;
21
+ i++;
22
+ }
23
+ return pathLengths;
24
+ };
25
+ exports.getPathValues = getPathValues;
26
+ const getArcEndCoordinates = function (radius, circleCircumference, cx, cy) {
27
+ let rotation = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
28
+ if (!circleCircumference || !radius || !cx || !cy) {
29
+ return {
30
+ x: 0,
31
+ y: 0
32
+ };
33
+ }
34
+ const θ = circleCircumference / radius + rotation * Math.PI / 180;
35
+ const x = Math.cos(θ) * radius + cx;
36
+ const y = Math.sin(θ) * radius + cy;
37
+ return {
38
+ x,
39
+ y
40
+ };
41
+ };
42
+ exports.getArcEndCoordinates = getArcEndCoordinates;
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPathValues","progress","max","baseParts","Array","map","pathLengths","i","val","push","Number","parseFloat","toFixed","getArcEndCoordinates","radius","circleCircumference","cx","cy","rotation","x","y","θ","Math","PI","cos","sin"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAG,CAC3BC,QAA4B,EAC5BC,GAAW,EACXC,SAAiB,KACJ;EACb,IAAI,CAACF,QAAQ,EAAE;IACb,OAAO,CAAC,GAAGG,KAAK,CAACD,SAAS,CAAC,CAAC,CAACE,GAAG,CAAC,MAAM,CAAC,CAAC;EAC3C;EAEA,MAAMC,WAAW,GAAG,EAAE;EAEtB,IAAIL,QAAQ,GAAGC,GAAG,EAAE;IAClBD,QAAQ,GAAGC,GAAG;EAChB;EAEAD,QAAQ,GAAI,GAAG,GAAGA,QAAQ,GAAIC,GAAG;EAEjC,IAAIK,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGJ,SAAS,EAAE;IACpB,MAAMK,GAAW,GACfP,QAAQ,IAAIC,GAAG,GAAGC,SAAS,GAAGD,GAAG,GAAGC,SAAS,GAAGF,QAAQ;IAC1DK,WAAW,CAACG,IAAI,CAACC,MAAM,CAACC,UAAU,CAACH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnDX,QAAQ,GAAGA,QAAQ,GAAGO,GAAG;IACzBD,CAAC,EAAE;EACL;EAEA,OAAOD,WAAW;AACpB,CAAC;AAAC;AAEK,MAAMO,oBAAoB,GAAG,UAClCC,MAAc,EACdC,mBAA2B,EAC3BC,EAAU,EACVC,EAAU,EAEmB;EAAA,IAD7BC,QAAgB,uEAAG,CAAC;EAEpB,IAAI,CAACH,mBAAmB,IAAI,CAACD,MAAM,IAAI,CAACE,EAAE,IAAI,CAACC,EAAE,EAAE;IACjD,OAAO;MAAEE,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC;EACvB;EAEA,MAAMC,CAAC,GAAGN,mBAAmB,GAAGD,MAAM,GAAII,QAAQ,GAAGI,IAAI,CAACC,EAAE,GAAI,GAAG;EACnE,MAAMJ,CAAC,GAAGG,IAAI,CAACE,GAAG,CAACH,CAAC,CAAC,GAAGP,MAAM,GAAGE,EAAE;EACnC,MAAMI,CAAC,GAAGE,IAAI,CAACG,GAAG,CAACJ,CAAC,CAAC,GAAGP,MAAM,GAAGG,EAAE;EAEnC,OAAO;IAAEE,CAAC;IAAEC;EAAE,CAAC;AACjB,CAAC;AAAC"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
10
+ var _helpers = require("./helpers");
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
+ 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); }
14
+ const PercentageCircle = _reactNative.Animated.createAnimatedComponent(_reactNativeSvg.Circle);
15
+ const Trimester = _reactNative.Animated.createAnimatedComponent(_reactNativeSvg.Circle);
16
+ const Color = {
17
+ Peach: '#ffede1',
18
+ PinkLight: '#F39E93'
19
+ };
20
+ const Chart = (props, ref) => {
21
+ const {
22
+ radius = 100,
23
+ strokeWidth = 10,
24
+ baseColor = Color.Peach,
25
+ progressColor = Color.PinkLight,
26
+ duration = 1200,
27
+ max = 100,
28
+ baseParts = 3,
29
+ gap = 0,
30
+ indicator,
31
+ centerComponent,
32
+ focused
33
+ } = props;
34
+ const circleRef = (0, _react.useRef)([]);
35
+ const animatedValue = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
36
+ const trimesterAnimatedValues = (0, _react.useRef)([...Array(baseParts)].map(() => new _reactNative.Animated.Value(0))).current;
37
+ const indicatorCircleRef = (0, _react.useRef)(null);
38
+ const tSpanRef = (0, _react.useRef)(null);
39
+ const indicatorGap = (indicator === null || indicator === void 0 ? void 0 : indicator.radius) ?? 0;
40
+ const halfCircle = radius + strokeWidth + indicatorGap;
41
+ const circleCircumference = 2 * Math.PI * radius;
42
+ const rotation = -90 + 180 * (gap / 2 / radius) / Math.PI;
43
+ const getTrimesterValues = (0, _react.useCallback)(progress => (0, _helpers.getPathValues)(progress, max, baseParts), [baseParts, max]);
44
+ const progressDelay = 10;
45
+ const animation = (0, _react.useCallback)((animatedVal, toValue, delay, durationValue) => {
46
+ return _reactNative.Animated.timing(animatedVal, {
47
+ toValue,
48
+ duration: durationValue,
49
+ delay,
50
+ useNativeDriver: true,
51
+ easing: _reactNative.Easing.linear
52
+ });
53
+ }, []);
54
+ (0, _react.useEffect)(() => {
55
+ () => {
56
+ animatedValue.removeAllListeners();
57
+ trimesterAnimatedValues.forEach(trimesterAnimatedValue => trimesterAnimatedValue.removeAllListeners());
58
+ };
59
+ }, [animatedValue, trimesterAnimatedValues]);
60
+ const getMeanGap = (0, _react.useCallback)(progress => {
61
+ const pathValues = getTrimesterValues(progress);
62
+ return (progress / pathValues.filter(val => val > 0).length || 1) * baseParts * gap / 100;
63
+ }, [getTrimesterValues, baseParts, gap]);
64
+ const runIndicator = (0, _react.useCallback)((calculatedStrokeDashoffset, val) => {
65
+ const {
66
+ x: cx,
67
+ y: cy
68
+ } = (0, _helpers.getArcEndCoordinates)(radius, calculatedStrokeDashoffset, halfCircle, halfCircle, rotation);
69
+ if (!calculatedStrokeDashoffset) {
70
+ return;
71
+ }
72
+ const calculatedProgress = `${Math.round(val)}%`;
73
+ if (indicatorCircleRef !== null && indicatorCircleRef !== void 0 && indicatorCircleRef.current && tSpanRef !== null && tSpanRef !== void 0 && tSpanRef.current) {
74
+ //@ts-ignore
75
+ indicatorCircleRef.current.setNativeProps({
76
+ r: (indicator === null || indicator === void 0 ? void 0 : indicator.radius) || 0,
77
+ strokeWidth: (indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth) || 0,
78
+ cx,
79
+ cy
80
+ });
81
+
82
+ //@ts-ignore
83
+ tSpanRef === null || tSpanRef === void 0 ? void 0 : tSpanRef.current.setNativeProps({
84
+ children: calculatedProgress,
85
+ dx: cx,
86
+ dy: cy + 5,
87
+ font: {
88
+ textAnchor: 'middle',
89
+ // fontFamily: Font.CircularMedium,
90
+ fontSize: 18
91
+ }
92
+ });
93
+ }
94
+ }, [radius, halfCircle, rotation, indicator === null || indicator === void 0 ? void 0 : indicator.radius, indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth]);
95
+ const run = (0, _react.useCallback)(_ref => {
96
+ let {
97
+ progress
98
+ } = _ref;
99
+ console.log('Hello');
100
+ const trimesterProgressValues = getTrimesterValues(progress);
101
+ trimesterAnimatedValues.forEach((trimesterAnimated, index) => {
102
+ trimesterAnimated.addListener(v => {
103
+ if (circleRef !== null && circleRef !== void 0 && circleRef.current[index]) {
104
+ var _circleRef$current$in;
105
+ var strokeDashoffset = circleCircumference;
106
+ var val = v.value <= (trimesterProgressValues[index] ?? 0) ? v.value : trimesterProgressValues[index] ?? 0;
107
+ strokeDashoffset = trimesterProgressValues[index] ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
108
+ const paintedLength = circleCircumference - strokeDashoffset - baseParts * (trimesterProgressValues[index] ?? 0) * gap / 100;
109
+
110
+ //@ts-ignore
111
+ 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({
112
+ strokeDashoffset: circleCircumference - paintedLength > circleCircumference ? circleCircumference : circleCircumference - paintedLength
113
+ });
114
+ }
115
+ });
116
+ });
117
+ if (indicator !== null && indicator !== void 0 && indicator.show) {
118
+ animatedValue.addListener(v => {
119
+ var strokeDashoffset = circleCircumference;
120
+ var val = v.value <= progress ? v.value : progress;
121
+ strokeDashoffset = progress ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
122
+ const paintedLength = circleCircumference - strokeDashoffset;
123
+ const meanGap = getMeanGap(progress);
124
+ const calculatedStrokeDashoffset = paintedLength - meanGap;
125
+ runIndicator(calculatedStrokeDashoffset, progress);
126
+ });
127
+ }
128
+
129
+ // Animate trimesters sequentially
130
+ const trimesterAnimations = _reactNative.Animated.sequence(trimesterAnimatedValues.map((tav, index) => animation(tav,
131
+ // Animated value
132
+ trimesterProgressValues[index] ?? 0,
133
+ // To value
134
+ index === 0 ? progressDelay : 0,
135
+ // Delay
136
+ duration * (trimesterProgressValues[index] ?? 0) / max // Duration
137
+ )));
138
+
139
+ if (indicator !== null && indicator !== void 0 && indicator.show) {
140
+ // Animate percentage circle
141
+ const percentageAnim = animation(animatedValue,
142
+ // Animated value
143
+ progress,
144
+ // To value
145
+ progressDelay,
146
+ // Delay
147
+ duration * progress / max // Duration
148
+ );
149
+ // trimester Animations run parallelly with percentage circle
150
+ _reactNative.Animated.parallel([trimesterAnimations, percentageAnim]).start();
151
+ } else {
152
+ trimesterAnimations.start();
153
+ }
154
+ }, [animatedValue, animation, baseParts, circleCircumference, duration, gap, getMeanGap, indicator === null || indicator === void 0 ? void 0 : indicator.show, max, getTrimesterValues, runIndicator, trimesterAnimatedValues]);
155
+ const getTrimester = (0, _react.useMemo)(() => {
156
+ const trimesterConfig = {
157
+ stroke: progressColor,
158
+ cx: halfCircle,
159
+ cy: halfCircle,
160
+ r: radius,
161
+ origin: `${halfCircle}, ${halfCircle}`,
162
+ strokeWidth: strokeWidth,
163
+ strokeDasharray: circleCircumference,
164
+ strokeDashoffset: circleCircumference
165
+ };
166
+ return trimesterAnimatedValues.map((_, key) => /*#__PURE__*/_react.default.createElement(Trimester, _extends({
167
+ key: key
168
+ //@ts-ignore
169
+ ,
170
+ ref: el => circleRef.current[key] = el
171
+ }, trimesterConfig, {
172
+ rotation: rotation + key * 360 / baseParts,
173
+ strokeLinecap: "round"
174
+ })));
175
+ }, [baseParts, circleCircumference, halfCircle, progressColor, radius, rotation, strokeWidth, trimesterAnimatedValues]);
176
+ (0, _react.useImperativeHandle)(ref, () => ({
177
+ run
178
+ }));
179
+ return /*#__PURE__*/_react.default.createElement(_reactNativeSvg.default, {
180
+ viewBox: `0 0 ${halfCircle * 2} ${halfCircle * 2}`,
181
+ width: '100%',
182
+ fill: "none",
183
+ height: radius * 2
184
+ }, centerComponent && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
185
+ style: styles.centerComponent
186
+ }, centerComponent), /*#__PURE__*/_react.default.createElement(_reactNativeSvg.G, null, [...Array(baseParts)].map((_, key) => {
187
+ return /*#__PURE__*/_react.default.createElement(_reactNativeSvg.Circle, {
188
+ key: key,
189
+ cx: halfCircle,
190
+ cy: halfCircle,
191
+ r: radius,
192
+ stroke: baseColor,
193
+ rotation: rotation + key * 360 / baseParts,
194
+ origin: `${halfCircle}, ${halfCircle}`,
195
+ strokeWidth: strokeWidth,
196
+ strokeDasharray: circleCircumference,
197
+ strokeDashoffset: circleCircumference - circleCircumference / baseParts + gap,
198
+ strokeLinecap: "round"
199
+ });
200
+ }), getTrimester, (indicator === null || indicator === void 0 ? void 0 : indicator.show) === true && focused && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(PercentageCircle, {
201
+ stroke: progressColor,
202
+ ref: indicatorCircleRef,
203
+ fill: "white"
204
+ }), /*#__PURE__*/_react.default.createElement(_reactNativeSvg.TSpan, {
205
+ stroke: progressColor,
206
+ fill: progressColor,
207
+ ref: tSpanRef
208
+ }))));
209
+ };
210
+ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(Chart));
211
+ exports.default = _default;
212
+ const styles = _reactNative.StyleSheet.create({
213
+ centerComponent: {
214
+ height: '100%',
215
+ justifyContent: 'center',
216
+ alignItems: 'center'
217
+ }
218
+ });
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PercentageCircle","Animated","createAnimatedComponent","Circle","Trimester","Color","Peach","PinkLight","Chart","props","ref","radius","strokeWidth","baseColor","progressColor","duration","max","baseParts","gap","indicator","centerComponent","focused","circleRef","useRef","animatedValue","Value","current","trimesterAnimatedValues","Array","map","indicatorCircleRef","tSpanRef","indicatorGap","halfCircle","circleCircumference","Math","PI","rotation","getTrimesterValues","useCallback","progress","getPathValues","progressDelay","animation","animatedVal","toValue","delay","durationValue","timing","useNativeDriver","easing","Easing","linear","useEffect","removeAllListeners","forEach","trimesterAnimatedValue","getMeanGap","pathValues","filter","val","length","runIndicator","calculatedStrokeDashoffset","x","cx","y","cy","getArcEndCoordinates","calculatedProgress","round","setNativeProps","r","children","dx","dy","font","textAnchor","fontSize","run","console","log","trimesterProgressValues","trimesterAnimated","index","addListener","v","strokeDashoffset","value","paintedLength","show","meanGap","trimesterAnimations","sequence","tav","percentageAnim","parallel","start","getTrimester","useMemo","trimesterConfig","stroke","origin","strokeDasharray","_","key","el","useImperativeHandle","styles","memo","forwardRef","StyleSheet","create","height","justifyContent","alignItems"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export const getPathValues = (progress, max, baseParts) => {
2
+ if (!progress) {
3
+ return [...Array(baseParts)].map(() => 0);
4
+ }
5
+ const pathLengths = [];
6
+ if (progress > max) {
7
+ progress = max;
8
+ }
9
+ progress = 100 * progress / max;
10
+ let i = 0;
11
+ while (i < baseParts) {
12
+ const val = progress >= max / baseParts ? max / baseParts : progress;
13
+ pathLengths.push(Number.parseFloat(val.toFixed(4)));
14
+ progress = progress - val;
15
+ i++;
16
+ }
17
+ return pathLengths;
18
+ };
19
+ export const getArcEndCoordinates = function (radius, circleCircumference, cx, cy) {
20
+ let rotation = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
21
+ if (!circleCircumference || !radius || !cx || !cy) {
22
+ return {
23
+ x: 0,
24
+ y: 0
25
+ };
26
+ }
27
+ const θ = circleCircumference / radius + rotation * Math.PI / 180;
28
+ const x = Math.cos(θ) * radius + cx;
29
+ const y = Math.sin(θ) * radius + cy;
30
+ return {
31
+ x,
32
+ y
33
+ };
34
+ };
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPathValues","progress","max","baseParts","Array","map","pathLengths","i","val","push","Number","parseFloat","toFixed","getArcEndCoordinates","radius","circleCircumference","cx","cy","rotation","x","y","θ","Math","PI","cos","sin"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,CAC3BC,QAA4B,EAC5BC,GAAW,EACXC,SAAiB,KACJ;EACb,IAAI,CAACF,QAAQ,EAAE;IACb,OAAO,CAAC,GAAGG,KAAK,CAACD,SAAS,CAAC,CAAC,CAACE,GAAG,CAAC,MAAM,CAAC,CAAC;EAC3C;EAEA,MAAMC,WAAW,GAAG,EAAE;EAEtB,IAAIL,QAAQ,GAAGC,GAAG,EAAE;IAClBD,QAAQ,GAAGC,GAAG;EAChB;EAEAD,QAAQ,GAAI,GAAG,GAAGA,QAAQ,GAAIC,GAAG;EAEjC,IAAIK,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGJ,SAAS,EAAE;IACpB,MAAMK,GAAW,GACfP,QAAQ,IAAIC,GAAG,GAAGC,SAAS,GAAGD,GAAG,GAAGC,SAAS,GAAGF,QAAQ;IAC1DK,WAAW,CAACG,IAAI,CAACC,MAAM,CAACC,UAAU,CAACH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnDX,QAAQ,GAAGA,QAAQ,GAAGO,GAAG;IACzBD,CAAC,EAAE;EACL;EAEA,OAAOD,WAAW;AACpB,CAAC;AAED,OAAO,MAAMO,oBAAoB,GAAG,UAClCC,MAAc,EACdC,mBAA2B,EAC3BC,EAAU,EACVC,EAAU,EAEmB;EAAA,IAD7BC,QAAgB,uEAAG,CAAC;EAEpB,IAAI,CAACH,mBAAmB,IAAI,CAACD,MAAM,IAAI,CAACE,EAAE,IAAI,CAACC,EAAE,EAAE;IACjD,OAAO;MAAEE,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC;EACvB;EAEA,MAAMC,CAAC,GAAGN,mBAAmB,GAAGD,MAAM,GAAII,QAAQ,GAAGI,IAAI,CAACC,EAAE,GAAI,GAAG;EACnE,MAAMJ,CAAC,GAAGG,IAAI,CAACE,GAAG,CAACH,CAAC,CAAC,GAAGP,MAAM,GAAGE,EAAE;EACnC,MAAMI,CAAC,GAAGE,IAAI,CAACG,GAAG,CAACJ,CAAC,CAAC,GAAGP,MAAM,GAAGG,EAAE;EAEnC,OAAO;IAAEE,CAAC;IAAEC;EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,210 @@
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';
3
+ import { Animated, Easing, StyleSheet, View } from 'react-native';
4
+ import Svg, { Circle, G, TSpan } from 'react-native-svg';
5
+ import { getArcEndCoordinates, getPathValues } from './helpers';
6
+ const PercentageCircle = Animated.createAnimatedComponent(Circle);
7
+ const Trimester = Animated.createAnimatedComponent(Circle);
8
+ const Color = {
9
+ Peach: '#ffede1',
10
+ PinkLight: '#F39E93'
11
+ };
12
+ const Chart = (props, ref) => {
13
+ const {
14
+ radius = 100,
15
+ strokeWidth = 10,
16
+ baseColor = Color.Peach,
17
+ progressColor = Color.PinkLight,
18
+ duration = 1200,
19
+ max = 100,
20
+ baseParts = 3,
21
+ gap = 0,
22
+ indicator,
23
+ centerComponent,
24
+ focused
25
+ } = props;
26
+ const circleRef = useRef([]);
27
+ const animatedValue = useRef(new Animated.Value(0)).current;
28
+ const trimesterAnimatedValues = useRef([...Array(baseParts)].map(() => new Animated.Value(0))).current;
29
+ const indicatorCircleRef = useRef(null);
30
+ const tSpanRef = useRef(null);
31
+ const indicatorGap = (indicator === null || indicator === void 0 ? void 0 : indicator.radius) ?? 0;
32
+ const halfCircle = radius + strokeWidth + indicatorGap;
33
+ const circleCircumference = 2 * Math.PI * radius;
34
+ const rotation = -90 + 180 * (gap / 2 / radius) / Math.PI;
35
+ const getTrimesterValues = useCallback(progress => getPathValues(progress, max, baseParts), [baseParts, max]);
36
+ const progressDelay = 10;
37
+ const animation = useCallback((animatedVal, toValue, delay, durationValue) => {
38
+ return Animated.timing(animatedVal, {
39
+ toValue,
40
+ duration: durationValue,
41
+ delay,
42
+ useNativeDriver: true,
43
+ easing: Easing.linear
44
+ });
45
+ }, []);
46
+ useEffect(() => {
47
+ () => {
48
+ animatedValue.removeAllListeners();
49
+ trimesterAnimatedValues.forEach(trimesterAnimatedValue => trimesterAnimatedValue.removeAllListeners());
50
+ };
51
+ }, [animatedValue, trimesterAnimatedValues]);
52
+ const getMeanGap = useCallback(progress => {
53
+ const pathValues = getTrimesterValues(progress);
54
+ return (progress / pathValues.filter(val => val > 0).length || 1) * baseParts * gap / 100;
55
+ }, [getTrimesterValues, baseParts, gap]);
56
+ const runIndicator = useCallback((calculatedStrokeDashoffset, val) => {
57
+ const {
58
+ x: cx,
59
+ y: cy
60
+ } = getArcEndCoordinates(radius, calculatedStrokeDashoffset, halfCircle, halfCircle, rotation);
61
+ if (!calculatedStrokeDashoffset) {
62
+ return;
63
+ }
64
+ const calculatedProgress = `${Math.round(val)}%`;
65
+ if (indicatorCircleRef !== null && indicatorCircleRef !== void 0 && indicatorCircleRef.current && tSpanRef !== null && tSpanRef !== void 0 && tSpanRef.current) {
66
+ //@ts-ignore
67
+ indicatorCircleRef.current.setNativeProps({
68
+ r: (indicator === null || indicator === void 0 ? void 0 : indicator.radius) || 0,
69
+ strokeWidth: (indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth) || 0,
70
+ cx,
71
+ cy
72
+ });
73
+
74
+ //@ts-ignore
75
+ tSpanRef === null || tSpanRef === void 0 ? void 0 : tSpanRef.current.setNativeProps({
76
+ children: calculatedProgress,
77
+ dx: cx,
78
+ dy: cy + 5,
79
+ font: {
80
+ textAnchor: 'middle',
81
+ // fontFamily: Font.CircularMedium,
82
+ fontSize: 18
83
+ }
84
+ });
85
+ }
86
+ }, [radius, halfCircle, rotation, indicator === null || indicator === void 0 ? void 0 : indicator.radius, indicator === null || indicator === void 0 ? void 0 : indicator.strokeWidth]);
87
+ const run = useCallback(_ref => {
88
+ let {
89
+ progress
90
+ } = _ref;
91
+ console.log('Hello');
92
+ const trimesterProgressValues = getTrimesterValues(progress);
93
+ trimesterAnimatedValues.forEach((trimesterAnimated, index) => {
94
+ trimesterAnimated.addListener(v => {
95
+ if (circleRef !== null && circleRef !== void 0 && circleRef.current[index]) {
96
+ var _circleRef$current$in;
97
+ var strokeDashoffset = circleCircumference;
98
+ var val = v.value <= (trimesterProgressValues[index] ?? 0) ? v.value : trimesterProgressValues[index] ?? 0;
99
+ strokeDashoffset = trimesterProgressValues[index] ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
100
+ const paintedLength = circleCircumference - strokeDashoffset - baseParts * (trimesterProgressValues[index] ?? 0) * gap / 100;
101
+
102
+ //@ts-ignore
103
+ 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({
104
+ strokeDashoffset: circleCircumference - paintedLength > circleCircumference ? circleCircumference : circleCircumference - paintedLength
105
+ });
106
+ }
107
+ });
108
+ });
109
+ if (indicator !== null && indicator !== void 0 && indicator.show) {
110
+ animatedValue.addListener(v => {
111
+ var strokeDashoffset = circleCircumference;
112
+ var val = v.value <= progress ? v.value : progress;
113
+ strokeDashoffset = progress ? circleCircumference - circleCircumference * val / 100 : circleCircumference;
114
+ const paintedLength = circleCircumference - strokeDashoffset;
115
+ const meanGap = getMeanGap(progress);
116
+ const calculatedStrokeDashoffset = paintedLength - meanGap;
117
+ runIndicator(calculatedStrokeDashoffset, progress);
118
+ });
119
+ }
120
+
121
+ // Animate trimesters sequentially
122
+ const trimesterAnimations = Animated.sequence(trimesterAnimatedValues.map((tav, index) => animation(tav,
123
+ // Animated value
124
+ trimesterProgressValues[index] ?? 0,
125
+ // To value
126
+ index === 0 ? progressDelay : 0,
127
+ // Delay
128
+ duration * (trimesterProgressValues[index] ?? 0) / max // Duration
129
+ )));
130
+
131
+ if (indicator !== null && indicator !== void 0 && indicator.show) {
132
+ // Animate percentage circle
133
+ const percentageAnim = animation(animatedValue,
134
+ // Animated value
135
+ progress,
136
+ // To value
137
+ progressDelay,
138
+ // Delay
139
+ duration * progress / max // Duration
140
+ );
141
+ // trimester Animations run parallelly with percentage circle
142
+ Animated.parallel([trimesterAnimations, percentageAnim]).start();
143
+ } else {
144
+ trimesterAnimations.start();
145
+ }
146
+ }, [animatedValue, animation, baseParts, circleCircumference, duration, gap, getMeanGap, indicator === null || indicator === void 0 ? void 0 : indicator.show, max, getTrimesterValues, runIndicator, trimesterAnimatedValues]);
147
+ const getTrimester = useMemo(() => {
148
+ const trimesterConfig = {
149
+ stroke: progressColor,
150
+ cx: halfCircle,
151
+ cy: halfCircle,
152
+ r: radius,
153
+ origin: `${halfCircle}, ${halfCircle}`,
154
+ strokeWidth: strokeWidth,
155
+ strokeDasharray: circleCircumference,
156
+ strokeDashoffset: circleCircumference
157
+ };
158
+ return trimesterAnimatedValues.map((_, key) => /*#__PURE__*/React.createElement(Trimester, _extends({
159
+ key: key
160
+ //@ts-ignore
161
+ ,
162
+ ref: el => circleRef.current[key] = el
163
+ }, trimesterConfig, {
164
+ rotation: rotation + key * 360 / baseParts,
165
+ strokeLinecap: "round"
166
+ })));
167
+ }, [baseParts, circleCircumference, halfCircle, progressColor, radius, rotation, strokeWidth, trimesterAnimatedValues]);
168
+ useImperativeHandle(ref, () => ({
169
+ run
170
+ }));
171
+ return /*#__PURE__*/React.createElement(Svg, {
172
+ viewBox: `0 0 ${halfCircle * 2} ${halfCircle * 2}`,
173
+ width: '100%',
174
+ fill: "none",
175
+ height: radius * 2
176
+ }, centerComponent && /*#__PURE__*/React.createElement(View, {
177
+ style: styles.centerComponent
178
+ }, centerComponent), /*#__PURE__*/React.createElement(G, null, [...Array(baseParts)].map((_, key) => {
179
+ return /*#__PURE__*/React.createElement(Circle, {
180
+ key: key,
181
+ cx: halfCircle,
182
+ cy: halfCircle,
183
+ r: radius,
184
+ stroke: baseColor,
185
+ rotation: rotation + key * 360 / baseParts,
186
+ origin: `${halfCircle}, ${halfCircle}`,
187
+ strokeWidth: strokeWidth,
188
+ strokeDasharray: circleCircumference,
189
+ strokeDashoffset: circleCircumference - circleCircumference / baseParts + gap,
190
+ strokeLinecap: "round"
191
+ });
192
+ }), getTrimester, (indicator === null || indicator === void 0 ? void 0 : indicator.show) === true && focused && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PercentageCircle, {
193
+ stroke: progressColor,
194
+ ref: indicatorCircleRef,
195
+ fill: "white"
196
+ }), /*#__PURE__*/React.createElement(TSpan, {
197
+ stroke: progressColor,
198
+ fill: progressColor,
199
+ ref: tSpanRef
200
+ }))));
201
+ };
202
+ export default /*#__PURE__*/memo( /*#__PURE__*/forwardRef(Chart));
203
+ const styles = StyleSheet.create({
204
+ centerComponent: {
205
+ height: '100%',
206
+ justifyContent: 'center',
207
+ alignItems: 'center'
208
+ }
209
+ });
210
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","Animated","Easing","StyleSheet","View","Svg","Circle","G","TSpan","getArcEndCoordinates","getPathValues","PercentageCircle","createAnimatedComponent","Trimester","Color","Peach","PinkLight","Chart","props","ref","radius","strokeWidth","baseColor","progressColor","duration","max","baseParts","gap","indicator","centerComponent","focused","circleRef","animatedValue","Value","current","trimesterAnimatedValues","Array","map","indicatorCircleRef","tSpanRef","indicatorGap","halfCircle","circleCircumference","Math","PI","rotation","getTrimesterValues","progress","progressDelay","animation","animatedVal","toValue","delay","durationValue","timing","useNativeDriver","easing","linear","removeAllListeners","forEach","trimesterAnimatedValue","getMeanGap","pathValues","filter","val","length","runIndicator","calculatedStrokeDashoffset","x","cx","y","cy","calculatedProgress","round","setNativeProps","r","children","dx","dy","font","textAnchor","fontSize","run","console","log","trimesterProgressValues","trimesterAnimated","index","addListener","v","strokeDashoffset","value","paintedLength","show","meanGap","trimesterAnimations","sequence","tav","percentageAnim","parallel","start","getTrimester","trimesterConfig","stroke","origin","strokeDasharray","_","key","el","styles","create","height","justifyContent","alignItems"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const getPathValues: (progress: number | undefined, max: number, baseParts: number) => number[];
2
+ export declare const getArcEndCoordinates: (radius: number, circleCircumference: number, cx: number, cy: number, rotation?: number) => {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,aACA,MAAM,KAChB,MAAM,EAuBR,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,MAAM,uBACO,MAAM,MACvB,MAAM,MACN,MAAM,aACA,MAAM;OACV,MAAM;OAAK,MAAM;CAUxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface IndicatorInterface {
3
+ show?: boolean;
4
+ radius?: number;
5
+ strokeWidth?: number;
6
+ color?: string;
7
+ }
8
+ interface ChartInterface {
9
+ radius?: number;
10
+ strokeWidth?: number;
11
+ baseColor?: string;
12
+ progressColor?: string;
13
+ max?: number;
14
+ baseParts?: number;
15
+ gap?: number;
16
+ centerComponent?: ReactNode;
17
+ indicator?: IndicatorInterface;
18
+ focused?: boolean;
19
+ duration?: number;
20
+ }
21
+ export type RunAnimationHandler = {
22
+ run: ({ progress }: {
23
+ progress: number;
24
+ }) => void;
25
+ };
26
+ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<ChartInterface & React.RefAttributes<RunAnimationHandler>>>;
27
+ export default _default;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,SAAS,EAMV,MAAM,OAAO,CAAC;AAKf,UAAU,kBAAkB;IAC1B,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,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnD,CAAC;;AAgTF,wBAAuC"}