@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
34 lines (32 loc) • 1.17 kB
JavaScript
'use client';
function getCurves({
size,
thickness,
sections,
renderRoundedLineCaps,
rootColor
}) {
const sum = sections.reduce((acc, current) => acc + current.value, 0);
const accumulated = Math.PI * ((size * 0.9 - thickness * 2) / 2) * 2;
let offset = accumulated;
const curves = [];
const curvesInOrder = [];
for (let i = 0; i < sections.length; i += 1) {
curves.push({ sum, offset, data: sections[i], root: false });
offset -= sections[i].value / 100 * accumulated;
}
curves.push({ sum, offset, data: { color: rootColor }, root: true });
curvesInOrder.push({ ...curves[curves.length - 1], lineRoundCaps: false });
if (curves.length > 2) {
curvesInOrder.push({ ...curves[0], lineRoundCaps: renderRoundedLineCaps });
curvesInOrder.push({ ...curves[curves.length - 2], lineRoundCaps: renderRoundedLineCaps });
for (let i = 1; i <= curves.length - 3; i += 1) {
curvesInOrder.push({ ...curves[i], lineRoundCaps: false });
}
} else {
curvesInOrder.push({ ...curves[0], lineRoundCaps: renderRoundedLineCaps });
}
return curvesInOrder;
}
export { getCurves };
//# sourceMappingURL=get-curves.mjs.map