{"version":3,"sources":["components/Layout/Theme/Color/RL_Blue.js","components/Layout/Theme/styles.js","components/Layout/Theme/ThemeLayout.jsx","components/Information/info.svg","state/store.js","components/Information/styles.js","components/Information/Information.jsx","components/Question/styles.js","components/Question/Question.jsx","components/Result/styles.js","components/Result/Result.jsx","components/Main/styles.js","components/Main/index.js","components/Main/MainPage.jsx","App.js","serviceWorker.js","index.js"],"names":["Object","defineProperty","exports","value","default","_default","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","theme","createTheme","palette","type","primary","RL_Blue","secondary","colors","lightBlue","text","socondary","typography","fontFamily","join","fontSize","responsiveFontSizes","useStyle","makeStyles","root","backgroundColor","common","white","color","MaterialLayout","props","children","classes","ThemeProvider","CssBaseline","className","_path","_circle","questionData","window","DataQuestions","resultData","DataProducts","initialState","questions","answers","loading","productFound","productResult","currentQuestion","globalState","cloneDeep","Context","createContext","Provider","reducer","state","action","payload","Actions","answer_insert","splice","questionIndex","answerIndex","answer_reset","product_found","question_set_all","question_set_current","result","filter","array","Answers","findIndex","item","_","isEqual","index","e","Id","length","ResultProximity","CheckProximityResult","product","isLastIndex","Error","StateProvider","useReducer","dispatch","question","modifiedAnswers","Options","_excluded","_extends","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","title","createElement","width","fill","height","viewBox","ref","d","stroke","strokeWidth","cx","cy","r","ForwardRef","forwardRef","fontWeight","display","marginTop","description","infoIcon","margin","infoPane","padding","Information","useContext","informations","Info","useStyles","Box","map","information","Typography","Title","Description","mainline","textAlign","subline","buttons","button","radio","options","option","alignItems","marginBottom","Question","Statement","currentQuestionIndex","handleClick","nextIndex","currentAnswer","useEffect","questionBox","current","scroll","useRef","FormControl","component","variant","MainLine","SubLine","RadioGroup","aria-label","name","Text","selectedValue","onChange","event","find","optionIndex","answer","handleChange","FormControlLabel","control","Radio","label","Button","disabled","onClick","cards","justifyContent","flexFlow","gap","card","boxShadow","flex","border","transform","cardArea","perspective","transformStyle","h5","header","h3","explanation","listItem","marginLeft","borderRadius","resetButtonContainer","resetButton","image","zIndex","transition","Result","products","undefined","Card","CardActionArea","open","Url","CardMedia","ImageUrl","alt","Code","CardContent","Explanation","split","match","line","xmlns","strokeLinecap","strokeLinejoin","sx","questionContainer","gridArea","main","informationContainer","layout","breakpoints","down","up","grid","gridGap","gridTemplateRows","gridTemplateAreas","gridTemplateColumns","MainPage","resultContainer","App","Main","Boolean","location","hostname","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.26296962.chunk.js","sourcesContent":["Object.defineProperty(exports, \"__esModule\", {\r\n  value: true\r\n});\r\nexports.default = void 0;\r\nvar color = {\r\n  50: '#fafafa',\r\n  100: '#04001F',\r\n  200: '#000025',\r\n  300: '#00052A',\r\n  400: '#000E30',\r\n  500: '#001935',\r\n  600: '#00263A',\r\n  700: '#335F63',\r\n  800: '#668B82',\r\n  900: '#99B2A5',\r\n  A100: '#04001F',\r\n  A200: '#000E30',\r\n  A400: '#335F63',\r\n  A700: '#99B2A5'\r\n};\r\nvar _default = color;\r\nexports.default = _default;","import { colors } from '@material-ui/core';\r\nimport {\r\n  createTheme, makeStyles, responsiveFontSizes\r\n} from '@material-ui/core/styles';\r\nimport RL_Blue from './Color/RL_Blue';\r\n\r\n\r\n\r\nlet theme = createTheme({\r\n  palette: {\r\n    type: 'light',\r\n    primary: RL_Blue,\r\n    secondary: colors.lightBlue,\r\n    text: {\r\n      primary: '#fff',\r\n      socondary: '#245f91'\r\n    }\r\n  },\r\n  typography: {\r\n    fontFamily: [\r\n      '\"Segoe UI\"',\r\n      'Roboto',\r\n      '\"Helvetica Neue\"',\r\n      'sans-serif',\r\n      '\"Segoe UI Emoji\"',\r\n      '\"Segoe UI Symbol\"',\r\n      '-apple-system',\r\n      'BlinkMacSystemFont',\r\n    ].join(','),\r\n    fontSize: 18\r\n  }\r\n});\r\n\r\ntheme = responsiveFontSizes(theme);\r\n\r\nconst useStyle = makeStyles(() => ({\r\n  root: {\r\n    backgroundColor: theme.palette.common.white,\r\n    color: theme.palette.text.primary\r\n  }\r\n}));\r\n\r\nexport { theme, useStyle };\r\n\r\n","import { CssBaseline } from '@material-ui/core';\r\nimport { ThemeProvider } from '@material-ui/core/styles';\r\nimport React from 'react';\r\n// import Header from './Header';\r\n// import Footer from './Footer';\r\nimport { theme, useStyle } from './styles';\r\n\r\n\r\nexport default function MaterialLayout(props) {\r\n  const { children } = props;\r\n  const classes = useStyle();\r\n\r\n  return (\r\n    <ThemeProvider theme={theme}>\r\n      <CssBaseline />\r\n      {/* <Header /> */}\r\n      <div className={classes.root}>\r\n        {children}\r\n      </div>\r\n      {/* <Footer /> */}\r\n    </ThemeProvider>\r\n  );\r\n}\r\n","var _path, _circle;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgInfo = function SvgInfo(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 30,\n    fill: \"#245f91\",\n    height: 30,\n    viewBox: \"0 0 20 20\",\n    ref: svgRef\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z\"\n  })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n    fill: \"none\",\n    stroke: \"#245f91\",\n    strokeWidth: 1.1,\n    cx: 10,\n    cy: 10,\n    r: 9\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgInfo, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/info.542a349a.svg\";\nexport { ForwardRef as ReactComponent };","import _, { cloneDeep } from 'lodash';\r\nimport React, { createContext, useReducer } from 'react';\r\n\r\nconst questionData = window.DataQuestions;\r\nconst resultData = window.DataProducts;\r\n\r\nconst initialState = {\r\n    questions: questionData,\r\n    answers: [null, null, null, null, null, null, null],\r\n    loading: false,\r\n    productFound: false,\r\n    productResult: [],\r\n    currentQuestion: questionData[0]\r\n}\r\n\r\nlet globalState = cloneDeep(initialState);\r\nconst Context = createContext(globalState);\r\nconst { Provider } = Context;\r\n\r\n\r\nconst reducer = (state, action) => {\r\n    const { type, payload } = action;\r\n    // console.log(action);\r\n    switch (type) {\r\n        case Actions.answer_insert:\r\n            state.answers.splice((payload.questionIndex), 1, payload.answerIndex);\r\n            return { ...state, answers: state.answers };\r\n\r\n        case Actions.answer_reset:\r\n            return cloneDeep(initialState);\r\n\r\n        case Actions.product_found:\r\n            return { ...state, productFound: payload === true }\r\n\r\n        case Actions.question_set_all:\r\n            return { ...state, questions: payload }\r\n\r\n        case Actions.question_set_current:\r\n\r\n            let result = resultData.filter(array => array.Answers.findIndex(item => _.isEqual(item, state.answers)) > -1);\r\n            if (payload.index >= state.questions.findIndex(e => e.Id === state.currentQuestion.Id)\r\n                && result.length < 1 \r\n                && state.currentQuestion.ResultProximity)\r\n                result = CheckProximityResult(state.currentQuestion, state.answers);\r\n\r\n\r\n            let product = state.productResult;\r\n            let isLastIndex = payload.index === state.questions.length;\r\n\r\n\r\n            if (result.length > 0) {\r\n                isLastIndex = true;\r\n                product = result;\r\n            }\r\n\r\n            return {\r\n                ...state,\r\n                currentQuestion: state.questions[payload.index],\r\n                productFound: isLastIndex,\r\n                productResult: product\r\n            }\r\n\r\n        default:\r\n            throw new Error('Action not found!');\r\n    }\r\n}\r\n\r\nconst StateProvider = ({ children }) => {\r\n    const [state, dispatch] = useReducer(reducer, globalState);\r\n\r\n    return (\r\n        <Provider value={[state, dispatch]}>\r\n            {children}\r\n        </Provider>\r\n    );\r\n}\r\n\r\n\r\nconst Actions = {\r\n    answer_insert: 'ANSWER_INSERT',\r\n    answer_reset: 'ANSWER_RESET',\r\n    loading: 'SET_LOADING',\r\n    product_found: 'SET_PRODUCT_FOUND',\r\n    question_set_current: 'QUESTION_SET_CURRENT',\r\n    question_set_all: 'QUESTION_SET_ALL',\r\n}\r\n\r\nconst CheckProximityResult = (question, answers) => {\r\n\r\n    const index = questionData.findIndex(e => e.Id === question.Id);\r\n    let answerIndex = answers[index];\r\n    let modifiedAnswers = cloneDeep(answers);\r\n    let result = [];\r\n\r\n    while (result.length < 1 && answerIndex < question.Options.length) {\r\n        answerIndex++;\r\n        modifiedAnswers[index] = answerIndex;\r\n        result = resultData.filter(array => array.Answers.findIndex(item => _.isEqual(item, modifiedAnswers)) > -1);\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nexport { Actions, Context, StateProvider };\r\n\r\n","import { makeStyles } from '@material-ui/core/styles';\r\nexport default makeStyles(theme => ({\r\n  title: {\r\n    fontSize: '0.96em',\r\n    fontWeight: '780',\r\n    display: 'block',\r\n    color: '#245f91',\r\n    marginTop: '2em',\r\n\r\n  },\r\n  description: {\r\n    fontSize: '0.9em',\r\n    fontWeight: '300'\r\n  },\r\n  infoIcon: {\r\n    margin:'2em 0 0 2em'\r\n  },\r\n  infoPane: {\r\n    padding: '0 2em 3em 2em ',\r\n    color: '#245f91'\r\n  }\r\n}));\r\n","import {\r\n  Box, Typography\r\n} from '@material-ui/core';\r\nimport React, { useContext } from 'react';\r\nimport { Context } from '../../state/store';\r\nimport { ReactComponent as InfoIcon } from \"./info.svg\";\r\nimport useStyles from './styles';\r\n\r\nexport default function Information() {\r\n  const [state] = useContext(Context);\r\n  const informations = state.currentQuestion.Info;\r\n  const classes = useStyles();\r\n\r\n\r\n  return (\r\n    <Box>\r\n      <Box className={classes.infoIcon}><InfoIcon /></Box>\r\n      <Box className={classes.infoPane}>\r\n        {informations.map((information, index) =>\r\n          <Box key={index}>\r\n            <Typography className={classes.title}>{information.Title.length > 0 ? information.Title + ' : ' : ''}</Typography>\r\n            <Typography className={classes.description}>{information.Description ?? null}</Typography>\r\n          </Box>\r\n        )}\r\n      </Box>\r\n    </Box>\r\n  );\r\n}\r\n","import { makeStyles } from '@material-ui/core/styles';\r\nexport default makeStyles(theme => ({\r\n  mainline: {\r\n    textAlign: 'left'\r\n  },\r\n  subline: {\r\n    textAlign: 'left'\r\n  },\r\n  buttons: {\r\n    margin: '2em',\r\n    textAlign: 'center'\r\n  },\r\n  button: {\r\n    padding: '1em 2em'\r\n  },\r\n  radio: {\r\n    color: 'white'\r\n  },\r\n  options: {\r\n    marginTop: '2em'\r\n  },\r\n  option: {\r\n    textAlign: 'left',\r\n    alignItems: 'center',\r\n    marginBottom: '0.5em'\r\n  }\r\n}));\r\n","import {\r\n    Box, Button, FormControl,\r\n    FormControlLabel,\r\n    Radio,\r\n    RadioGroup, Typography\r\n} from '@material-ui/core';\r\nimport React, { useContext, useEffect, useRef } from 'react';\r\nimport { Actions, Context } from '../../state/store';\r\nimport useStyles from './styles';\r\n\r\nexport default function Question(props) {\r\n    const classes = useStyles();\r\n    const [state, dispatch] = useContext(Context);\r\n    const { Id, Statement, Options } = state.currentQuestion;\r\n    const currentQuestionIndex = state.questions.findIndex(e => e.Id === Id);\r\n\r\n\r\n    const selectedValue = () => {\r\n        const currentAnswer = state.answers[currentQuestionIndex] ?? null;\r\n        if (currentAnswer !== null)\r\n            return Options[currentAnswer].Text;\r\n\r\n        return '';\r\n    }\r\n\r\n    const handleClick = (nextIndex) => {\r\n        const currentAnswer = state.answers[currentQuestionIndex] ?? null;\r\n        if (nextIndex > currentQuestionIndex && currentAnswer === null)\r\n            return;\r\n        dispatch({ type: Actions.question_set_current, payload: { index: nextIndex } });\r\n    }\r\n\r\n    const handleChange = (event) => {\r\n        const option = Options.find(e => e.Text === event.target.value);\r\n        const optionIndex = Options.findIndex(e => e.Text === event.target.value);\r\n        dispatch({\r\n            type: Actions.answer_insert,\r\n            payload: { questionIndex: currentQuestionIndex, answerIndex: optionIndex, answer: option }\r\n        });\r\n    };\r\n\r\n    useEffect(() => questionBox.current.scroll(0, 0),[]);\r\n    const questionBox = useRef();\r\n\r\n\r\n    return (\r\n        <Box ref={questionBox}>\r\n            <FormControl component=\"fieldset\">\r\n                <Typography component=\"h1\" variant=\"h4\" className={classes.mainline}>\r\n                    {Statement.MainLine}\r\n                </Typography>\r\n                <Typography component=\"div\" className={classes.subline}>\r\n                    {Statement.SubLine}\r\n                </Typography>\r\n                <RadioGroup\r\n                    aria-label=\"options\"\r\n                    className={classes.options}\r\n                    name=\"controlled-radio-buttons-group\"\r\n                    value={selectedValue()}\r\n                    onChange={event => handleChange(event)}\r\n                >\r\n                    {Options.map(option =>\r\n                        <FormControlLabel className={classes.option} key={option.Id} value={option.Text} control={<Radio className={classes.radio} />} label={option.Text} />\r\n                    )}\r\n                </RadioGroup>\r\n            </FormControl>\r\n            <Box className={classes.buttons}>\r\n                <Button\r\n                    disabled={currentQuestionIndex === 0}\r\n                    onClick={() => handleClick((currentQuestionIndex - 1))}\r\n                    className={classes.button}>\r\n                    Back\r\n                </Button>\r\n                <Button\r\n                    variant=\"contained\"\r\n                    onClick={() => handleClick((currentQuestionIndex + 1))}\r\n                    className={classes.button}>\r\n                    {currentQuestionIndex === state.questions.length - 1 ? 'Submit' : 'Continue'}\r\n                </Button>\r\n            </Box>\r\n        </Box>\r\n    );\r\n}\r\n","import { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst smallBreak = \"@media (max-width:640px)\";\r\nconst midBreak = \"@media (min-width:640px)\";\r\nconst largeBreak = \"@media (min-width:1750px)\";\r\n\r\nexport default makeStyles(theme => ({\r\n\r\n    cards: {\r\n        display: 'flex',\r\n        justifyContent: 'center',\r\n        flexFlow: 'row wrap',\r\n        [midBreak]: {\r\n            gap: '2em'\r\n        },\r\n        [largeBreak]: {\r\n            gap: '5em'\r\n        },\r\n    },\r\n    card: {\r\n        boxShadow: '0 10px 20px 0 rgba(0,0,0,0.2)',\r\n        [smallBreak]: {\r\n            flex: '0 100%',\r\n            padding: '2em',\r\n        },\r\n        [midBreak]: {\r\n            flex: '0 45%',\r\n            padding: '2em',\r\n        },\r\n        [largeBreak]: {\r\n            flex: '0 48%',\r\n            padding: '5em',\r\n        },\r\n        '&:hover': {\r\n            '& $button': {\r\n                border: '2px solid black',\r\n            },\r\n            '& $image': {\r\n                transform: 'scale(1.1)',\r\n            }\r\n        },\r\n        overflow: 'unset',\r\n    },\r\n    cardArea: {\r\n        perspective: '2000px',\r\n        transformStyle: 'preserve-3d',\r\n    },\r\n    description: {\r\n        color: 'black',\r\n        marginBottom: '1em',\r\n        fontSize: theme.typography.h5.fontSize\r\n    },\r\n    header: {\r\n        textAlign: 'center',\r\n        color: 'black',\r\n        marginBottom: '1em',\r\n        fontSize: theme.typography.h3.fontSize\r\n    },\r\n    explanation: {\r\n        color: '#666666',\r\n        marginBottom: '0.5em'\r\n    },\r\n    listItem: {\r\n        marginLeft: '1em'\r\n    },\r\n    button: {\r\n        marginTop: '2em',\r\n        backgroundColor: 'transparent',\r\n        color: '#363636',\r\n        border: '2px solid #edecec',\r\n        borderRadius: '5px',\r\n        textAlign: 'center',\r\n        padding: '1em'\r\n    },\r\n    resetButtonContainer: {\r\n        textAlign: 'center',\r\n        marginTop: '3em'\r\n    },\r\n    resetButton: {\r\n        padding: '1em 5em',\r\n    },\r\n    image: {\r\n        zIndex: 2,\r\n        transition: 'all 0.75s ease-out',\r\n    }\r\n\r\n}));\r\n","import {\r\n    Box, Button, Card, CardActionArea, CardContent, CardMedia, Typography\r\n} from '@material-ui/core';\r\nimport React, { useContext } from 'react';\r\nimport { Actions, Context } from '../../state/store';\r\nimport useStyles from './styles';\r\n\r\nexport default function Result(props) {\r\n    const classes = useStyles();\r\n    const [state, dispatch] = useContext(Context);\r\n    const products = state.productResult;\r\n\r\n    return (\r\n\r\n        <Box>\r\n            <Typography component=\"div\" className={classes.header}>Based on your answers, we recommend:</Typography>\r\n            <Box className={classes.cards}>\r\n                {products !== undefined && products.length > 0\r\n                    ? (products.map(product =>\r\n                        <Card\r\n                            key={product.Id}\r\n                            className={classes.card}>\r\n                            <CardActionArea\r\n                                onClick={() => window.open(product.Url, '_blank')}\r\n                                className={classes.cardArea}>\r\n                                <CardMedia\r\n                                    component=\"img\"\r\n                                    className={classes.image}\r\n                                    image={product.ImageUrl}\r\n                                    alt={product.Code}\r\n                                />\r\n                                <CardContent>\r\n                                    <Typography component=\"div\" className={classes.description}>\r\n                                        {product.Description}\r\n                                    </Typography>\r\n                                    {product.Explanation\r\n                                        .split(/\\n/g)\r\n                                        .filter(item => item.match(/\\w/g))\r\n                                        .map((line, index) =>\r\n                                            <Typography key={index} component=\"div\" className={classes.explanation}>\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\r\n                                                    <path fill=\"none\" stroke=\"#4d4d4d\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"3\" d=\"M2.5 8.7L8.4 16 18.5 4.5\"></path>\r\n                                                </svg>\r\n                                                <Typography variant=\"body2\" component=\"span\" className={classes.listItem}>\r\n                                                    {line}\r\n                                                </Typography>\r\n                                            </Typography>\r\n                                        )}\r\n                                    <Typography component=\"div\" className={classes.button}>Read more</Typography>\r\n                                </CardContent>\r\n                            </CardActionArea>\r\n                        </Card>\r\n                    ))\r\n                    : (<Box sx={{ color: 'black', fontSize: '3em' }} >No result to show!</Box>)\r\n                }\r\n            </Box>\r\n            <Box className={classes.resetButtonContainer}>\r\n                <Button\r\n                    variant=\"contained\"\r\n                    onClick={() => dispatch({ type: Actions.answer_reset })}\r\n                    className={classes.resetButton}>\r\n                    START AGAIN\r\n                </Button>\r\n            </Box>\r\n        </Box>\r\n    );\r\n}\r\n","import { makeStyles } from '@material-ui/core/styles';\r\nexport default makeStyles(theme => ({\r\n  questionContainer: {\r\n    gridArea: 'question',\r\n    backgroundColor: theme.palette.primary.main,\r\n    padding: '4em',\r\n    textAlign: 'center'\r\n  },\r\n  informationContainer: {\r\n    gridArea: 'information',\r\n    backgroundColor: '#e1dfdf'\r\n  },\r\n  layout: {\r\n    [theme.breakpoints.down('md')]: {\r\n    },\r\n    [theme.breakpoints.up('md')]: {\r\n      margin: '5em 0'\r\n    }    \r\n  },\r\n  grid: {\r\n    display: 'grid',\r\n    gridGap: '5%',\r\n    gridTemplateRows: 'auto',\r\n    [theme.breakpoints.down('md')]: {\r\n      gridTemplateAreas: `\r\n      \"question\"\r\n      \"information\"\r\n      `,\r\n      gridTemplateColumns: 'auto'\r\n    },\r\n    [theme.breakpoints.up('md')]: {\r\n      gridTemplateAreas: `\"question information\"`,\r\n      gridTemplateColumns: '3fr 2fr'\r\n    }\r\n  }\r\n\r\n}));\r\n","import MainPage from './MainPage';\r\n\r\nexport default MainPage;","import { Box } from '@material-ui/core';\r\nimport React, { useContext } from 'react';\r\nimport { Context } from '../../state/store';\r\nimport Information from '../Information/Information';\r\nimport Question from '../Question/Question';\r\nimport Result from '../Result/Result';\r\nimport useStyles from './styles';\r\n\r\n\r\nexport default function MainPage() {\r\n    const classes = useStyles();\r\n    const [state] = useContext(Context);\r\n\r\n    return (\r\n        <Box className={classes.layout}>\r\n            {state.productFound\r\n                ? (\r\n                    <Box className={classes.resultContainer}>\r\n                        <Result />\r\n                    </Box>\r\n                )\r\n                : (\r\n                    <Box className={classes.grid}>\r\n                        <Box className={classes.questionContainer} >\r\n                            <Question />\r\n                        </Box>\r\n                        <Box className={classes.informationContainer}>\r\n                            <Information />\r\n                        </Box>\r\n                    </Box>\r\n                )}\r\n        </Box>\r\n    );\r\n}","import React from 'react';\r\nimport ThemeLayout from './components/Layout/Theme/ThemeLayout';\r\nimport Main from './components/Main';\r\nimport { StateProvider } from './state/store';\r\n\r\nfunction App() {\r\n  return (\r\n    <StateProvider>\r\n      <ThemeLayout>\r\n        <Main />\r\n      </ThemeLayout>\r\n    </StateProvider>\r\n  );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.0/8 are considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl, {\n    headers: { 'Service-Worker': 'script' }\n  })\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(<App />, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}