@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
55 lines (54 loc) • 1.44 kB
JavaScript
"use client";
//#region packages/@mantine/core/src/components/RingProgress/get-curves/get-curves.ts
function getCurves({ size, thickness, sections, renderRoundedLineCaps, rootColor, sectionGap = 0 }) {
const sum = sections.reduce((acc, current) => acc + current.value, 0);
const accumulated = Math.PI * ((size * .9 - thickness * 2) / 2) * 2;
let offset = accumulated;
const curves = [];
const curvesInOrder = [];
const gapPercentage = sectionGap / 360 * 100;
for (let i = 0; i < sections.length; i += 1) {
const adjustedValue = Math.max(0, sections[i].value - gapPercentage);
curves.push({
sum,
offset,
data: {
...sections[i],
value: adjustedValue
},
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;
}
//#endregion
export { getCurves };
//# sourceMappingURL=get-curves.mjs.map