{"version":3,"sources":["local/shell sync /^/.*/.png$","local/home sync /^/.*/.png$","local/home/educationPlan.png","local/home/finanCheck.png","local/home/healthCare.png","local/home/legacyPlan.png","local/home/retirementPlan.png","local/home/savingPlan.png","local/home/sumAssured.png","local/home/taxPlan.png","local/shell/-1.png","local/shell/0.png","local/shell/1.png","local/shell/2.png","config/color.ts","config/theme.ts","common/context/routeContext.tsx","common/context/context.tsx","pages/finanCheck/constants.ts","pages/finanCheck/context/hooks/usePlans.ts","pages/finanCheck/context/finanCheckContext.tsx","pages/finanCheck/index.tsx","local/healthCare.png","pages/healthCare/styles.ts","pages/healthCare/index.tsx","pages/home/components/Card/styles.ts","pages/home/components/Card/index.tsx","pages/home/styles.ts","pages/home/index.tsx","pages/notFound/index.tsx","pages/retirementPlan/constants.ts","pages/retirementPlan/context/retirementPlanContext.tsx","pages/retirementPlan/index.tsx","local/sumAssured.png","pages/sumAssured/index.tsx","common/components/Button/styles.ts","common/components/Button/index.tsx","pages/finanCheck/pages/riskAssessment/components/Question/styles.ts","pages/finanCheck/pages/riskAssessment/components/Question/index.tsx","pages/finanCheck/pages/riskAssessment/components/QuestionHead/index.tsx","pages/finanCheck/pages/riskAssessment/hooks/useRiskAssessment.ts","pages/finanCheck/pages/riskAssessment/styles.ts","pages/finanCheck/pages/riskAssessment/index.tsx","common/hoc/withFormik.tsx","common/components/NumberInput/hooks/useNumberInput.ts","common/components/NumberInput/styles.ts","common/components/NumberInput/index.tsx","pages/finanCheck/components/PlanInput/styles.ts","pages/finanCheck/components/TableTypography/styles.ts","pages/finanCheck/components/TableTypography/index.tsx","pages/finanCheck/components/PlanInput/index.tsx","common/components/FormContainer/styles.ts","common/components/FormContainer/index.tsx","common/components/AddButton/index.tsx","hooks/useModal.tsx","pages/finanCheck/pages/requiredMoney/components/SelectPlanDialog/styles.ts","common/components/TextInput/styles.ts","common/components/TextInput/index.tsx","pages/finanCheck/pages/requiredMoney/components/SelectPlanDialog/hooks/useSelectPlans.ts","pages/finanCheck/pages/requiredMoney/components/SelectPlanDialog/index.tsx","pages/finanCheck/pages/requiredMoney/index.tsx","pages/finanCheck/pages/result/components/ResultItem/index.tsx","pages/finanCheck/pages/result/components/TableHead/index.tsx","pages/finanCheck/pages/result/index.tsx","pages/finanCheck/pages/riskAssessmentResult/hooks/useRiskResult.ts","pages/finanCheck/pages/riskAssessmentResult/styles.ts","routes/finanCheck.ts","pages/finanCheck/pages/riskAssessmentResult/index.tsx","pages/finanCheck/pages/preparedMoney/index.tsx","common/components/GenderInput/styles.ts","common/components/GenderInput/index.tsx","pages/healthCare/pages/form/components/FormItem/index.tsx","common/components/SelectInput/styles.ts","common/components/SelectInput/index.tsx","pages/healthCare/constants.ts","pages/healthCare/pages/form/hooks/useForm.ts","pages/healthCare/pages/form/styles.ts","pages/healthCare/pages/form/index.tsx","common/components/table/components/Cell/styles.ts","common/components/table/components/Cell/hooks/useCellClassName.ts","common/components/table/components/Cell/hooks/useCellStyle.ts","common/components/table/components/Cell/index.tsx","common/components/table/hooks/useDataTable.ts","common/components/table/styles.ts","common/components/table/index.tsx","pages/healthCare/pages/result/components/ResultTable/styles.tsx","pages/healthCare/pages/result/components/ResultTable/index.tsx","pages/healthCare/pages/result/components/ResultChart/components/PlanButton/styles.ts","pages/healthCare/pages/result/components/ResultChart/components/PlanButton/index.tsx","pages/healthCare/pages/result/components/ResultChart/constants.ts","pages/healthCare/pages/result/components/ResultChart/hooks/useResultData.ts","pages/healthCare/pages/result/components/ResultChart/styles.ts","pages/healthCare/pages/result/components/ResultChart/index.tsx","pages/healthCare/pages/result/styles.ts","common/components/Loading/index.tsx","pages/healthCare/pages/result/index.tsx","routes/healthCare.ts","pages/healthCare/pages/result/hooks/useResult.ts","pages/sumAssured/pages/form/components/FormItem/index.tsx","pages/sumAssured/pages/form/styles.ts","pages/sumAssured/pages/constants.ts","pages/sumAssured/pages/form/index.tsx","pages/sumAssured/pages/form/hooks/useForm.ts","pages/sumAssured/pages/result/components/TypeInput.tsx","pages/sumAssured/pages/result/styles.ts","pages/sumAssured/pages/result/index.tsx","routes/sumAssured.ts","pages/sumAssured/pages/result/hooks/useResult.ts","pages/retirementPlan/pages/customMutualFund/components/AnalyzePortTable/styles.ts","pages/retirementPlan/pages/customMutualFund/components/AnalyzePortTable/index.tsx","pages/retirementPlan/utils/getTypeColor.ts","pages/retirementPlan/pages/customMutualFund/components/Fund/index.tsx","hooks/useDialog.tsx","pages/retirementPlan/pages/customMutualFund/hooks/useAnalytic.ts","pages/retirementPlan/utils/fetch.tsx","pages/retirementPlan/pages/customMutualFund/hooks/useCustomMutualFund.ts","pages/retirementPlan/pages/customMutualFund/components/Fund/components/AddFundButton/styles.ts","pages/retirementPlan/pages/customMutualFund/components/Fund/components/AddFundButton/index.tsx","pages/retirementPlan/components/MoneyInput/styles.ts","pages/retirementPlan/components/MoneyInput/index.tsx","pages/retirementPlan/components/FundChart/styles.ts","pages/retirementPlan/components/FundChart/index.tsx","pages/retirementPlan/hooks/useExpectReward.ts","pages/retirementPlan/components/Investment/styles.ts","pages/retirementPlan/components/Investment/index.tsx","pages/retirementPlan/pages/customMutualFund/index.tsx","local/retirementPlan/RpqQuestion.ts","pages/retirementPlan/components/RPQ/components/Question/index.tsx","pages/retirementPlan/components/RPQ/index.tsx","pages/retirementPlan/pages/form/components/AgeInput/styles.ts","pages/retirementPlan/pages/form/components/AgeInput/index.tsx","pages/retirementPlan/pages/form/components/FormItem/styles.ts","pages/retirementPlan/pages/form/components/FormItem/index.tsx","pages/retirementPlan/pages/form/components/SliderInput/styles.ts","pages/retirementPlan/pages/form/components/SliderInput/index.tsx","pages/retirementPlan/pages/form/constants.tsx","pages/retirementPlan/pages/form/styles.ts","pages/retirementPlan/pages/form/components/SavingChoiceButton/styles.ts","pages/retirementPlan/pages/form/components/SavingChoiceButton/index.tsx","pages/retirementPlan/pages/form/utils.ts","pages/retirementPlan/pages/form/hooks/useForm.ts","pages/retirementPlan/pages/form/index.tsx","pages/retirementPlan/pages/insurance/styles.ts","pages/retirementPlan/pages/insurance/components/PlanButton/styles.ts","pages/retirementPlan/pages/insurance/components/PlanButton/index.tsx","pages/retirementPlan/pages/insurance/hooks/useInsurance.ts","pages/retirementPlan/pages/insurance/constants.ts","pages/retirementPlan/pages/insurance/index.tsx","pages/retirementPlan/pages/mutualFund/components/Port/styles.ts","pages/retirementPlan/pages/mutualFund/components/Port/index.tsx","pages/retirementPlan/pages/mutualFund/hooks/useMutualFund.ts","pages/retirementPlan/pages/mutualFund/styles.ts","pages/retirementPlan/pages/mutualFund/index.tsx","pages/retirementPlan/pages/result/components/Insurance/styles.ts","pages/retirementPlan/pages/result/components/Insurance/index.tsx","pages/retirementPlan/pages/result/components/MutualFund/index.tsx","pages/retirementPlan/pages/result/hooks/useResult.ts","pages/retirementPlan/pages/result/styles.ts","pages/retirementPlan/pages/result/index.tsx","hooks/useRouter.tsx","routes/index.ts","routes/retirementPlan.ts","common/components/shell/header/DrawerItem.tsx","common/components/shell/header/MenuDrawer.tsx","common/components/shell/header/index.tsx","common/components/shell/sidebar/SidebarItem.tsx","common/components/shell/sidebar/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","color","grey","blue","theme","createMuiTheme","palette","primary","light","main","dark","contrastText","breakpoints","values","xs","sm","md","lg","xl","typography","fontFamily","h1","fontSize","fontWeight","h2","h3","body1","body2","responsiveFontSizes","RouteContext","createContext","menu","RouteProvider","props","useState","setMenu","page","setPage","process","setProcess","latestProcess","setLatestProcess","Provider","value","newProcess","Math","max","children","dataContext","data","setData","riskAssessmentQuestions","question","weight","riskAssessmentResults","interval","result","defaultPlansName","initialData","riskAssessment","patron","isPrepared","Array","length","fill","usePlans","initialPlans","defaultPlans","name","idx","isDefault","selected","requiredMoney","preparedMoney","plans","setPlans","add","push","Date","remove","index","findIndex","plan","splice","update","payload","get","find","getAll","financheckContext","useFinanCheckData","useContext","FinanCheckProvider","finanCheck","setRiskAssessment","saveData","useCallback","FinanCheck","PageRoutes","useStyles","makeStyles","background","bottom","right","height","zIndex","position","HealthCare","styles","Hidden","smDown","src","alt","className","container","width","cursor","borderRadius","down","Card","image","require","default","useRouter","onClick","maxWidth","margin","padding","Home","Box","Typography","variant","style","marginTop","marginBottom","Grid","spacing","item","NotFound","defaultData","gender","age","retriment_age","death_age","outcome","inflationrate","retryment_rq","need_insurance","need_insurance_money","need_mutualfund","need_mutualfund_money","risk_data","risk_form_id","risk_score","risk_assessed","risk_accepted","insure_plan","plan_id","premium","pay_period","period","fund_port","port_id","stat","expected","sd","lists","retireplanContext","useRetirementPlanContext","RetirementPlanProvider","retirePlan","temp","setTemp","RetirementPlan","SumAssured","top","button","backgroundColor","boxShadow","minWidth","disabled","center","display","Button","attributes","ButtonBase","radio","alignSelf","radioContainer","justifyContent","alignItems","FormItem","text","setPrepared","choices","hideText","Radio","checked","mdUp","QuestionHead","textAlign","useRiskAssessment","setPatron","isFilled","handleSubmit","forEach","val","title","RiskAssessment","questionList","withFormik","Component","onChange","FormikContext","useField","field","helpers","setValue","undefined","useNumberInput","type","addComma","str","parts","String","split","replace","slice","join","setText","useEffect","Number","replaceAll","handleChange","event","target","test","inputContainer","flexDirection","input","flexGrow","minHeight","paddingLeft","overflow","unit","flexShrink","InputBase","inputProps","min","multiline","column","alignContent","backgroundWhite","typo","paddingRight","wordWrap","TableTypo","FinanCheckItem","inputKey","TableTypography","formContainer","formHead","formContent","FormContainer","contentStyle","AddButton","select","IconButton","aria-label","marginLeft","useModal","onClose","open","setOpen","handleClose","handleOpen","row","tableHead","handleClick","useSelectPlans","newPlanName","setNewPlanName","addPlan","SelectDialog","choiceList","classes","paper","RequiredMoney","modal","selectedPlanList","filter","PlanInput","SelectPlanDialog","float","ResultItem","prepareMoney","useMoney","toLocaleString","TableHead","bgcolor","FinanCheckResult","resultList","useRiskResult","missingPlans","score","ans","description","border","scoreContainer","pageRoutes","component","riskAssessmentResult","submit","showList","SubmitButton","Result","GenderButton","withStyles","root","label","options","Select","native","disableUnderline","option","defaultValues","sex","hospital","disease","tableKey","room","health","useFormData","initialValues","healthCare","HealthCareForm","useForm","onSubmit","flexWrap","cell","highlight","cellContainer","blank","flexBasis","rowHead","topLeft","topRight","bottomRight","bottomLeft","smBottomLeft","useCellClassName","maxRow","maxColumn","getClassName","getClasses","useCellStyle","cellStyle","headStyle","rowHeadStyle","Cell","useDataTable","getDataTableByColumn","dataTable","highlightTable","key","rowData","rowHighlight","includes","tranpose","_","c","r","getDataTable","rowContainer","Table","cellStyles","i","j","ResultTable","planList","caption","planA","planB","PlanButton","planName","setType","captions","chartOptions","scales","scaleProps","scale","axisProps","axis","emptyData","useResultData","getData","meta","stroke","strokeWidth","roomCost","seriousIllnessCost","left","packageCost","ResultChart","xsDown","size","smUp","content","Loading","CircularProgress","Form","form","toggleType","healthCareData","setPlanList","device_id","localStorage","getItem","v4","setItem","getResult","a","url","info","cal_type","time","now","calculateAT","axios","post","useResult","remark","up","defaultValue","income","debt","adaptPeriod","inflaRate","SumAssuredForm","sumAssured","textTransform","need","potential","TypeInput","summaryContainer","sum","SumAssuredResult","sumAssuredData","rate","needbase","potentialbase","pow","round","trunc","calculateBase","adoption_period","Base","response","planData","inx","mult","female","male","base","insurancePremiumPerYear","year","insurancePremium","loading","tableData","minValue","d","getHighlight","AnalyzePortTable","englishName","getTypeColor","ตลาดเงิน","ตราสารหนี้","ราสารหนี้","หุ้นไทย","ตราสารหนี้ต่างประเทศ","หุ้นต่างประเทศ","ทอง","อสังหาและโครงสร้างพื้นฐาน","Fund","percent","onNameChange","onPercentChange","useDialog","openDialog","closeDialog","Dialog","Modal","DialogContent","useAnalytic","formData","maxdd","vcar","analytic","setAnalytic","analyzePort","port","selectedAssetList","analyzedData","toString","getAssetType","asset","sessionStorage","JSON","parse","sampleDict","element","stringify","useCustomMutualFund","assetClassDict","setAssetClassDict","assetList","setAssetList","f","w","percentList","list","setFormData","info2","response2","fundOption","fundAssetDict","percents","aType","parseFloat","aPercent","entries","toFixed","selectedFundData","moneyInputProps","analyze","addFund","tempFundList","plusButton","AddFundButton","inputLabel","MoneyInput","FundChart","useTheme","isSm","useMediaQuery","scheme","valueField","argumentField","useExpectReward","expenseY","expectreturn","savingY","A","minimumFractionDigits","maximumFractionDigits","Investment","Row","ExpectValue","maxHeight","overflowY","customFund","CustomMutualFund","selectedFund","RpqQuestion","multiple","Question","setSelected","questionIdx","choice","indexOf","RPQ","setScore","riskLevel","setRiskLevel","arr","lineContainer","line","dot","numberInput","Line","Dot","AgeInput","start","end","marginRight","sliderLabel","sliderContainer","SliderInput","Slider","valueLabelFormat","aria-labelledby","step","marks","newValue","valueLabelDisplay","risk_options","ageInput","buttonContainer","SavingChoiceButton","changePage","getLowestRetirement","updateTemp","parseInt","RetirementPlanForm","useFormikContext","Questions","newPage","Wrapper","planButtonContainer","planButton","isSelected","useInsurance","allPlan","setAllPlan","defaultPlan","setPlan","retryment_sh","ins_plans","insuranceMoney","handleMoneyChange","handlePlanChange","plan_order","handlePageChange","idtoplan","tableConfig","Insurance","wordBreak","whiteSpace","chart","Content","thaiName","Port","risk","expectedReturn","SD","recommend","useMutualFund","recPorts","setRecPorts","fund_ports","portsData","allweight","selectPlan","MutualFund","ports","arrowLeft","arrowRight","wrapperStyle","innerWrapperStyle","itemStyle","getAsset","MutualFundItem","need_savings","fetchData","setFetchData","select_plan","summaryValue","savingPlanTitle","Process","retirementPlan","mutualFund","isMd","SummaryItem","Summary","SavingsPlan","Divider","orientation","flexItem","insurance","customMutualFund","routes","home","MenuRoutes","React","memo","routeContext","createElement","error","getPage","img","SidebarItem","MenuDrawer","isOpen","Drawer","anchor","DrawerItem","Header","startIcon","Sidebar","appContainer","bodyContainer","contentContainer","boxSizing","overflowX","App","tempDataStore","tempData","setBigData","ThemeProvider","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.524bf43a.chunk.js","sourcesContent":["var map = {\n\t\"./-1.png\": 179,\n\t\"./0.png\": 180,\n\t\"./1.png\": 181,\n\t\"./2.png\": 182\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 114;","var map = {\n\t\"./educationPlan.png\": 150,\n\t\"./finanCheck.png\": 151,\n\t\"./healthCare.png\": 152,\n\t\"./legacyPlan.png\": 153,\n\t\"./retirementPlan.png\": 154,\n\t\"./savingPlan.png\": 155,\n\t\"./sumAssured.png\": 156,\n\t\"./taxPlan.png\": 157\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 149;","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/finanCheck.9ec8c50f.png\";","export default __webpack_public_path__ + \"static/media/healthCare.715f8498.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/retirementPlan.ed4a4a0e.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/sumAssured.761d1208.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAiRSURBVHhe7dzBbdtAEEBRKWcfXJLVSUpIB3YpLkUlpASXoIPuDAFuBYGA5X68BwxmOvjgHnjdtu0CAKzt19gAwMIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACrtu2jXOKjzEAsJrvfX6Oc77ZQf/a5/M4AWApt33uxzmfJ3cACBB0AAgQdAAIEHQACJgd9PexAWA1b2OfwuygP8YGgNU8xz4FT+4AECDoABAg6AAQIOgAECDoABAw+1/uAMAL+EIHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4AAQQeAAEEHgABBB4CA67Zt45zia5/P4wSApdz2uR/nfL7QASBA0AEgQNABIEDQASBA0AEgYHbQ38cGgNW8jX0Ks4P+GBsAVvMc+xQ8uQNAgKADQICgA0CAoANAwOx/uX+MAYDVfO/zc5zzzQ46APACntwBIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIEDQASBA0AEgQNABIOC6bds4p/g9BgBW82efv8c53+ygf+3zeZwAsJTbPvfjnM+TOwAECDoABAg6AAQIOgAEzA76+9gAsJq3sU9hdtAfYwPAap5jn4IndwAIEHQACBB0AAgQdAAI8C93APg//uUOALyWJ3cACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AAgQdAAIEHQACBB0AFje5fIPO684vcn0PV4AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/0.4fb81038.png\";","export default __webpack_public_path__ + \"static/media/1.a05ae51f.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACQjSURBVHhe7d2JlSTF1TZgze8AkgUCCwALAAsACwALQBYAFgAWABYwWABYILAAsEBgQX/xdlX+MzS9VFVEbree55w4lT1CvdSSb97Y8tnNzc0/AIB9+3/HRwBgxwQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6FDP261909qPrd209nNrz1v7sDWgqGc3N/m8AwW82lqC/K3br+73e2vvtZaQBwoR6FDDG62lIn/l9qunvd9aqnagCIEONaTifv1weJI/W8tFwG+3XwG7Zwwd9u+T1s4J80gl/9nhEKhAhQ77d251/rJnx0dg51TosH+XhnlkRjxQgECHfRPIwC2BDgAFCHQAKECgA0ABAh0AChDoAFCAQAeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKODZzc3N8bC0t4+PjPHbsbG+vLd/OBxe5J3WfjwcsrJXj41xfm7tj8NhfZUDPR+Mz1r74PYrRvu9tW9ay3PMevI+//VweBGBvr4PW/uktddvv2K071v7srXy7/OqgZ4PSF7AV26/Yk6/tPZeayr29fR8iN9sLVUMy/tna7kofvf2K+b2eWulC5CKgZ5w+e5wyEJSrb/R2tV0bW3M89YuCYW8brp415OK8a3DIQspHerVJsVNV7ws69+tpUeEdVz63PusrCehIsyX92lrZedUVavQ8yHJC8Y6XmtN1/s6Es7nzBfJUEl6VVhHerMMCa4jY+rpyS2nWoVe8kXaEc//ejJvJCeqUyTMrfxYT557Yb6esnMWqgW6WaLrEhLrygVVxgj/vP3qfl+1ltfJfIf1+Jysr+RrUK3LveSU/R35qTUnq21IuL/cpZ6hkEyeE+TrMzS4vpLLNQU6I5Udm4KBBPr6Sga6rV8ZyQYl8DSfE2Yh0BkpXbrA4xLoj81zgIsIdEb5tjVL1uA0ZTc3YT0CnRGyDCp7UQOnyWZApy4zhJMIdHpNa5rNnobzZO+A9GzBEAKdSyXIP2rNHu5wmXxuEuqZcZ0ln9DFsrUXcqVsb+vTXNU9hmFB9nE4TQqJLw6HF7EOfQd6/pjyt9YDKCIXPj8cDi9iHToAsE0CHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKECgA0ABAh0AChDoAFCAQAeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAU8Ozm5uZ4WELPH/N5a58dDmE3Xr3T4p+tvXE4/Ivfji2m45f/Dfbi7dZ+OBxe5J3Wfjwc1iHQXxDobF0COyeyhHXaW62N8ktrPx9bTnR5hK0S6PcQ6C8IdLbovWPLCezf+YeF/Nna89Zy0svjH63BVgj0exhDh+1JgH/TWkL0u9Y+aG3JMI9XWsvP/bq1/7WWUP+wNWCjBDpsQ8a900OU8ewpxBOqW/Fuawn3XGR82do0Xg9shECHdSUYU42nCv60taUr8XPlIuPj1n5tLVV7uj6BDRDosI4pyBOMqcb3KFV7xjEzFnnfrHpgQQIdljV1rWcW+V6D/K7Mtv9va7lAyd8HrECgw3Iy2S1Bnq71LY2Pj5ILlMwB+OT2K2BRAh3ml6o1482Z7Lb1MfJeuVD5orV0w5s4BwsS6DCvTBpL1Zrx5muSbvj0RqjWYSECHeaTsfJMGqvYvX6KqVpP74SxdZiZQIfxEl7pcs5YOYfeCTPhYWYCHcZKaCW8Ru6zXsHrrQl1mJFAh3GmME948Xfpgs/yNlvIwgwEOowxhflWxstz97Sf7rStyBayQh0GE+jQb60w/72171vLnQJz96g3W3t2bPmdMsP+5Tb9b6+1lv/+P61921q+z9KEOgzm9qkvuH0ql1g6zFN5Z0e2zBzPcrhRpnutZ/ObJZfYfdRa/h44R96rbp96hwodLrdUmKeCTjWdyjo/M3c7Gxnmke+XYE2g/6u1BG0uHuaWSj0/E+gk0OEyWZqWAJwzzDPunWBN9TxHiD8kt0jN35aLh1Qyc4+/Tz8L6CDQ4TKpzOeazZ6KPEGabsW1u6Pzd+b3mDPYc1Fk8xnoJNDhfKmW5wjzP1tL13oq8q2N703B/n5rc0yiyx73CXXgQgIdzpPx3o8Ph0Ol+p3Gx7csoZvf86vbr8bKZjwmpsKFBDqcLpXzHF3gqcpT/S41Rt4rY+y56Uqq9fQqjJTtcvNcAGcS6HC60ZPgEoZZO771qvwhU7U+ejZ8nmfj6XAmgQ6nySYoI/dnTwgmDHOL0T1Lr0Iq6pET5jKerusdziTQ4WmpFkdW0QnzPXWxPyVd8Pl7suvcKJmnYCkbnEGgw9MS5qO62qcwTwhWk16MkaG+16EIWIVAh8dlItwHh8NulcN8MjLUM8Rhv3c4kUCHx42a1Z4JcNXDfJIZ8KMmyhlLhxMJdHhYAnjURLhrCfOYxtRHLGnLBDlVOpxAoMPDUmmOkHXme5/Nfq4p1EdQpcMJBDrcL2PnI24jmvuVX+vkrlzE5LbEvVTpcAKBDvcbURWmy/nagyjP44jx9FG9JVCWQIe/y7rzEffoTghdy7j5Y0Zc1ORmONalwyME+gtOvEwS5r3rzrNz2tq3Pt2KdL2PuJmLKh0e8ezm5uZ4WEJ23sp42yVyv+et3bKSdSSAem+P6v30V+n1yOez50IpQxj2eCfyPvjf4fAi/2qtXBFXrUK/9ASaE4WTL5HJcL1hnurc++mvcvLsnRyYi4ERQyHsX95Pl94/IHM6SvbIVgv0Sycy2WKSyYjAsMzqfvmc9a5NF+hMLj1vlz3fVwv0dOmdu0wmV2sCnUnv2mnV+cNSFeWWqz0EOpO8l87dZjjLSMvObak2hj7JC3bK/tvXsLc25+n9QHzUmslwD8uQxq+Hw4vlHvLXtlEP98tYej5vp+wZkYvtXBCWPd9XneWeZTLvt/b77Vd/l26/VPLCnJf1Vud5Xwnzx6UXrXdd+qgd6Ni/nL8T0tmN8aHhnPx7/vfy5/uqFfrLsnY1L+Q0OzZX9ukSFeTclbHvTw+HF0n3nx3NnpblZ18cDi+SblNd79wn5/qXL/hyrr+aIbBrCHQ4VT74PTdjSa9Q7xjxNejtdk/FZfka3CHQ4YX02vSsk352fORpvWv9X2st3ffAkZ3i4CBVY0+YX7om9lr1doPm9QJeItDhoDcgrmacbpDe58vEOLhDoMNB740/LKM6T+/zZQwd7hDocNAbEAL9PL3j3+68BncIdDjoDQgTtM5n3gEMJNDhoKdC790o5Vr17AXRs7wQShLo0M8mRZcxTAEDCXQAKECgA0ABAh0OesZkrUEHVifQ4eChOzWdwq5lwOoEOhz0TNAS6MDqBDoAFCDQgbXYvhUGEujQzzakl+l53n4/PgJHAh0OesbQe267es16KnRb7cIdAh0Oend7czvP871+fAQGEOhw0LsNqW738/ReAFn7D3cIdDjordAF+nnc3Q4GE+hw0Fvx6XI/T+/zJdDhjmc3NzfHQ7h66XbvGdd9rTVBc5r0iPRMJnx2fASOVOjwQu84+nvHRx6X6rwnzN1/Hu4h0OGF3kD/8PjI43qfp97XCUoS6PDC8+PjpdJdb1/3p/X2ZJjhDvcQ6PBCxr97dyD75PjI/VKd927E03vhBSUJdPir3uovgWWP8of1drdn/Lx3iSGUJNDhr3qrv1SfJsfdL5Ph3jocXuyb4yNwh2Vr8He9S6rSbW8s/e/S+9Eb6JYGwgNU6PB3vVX6v1v77HDI0YjqPN3twhweoEKHv8u2pP89HF7sz9ZSpRvvPejdtCc+ak2XOzxAhQ5/l/Dpne2eLnvhc5CZ/71hngsks9vhEQId7jeiy/zd1q59glx6KUY8lwlzvR3wCF3ucL8sPct4be+a6Wvveh/R1R4mw8ETVOhwvwTwl4fDLrkguNau4jx/I8L829aEOTxBhQ4PG1Wlx1etXdMuctlA5uvDYTfVOZxAhQ4PG1Wlx8et9e6SthdZJTAqzFXncCIVOjwtgZK15SNUX3qVMM8GMiN6NUJ1DidSocPTRnaVp3KtWqmPDvPPWxPmcCIVOpxmxLalL6tWqY8O8+wDkO9pqRqcSIUOp0lVnSVoo6RSr7I9bJ6bkWEe+Z7CHM4g0OE06fodHcCftpYqfc+3W81zkouTkWGeFQG5QADOoMsdzjO66z1y05FUpNmEZS+yWU4uRkY/F7ra4UIqdDhPtnId2fUe2XwlN4PZSxd8Jgnm4mN0mEeeX2EOFxDocJ6ETW4FOod0wadrf67v32ua+PZFayO72CeZKLinXgrYFIEO50voJHzmkPXuP7SW4NxKsE/d6+lFmKMqj2wgU3l9PszOGDpcLgH0weFwNj+1lp+zRtjlgiJj+0v8jVvtlYDdEOjQZ4lQj0wWy01e8vPm7JZONZ5x7IyTj9od7zGZEJgwN24OnQQ69EvQ5t7nS0m4p0s+Pzfh3rObWpbMJVCnNuLuaKcS5jCQQId+CcWE61zjy0/JrPsEe1rCMQF/X8jn98zEtkiQphpfogq/jzCHwQQ6jLNU9/veCXOYgVnuME4mkGW2Ng8T5jATgQ5jJdT/czjkjlzs2AUOZiLQYbwvW3u/tdE7yu1ZLnJysQPMxBg6zCeTzjJZbsmZ41uTi5osg3OzFZiZCh3mk5nm6WLO3cOu0fet5aJGmMMCVOiwjEwEyyz4tZaJLSlVebrX0zsBLESFDstIlZpq9fPWKo+tZ+LbNNQALEiFDstL4OVWqZXWrGc/9um2qsAKVOiwvIytp0v6tdb2vm49Qf5OaxlSEOawIhU6rG+PFXsmvGV5nglvsBECHbYje62ncl/qTmfnmu74liDvuSEMMAOBDtuU5W4J96zhXjPcM4EvIT41YKMEOmxfuuQT7BmnTnultTllXPzl27MCOyDQYX8S8Kngp5au+ktu3ZobpWRf9YR3utCnW7ACOyTQoZaX73l+nwS38W8oSKADQAHWoQNAAQIdAArQ5Q5Py5h0JqJlfHqaPJbJZIyXWfx5nmOasAecQKDD/RLg2eAla8HvWyaWndKyu5tZ4f0S4NmsJkvz7j7X0zr4/O+ea3iEQIcXEiwJlYT4qcvAPmott0XlMun9SBV+ytr67FSXYM/zrYcE7hDocAiVVOP3VYineL81u6id75wwvys9JAl2zzscCXSuVarxUfump1s4XfSqxvMkzC/ZEOdlqdoT7GnW13PVBDrXJlV42ug7m33VWi4OOE0upr4+HA6TLWuncIerI9C5BqmeEyBpc97oJPc3VyU+bVotcElX+ylMpOMqWYdOZQnwdOv+2tqnrc191zKV4WnSkzFXmEe+d3pg/ttaAj3vg2kpHJSlQqeaTLSaqvE5Q+Mh77Rm7fTD0luSC6w1fNtaLrq8PpQk0KlgWm6Wyu/1/MOKMkkrocX90hX+7uFwNSbSUZJAZ8+yq1gq8dET3Hp93lo2neGv8nr9cDjcDMvfKEOgszepfqdqfO4x8UtZxna/jGev3YPykLxmCfZMpFO1s0sCnb1IiKcaX7u79lQZr83vy0EuwL44HG7eL60l2FO1uyhjNwQ6W5YqN0Gw1gS3Xm+2ZtnU/MvU5mL5G7si0NmaaYJbQrx3F7G1ZaOTjBtfuwTix4fD3bKPPJsn0NmK3v3Ut+ra93lfc5naXEykY5MEOmtKNZ5KfMsT3HqlssvFyrVWdSP2a98qy9/YFIHOGra63Gwu17qMbYvL1OaS4ZW8xjatYTW2fmVJ0+0yc5LfcphnMlRutpJJbanCeqUH4ho3m0nlOkJ23/tPayNei7mkFyLv60yeM2+CVQh0lpCu9Uwoyt7aW+5+zdhoxrzz+yaEc3IeUVlnTsC1Vej5e0cMo6R3IxeBef/koijhniWBuejaoqyzT7Dnd77GizhWpMuduaVayeShrU50m2Yv53d8aBx01DjwtezzPmqZ2mMb9EyrIXLhteXNanJhk/cXzE6gM6eczHKXsy0650YdGSpI70Kva1nGlud1xJDKR62d0m2/9g15npKen/xulrsxqzkDfc0T1zVUQVuW6ikn4q3t6tazA9jSIbVXoy5+8lrle50rwZnKfYvvvZwThfq68p7K+WkNs+fS6ECfxh7T1rxSnnZ4yu/hA7SsvAfyxt1KN2jeCwnQtJ7dvvJ3jehGrr6MLa/9FoYn0lU/Ve1bWRKZ92JC3a5zy0tv4RbeC+kZzO8yyzLHkYGek1RCdEvriX2AlrWlME/39hTko4waQqi6jC2V8XeHwy6j98HP75W2hZUVzknL2lqBEXkP5P2dvBxqVKCPql7m4AO0nDzHa35wltjoI993xEXra63N9TuuZcRzk89rioM5npucp6aqfe33aeVemq3YYpi/bPi9HkYtW8sJdIthHvm9zDKdX94Da31wUtFluVm6WWfrzjrKMM4I1d6Ted5HXOjkeZnr9UuA5vsnTHMyXWv5W56nnuEETpP35FbDPDZZoeck+uvhcNOuZcnQGlLxfH04XMy03CwXEktXOnkfWcb2Qs4BqTT2OL8gVVy64/MeXnqPhNFDC7yQ1/V/h8NNGzpJdkSFvpc3ZD60jJcT8FLVZqqpnARTXSVE8nPX6LYc9Z5f6nmbWyqhET10+T5Lv575eTmhZlguwyDZITAXFkvImL7z0jz28rwO/T1HBHpO6Huwl99zbxJKcw+3ZIJbrmSnmctrz4dIl3BO/L3SHbj3Ci1BOGKy2TSJcU15XTOkkvdZhnCyfnxu+ZtTTTJWXsM9GPrajwh0b8brlTCaq5sy1XhCM1VTQmONrvXHpJocMf6aC6I9f4byPIwwam7CKBnfTPWU99+c+8jnYnjUc8j+DC00RwT6nBOQ2K6E0BxdxqnUXt5Pfavvr1xcjDgR7/mEPuqCLsMoW12Fkvdf3uep+KZ95Ef7uLW9VJSMtblZ7lv9IN5lQtxYCduRXe0J8pwwU40Pn/05k5zoR1Ruezyh54JrxIVIejm2Vp0/JOeQXMSkah/dHa9KH2svuTS0YBkR6Hs5+a49PlfJVD2Pki7NBPkeL7pGjYHv7f2Z13/UMrUtDaWcIifhdMenJ2nUsrfMQ1Clj5NcGvXazGno535Ul/uICUJzSjfZVrtu9ygnsxHVeT5wqcrn6LpfSi5C0rvQK13XuajZgwTPiB3z0rux58o0oZEx0OzTPoIqfaytP585bwwtYkbuFJdfbIuL+N0UYbx0Z/W+1gnzvC576Rp7TAJuxF4MCbg9VGkJshE3P0mFu5cevseMOv/lM5HvxTipgLew5e9dea1zMbi5LvdIWObkvMQyj3PkCkiYj5XAGXHhli7bCmEe+VBmf/Ze6cLe+nhyPk8jwjyfzQphHjm/ZOilt4s3vV57WT+9F3ld5pjI2GMqMof3Go8K9MibehpXWjvY84Rl3bIwH2/ECSdDNNXmNGTYoPeEHukm3HKVNmp4ZC8T4U6Vi9MR8ykE+nh5XTK0t5VcSmU+SzEzqsv9IanmluxCzBWPsfJ5pWuxZ6lSQi/viYoXWjlxjNgCNxXFiHAYbdTflwu6aoE+GfH50O0+r6VzKee6RXoj5w506ul9wwzdu3iD8sEdMSQx/E5MnRIyuVjunQxZ+YIu8rf1zqfY2mvPTozscqe+3l2NcjKvHOYxqvLc2sz//F0jVjZkSKHyMFguenpXPQzdPYzrIdA5R++JpsokqMeky3XEWF26bbcynpqqc9QytT0vUTxV70WrQOciAp1z9I47XUOgR6rZERPkthJ+o3pVtjgvYA6973OBzkUEOufoDfRUr9cg3a4jwjjL2NbeHCMrRUbs1z58E40Ny5DCqM1m4GQCnXP0BHq6WyuPnd6VQB+xz3uq/TVnPavOL9Oz2mbEBRRXSKCzlGtbTpiLlxHVdSairdX1nouJEfu1Z9Oda3v9zVJncQId5pPqtnfGc2TrynR9Lym9AiMuSDKX4BomwsHqBDrMa9QY+NJj6fl5I5appcq/pqEWWI1Ah3llItiIvaQzrrrUOHRmWece7b0yMaz6vgOwGQId5jdqGVuq5iUmyI3qIs/fDSxEoMP80uU8ahnb3CGZzWxGzLLO5jrXskwNNkGgwzJSXY9axta7H8BjVOewUwIdljMi5OZcxpaLDsvUYKcEOiwnW4KOWMb2bmujl7FlbH7EBce17NcOmyPQYVmjuqJHh2a+n7upwY4JdFhWdhAbsYwt91wftYwt1X42r+mV3gfL1GAlAh2Wlyp91N3YRixjS1U9wqjvA1xAoMPyRu7z3tuFnyp/xDK19DpYpgYrEuiwjlTXI5axfdrapcvYRu7XrjqHlQl0WM+oMfBLJ8iluh+xTC0/3zI1WJlAh/Wki3qtZWyp6kctU1OdwwYIdFjXqCr93NnlCeFRd1MDNkCgw7rSVf3V4bDLOfu8j1ymls1ygA0Q6LC+VMtL3o3t0jH3u1TnsCECHdaXZWwjwjFd6E+NZ6eLP5vS9MoytWySA2yEQIdtyBj4L4fDLh+39tAytlTvI6rz9CaozmFjBDpsx6iQfGiCXL6//dqhKIEO25FlbN8fDrtk57f3Dof/X6r2bELTy93UYKMEOmzLqCr9buiOCuFRy+yAwQQ6bEuWsX1+OOySZWzTBLksU8vmM72yTM1+7bBRAh22J9X0iGVsqfYzEW7ULU1V57BhAh22Z+QytiwtG7Ffeza/sV87bJhAh21KVT1in/cRYe5uarADAh22ayshapka7IBAh+3KBLTsyLambHZjmRrsgECHbUt1PGKC3KVGLaMDZibQYdsyEW2tCjmb3FimBjsh0GH7EujZoW1pqnPYEYEO2zdqGds5srmNZWqwIwId9uF5ayOWsZ0iY/YmwsHOCHTYj6Wq9Pwcy9RgZwQ67Ed2fZt7GVt6AUZtFQssSKDDvqR6nnMZmx3hYKcEOuxLusLnGt9O9W+ZGuyUQIf9SRU9ehmb/dph5wQ67NPoCXKp+i1Tgx0T6LBPI5expdq3TA12TqDDfn14fOzlbmpQgECH/UoX+VeHw4tZpgZFCHTYt967sS29pSwwE4EO+5au8ktnp2eZWjarAQoQ6LB/mdD2y+HwZKnqVedQiECHGt5u7dS16Qnz/PcmwkEhAh1qSDi/0dpTS9lSySfMdbVDMQId6kioJ6zfbC2z3xPuU8t4+futJfSFORT07Obm5ngIT8o+328dDs+WUEnYwDXIRMVPD4cXeXZ8hJOp0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKECgA0ABAh0AChDoAFCAQAeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBABxjvn8dHWIxAZylvHB/hGvS83/88PsJZBDrn+Pn4eIlXjo9wDXoq9J7PGVdMoHOOP46Pl3r7+AiVJcxfPxzCcgQ65/jt+Hgpgc416H2f/3h8hLNUD/RXW/uktW9ay4ck7bPWjOdepjfQ3zs+QmW97/Pez9m1ms73z1vLuT6POd/n36/Cs5ubm+NhOXkhPz0c3uun1j5szYfnPL1vmDdbM0ZIVeluzzmlZ86Iz8h58px/2doHt1/d79vWEva9w4abVrFCz4ubD8NjYR5vtZb/TrV+nlwI9ciHCqpKdd47AVSYny7n+1Tjj4V55H/P81q6Wq8Y6OleP3VCSj54eTPkTcFp8nz1yAfrarrAuDrpGezx/fGR0+R8dOr5/t+tpRu+rGqBnsko7x4OT5ZQT3cNpxnxgfB8U1HCPKHRo/eC+ZpkyPTc1QT573svujar2hh6wubcQJ/8q7XS4ysD5Xnq7VZ8v7XSV8tclfQ6pUu393PxWmvm9Zwmz9MlF1C/t1ayl7BihX4pY+mny7BGr3wPQx1UkYvT3jDP/BRhfpqcOy7tDcn/T6DvQM8Hyhrp040I9LxW5i9QwTnzdh4z4nN1LXoLMIEOR+la7J3tHjkJOomxZ3n/PjXD+hTZv91ngS4CnUuNmtiWOQ+5QFCpszejwjxMFKWbQOdSGTP85XDYLZV6ut/NY2APcvGZ9+uoME91LtDpJtDpMXKTmCnUyy4poYRsHJOJa9mYapSEuRU2dBPo9EgAjxhLn2SiXHb4ywkza0xhKzJpNu/371rrnc3+siyhUp0zhECnV4I3XYYjZVnJ160l2FOx21mONeR9l/d35nj80NrIqnyS7686Z4hqG8v0/DGft6a79zLpev/icDibVDKpkBLyeYQ5pBLPGHkeRyxFe0xuGKIn6jJ5fXKRdal3Wit3HhHoLwj0PvlwzFHBQEW5QM0kUNX5ZQT6PXS5M0omC+UkBTwuQ1T5vAhzhhLojJKTU05So8fToZoMUWVcHoYS6IyUk1RCHbjfR63ZEY5ZCHRGy7hUTlrAX2WejjBnNgKdOeSklVDX/Q4H+TyYdMusBDpzSahnJqpQ59rpZmcRAp05ZUw9S3NG7fkOe5KL2TdbE+YsQqAzt2wEk0r9q9uv4DpkS+TsNGc2O4sR6CwhS9qyVCebOVirTmWpyv/TWi5irTNnUQKdJWUGfLrgM9vX2DrVZCvXVOVutsIqBDpLS9WS2b4J9pwAYe/yPn6tNTdaYVUCnbVMt0j9V2up2HXFsyfpYcq8kCnI836GVQl01jZV7OmqzBh7qh3hzhYlxPP+fL+13JEt80IEOZsh0NmSjLGn2km4Z7lP1u/mBJoZw7C0LLf8vrVMcsv7MSGe9+fz1mBz3D71BbdP3YfMHoY5ZamZsfBtc/vUewj0FwQ6wD4I9HvocgeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKECgA0ABAh0AChDoAFCAQAeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKECgA0ABAh0AChDoAFCAQAeAAp7d3NwcD0vo+WN+au3HwyFPyPP0c2t/3H4FjPB2a2+09s/br3jMq619cDi8yDutlTvfC3R6fNvaJ60JdrhMwjufobRX8g8sQqDvgEBf3p+tpbJIxQ6cLmGeUHn99iuWVDLQjaHTK1VFPhjpAgNOI8wZTqAzQkL9m8MhcILPWhPmDCXQGeWt1jKhB3hcqvMPD4cwjkBnpPeOj8DDMufEBDiGE+iMpEKHp/mcMAuBzkjWz25DAiNjtJl0NbUvW0tlCBQl0Bnpt+Mj68gF1fPW/tvap61lXsPUPm7th9YS7irEddm3YX0lX4Nqgf7L8ZF1WIu+nmkZ1Lu3Xz0s4S7U15Xnn/Vk74yS56pqgZ5uRdZj6dp6EhKnLoOa9g4wRLKOhMnvh0NWkF6skqoFegLFB2Udn7emK3EdWQJ17prmhLoL4PVkq1eWl+o880tKqrb1a6QrMdWHZSHLyVCHLtz1pOK7ZJOSnNxU6etJAdJzgxHO91FrZXsSK06Ky8kts3lV6svIDVrMnl7XpTuO5aLXa7ee9KykZ4v55eL1/dZKDwtWneWeUM/e4rkay21RGSsfjgR5bnCQk5Ku9vXoGdm3dP++1lo+T4qQ8dJ7mIum5EHZsfNJxS53uCapsLMc7VIl7zoF16hqhQ4AV0WgA0ABAh0AChDoAFCAQAeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgAUINABoACBDgAFCHQAKECgA0ABAh327Y/jI3DlBDrs28/Hx0u5IIAiBDrs3/fHx3P92VrvBQGwEQId9u/58fFcXx4fgQKe3dzcHA+BHfuxtbcOhyf5vbU3WtPlDkWo0KGG91r75XD4pHS1578X5lCIQIcaEs5vt/bV7VcPy3j7q60ZO4didLlDPQnsVODpUs/xb60lwDPWnmOgIIEOAAXocgeAAgQ6ABQg0AGgAIEOAAUIdAAoQKADQAECHQAKEOgAUIBAB4ACBDoAFCDQAaAAgQ4ABQh0AChAoANAAQIdAAoQ6ABQgEAHgAIEOgDs3j/+8X/yLo++dik4SgAAAABJRU5ErkJggg==\"","const color = {\r\n grey: {\r\n \"100\": \"#F3F3F5\",\r\n \"200\": \"#B8B8B8\",\r\n \"300\": \"#94959E\",\r\n \"400\": \"#545454\",\r\n },\r\n blue: {\r\n \"100\": \"#CAEAF9\",\r\n \"200\": \"#6BCEF7\",\r\n \"300\": \"#54B4E6\",\r\n \"400\": \"#4496D2\",\r\n \"500\": \"#2767AE\",\r\n },\r\n};\r\n\r\nexport default color;\r\n","import {createMuiTheme, responsiveFontSizes} from \"@material-ui/core\";\r\nimport color from \"./color\";\r\n\r\ndeclare module \"@material-ui/core/styles/createBreakpoints\" {\r\n interface BreakpointOverrides {\r\n xs: true;\r\n sm: true;\r\n md: true;\r\n lg: true;\r\n xl: true;\r\n }\r\n}\r\n\r\nlet theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n light: color.blue[300],\r\n main: color.blue[400],\r\n dark: color.blue[500],\r\n contrastText: \"white\",\r\n },\r\n },\r\n breakpoints: {\r\n keys: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\r\n values: {\r\n xs: 0, // small smartphone\r\n sm: 375, // smartphone\r\n md: 600, // tablet\r\n lg: 1024, // desktop\r\n xl: 1920, // large desktop\r\n },\r\n },\r\n typography: {\r\n fontFamily: \"Mitr\",\r\n h1: {\r\n fontSize: \"2.5rem\",\r\n fontWeight: 400,\r\n },\r\n h2: {\r\n fontSize: \"2rem\",\r\n fontWeight: 400,\r\n },\r\n h3: {\r\n fontSize: \"1.625rem\",\r\n fontWeight: 400,\r\n },\r\n body1: {\r\n fontSize: \"1.25rem\",\r\n fontWeight: 400,\r\n },\r\n body2: {\r\n fontSize: \"1.00rem\",\r\n fontWeight: 400,\r\n },\r\n },\r\n});\r\n\r\ntheme = responsiveFontSizes(theme);\r\nexport default theme;\r\n","import React, {createContext, useState} from \"react\";\r\n\r\ninterface IRouteContext {\r\n menu: string;\r\n setMenu: (menu: string) => void;\r\n process: number;\r\n setProcess: (process: number) => void;\r\n latestProcess: number;\r\n setLatestProcess: (latestProcess: number) => void;\r\n page: string;\r\n setPage: (menu: string) => void;\r\n}\r\nconst RouteContext = createContext({\r\n menu: \"default\",\r\n} as IRouteContext);\r\nconst RouteProvider = (props: {children: React.ReactNode}) => {\r\n const [menu, setMenu] = useState(\"default\");\r\n const [page, setPage] = useState(\"default\");\r\n const [process, setProcess] = useState(0);\r\n const [latestProcess, setLatestProcess] = useState(0);\r\n\r\n const newSetProcess = (newProcess: number) => {\r\n setLatestProcess(Math.max(latestProcess, newProcess));\r\n setProcess(newProcess);\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport {RouteContext, RouteProvider};\r\n","import {createContext} from \"react\";\r\nimport {IData} from \"common/interface/interface\";\r\nconst DataObject: IData = {};\r\n\r\nexport const dataContext = createContext({\r\n data: DataObject,\r\n setData: (data: IData) => {},\r\n});\r\n","import {IRiskAssessmentQuestion} from \"./types\";\r\n\r\nexport const riskAssessmentQuestions: IRiskAssessmentQuestion[] = [\r\n {\r\n question: \"1. ค่าใช้จ่ายหากเจ็บป่วยจนต้องเข้าพักรักษาตัวในโรงพยาบาล\",\r\n weight: [1, 1],\r\n },\r\n {\r\n question: \"2. ค่าใช้จ่ายหากประสบอุบัติเหตุ\",\r\n weight: [1, 1],\r\n },\r\n {\r\n question: \"3. ค่าใช้จ่ายหากเกิดโรคร้ายแรง เช่น โรคหัวใจ โรคมะเร็ง\",\r\n weight: [1, 1],\r\n },\r\n {\r\n question: \"4. รายได้ที่สม่ำเสมอหากต้องหยุดพักรักษาตัวในโรงพยาบาล\",\r\n weight: [2, 1],\r\n },\r\n {\r\n question: \"5. ค่าใช้จ่ายเพื่อดำเนินชีวิต กรณีพิการ ไม่สามารถทำงานได้\",\r\n weight: [2, 1],\r\n },\r\n {\r\n question: \"6. ค่าใช้จ่ายเพื่อซ่อมแซม/ชดเชยทรัพย์สิน หากเกิดความเสียหาย\",\r\n weight: [1, 1],\r\n },\r\n {\r\n question: \"7. รายได้หลังเกษียณให้มีเพียงพอจนถึงันสุดท้ายของชีวิต\",\r\n weight: [2, 1],\r\n },\r\n {\r\n question: \"8. เงินทุนสำหรับจัดการภาระหนี้สินหากเวียชีวิตก่อนหมดภาระหนี้\",\r\n weight: [1, 2],\r\n },\r\n {\r\n question:\r\n \"9. เงินทุนเพื่อเป็นค่าใช้จ่ายของครอบครัวในระยะเวลา 5 ปี หากจากไปก่อนวัยอันควร\",\r\n weight: [1, 2],\r\n },\r\n {\r\n question:\r\n \"10. เงินทุนสำหนับเป้าหมายของผู้ที่อยู่ในอุปการะ เช่น ทุนการศึกษาบุตร\",\r\n weight: [1, 2],\r\n },\r\n];\r\n\r\nexport const riskAssessmentResults = [\r\n // Not Patron\r\n [\r\n {\r\n interval: 2,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับสูงมาก ถือว่าเกือบจะได้ได้เตรียมตัวรับมือหากเกิดเหตุไม่คาดฝันกับตัวคุณเลย การที่ต้องใช้ชีวิตภายใต้ความเสี่ยงคุณต้องการที่ปรึกษาอย่างเร่งด่วน ติดต่อนักวางแผนการเงิน คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 5,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับสูง มีความเสี่ยงในอีกหลายๆด้านที่คุณยังไม่ได้วางแผนเตรียมรับมือ ถึงคุณจะไม่มีใครที่เป็นภาระคุณ แต่คุณต้องเตรียมตัวเพื่อไม่ให้เป็นภาระของใคร คุณสามารถวางแผนอื่นๆเพิ่มเติมได้ คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 9,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับปานกลาง จากแผนจัดการความเสี่ยงที่ยังไม่ครบ คุณไม่มีใครต้องดูแล แต่อย่าลืมว่าอย่าให้คนอื่นต้องมาดูแล หากเกิดเหตุไม่คาดฝันกับคุณ ปรึกษานักวางแผนการเงิน คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 13,\r\n result:\r\n \"สำหรับคนที่ไม่มีภาระอย่างคุณ คุณเป็นบุคคลที่วางแผนรับมือกับความเสี่ยงในชีวิตได้อย่างดีเยี่ยม ชีวิตของคุณจึงมีแนวโน้มมั่นคง และปลอดภัย หากคิดว่ามีแผนที่ยังไม่ครบหรือสนใจเรื่องการลงทุน สามารถติดต่อนักวางแผนการเงินเพิ่มเติมได้\",\r\n },\r\n ],\r\n //Patron\r\n [\r\n {\r\n interval: 2,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับสูงมาก ซึ่งหมายถึงความเสี่ยงที่จะกระทบกับครอบครัวของคุณก็มีมากขึ้นเช่นเดียวกัน ยังมีความเสี่ยงอีกหลายด้านที่คุณต้องรีบวางแผนรับมือ ปรึกษานักวางแผนการเงินด่วน คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 5,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับสูง หากครอบครัวขาดคุณไป ภาระที่แบกไว้อาจตกไปที่ครอบครัวที่คุณรัก สร้างภูมิคุ้มกันให้คุณและครอบครัว ด้วยการวางแผนจัดการความเสี่ยงเพิ่มเติม คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 9,\r\n result:\r\n \"คุณเป็นบุคคลที่มีความเสี่ยงส่วนบุคคลในระดับปานกลาง ครอบครัวข้างหลังเป็นแรงผลักดันสำหรับชีวิตคุณ คุณสามารถปกป้องครอบครัวที่คุณรักได้ด้วยตัวคุณเอง ความเสี่ยงเหล่านี้สามารถวางแผนป้องกันได้ คลิ๊ก!!!\",\r\n },\r\n {\r\n interval: 13,\r\n result:\r\n \"ในฐานะเสาหลักของครอบครัว คุณสามารถวางแผนจัดการความเสี่ยงได้อย่างดีเยี่ยม ผลกระทบที่จะเกิดกับครอบครัวมีน้อยจากแผนการที่คุณเตรียมไว้ คุณสามารถรับคำปรึกษาเพิ่มเติมจากนักวางแผนการเงินได้\",\r\n },\r\n ],\r\n];\r\n\r\n// Plans\r\nexport const defaultPlansName = [\r\n \"แผนประกันสุขภาพ\",\r\n \"แผนประกันอุบัติเหตุ\",\r\n \"แผนประกันโรคร้ายแรง\",\r\n \"แผนชดเชยรายได้\",\r\n \"แผนคุ้มครองรายได้\",\r\n \"แผนคุ้มครองทรัพย์สิน\",\r\n \"แผนเกษียณ\",\r\n \"แผนคุ้มครองภาระหนี้\",\r\n \"แผนการปรับตัวของครอบครัว\",\r\n \"แผนการศึกษาบุตร\",\r\n];\r\n\r\nexport const initialData = {\r\n riskAssessment: {\r\n patron: -1,\r\n isPrepared: Array(riskAssessmentQuestions.length).fill(-1),\r\n },\r\n};\r\n","import {useState} from \"react\";\r\nimport {defaultPlansName} from \"../../constants\";\r\nimport {IPlan} from \"../../types\";\r\n\r\nconst usePlans = (initialPlans?: IPlan[]) => {\r\n const defaultPlans = defaultPlansName.map((name, idx) => ({\r\n id: idx,\r\n isDefault: true,\r\n name,\r\n selected: false,\r\n requiredMoney: 0,\r\n preparedMoney: 0,\r\n }));\r\n\r\n const [plans, setPlans] = useState([\r\n ...(initialPlans || defaultPlans),\r\n ]);\r\n\r\n const add = (name: string) => {\r\n plans.push({\r\n name,\r\n id: +new Date(),\r\n isDefault: false,\r\n selected: true,\r\n requiredMoney: 0,\r\n preparedMoney: 0,\r\n });\r\n setPlans([...plans]);\r\n };\r\n\r\n const get = (id: number) => {\r\n return plans.find((plan) => plan.id === id)!;\r\n };\r\n\r\n const getAll = () => plans;\r\n\r\n const remove = (id: number) => {\r\n const index = plans.findIndex((plan) => plan.id === id);\r\n if (plans[index].isDefault) {\r\n plans[index] = {...plans[index], selected: false};\r\n } else {\r\n plans.splice(index, 1);\r\n }\r\n setPlans([...plans]);\r\n };\r\n\r\n const update = (id: number, payload: Partial) => {\r\n const index = plans.findIndex((plan) => plan.id === id);\r\n plans[index] = {...plans[index], ...payload};\r\n setPlans([...plans]);\r\n };\r\n\r\n return {add, remove, update, get, getAll};\r\n};\r\n\r\nexport default usePlans;\r\n","import {dataContext} from \"common/context/context\";\r\nimport {createContext, useCallback, useContext, useState} from \"react\";\r\nimport {initialData} from \"../constants\";\r\nimport {IRiskAssessment} from \"../types\";\r\nimport usePlans from \"./hooks/usePlans\";\r\nimport {IFinanCheckContext} from \"./types\";\r\n\r\nexport const financheckContext = createContext({} as IFinanCheckContext);\r\n\r\nexport const useFinanCheckData = () => useContext(financheckContext);\r\n\r\nexport const FinanCheckProvider = (props: React.PropsWithChildren<{}>) => {\r\n const {data, setData} = useContext(dataContext);\r\n const plans = usePlans(data.finanCheck?.plans);\r\n const [riskAssessment, setRiskAssessment] = useState(\r\n data.finanCheck?.riskAssessment || initialData.riskAssessment\r\n );\r\n\r\n const saveData = useCallback(() => {\r\n setData({...data, finanCheck: {plans: plans.getAll(), riskAssessment}});\r\n }, [data, plans, riskAssessment, setData]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nimport {PageRoutes} from \"hooks/useRouter\";\r\nimport {FinanCheckProvider} from \"./context/finanCheckContext\";\r\n\r\nconst FinanCheck = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FinanCheck;\r\n","export default __webpack_public_path__ + \"static/media/healthCare.2d0cba27.png\";","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles(() => ({\r\n background: {\r\n bottom: 0,\r\n right: 0,\r\n height: \"min(70vh, 70vw)\",\r\n zIndex: -1,\r\n position: \"fixed\",\r\n },\r\n}));\r\n","import background from \"local/healthCare.png\";\r\nimport {Hidden} from \"@material-ui/core\";\r\nimport {PageRoutes} from \"hooks/useRouter\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction HealthCare() {\r\n const styles = useStyles();\r\n return (\r\n <>\r\n \r\n \"\"\r\n \r\n \r\n \r\n );\r\n}\r\nexport default HealthCare;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n width: \"100%\",\r\n cursor: \"pointer\",\r\n borderRadius: \"40px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n borderRadius: \"20px\",\r\n },\r\n },\r\n}));\r\n","import useRouter from \"hooks/useRouter\";\r\nimport {useStyles} from \"./styles\";\r\nimport {CardProps} from \"./types\";\r\n\r\nfunction Card({menu}: CardProps) {\r\n const styles = useStyles();\r\n const image = require(\"local/home/\" + menu + \".png\").default;\r\n const {setMenu} = useRouter();\r\n\r\n const HandleClick = () => {\r\n setMenu(menu);\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport default Card;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n}));\r\n","import {Box, Grid, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport Card from \"./components/Card\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction Home() {\r\n const styles = useStyles();\r\n return (\r\n <>\r\n \r\n \r\n เลือกการวางแผนที่เหมาะสมกับคุณ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default Home;\r\n","import {Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nfunction NotFound() {\r\n return 404 NotFound;\r\n}\r\nexport default NotFound;\r\n","import {IAssetClass} from \"./types\";\r\n\r\nexport const defaultData = {\r\n gender: \"male\",\r\n age: 40,\r\n retriment_age: 60,\r\n death_age: 80,\r\n outcome: 30000,\r\n inflationrate: 1.5,\r\n retryment_rq: 40000,\r\n need_insurance: 50,\r\n need_insurance_money: -1,\r\n need_mutualfund: 50,\r\n need_mutualfund_money: -1,\r\n risk_data: {\r\n risk_form_id: 0,\r\n risk_score: 0,\r\n risk_assessed: 0,\r\n },\r\n risk_accepted: -1,\r\n insure_plan: {\r\n plan_id: -1,\r\n plan: \"\",\r\n premium: -1,\r\n pay_period: -1,\r\n period: \"\",\r\n },\r\n fund_port: {\r\n port_id: -1,\r\n name: \"custom\",\r\n stat: {\r\n expected: -1,\r\n sd: -1,\r\n },\r\n lists: [] as IAssetClass[],\r\n },\r\n};\r\n","import {dataContext} from \"common/context/context\";\r\nimport {createContext, useContext, useState} from \"react\";\r\nimport {defaultData} from \"../constants\";\r\nimport {IRetirementPlanContext} from \"./types\";\r\n\r\nexport const retireplanContext = createContext({} as IRetirementPlanContext);\r\n\r\nexport const useRetirementPlanContext = () => useContext(retireplanContext);\r\n\r\nexport const RetirementPlanProvider = (props: React.PropsWithChildren<{}>) => {\r\n const {data} = useContext(dataContext);\r\n const [temp, setTemp] = useState(\r\n !!data.retirePlan ? data.retirePlan : defaultData\r\n );\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport {PageRoutes} from \"hooks/useRouter\";\r\nimport {RetirementPlanProvider} from \"./context/retirementPlanContext\";\r\n\r\nfunction RetirementPlan() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default RetirementPlan;\r\n","export default __webpack_public_path__ + \"static/media/sumAssured.00dfacd1.png\";","import background from \"local/sumAssured.png\";\r\nimport {Hidden} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {PageRoutes} from \"hooks/useRouter\";\r\nfunction SumAssured() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default SumAssured;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n button: {\r\n fontFamily: \"Mitr\",\r\n backgroundColor: theme.palette.primary.main,\r\n color: \"white\",\r\n borderRadius: \"10px\",\r\n padding: \"5px 20px 5px 20px\",\r\n fontSize: \"1.25rem\",\r\n margin: \"0 5px 0 5px\",\r\n boxShadow: \"0px 1px 3px #00000055\",\r\n minWidth: \"120px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"1rem\",\r\n margin: \"5px\",\r\n },\r\n },\r\n disabled: {\r\n backgroundColor: \"#a6a6a6\",\r\n },\r\n center: {\r\n display: \"block\",\r\n margin: \"auto\",\r\n },\r\n}));\r\n","import React from \"react\";\r\nimport {ButtonBase} from \"@material-ui/core\";\r\nimport {useStyles} from \"./styles\";\r\nimport {ButtonProps} from \"./types\";\r\n\r\nfunction Button(props: ButtonProps) {\r\n const styles = useStyles();\r\n const {children, className, center, ...attributes} = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default Button;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n radio: {\r\n alignSelf: \"center\",\r\n },\r\n radioContainer: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n}));\r\n","import {Hidden, Radio, Typography} from \"@material-ui/core\";\r\nimport {Grid} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {QuestionProps} from \"./types\";\r\n\r\nfunction FormItem(props: QuestionProps) {\r\n const {text, isPrepared, setPrepared, choices, hideText} = props;\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n {text}\r\n \r\n \r\n
\r\n {\r\n setPrepared(1);\r\n }}\r\n className={styles.radio}\r\n />\r\n {hideText ? (\r\n \r\n {choices[0]}\r\n \r\n ) : (\r\n {choices[0]}\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {\r\n setPrepared(0);\r\n }}\r\n className={styles.radio}\r\n />\r\n {hideText ? (\r\n \r\n {choices[1]}\r\n \r\n ) : (\r\n {choices[1]}\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FormItem;\r\n","import {Grid, Hidden, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nconst QuestionHead = () => {\r\n return (\r\n \r\n \r\n \r\n ท่านได้มีการวางแผนรับมือกับความเสี่ยงเหล่านี้ด้านใดบ้าง\r\n \r\n \r\n \r\n \r\n \r\n เตรียมพร้อมแล้ว\r\n \r\n \r\n \r\n \r\n ยังไม่เตรียม\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default QuestionHead;\r\n","import {useFinanCheckData} from \"pages/finanCheck/context/finanCheckContext\";\r\nimport useRouter from \"hooks/useRouter\";\r\n\r\nconst useRiskAssessment = () => {\r\n const {setPage} = useRouter();\r\n const {riskAssessment, setRiskAssessment, saveData, plans} =\r\n useFinanCheckData();\r\n const {patron, isPrepared} = riskAssessment;\r\n\r\n const setPrepared = (index: number) => {\r\n return (value: number) => {\r\n isPrepared[index] = value;\r\n setRiskAssessment({patron, isPrepared: [...isPrepared]});\r\n };\r\n };\r\n\r\n const setPatron = (value: number) => {\r\n setRiskAssessment({patron: value, isPrepared});\r\n };\r\n\r\n const isFilled = () => {\r\n if (patron === -1) return false;\r\n for (const prepared of isPrepared) {\r\n if (prepared === -1) return false;\r\n }\r\n return true;\r\n };\r\n\r\n // Handle Submit\r\n const handleSubmit = () => {\r\n isPrepared.forEach((val: number, index: number) => {\r\n if (val == 0) {\r\n plans.update(index, {selected: true});\r\n }\r\n });\r\n saveData();\r\n setPage(\"riskAssessmentResult\");\r\n };\r\n\r\n return {\r\n isPrepared,\r\n setPrepared,\r\n patron,\r\n setPatron,\r\n isFilled: isFilled(),\r\n handleSubmit,\r\n };\r\n};\r\n\r\nexport default useRiskAssessment;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n },\r\n title: {\r\n margin: \"20px 0\",\r\n color: \"white\",\r\n background: color.blue[400],\r\n padding: \"10px\",\r\n textAlign: \"center\",\r\n borderRadius: \"20px\",\r\n },\r\n button: {\r\n display: \"block\",\r\n margin: \"auto\",\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport React from \"react\";\r\nimport {riskAssessmentQuestions} from \"../../constants\";\r\nimport Question from \"./components/Question\";\r\nimport QuestionHead from \"./components/QuestionHead\";\r\nimport useRiskAssessment from \"./hooks/useRiskAssessment\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction RiskAssessment() {\r\n const styles = useStyles();\r\n const {isPrepared, setPrepared, isFilled, handleSubmit, patron, setPatron} =\r\n useRiskAssessment();\r\n\r\n const questionList = riskAssessmentQuestions.map(({question}, index) => (\r\n \r\n ));\r\n\r\n return (\r\n
\r\n \r\n แบบประเมินการเตรียมพร้อมทางการเงินสำหรับความเสี่ยงส่วนบุคคล\r\n \r\n\r\n \r\n\r\n {/* Question */}\r\n \r\n {questionList}\r\n\r\n {/* Submit */}\r\n \r\n แสดงผล\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default RiskAssessment;\r\n","import {FormikContext, useField} from \"formik\";\r\nimport React, {useContext} from \"react\";\r\n\r\nfunction withFormik

(Component: (props: P) => JSX.Element) {\r\n type IProps = Omit & {\r\n name?: string;\r\n value?: any;\r\n onChange?: (value: any) => void;\r\n };\r\n\r\n return (props: IProps) => {\r\n const {name, value, onChange} = props;\r\n\r\n // Formik Input\r\n const formikContext = useContext(FormikContext);\r\n if (formikContext && name) {\r\n const [field, , helpers] = useField(name);\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Error: Not Formik but doesn't pass `value` and `onChange` props\r\n if (value === undefined || !onChange) {\r\n throw new Error(\r\n \"You must pass `value` and `onChange` props if you use `\" +\r\n Component.name +\r\n \"` component outside of Formik or pass `name` prop to use the component inside of formik\"\r\n );\r\n }\r\n\r\n // Normal Input\r\n return ;\r\n };\r\n}\r\n\r\nexport default withFormik;\r\n","import React, {useCallback, useEffect, useState} from \"react\";\r\n\r\nconst useNumberInput = (\r\n value: number,\r\n type: string,\r\n onChange: (value: number) => void\r\n) => {\r\n // Add comma to string\r\n const addComma = useCallback((str: string | number) => {\r\n var parts = String(str).split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n while (parts[0].length > 1 && parts[0][0] == \"0\")\r\n parts[0] = parts[0].slice(1);\r\n return parts.join(\".\");\r\n }, []);\r\n\r\n const [text, setText] = useState(addComma(value));\r\n\r\n // Change text if value change\r\n useEffect(() => {\r\n if (value != Number(text.replaceAll(\",\", \"\"))) {\r\n setText(addComma(value));\r\n }\r\n }, [addComma, text, value]);\r\n\r\n // handle Change\r\n const handleChange = useCallback(\r\n (event: React.ChangeEvent) => {\r\n const value = event.target.value.replaceAll(\",\", \"\");\r\n\r\n // check if value is blank\r\n if (value === \"\") {\r\n onChange!(0);\r\n return;\r\n }\r\n\r\n const floatRegex = /^\\d*[.]?\\d*$/;\r\n const intRegex = /^\\d+$/;\r\n // check if value is float or int\r\n if (\r\n (type === \"float\" && floatRegex.test(value)) ||\r\n (type === \"int\" && intRegex.test(value))\r\n ) {\r\n setText(addComma(value));\r\n onChange!(Number(value));\r\n }\r\n },\r\n [addComma, onChange, type]\r\n );\r\n\r\n return {handleChange, text};\r\n};\r\n\r\nexport default useNumberInput;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n inputContainer: {\r\n display: \"flex\",\r\n background: \"white\",\r\n borderRadius: \"10px\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n },\r\n input: {\r\n flexGrow: 1,\r\n textAlign: \"center\",\r\n alignItems: \"center\",\r\n minHeight: \"40px\",\r\n height: \"100%\",\r\n paddingLeft: \"5px\",\r\n overflow: \"hidden\",\r\n },\r\n unit: {\r\n flexShrink: 0,\r\n padding: \"0 5px 0 5px\",\r\n },\r\n}));\r\n","import {InputBase, Typography} from \"@material-ui/core\";\r\nimport withFormik from \"common/hoc/withFormik\";\r\nimport React from \"react\";\r\nimport useNumberInput from \"./hooks/useNumberInput\";\r\nimport {useStyles} from \"./styles\";\r\nimport {NumberInputProps} from \"./types\";\r\n\r\nfunction NumberInput(props: NumberInputProps) {\r\n const {unit, className, style, onChange, value, field, type} = props;\r\n\r\n const styles = useStyles();\r\n\r\n const {handleChange, text} = useNumberInput(value, type || \"int\", onChange);\r\n\r\n return (\r\n

\r\n \r\n {unit && {unit}}\r\n
\r\n );\r\n}\r\n\r\nexport default withFormik(NumberInput);\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n column: {\r\n minWidth: \"100%\",\r\n textAlign: \"center\",\r\n alignItems: \"center\",\r\n minHeight: \"40px\",\r\n height: \"100%\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n overflow: \"hidden\",\r\n },\r\n backgroundWhite: {\r\n background: \"white\",\r\n },\r\n}));\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n column: {\r\n minWidth: \"100%\",\r\n textAlign: \"center\",\r\n alignItems: \"center\",\r\n minHeight: \"40px\",\r\n height: \"100%\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n overflow: \"hidden\",\r\n background: \"white\",\r\n },\r\n typo: {\r\n flexGrow: 1,\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\",\r\n wordWrap: \"break-word\",\r\n maxWidth: \"calc(100% - 20px)\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n maxWidth: \"calc(100% - 10px)\",\r\n },\r\n },\r\n}));\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {TableTypographyProps} from \"./types\";\r\n\r\nfunction TableTypo(props: TableTypographyProps) {\r\n const {md, xs, style, children} = props;\r\n const styles = useStyles();\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\nexport default TableTypo;\r\n","import {Grid, Hidden, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport {useFinanCheckData} from \"../../context/finanCheckContext\";\r\nimport {useStyles} from \"./styles\";\r\nimport {PlanInputProps} from \"./types\";\r\nimport TableTypography from \"../TableTypography\";\r\n\r\nfunction FinanCheckItem(props: PlanInputProps) {\r\n const styles = useStyles();\r\n const {plan, inputKey} = props;\r\n const {plans} = useFinanCheckData();\r\n const handleChange = (value: number) => {\r\n plans.update(plan.id, {[inputKey]: value});\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {plan.name}\r\n \r\n \r\n \r\n \r\n \r\n บาท\r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default FinanCheckItem;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n formContainer: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n marginTop: \"20px\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n formHead: {\r\n backgroundColor: color.blue[400],\r\n padding: \"10px\",\r\n color: \"white\",\r\n fontSize: \"1.5rem\",\r\n textAlign: \"center\",\r\n borderRadius: \"20px 20px 0 0 \",\r\n },\r\n formContent: {\r\n backgroundColor: color.grey[100],\r\n padding: \"20px\",\r\n borderRadius: \"0 0 20px 20px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"10px\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {FormContainerProps} from \"./types\";\r\n\r\nfunction FormContainer(props: FormContainerProps) {\r\n const styles = useStyles();\r\n const {children, name, contentStyle, style} = props;\r\n\r\n return (\r\n
\r\n {name}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\nexport default FormContainer;\r\n","import {Box, IconButton, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport {AddButtonProps} from \"./types\";\r\nimport color from \"config/color\";\r\n\r\nconst AddButton = (props: AddButtonProps) => {\r\n const {children, onClick, select, style} = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {children && (\r\n {children}\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AddButton;\r\n","import {useCallback, useState} from \"react\";\r\n\r\nconst useModal = (onClose?: () => void) => {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClose = useCallback(() => {\r\n setOpen(false);\r\n if (onClose) onClose();\r\n }, [onClose]);\r\n\r\n const handleOpen = useCallback(() => {\r\n setOpen(true);\r\n }, []);\r\n\r\n return {open, handleClose, handleOpen};\r\n};\r\n\r\nexport default useModal;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n item: {\r\n flexGrow: 1,\r\n textAlign: \"center\",\r\n alignItems: \"center\",\r\n minHeight: \"40px\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\",\r\n overflow: \"hidden\",\r\n background: \"white\",\r\n },\r\n row: {\r\n display: \"flex\",\r\n margin: \"10px\",\r\n },\r\n container: {\r\n width: \"500px\",\r\n backgroundColor: color.grey[100],\r\n },\r\n tableHead: {\r\n backgroundColor: color.blue[400],\r\n padding: \"10px\",\r\n color: \"white\",\r\n fontSize: \"1.5rem\",\r\n textAlign: \"center\",\r\n },\r\n}));\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n input: {\r\n flexGrow: 1,\r\n textAlign: \"center\",\r\n alignItems: \"center\",\r\n minHeight: \"40px\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\",\r\n overflow: \"hidden\",\r\n background: \"white\",\r\n },\r\n}));\r\n","import {InputBase} from \"@material-ui/core\";\r\nimport withFormik from \"common/hoc/withFormik\";\r\nimport React, {useCallback} from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {TextInputProps} from \"./types\";\r\n\r\nconst TextInput = (props: TextInputProps) => {\r\n const styles = useStyles();\r\n const {value, onChange, field} = props;\r\n\r\n const handleClick = useCallback(\r\n (event: React.ChangeEvent) => {\r\n onChange(event.target.value);\r\n },\r\n [onChange]\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default withFormik(TextInput);\r\n","import {useFinanCheckData} from \"pages/finanCheck/context/finanCheckContext\";\r\nimport {useState} from \"react\";\r\n\r\nconst useSelectPlans = () => {\r\n const {plans} = useFinanCheckData();\r\n\r\n const handleClick = (id: number) => {\r\n const plan = plans.get(id);\r\n if (plan.selected) {\r\n plans.remove(id);\r\n } else {\r\n plans.update(id, {selected: true});\r\n }\r\n };\r\n\r\n const [newPlanName, setNewPlanName] = useState(\"\");\r\n\r\n const addNewPlan = () => {\r\n plans.add(newPlanName);\r\n setNewPlanName(\"\");\r\n };\r\n\r\n return {\r\n handleClick,\r\n addPlan: addNewPlan,\r\n newPlanName,\r\n setNewPlanName,\r\n plans: plans.getAll(),\r\n };\r\n};\r\n\r\nexport default useSelectPlans;\r\n","import {Dialog, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport AddButton from \"common/components/AddButton\";\r\nimport TextInput from \"common/components/TextInput\";\r\nimport usePlans from \"./hooks/useSelectPlans\";\r\n\r\nconst SelectDialog = (props: {open: boolean; onClose: () => void}) => {\r\n const {onClose, open} = props;\r\n const styles = useStyles();\r\n const {handleClick, addPlan, newPlanName, setNewPlanName, plans} = usePlans();\r\n\r\n const choiceList = plans.map((plan) => {\r\n return (\r\n
\r\n
\r\n {plan.name}\r\n
\r\n {\r\n handleClick(plan.id);\r\n }}\r\n style={{marginLeft: \"10px\"}}\r\n select={plan.selected}\r\n />\r\n
\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n \r\n โปรดเพิ่มแผน\r\n
\r\n {choiceList}\r\n {/* Add New Plan */}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default SelectDialog;\r\n","import {Box, Grid, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport PlanInput from \"../../components/PlanInput\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport Button from \"common/components/Button\";\r\nimport {useFinanCheckData} from \"../../context/finanCheckContext\";\r\nimport AddButton from \"common/components/AddButton\";\r\nimport useModal from \"hooks/useModal\";\r\nimport SelectPlanDialog from \"./components/SelectPlanDialog\";\r\nimport {IPlan} from \"../../types\";\r\n\r\nconst RequiredMoney = () => {\r\n const {setPage} = useRouter();\r\n const {plans, saveData} = useFinanCheckData();\r\n\r\n const modal = useModal();\r\n\r\n const submit = () => {\r\n saveData();\r\n setPage(\"preparedMoney\");\r\n };\r\n\r\n const selectedPlanList = plans\r\n .getAll()\r\n .filter((plan) => plan.selected)\r\n .map((plan: IPlan) => {\r\n return ;\r\n });\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n ประเภทแผน\r\n \r\n \r\n จำนวนเงินที่ต้องเตรียม\r\n \r\n {selectedPlanList}\r\n \r\n \r\n เพิ่มแผน\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RequiredMoney;\r\n","import {Grid} from \"@material-ui/core\";\r\nimport TableTypography from \"pages/finanCheck/components/TableTypography\";\r\nimport {ResultItemProps} from \"./types\";\r\n\r\nfunction ResultItem(props: ResultItemProps) {\r\n const {name, prepareMoney, useMoney} = props;\r\n return (\r\n <>\r\n \r\n \r\n {name}\r\n \r\n \r\n {useMoney.toLocaleString()}\r\n \r\n \r\n {prepareMoney.toLocaleString()}\r\n \r\n \r\n {Math.max(0, useMoney - prepareMoney).toLocaleString()}\r\n \r\n \r\n \r\n );\r\n}\r\nexport default ResultItem;\r\n","import {Box, Grid, Hidden, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nconst TableHead = () => {\r\n return (\r\n <>\r\n \r\n ประเภทแผน\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n จำนวนเงินที่ต้องเตรียม\r\n \r\n \r\n เตรียมไว้แล้ว\r\n \r\n \r\n ขาดอีก\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableHead;\r\n","import ResultItem from \"./components/ResultItem\";\r\nimport {Grid} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport TableHead from \"./components/TableHead\";\r\nimport {useFinanCheckData} from \"../../context/finanCheckContext\";\r\n\r\nconst FinanCheckResult = () => {\r\n const {plans} = useFinanCheckData();\r\n\r\n const resultList = plans\r\n .getAll()\r\n .filter((plan) => plan.selected)\r\n .map((plan) => {\r\n return (\r\n \r\n );\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {resultList}\r\n \r\n \r\n );\r\n};\r\nexport default FinanCheckResult;\r\n","import {\r\n defaultPlansName,\r\n riskAssessmentQuestions,\r\n riskAssessmentResults,\r\n} from \"../../../constants\";\r\nimport {useFinanCheckData} from \"pages/finanCheck/context/finanCheckContext\";\r\n\r\nconst useRiskResult = () => {\r\n const {riskAssessment} = useFinanCheckData();\r\n\r\n const patron = riskAssessment.patron;\r\n const missingPlans: string[] = [];\r\n\r\n let score: number = 0;\r\n riskAssessment.isPrepared.forEach((ans, idx) => {\r\n score += ans * riskAssessmentQuestions[idx].weight[patron];\r\n if (!ans) missingPlans.push(defaultPlansName[idx]);\r\n });\r\n\r\n let description = riskAssessmentResults[patron].find(({interval}) => {\r\n return score <= interval;\r\n })?.result;\r\n\r\n return {score, description, missingPlans: missingPlans.join(\", \")};\r\n};\r\n\r\nexport default useRiskResult;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n score: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n width: \"150px\",\r\n height: \"150px\",\r\n borderRadius: \"500px\",\r\n border: \"5px solid green\",\r\n marginBottom: \"20px\",\r\n },\r\n scoreContainer: {\r\n margin: \"50px 0 50px 0\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n button: {\r\n display: \"block\",\r\n margin: \"auto\",\r\n marginTop: \"30px\",\r\n },\r\n}));\r\n","import RiskAssessment from \"pages/finanCheck/pages/riskAssessment\";\r\nimport RequiredMoney from \"pages/finanCheck/pages/requiredMoney\";\r\nimport Result from \"pages/finanCheck/pages/result\";\r\nimport {IPageRoutes} from \"routes\";\r\nimport RiskAssessmentResult from \"pages/finanCheck/pages/riskAssessmentResult\";\r\nimport PreparedMoney from \"pages/finanCheck/pages/preparedMoney\";\r\n\r\nconst pageRoutes: IPageRoutes = {\r\n default: {\r\n component: RiskAssessment,\r\n type: \"form\",\r\n },\r\n riskAssessment: {\r\n component: RiskAssessment,\r\n type: \"form\",\r\n },\r\n riskAssessmentResult: {\r\n component: RiskAssessmentResult,\r\n type: \"form\",\r\n },\r\n requiredMoney: {\r\n component: RequiredMoney,\r\n type: \"form\",\r\n },\r\n preparedMoney: {\r\n component: PreparedMoney,\r\n type: \"form\",\r\n },\r\n result: {\r\n component: Result,\r\n type: \"result\",\r\n },\r\n};\r\n\r\nexport default pageRoutes;\r\n","import {Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport React from \"react\";\r\nimport useRiskResult from \"./hooks/useRiskResult\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nconst RiskAssessmentResult = () => {\r\n const classes = useStyles();\r\n const {setPage} = useRouter();\r\n const {score, description, missingPlans} = useRiskResult();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {score}\r\n
\r\n คะแนนความเสี่ยงของคุณ\r\n
\r\n {description}\r\n \r\n {missingPlans !== \"\" && <>แผนที่ขาด: {missingPlans}}\r\n \r\n setPage(\"requiredMoney\")}\r\n >\r\n ต่อไป\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RiskAssessmentResult;\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport PlanInput from \"../../components/PlanInput\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport Button from \"common/components/Button\";\r\nimport {useFinanCheckData} from \"../../context/finanCheckContext\";\r\n\r\nconst PreparedMoney = () => {\r\n const {plans, saveData} = useFinanCheckData();\r\n const {setPage} = useRouter();\r\n\r\n const submit = () => {\r\n saveData();\r\n setPage(\"result\");\r\n };\r\n\r\n const showList = plans\r\n .getAll()\r\n .filter((plan) => plan.selected)\r\n .map((plan) => {\r\n return ;\r\n });\r\n\r\n const SubmitButton = () => (\r\n \r\n สรุปผล\r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n ประเภทแผน\r\n \r\n \r\n จำนวนเงินที่เตรียมไว้แล้ว\r\n \r\n {showList}\r\n \r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PreparedMoney;\r\n","import {Button, makeStyles, withStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const GenderButton = withStyles({\r\n root: {\r\n width: \"50%\",\r\n minHeight: \"40px\",\r\n borderRadius: \"0\",\r\n backgroundColor: \"white\",\r\n \"&:hover\": {\r\n backgroundColor: \"white\",\r\n },\r\n },\r\n})(Button);\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n selected: {\r\n backgroundColor: color.blue[100],\r\n \"&:hover\": {\r\n backgroundColor: color.blue[100],\r\n },\r\n },\r\n}));\r\n","import withFormik from \"common/hoc/withFormik\";\r\nimport React from \"react\";\r\nimport {GenderButton, useStyles} from \"./styles\";\r\nimport {GenderButtonProps} from \"./types\";\r\n\r\nfunction GenderInput(props: GenderButtonProps) {\r\n const {onChange, value} = props;\r\n const styles = useStyles();\r\n\r\n return (\r\n <>\r\n onChange(\"male\")}\r\n className={value === \"male\" ? styles.selected : \"\"}\r\n style={{\r\n borderRadius: \"10px 0px 0px 10px\",\r\n }}\r\n >\r\n ชาย\r\n \r\n onChange(\"female\")}\r\n className={value === \"female\" ? styles.selected : \"\"}\r\n style={{\r\n borderRadius: \"0px 10px 10px 0px\",\r\n }}\r\n >\r\n หญิง\r\n \r\n \r\n );\r\n}\r\n\r\nexport default withFormik(GenderInput);\r\n","import {Grid, Typography, Box} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {FormItemProps} from \"./types\";\r\n\r\nfunction FormItem(props: FormItemProps) {\r\n const {label, input, unit, variant} = props;\r\n\r\n return (\r\n <>\r\n \r\n {label}\r\n \r\n\r\n \r\n \r\n {input}\r\n {unit && {unit}}\r\n \r\n \r\n \r\n );\r\n}\r\nexport default FormItem;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles(() => ({\r\n input: {\r\n backgroundColor: \"white\",\r\n width: \"100%\",\r\n height: \"40px\",\r\n padding: \"10px\",\r\n borderRadius: \"10px\",\r\n \"& select\": {\r\n \"&:focus\": {\r\n backgroundColor: \"white\",\r\n },\r\n },\r\n },\r\n}));\r\n","import {Select} from \"@material-ui/core\";\r\nimport withFormik from \"common/hoc/withFormik\";\r\nimport React, {useCallback} from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {SelectInputProps} from \"./types\";\r\n\r\nconst SelectInput = (props: SelectInputProps) => {\r\n const styles = useStyles();\r\n const {options, value, onChange, field} = props;\r\n\r\n const handleClick = useCallback(\r\n (event: React.ChangeEvent) => {\r\n onChange(event.target.value);\r\n },\r\n [onChange]\r\n );\r\n\r\n return (\r\n \r\n {options.map((option) => (\r\n \r\n {option.text}\r\n \r\n ))}\r\n \r\n );\r\n};\r\nexport default withFormik(SelectInput);\r\n","import {IHealthCare} from \"./types\";\r\n\r\nexport const defaultValues: IHealthCare = {\r\n sex: \"male\",\r\n age: 30,\r\n hospital: \"Premium\",\r\n disease: 0,\r\n};\r\n\r\nexport const tableKey = [\"plan\", \"room\", \"health\", \"disease\", \"premium\"];\r\n\r\nexport const label = {\r\n room: \"ค่าห้องพัก\",\r\n health: \"ค่ารักษาแบบเหมาจ่าย\",\r\n disease: \"ความคุ้มครองโรคร้ายแรง\",\r\n premium: \"เบี้ยปีแรก\",\r\n};\r\n","import {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {defaultValues} from \"pages/healthCare/constants\";\r\nimport {IHealthCare} from \"pages/healthCare/types\";\r\nimport {useCallback, useContext} from \"react\";\r\n\r\nconst useFormData = () => {\r\n const {setPage} = useRouter();\r\n const {data, setData} = useContext(dataContext);\r\n\r\n const initialValues = data.healthCare || defaultValues;\r\n\r\n const handleSubmit = useCallback(\r\n (value: IHealthCare) => {\r\n setData({...data, healthCare: value});\r\n setPage(\"result\");\r\n },\r\n [data, setData, setPage]\r\n );\r\n\r\n return {initialValues, handleSubmit};\r\n};\r\n\r\nexport default useFormData;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n marginTop: \"20px\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n}));\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport GenderInput from \"common/components/GenderInput\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport {Formik, Form} from \"formik\";\r\nimport React from \"react\";\r\nimport FormItem from \"./components/FormItem\";\r\nimport SelectInput from \"common/components/SelectInput\";\r\nimport Button from \"common/components/Button\";\r\nimport useForm from \"./hooks/useForm\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction HealthCareForm() {\r\n const styles = useStyles();\r\n const {initialValues, handleSubmit} = useForm();\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n ประกันสุขภาพระยะยาว\r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default HealthCareForm;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n // Inner part\r\n\r\n cell: {\r\n margin: \"2px\",\r\n width: \"100%\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n },\r\n\r\n highlight: {\r\n backgroundColor: `${color.blue[300]}88`,\r\n },\r\n\r\n // Cell Container\r\n cellContainer: {\r\n flexGrow: 1,\r\n width: \"0\",\r\n minHeight: \"60px\",\r\n backgroundColor: color.grey[100],\r\n border: \"1px solid white\",\r\n display: \"flex\",\r\n },\r\n\r\n blank: {\r\n flexGrow: 1,\r\n flexBasis: 0,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n\r\n rowHead: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n flexBasis: \"unset\",\r\n borderRadius: \"0 0 0 0 !important\",\r\n },\r\n },\r\n\r\n // BorderRadius\r\n\r\n topLeft: {\r\n borderRadius: \"20px 0 0 0\",\r\n },\r\n\r\n topRight: {\r\n borderRadius: \"0 20px 0 0\",\r\n },\r\n\r\n bottomRight: {\r\n borderRadius: \"0 0 20px 0\",\r\n },\r\n\r\n bottomLeft: {\r\n borderRadius: \"0 0 0 20px\",\r\n },\r\n\r\n smBottomLeft: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n borderRadius: \"0 0 0 20px\",\r\n },\r\n },\r\n}));\r\n","import {ClassNameMap} from \"@material-ui/styles\";\r\n\r\n// Get cell's className\r\nconst useCellClassName = (\r\n index: {\r\n row: number;\r\n column: number;\r\n maxRow: number;\r\n maxColumn: number;\r\n },\r\n styles: ClassNameMap\r\n): string => {\r\n const {row, column, maxRow, maxColumn} = index;\r\n\r\n // Get list of class from index\r\n const getClasses = () => {\r\n const classes = [\"cellContainer\"];\r\n\r\n // First Row\r\n if (row === 0) {\r\n if (column === 1) classes.push(\"topLeft\");\r\n else if (column === maxColumn - 1) classes.push(\"topRight\");\r\n }\r\n\r\n // Second Row\r\n if (row === 1 && column === 0) classes.push(\"topLeft\");\r\n\r\n // Last Row\r\n if (row === maxRow - 1) {\r\n if (column === 0) classes.push(\"bottomLeft\");\r\n if (column === 1) classes.push(\"smBottomLeft\");\r\n else if (column === maxColumn - 1) classes.push(\"bottomRight\");\r\n }\r\n\r\n // First Column\r\n if (column === 0) classes.push(\"rowHead\");\r\n\r\n return classes;\r\n };\r\n\r\n // Get class name from classes list\r\n const getClassName = (classes: string[]) => {\r\n let className = \"\";\r\n classes.forEach((name) => {\r\n className += `${styles[name]} `;\r\n });\r\n return className;\r\n };\r\n\r\n return getClassName(getClasses());\r\n};\r\n\r\nexport default useCellClassName;\r\n","import {ICellStyle} from \"common/components/table/props\";\r\nimport {IIndex} from \"../props\";\r\n\r\n// Get cell's style\r\nconst useCellStyle = (\r\n index: IIndex,\r\n cellStyle: ICellStyle | undefined\r\n): React.CSSProperties | undefined => {\r\n const {row, column} = index;\r\n\r\n if (row === 0) return cellStyle?.headStyle;\r\n if (column === 0) return cellStyle?.rowHeadStyle;\r\n};\r\n\r\nexport default useCellStyle;\r\n","import {Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {CellProps} from \"./props\";\r\nimport {useStyles} from \"./styles\";\r\nimport useCellClassName from \"./hooks/useCellClassName\";\r\nimport useCellStyle from \"./hooks/useCellStyle\";\r\n\r\nconst Cell = ({children, cellStyle, highlight, index}: CellProps) => {\r\n const styles = useStyles();\r\n const className = useCellClassName(index, styles);\r\n const style = useCellStyle(index, cellStyle);\r\n\r\n if (index.row === 0 && index.column === 0)\r\n return
;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {(children === null || children === undefined\r\n ? \"\"\r\n : children\r\n ).toLocaleString()}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Cell;\r\n","import {useCallback} from \"react\";\r\nimport {ITableData} from \"../props\";\r\n\r\nconst useDataTable = () => {\r\n const getDataTableByColumn = useCallback(\r\n ({data, tableKey, label, highlight}: ITableData) => {\r\n const dataTable: (string | number)[][] = [];\r\n const highlightTable: boolean[][] = [];\r\n\r\n tableKey.forEach((key) => {\r\n // Data\r\n const rowData: (string | number)[] = [label[key]];\r\n for (const row of data) {\r\n rowData.push(row[key]);\r\n }\r\n dataTable.push(rowData);\r\n\r\n // Highlight\r\n const rowHighlight: boolean[] = [false];\r\n if (highlight) {\r\n for (const row of highlight) {\r\n rowHighlight.push(row.includes(key));\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const _ of data) {\r\n rowHighlight.push(false);\r\n }\r\n }\r\n highlightTable.push(rowHighlight);\r\n });\r\n\r\n return {dataTable, highlightTable};\r\n },\r\n []\r\n );\r\n\r\n const tranpose = useCallback((data: any[][]) => {\r\n return data[0].map((_, c) => {\r\n return data.map((r) => r[c]);\r\n });\r\n }, []);\r\n\r\n const getDataTable = useCallback(\r\n (data: ITableData, type: \"row\" | \"column\") => {\r\n const {dataTable, highlightTable} = getDataTableByColumn(data);\r\n // Column\r\n if (type === \"column\") return {dataTable, highlightTable};\r\n // Row (Tranpose)\r\n else\r\n return {\r\n dataTable: tranpose(dataTable),\r\n highlightTable: tranpose(highlightTable),\r\n };\r\n },\r\n [getDataTableByColumn, tranpose]\r\n );\r\n\r\n return {getDataTable};\r\n};\r\n\r\nexport default useDataTable;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n rowContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n },\r\n}));\r\n","import React from \"react\";\r\nimport Cell from \"./components/Cell\";\r\nimport useDataTable from \"./hooks/useDataTable\";\r\nimport {TableProps} from \"./props\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction Table(props: TableProps) {\r\n const {tableKey, label, data, type, cellStyles, highlight} = props;\r\n\r\n const styles = useStyles();\r\n\r\n const {getDataTable} = useDataTable();\r\n const {dataTable, highlightTable} = getDataTable(\r\n {tableKey, label, data, highlight},\r\n type || \"row\"\r\n );\r\n\r\n return (\r\n <>\r\n {dataTable.map((row, i) => {\r\n return (\r\n
\r\n {row.map((value, j) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n })}\r\n \r\n );\r\n}\r\n\r\nexport default Table;\r\n","import color from \"config/color\";\r\n\r\nexport const cellStyles = {\r\n headStyle: {backgroundColor: color.blue[300], color: \"white\"},\r\n rowHeadStyle: {\r\n backgroundColor: color.blue[400],\r\n color: \"white\",\r\n borderRadius: \"20px 0 0 20px\",\r\n },\r\n};\r\n","import Table from \"common/components/table\";\r\nimport {label, tableKey} from \"pages/healthCare/constants\";\r\nimport {IPlanList} from \"pages/healthCare/types\";\r\nimport React from \"react\";\r\nimport {cellStyles} from \"./styles\";\r\n\r\ninterface Props {\r\n planList: IPlanList;\r\n}\r\n\r\nfunction ResultTable(props: Props) {\r\n const {planList} = props;\r\n return (\r\n \r\n );\r\n}\r\nexport default ResultTable;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles(() => ({\r\n caption: {\r\n backgroundColor: \"white\",\r\n margin: \"10px\",\r\n borderRadius: \"20px\",\r\n padding: \"10px\",\r\n cursor: \"pointer\",\r\n },\r\n planA: {\r\n color: (props: any) => (props.type === \"plan1\" ? \"white\" : color.blue[400]),\r\n backgroundColor: (props: {type: string}) =>\r\n props.type === \"plan1\" ? color.blue[400] : \"white\",\r\n },\r\n planB: {\r\n color: (props: any) => (props.type == \"plan2\" ? \"white\" : color.grey[400]),\r\n backgroundColor: (props: {type: string}) =>\r\n props.type === \"plan2\" ? color.grey[400] : \"white\",\r\n },\r\n}));\r\n","import {Box, Typography} from \"@material-ui/core\";\r\nimport FiberManualRecordIcon from \"@material-ui/icons/FiberManualRecord\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {PlanButtonProps} from \"./types\";\r\n\r\nfunction PlanButton(props: PlanButtonProps) {\r\n const {planName, type, setType} = props;\r\n const styles = useStyles({type});\r\n\r\n return (\r\n \r\n {\r\n setType(\"plan1\");\r\n }}\r\n >\r\n \r\n {planName[0]}\r\n \r\n {\r\n setType(\"plan2\");\r\n }}\r\n >\r\n \r\n {planName[1]}\r\n \r\n \r\n );\r\n}\r\nexport default PlanButton;\r\n","import {ClassNameMap} from \"@material-ui/core/styles/withStyles\";\r\n\r\nexport const captions = {\r\n room: \"ค่าห้องพัก\",\r\n disease: \"ความคุ้มครองโรคร้ายแรง\",\r\n health: \"ค่ารักษาพยาบาลแบบเหมาจ่าย\",\r\n};\r\n\r\nexport const chartOptions = (styles: ClassNameMap) => ({\r\n scales: 1,\r\n scaleProps: () => ({className: styles.scale, fill: \"none\"}),\r\n axisProps: () => ({className: styles.axis}),\r\n captions: false,\r\n});\r\n\r\nexport const emptyData = {\r\n room: 0,\r\n disease: 0,\r\n health: 0,\r\n};\r\n","import color from \"config/color\";\r\nimport {IPlanList} from \"pages/healthCare/types\";\r\nimport {useCallback, useState} from \"react\";\r\nimport {emptyData} from \"../constants\";\r\n\r\nconst useResultData = ({data, scale}: IPlanList) => {\r\n const [type, setType] = useState<\"initial\" | \"plan1\" | \"plan2\">(\"initial\");\r\n\r\n const getData = useCallback(\r\n (data) => {\r\n return {\r\n room: data.room / scale.room,\r\n disease: (data.disease || 1) / (scale.disease || 1),\r\n health: data.health / scale.health,\r\n };\r\n },\r\n [scale.disease, scale.health, scale.room]\r\n );\r\n\r\n return {\r\n data: [\r\n {\r\n data: type === \"plan2\" ? emptyData : getData(data[0]),\r\n meta: {color: `${color.blue[200]}88`},\r\n },\r\n {\r\n data: type === \"plan1\" ? emptyData : getData(data[1]),\r\n meta: {color: `${color.grey[200]}88`},\r\n },\r\n ],\r\n setType,\r\n type,\r\n };\r\n};\r\n\r\nexport default useResultData;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n scale: {\r\n fill: color.grey[100],\r\n stroke: color.grey[200],\r\n },\r\n axis: {\r\n stroke: \"black\",\r\n strokeWidth: \".8\",\r\n },\r\n roomCost: {\r\n position: \"absolute\",\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n top: 0,\r\n },\r\n seriousIllnessCost: {\r\n position: \"absolute\",\r\n left: \"5%\",\r\n bottom: \"15%\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n left: \"0\",\r\n },\r\n },\r\n packageCost: {\r\n position: \"absolute\",\r\n right: \"5%\",\r\n bottom: \"15%\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n right: \"0\",\r\n },\r\n },\r\n container: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n alignItems: \"center\",\r\n flexDirection: \"column-reverse\",\r\n },\r\n },\r\n}));\r\n","import {Box, Hidden, Typography} from \"@material-ui/core\";\r\nimport {IPlanList} from \"pages/healthCare/types\";\r\nimport React from \"react\";\r\nimport RadarChart from \"react-svg-radar-chart\";\r\nimport PlanButton from \"./components/PlanButton\";\r\nimport useResultData from \"./hooks/useResultData\";\r\nimport {useStyles} from \"./styles\";\r\nimport {captions, chartOptions} from \"./constants\";\r\n\r\ninterface Props {\r\n planList: IPlanList;\r\n}\r\n\r\nfunction ResultChart({planList}: Props) {\r\n const styles = useStyles();\r\n const {data, setType, type} = useResultData(planList);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Label */}\r\n \r\n ค่าห้องพัก\r\n \r\n \r\n ค่ารักษาพยาบาล\r\n
\r\n แบบเหมาจ่าย\r\n
\r\n \r\n ค่ารักษา\r\n
\r\n โรคร้ายแรง\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default ResultChart;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n marginTop: \"20px\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n content: {\r\n marginTop: \"20px\",\r\n },\r\n roomCost: {\r\n position: \"absolute\",\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n top: 0,\r\n },\r\n seriousIllnessCost: {\r\n position: \"absolute\",\r\n left: \"5%\",\r\n bottom: \"15%\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n left: \"0\",\r\n },\r\n },\r\n packageCost: {\r\n position: \"absolute\",\r\n right: \"5%\",\r\n bottom: \"15%\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n right: \"0\",\r\n },\r\n },\r\n}));\r\n","import {CircularProgress} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nconst Loading = () => (\r\n \r\n);\r\n\r\nexport default Loading;\r\n","import React, {useCallback, useState} from \"react\";\r\nimport Result1 from \"./components/ResultTable\";\r\nimport Result2 from \"./components/ResultChart\";\r\nimport {Box, Typography} from \"@material-ui/core\";\r\nimport {useResult} from \"./hooks/useResult\";\r\nimport Button from \"common/components/Button\";\r\nimport {useStyles} from \"./styles\";\r\nimport Loading from \"common/components/Loading\";\r\n\r\nfunction Result() {\r\n const [type, setType] = useState<\"table\" | \"chart\">(\"table\");\r\n const toggleType = useCallback(() => {\r\n setType((type) => (type === \"table\" ? \"chart\" : \"table\"));\r\n }, []);\r\n\r\n const planList = useResult();\r\n const styles = useStyles();\r\n\r\n if (!planList) return ;\r\n return (\r\n
\r\n \r\n ประกันสุขภาพระยะยาว\r\n \r\n
\r\n {type === \"table\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n {/* Remark */}\r\n \r\n {planList.data[0].remark}\r\n {planList.data[1].remark}\r\n \r\n\r\n {/* Toggle Type */}\r\n \r\n {type === \"table\" ? \"แผนภูมิ\" : \"ตาราง\"}\r\n \r\n
\r\n );\r\n}\r\nexport default Result;\r\n","import Form from \"pages/healthCare/pages/form\";\r\nimport Result from \"pages/healthCare/pages/result\";\r\nimport {IPageRoutes} from \"routes\";\r\n\r\nconst pageRoutes: IPageRoutes = {\r\n default: {\r\n type: \"form\",\r\n component: Form,\r\n },\r\n form: {\r\n type: \"form\",\r\n component: Form,\r\n },\r\n result: {\r\n component: Result,\r\n type: \"result\",\r\n },\r\n};\r\nexport default pageRoutes;\r\n","import axios from \"axios\";\r\nimport {dataContext} from \"common/context/context\";\r\nimport {v4} from \"uuid\";\r\nimport {useCallback, useContext, useEffect, useState} from \"react\";\r\nimport {IPlanList} from \"pages/healthCare/types\";\r\n\r\nexport const useResult = () => {\r\n const {data} = useContext(dataContext);\r\n const healthCareData = data.healthCare;\r\n\r\n const [planList, setPlanList] = useState(null);\r\n\r\n let device_id = localStorage.getItem(\"device_id\");\r\n if (!device_id) {\r\n device_id = v4();\r\n localStorage.setItem(\"device_id\", device_id);\r\n }\r\n\r\n const getResult = useCallback(async () => {\r\n // TODO use axios instance\r\n const url = \"https://fhc.insurtechthailand.com/ins/healthcare/cal\";\r\n if (!healthCareData) return;\r\n try {\r\n const info = {\r\n cal_type: \"longtermhealthcare\",\r\n device_id,\r\n ...healthCareData,\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n\r\n const {data} = await axios.post(url, info);\r\n\r\n // TODO what is this???\r\n data.data[0].disease = healthCareData.disease;\r\n data.data[1].disease = healthCareData.disease;\r\n\r\n setPlanList(data);\r\n } catch (err) {\r\n // TODO handle error\r\n }\r\n }, [device_id, healthCareData]);\r\n\r\n useEffect(() => {\r\n getResult();\r\n }, [getResult]);\r\n\r\n return planList;\r\n};\r\n","import {Grid, Typography, Box} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {FormItemProps} from \"./props\";\r\n\r\nfunction FormItem(props: FormItemProps) {\r\n const {label, input, unit, xs} = props;\r\n return (\r\n \r\n {label}\r\n \r\n {input}\r\n {unit && {unit}}\r\n \r\n \r\n );\r\n}\r\nexport default FormItem;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n marginTop: \"20px\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n button: {\r\n marginBottom: \"10px\",\r\n marginTop: \"20px\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n minWidth: \"200px\",\r\n },\r\n },\r\n content: {\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n flexDirection: \"column\",\r\n },\r\n },\r\n}));\r\n","export const defaultValue = {\r\n gender: \"male\",\r\n age: 30,\r\n income: 40000,\r\n outcome: 30000,\r\n debt: 1000000,\r\n adaptPeriod: 5,\r\n inflaRate: 0.9,\r\n};\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport FormItem from \"./components/FormItem\";\r\nimport GenderInput from \"common/components/GenderInput\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport {Form, Formik} from \"formik\";\r\nimport Button from \"common/components/Button\";\r\nimport {useStyles} from \"./styles\";\r\nimport {useForm} from \"./hooks/useForm\";\r\n\r\nfunction SumAssuredForm() {\r\n const styles = useStyles();\r\n const {initialValues, handleSubmit} = useForm();\r\n return (\r\n
\r\n \r\n ทุนประกันชีวิตที่เหมาะสม\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default SumAssuredForm;\r\n","import {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {ISumAssured} from \"pages/sumAssured/types\";\r\nimport {useCallback, useContext} from \"react\";\r\nimport {defaultValue} from \"../../constants\";\r\n\r\nexport const useForm = () => {\r\n const {data, setData} = useContext(dataContext);\r\n\r\n // get initial value\r\n const initialValues = data.sumAssured || defaultValue;\r\n\r\n // handle submit\r\n const {setPage} = useRouter();\r\n const handleSubmit = useCallback(\r\n (value: ISumAssured) => {\r\n setData({...data, sumAssured: value});\r\n setPage(\"result\");\r\n },\r\n [data, setData, setPage]\r\n );\r\n\r\n return {initialValues, handleSubmit};\r\n};\r\n","import {Box, makeStyles, Theme, Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n button: {\r\n width: \"calc(50% - 7px)\",\r\n minHeight: \"40px\",\r\n display: \"inline-block\",\r\n textTransform: \"none\",\r\n color: \"white\",\r\n borderRadius: \"10px\",\r\n },\r\n need: {\r\n backgroundColor: (props: {type: boolean}) =>\r\n props.type ? color.blue[100] : color.blue[400],\r\n \"&:hover\": {\r\n backgroundColor: (props: {type: boolean}) =>\r\n props.type ? color.blue[100] : color.blue[400],\r\n },\r\n },\r\n potential: {\r\n backgroundColor: (props: {type: boolean}) =>\r\n props.type ? color.blue[400] : color.blue[100],\r\n \"&:hover\": {\r\n backgroundColor: (props: {type: boolean}) =>\r\n props.type ? color.blue[400] : color.blue[100],\r\n },\r\n },\r\n}));\r\nfunction TypeInput(props: {type: boolean; setType: (type: boolean) => void}) {\r\n var {type, setType} = props;\r\n const styles = useStyles({\r\n type: type,\r\n });\r\n return (\r\n \r\n {\r\n setType(false);\r\n }}\r\n className={styles.button + \" \" + styles.need}\r\n >\r\n ตามความจำเป็น\r\n Need base\r\n \r\n {\r\n setType(true);\r\n }}\r\n className={styles.button + \" \" + styles.potential}\r\n >\r\n ตามศักยภาพ\r\n Potential base\r\n \r\n \r\n );\r\n}\r\nexport default TypeInput;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n maxWidth: \"900px\",\r\n margin: \"auto\",\r\n marginTop: \"20px\",\r\n padding: \"10px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"0px\",\r\n },\r\n },\r\n summaryContainer: {\r\n marginTop: \"20px\",\r\n width: \"60%\",\r\n margin: \"auto\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n sum: {\r\n backgroundColor: color.grey[100],\r\n display: \"flex\",\r\n minHeight: \"60px\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n borderRadius: \"10px\",\r\n marginTop: \"10px\",\r\n marginBottom: \"20px\",\r\n },\r\n tableHead: {\r\n backgroundColor: color.blue[400],\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n minHeight: \"60px\",\r\n color: \"white\",\r\n border: \"1px solid white\",\r\n },\r\n}));\r\n\r\nexport const cellStyle = {\r\n headStyle: {backgroundColor: color.blue[400], color: \"white\"},\r\n rowHeadStyle: {\r\n backgroundColor: color.blue[300],\r\n borderRadius: \"20px 0 0 20px\",\r\n },\r\n};\r\n","import {Typography} from \"@material-ui/core\";\r\nimport React, {useState} from \"react\";\r\nimport Table from \"common/components/table\";\r\nimport TypeInput from \"./components/TypeInput\";\r\nimport {cellStyle, useStyles} from \"./styles\";\r\nimport Loading from \"common/components/Loading\";\r\nimport {useResult} from \"./hooks/useResult\";\r\n\r\nfunction SumAssuredResult() {\r\n const styles = useStyles();\r\n const [type, setType] = useState(false);\r\n\r\n const {tableData, loading, base} = useResult(type);\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n ทุนประกันชีวิตที่เหมาะสม\r\n \r\n
\r\n \r\n
\r\n \r\n {base.toLocaleString()} บาท\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\nexport default SumAssuredResult;\r\n","import Form from \"pages/sumAssured/pages/form\";\r\nimport Result from \"pages/sumAssured/pages/result\";\r\nimport {IPageRoutes} from \"routes\";\r\n\r\nconst pageRoutes: IPageRoutes = {\r\n default: {\r\n type: \"form\",\r\n component: Form,\r\n },\r\n form: {\r\n type: \"form\",\r\n component: Form,\r\n },\r\n result: {\r\n component: Result,\r\n type: \"result\",\r\n },\r\n};\r\nexport default pageRoutes;\r\n","import axios from \"axios\";\r\nimport {dataContext} from \"common/context/context\";\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport {v4} from \"uuid\";\r\n\r\nexport const useResult = (type: boolean) => {\r\n const [planList, setPlanList] = useState([]);\r\n const {data} = useContext(dataContext);\r\n const sumAssuredData = data.sumAssured!;\r\n\r\n const calculateBase = () => {\r\n const rate = sumAssuredData.inflaRate / 100;\r\n let needbase = sumAssuredData.outcome * 12;\r\n let potentialbase = sumAssuredData.income * 12;\r\n for (let i = 1; i < sumAssuredData.adaptPeriod; i++) {\r\n needbase += (sumAssuredData.outcome * 12) / Math.pow(1 - rate, i);\r\n }\r\n needbase = needbase + sumAssuredData.debt;\r\n needbase = Math.round(needbase / 1000) * 1000;\r\n for (let i = sumAssuredData.age; i < 60; i++) {\r\n potentialbase =\r\n potentialbase +\r\n Math.trunc(potentialbase * rate) +\r\n sumAssuredData.income * 12;\r\n }\r\n potentialbase = Math.round(potentialbase / 1000) * 1000;\r\n return {potentialbase, needbase};\r\n };\r\n\r\n const {potentialbase, needbase} = calculateBase();\r\n\r\n // TODO refactor this???\r\n let device_id = localStorage.getItem(\"device_id\");\r\n if (device_id === null) {\r\n device_id = v4();\r\n localStorage.setItem(\"device_id\", device_id);\r\n }\r\n\r\n const getResult = async () => {\r\n const url = \"https://fhc.insurtechthailand.com/ins/sumassured/cal\";\r\n const info = {\r\n cal_type: \"sumassured\",\r\n device_id,\r\n age: sumAssuredData.age,\r\n sex: sumAssuredData.gender,\r\n income: sumAssuredData.income,\r\n outcome: sumAssuredData.outcome,\r\n debt: sumAssuredData.debt,\r\n adoption_period: sumAssuredData.adaptPeriod,\r\n inflationrate: sumAssuredData.inflaRate,\r\n Base: [needbase, potentialbase],\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n // TODO use axois instance & handle error\r\n const response = await axios.post(url, info);\r\n setPlanList(response.data.data);\r\n };\r\n\r\n useEffect(() => {\r\n getResult();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const planData = planList.map((planData: any, inx) => {\r\n const mult = sumAssuredData.gender == 'female' ? planData.female : planData.male;\r\n const base = type ? potentialbase : needbase;\r\n return {\r\n plan: planData.plan,\r\n insurancePremiumPerYear: (mult * base) / 1000,\r\n year: planData.pay_period,\r\n insurancePremium: ((mult * base) / 1000) * planData.pay_period,\r\n };\r\n });\r\n\r\n // get highlight\r\n const getHighlight = () => {\r\n const minValue = [\r\n Math.min(...planData.map((d) => d.insurancePremiumPerYear)),\r\n Math.min(...planData.map((d) => d.year)),\r\n Math.min(...planData.map((d) => d.insurancePremium)),\r\n ];\r\n\r\n return planData.map((data) => {\r\n const rowHighlight: string[] = [];\r\n if (data.insurancePremiumPerYear == minValue[0]) {\r\n rowHighlight.push(\"insurancePremiumPerYear\");\r\n }\r\n if (data.year == minValue[1]) {\r\n rowHighlight.push(\"year\");\r\n }\r\n if (data.insurancePremium == minValue[2]) {\r\n rowHighlight.push(\"insurancePremium\");\r\n }\r\n return rowHighlight;\r\n });\r\n };\r\n\r\n return {\r\n loading: planList.length == 0,\r\n base: type ? potentialbase : needbase,\r\n tableData: {\r\n tableKey: [\"plan\", \"insurancePremiumPerYear\", \"year\", \"insurancePremium\"],\r\n data: planData,\r\n label: {\r\n plan: \"\",\r\n insurancePremiumPerYear: \"เบี้ยประกันภัย (ต่อปี)\",\r\n year: \"จำนวนปีที่ต้องชำระเงิน\",\r\n insurancePremium: \"เบี้ยประกันภัยรวม\",\r\n },\r\n highlight: getHighlight(),\r\n },\r\n };\r\n};\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n margin: \"20px 0 20px 0\",\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n margin: \"20px 0 10px 0\",\r\n },\r\n },\r\n item: {\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n flexDirection: \"column\",\r\n width: \"0\",\r\n },\r\n },\r\n cell: {\r\n flexGrow: 1,\r\n minHeight: \"60px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n border: \"1px solid white\",\r\n\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"0\",\r\n },\r\n },\r\n name: {\r\n backgroundColor: color.blue[300],\r\n borderRadius: \"20px 20px 0 0\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n borderRadius: \"20px 0 0 20px\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {AnalyzePortTableProps} from \"./types\";\r\n\r\nfunction AnalyzePortTable(props: AnalyzePortTableProps) {\r\n const {data} = props;\r\n const styles = useStyles();\r\n return (\r\n
\r\n {data.map(({name, englishName, value}) => (\r\n
\r\n
\r\n {name}\r\n {englishName}\r\n
\r\n \r\n \r\n {value === \"-1\" ? \"-\" : value}\r\n \r\n
\r\n
\r\n ))}\r\n \r\n );\r\n}\r\n\r\nexport default AnalyzePortTable;\r\n","import color from \"config/color\";\r\n\r\nconst getTypeColor = (type: string) => {\r\n const typeColor = {\r\n ตลาดเงิน: \"#C296D2\",\r\n ตราสารหนี้: color.blue[200],\r\n ราสารหนี้: color.blue[200],\r\n หุ้นไทย: color.blue[400],\r\n \"ทรัพย์สิน อื่นๆ\": color.grey[400],\r\n ตราสารหนี้ต่างประเทศ: \"#6BCE93\",\r\n หุ้นต่างประเทศ: \"#449693\",\r\n ทอง: \"#E2C961\",\r\n อสังหาและโครงสร้างพื้นฐาน: \"#E0997B\",\r\n };\r\n\r\n return (typeColor as any)[type] || color.blue[100];\r\n};\r\nexport default getTypeColor;\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport SelectInput from \"common/components/SelectInput\";\r\nimport getTypeColor from \"pages/retirementPlan/utils/getTypeColor\";\r\nimport React from \"react\";\r\nimport {TiMinus, TiPlus} from \"react-icons/ti\";\r\nimport {FundProps} from \"./types\";\r\n\r\nfunction Fund(props: FundProps) {\r\n const {name, type, percent, onNameChange, onPercentChange, options} = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {type}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n onPercentChange(percent + 1);\r\n }}\r\n />\r\n
\r\n \r\n
\r\n {\r\n onPercentChange(percent - 1);\r\n }}\r\n size=\"15px\"\r\n />\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Fund;\r\n","import {DialogContent, Modal} from \"@material-ui/core\";\r\nimport React, {useCallback, useState} from \"react\";\r\n\r\nfunction useDialog(\r\n Component: (props: {closeDialog: () => void}) => JSX.Element\r\n) {\r\n const [open, setOpen] = useState(false);\r\n const openDialog = useCallback(() => {\r\n setOpen(true);\r\n }, []);\r\n const closeDialog = useCallback(() => {\r\n setOpen(false);\r\n }, []);\r\n\r\n const Dialog = (props?: {[key: string]: any}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return {openDialog, closeDialog, Dialog};\r\n}\r\n\r\nexport default useDialog;\r\n","import axios from \"axios\";\r\nimport {useState} from \"react\";\r\n\r\nconst useAnalytic = (formData: any, temp: any, setTemp: any) => {\r\n const [analytic, setAnalytic] = useState({\r\n expected: temp.fund_port.stat.expected,\r\n sd: temp.fund_port.stat.sd,\r\n maxdd: -1,\r\n vcar: -1,\r\n });\r\n\r\n const analyzePort = async () => {\r\n let device_id = localStorage.getItem(\"device_id\");\r\n const url = \"https://fhc.insurtechthailand.com/ins/funds/cal\";\r\n const info = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"port_analyze\", // function ที่เรียกใช้\r\n port: formData.selectedAssetList,\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n const response = await axios.post(url, info);\r\n if (!!response.data.data) {\r\n const result = response.data.data;\r\n setAnalytic({...result});\r\n temp.fund_port.stat.expected = result.expected;\r\n temp.fund_port.stat.sd = result.sd;\r\n setTemp({...temp});\r\n }\r\n };\r\n\r\n const analyzedData = [\r\n {\r\n name: \"ผลตอบเทนที่คาดหวัง\",\r\n englishName: \"Expected Return\",\r\n value: analytic.expected.toString(),\r\n },\r\n {\r\n name: \"ความผันผวน\",\r\n englishName: \"(S.D.)\",\r\n value: analytic.sd.toString(),\r\n },\r\n {\r\n name: \"ผลตอบแทนขาดทุนสูงสุด\",\r\n englishName: \"(Max. Drawdown)\",\r\n value: !!analytic.maxdd ? analytic.maxdd.toString() : \"-\",\r\n },\r\n {\r\n name: \"ค่าความเสี่ยงแบบมีเงื่อนไข\",\r\n englishName: \"(CVaR)\",\r\n value: !!analytic.vcar ? analytic.vcar.toString() : \"-\",\r\n },\r\n ];\r\n\r\n return {analyzePort, analyzedData, analytic};\r\n};\r\n\r\nexport default useAnalytic;\r\n","import axios from \"axios\";\r\n\r\nexport const getAssetType = async () => {\r\n const asset = sessionStorage.getItem(\"asset\");\r\n if (!!asset) {\r\n return JSON.parse(asset);\r\n }\r\n let device_id = localStorage.getItem(\"device_id\");\r\n const url = \"https://fhc.insurtechthailand.com/ins/fund/data\";\r\n const info = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"assetclass_list\", // function ที่เรียกใช้\r\n };\r\n const response = await axios.post(url, info);\r\n if (!!response.data.data) {\r\n const sampleDict: {[key: string]: string} = {};\r\n response.data.data.forEach((element: {[key: string]: string}) => {\r\n const id = Object.keys(element)[0];\r\n sampleDict[id] = element[id];\r\n });\r\n sessionStorage.setItem(\"asset\", JSON.stringify(sampleDict));\r\n return sampleDict;\r\n }\r\n return {};\r\n};\r\n","import axios from \"axios\";\r\nimport {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport useAnalytic from \"./useAnalytic\";\r\nimport {getAssetType} from \"pages/retirementPlan/utils/fetch\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport {IAssetClass} from \"pages/retirementPlan/types\";\r\n\r\nconst useCustomMutualFund = () => {\r\n const {setPage} = useRouter();\r\n const {temp, setTemp} = useRetirementPlanContext();\r\n const {data, setData} = useContext(dataContext);\r\n const {fund_port} = temp;\r\n const sampleDict: {[key: string]: string} = {};\r\n const [assetClassDict, setAssetClassDict] = useState(sampleDict);\r\n const EmptyAssetArray: IAssetClass[] = [];\r\n const EmptyNumberArray: number[] = [];\r\n const [assetList, setAssetList] = useState(EmptyAssetArray);\r\n const [formData, setFormData] = useState({\r\n need_mutualfund_money: temp.need_mutualfund_money,\r\n selectedAssetList: !!fund_port ? fund_port.lists : [{f: \"\", w: 100, a: []}],\r\n percentList: !!fund_port\r\n ? fund_port.lists.map((list: IAssetClass) => {\r\n return list.w;\r\n })\r\n : EmptyNumberArray,\r\n port_id: fund_port.port_id.toString(),\r\n });\r\n\r\n // Fetch Data\r\n\r\n const getResult = async () => {\r\n let device_id = localStorage.getItem(\"device_id\");\r\n\r\n const url2 = \"https://fhc.insurtechthailand.com/ins/fund/list\";\r\n const {risk_data} = temp;\r\n const info2 = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"get_funds\", // function ที่เรียกใช้\r\n ...risk_data,\r\n };\r\n const response2 = await axios.post(url2, info2);\r\n if (response2.data.data) {\r\n setAssetList(response2.data.data);\r\n }\r\n setAssetClassDict(await getAssetType());\r\n };\r\n\r\n useEffect(() => {\r\n getResult();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n let fundOption: {value: string; text: string}[] = [];\r\n const fundAssetDict: {[key: string]: {[key: number]: number}[]} = {};\r\n assetList.forEach((asset) => {\r\n fundOption.push({\r\n value: asset.f,\r\n text: asset.f,\r\n });\r\n fundAssetDict[asset.f] = asset.a;\r\n });\r\n\r\n // Percents\r\n const percents: {[key: number]: number} = {};\r\n formData.selectedAssetList.forEach((asset: IAssetClass) => {\r\n //If fund list didn't have same fund as recomend\r\n if (!fundAssetDict[asset.f]) {\r\n fundOption.push({\r\n value: asset.f,\r\n text: asset.f,\r\n });\r\n fundAssetDict[asset.f] = asset.a;\r\n }\r\n //Calculate percent and weight\r\n asset.a.forEach((percent) => {\r\n const aType: number = parseFloat(Object.keys(percent)[0]);\r\n const aPercent = percent[aType];\r\n if (!percents[aType]) {\r\n percents[aType] = 0;\r\n }\r\n percents[aType] += aPercent * asset.w;\r\n });\r\n });\r\n const percentList: {name: string; percent: number}[] = [];\r\n for (const [key, value] of Object.entries(percents)) {\r\n percentList.push({\r\n name: assetClassDict[key],\r\n percent: parseFloat((value / 100).toFixed(2)),\r\n });\r\n }\r\n\r\n // selected Fund\r\n const selectedFundData = formData.selectedAssetList.map(\r\n (port: IAssetClass, index: number) => ({\r\n name: port.f,\r\n key: index,\r\n onNameChange: (value: string) => {\r\n formData.selectedAssetList[index].f = value;\r\n formData.selectedAssetList[index].a = fundAssetDict[value];\r\n setFormData({\r\n ...formData,\r\n selectedAssetList: formData.selectedAssetList,\r\n port_id: \"0\",\r\n });\r\n },\r\n percent: formData.percentList[index],\r\n onPercentChange: (value: number) => {\r\n const percent = Math.max(Math.min(value, 100), 0);\r\n formData.percentList[index] = percent;\r\n formData.selectedAssetList[index].w = percent;\r\n setFormData({\r\n ...formData,\r\n selectedAssetList: formData.selectedAssetList,\r\n percentList: formData.percentList,\r\n port_id: \"0\",\r\n });\r\n },\r\n type:\r\n port.a.length == 1 ? assetClassDict[Object.keys(port.a[0])[0]] : \"รวม\",\r\n\r\n options: fundOption,\r\n })\r\n );\r\n\r\n // Add Fund\r\n const addFund = () => {\r\n const tempFundList = formData.selectedAssetList;\r\n tempFundList.push({\r\n f: \"\",\r\n w: 0,\r\n a: [],\r\n });\r\n formData.percentList.push(0);\r\n setFormData({\r\n ...formData,\r\n selectedAssetList: tempFundList,\r\n percentList: formData.percentList,\r\n port_id: \"0\",\r\n });\r\n };\r\n\r\n // MoneyInput\r\n const onMoneyChange = (need_mutualfund_money: number) => {\r\n setFormData({...formData, need_mutualfund_money});\r\n };\r\n\r\n const moneyInputProps = {\r\n onChange: onMoneyChange,\r\n value: formData.need_mutualfund_money,\r\n };\r\n\r\n // Analyze Port\r\n\r\n const analyze = useAnalytic(formData, temp, setTemp);\r\n\r\n // Change Page\r\n const changePage = (page: string) => {\r\n const port = temp.fund_port;\r\n port.port_id = parseFloat(formData.port_id);\r\n if (port.port_id == 0) {\r\n port.name = \"custom\";\r\n port.lists = formData.selectedAssetList;\r\n port.stat = analyze.analytic;\r\n }\r\n setTemp({...temp, fund_port: port});\r\n setData({...data, retirePlan: {...temp, fund_port: port}});\r\n setPage(page);\r\n };\r\n\r\n return {\r\n addFund,\r\n moneyInputProps,\r\n selectedFundData,\r\n analyze,\r\n setPage: changePage,\r\n percentList,\r\n };\r\n};\r\n\r\nexport default useCustomMutualFund;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles(() => ({\r\n plusButton: {\r\n backgroundColor: color.blue[400],\r\n \"&:hover\": {\r\n backgroundColor: color.blue[400],\r\n },\r\n },\r\n container: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n marginTop: \"10px\",\r\n },\r\n}));\r\n","import {IconButton} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {TiPlus} from \"react-icons/ti\";\r\nimport {useStyles} from \"./styles\";\r\nimport {AddFundProps} from \"./types\";\r\n\r\nconst AddFundButton = ({addFund}: AddFundProps) => {\r\n const styles = useStyles();\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AddFundButton;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n inputContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n borderRadius: \"20px\",\r\n backgroundColor: color.grey[100],\r\n padding: \"10px\",\r\n flexWrap: \"wrap\",\r\n margin: \"10px 0 10px 0\",\r\n },\r\n inputLabel: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginBottom: \"10px\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {MoneyInputProps} from \"./types\";\r\n\r\nfunction MoneyInput(props: MoneyInputProps) {\r\n const {onChange, value} = props;\r\n const styles = useStyles();\r\n return (\r\n
\r\n \r\n ต้องการมีเงินใช้หลังเกษียณเดือนละ\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default MoneyInput;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n name: {\r\n position: \"absolute\",\r\n right: 0,\r\n bottom: \"85%\",\r\n padding: \"10px\",\r\n borderRadius: \"10px\",\r\n backgroundColor: color.grey[100],\r\n zIndex: 5,\r\n },\r\n}));\r\n","import React from \"react\";\r\nimport {Chart, PieSeries} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport {Palette} from \"@devexpress/dx-react-chart\";\r\nimport {Typography, useMediaQuery, useTheme} from \"@material-ui/core\";\r\nimport {BsCircleFill} from \"react-icons/bs\";\r\nimport getTypeColor from \"../../utils/getTypeColor\";\r\nimport {useStyles} from \"./styles\";\r\nimport {FundChartProps} from \"./types\";\r\n\r\nfunction FundChart(props: FundChartProps) {\r\n const {data, label, name} = props;\r\n const styles = useStyles();\r\n const theme = useTheme();\r\n const isSm = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n const palette = data.map((data) => getTypeColor(data.name));\r\n\r\n return (\r\n \r\n
\r\n {name && {name}}\r\n \r\n \r\n \r\n \r\n
\r\n {label && (\r\n
\r\n {data.map(({name, percent}, idx) => (\r\n
\r\n \r\n \r\n {name}\r\n \r\n {percent + \"%\"}\r\n
\r\n ))}\r\n
\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default FundChart;\r\n","import {useRetirementPlanContext} from \"../context/retirementPlanContext\";\r\n\r\nconst useExpectReward = () => {\r\n const {temp} = useRetirementPlanContext();\r\n const {fund_port} = temp;\r\n const expenseY = temp.need_mutualfund_money * 12;\r\n const expectreturn = fund_port.stat.expected / 100;\r\n const period = temp.retriment_age - temp.age;\r\n //Expense Year at retire age\r\n const expenseRetire =\r\n expenseY * Math.pow(1 + temp.inflationrate / 100, period);\r\n const budgetRetire = expenseRetire * (temp.death_age - temp.retriment_age);\r\n const savingY =\r\n budgetRetire * (expectreturn / (Math.pow(1 + expectreturn, period) - 1));\r\n const data = [];\r\n let A = savingY;\r\n for (let i = 1; i <= period; i++) {\r\n const year = [];\r\n year.push(i);\r\n year.push(i + temp.age);\r\n year.push(\r\n expectreturn.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })\r\n );\r\n A = savingY + A * (1 + expectreturn);\r\n year.push(\r\n A.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })\r\n );\r\n data.push(year);\r\n }\r\n return data;\r\n};\r\n\r\nexport default useExpectReward;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n cell: {\r\n border: \"1px solid white\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n },\r\n}));\r\n","import {Grid, Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport useExpectReward from \"../../hooks/useExpectReward\";\r\nimport {useStyles} from \"./styles\";\r\nimport {InvestmentProps} from \"./types\";\r\n\r\nfunction Investment(props: InvestmentProps) {\r\n const {closeDialog} = props;\r\n const data = useExpectReward();\r\n const styles = useStyles();\r\n const labels = [\r\n \"ปี\",\r\n \"อายุ\",\r\n \"อัตราผลตอบแทนที่คาดหวัง\",\r\n \"มูลค่าการลงทุนที่คาดหวัง\",\r\n ];\r\n\r\n const Cell = (props: {text: string | number; style: React.CSSProperties}) => (\r\n \r\n
\r\n {props.text}\r\n
\r\n
\r\n );\r\n\r\n const Row = (props: {\r\n data: (string | number)[];\r\n style: React.CSSProperties;\r\n }) => (\r\n \r\n {props.data.map((value, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n\r\n const ExpectValue = data.map((year, idx) => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n
\r\n \r\n {ExpectValue}\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Investment;\r\n","import {Box, makeStyles, Theme, Grid, Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport React from \"react\";\r\nimport AnalyzePortTable from \"./components/AnalyzePortTable\";\r\nimport Fund from \"./components/Fund\";\r\nimport useDialog from \"hooks/useDialog\";\r\nimport useCustomMutualFund from \"./hooks/useCustomMutualFund\";\r\nimport AddFundButton from \"./components/Fund/components/AddFundButton\";\r\nimport MoneyInput from \"pages/retirementPlan/components/MoneyInput\";\r\nimport FundChart from \"pages/retirementPlan/components/FundChart\";\r\nimport Investment from \"pages/retirementPlan/components/Investment\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n customFund: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n flexDirection: \"column-reverse\",\r\n },\r\n },\r\n}));\r\n\r\nfunction CustomMutualFund() {\r\n const styles = useStyles();\r\n const {Dialog, openDialog} = useDialog(Investment);\r\n const {\r\n addFund,\r\n moneyInputProps,\r\n selectedFundData,\r\n analyze,\r\n setPage,\r\n percentList,\r\n } = useCustomMutualFund();\r\n\r\n const selectedFund = selectedFundData.map((data) => );\r\n\r\n return (\r\n \r\n \r\n วางแผนเกษียณ\r\n \r\n \r\n \r\n \r\n \r\n {selectedFund}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CustomMutualFund;\r\n","export const Rpqversion = 1;\r\nconst RpqQuestion = [\r\n {\r\n question: \"ปัจจุบันคุณอายุ\",\r\n choices: [\"มากกว่า 55 ปี\", \"45-55 ปี\", \"35-44 ปี\", \"น้อยกว่า 35 ปี\"],\r\n },\r\n {\r\n question:\r\n \"ปัจจุบันคุณมีภาระทางการเงินและค่าใช้จ่ายประจำ เช่น ค่าผ่อนบ้าน รถ ค่าใช้จ่ายส่วนตัว และค่าเลี้ยงดูครอบครัว\",\r\n choices: [\r\n \"มากกว่าร้อยละ 75 ของรายได้ทั้งหมด\",\r\n \"ระหว่างร้อยละ 50 ถึงร้อยละ 75 ของรายได้ทั้งหมด\",\r\n \"ระหว่างร้อยละ 25 ถึงร้อยละ 50 ของรายได้ทั้งหมด\",\r\n \"น้อยกว่าร้อยละ 25 ของรายได้ทั้งหมด\",\r\n ],\r\n },\r\n {\r\n question: \"คุณมีสถานภาพทางการเงินในปัจจุบันอย่างไร\",\r\n choices: [\r\n \"มีทรัพย์สินน้อยกว่าหนี้สิน\",\r\n \"มีทรัพย์สินเท่ากับหนี้สิน\",\r\n \"มีทรัพย์สินมากกว่าหนี้สิน\",\r\n \"มีความมั่นใจว่ามีเงินออมหรือเงินลงทุนเพียงพอสำหรับการใช้ชีวิตหลังเกษียณอายุแล้ว\",\r\n ],\r\n },\r\n {\r\n question:\r\n \"คุณเคยมีประสบการณ์ หรือมีความรู้ในการลงทุนในทรัพย์สินกลุ่มใดต่อไปนี้บ้าง (เลือกได้มากกว่า 1 ข้อ)\",\r\n multiple: true,\r\n choices: [\r\n \"เงินฝากธนาคาร\",\r\n \"พันธบัตรรัฐบาล หรือกองทุนรวมพันธบัตรรัฐบาล\",\r\n \"หุ้นกู้ หรือกองทุนรวมตราสารหนี้\",\r\n \"หุ้นสามัญ หรือกองทุนรวมหุ้น หรือสินทรัพย์อื่นที่มีความเสี่ยงสูง\",\r\n ],\r\n },\r\n {\r\n question: \"ระยะเวลาที่คุณคาดว่าจะไม่มีความจำเป็นต้องใช้เงินลงทุนนี้\",\r\n choices: [\"ไม่เกิน 1 ปี\", \"1 ถึง 3 ปี\", \"3 ถึง 5 ปี\", \"มากกว่า 5 ปี\"],\r\n },\r\n {\r\n question: \"วัตถุประสงค์หลักในการลงทุนของคุณ คือ\",\r\n choices: [\r\n \"เน้นเงินต้นต้องปลอดภัยและได้รับผลตอบแทนสม่ำเสมอแต่ต่ำได้\",\r\n \"เน้นโอกาสได้รับผลตอบแทนที่สม่ำเสมอ แต่อาจเสี่ยงที่จะสูญเสียเงินต้นได้บ้าง\",\r\n \"เน้นโอกาสได้รับผลตอบแทนที่สูงขึ้น แต่อาจเสี่ยงที่จะสูญเสียเงินต้นได้มากขึ้น\",\r\n \"เน้นผลตอบแทนสูงสุดในระยะยาว แต่อาจเสี่ยงที่จะสูญเงินต้นส่วนใหญ่ได้\",\r\n ],\r\n },\r\n {\r\n question:\r\n \"เมื่อพิจารณารูปแสดงตัวอย่างผลตอบแทนของกลุ่มการลงทุนที่อาจเกิดขึ้นด้านล่าง คุณเต็มใจที่จะลงทุนในกลุ่มการลงทุนใด\",\r\n choices: [\r\n \"กลุ่มการลงทุนที่ 1 มีโอกาสได้รับผลตอบแทน 2.5% โดยไม่ขาดทุนเลย\",\r\n \"กลุ่มการลงทุนที่ 2 มีโอกาสได้รับผลตอบแทนสูงสุด 7% แต่อาจมีผลขาดทุนได้ถึง 1%\",\r\n \"กลุ่มการลงทุนที่ 3 มีโอกาสได้รับผลตอบแทนสูงสุด 15% แต่อาจมีผลขาดทุนได้ถึง 5%\",\r\n \"กลุ่มการลงทุนที่ 4 มีโอกาสได้รับผลตอบแทนสูงสุด 25% แต่อาจมีผลขาดทุนได้ถึง 15%\",\r\n ],\r\n },\r\n {\r\n question:\r\n \"ถ้าคุณเลือกลงทุนในทรัพย์สินที่มีโอกาสได้รับผลตอบแทนมาก แต่มีโอกาสขาดทุนสูงด้วยเช่นกัน คุณจะรู้สึกอย่างไร\",\r\n choices: [\r\n \"กังวลและตื่นตระหนกกลัวขาดทุน\",\r\n \"ไม่สบายใจแต่พอเข้าใจได้บ้าง\",\r\n \"เข้าใจและรับความผันผวนได้ในระดับหนึ่ง\",\r\n \"ไม่กังวลกับโอกาสขาดทุนสูง และหวังกับผลตอบแทนที่อาจจะได้รับสูงขึ้น\",\r\n ],\r\n },\r\n {\r\n question:\r\n \"คุณจะรู้สึกกังวล/รับไม่ได้ เมื่อมูลค่าเงินลงทุนของคุณมีการปรับตัวลดลงในสัดส่วนเท่าใด\",\r\n choices: [\r\n \"5% หรือน้อยกว่า\",\r\n \"มากกว่า 5%-10%\",\r\n \"มากกว่า 10%-20%\",\r\n \"มากกว่า 20% ขึ้นไป\",\r\n ],\r\n },\r\n {\r\n question:\r\n \"หากปีที่แล้วคุณลงทุนไป 100,000 บาท ปีนี้คุณพบว่ามูลค่าเงินลงทุนลดลงเหลือ 85,000 บาท คุณจะทำอย่างไร\",\r\n choices: [\r\n \"ตกใจ และต้องการขายการลงทุนที่เหลือทิ้ง\",\r\n \"กังวลใจ และจะปรับเปลี่ยนการลงทุนบางส่วนไปในทรัพย์สินที่เสี่ยงน้อยลง\",\r\n \"อดทนถือต่อไปได้ และรอผลตอบแทนปรับตัวกลับมา\",\r\n \"ยังมั่นใจ เพราะเข้าใจว่าต้องลงทุนระยะยาว และจะเพิ่มเงินลงทุนในแบบเดิมเพื่อเฉลี่ยต้นทุน\",\r\n ],\r\n },\r\n];\r\nexport default RpqQuestion;\r\n","import {Radio, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nconst Question = (props: {\r\n question: string;\r\n choices: string[];\r\n selected: number[][];\r\n questionIdx: number;\r\n setSelected: (selected: number[][]) => void;\r\n}) => {\r\n const {selected, setSelected, questionIdx} = props;\r\n return (\r\n
\r\n {props.question}\r\n
\r\n {props.choices.map((choice, idx) => (\r\n \r\n {\r\n if (selected[questionIdx].includes(idx)) {\r\n selected[questionIdx].splice(\r\n selected[questionIdx].indexOf(idx),\r\n 1\r\n );\r\n } else {\r\n selected[questionIdx].push(idx);\r\n }\r\n // selected[questionIdx] = [...selected[questionIdx]];\r\n setSelected([...selected]);\r\n }}\r\n />\r\n {choice}\r\n
\r\n ))}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Question;\r\n","import {Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport color from \"config/color\";\r\nimport {useField} from \"formik\";\r\nimport RpqQuestion from \"local/retirementPlan/RpqQuestion\";\r\nimport {useEffect, useState} from \"react\";\r\nimport Question from \"./components/Question\";\r\n\r\nfunction RPQ(props: {closeDialog: () => void}) {\r\n const [, , helpers] = useField(\"risk_accepted\");\r\n const [score, setScore] = useState(null);\r\n const [riskLevel, setRiskLevel] = useState(null);\r\n const [selected, setSelected] = useState(\r\n Array(RpqQuestion.length)\r\n .fill(0)\r\n .map(() => [])\r\n );\r\n useEffect(() => {\r\n let sum = 0;\r\n for (const arr of selected) {\r\n if (arr.length === 0) {\r\n setScore(null);\r\n setRiskLevel(null);\r\n return;\r\n }\r\n sum += Math.max(...arr) + 1;\r\n }\r\n setScore(sum);\r\n if (sum <= 14) {\r\n setRiskLevel(1);\r\n } else if (sum <= 21) {\r\n setRiskLevel(2);\r\n } else if (sum <= 29) {\r\n setRiskLevel(3);\r\n } else if (sum <= 36) {\r\n setRiskLevel(4);\r\n } else {\r\n setRiskLevel(5);\r\n }\r\n }, [selected]);\r\n return (\r\n \r\n \r\n คำถามข้อ 1 - 10 ใช้เพื่อประเมินความเหมาะสมในการลงทุนของท่าน\r\n \r\n {RpqQuestion.map((data, idx) => (\r\n \r\n ))}\r\n \r\n {score && (\r\n <>\r\n
\r\n รวมคะแนน\r\n \r\n {score}\r\n \r\n
\r\n
\r\n ระดับความเสี่ยงที่ยอมรับได้\r\n \r\n {riskLevel}\r\n \r\n
\r\n \r\n )}\r\n \r\n {\r\n if (riskLevel) {\r\n helpers.setValue(String(riskLevel));\r\n }\r\n props.closeDialog();\r\n }}\r\n style={{display: \"block\", margin: \"auto\", marginTop: \"20px\"}}\r\n >\r\n กลับหน้ากรอกข้อมูล\r\n \r\n \r\n );\r\n}\r\n\r\nexport default RPQ;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n lineContainer: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n line: {\r\n flexGrow: 1,\r\n height: \"3px\",\r\n },\r\n dot: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n borderRadius: \"10px\",\r\n backgroundColor: color.grey[300],\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"15px\",\r\n height: \"15px\",\r\n },\r\n },\r\n numberInput: {\r\n width: \"120px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100px\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"90px\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {AgeInputProps} from \"./types\";\r\n\r\nconst Line = (props: {style: React.CSSProperties}) => {\r\n const styles = useStyles();\r\n return
;\r\n};\r\nconst Dot = () => {\r\n const styles = useStyles();\r\n return
;\r\n};\r\n\r\nfunction AgeInput(props: AgeInputProps) {\r\n const {start, end, label, name} = props;\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {label}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default AgeInput;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n label: {\r\n fontSize: \"1.25rem\",\r\n flexShrink: 0,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"1rem\",\r\n flexShrink: 1,\r\n },\r\n },\r\n container: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n margin: \"10px 10px 10px 0px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"5px 5px 5px 0px\",\r\n },\r\n },\r\n}));\r\n","import {Box, Typography} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport {FormItemProps} from \"./types\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction FormItem(props: FormItemProps) {\r\n const styles = useStyles();\r\n const {label, input, width} = props;\r\n return (\r\n \r\n \r\n {label}\r\n \r\n {input}\r\n \r\n );\r\n}\r\n\r\nexport default FormItem;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n sliderLabel: {\r\n maxWidth: \"100%\",\r\n fontSize: \"1.25rem\",\r\n flexShrink: 0,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"1rem\",\r\n flexShrink: 1,\r\n },\r\n },\r\n sliderContainer: {\r\n display: \"flex\",\r\n flexGrow: 1,\r\n width: \"100%\",\r\n flexWrap: \"wrap\",\r\n marginTop: \"15px\",\r\n },\r\n}));\r\n","import {Typography, Box, Slider} from \"@material-ui/core\";\r\nimport {useField} from \"formik\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {SliderInputProp} from \"./types\";\r\n\r\nfunction SliderInput(props: SliderInputProp) {\r\n const styles = useStyles();\r\n const {name} = props;\r\n const [field, , helpers] = useField(name);\r\n\r\n const handleChange = (event: any, newValue: number | number[]) => {\r\n helpers.setValue(newValue);\r\n };\r\n\r\n return (\r\n
\r\n \r\n ต้องการออมเงินด้วย\r\n \r\n \r\n ประกันชีวิต\r\n `${value}%`}\r\n aria-labelledby=\"discrete-slider-small-steps\"\r\n step={10}\r\n marks\r\n min={0}\r\n max={100}\r\n value={field.value}\r\n onChange={handleChange}\r\n valueLabelDisplay=\"auto\"\r\n />\r\n กองทุนรวม\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SliderInput;\r\n","export const risk_options = [\r\n {\r\n value: \"0\",\r\n text: \"\",\r\n },\r\n {\r\n value: \"1\",\r\n text: \"ความเสี่ยงต่ำ\",\r\n },\r\n {\r\n value: \"2\",\r\n text: \"ความเสี่ยงปานกลางค่อนข้างต่ำ\",\r\n },\r\n {\r\n value: \"3\",\r\n text: \"ความเสี่ยงปานกลางค่อนข้างสูง\",\r\n },\r\n {\r\n value: \"4\",\r\n text: \"ความเสี่ยงสูง\",\r\n },\r\n {\r\n value: \"5\",\r\n text: \"ความเสี่ยงสูงมาก\",\r\n },\r\n];\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n RPQ: {\r\n fontSize: \"1.25rem\",\r\n width: \"200px\",\r\n flexGrow: 1,\r\n margin: \"auto\",\r\n maxWidth: \"350px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"1rem\",\r\n maxWidth: \"300px\",\r\n },\r\n },\r\n ageInput: {\r\n margin: \"10px 0 10px 0\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n },\r\n}));\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n button: {\r\n width: \"250px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n buttonContainer: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: \"10px\",\r\n justifyContent: \"center\",\r\n },\r\n },\r\n}));\r\n","import Typography from \"@material-ui/core/Typography\";\r\nimport Button from \"common/components/Button\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\nimport {SavingChoiceProps} from \"./types\";\r\n\r\nconst SavingChoiceButton = ({changePage}: SavingChoiceProps) => {\r\n const styles = useStyles();\r\n return (\r\n
\r\n \r\n ทางเลือกในการออม\r\n \r\n {\r\n changePage(\"insurance\");\r\n }}\r\n >\r\n ประกันชีวิต\r\n \r\n {\r\n changePage(\"mutualFund\");\r\n }}\r\n >\r\n กองทุนรวม\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SavingChoiceButton;\r\n","import {IRetirePlan} from \"pages/retirementPlan/types\";\r\n\r\nexport const getLowestRetirement = (values: IRetirePlan) => {\r\n return (\r\n values.outcome *\r\n 0.7 *\r\n Math.pow(1 + values.inflationrate / 100, values.retriment_age - values.age)\r\n ).toLocaleString();\r\n};\r\n","import {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport {useContext} from \"react\";\r\nimport {IFormField} from \"../types\";\r\n\r\nconst useForm = () => {\r\n const {setPage} = useRouter();\r\n const {data, setData} = useContext(dataContext);\r\n const {temp, setTemp} = useRetirementPlanContext();\r\n const {\r\n gender,\r\n age,\r\n retriment_age,\r\n death_age,\r\n outcome,\r\n inflationrate,\r\n retryment_rq,\r\n need_insurance,\r\n } = temp;\r\n\r\n const initialValues: IFormField = {\r\n gender,\r\n age,\r\n retriment_age,\r\n death_age,\r\n outcome,\r\n inflationrate,\r\n retryment_rq,\r\n need_insurance,\r\n risk_accepted:\r\n !temp.risk_accepted || temp.risk_accepted == -1\r\n ? \"0\"\r\n : temp.risk_accepted.toString(),\r\n };\r\n\r\n const handleClick = (values: IFormField & {page: string}) => {\r\n let need_insurance_money = temp.need_insurance_money;\r\n let need_mutualfund_money = temp.need_mutualfund_money;\r\n if (\r\n need_insurance_money == -1 ||\r\n temp.need_insurance != values.need_insurance ||\r\n temp.retryment_rq != values.retryment_rq\r\n ) {\r\n need_insurance_money =\r\n (values.need_insurance * values.retryment_rq) / 100;\r\n need_mutualfund_money =\r\n ((100 - values.need_insurance) * values.retryment_rq) / 100;\r\n }\r\n const updateTemp = {\r\n gender: values.gender,\r\n age: values.age,\r\n retriment_age: values.retriment_age,\r\n death_age: values.death_age,\r\n outcome: values.outcome,\r\n inflationrate: values.inflationrate,\r\n retryment_rq: values.retryment_rq,\r\n need_insurance: values.need_insurance,\r\n need_insurance_money,\r\n need_mutualfund: 100 - values.need_insurance,\r\n need_mutualfund_money,\r\n risk_accepted: parseInt(values.risk_accepted),\r\n risk_data: {\r\n risk_form_id: 0,\r\n risk_score: 0,\r\n risk_assessed: 0,\r\n },\r\n };\r\n setTemp({...temp, ...updateTemp});\r\n setData({...data, retirePlan: {...temp, ...updateTemp}});\r\n setPage(values.page);\r\n };\r\n return {initialValues, handleClick};\r\n};\r\n\r\nexport default useForm;\r\n","import {Box, Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport FormContainer from \"common/components/FormContainer\";\r\nimport GenderInput from \"common/components/GenderInput\";\r\nimport NumberInput from \"common/components/NumberInput\";\r\nimport SelectInput from \"common/components/SelectInput\";\r\nimport {Form, Formik, useField, useFormikContext} from \"formik\";\r\nimport useDialog from \"hooks/useDialog\";\r\nimport React from \"react\";\r\nimport RPQ from \"../../components/RPQ\";\r\nimport AgeInput from \"./components/AgeInput\";\r\nimport FormItem from \"./components/FormItem\";\r\nimport SliderInput from \"./components/SliderInput\";\r\nimport {risk_options} from \"./constants\";\r\nimport {useStyles} from \"./styles\";\r\nimport SavingChoiceButton from \"./components/SavingChoiceButton\";\r\nimport {getLowestRetirement} from \"./utils\";\r\nimport useForm from \"./hooks/useForm\";\r\nimport {IRetirePlan} from \"pages/retirementPlan/types\";\r\n\r\nconst RetirementPlanForm = () => {\r\n const styles = useStyles();\r\n\r\n const {values}: {values: IRetirePlan} = useFormikContext();\r\n const [, , page] = useField(\"page\");\r\n\r\n const {Dialog, openDialog} = useDialog(RPQ);\r\n\r\n const Questions = (\r\n \r\n }\r\n />\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n {getLowestRetirement(values)}\r\n \r\n บาท/เดือน\r\n
\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n วางแผนเกษียณ\r\n \r\n\r\n {Questions}\r\n {\r\n page.setValue(newPage);\r\n }}\r\n />\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nconst Wrapper = () => {\r\n const {initialValues, handleClick} = useForm();\r\n return (\r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Wrapper;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n planButtonContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n justifyContent: \"space-evenly\",\r\n },\r\n planButton: {\r\n width: \"30%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n}));\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n planButton: {\r\n width: \"30%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n}));\r\n","import Button from \"common/components/Button\";\r\nimport color from \"config/color\";\r\nimport {useStyles} from \"./styles\";\r\nimport {PlanButtonProps} from \"./types\";\r\n\r\nexport const PlanButton = (props: PlanButtonProps) => {\r\n const {text, handleClick, isSelected} = props;\r\n const styles = useStyles();\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n","import axios from \"axios\";\r\nimport {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport {useContext, useEffect, useState} from \"react\";\r\n\r\nconst useInsurance = () => {\r\n const {temp, setTemp} = useRetirementPlanContext();\r\n const [allPlan, setAllPlan] = useState([]);\r\n const defaultPlan =\r\n temp.insure_plan.plan_id !== -1 ? temp.insure_plan.plan_id.toString() : \"1\";\r\n const [plan, setPlan] = useState(defaultPlan);\r\n const [formData, setFormData] = useState({\r\n need_insurance_money: temp.need_insurance_money,\r\n });\r\n const {data, setData} = useContext(dataContext);\r\n const {setPage} = useRouter();\r\n\r\n // Get Data\r\n const getResult = async () => {\r\n let device_id = localStorage.getItem(\"device_id\");\r\n const url = \"https://fhc.insurtechthailand.com/ins/retirement/cal\";\r\n if (!!temp) {\r\n const {\r\n age,\r\n gender,\r\n retriment_age,\r\n death_age,\r\n outcome,\r\n inflationrate,\r\n retryment_rq,\r\n risk_data,\r\n need_insurance,\r\n risk_accepted,\r\n } = temp;\r\n const info = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"ins_recommend\", // function ที่เรียกใช้ ins_recommend , fund_recommend\r\n sex: gender, //เพศ\r\n age, //อายุปัจจุบัน\r\n retriment_age, // defualt 60\r\n death_age, // defualt 85\r\n outcome, //รายจ่ายปัจจุบัน\r\n inflationrate, //อัตราเงินเฟ้อ\r\n retryment_sh:\r\n outcome * 0.7 * (1 + inflationrate) ** (retriment_age - age), //เงินบำนาญขั้นต่ำที่ควรมี = outcome * 0.7 ((1+(inflation))**(retriment_age - Age))\r\n retryment_rq, //เงินบำนาญที่ต้องการรมี ระบุเอง\r\n risk_form_id: risk_data.risk_form_id, //not edit default จาก response.risk_form_id\r\n risk_assessed: risk_data.risk_assessed, //not edit default จาก response.risk_assessed\r\n risk_accepted, //ความเสี่ยงจากการลงทุนที่รับได้ default จาก response.risk_assessed แต่เลือกเปลี่ยนเองได้\r\n need_insurance: need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n need_mutualfund: 100 - need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n const response = await axios.post(url, info);\r\n if (!!response.data.ins_plans) {\r\n setAllPlan(response.data.ins_plans);\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n getResult();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // Change Plan\r\n const handlePlanChange = (plan_order: number) => () => {\r\n temp.insure_plan = allPlan[plan_order];\r\n setPlan(String(plan_order + 1));\r\n };\r\n\r\n // Change Page\r\n const handlePageChange = (page: string) => () => {\r\n if (temp.insure_plan.plan_id === -1) {\r\n temp.insure_plan = allPlan[0];\r\n }\r\n setTemp({\r\n ...temp,\r\n need_insurance_money: formData.need_insurance_money,\r\n });\r\n setData({\r\n ...data,\r\n retirePlan: {\r\n ...temp,\r\n need_insurance_money: formData.need_insurance_money,\r\n },\r\n });\r\n setPage(page);\r\n };\r\n\r\n // Insurance Money\r\n const insuranceMoney = formData.need_insurance_money;\r\n const handleMoneyChange = (need_insurance_money: number) => {\r\n setFormData({...formData, need_insurance_money});\r\n };\r\n\r\n return {\r\n allPlan,\r\n insuranceMoney,\r\n handleMoneyChange,\r\n handlePlanChange,\r\n plan,\r\n handlePageChange,\r\n };\r\n};\r\n\r\nexport default useInsurance;\r\n","import color from \"config/color\";\r\n\r\nexport const idtoplan: {[key: string]: string} = {\r\n \"1\": \"AIA_ANNUITY_FIX\",\r\n \"2\": \"MUANG_THAI_8560\",\r\n \"3\": \"MUANG_THAI_9960\",\r\n};\r\nexport const planimgname = [\"\", \"AIA_ANNUITY_FIX\", \"MUANG_THAI_8560\", \"MUANG_THAI_9960\"];\r\n\r\nexport const planList = [\"AIA ANNUITY FIX\", \"เมืองไทย 8560\", \"เมืองไทย 9960\"];\r\n\r\nexport const tableConfig = {\r\n type: \"column\" as \"column\" | \"row\",\r\n cellStyles: {\r\n headStyle: {\r\n borderRadius: \"20px 20px 0 0\",\r\n backgroundColor: color.blue[200],\r\n },\r\n rowHeadStyle: {\r\n color: \"white\",\r\n backgroundColor: color.blue[400],\r\n },\r\n },\r\n tableKey: [\"plan\", \"premium\", \"pay_period\", \"period\"],\r\n label: {\r\n plan: \"\",\r\n premium: \"เบี้ยประกัน\",\r\n pay_period: \"ระยะเวลาจ่าย\",\r\n period: \"ช่วงอายุรับเงินบำนาญ\",\r\n },\r\n};\r\n","import {Box, Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport Table from \"common/components/table\";\r\nimport MoneyInput from \"../../components/MoneyInput\";\r\nimport {useStyles} from \"./styles\";\r\nimport {PlanButton} from \"./components/PlanButton\";\r\nimport useInsurance from \"./hooks/useInsurance\";\r\n//import {getImages} from \"./utils\";\r\nimport {idtoplan, planList, tableConfig} from \"./constants\";\r\n\r\n\r\nfunction Insurance() {\r\n const styles = useStyles();\r\n const {\r\n allPlan,\r\n insuranceMoney,\r\n handleMoneyChange,\r\n plan,\r\n handlePlanChange,\r\n handlePageChange,\r\n } = useInsurance();\r\n\r\n return (\r\n \r\n \r\n วางแผนเกษียณ\r\n \r\n \r\n
\r\n\r\n {/* Select Plan */}\r\n
\r\n \r\n เลือกผลประโยชน์ความคุ้มครอง\r\n \r\n
\r\n {planList.map((text, idx) => (\r\n \r\n ))}\r\n
\r\n \r\n
\r\n\r\n {/* Change Page */}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Insurance;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n container: {\r\n width: \"200px\",\r\n margin: \"5px\",\r\n backgroundColor: color.grey[100],\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n boxShadow: \"2px 2px 2px #D3D3D3\",\r\n padding: \"10px 5px 10px 5px \",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"0 0 10px 0\",\r\n width: \"100%\",\r\n maxWidth: \"calc(100vw - 30px)\",\r\n },\r\n },\r\n title: {\r\n marginTop: \"20px\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n wordBreak: \"break-word\",\r\n whiteSpace: \"normal\",\r\n minHeight: \"65px\",\r\n },\r\n },\r\n chart: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flexShrink: 1,\r\n margin: \"15px 0 15px 0\",\r\n },\r\n data: {\r\n width: \"100%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"flex\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport FundChart from \"../../../../components/FundChart\";\r\nimport {useStyles} from \"./styles\";\r\nimport {PortProps} from \"./types\";\r\n\r\nfunction Port(props: PortProps) {\r\n const {\r\n risk,\r\n percent,\r\n expectedReturn,\r\n SD,\r\n recommend,\r\n selected,\r\n port_id,\r\n onClick,\r\n } = props;\r\n\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n {risk}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {recommend && (\r\n \r\n พอร์ตที่แนะนำ\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst Content = (props: {\r\n thaiName: string;\r\n englishName: string;\r\n value: string | number;\r\n}) => {\r\n const {thaiName, englishName, value} = props;\r\n return (\r\n
\r\n \r\n {thaiName}\r\n \r\n {englishName}\r\n \r\n {value}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Port;\r\n","import axios from \"axios\";\r\nimport {dataContext} from \"common/context/context\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport {IFundRetirePort} from \"pages/retirementPlan/types\";\r\nimport {getAssetType} from \"pages/retirementPlan/utils/fetch\";\r\nimport {useContext, useEffect, useState} from \"react\";\r\n\r\nconst useMutualFund = () => {\r\n const {setPage} = useRouter();\r\n const {temp, setTemp} = useRetirementPlanContext();\r\n const {data, setData} = useContext(dataContext);\r\n const sampleDict: {[key: string]: string} = {};\r\n const [assetClassDict, setAssetClassDict] = useState(sampleDict);\r\n\r\n const [recPorts, setRecPorts] = useState([]);\r\n const [selected, setSelected] = useState(-1);\r\n\r\n const getResult = async () => {\r\n let device_id = localStorage.getItem(\"device_id\");\r\n const url = \"https://fhc.insurtechthailand.com/ins/retirement/cal\";\r\n if (!!temp) {\r\n const {\r\n age,\r\n gender,\r\n retriment_age,\r\n death_age,\r\n outcome,\r\n inflationrate,\r\n retryment_rq,\r\n risk_data,\r\n need_insurance,\r\n risk_accepted,\r\n } = temp;\r\n const info = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"fund_recommend\", // function ที่เรียกใช้ ins_recommend , fund_recommend\r\n sex: gender, //เพศ\r\n age, //อายุปัจจุบัน\r\n retriment_age, // defualt 60\r\n death_age, // defualt 85\r\n outcome, //รายจ่ายปัจจุบัน\r\n inflationrate, //อัตราเงินเฟ้อ\r\n retryment_sh:\r\n outcome * 0.7 * (1 + inflationrate) ** (retriment_age - age), //เงินบำนาญขั้นต่ำที่ควรมี = outcome * 0.7 ((1+(inflation))**(retriment_age - Age))\r\n retryment_rq, //เงินบำนาญที่ต้องการรมี ระบุเอง\r\n risk_form_id: risk_data.risk_form_id, //not edit default จาก response.risk_form_id\r\n risk_assessed: risk_data.risk_assessed, //not edit default จาก response.risk_assessed\r\n risk_accepted, //ความเสี่ยงจากการลงทุนที่รับได้ default จาก response.risk_assessed แต่เลือกเปลี่ยนเองได้\r\n need_insurance: need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n need_mutualfund: 100 - need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n const response = await axios.post(url, info);\r\n if (!!response.data.fund_ports) {\r\n setRecPorts(response.data.fund_ports);\r\n }\r\n }\r\n setAssetClassDict(await getAssetType());\r\n };\r\n\r\n useEffect(() => {\r\n getResult();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // Page Change\r\n const handlePageChange = (page: string) => () => {\r\n let selectPlan: IFundRetirePort = temp.fund_port;\r\n if (selected != -1) {\r\n selectPlan = recPorts[selected];\r\n }\r\n setTemp({...temp, fund_port: selectPlan});\r\n setData({...data, retirePlan: {...temp, fund_port: selectPlan}});\r\n setPage(page);\r\n };\r\n\r\n // Ports Data\r\n const portsData = recPorts.map((port: IFundRetirePort, index: number) => {\r\n const percents: {[key: number]: number} = {};\r\n let allweight = 0;\r\n port.lists.forEach((asset) => {\r\n asset.a.forEach((percent) => {\r\n const aType: number = parseFloat(Object.keys(percent)[0]);\r\n const aPercent = percent[aType];\r\n if (!percents[aType]) {\r\n percents[aType] = 0;\r\n }\r\n percents[aType] += aPercent * asset.w;\r\n });\r\n allweight += asset.w;\r\n });\r\n const percentList: {name: string; percent: number}[] = [];\r\n for (const [key, value] of Object.entries(percents)) {\r\n percentList.push({\r\n name: assetClassDict[key],\r\n percent: value / allweight,\r\n });\r\n }\r\n return {\r\n risk: port.name,\r\n percent: percentList,\r\n expectedReturn: port.stat.expected,\r\n SD: port.stat.sd,\r\n recommend: index + 1 === temp.risk_accepted,\r\n selected: selected === index,\r\n key: index,\r\n port_id: port.port_id,\r\n onClick: () => setSelected(index),\r\n };\r\n });\r\n\r\n return {portsData, handlePageChange};\r\n};\r\n\r\nexport default useMutualFund;\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n button: {\r\n width: \"250px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n}));\r\n","import Button from \"common/components/Button\";\r\nimport React from \"react\";\r\nimport ScrollMenu from \"react-horizontal-scrolling-menu\";\r\nimport Port from \"./components/Port\";\r\nimport {RiArrowRightSLine, RiArrowLeftSLine} from \"react-icons/ri\";\r\nimport {Hidden, Typography} from \"@material-ui/core\";\r\nimport useMutualFund from \"./hooks/useMutualFund\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction MutualFund() {\r\n const styles = useStyles();\r\n const {portsData, handlePageChange} = useMutualFund();\r\n\r\n const ports = portsData.map((data) => );\r\n\r\n return (\r\n
\r\n \r\n วางแผนเกษียณ\r\n \r\n \r\n \r\n \r\n
\r\n }\r\n arrowRight={}\r\n wrapperStyle={{\r\n margin: \"auto\",\r\n }}\r\n innerWrapperStyle={{\r\n display: \"flex\",\r\n alignItems: \"stretch\",\r\n }}\r\n itemStyle={{\r\n display: \"flex\",\r\n alignItems: \"stretch\",\r\n }}\r\n />\r\n \r\n {ports}\r\n \r\n \r\n จัดพอร์ตด้วยตัวเอง\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MutualFund;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n plan: {\r\n textAlign: \"center\",\r\n padding: \"10px\",\r\n backgroundColor: color.blue[100],\r\n borderRadius: \"10px\",\r\n },\r\n text: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n textAlign: \"center\",\r\n },\r\n },\r\n}));\r\n","import {Typography} from \"@material-ui/core\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport React from \"react\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction Insurance() {\r\n const styles = useStyles();\r\n const {temp} = useRetirementPlanContext();\r\n if (temp.insure_plan.plan === \"\") {\r\n return (\r\n
\r\n \r\n ประกันชีวิต\r\n \r\n \r\n ไม่ได้เลือกข้อมูลในส่วนนี้\r\n \r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n ประกันชีวิต\r\n \r\n
\r\n \r\n {temp.insure_plan.plan}\r\n \r\n
\r\n
\r\n \r\n เบี้ยประกัน {temp.insure_plan.premium} บาท\r\n \r\n \r\n ระยะเวลาจ่ายเบี้ยฯ {temp.insure_plan.pay_period} ปี\r\n \r\n \r\n ช่วงอายุรับเงินบำนาญ {temp.insure_plan.period}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Insurance;\r\n","import {Typography} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport color from \"config/color\";\r\nimport useDialog from \"hooks/useDialog\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport FundChart from \"../../../../components/FundChart\";\r\nimport Investment from \"../../../../components/Investment\";\r\nimport {getAssetType} from \"../../../../utils/fetch\";\r\n\r\nfunction MutualFund() {\r\n const {temp} = useRetirementPlanContext();\r\n const {Dialog, openDialog} = useDialog(Investment);\r\n const sampleDict: {[key: string]: string} = {};\r\n const [assetClassDict, setAssetClassDict] = useState(sampleDict);\r\n const percents: {[key: number]: number} = {};\r\n useEffect(() => {\r\n getAsset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const getAsset = async () => {\r\n setAssetClassDict(await getAssetType());\r\n };\r\n\r\n let allweight = 0;\r\n temp.fund_port.lists.forEach((asset) => {\r\n asset.a.forEach((percent) => {\r\n const aType: number = parseFloat(Object.keys(percent)[0]);\r\n const aPercent = percent[aType];\r\n if (!percents[aType]) {\r\n percents[aType] = 0;\r\n }\r\n percents[aType] += aPercent * asset.w;\r\n });\r\n allweight += asset.w;\r\n });\r\n const percentList: {name: string; percent: number}[] = [];\r\n for (const [key, value] of Object.entries(percents)) {\r\n percentList.push({\r\n name: assetClassDict[key],\r\n percent: parseFloat((value / allweight).toFixed(2)),\r\n });\r\n }\r\n const MutualFundItem = (props: {name: string; value: number | string}) => (\r\n \r\n \r\n {props.name}\r\n \r\n \r\n {props.value.toLocaleString()}\r\n \r\n \r\n );\r\n\r\n if (temp.fund_port.port_id === -1) {\r\n return (\r\n
\r\n \r\n กองทุนรวม\r\n \r\n \r\n ไม่ได้เลือกข้อมูลในส่วนนี้\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n กองทุนรวม\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MutualFund;\r\n","import axios from \"axios\";\r\nimport {useRetirementPlanContext} from \"pages/retirementPlan/context/retirementPlanContext\";\r\nimport {useEffect, useState} from \"react\";\r\n\r\nconst useResult = () => {\r\n const [fetchData, setFetchData] = useState({\r\n need_savings: 53333,\r\n retryment_rq: 30000,\r\n });\r\n const {temp} = useRetirementPlanContext();\r\n const getResult = async () => {\r\n let device_id = localStorage.getItem(\"device_id\");\r\n const url = \"https://fhc.insurtechthailand.com/ins/retirement/summary\";\r\n if (!!temp) {\r\n const {\r\n age,\r\n gender,\r\n retriment_age,\r\n death_age,\r\n outcome,\r\n inflationrate,\r\n retryment_rq,\r\n risk_data,\r\n need_insurance,\r\n risk_accepted,\r\n insure_plan,\r\n fund_port,\r\n } = temp;\r\n const info = {\r\n device_id: device_id, // device_id ของ local\r\n cal_type: \"calculate\", // function ที่เรียกใช้ ins_recommend , fund_recommend\r\n sex: gender, //เพศ\r\n age, //อายุปัจจุบัน\r\n retriment_age, // defualt 60\r\n death_age, // defualt 85\r\n outcome, //รายจ่ายปัจจุบัน\r\n inflationrate, //อัตราเงินเฟ้อ\r\n retryment_sh:\r\n outcome * 0.7 * (1 + inflationrate) ** (retriment_age - age), //เงินบำนาญขั้นต่ำที่ควรมี = outcome * 0.7 ((1+(inflation))**(retriment_age - Age))\r\n retryment_rq, //เงินบำนาญที่ต้องการรมี ระบุเอง\r\n risk_form_id: risk_data.risk_form_id, //not edit default จาก response.risk_form_id\r\n risk_assessed: risk_data.risk_assessed, //not edit default จาก response.risk_assessed\r\n risk_accepted, //ความเสี่ยงจากการลงทุนที่รับได้ default จาก response.risk_assessed แต่เลือกเปลี่ยนเองได้\r\n need_insurance: need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n need_mutualfund: 100 - need_insurance, // 0 - 100 need_insurance + need_mutualfund = 100\r\n select_plan: insure_plan,\r\n fund_port,\r\n time: Date.now(),\r\n calculateAT: new Date().toLocaleString(),\r\n };\r\n const response = await axios.post(url, info);\r\n if (!!response.data.data) {\r\n setFetchData(response.data.data);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getResult();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return {fetchData};\r\n};\r\n\r\nexport default useResult;\r\n","import {makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n summaryValue: {\r\n display: \"flex\",\r\n backgroundColor: \"white\",\r\n borderRadius: \"10px\",\r\n width: \"70%\",\r\n padding: \"10px\",\r\n margin: \"auto\",\r\n },\r\n summaryContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n backgroundColor: color.grey[100],\r\n borderRadius: \"20px\",\r\n padding: \"0 10px 10px 10px\",\r\n marginTop: \"20px\",\r\n },\r\n savingPlanTitle: {\r\n backgroundColor: color.blue[400],\r\n color: \"white\",\r\n padding: \"10px\",\r\n borderRadius: \"10px\",\r\n textAlign: \"center\",\r\n },\r\n}));\r\n","import {\r\n Box,\r\n Divider,\r\n Typography,\r\n useMediaQuery,\r\n useTheme,\r\n} from \"@material-ui/core\";\r\nimport Button from \"common/components/Button\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport React from \"react\";\r\nimport Insurance from \"./components/Insurance\";\r\nimport MutualFund from \"./components/MutualFund\";\r\nimport useResult from \"./hooks/useResult\";\r\nimport {useStyles} from \"./styles\";\r\n\r\nfunction Result() {\r\n const {setPage} = useRouter();\r\n const styles = useStyles();\r\n const theme = useTheme();\r\n const isMd = useMediaQuery(theme.breakpoints.down(\"md\"));\r\n const {fetchData} = useResult();\r\n\r\n // Summary\r\n const SummaryItem = (props: {text: string; value: string | number}) => (\r\n
\r\n \r\n {props.text}\r\n \r\n
\r\n \r\n {props.value.toLocaleString()}\r\n \r\n บาท\r\n
\r\n
\r\n );\r\n\r\n const Summary = () => (\r\n
\r\n \r\n \r\n
\r\n );\r\n\r\n // Savings plan\r\n const SavingsPlan = () => (\r\n
\r\n
\r\n \r\n คำแนะนำการวางแผนออมเงิน\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n return (\r\n \r\n \r\n วางแผนเกษียณ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Result;\r\n","import {RouteContext} from \"common/context/routeContext\";\r\nimport React from \"react\";\r\nimport {useContext} from \"react\";\r\nimport routes, {pageRoutes} from \"routes\";\r\n\r\nenum Process {\r\n menu,\r\n form,\r\n result,\r\n}\r\n\r\ninterface IUseRouter {\r\n setMenu: (menu: string) => void;\r\n setProcess: (process: number) => void;\r\n process: number;\r\n latestProcess: number;\r\n setPage: (page: string) => void;\r\n}\r\n\r\nfunction useRouter(): IUseRouter {\r\n const routeContext = useContext(RouteContext);\r\n\r\n const error = (): void => {\r\n routeContext.setProcess(0);\r\n routeContext.setLatestProcess(0);\r\n routeContext.setMenu(\"default\");\r\n };\r\n\r\n const getPage = (page: string) => {\r\n return pageRoutes[routeContext.menu][page];\r\n };\r\n\r\n // Menu\r\n const setMenu = (menu: string): void => {\r\n if (routes[routeContext.menu as never]) {\r\n routeContext.setProcess(1);\r\n routeContext.setLatestProcess(1);\r\n routeContext.setMenu(menu);\r\n routeContext.setPage(\"default\");\r\n } else {\r\n error();\r\n }\r\n };\r\n\r\n // Page\r\n\r\n const setPage = (page: string): void => {\r\n if (getPage(page)) {\r\n routeContext.setPage(page);\r\n routeContext.setProcess(Process[getPage(page).type]);\r\n } else {\r\n error();\r\n }\r\n };\r\n\r\n const setProcess = (process: number) => {\r\n if (Process[getPage(routeContext.page).type] !== process) {\r\n for (const page in pageRoutes[routeContext.menu]) {\r\n if (Process[getPage(page).type] === process) {\r\n setPage(page);\r\n break;\r\n }\r\n }\r\n }\r\n routeContext.setProcess(process);\r\n };\r\n\r\n return {\r\n setMenu,\r\n setProcess,\r\n process: routeContext.process,\r\n latestProcess: routeContext.latestProcess,\r\n setPage,\r\n };\r\n}\r\n\r\nconst MenuRoutes = React.memo((): JSX.Element => {\r\n const routeContext = useContext(RouteContext);\r\n if (routeContext.process === 0) return React.createElement(routes[\"home\"]);\r\n return React.createElement(routes[routeContext.menu as never]);\r\n});\r\n\r\nconst PageRoutes = React.memo((): JSX.Element => {\r\n const routeContext = useContext(RouteContext);\r\n if (routeContext.process === 0) return <>Loading;\r\n return React.createElement(\r\n pageRoutes[routeContext.menu][routeContext.page].component\r\n );\r\n});\r\n\r\nexport default useRouter;\r\nexport {MenuRoutes, PageRoutes};\r\n","import FinanCheck from \"pages/finanCheck\";\r\nimport HealthCare from \"pages/healthCare\";\r\nimport Home from \"pages/home\";\r\nimport NotFound from \"pages/notFound\";\r\nimport RetirementPlan from \"pages/retirementPlan\";\r\nimport SumAssured from \"pages/sumAssured\";\r\nimport finanCheck from \"./finanCheck\";\r\nimport healthCare from \"./healthCare\";\r\nimport sumAssured from \"./sumAssured\";\r\nimport retirementPlan from \"./retirementPlan\";\r\n\r\nexport interface IPageRoutes {\r\n [key: string]: {\r\n component: () => JSX.Element;\r\n type: \"form\" | \"result\";\r\n };\r\n}\r\n\r\nconst routes: {[key: string]: () => JSX.Element} = {\r\n home: Home,\r\n finanCheck: FinanCheck,\r\n healthCare: HealthCare,\r\n retirementPlan: RetirementPlan,\r\n sumAssured: SumAssured,\r\n default: NotFound,\r\n};\r\n\r\nexport const pageRoutes: {[key: string]: IPageRoutes} = {\r\n finanCheck,\r\n healthCare,\r\n sumAssured,\r\n retirementPlan,\r\n};\r\n\r\nexport default routes;\r\n","import CustomMutualFund from \"pages/retirementPlan/pages/customMutualFund\";\r\nimport Form from \"pages/retirementPlan/pages/form\";\r\nimport Insurance from \"pages/retirementPlan/pages/insurance\";\r\nimport MutualFund from \"pages/retirementPlan/pages/mutualFund\";\r\nimport Result from \"pages/retirementPlan/pages/result\";\r\nimport {IPageRoutes} from \"routes\";\r\n\r\nconst pageRoutes: IPageRoutes = {\r\n default: {\r\n component: Form,\r\n type: \"form\",\r\n },\r\n form: {\r\n component: Form,\r\n type: \"form\",\r\n },\r\n mutualFund: {\r\n component: MutualFund,\r\n type: \"form\",\r\n },\r\n result: {\r\n component: Result,\r\n type: \"result\",\r\n },\r\n insurance: {\r\n component: Insurance,\r\n type: \"result\",\r\n },\r\n customMutualFund: {\r\n component: CustomMutualFund,\r\n type: \"result\",\r\n },\r\n};\r\nexport default pageRoutes;\r\n","import {makeStyles, Theme} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\r\nimport color from \"config/color\";\r\nimport useRouter from \"hooks/useRouter\";\r\ninterface StyleProps {\r\n filter: string;\r\n cursor: string;\r\n background: string;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n img: {\r\n width: \"50px\",\r\n padding: \"5px\",\r\n color: \"white\",\r\n filter: (props: StyleProps) => props.filter,\r\n cursor: (props: StyleProps) => props.cursor,\r\n fontSize: \"3rem\",\r\n background: (props: StyleProps) =>\r\n props.background === \"light\" ? color.blue[400] : \"\",\r\n },\r\n}));\r\nfunction SidebarItem(props: {id: number; setOpen: (open: boolean) => void}) {\r\n const {id, setOpen} = props;\r\n const {setProcess, process, latestProcess} = useRouter();\r\n\r\n const styles = useStyles({\r\n background: id === process ? \"light\" : \"\",\r\n filter:\r\n id > latestProcess && id < 3\r\n ? \"invert(42%) sepia(6%) saturate(179%) hue-rotate(177deg) brightness(84%) contrast(86%)\"\r\n : \"\",\r\n cursor: (id != -1 && id <= latestProcess) || id >= 3 ? \"pointer\" : \"\",\r\n });\r\n const handleClick = () => {\r\n if (id == 3) {\r\n //login\r\n } else if (id === 4) {\r\n //register\r\n } else if (id !== -1 && id <= latestProcess) {\r\n setProcess(id);\r\n }\r\n setOpen(false);\r\n };\r\n if (id < 3) {\r\n return (\r\n handleClick()}\r\n alt=\"\"\r\n >\r\n );\r\n } else if (id === 3) {\r\n return (\r\n handleClick()} />\r\n );\r\n } else {\r\n return handleClick()} />;\r\n }\r\n}\r\nexport default SidebarItem;\r\n","import {Drawer, Theme, makeStyles} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\nimport React from \"react\";\r\nimport DrawerItem from \"./DrawerItem\";\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n background: color.blue[500],\r\n },\r\n}));\r\nfunction MenuDrawer(props: {\r\n isOpen: boolean;\r\n setOpen: (open: boolean) => void;\r\n}) {\r\n const {isOpen, setOpen} = props;\r\n const styles = useStyles();\r\n return (\r\n <>\r\n setOpen(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default MenuDrawer;\r\n","import {\r\n Box,\r\n Button,\r\n Hidden,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\r\nimport React, {useState} from \"react\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport MenuDrawer from \"./MenuDrawer\";\r\nimport color from \"config/color\";\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n backgroundColor: color.blue[400],\r\n color: \"white\",\r\n textAlign: \"center\",\r\n padding: \"10px\",\r\n },\r\n buttonContainer: {\r\n position: \"absolute\",\r\n right: \"10px\",\r\n display: \"inline\",\r\n },\r\n menu: {\r\n position: \"absolute\",\r\n left: \"10px\",\r\n marginTop: \"-1px\",\r\n display: \"inline\",\r\n fontSize: \"2rem\",\r\n },\r\n button: {\r\n textTransform: \"none\",\r\n color: \"white\",\r\n fontWeight: 300,\r\n \"&:hover\": {\r\n color: color.blue[500],\r\n background: \"none\",\r\n },\r\n },\r\n typo: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"30px\",\r\n },\r\n },\r\n}));\r\nfunction Header() {\r\n const styles = useStyles();\r\n const [isOpen, setOpen] = useState(false);\r\n return (\r\n
\r\n \r\n setOpen(true)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n โปรแกรมวางแผนการเงิน\r\n \r\n \r\n
\r\n );\r\n}\r\nexport default Header;\r\n","import {makeStyles, Theme} from \"@material-ui/core\";\r\nimport useRouter from \"hooks/useRouter\";\r\nimport color from \"config/color\";\r\ninterface StyleProps {\r\n filter: string;\r\n backgroundColor: string;\r\n cursor: string;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n img: {\r\n width: \"70px\",\r\n filter: (props: StyleProps) => props.filter,\r\n },\r\n container: {\r\n marginLeft: \"10px\",\r\n padding: \"10px\",\r\n backgroundColor: (props: StyleProps) => props.backgroundColor,\r\n borderRadius: \" 20px 0 0 20px\",\r\n cursor: (props: StyleProps) => props.cursor,\r\n },\r\n}));\r\nfunction SidebarItem(props: {id: number}) {\r\n const {id} = props;\r\n const {process, latestProcess, setProcess} = useRouter();\r\n const styles = useStyles({\r\n backgroundColor: id === process ? color.blue[100] : \"\",\r\n filter:\r\n id === process\r\n ? \"invert(1)\"\r\n : id > latestProcess\r\n ? \"invert(42%) sepia(6%) saturate(179%) hue-rotate(177deg) brightness(84%) contrast(86%)\"\r\n : \"\",\r\n cursor: id != -1 && id <= latestProcess ? \"pointer\" : \"\",\r\n });\r\n const handleClick = () => {\r\n if (id !== -1 && id <= latestProcess) setProcess(id);\r\n };\r\n return (\r\n
\r\n handleClick()}\r\n alt=\"\"\r\n >\r\n
\r\n );\r\n}\r\nexport default SidebarItem;\r\n","import {Box, Hidden, makeStyles, Theme} from \"@material-ui/core\";\r\nimport color from \"config/color\";\r\nimport SidebarItem from \"./SidebarItem\";\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n backgroundColor: color.blue[500],\r\n minHeight: \"100%\",\r\n },\r\n}));\r\nfunction Sidebar() {\r\n const styles = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default Sidebar;\r\n","import {makeStyles, ThemeProvider} from \"@material-ui/core\";\r\nimport React, {useState} from \"react\";\r\nimport theme from \"config/theme\";\r\nimport {v4} from \"uuid\";\r\nimport {MenuRoutes} from \"hooks/useRouter\";\r\nimport {IData} from \"common/interface/interface\";\r\nimport Header from \"common/components/shell/header\";\r\nimport Sidebar from \"common/components/shell/sidebar\";\r\nimport {dataContext} from \"common/context/context\";\r\n\r\nconst useStyles = makeStyles({\r\n appContainer: {\r\n minHeight: \"100vh\",\r\n display: \"flex\",\r\n minWidth: \"280px\",\r\n maxWidth: \"100vw\",\r\n flexDirection: \"column\",\r\n },\r\n bodyContainer: {\r\n flexGrow: 1,\r\n display: \"flex\",\r\n minHeight: \"100%\",\r\n },\r\n contentContainer: {\r\n width: \"100%\",\r\n maxWidth: \"1200px\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n padding: \"10px\",\r\n boxSizing: \"border-box\",\r\n overflowX: \"hidden\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n paddingLeft: \"30px\",\r\n paddingRight: \"30px\",\r\n maxWidth: \"1300px\",\r\n },\r\n },\r\n});\r\n\r\nfunction App() {\r\n const currentVersion = \"1.0\";\r\n const styles = useStyles();\r\n let tempDataStore = localStorage.getItem(\"user_data\");\r\n let tempData: IData = {};\r\n if (\r\n tempDataStore !== null &&\r\n localStorage.getItem(\"version\") === currentVersion\r\n ) {\r\n tempData = JSON.parse(tempDataStore);\r\n }\r\n const [data, setBigData] = useState(tempData);\r\n let device_id = localStorage.getItem(\"device_id\");\r\n if (device_id === null) {\r\n device_id = v4();\r\n localStorage.setItem(\"device_id\", device_id);\r\n }\r\n const setData = (data: IData) => {\r\n localStorage.setItem(\"user_data\", JSON.stringify(data));\r\n localStorage.setItem(\"version\", currentVersion);\r\n setBigData(data);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","import {ReportHandler} from \"web-vitals\";\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import(\"web-vitals\").then(({getCLS, getFID, getFCP, getLCP, getTTFB}) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport {RouteProvider} from \"common/context/routeContext\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}