UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

55 lines (54 loc) 1.44 kB
"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