{"version":3,"file":"static/chunks/3106.fd4fc0dfe08e046e.js","mappings":"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","sources":["webpack://_N_E/./src/components/StravaTracker/index.tsx","webpack://_N_E/./src/utils/distanceUtils.ts"],"sourcesContent":["import { type ThemeType } from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\nimport {\n Heading,\n Box,\n ProgressBar,\n Text,\n crukTheme,\n IconFa,\n} from \"@cruk/cruk-react-components\";\nimport { faPenToSquare } from \"@fortawesome/free-solid-svg-icons\";\n\nimport {\n calculatePercentRounded,\n numberWithCommas,\n} from \"@fwa/src/utils/formatUtils\";\n\nimport {\n distanceMetersToUnit,\n targetMetersToUnit,\n} from \"@fwa/src/utils/distanceUtils\";\nimport { type StravaType } from \"@fwa/src/types\";\n\nconst stravaLogo = \"/assets/images/logos/strava-rounded-128.png\";\n\nconst MainWrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`;\n\nconst RowAligned = styled.div<{ theme: ThemeType }>`\n display: flex;\n align-items: center;\n margin-right: ${({ theme }) => theme.spacing.s};\n`;\n\nconst TextWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n position: relative;\n`;\n\nconst StyledLogo = styled.img<{ theme: ThemeType }>`\n border-radius: 50%;\n height: ${({ theme }) => theme.spacing.m};\n width: ${({ theme }) => theme.spacing.m};\n margin-right: ${({ theme }) => theme.spacing.xxs};\n vertical-align: bottom;\n`;\n\nconst FloatingIcon = styled.div`\n position: absolute;\n right: 0;\n`;\n\nexport const StravaTracker = ({\n canEdit,\n strava,\n}: {\n canEdit?: boolean;\n strava: StravaType;\n}) => {\n const { useMetric, totalDistance, targetDistance } = strava;\n const unit = useMetric ? \"km\" : \"miles\";\n\n return (\n \n \n \n \n Strava activity tracker\n \n \n \n \n \n {numberWithCommas(\n distanceMetersToUnit(totalDistance, useMetric),\n )}\n \n {unit}\n \n }\n percentage={\n targetDistance\n ? calculatePercentRounded(\n distanceMetersToUnit(totalDistance, useMetric),\n targetMetersToUnit(targetDistance, useMetric),\n )\n : 0\n }\n isCircular\n />\n {targetDistance ? (\n \n \n {`${calculatePercentRounded(\n distanceMetersToUnit(totalDistance, useMetric),\n targetMetersToUnit(targetDistance, useMetric),\n )}%`}\n \n {` of ${numberWithCommas(\n targetMetersToUnit(targetDistance, useMetric),\n )} ${unit} target`}\n {canEdit && (\n \n \n \n )}\n \n ) : (\n \n {`Distance travelled ${numberWithCommas(\n distanceMetersToUnit(totalDistance, useMetric),\n )} ${unit}`}\n \n )}\n \n \n );\n};\n\nexport default StravaTracker;\n","export const METERS_TO_MILES = 1609.344;\nexport const METERS_TO_KILOMETERS = 1000;\n\n// returns miles or km based on isMetric\n// target is the target distance in meters rounded to 1 decimal place\nexport const targetMetersToUnit = (target: number, isMetric: boolean) => {\n const divisor = isMetric ? METERS_TO_KILOMETERS : METERS_TO_MILES;\n return !target ? 0 : Math.round((target / divisor) * 10) / 10;\n};\n\n// returns miles or km based on isMetric\n// totalDistanceRaw is the total distance in meters rounded down to one decimal place\nexport const distanceMetersToUnit = (\n totalDistanceMeters: number,\n isMetric: boolean,\n) => {\n const distance =\n totalDistanceMeters / (isMetric ? METERS_TO_KILOMETERS : METERS_TO_MILES);\n if (distance < 100) return Math.floor(distance * 10) / 10;\n return Math.floor(distance);\n};\n\n// convert distance from chosen unit to meters\nexport const distanceFromUnitToMeters = (value: number, isMetric: boolean) => {\n const distanceInMeters = Math.round(\n isMetric ? value * METERS_TO_KILOMETERS : value * METERS_TO_MILES,\n );\n // round to 1 decimal place\n const distanceInMetersRounded = Math.round(distanceInMeters * 10) / 10;\n return distanceInMetersRounded;\n};\n"],"names":["MainWrapper","styled","div","RowAligned","theme","spacing","s","TextWrapper","StyledLogo","img","m","xxs","FloatingIcon","StravaTracker","canEdit","strava","useMetric","totalDistance","targetDistance","unit","Box","margin","paddingRight","src","stravaLogo","alt","Heading","h2","marginVertical","textSize","ProgressBar","circleSize","barColor","crukTheme","tokenColors","cyan_900","circleContents","Text","textAlign","marginBottom","marginHorizontal","numberWithCommas","distanceMetersToUnit","percentage","calculatePercentRounded","targetMetersToUnit","isCircular","marginLeft","marginRight","IconFa","faIcon","faPenToSquare","METERS_TO_MILES","target","isMetric","Math","round","METERS_TO_KILOMETERS","divisor","totalDistanceMeters","distance","floor","value","distanceInMeters"],"sourceRoot":"","ignoreList":[]}