{"version":3,"sources":["assets/jss/material-dashboard-react.jsx","assets/jss/material-dashboard-react/components/headerStyle.jsx","components/Header/Header.jsx","components/Footer/Footer.jsx","components/Copyright.jsx","components/Serie.jsx","components/TimeSerie.jsx","components/Exercise.jsx","components/Workout.jsx","stubs.js","api.js","views/AddWorkout/AddWorkout.jsx","assets/jss/material-dashboard-react/components/cardStyle.jsx","components/Card/Card.jsx","assets/jss/material-dashboard-react/components/cardHeaderStyle.jsx","components/Card/CardHeader.jsx","assets/jss/material-dashboard-react/components/cardBodyStyle.jsx","components/Card/CardBody.jsx","assets/jss/material-dashboard-react/components/cardFooterStyle.jsx","components/Card/CardFooter.jsx","assets/jss/material-dashboard-react/components/cardIconStyle.jsx","components/Card/CardIcon.jsx","assets/jss/material-dashboard-react/views/dashboardStyle.jsx","views/Summary/Summary.jsx","views/Login/Login.jsx","views/Profile/Profile.jsx","routes/index.jsx","assets/jss/material-dashboard-react/layouts/dashboardStyle.jsx","components/App.jsx","index.js","variables/charts.jsx"],"names":["container","paddingRight","paddingLeft","marginRight","marginLeft","defaultFont","fontFamily","fontWeight","lineHeight","successColor","warningCardHeader","background","boxShadow","successCardHeader","dangerCardHeader","infoCardHeader","primaryCardHeader","roseCardHeader","defaultBoxShadow","margin","paddingTop","borderTop","height","border","borderRadius","padding","transition","title","color","textDecoration","marginTop","marginBottom","minHeight","headerStyle","_theme","appBar","backgroundColor","borderBottom","position","width","zIndex","display","flex","fontSize","textTransform","appResponsive","top","primary","info","success","warning","danger","withStyles","props","classes","appBarClasses","classNames","AppBar","className","Toolbar","Link","href","underline","name","routes","map","prop","path","location","pathname","navbarName","makeBrand","root","bottom","value","BottomNavigation","showLabels","BottomNavigationAction","label","component","RouterLink","to","icon","Icon","textAlign","role","xStyle","Serie","handleTextInputClick","event","target","tagName","select","handleRepetitionsChange","onRepetitionsChange","exerciseId","index","parseInt","handleWeightChange","onWeightChange","parseFloat","handleDoneChange","onDoneChange","checked","progress","this","progressIcon","Grid","spacing","item","xs","TextField","repetitions","onChange","onClick","fullWidth","InputProps","input","inputCenter","type","align","style","endAdornment","InputAdornment","weight","Checkbox","done","Number","toFixed","React","Component","TimeSerie","Exercise","id","series","data","i","Workout","handleClickOpen","setState","open","handleClose","handleAdd","state","exercise","onExerciseAdded","newCurrentAvailableExercises","calcCurrentAvailableExercises","currentAvailableExercises","handleRemove","workout","some","serie","window","confirm","onExerciseRemoved","handleChange","exercises","reduce","acc","concat","typeName","exerciseType","availableExercises","Object","keys","filter","includes","sort","a","b","localeCompare","workoutOrder","date","e1","e2","indexOf","Dialog","disableBackdropClick","disableEscapeKeyDown","onClose","DialogTitle","DialogContent","FormControl","InputLabel","htmlFor","Select","native","Input","k","e","DialogActions","Button","disabled","exerciseData","find","Card","exerciseCard","CardHeader","action","size","CardContent","variant","theme","actions","flexDirection","getRandomExercise","_","times","random","getRandomDiff","STUBS","_body","PULL_UP","PUSH_UP","PLANK","username","Date","toISOString","split","context","body_weight","update_time","now","body","charts","labels","description","single","text","footer","tables","headers","rows","ranking","results","points","email","api","getNewPlan","call","getLatestWorkout","createWorkout","createWorkoutToServer","getStats","getAvailableExercises","getUserInfo","saveUserInfo","userInfo","route","method","process","REACT_APP_APISTUBS","fakeCall","apiCall","requestObject","cors","Accept","Authorization","localStorage","getItem","JSON","stringify","fetch","then","response","json","verb","content","getStub","console","debug","groupCollapsed","groupEnd","Promise","resolve","_reject","setTimeout","LS_WORKOUT","today","createWorkoutFromLatest","apiWorkout","cloneDeep","forEach","it","sortByDone","w1","length","AddWorkout","isSaving","isFetching","updateTime","componentDidUpdate","goToSummary","document","newState","store","every","s","push","reps","newWorkout","r","localWorkout","setItem","parse","p","plan","CircularProgress","bottomButton","cardStyle","card","minWidth","wordWrap","cardPlain","cardProfile","cardChart","children","plain","profile","chart","rest","cardClasses","undefined","cardHeaderStyle","cardHeader","overflow","cardHeaderPlain","cardHeaderStats","cardHeaderIcon","stats","cardHeaderClasses","cardBodyStyle","cardBody","WebkitBoxFlex","cardBodyPlain","cardBodyProfile","cardBodyClasses","cardFooterStyle","cardFooter","justifyContent","alignItems","cardFooterProfile","cardFooterPlain","cardFooterStats","cardFooterChart","cardFooterClasses","cardIconStyle","cardIcon","float","cardIconClasses","dashboardStyle","successText","upArrowCardCategory","cardCategory","cardCategoryWhite","cardTitle","cardTitleWhite","Summary","modal","handleModalOpen","result","modalBody","Table","TableHead","TableRow","TableCell","TableBody","handleModalClose","createAction","navigator","share","shareText","startIcon","url","log","catch","error","MUSCLE_MAP","pecs","obliques","opacity","imgId","workoutMuscles","stat","sm","md","dangerouslySetInnerHTML","__html","muscles","src","table","header","row","j","options","dailySalesChart","listener","animation","Login","handleNameChange","handleLoginClick","alert","preventDefault","handleWeightClick","isNaN","CardActions","feedback_open","handleEmailChange","handleSaveClick","_validateEmail","onFeedbackClosed","test","String","toLowerCase","InputLabelProps","shrink","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","message","SummaryPage","private","AddWorkoutPage","LoginPage","redirect","appStyle","wrapper","PrivateRoute","Route","render","Redirect","switchRoutes","Switch","key","from","App","history","CssBaseline","hist","createBrowserHistory","ReactDOM","Router","getElementById","Chartist","require","lineSmooth","Interpolation","cardinal","tension","low","chartPadding","right","left","draw","element","animate","d","begin","dur","clone","scale","translate","chartRect","easing","Svg","Easing","easeOutQuint","module","exports"],"mappings":"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","file":"static/js/main.17d693c4.chunk.js","sourcesContent":["/*!\n\n =========================================================\n * Material Dashboard React - v1.5.0 based on Material Dashboard - v1.2.0\n =========================================================\n\n * Product Page: http://www.creative-tim.com/product/material-dashboard-react\n * Copyright 2018 Creative Tim (http://www.creative-tim.com)\n * Licensed under MIT (https://github.com/creativetimofficial/material-dashboard-react/blob/master/LICENSE.md)\n\n =========================================================\n\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n */\n\n// ##############################\n// // // Variables - Styles that are used on more than one component\n// #############################\n\nconst drawerWidth = 260;\n\nconst transition = {\n transition: \"all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)\"\n};\n\nconst container = {\n paddingRight: \"15px\",\n paddingLeft: \"15px\",\n marginRight: \"auto\",\n marginLeft: \"auto\"\n};\n\nconst boxShadow = {\n boxShadow:\n \"0 10px 30px -12px rgba(0, 0, 0, 0.42), 0 4px 25px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)\"\n};\n\nconst card = {\n display: \"inline-block\",\n position: \"relative\",\n width: \"100%\",\n margin: \"25px 0\",\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\n borderRadius: \"3px\",\n color: \"rgba(0, 0, 0, 0.87)\",\n background: \"#fff\"\n};\n\nconst defaultFont = {\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n fontWeight: \"300\",\n lineHeight: \"1.5em\"\n};\n\nconst primaryColor = \"#9c27b0\";\nconst warningColor = \"#ff9800\";\nconst dangerColor = \"#f44336\";\nconst successColor = \"#4caf50\";\nconst infoColor = \"#00acc1\";\nconst roseColor = \"#e91e63\";\nconst grayColor = \"#999999\";\n\nconst primaryBoxShadow = {\n boxShadow:\n \"0 12px 20px -10px rgba(156, 39, 176, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(156, 39, 176, 0.2)\"\n};\nconst infoBoxShadow = {\n boxShadow:\n \"0 12px 20px -10px rgba(0, 188, 212, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(0, 188, 212, 0.2)\"\n};\nconst successBoxShadow = {\n boxShadow:\n \"0 12px 20px -10px rgba(76, 175, 80, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(76, 175, 80, 0.2)\"\n};\nconst warningBoxShadow = {\n boxShadow:\n \"0 12px 20px -10px rgba(255, 152, 0, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(255, 152, 0, 0.2)\"\n};\nconst dangerBoxShadow = {\n boxShadow:\n \"0 12px 20px -10px rgba(244, 67, 54, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(244, 67, 54, 0.2)\"\n};\nconst roseBoxShadow = {\n boxShadow: \"0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(233, 30, 99, 0.4)\"\n};\n\nconst warningCardHeader = {\n background: \"linear-gradient(60deg, #ffa726, #fb8c00)\",\n ...warningBoxShadow\n};\nconst successCardHeader = {\n background: \"linear-gradient(60deg, #66bb6a, #43a047)\",\n ...successBoxShadow\n};\nconst dangerCardHeader = {\n background: \"linear-gradient(60deg, #ef5350, #e53935)\",\n ...dangerBoxShadow\n};\nconst infoCardHeader = {\n background: \"linear-gradient(60deg, #26c6da, #00acc1)\",\n ...infoBoxShadow\n};\nconst primaryCardHeader = {\n background: \"linear-gradient(60deg, #ab47bc, #8e24aa)\",\n ...primaryBoxShadow\n};\nconst roseCardHeader = {\n background: \"linear-gradient(60deg, #ec407a, #d81b60)\",\n ...roseBoxShadow\n};\n\nconst cardActions = {\n margin: \"0 20px 10px\",\n paddingTop: \"10px\",\n borderTop: \"1px solid #eeeeee\",\n height: \"auto\",\n ...defaultFont\n};\n\nconst cardHeader = {\n margin: \"-20px 15px 0\",\n borderRadius: \"3px\",\n padding: \"15px\"\n};\n\nconst defaultBoxShadow = {\n border: \"0\",\n borderRadius: \"3px\",\n boxShadow:\n \"0 10px 20px -12px rgba(0, 0, 0, 0.42), 0 3px 20px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)\",\n padding: \"10px 0\",\n transition: \"all 150ms ease 0s\"\n};\n\nconst title = {\n color: \"#3C4858\",\n textDecoration: \"none\",\n fontWeight: \"300\",\n marginTop: \"30px\",\n marginBottom: \"25px\",\n minHeight: \"32px\",\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\n \"& small\": {\n color: \"#777\",\n fontWeight: \"400\",\n lineHeight: \"1\"\n }\n};\n\nconst cardTitle = {\n ...title,\n marginTop: \"0\",\n marginBottom: \"3px\",\n minHeight: \"auto\",\n \"& a\": {\n ...title,\n marginTop: \".625rem\",\n marginBottom: \"0.75rem\",\n minHeight: \"auto\"\n }\n};\n\nconst cardSubtitle = {\n marginTop: \"-.375rem\"\n};\n\nconst cardLink = {\n \"& + $cardLink\": {\n marginLeft: \"1.25rem\"\n }\n};\n\nexport {\n //variables\n drawerWidth,\n transition,\n container,\n boxShadow,\n card,\n defaultFont,\n primaryColor,\n warningColor,\n dangerColor,\n successColor,\n infoColor,\n roseColor,\n grayColor,\n primaryBoxShadow,\n infoBoxShadow,\n successBoxShadow,\n warningBoxShadow,\n dangerBoxShadow,\n roseBoxShadow,\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader,\n cardActions,\n cardHeader,\n defaultBoxShadow,\n title,\n cardTitle,\n cardSubtitle,\n cardLink\n};\n","import {\n container,\n defaultFont,\n primaryColor,\n defaultBoxShadow,\n infoColor,\n successColor,\n warningColor,\n dangerColor\n} from \"assets/jss/material-dashboard-react.jsx\";\n\nconst headerStyle = _theme => ({\n appBar: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n borderBottom: \"0\",\n marginBottom: \"0\",\n position: \"absolute\",\n width: \"100%\",\n paddingTop: \"10px\",\n zIndex: \"1029\",\n color: \"#555555\",\n border: \"0\",\n borderRadius: \"3px\",\n padding: \"10px 0\",\n transition: \"all 150ms ease 0s\",\n minHeight: \"50px\",\n display: \"block\"\n },\n container: {\n ...container,\n minHeight: \"50px\"\n },\n flex: {\n flex: 1\n },\n title: {\n ...defaultFont,\n lineHeight: \"30px\",\n fontSize: \"18px\",\n borderRadius: \"3px\",\n textTransform: \"none\",\n color: \"inherit\",\n margin: \"0\",\n \"&:hover,&:focus\": {\n background: \"transparent\"\n }\n },\n appResponsive: {\n top: \"8px\"\n },\n primary: {\n backgroundColor: primaryColor,\n color: \"#FFFFFF\",\n ...defaultBoxShadow\n },\n info: {\n backgroundColor: infoColor,\n color: \"#FFFFFF\",\n ...defaultBoxShadow\n },\n success: {\n backgroundColor: successColor,\n color: \"#FFFFFF\",\n ...defaultBoxShadow\n },\n warning: {\n backgroundColor: warningColor,\n color: \"#FFFFFF\",\n ...defaultBoxShadow\n },\n danger: {\n backgroundColor: dangerColor,\n color: \"#FFFFFF\",\n ...defaultBoxShadow\n }\n});\n\nexport default headerStyle;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Link from \"@material-ui/core/Link\";\n\nimport headerStyle from \"assets/jss/material-dashboard-react/components/headerStyle.jsx\";\n\nfunction Header({ ...props }) {\n function makeBrand() {\n var name;\n props.routes.map((prop) => {\n if (prop.path === props.location.pathname) {\n name = prop.navbarName;\n }\n return null;\n });\n return name;\n }\n\n const { classes, color } = props;\n const appBarClasses = classNames({\n [\" \" + classes[color]]: color,\n });\n\n return (\n \n \n
\n {/* Here we create navbar brand, based on route name */}\n \n {makeBrand()}\n \n
\n
\n
\n );\n}\n\nHeader.propTypes = {\n classes: PropTypes.object.isRequired,\n color: PropTypes.oneOf([\"primary\", \"info\", \"success\", \"warning\", \"danger\"]),\n routes: PropTypes.array.isRequired,\n location: PropTypes.object.isRequired,\n};\n\nexport default withStyles(headerStyle)(Header);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n\nimport { BottomNavigation } from \"@material-ui/core\";\nimport { BottomNavigationAction } from \"@material-ui/core\";\nimport Icon from \"@material-ui/core/Icon\";\nimport { Link as RouterLink } from \"react-router-dom\";\n\nconst styles = {\n root: {\n width: \"100%\",\n position: \"fixed\",\n bottom: 0,\n zIndex: 99999,\n paddingTop: \"10px\",\n borderTop: \"1px solid #f8f8f8\",\n },\n};\n\nfunction Footer({ ...props }) {\n const { classes } = props;\n const value = props.location.pathname;\n\n return (\n \n trending_up}\n />\n fitness_center}\n />\n person}\n />\n \n );\n}\n\nFooter.propTypes = {\n classes: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n};\n\nexport default withStyles(styles)(Footer);\n","import React from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\nconst styles = {\n container: {\n textAlign: \"center\",\n paddingTop: \"24px\",\n fontSize: \"12px\",\n },\n};\n\nexport default withStyles(styles)(function Copyright(props) {\n const { classes } = props;\n return (\n

\n \n Made with{\" \"}\n \n ❤️\n {\" \"}\n by Aarón &{\" \"}\n Ángel\n \n

\n );\n});\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Icon from \"@material-ui/core/Icon\";\n\nconst styles = () => ({\n inputCenter: {\n textAlign: \"center\",\n },\n});\n\nconst xStyle = {\n padding: \"6px 0 7px\",\n};\n\nclass Serie extends React.Component {\n handleTextInputClick = (event) => {\n if (event.target.tagName === \"INPUT\") {\n event.target.select();\n }\n };\n\n handleRepetitionsChange = (event) => {\n this.props.onRepetitionsChange(this.props.exerciseId, this.props.index, parseInt(event.target.value, 10));\n };\n\n handleWeightChange = (event) => {\n this.props.onWeightChange(this.props.exerciseId, this.props.index, parseFloat(event.target.value));\n };\n\n handleDoneChange = (event) => {\n this.props.onDoneChange(this.props.exerciseId, this.props.index, event.target.checked);\n };\n\n render() {\n const progress = this.props.progress || 0;\n\n const progressIcon =\n progress === 0 ? (\n \"\"\n ) : progress > 0 ? (\n arrow_upward\n ) : (\n arrow_downward\n );\n\n return (\n \n \n \n \n \n
\n ⨯\n
\n
\n \n kg,\n classes: {\n input: this.props.classes.inputCenter,\n },\n }}\n value={this.props.weight}\n onChange={this.handleWeightChange}\n onClick={this.handleTextInputClick}\n fullWidth={true}\n type=\"number\"\n />\n \n \n \n {this.props.done ? progressIcon : \"\"}\n {this.props.done && progress !== 0 ? Number(progress).toFixed(0) + \"%\" : \"\"}\n \n
\n );\n }\n}\n\nSerie.propTypes = {\n classes: PropTypes.object.isRequired,\n repetitions: PropTypes.number.isRequired,\n weight: PropTypes.number.isRequired,\n exerciseId: PropTypes.string,\n index: PropTypes.number,\n onRepetitionsChange: PropTypes.func.isRequired,\n onWeightChange: PropTypes.func.isRequired,\n onDoneChange: PropTypes.func.isRequired,\n progress: PropTypes.number,\n done: PropTypes.bool,\n};\n\nexport default withStyles(styles)(Serie);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Icon from \"@material-ui/core/Icon\";\n\nconst styles = () => ({\n inputCenter: {\n textAlign: \"center\",\n },\n});\n\nclass TimeSerie extends React.Component {\n handleTextInputClick = (event) => {\n if (event.target.tagName === \"INPUT\") {\n event.target.select();\n }\n };\n\n handleRepetitionsChange = (event) => {\n this.props.onRepetitionsChange(this.props.exerciseId, this.props.index, parseInt(event.target.value, 10));\n };\n\n handleWeightChange = (event) => {\n this.props.onWeightChange(this.props.exerciseId, this.props.index, parseFloat(event.target.value));\n };\n\n handleDoneChange = (event) => {\n this.props.onDoneChange(this.props.exerciseId, this.props.index, event.target.checked);\n };\n\n render() {\n const progress = this.props.progress || 0;\n\n const progressIcon =\n progress === 0 ? (\n \"\"\n ) : progress > 0 ? (\n arrow_upward\n ) : (\n arrow_downward\n );\n\n return (\n \n \n min,\n classes: {\n input: this.props.classes.inputCenter,\n },\n }}\n value={this.props.weight}\n onChange={this.handleWeightChange}\n onClick={this.handleTextInputClick}\n fullWidth={true}\n type=\"number\"\n />\n \n \n \n {this.props.done && progress !== 0 ? Number(progress).toFixed(0) + \"%\" : \"\"}\n {this.props.done ? progressIcon : \"\"}\n \n \n );\n }\n}\n\nTimeSerie.propTypes = {\n classes: PropTypes.object.isRequired,\n repetitions: PropTypes.number.isRequired,\n weight: PropTypes.number.isRequired,\n exerciseId: PropTypes.string,\n index: PropTypes.number,\n onRepetitionsChange: PropTypes.func.isRequired,\n onWeightChange: PropTypes.func.isRequired,\n onDoneChange: PropTypes.func.isRequired,\n progress: PropTypes.number,\n done: PropTypes.bool,\n};\n\nexport default withStyles(styles)(TimeSerie);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Serie from \"./Serie.jsx\";\nimport TimeSerie from \"./TimeSerie.jsx\";\n\nclass Exercise extends React.Component {\n render() {\n const { id, type, series, progress } = this.props;\n\n return (\n
\n
\n {series.map((data, i) => {\n return (\n
\n {(() => {\n switch (type) {\n case \"TIME_BASED\":\n case \"CARDIO\":\n return (\n \n );\n default:\n return (\n \n );\n }\n })()}\n
\n );\n })}\n
\n
\n );\n }\n}\n\nExercise.propTypes = {\n classes: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n series: PropTypes.array.isRequired,\n progress: PropTypes.array,\n onRepetitionsChange: PropTypes.func.isRequired,\n onWeightChange: PropTypes.func.isRequired,\n onDoneChange: PropTypes.func.isRequired,\n};\n\nexport default withStyles({})(Exercise);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardHeader from \"@material-ui/core/CardHeader\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Input from \"@material-ui/core/Input\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport LibraryAddIcon from \"@material-ui/icons/LibraryAdd\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n// business components\nimport Exercise from \"./Exercise.jsx\";\n\nconst styles = (theme) => {\n return {\n exerciseCard: {\n margin: `${theme.spacing(1)}px auto`,\n },\n actions: {\n flexDirection: \"row-reverse\",\n },\n };\n};\n\nclass Workout extends React.Component {\n constructor(props) {\n super(props);\n\n const currentAvailableExercises = this.calcCurrentAvailableExercises();\n this.state = {\n open: false,\n exercise: \"\",\n currentAvailableExercises: currentAvailableExercises,\n };\n }\n\n handleClickOpen = () => {\n this.setState({ open: true });\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n handleAdd = () => {\n if (this.state.exercise) {\n this.props.onExerciseAdded(this.state.exercise, 5, 5, 0);\n const newCurrentAvailableExercises = this.calcCurrentAvailableExercises();\n this.setState({\n open: false,\n exercise: \"\",\n currentAvailableExercises: newCurrentAvailableExercises,\n });\n }\n };\n\n handleRemove = (exerciseId, name) => {\n const isSerieEmpty = !this.props.workout[exerciseId].series.some((serie) => serie.done === true);\n if (isSerieEmpty || window.confirm(`Are you sure you want to remove ${name}?`)) {\n this.props.onExerciseRemoved(exerciseId);\n this.setState({\n currentAvailableExercises: this.calcCurrentAvailableExercises(),\n });\n }\n };\n\n handleChange = (event) => {\n this.setState({ exercise: event.target.value });\n };\n\n exercises = () =>\n this.state.currentAvailableExercises.reduce(\n (acc, exercise) => ({\n ...acc,\n [exercise.type]: acc[exercise.type] ? acc[exercise.type].concat([exercise]) : [exercise],\n }),\n {}\n );\n\n typeName = (exerciseType) => {\n switch (exerciseType) {\n case \"CARDIO\":\n return \"Cardio\";\n case \"TIME_BASED\":\n return \"Timed\";\n default:\n return \"Reps\";\n }\n };\n\n calcCurrentAvailableExercises = () => {\n const { workout, availableExercises } = this.props;\n const done = Object.keys(workout);\n let currentAvailableExercises = availableExercises.filter((exercise) => !done.includes(exercise.id));\n currentAvailableExercises.sort((a, b) => a.id.localeCompare(b.id));\n return currentAvailableExercises;\n };\n\n render() {\n const { workout, workoutOrder, availableExercises, date, progress } = this.props;\n let exercises = Object.keys(workout).sort((e1, e2) => {\n return workoutOrder.indexOf(e1) - workoutOrder.indexOf(e2);\n });\n\n return (\n
\n \n Fill the form\n \n
\n \n Exercise\n }\n >\n \n {this.exercises()[k].map((e) => (\n \n ))}\n \n ))}\n \n \n
\n
\n \n \n \n \n
\n\n
{date}
\n\n {exercises.map((exerciseId) => {\n const exerciseData = availableExercises.find(({ id }) => id === exerciseId);\n return (\n \n {\n this.handleRemove(exerciseId, exerciseData.name);\n }}\n >\n \n \n }\n />\n \n \n \n \n );\n })}\n
\n \n
\n
\n );\n }\n}\n\nWorkout.propTypes = {\n classes: PropTypes.object.isRequired,\n workout: PropTypes.object.isRequired,\n workoutOrder: PropTypes.array.isRequired,\n progress: PropTypes.object.isRequired,\n date: PropTypes.string.isRequired,\n availableExercises: PropTypes.array.isRequired,\n onRepetitionsChange: PropTypes.func.isRequired,\n onWeightChange: PropTypes.func.isRequired,\n onDoneChange: PropTypes.func.isRequired,\n onExerciseAdded: PropTypes.func.isRequired,\n onExerciseRemoved: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Workout);\n","import _ from \"lodash\";\n\nconst getRandomExercise = (series = 5) => {\n return {\n series: _.times(series, function () {\n return {\n weight: _.random(100, 150),\n repetitions: 5,\n };\n }),\n };\n};\n\nconst getRandomDiff = (series = 5) => {\n return _.times(series, function () {\n return _.random(-20, 100);\n });\n};\n\nconst STUBS = {\n \"GET_/v0/plan\": (_body) => {\n return {\n exercises: {\n PULL_UP: getRandomExercise(),\n PUSH_UP: getRandomExercise(),\n PLANK: getRandomExercise(),\n },\n };\n },\n \"GET_/v0/workout/latest\": (_body) => {\n return {\n username: \"aaron\",\n date: new Date().toISOString().split(\"T\")[0],\n done: {\n PULL_UP: getRandomExercise(),\n PUSH_UP: getRandomExercise(),\n PLANK: getRandomExercise(),\n },\n context: {\n body_weight: 80,\n },\n update_time: Date.now(),\n progress: {\n PULL_UP: getRandomDiff(),\n PUSH_UP: getRandomDiff(),\n PLANK: getRandomDiff(),\n },\n };\n },\n \"POST_/v0/workout\": (body) => {\n return {\n success: true,\n workout: {\n username: \"aaron\",\n update_time: Date.now(),\n done: { ...body },\n progress: {\n PULL_UP: getRandomDiff(),\n PUSH_UP: getRandomDiff(),\n PLANK: getRandomDiff(),\n },\n },\n };\n },\n \"GET_/v0/stats\": (_body) => {\n return {\n charts: [\n {\n title: \"Overall\",\n data: {\n labels: [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"],\n series: [[12, 17, 7, 17, 23, 18, 38]],\n description: \"Bla bla bla...\",\n },\n },\n {\n title: \"Squats\",\n data: {\n labels: [\"T\", \"E\", \"S\", \"T\", \"I\", \"N\", \"G\"],\n series: [[12, 17, 7, 17, 23, 18, 90]],\n description: \"Ble ble ble...\",\n },\n },\n ],\n single: [\n {\n icon: \"check_circle\",\n title: \"Strike\",\n value: \"0\",\n description: \"Bli bli bli\",\n action: { text: \"Go!\", to: \"/new-workout\" },\n footer: \"Blu blu blu\",\n },\n ],\n tables: [\n {\n title: \"Today's TOP 🔝\",\n headers: [\"Name\", \"Magic Points\"],\n rows: [\n [\"aaron\", \"13000\"],\n [\"angel\", \"5000\"],\n [\"rafa\", \"1000\"],\n ],\n description: \"Show must go on!\",\n },\n ],\n ranking: {\n title: \"Daily Ranking 🔝\",\n description: \"Show must go on!\",\n results: [\n {\n name: \"aaron\",\n points: 1000,\n workout: {\n PULL_UP: getRandomExercise(),\n PUSH_UP: getRandomExercise(),\n PLANK: getRandomExercise(),\n },\n },\n {\n name: \"angel\",\n points: 5000,\n workout: {\n PULL_UP: getRandomExercise(),\n PUSH_UP: getRandomExercise(),\n PLANK: getRandomExercise(),\n },\n },\n {\n name: \"rafa\",\n points: 1000,\n workout: {\n PULL_UP: getRandomExercise(),\n PUSH_UP: getRandomExercise(),\n PLANK: getRandomExercise(),\n },\n },\n ],\n },\n };\n },\n \"GET_/v0/exercises\": (_body) => [\n { id: \"PULL_UP\", name: \"Frendly Pull Up\", type: \"DEFAULT\" },\n { id: \"PUSH_UP\", name: \"Flexion\", type: \"DEFAULT\" },\n { id: \"PLANK\", name: \"Plancha bonita\", type: \"TIME_BASED\" },\n { id: \"SIDE_PLANK\", name: \"Side Plank\", type: \"TIME_BASED\" },\n ],\n \"GET_/v0/users/me\": (_body) => {\n return {\n username: \"aaron\",\n body_weight: 78,\n email: \"aaron@test.com\",\n };\n },\n \"POST_/v0/users/me\": (_body) => {\n return {\n success: true,\n };\n },\n};\n\nexport function getStub(method, verb, body) {\n return STUBS[verb + \"_\" + method](body);\n}\n","import _ from \"lodash\";\nimport { getStub } from \"stubs\";\n\nconst api = {\n getNewPlan: () => call(\"/v0/plan\", \"GET\", null),\n getLatestWorkout: () => call(\"/v0/workout/latest\", \"GET\", null),\n createWorkout: (workout) => call(\"/v0/workout\", \"POST\", createWorkoutToServer(workout)),\n getStats: () => call(\"/v0/stats\", \"GET\", null),\n getAvailableExercises: () => call(\"/v0/exercises\", \"GET\", null),\n getUserInfo: () => call(\"/v0/users/me\", \"GET\", null),\n saveUserInfo: (userInfo) => call(\"/v0/users/me\", \"POST\", userInfo),\n};\n\nconst createWorkoutToServer = (workout) => {\n for (var exercise in workout.done) {\n workout.done[exercise].series = workout.done[exercise].series\n .filter((serie) => serie.done)\n .map((serie) => ({\n repetitions: serie.repetitions,\n weight: serie.weight,\n }));\n }\n return workout;\n};\n\nconst call = (route, method, body) => {\n return process.env.REACT_APP_APISTUBS === \"true\" ? fakeCall(route, method, body) : apiCall(route, method, body);\n};\n\nconst apiCall = (route, method, body) => {\n // TODO Handle body\n const requestObject = {\n method: method,\n cors: \"cors\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: localStorage.getItem(\"user_session\"), // TODO Clean this user_session retrieval\n },\n };\n if (body) {\n requestObject.body = JSON.stringify(body);\n }\n return fetch(process.env.REACT_APP_APIURL + route, requestObject).then((response) => {\n return response.json();\n });\n};\n\nconst fakeCall = (method, verb, body) => {\n let content = getStub(method, verb, body);\n\n console.debug(\n \"%c\" + verb + \"%c\" + method,\n \"background-color: #8080ff; font-weight: bold; border-radius: 4px; padding: 0px 2px; margin-right: 4px;\",\n \"\"\n );\n console.groupCollapsed(\"Response\");\n console.debug(JSON.stringify(content, null, 2));\n console.groupEnd();\n\n return new Promise(function (resolve, _reject) {\n setTimeout(() => resolve(content), _.random(100, 2000));\n });\n};\n\nexport default api;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport _ from \"lodash\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Workout from \"components/Workout.jsx\";\nimport api from \"api\";\n\nconst LS_WORKOUT = \"tmpWorkout\";\n\nconst today = () => new Date().toISOString().split(\"T\")[0];\n\nconst createWorkoutFromPlan = (plan) => {\n return _.cloneDeep(plan.exercises);\n};\n\nconst createWorkoutFromLatest = (apiWorkout) => {\n let workout = _.cloneDeep(apiWorkout);\n for (const exercise in workout) {\n workout[exercise].series.forEach((it) => {\n it.done = true;\n });\n }\n return workout;\n};\n\nconst sortByDone = (workout) => {\n return (e1, e2) => {\n let w1 = workout[e1].series.filter((it) => it.done === true).length;\n let w2 = workout[e2].series.filter((it) => it.done === true).length;\n return w2 - w1;\n };\n};\n\nclass AddWorkout extends React.Component {\n state = {\n isSaving: false,\n isFetching: true,\n workout: null,\n workoutOrder: null,\n availableExercises: null,\n date: today(),\n progress: {},\n updateTime: null,\n };\n\n componentDidMount() {\n api.getAvailableExercises().then((availableExercises) => {\n this.setState({ availableExercises: availableExercises });\n });\n\n // Read workout from local storage\n let localWorkout = localStorage.getItem(LS_WORKOUT);\n if (localWorkout !== null) {\n localWorkout = JSON.parse(localWorkout);\n if (localWorkout?.date !== today()) {\n localWorkout = null;\n } else {\n this.setState({\n workout: localWorkout.done,\n workoutOrder: Object.keys(localWorkout.done).sort(sortByDone(localWorkout.done)),\n updateTime: localWorkout.update_time,\n });\n }\n }\n\n api.getLatestWorkout().then((apiWorkout) => {\n if (this.state.workout === null && apiWorkout === null) {\n api.getNewPlan().then((p) => {\n this.setState({ workout: createWorkoutFromPlan(p), workoutOrder: Object.keys(p.exercises) });\n });\n } else if (\n apiWorkout !== null &&\n (this.state.workout === null || this.state.updateTime < apiWorkout.update_time)\n ) {\n this.setState({\n workout: createWorkoutFromLatest(apiWorkout.done),\n workoutOrder: Object.keys(apiWorkout.done),\n progress: apiWorkout.progress,\n updateTime: apiWorkout.update_time,\n });\n }\n });\n }\n\n componentDidUpdate = () => {\n const isFetching = this.state.workout === null || this.state.availableExercises === null;\n\n if (isFetching !== this.state.isFetching) {\n this.setState({ isFetching: isFetching });\n }\n };\n\n goToSummary = () => {\n document.location = \"/summary\";\n };\n\n onRepetitionsChange = (exercise, index, repetitions) => {\n var newState = { ...this.state };\n\n // Always update the serie at index\n newState.workout[exercise].series[index].repetitions = repetitions;\n\n // Update also future series not completed yet\n newState.workout[exercise].series.forEach((serie, i) => {\n if (i > index && !serie.done) {\n serie.repetitions = repetitions;\n }\n });\n this.store(newState);\n };\n\n onWeightChange = (exercise, index, weight) => {\n var newState = { ...this.state };\n\n // Always update the serie at index\n newState.workout[exercise].series[index].weight = weight;\n\n // Update also future series not completed yet\n newState.workout[exercise].series.forEach((serie, i) => {\n if (i > index && !serie.done) {\n serie.weight = weight;\n }\n });\n this.store(newState);\n };\n\n onDoneChange = (exercise, index, done) => {\n var newState = { ...this.state };\n let series = newState.workout[exercise].series;\n series[index].done = done;\n if (series.every((s) => s.done)) {\n series.push({ ...series[series.length - 1], done: false });\n }\n newState.workoutOrder.sort(sortByDone(newState.workout));\n this.store(newState);\n };\n\n onExerciseAdded = (exercise, series, reps, weight) => {\n var newState = { ...this.state };\n if (!(exercise in newState.workout)) {\n newState.workout[exercise] = {\n series: _.times(series, function () {\n return {\n weight: weight,\n repetitions: reps,\n };\n }),\n };\n newState.workoutOrder.push(exercise);\n }\n // TODO shoudln't be necessary to post api, as it only changes the plan\n this.store(newState);\n };\n\n onExerciseRemoved = (exercise) => {\n var newState = { ...this.state };\n if (exercise in newState.workout) {\n delete newState.workout[exercise];\n newState.workoutOrder = newState.workoutOrder.filter((it) => it !== exercise);\n }\n this.store(newState);\n };\n\n store = (newState) => {\n this.setState(newState);\n this.setState({ isSaving: true });\n\n let newWorkout = {\n done: _.cloneDeep(this.state.workout),\n date: newState.date,\n };\n\n api.createWorkout(newWorkout).then((r) => {\n let localWorkout = {\n done: newState.workout,\n date: newState.date,\n update_time: r.workout.update_time,\n };\n localStorage.setItem(LS_WORKOUT, JSON.stringify(localWorkout));\n\n this.setState({\n progress: r.workout.progress,\n updateTime: r.workout.update_time,\n isSaving: false,\n });\n });\n };\n\n render() {\n const { isFetching, workout, workoutOrder, progress, date, availableExercises } = this.state;\n return isFetching ? (\n
\n \n
\n ) : (\n
\n
\n \n
\n
\n );\n }\n}\n\nAddWorkout.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles({\n bottomButton: { textAlign: \"center\", marginTop: \"50px\" },\n})(AddWorkout);\n","const cardStyle = {\n card: {\n border: \"0\",\n marginBottom: \"30px\",\n marginTop: \"30px\",\n borderRadius: \"6px\",\n color: \"rgba(0, 0, 0, 0.87)\",\n background: \"#fff\",\n width: \"100%\",\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: \"0\",\n wordWrap: \"break-word\",\n fontSize: \".875rem\"\n },\n cardPlain: {\n background: \"transparent\",\n boxShadow: \"none\"\n },\n cardProfile: {\n marginTop: \"30px\",\n textAlign: \"center\"\n },\n cardChart: {\n \"& p\": {\n marginTop: \"0px\",\n paddingTop: \"0px\"\n }\n }\n};\n\nexport default cardStyle;\n","import React from \"react\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n// @material-ui/icons\n\n// core components\nimport cardStyle from \"assets/jss/material-dashboard-react/components/cardStyle.jsx\";\n\nfunction Card({ ...props }) {\n const { classes, className, children, plain, profile, chart, ...rest } = props;\n const cardClasses = classNames({\n [classes.card]: true,\n [classes.cardPlain]: plain,\n [classes.cardProfile]: profile,\n [classes.cardChart]: chart,\n [className]: className !== undefined,\n });\n return (\n
\n {children}\n
\n );\n}\n\nCard.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n chart: PropTypes.bool,\n};\n\nexport default withStyles(cardStyle)(Card);\n","import {\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader\n} from \"assets/jss/material-dashboard-react.jsx\";\nconst cardHeaderStyle = {\n cardHeader: {\n padding: \"0.75rem 1.25rem\",\n marginBottom: \"0\",\n borderBottom: \"none\",\n background: \"transparent\",\n zIndex: \"3 !important\",\n \"&$cardHeaderPlain,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\n margin: \"0 15px\",\n padding: \"0\",\n position: \"relative\",\n color: \"#FFFFFF\"\n },\n \"&:first-child\": {\n borderRadius: \"calc(.25rem - 1px) calc(.25rem - 1px) 0 0\"\n },\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\n \"&:not($cardHeaderIcon)\": {\n borderRadius: \"3px\",\n marginTop: \"-20px\",\n padding: \"15px\"\n }\n },\n \"&$cardHeaderStats svg\": {\n fontSize: \"36px\",\n lineHeight: \"56px\",\n textAlign: \"center\",\n width: \"36px\",\n height: \"36px\",\n margin: \"10px 10px 4px\"\n },\n \"&$cardHeaderStats i,&$cardHeaderStats .material-icons\": {\n fontSize: \"36px\",\n lineHeight: \"56px\",\n width: \"56px\",\n height: \"56px\",\n textAlign: \"center\",\n overflow: \"unset\",\n marginBottom: \"1px\"\n },\n \"&$cardHeaderStats$cardHeaderIcon\": {\n textAlign: \"right\"\n }\n },\n cardHeaderPlain: {\n marginLeft: \"0px !important\",\n marginRight: \"0px !important\"\n },\n cardHeaderStats: {\n \"& $cardHeaderIcon\": {\n textAlign: \"right\"\n },\n \"& h1,& h2,& h3,& h4,& h5,& h6\": {\n margin: \"0 !important\"\n }\n },\n cardHeaderIcon: {\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\n background: \"transparent\",\n boxShadow: \"none\"\n },\n \"& i,& .material-icons\": {\n width: \"33px\",\n height: \"33px\",\n textAlign: \"center\",\n lineHeight: \"33px\"\n },\n \"& svg\": {\n width: \"24px\",\n height: \"24px\",\n textAlign: \"center\",\n lineHeight: \"33px\",\n margin: \"5px 4px 0px\"\n }\n },\n warningCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...warningCardHeader\n }\n },\n successCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...successCardHeader\n }\n },\n dangerCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...dangerCardHeader\n }\n },\n infoCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...infoCardHeader\n }\n },\n primaryCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...primaryCardHeader\n }\n },\n roseCardHeader: {\n color: \"#FFFFFF\",\n \"&:not($cardHeaderIcon)\": {\n ...roseCardHeader\n }\n }\n};\n\nexport default cardHeaderStyle;\n","import React from \"react\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n// @material-ui/icons\n\n// core components\nimport cardHeaderStyle from \"assets/jss/material-dashboard-react/components/cardHeaderStyle.jsx\";\n\nfunction CardHeader({ ...props }) {\n const { classes, className, children, color, plain, stats, icon, ...rest } = props;\n const cardHeaderClasses = classNames({\n [classes.cardHeader]: true,\n [classes[color + \"CardHeader\"]]: color,\n [classes.cardHeaderPlain]: plain,\n [classes.cardHeaderStats]: stats,\n [classes.cardHeaderIcon]: icon,\n [className]: className !== undefined,\n });\n return (\n
\n {children}\n
\n );\n}\n\nCardHeader.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n color: PropTypes.oneOf([\"warning\", \"success\", \"danger\", \"info\", \"primary\", \"rose\"]),\n plain: PropTypes.bool,\n stats: PropTypes.bool,\n icon: PropTypes.bool,\n};\n\nexport default withStyles(cardHeaderStyle)(CardHeader);\n","const cardBodyStyle = {\n cardBody: {\n padding: \"0.9375rem 20px\",\n flex: \"1 1 auto\",\n WebkitBoxFlex: \"1\",\n position: \"relative\"\n },\n cardBodyPlain: {\n paddingLeft: \"5px\",\n paddingRight: \"5px\"\n },\n cardBodyProfile: {\n marginTop: \"15px\"\n }\n};\n\nexport default cardBodyStyle;\n","import React from \"react\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n// @material-ui/icons\n\n// core components\nimport cardBodyStyle from \"assets/jss/material-dashboard-react/components/cardBodyStyle.jsx\";\n\nfunction CardBody({ ...props }) {\n const { classes, className, children, plain, profile, ...rest } = props;\n const cardBodyClasses = classNames({\n [classes.cardBody]: true,\n [classes.cardBodyPlain]: plain,\n [classes.cardBodyProfile]: profile,\n [className]: className !== undefined,\n });\n return (\n
\n {children}\n
\n );\n}\n\nCardBody.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n};\n\nexport default withStyles(cardBodyStyle)(CardBody);\n","const cardFooterStyle = {\n cardFooter: {\n padding: \"0\",\n paddingTop: \"10px\",\n margin: \"0 15px 10px\",\n borderRadius: \"0\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n display: \"flex\",\n backgroundColor: \"transparent\",\n border: \"0\"\n },\n cardFooterProfile: {\n marginTop: \"-15px\"\n },\n cardFooterPlain: {\n paddingLeft: \"5px\",\n paddingRight: \"5px\",\n backgroundColor: \"transparent\"\n },\n cardFooterStats: {\n borderTop: \"1px solid #eee\",\n marginTop: \"20px\",\n \"& svg\": {\n position: \"relative\",\n top: \"4px\",\n marginRight: \"3px\",\n marginLeft: \"3px\",\n width: \"16px\",\n height: \"16px\"\n },\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\n fontSize: \"16px\",\n position: \"relative\",\n top: \"4px\",\n marginRight: \"3px\",\n marginLeft: \"3px\"\n }\n },\n cardFooterChart: {\n borderTop: \"1px solid #eee\"\n }\n};\n\nexport default cardFooterStyle;\n","import React from \"react\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n// @material-ui/icons\n\n// core components\nimport cardFooterStyle from \"assets/jss/material-dashboard-react/components/cardFooterStyle.jsx\";\n\nfunction CardFooter({ ...props }) {\n const { classes, className, children, plain, profile, stats, chart, ...rest } = props;\n const cardFooterClasses = classNames({\n [classes.cardFooter]: true,\n [classes.cardFooterPlain]: plain,\n [classes.cardFooterProfile]: profile,\n [classes.cardFooterStats]: stats,\n [classes.cardFooterChart]: chart,\n [className]: className !== undefined,\n });\n return (\n
\n {children}\n
\n );\n}\n\nCardFooter.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n stats: PropTypes.bool,\n chart: PropTypes.bool,\n};\n\nexport default withStyles(cardFooterStyle)(CardFooter);\n","import {\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader\n} from \"assets/jss/material-dashboard-react.jsx\";\nconst cardIconStyle = {\n cardIcon: {\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\n borderRadius: \"3px\",\n backgroundColor: \"#999\",\n padding: \"15px\",\n marginTop: \"-20px\",\n marginRight: \"15px\",\n float: \"left\"\n }\n },\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader\n};\n\nexport default cardIconStyle;\n","import React from \"react\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\n// @material-ui/icons\n\n// core components\nimport cardIconStyle from \"assets/jss/material-dashboard-react/components/cardIconStyle.jsx\";\n\nfunction CardIcon({ ...props }) {\n const { classes, className, children, color, ...rest } = props;\n const cardIconClasses = classNames({\n [classes.cardIcon]: true,\n [classes[color + \"CardHeader\"]]: color,\n [className]: className !== undefined,\n });\n return (\n
\n {children}\n
\n );\n}\n\nCardIcon.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n color: PropTypes.oneOf([\"warning\", \"success\", \"danger\", \"info\", \"primary\", \"rose\"]),\n};\n\nexport default withStyles(cardIconStyle)(CardIcon);\n","import { successColor } from \"assets/jss/material-dashboard-react.jsx\";\n\nconst dashboardStyle = {\n successText: {\n color: successColor\n },\n upArrowCardCategory: {\n width: \"16px\",\n height: \"16px\"\n },\n stats: {\n color: \"#999999\",\n display: \"inline-flex\",\n fontSize: \"12px\",\n lineHeight: \"22px\",\n \"& svg\": {\n top: \"4px\",\n width: \"16px\",\n height: \"16px\",\n position: \"relative\",\n marginRight: \"3px\",\n marginLeft: \"3px\"\n },\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\n top: \"4px\",\n fontSize: \"16px\",\n position: \"relative\",\n marginRight: \"3px\",\n marginLeft: \"3px\"\n }\n },\n cardCategory: {\n color: \"#999999\",\n margin: \"0\",\n fontSize: \"14px\",\n marginTop: \"0\",\n paddingTop: \"10px\",\n marginBottom: \"0\"\n },\n cardCategoryWhite: {\n color: \"rgba(255,255,255,.62)\",\n margin: \"0\",\n fontSize: \"14px\",\n marginTop: \"0\",\n marginBottom: \"0\"\n },\n cardTitle: {\n color: \"#3C4858\",\n marginTop: \"0px\",\n minHeight: \"auto\",\n fontWeight: \"300\",\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\n marginBottom: \"3px\",\n textDecoration: \"none\",\n \"& small\": {\n color: \"#777\",\n fontWeight: \"400\",\n lineHeight: \"1\"\n }\n },\n cardTitleWhite: {\n color: \"#FFFFFF\",\n marginTop: \"0px\",\n minHeight: \"auto\",\n fontWeight: \"300\",\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\n marginBottom: \"3px\",\n textDecoration: \"none\",\n \"& small\": {\n color: \"#777\",\n fontWeight: \"400\",\n lineHeight: \"1\"\n }\n }\n};\n\nexport default dashboardStyle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n// react plugin for creating charts\nimport ChartistGraph from \"react-chartist\";\n// @material-ui/core\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport CardContent from \"@material-ui/core/CardContent\";\n// @material-ui/icons\nimport Icon from \"@material-ui/core/Icon\";\n// core components\nimport Card from \"components/Card/Card.jsx\";\nimport CardHeader from \"components/Card/CardHeader.jsx\";\nimport CardBody from \"components/Card/CardBody.jsx\";\nimport CardFooter from \"components/Card/CardFooter.jsx\";\nimport CardIcon from \"components/Card/CardIcon.jsx\";\nimport { Link as RouterLink } from \"react-router-dom\";\n\nimport api from \"api\";\n\nimport { dailySalesChart } from \"variables/charts.jsx\";\n\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\n\nclass Summary extends React.Component {\n state = {\n isFetching: true,\n data: {},\n modal: {\n open: false,\n title: \"\",\n body: \"\",\n },\n };\n\n componentDidMount() {\n api.getStats().then((response) => {\n this.setState({ data: response, isFetching: false });\n });\n }\n\n handleModalOpen = (name) => {\n const result = this.state.data.ranking.results.find((e) => e.name === name);\n\n const modalBody = (\n \n \n \n Exercise\n Series\n \n \n \n {Object.keys(result.workout)\n .filter((exercise) => result.workout[exercise].series.length > 0)\n .map((exercise, i) => {\n return (\n \n {exercise}\n \n {result.workout[exercise].series.map((serie, i) => {\n return (\n
\n {serie.repetitions}⨯{serie.weight}\n
\n );\n })}\n
\n
\n );\n })}\n
\n
\n );\n\n this.setState({\n modal: {\n ...this.state.modal,\n open: true,\n title: name + \" Weekly Workout\",\n body: modalBody,\n },\n });\n };\n\n handleModalClose = () => {\n this.setState({\n modal: { ...this.state.modal, open: false },\n });\n };\n\n createAction = (action) => {\n switch (action.type) {\n case \"nav\":\n return (\n \n );\n case \"share\":\n return navigator.share ? (\n this.share(action.shareText)}\n startIcon={share}\n size=\"small\"\n >\n {action.text}\n \n ) : (\n
\n );\n default:\n return
;\n }\n };\n\n share = (text) => {\n if (navigator.share) {\n navigator\n .share({\n text: text,\n url: \"https://gogympal.com/\",\n })\n .then(() => console.log(\"Successful share\"))\n .catch((error) => console.log(\"Error sharing\", error));\n }\n };\n\n MUSCLE_MAP = {\n \"traps-a\": null,\n \"traps-b\": null,\n \"shoulders-a\": \"SHOULDERS\",\n \"shoulders-b\": \"SHOULDERS\",\n pecs: \"CHEST\",\n \"biceps-a\": \"BICEPS\",\n \"biceps-b\": \"BICEPS\",\n \"forearm-a\": null,\n \"forearm-b\": null,\n obliques: \"ABS\",\n \"quads-a\": \"QUADS\",\n \"quads-b\": \"QUADS\",\n \"calves-a\": null,\n \"calves-b\": null,\n \"back-traps-a\": \"BACK\",\n \"back-traps-b\": \"BACK\",\n \"back-shoulders-a\": \"SHOULDERS\",\n \"back-shoulders-b\": \"SHOULDERS\",\n \"triceps-a\": \"TRICEPS\",\n \"triceps-b\": \"TRICEPS\",\n \"back-lats-a\": \"LATS\",\n \"back-lats-b\": \"LATS\",\n \"back-lower\": \"BACK\",\n \"back-forearms-a\": null,\n \"back-forearms-b\": null,\n \"back-glutes\": null,\n \"back-hamstrings-a\": \"QUADS\",\n \"back-hamstrings-b\": \"QUADS\",\n \"back-calves-a\": null,\n \"back-calves-b\": null,\n };\n\n opacity = (imgId, workoutMuscles) => {\n let points = workoutMuscles[this.MUSCLE_MAP[imgId]];\n if (!points) {\n return \"no-exercise\";\n } else if (points < 1000) {\n return \"low-exercise\";\n } else if (points < 3000) {\n return \"medium-exercise\";\n } else if (points < 5000) {\n return \"high-exercise\";\n }\n };\n\n render() {\n const { classes } = this.props;\n const { isFetching, data, modal } = this.state;\n return isFetching ? (\n
\n \n
\n ) : (\n
\n \n {data.single &&\n data.single.map((stat) => {\n return (\n \n \n \n \n {stat.icon}\n \n

{stat.title}

\n

{stat.value}

\n
\n \n {stat.description && (\n
\n \n
\n )}\n {stat.muscles && (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n )}\n
\n \n
{stat.footer}
\n {stat.action && this.createAction(stat.action)}\n
\n
\n
\n );\n })}\n\n {data.ranking && (\n \n \n {data.ranking.title}\n \n \n \n \n Name\n Points\n \n \n \n {data.ranking.results.map((result, i) => {\n return (\n this.handleModalOpen(result.name)}>\n \n {i + 1}. {result.name}{\" \"}\n {i === 0 && (\n \n 🏆\n \n )}\n \n {result.points}\n \n );\n })}\n \n
\n
\n \n
{data.ranking.description}
\n
\n
\n \n {modal.title}\n {modal.body}\n \n \n \n \n
\n )}\n {data.tables &&\n data.tables.map((table) => {\n return (\n \n \n {table.title}\n \n \n \n \n {table.headers.map((header, i) => {\n return {header};\n })}\n \n \n \n {table.rows.map((row, i) => {\n return (\n \n {row.map((value, j) => {\n return {value};\n })}\n \n );\n })}\n \n
\n
\n \n
{table.description}
\n
\n
\n
\n );\n })}\n {data.charts &&\n data.charts.map((chart) => {\n return (\n \n \n \n \n \n \n

{chart.title}

\n

\n {/*\n 1%\n {\" \"}\n increase in last workout.*/}\n

\n
\n \n
{chart.description}
\n
\n
\n
\n );\n })}\n
\n
\n );\n }\n}\n\nSummary.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(dashboardStyle)(Summary);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n// @material-ui/core\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Icon from \"@material-ui/core/Icon\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardActions from \"@material-ui/core/CardActions\";\nimport TextField from \"@material-ui/core/TextField\";\n\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\n\nclass Login extends React.Component {\n state = {\n name: localStorage.getItem(\"user_session\"),\n body_weight: localStorage.getItem(\"body_weight\"),\n };\n\n handleNameChange = (event) => {\n this.setState({ ...this.state, name: event.target.value });\n };\n handleWeightChange = (event) => {\n this.setState({ ...this.state, body_weight: event.target.value });\n };\n\n handleLoginClick = (event) => {\n if (this.state.name !== null) {\n localStorage.setItem(\"user_session\", this.state.name);\n window.location = \"/summary\";\n } else {\n alert(\"Say your name!\");\n }\n event.preventDefault();\n };\n\n handleWeightClick = (event) => {\n if (this.state.body_weight !== null) {\n let weight = parseFloat(this.state.body_weight);\n if (!isNaN(weight)) {\n localStorage.setItem(\"body_weight\", weight);\n } else {\n alert(\"Invalid\");\n }\n } else {\n alert(\"Put your weight!\");\n }\n event.preventDefault();\n };\n\n render() {\n const { classes } = this.props;\n return (\n
\n \n \n \n What is your name?\n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nLogin.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(dashboardStyle)(Login);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n// @material-ui/core\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Icon from \"@material-ui/core/Icon\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardHeader from \"@material-ui/core/CardHeader\";\nimport Button from \"@material-ui/core/Button\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\n\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\nimport api from \"api\";\nimport { CardActions } from \"@material-ui/core\";\n\nclass Login extends React.Component {\n state = {\n isFetching: true,\n isSaving: false,\n userInfo: null,\n username: localStorage.getItem(\"user_session\"),\n body_weight: localStorage.getItem(\"body_weight\"),\n feedback_open: false,\n email: null,\n };\n\n componentDidMount() {\n // Retrieve user info\n api.getUserInfo().then((userInfo) => {\n this.setState({ ...this.state, userInfo: userInfo });\n if (userInfo.body_weight != null) {\n this.setState({ ...this.state, body_weight: userInfo.body_weight });\n }\n if (userInfo.email != null) {\n this.setState({ ...this.state, email: userInfo.email });\n }\n });\n }\n\n componentDidUpdate = () => {\n const isFetching = this.state.userInfo === null;\n if (isFetching !== this.state.isFetching) {\n this.setState({ ...this.state, isFetching: isFetching });\n }\n };\n\n handleWeightChange = (event) => {\n this.setState({ ...this.state, body_weight: event.target.value });\n };\n\n handleEmailChange = (event) => {\n this.setState({ ...this.state, email: event.target.value });\n };\n\n _validateEmail(email) {\n // eslint-disable-next-line\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n handleSaveClick = (event) => {\n this.setState({ ...this.state, isSaving: true });\n\n event.preventDefault();\n\n let userInfo = { username: this.state.username };\n if (this.state.body_weight !== null) {\n let weight = parseFloat(this.state.body_weight);\n if (!isNaN(weight)) {\n userInfo.body_weight = weight;\n } else {\n alert(\"Invalid weight value\");\n return;\n }\n } else {\n alert(\"Put your weight!\");\n return;\n }\n\n if (this.state.email !== null) {\n let email = this.state.email;\n if (this._validateEmail(email)) {\n userInfo.email = email;\n } else {\n alert(\"Invalid email value\");\n return;\n }\n } else {\n alert(\"Add your email!\");\n }\n\n api.saveUserInfo(userInfo).then((_) => {\n this.setState({ ...this.state, isSaving: false, feedback_open: true });\n });\n };\n\n onFeedbackClosed = () => {\n this.setState({ ...this.state, feedback_open: false });\n };\n\n render() {\n const { classes } = this.props;\n return this.state.isFetching ? (\n
\n \n
\n ) : (\n
\n \n \n \n {this.state.username}'s profile\n \n Kg,\n }}\n InputLabelProps={{ shrink: this.state.body_weight != null }}\n />\n \n \n\n \n \n save\n  Save\n \n \n \n \n \n \n
\n );\n }\n}\n\nLogin.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(dashboardStyle)(Login);\n","// core components/views\nimport AddWorkoutPage from \"views/AddWorkout/AddWorkout.jsx\";\nimport SummaryPage from \"views/Summary/Summary.jsx\";\nimport LoginPage from \"views/Login/Login.jsx\";\nimport ProfilePage from \"views/Profile/Profile.jsx\";\n\nconst routes = [\n {\n path: \"/summary\",\n navbarName: \"Summary\",\n icon: \"poll\",\n component: SummaryPage,\n private: true,\n },\n {\n path: \"/new-workout\",\n navbarName: \"New Workout\", // Used to put title in page header\n icon: \"add_box\",\n component: AddWorkoutPage,\n private: true,\n },\n {\n path: \"/login\",\n navbarName: \"Login\",\n component: LoginPage,\n },\n {\n path: \"/profile\",\n navbarName: \"Profile\",\n icon: \"person\",\n component: ProfilePage,\n private: true,\n },\n {\n path: \"/\",\n redirect: true,\n navbarName: \"Redirect\",\n to: \"/summary\",\n },\n {\n path: \"/dashboard\",\n redirect: true,\n navbarName: \"Redirect\",\n to: \"/summary\",\n },\n];\n\nexport default routes;\n","import { container } from \"assets/jss/material-dashboard-react.jsx\";\n\nconst appStyle = _theme => ({\n wrapper: {\n position: \"relative\",\n top: \"0\",\n height: \"100vh\"\n },\n content: {\n marginTop: \"70px\",\n padding: \"30px 0px\",\n minHeight: \"calc(100vh - 123px)\"\n },\n container,\n map: {\n marginTop: \"70px\"\n }\n});\n\nexport default appStyle;\n","/* eslint-disable */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Switch, Route, Redirect } from \"react-router-dom\";\n// creates a beautiful scrollbar\nimport \"perfect-scrollbar/css/perfect-scrollbar.css\";\n// @material-ui/core components\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\n// core components\nimport Header from \"components/Header/Header.jsx\";\nimport Footer from \"components/Footer/Footer.jsx\";\nimport Copyright from \"components/Copyright.jsx\";\n\nimport routes from \"routes/index.jsx\";\n\nimport dashboardStyle from \"assets/jss/material-dashboard-react/layouts/dashboardStyle.jsx\";\n\nconst PrivateRoute = ({ component: Component, ...rest }) => (\n \n localStorage.getItem(\"user_session\") !== null ? : \n }\n />\n);\n\nconst switchRoutes = (\n \n {routes.map((prop, key) => {\n if (prop.redirect) {\n return ;\n }\n if (prop.private) {\n return ;\n }\n // Public\n return } key={key} />;\n })}\n \n);\n\nclass App extends React.Component {\n componentDidUpdate(e) {\n if (e.history.location.pathname !== e.location.pathname) {\n localStorage.setItem(\"current_path\", e.history.location.pathname);\n }\n }\n\n render() {\n const { classes, ...rest } = this.props;\n return (\n
\n \n
\n
\n
{switchRoutes}
\n \n
\n
\n
\n
\n
\n );\n }\n}\n\nApp.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(dashboardStyle)(App);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"components/App.jsx\";\nimport { createBrowserHistory } from \"history\";\nimport { Router, Route, Switch } from \"react-router-dom\";\n\nimport \"assets/css/material-dashboard-react.css?v=1.5.0\";\n\nconst hist = createBrowserHistory();\n\nReactDOM.render(\n // TODO Make App the root component. Has dependancy with Sidebar and Dashboard (history.location) components\n \n \n } />\n \n ,\n document.getElementById(\"root\")\n);\n","// ##############################\n// // // javascript library for creating charts\n// #############################\nvar Chartist = require(\"chartist\");\n\n// ##############################\n// // // variables used to create animation on charts\n// #############################\nvar delays = 80,\n durations = 500;\n\n// ##############################\n// // // Daily Sales\n// #############################\n\nconst dailySalesChart = {\n data: {\n labels: [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"],\n series: [[12, 17, 7, 17, 23, 18, 38]],\n },\n options: {\n lineSmooth: Chartist.Interpolation.cardinal({\n tension: 0,\n }),\n low: 0,\n // TODO @aaron high: 50, // creative tim: we recommend you to set the high sa the biggest value + something for a better look\n chartPadding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n },\n // for animation\n animation: {\n draw: function (data) {\n if (data.type === \"line\" || data.type === \"area\") {\n data.element.animate({\n d: {\n begin: 600,\n dur: 700,\n from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),\n to: data.path.clone().stringify(),\n easing: Chartist.Svg.Easing.easeOutQuint,\n },\n });\n } else if (data.type === \"point\") {\n data.element.animate({\n opacity: {\n begin: (data.index + 1) * delays,\n dur: durations,\n from: 0,\n to: 1,\n easing: \"ease\",\n },\n });\n }\n },\n },\n};\n\nmodule.exports = {\n dailySalesChart,\n};\n"],"sourceRoot":""}