@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.
- package/LICENSE +674 -0
- package/README.md +6 -0
- package/lib/commonjs/helpers/index.js +43 -0
- package/lib/commonjs/helpers/index.js.map +1 -0
- package/lib/commonjs/index.js +219 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/helpers/index.js +35 -0
- package/lib/module/helpers/index.js.map +1 -0
- package/lib/module/index.js +210 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/helpers/index.d.ts +6 -0
- package/lib/typescript/helpers/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +28 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +162 -0
- package/src/helpers/index.ts +46 -0
- package/src/index.tsx +351 -0
|
@@ -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"}
|