{"version":3,"file":"get-curves.cjs","sources":["../../../../src/components/RingProgress/get-curves/get-curves.ts"],"sourcesContent":["import type { RaikouColor } from '../../../core';\n\ninterface CurveData extends React.ComponentPropsWithRef<'circle'> {\n  value: number;\n  color: RaikouColor;\n  tooltip?: React.ReactNode;\n}\n\ninterface RootCurveData extends React.ComponentPropsWithRef<'circle'> {\n  color?: RaikouColor;\n}\n\ninterface GetCurves {\n  sections: CurveData[];\n  size: number;\n  thickness: number;\n  renderRoundedLineCaps: boolean | undefined;\n  rootColor?: RaikouColor;\n}\n\ninterface Curve {\n  sum: number;\n  offset: number;\n  root: boolean;\n  data: CurveData | RootCurveData;\n  lineRoundCaps?: boolean;\n}\n\nexport function getCurves({\n  size,\n  thickness,\n  sections,\n  renderRoundedLineCaps,\n  rootColor,\n}: GetCurves) {\n  const sum = sections.reduce((acc, current) => acc + current.value, 0);\n  const accumulated = Math.PI * ((size * 0.9 - thickness * 2) / 2) * 2;\n  let offset = accumulated;\n  const curves: Curve[] = [];\n  const curvesInOrder: Curve[] = [];\n\n  for (let i = 0; i < sections.length; i += 1) {\n    curves.push({ sum, offset, data: sections[i], root: false });\n    offset -= (sections[i].value / 100) * accumulated;\n  }\n\n  curves.push({ sum, offset, data: { color: rootColor }, root: true });\n\n  // Reorder curves to layer appropriately and selectively set caps to round\n\n  curvesInOrder.push({ ...curves[curves.length - 1], lineRoundCaps: false });\n  if (curves.length > 2) {\n    curvesInOrder.push({ ...curves[0], lineRoundCaps: renderRoundedLineCaps });\n    curvesInOrder.push({ ...curves[curves.length - 2], lineRoundCaps: renderRoundedLineCaps });\n    for (let i = 1; i <= curves.length - 3; i += 1) {\n      curvesInOrder.push({ ...curves[i], lineRoundCaps: false });\n    }\n  } else {\n    curvesInOrder.push({ ...curves[0], lineRoundCaps: renderRoundedLineCaps });\n  }\n\n  return curvesInOrder;\n}\n"],"names":[],"mappings":";;AA4BO,SAAS,SAAU,CAAA;AAAA,EACxB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF,CAAc,EAAA;AACZ,EAAM,MAAA,GAAA,GAAM,SAAS,MAAO,CAAA,CAAC,KAAK,OAAY,KAAA,GAAA,GAAM,OAAQ,CAAA,KAAA,EAAO,CAAC,CAAA;AACpE,EAAA,MAAM,cAAc,IAAK,CAAA,EAAA,IAAA,CAAO,OAAO,GAAM,GAAA,SAAA,GAAY,KAAK,CAAK,CAAA,GAAA,CAAA;AACnE,EAAA,IAAI,MAAS,GAAA,WAAA;AACb,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,MAAM,gBAAyB,EAAC;AAEhC,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,QAAS,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAC3C,IAAO,MAAA,CAAA,IAAA,CAAK,EAAE,GAAA,EAAK,MAAQ,EAAA,IAAA,EAAM,SAAS,CAAC,CAAA,EAAG,IAAM,EAAA,KAAA,EAAO,CAAA;AAC3D,IAAA,MAAA,IAAW,QAAS,CAAA,CAAC,CAAE,CAAA,KAAA,GAAQ,GAAO,GAAA,WAAA;AAAA;AAGxC,EAAO,MAAA,CAAA,IAAA,CAAK,EAAE,GAAA,EAAK,MAAQ,EAAA,IAAA,EAAM,EAAE,KAAA,EAAO,SAAU,EAAA,EAAG,IAAM,EAAA,IAAA,EAAM,CAAA;AAInE,EAAc,aAAA,CAAA,IAAA,CAAK,EAAE,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,EAAG,aAAe,EAAA,KAAA,EAAO,CAAA;AACzE,EAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,IAAc,aAAA,CAAA,IAAA,CAAK,EAAE,GAAG,MAAA,CAAO,CAAC,CAAG,EAAA,aAAA,EAAe,uBAAuB,CAAA;AACzE,IAAc,aAAA,CAAA,IAAA,CAAK,EAAE,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,EAAG,aAAe,EAAA,qBAAA,EAAuB,CAAA;AACzF,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,IAAK,OAAO,MAAS,GAAA,CAAA,EAAG,KAAK,CAAG,EAAA;AAC9C,MAAc,aAAA,CAAA,IAAA,CAAK,EAAE,GAAG,MAAA,CAAO,CAAC,CAAG,EAAA,aAAA,EAAe,OAAO,CAAA;AAAA;AAC3D,GACK,MAAA;AACL,IAAc,aAAA,CAAA,IAAA,CAAK,EAAE,GAAG,MAAA,CAAO,CAAC,CAAG,EAAA,aAAA,EAAe,uBAAuB,CAAA;AAAA;AAG3E,EAAO,OAAA,aAAA;AACT;;;;"}