{"version":3,"sources":["_metronic/_helpers/AssetsHelpers.js","_metronic/_helpers/RouterHelpers.js","app/modules/Auth/__mocks__/userTableMock.js","app/modules/ECommerce/__mocks__/customerTableMock.js","app/modules/ECommerce/__mocks__/mock.utils.js","app/modules/ECommerce/__mocks__/mockCustomer.js","app/modules/ECommerce/__mocks__/carTableMock.js","app/modules/ECommerce/__mocks__/mockProduct.js","app/modules/ECommerce/__mocks__/remarkTableMock.js","app/modules/ECommerce/__mocks__/mockRemark.js","app/modules/ECommerce/__mocks__/specificationTableMock.js","app/modules/ECommerce/__mocks__/mockSpecification.js","app/modules/Auth/_redux/authRedux.js","redux/app-reducer.tsx","redux/rootReducer.tsx","redux/store.tsx","_metronic/layout/_core/HTMLClassService.js","_metronic/layout/_core/MetronicLayout.js","_metronic/layout/_core/LayoutConfig.js","_metronic/layout/components/header-mobile/HeaderMobile.js","_metronic/layout/components/aside/aside-menu/AsideMenuList.js","_metronic/layout/components/aside/aside-menu/AsideMenu.js","_metronic/i18n/Metronici18n.js","_metronic/_partials/dropdowns/DropdownCustomToggler.js","_metronic/_partials/dropdowns/DropdownItemToggler.js","_metronic/layout/components/extras/dropdowns/LanguageSelectorDropdown.js","app/services/user/user-typed.tsx","app/services/bankaccount/bankaccount-typed.tsx","app/services/transaction/transaction-typed.tsx","utils/helper.tsx","utils/api/tools.tsx","app/constants/app-config.ts","utils/api/savvy-gold-client.tsx","utils/api/index.tsx","app/services/user/user-query.tsx","app/services/auth/auth-query.tsx","_metronic/layout/components/extras/dropdowns/UserProfileDropdown.js","_metronic/layout/components/extras/QuickUserToggler.js","_metronic/layout/components/brand/Brand.js","_metronic/layout/components/aside/aside-menu/SubMenu.tsx","app/constants/path.tsx","app/components/Authorize.tsx","_metronic/layout/components/aside/aside-menu/OfficerMenu.tsx","_metronic/layout/components/extras/QuickSettingToggler.js","_metronic/layout/components/aside/Aside.tsx","app/AppHelmet.tsx","_metronic/layout/components/footer/Footer.js","_metronic/_assets/js/layout/base/aside.js","_metronic/_assets/js/layout/base/aside-menu.js","_metronic/_assets/js/layout/base/subheader.js","_metronic/_assets/js/layout/base/footer.js","_metronic/_assets/js/layout/base/content.js","_metronic/_assets/js/layout/extended/scrolltop.js","_metronic/_assets/js/layout/base/sticky-card.js","_metronic/_assets/js/layout/base/stretched-card.js","_metronic/_assets/js/layout/extended/quick-panel.js","_metronic/_assets/js/layout/extended/quick-user.js","_metronic/_assets/js/layout/base/header-mobile.js","_metronic/_assets/js/layout/base/aside-toggle.js","_metronic/_assets/js/layout/extended/quick-search.js","_metronic/_assets/js/layout/extended/quick-notifications.js","_metronic/_assets/js/layout/extended/quick-actions.js","_metronic/layout/components/LayoutInit.js","_metronic/layout/components/subheader/components/BreadCrumbs.js","_metronic/layout/_core/MetronicSubheader.js","_metronic/layout/components/subheader/SubHeader.js","_metronic/layout/components/extras/offcanvas/QuickPanel.js","app/components/common/ImageViewer.tsx","_metronic/layout/components/extras/offcanvas/QuickUser.js","_metronic/layout/components/extras/offcanvas/QuickSearch.js","_metronic/layout/components/extras/offcanvas/QuickNotification.js","_metronic/layout/components/extras/offcanvas/QuickActions.js","_metronic/layout/components/extras/ScrollTop.js","_metronic/_partials/controls/Card.js","_metronic/_partials/controls/AnimateLoading.js","_metronic/_partials/controls/Notice.js","_metronic/layout/components/Layout.js","_metronic/layout/components/content/Content.js","_metronic/layout/components/content/ContentRoutes.tsx","_metronic/layout/_core/MetronicSplashScreen.js","_metronic/layout/_core/MaterialThemeProvider.js","app/components/common/Text.tsx","utils/custom-hooks.tsx","app/components/common/Button.tsx","app/components/fields/tools.tsx","app/components/common/Select.tsx","app/components/common/Input.tsx","app/components/common/DataPiker.tsx","app/components/common/CheckBox.tsx","app/components/common/DateRangePicker.tsx","app/services/kyc/kyc-typed.tsx","app/components/common/Switch.tsx","app/components/fields/index.tsx","app/components/templates/ModalUpdateUserProfile.tsx","app/components/templates/ModalChangeTmnProfile.tsx","app/components/templates/UserProfileCard.tsx","app/components/templates/PortalCard.tsx","app/services/transaction/transaction-query.tsx","app/services/port/port-query.tsx","app/pages/port/PortDetail/PortCard.tsx","app/services/bankaccount/bankaccount-query.tsx","app/pages/bankaccount/BankAccountDetail/BankAccountCard.tsx","app/services/kyc/kyc-query.tsx","app/pages/kyc/KycDetail/KycCard.tsx","app/pages/user/UserProfile/index.tsx","app/components/common/SearchInput.tsx","app/components/common/Table.tsx","app/components/templates/ListPage.tsx","app/services/notification/notification-query.tsx","app/pages/notification/NotificationList/index.tsx","app/components/common/Card.tsx","utils/field-validation.tsx","app/components/common/Toast.tsx","app/pages/notification/NotificationDetail/index.tsx","app/components/ButtonViewTable.tsx","app/components/UsernameTableColumn.tsx","app/pages/port/PortList/index.tsx","app/components/templates/DetailPage.tsx","app/pages/user/UserProfile/UserCard.tsx","app/services/port/port-typed.tsx","app/pages/transaction/TransactionDetail/TransactionCard.tsx","app/pages/transaction/TransactionList/TransactionStatusTag.tsx","app/pages/port/PortDetail/TransactionList.tsx","utils/core.tsx","app/services/sell/sell-query.tsx","app/pages/port/PortDetail/SellGoldModal.tsx","app/pages/port/PortDetail/index.tsx","app/components/UserTableColumn.tsx","app/pages/user/UserList/index.tsx","app/pages/transaction/TransactionList/DialogExportTransactionFilter.tsx","app/pages/transaction/TransactionList/ExportTransactionReportButton.tsx","app/pages/transaction/TransactionList/index.tsx","app/pages/transaction/TransactionDetail/DeliveryCard.tsx","app/pages/transaction/TransactionDetail/PaymentCard.tsx","app/pages/transaction/TransactionDetail/SafeGoldCallBacksCard.tsx","app/pages/transaction/TransactionDetail/index.tsx","app/components/UserProfileNameCitizen.tsx","app/pages/kyc/KycList/DialogExportKycFilter.tsx","app/pages/kyc/KycList/ExportKycReportButton.tsx","app/pages/kyc/KycList/index.tsx","app/components/templates/DetailPage2.tsx","app/components/ButtonApproveBankAccount.tsx","app/services/mix-panel/mix-panel-typed.tsx","app/pages/kyc/KycDetail/KycOnPendingAction.tsx","app/services/braze/braze.query.tsx","app/services/mix-panel/mix-panel-query.tsx","app/pages/kyc/KycDetail/RiskAssessmentDetail.tsx","app/pages/kyc/KycDetail/index.tsx","app/pages/bankaccount/BankAccountList/index.tsx","app/pages/bankaccount/BankAccountDetail/BankAccountOnPendingAction.tsx","app/pages/bankaccount/BankAccountDetail/BankAccountOnApprovedAction.tsx","app/pages/bankaccount/BankAccountDetail/index.tsx","app/pages/article/ArticleList/index.tsx","app/services/article/article-query.tsx","app/components/ImageEasyCrop.tsx","app/pages/article/ArticleDetail/UploadThumbNail.tsx","app/pages/article/ArticleDetail/index.tsx","app/services/setting/setting-query.tsx","app/pages/setting/Setting/index.tsx","app/services/giveaway/giveaway-query.tsx","app/pages/reward/RewardDetail/index.tsx","app/services/giveaway/giveaway-typed.tsx","app/pages/reward/RewardList/ModalCreateGiveaway.tsx","app/pages/reward/RewardList/ModalExportGiveaway.tsx","app/pages/reward/RewardList/index.tsx","app/pages/banner/BannerList/index.tsx","app/services/banner/banner-query.tsx","app/pages/banner/BannerDetail/index.tsx","app/services/campaign/campaign-typed.tsx","app/services/campaign/campaign-query.tsx","app/pages/campaign/CampaignList/index.tsx","app/pages/campaign/CampaignDetail/UploadThumbNail.tsx","app/pages/campaign/CampaignDetail/index.tsx","app/BasePage.tsx","app/components/common/NoLabelInput.tsx","app/pages/auth/Login.tsx","app/pages/auth/shared/PasswordForm.tsx","app/pages/auth/shared/OtpForm.tsx","app/services/otp/otp-query.tsx","app/pages/auth/shared/ForgotPasswordForm.tsx","app/pages/auth/ForgotPassword.tsx","app/pages/auth/AuthPage.tsx","app/modules/ErrorsExamples/ErrorPage1.js","app/modules/ErrorsExamples/ErrorPage2.js","app/modules/ErrorsExamples/ErrorPage3.js","app/modules/ErrorsExamples/ErrorPage4.js","app/modules/ErrorsExamples/ErrorPage5.js","app/modules/ErrorsExamples/ErrorPage6.js","app/modules/ErrorsExamples/ErrorsPage.js","app/pages/UserprofilePage1.tsx","app/Routes.tsx","app/initialize.tsx","utils/i18n/errors.tsx","utils/i18n/language.tsx","utils/i18n/index.tsx","app/App.tsx","redux/__mocks__/mockAxios.js","app/modules/Auth/__mocks__/mockAuth.js","app/modules/Auth/_redux/authCrud.js","index.tsx","_metronic/_assets/js/components/cookie.js","utils/image-helper.tsx","asset/images/default_profile_picture.jpg","_metronic/_assets/js/components/util.js","asset/images/mobile_frame.png","_metronic/_assets/js/components/menu.js","_metronic/_assets/js/components/scrolltop.js","_metronic/_assets/js/components/card.js","_metronic/_assets/js/components/toggle.js","asset/images/bannerIcon.png","_metronic/_assets/js/components/offcanvas.js"],"names":["toAbsoluteUrl","pathname","process","checkIsActive","location","url","current","split","getCurrentUrl","indexOf","id","username","password","email","accessToken","refreshToken","roles","pic","fullname","occupation","companyName","phone","address","addressLine","city","state","postCode","socialNetworks","linkedIn","facebook","twitter","instagram","firstName","lastName","userName","gender","status","dateOfBbirth","ipAddress","type","_userId","_createdDate","_updatedDate","MockUtils","_entities","_queryParams","_filtrationFields","entitiesResult","this","searchInArray","filter","sortField","sortArray","sortOrder","pageNumber","totalCount","length","initialPos","pageSize","queryResults","entities","slice","errorMessage","_incomingArray","_sortField","_sortOrder","sort","a","b","_queryObj","result","resultBuffer","indexes","firstIndexes","doSearch","forEach","item","element","index","push","Object","keys","key","searchText","toString","trim","toLowerCase","some","e","ex","console","log","re","mockCustomer","mock","onPost","reply","data","customer","JSON","parse","newCustomer","ids","customerTableMock","map","el","Math","max","generateUserId","config","mockUtils","queryParams","baseFilter","findIndex","splice","onGet","match","find","onPut","onDelete","model","manufacture","modelYear","mileage","description","color","price","condition","createdDate","VINCode","mockProducts","product","newProduct","carTableMock","generateProductId","carId","text","_isEditMode","dueDate","mockRemarks","remark","newRemark","remarkTableMock","generateRemarkId","productRemarks","specId","value","mockSpecifications","specification","newSpecification","specificationTableMock","generateSpecificationId","specifications","wrapSpecification","spec","newSpec","name","actionTypes","initialAuthState","user","undefined","authToken","reducer","persistReducer","storage","whitelist","action","payload","appSlice","createSlice","initialState","toast","show","title","message","reducers","showToast","hideToast","actions","rootSaga","rootReducer","combineReducers","auth","app","sagaMiddleware","createSagaMiddleware","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","thunk","store","configureStore","devTools","enhancers","reduxBatch","persistor","persistStore","run","HtmlClassService","layoutConfig","preInit","classes","header","header_container","header_mobile","header_menu","aside","aside_menu","subheader","subheader_container","content","content_container","footer_container","attributes","initLoader","initLayout","initHeader","initSubheader","initContent","initAside","initFooter","updateLayoutConfig","assign","objectPath","get","style","fixed","path","Array","isArray","join","brandSkin","logo","getLogo","selfBodyBackgroundImage","backgroundImageUrl","document","body","backgroundImage","_selfBodyClass","cssClass","classList","add","subheaderStyle","subheaderClass","asideSelfDisplay","asideMenuDropdown","asideSubmenuDHoverTimeout","LAYOUT_CONFIG_KEY","REACT_APP_LAYOUT_CONFIG_KEY","getConfig","ls","localStorage","getItem","er","error","demo","js","breakpoints","sm","md","lg","xl","xxl","colors","theme","base","white","primary","secondary","success","info","warning","danger","light","dark","inverse","gray","gray100","gray200","gray300","gray400","gray500","gray600","gray700","gray800","gray900","fontFamily","self","layout","loader","enabled","mobile","display","displayDesc","displayDaterangepicker","breadcrumb","width","clear","minimize","toggle","default","menu","dropdown","scroll","submenu","accordion","footer","extras","search","offcanvas","direction","notifications","cart","chat","languages","toolbar","scrolltop","HtmlClassServiceContext","createContext","useHtmlClassService","useContext","Consumer","MetronicLayoutProvider","children","lc","useMemo","hcs","service","setConfig","Provider","HeaderMobile","uiService","layoutProps","asideDisplay","headerMobileCssClasses","getClasses","headerMobileAttributes","getAttributes","className","to","alt","src","AsideMenuList","useLocation","getMenuItemActive","hasSubmenu","ulClasses","aria-haspopup","data-menu-toggle","AsideMenu","isActive","asideMenuAttr","asideClassesFromConfig","data-menu-vertical","I18N_CONFIG_KEY","REACT_APP_I18N_CONFIG_KEY","I18nContext","useLang","selectedLang","forwardRef","props","ref","onClick","preventDefault","DropdownItemToggler","React","data-offset","displayName","lang","flag","LanguageSelectorDropdown","currentLanguage","x","Dropdown","drop","alignRight","Toggle","as","OverlayTrigger","placement","overlay","Tooltip","Menu","language","clsx","active","href","setItem","stringify","window","reload","setLanguage","UserStatus","UserSignInType","ROLE","BankAccountStatus","EnumTransactionStatus","EnumTransactionType","EnumTransactionTypeCapitalize","EnumSafeGoldDataType","ContentType","useRouter","params","useParams","history","useHistory","useRouteMatch","query","queryString","replace","getToken","clearToken","removeItem","getColorPaymentStatus","getColorStatusKycText","getColorStatusBankAccountText","APPROVED","REJECTED","PENDING","CANCELED","getTransactionTypeColor","transactionType","BUY","SELL","DCA","DELIVERY","PICK_UP","TRANSFER_IN","TRANSFER_OUT","ONE_TIME_DELIVERY","getColorTransactionStatus","FAIL","SUCCESS","AWAITING_TRANSFER","AWAIT_SAFEGOLD_CONFIRM","REFUND","getColorUserStatus","BLOCKED","replaceUnderScoreAndCapitalize","v","capitalize","downloadFile","res","filename","headers","downloadjs","decodeURIComponent","customAddressLabel","province","district","subDistrict","detail","zipCode","houseNo","normalizeNumberWith4Digit","onlyNumber","includes","indexOfDot","substring","Number","toLocaleString","formatMobile","formatTmnId","composeValidators","validators","reduce","validator","client","apiWraper","customClientWithData","method","option","contentType","restOption","customClient","deepLoop","func","File","d","formatData","windowEnv","_env_","parseBoolean","parseString","appConfig","API_HOST","apiHost","APP_NAME","appName","ENABLE_FEATURE_ARTICLE","enableFeatureArticle","ENABLE_FEATURE_APPROVE_KYC","enableFeatureApproveKyc","ENABLE_FEATURE_SELL_MANUAL","enableFeatureSellManual","ENABLE_FEATURE_TRUE_MONEY","enableFeatureTrueMoney","ENABLE_FEATURE_GIVEAWAY","enableFeatureGiveaway","ENABLE_FEATURE_SELL_TO_BANK","enableFeatureSellToBank","ENABLE_FEATURE_SELL_TO_TMN","enableFeatureSellToTMN","modifyRequestData","dayjs","isDayjs","format","savvyGoldClient","apiVersion","ax","axios","create","baseURL","compact","interceptors","request","use","token","set","userId","FORMDATA","formData","FormData","entries","append","XFORM","qs","customRequestData","response","humps","camelizeKeys","Promise","reject","createClient","api","savvyGold","resolve","Blob","responseFromBlob","message2","errorCode","put","post","patch","delete","getFile","responseType","USERS_URL","CURRENT_USER_URL","useGetUser","useQuery","useGetImageUser","size","datas","useCurrentUser","options","cacheTime","Infinity","staleTime","onError","LOGIN_URL","VERIFY_EMAIL_URL","UPDATE_PASSWORD_URL","useLogin","queryClient","useQueryClient","useMutation","onSuccess","param","setQueryData","useLogout","resetQueries","UserProfileDropdown","useSelector","logout","mutate","onLogoutClick","useCallback","QuickUserToggler","data-placement","data-container","data-boundary","Brand","generate","routeParam","queryParam","newQueryParam","newUrl","u","test","login","portDetail","ports","userProfile","users","transactionDetail","transactions","kycDetail","kycs","notification","notificationDetail","notificationCreate","bankAccountDetail","bankAccounts","article","createArticle","articleDetail","banner","bannerCreate","bannerDetail","setting","rewards","rewardDetail","campaign","createCampaign","campaignDetail","roleLevels","USER","VIEWER","MANAGER","ADMIN","SUPER_ADMIN","validateCorrectRole","role","userRole","targetRoleIndex","Authorize","currentUser","OfficerMenu","SubMenu","paths","QuickSettingToggler","Aside","asideSecondaryDisplay","asideSelfMinimizeToggle","extrasSearchDisplay","extrasNotificationsDisplay","extrasQuickActionsDisplay","extrasQuickPanelDisplay","extrasLanguagesDisplay","extrasUserDisplay","tabs","useState","activeTab","setActiveTab","data-toggle","data-target","asideWorkspace","KTUtil","getElementById","scrollUpdate","handleTabChange","EnumAppName","appMetaConfig","SAVVY_GOLD","mediaDir","SAVVY_TMN","appMeta","AppHelmet","Helmet","rel","Footer","currentYear","Date","getFullYear","footerLayout","footerClasses","footerContainerClasses","KTLayoutAside","_element","_offcanvasObject","init","getById","getBody","offcanvasClass","hasClass","KTOffcanvas","baseClass","closeBy","toggleBy","target","_init","asideNav","scrollInit","disableForMobile","resetHeightOnDestroy","handleWindowResize","height","parseInt","getViewPort","asideBrand","asideFooter","css","_initNav","asideTabs","asideSecondary","$","on","_initWorkspace","getElement","getOffcanvas","KTLayoutAsideMenu","_menuObject","KTMenu","desktop","tablet","expandAll","isBreakpointDown","hide","getMenu","pauseDropdownHover","time","closeMobileOffcanvas","isMobileDevice","KTLayoutSubheader","isFixed","getHeight","actualHeight","_getHeight","KTLayoutFooter","KTLayoutContent","KTLayoutScrolltop","KTScrolltop","offset","speed","KTLayoutStickyCard","_object","KTLayoutHeader","KTCard","sticky","zIndex","position","top","pos","isBreakpointUp","isFixedForMobile","getHeightForMobile","left","card","right","cardWidth","initSticky","addResizeHandler","updateSticky","update","KTLayoutStretchedCard","cardBody","cardHeader","KTLayoutQuickPanel","_notificationsElement","_logsElement","_settingsElement","_getContentHeight","mobileNativeScroll","KTLayoutQuickUser","KTLayoutHeaderMobile","getHeader","KTLayoutAsideToggle","_body","_toggleObject","KTToggle","targetState","toggleState","setTimeout","KTLayoutHeaderMenu","KTCookie","setCookie","getState","getToggle","onToggle","handler","KTLayoutQuickSearch","form","results","KTLayoutQuickNotifications","KTLayoutQuickActions","LayoutInit","useLayoutEffect","ready","BreadCrumbs","items","getBreadcrumbsAndTitle","menuId","pathName","breadcrumbs","activeLinks","from","getElementsByClassName","tagName","link","titleSpans","titleSpan","t","innerHTML","breadCrumbs","getTitle","SubheaderContext","MetronicSubheaderProvider","setTitle","setBreadcrumbs","SubHeader","subheaderFixed","subheaderMobileToggle","subheaderCssClasses","subheaderContainerCssClasses","useEffect","QuickPanel","selectedTab","setSelectedTab","Tab","Container","defaultActiveKey","Nav","onSelect","_tabName","Item","Link","eventKey","onChange","checked","ImageLayout","styled","div","ThumbImage","Image","ImageViewer","images","restProps","visible","setVisible","activeIndex","setActiveIndex","onThumbImageClick","onClose","img","bind","rounded","mainSrc","nextSrc","prevSrc","onCloseRequest","onMovePrevRequest","onMoveNextRequest","QuickUser","logoutClick","firstnameTh","lastnameTh","imageProfile","image","profile","QuickSearch","placeholder","QuickNotification","QuickActions","ScrollTop","CardHeaderTitle","icon","labelRef","setTop","windowHeight","setWindowHeight","handleResize","innerWidth","addEventListener","removeEventListener","headerElement","querySelector","subheaderElement","headerMobileElement","nextMarginTop","getComputedStyle","offsetHeight","contains","backgroundColor","isFragment","fit","fluid","fluidHeight","AnimateLoading","routeChanged","nextProps","animate","scrollToTop","scrollToTopBtn","click","animateTimeout","setState","stopAnimate","clearTimeout","animateInterval","stopAnimateTimeout","ProgressBar","variant","now","Component","withRouter","svg","iconRef","textRef","iconWrapperRef","Layout","selfLayout","subheaderDisplay","contentCssClasses","contentContainerClasses","contentExtended","Content","cssClassesState","setCssClassesState","fullClasses","startAnimation","timeOutId","ContentRoute","component","render","routeProps","createElement","MetronicSplashScreenContext","MetronicSplashScreenProvider","count","setCount","timeout","splashScreen","remove","LayoutSplashScreen","prev","createMuiTheme","typography","palette","main","MuiButtonBase","disableRipple","MuiPopover","elevation","MaterialThemeProvider","ThemeProvider","useStyles","makeStyles","bold","fontWeight","Text","gutterBottom","linkTo","_colorProps","Typography","useVisible","open","close","useToastForReactQuery","uniqueId","updateId","defaultOption","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","bodyStyle","toastId","Button","ErrorMessage","makeField","Components","input","meta","touched","Select","label","disabled","handleChange","isDisabled","menuPosition","isOptionDisabled","margin","TextField","inputProps","maxLength","autoComplete","DataPiker","rest","min","CheckBox","EKycState","DateRangeOutlinedStyled","DateRangeOutlined","InputStyled","parseToDayjs","date","_date","moment","toDate","DateRangePicker","startDate","subtract","startOf","endDate","handleCallback","start","end","_start","_end","initialSettings","opens","alwaysShowCalendars","autoApply","locale","onCallback","Switch","InputField","Input","DatePickerField","CheckBoxField","SwitchField","DateRangePickerField","SelectField","ContentLayout","Card","InputFieldStyled","ModalUpdateUserProfile","useTranslation","updateRoleUser","refetchQueries","useUpdateRoleUser","mutateAsync","updateUserProfile","mobileNo","useUpdateUserProfile","canUpdateUserProfile","hasKycApproved","kyc","ekycStatus","hasMobileNo","hasEmail","hasKyc","canChangeRole","isEqual","roleOptions","acc","roleKey","initialValues","onSubmit","values","Modal","subscription","dirty","submitting","valid","validate","errors","String","handleSubmit","flexDirection","alignSelf","padding","gridColumnGap","borderColor","ModalStyled","alignItems","justifyContent","ModalChangeTmnProfile","changeTmnId","useChangeTmnId","changeTmnParams","validateRequired","validateFormatMobile","validateFormatTmnId","validateFormatThaiId","thaiId","m","sum","total","digit","i","formatThaiId","Grid","UserDetailLayout","EditIconLayout","EditIconStyled","EditIcon","EditTmnIconStyled","RootLayout","ContentDetailLayout","Flex","Margin","root","flexWrap","formControl","spacing","minWidth","selectEmpty","marginTop","modal","paper","background","border","boxShadow","shadows","UserProfileCard","gridItems","firstnameEn","lastnameEn","citizenId","job","birthdate","callbackConvenientTime","callbackMobileNo","typeSignIn","tmnId","tmnProfile","changeMobileNoVisible","changeTmnModal","setChangeTmnModal","onOpenChangeTmnModal","onCloseChangeTmnModal","gridColumn","Body","toLocaleUpperCase","gridItem","TopLayout","contents","viewMoreUrl","paddingLeft","contentIndex","valueTextColor","valueComponent","TRANSACTION_URL","TRANSACTION_REPORT_URL","GET_GOLD_PRODUCTS_URL","useGetTransaction","transactionId","customGoldProduct","goldPattern","restProduct","pattern","PORT_URL","useGetPort","PortCard","portId","port","sgGoldBalance","dataPort","goldbalance","balance","numeral","balancegram","dcaDate","dcaPlan","PortalCard","BANK_ACCOUNT_URL","useGetBankAccount","EnumGetKycListFilter","TextColor","BankAccountCard","bankAccountId","no","approvedStatus","dataBankAccount","KYC_URL","KYC_REPORT_URL","useGetKyc","KycCard","kycId","convenientTime","contactEnd","contactStart","dataKyc","UserProfile","bankAccount","IconLayout","IconButton","onSearch","setText","onKeyUp","onIconClick","aria-label","CustomTableHeader","columns","TableHead","TableRow","column","colIndex","TableCell","dataIndex","align","maxWidth","CustomTableBody","renderBody","rowIndex","columnData","TableBody","pagination","currentPage","totalPages","onPageChange","handleChangePage","event","newPage","TableContainer","Table","shape","page","showFirstButton","showLastButton","TopbarLayout","searchInputProps","tableProps","topbar","SearchInput","NOTIFICATION_URL","ButtonStyled","NotificationList","q","limit","keepPreviousData","onViewClick","record","notificationId","onCreateClick","convertUserType","userType","sentDate","isSend","setQueryParam","ListPage","itemCount","itemsPerPage","totalItems","createValidation","obj","r","schema","cp","funcs","minLength","val","required","isEmpty","when","validateFunc","errorMesage","equal","Toast","CustomCard","FlexChild","FlexChildCenter","AndroidPreview","IOSPreview","NotiPreviewCard","NotiText","UserSelect","MargintopButton","isAfter","isAllUser","Notification","setQ","notiDetailData","useGetNotificationDetail","tempData","toDayjs","usersResponse","useGetUserOptions","userOptions","onUserInputChange","callback","wait","debounce","leading","trailing","makeCalllbackWithDebounce","updateNotiDetail","createNotification","pristine","change","paddingBottom","multiline","rowsMax","onInputChange","isMulti","FormControlLabel","control","InputLabelProps","shrink","paddingTop","CustomStyledButton","ButtonViewTable","Flexrow","FlexName","UsernameTableColumn","PortList","pahts","sgMobileNo","DetailPage","extendLayout","rightContent","leftItems","rightItems","renderContent","paddingRight","SellType","Row","UserCard","dataUser","TransactionCard","useGetTransactionByPortId","transaction","isLoading","dataTransaction","typeTransaction","sgRate","goldAmount","bankAccountNo","bankName","Box","TransactionStatusTag","TextLib","TransactionList","isManual","useGetAllTransactionsByPortId","isHasTransaction","sellType","createdAt","roundDownOnly","isNumber","floor","roundUpOnly","ceil","numberWithCommas","minimumFractionDigits","maximumFractionDigits","useGoldConvertor","moneyToGoldWeight","money","goldPriceInGrams","goldWeightToGoldBaht","goldWeight","goldWeightToMoney","goldBahtToGoldWeight","goldBaht","moneyToGoldBaht","goldBahtToMoney","goldPriceInGramsToGoldPriceInBaht","GOLD_WEIGHT_PER_GOLD_BAHT","GET_SELL_PRICE_URL","Divider","SellGoldModal","isOpen","onClosed","onConfirm","sellOptions","updatedAt","sellPriceDetail","refetch","selectedSellType","setSelectedSellType","getRoundValue","digits","roundMode","formatMoney","tempValue","formatGoldBaht","useDisplayNumberFormat","sellInBaht","sellInGoldWeight","sellInGoldBaht","goldPriceInBaht","sellInThaiBaht","useSellMoneyHelper","currentPrice","handleClose","onClickSubmit","onClickCancel","sellAmountInThaiBaht","userGoldBalanceInGoldWeight","userGoldBaht","CircularProgress","FormControl","FormLabel","RadioGroup","aria-labelledby","defaultValue","Radio","PortDetail","sellClearPort","invalidateQueries","useSellClearPortByPortId","isVisibleSellGoldModal","setIsVisibleSellGoldModal","attachments","sgUserId","goldBalance","fontCitizenId","setFontCitizenId","backCitizenId","setBackCitizenId","holdCitizenId","setHoldCitizenId","imageId","imageCitizenPhoto","imageBackCitizenPhoto","imageHoldCitizenPhoto","showPhoto","portData","citizen","recent","work","BANK","TMNWallet","isHaveSellOptions","onClickSellGold","onCloseSellGoldModal","onConfirmSellGold","UserTableColumn","firstNameTh","lastNameTh","UserList","FormLayout","transactionStatusOptions","pascalize","unshift","transactionTypeOptions","transform","MAX_MONTHS_SPAN","MAX_DAYS_SPAN","DialogExportTransactionFilter","Dialog","hideBackdrop","onBackdropClick","PaperProps","borderRadius","filterRange","monthsDiff","diff","abs","minDate","year","maxDate","minYear","showCustomRangeLabel","maxSpan","days","ranges","Today","ExportTransactionReportButton","exportTransactionReport","restParams","onExportClick","spentGoldAmount","totalGoldAmount","totalPrice","DeliveryCard","transactionIdAPI","attachment","transactionAddress","first","deliveryDetails","patternName","deliveryStatus","mintingCost","vat","deliveryCost","amount","getStatusDelivery","dataDelivery","CardMedia","SafeGoldTransactionStatus","EnumDeliveryDispatchStatus","EnumSettlementStatus","PaymentCard","payment","referenceOrder","failureMessage","failOddLog","tmnIsvRefundRef","tmnPaymentId","tmnRefundId","checkErrorMessage","transactionList","returnMessage","dataPayment","errorsMessage","SafeGoldCallBacksCard","safeGoldCallbacks","safeGoldData","isSuccess","txId","txDate","settlementDate","settlementStatus","productDeliveryNumber","isRefund","typeCapitalize","SIP","trackingNumber","statusDelivery","TransactionDetail","productId","reference","invoiceLink","promoCodeDetail","txIdCc","patternId","goldProductDetail","products","goldDetail","transactionDate","priceGold","priceRate","promoCodeContent","promoCode","rewardPrice","rewardAmount","pop","UserProfileNameCitizen","kycStatusOptions","DialogExportKycFilter","ExportKycReportButton","exportKycReport","KycList","onFilterChange","kycFilterOptions","toUpperCase","replaceAll","filterValue","ALL","BodyLayout","ItemWarp","DetailPage2","colSpan","EnumEventName","EnumMixPanelType","EnumPropertyName","EnumPeoplePropertyName","ButtonBankAccount","CurrentButtonAction","FlexButton","KycOnPendingAction","externalId","modalVisible","currentButtonAction","setCurrentButtonAction","rejectKyc","useRejectKyc","approveKyc","useApproveKyc","handleOpenModal","distinctId","publicProfile","mixPanelTrackEvent","useMixPanelTrackEvent","brazeTrackEvent","onUpdateBankAccountStatusClick","risk","peopleProperty","GOLD_REGISTERED_DATE","GOLD_ACCOUNT_LEVEL","GOLD_ACCOUNT_RISK_LEVEL","mixPanelType","TRACK_AND_PEOPLE","eventName","GOLD_REGISTER_SUCCESS","APPROVE","REJECT","marginRight","RiskAssessmentDetail","riskAssessments","answer","RejectedReasonLayout","TitleLayout","KycDetail","titleEn","laserCode","titleTh","dopa","amlo","registerError","rejectReason","imageUserPhoto","addresses","dateRejectReasons","isError","desc","isEmptyRiskAssessment","dateRejectReason","BackAccountList","bankaccount","bank","branch","BankAccountOnPendingAction","refRemark","useRef","updateStatusApprove","usePatchBankAccountVerify","statusBank","setStatusBank","rows","inputRef","BankAccountOnApprovedAction","cancelBankAccount","useCancelBankAccount","onCancelBankAccountClick","ActionLayout","ImageViewerStyled","BankAccountDetail","bankAccountData","imageBankAccount","imageBackAccountData","imageBackAccount","ArticleList","Chip","publishDate","CropAspect","CropLayout","ControlLayout","SliderStyled","Slider","ButtonLayout","ImageEasyCrop","aspect","circle","hideScaleBar","canvasRef","imageRef","y","crop","setCrop","zoom","setZoom","rotation","croppedImage","setCroppedImage","onCropComplete","croppedArea","croppedAreaPixels","getCroppedImg","onConfirmCrop","getCroppedImgCircle","croppedImageCircle","drawCanvas","onload","canvas","ctx","getContext","halfImageHeight","clearRect","beginPath","arc","clip","closePath","drawImage","naturalWidth","naturalHeight","onCancelClick","onCropChange","cropShape","zoomSpeed","onZoomChange","minZoom","maxZoom","step","buttonStyle","UploadArea","ImageEasyCropLayout","UploadThumbNail","imageBase64","setImageBase64","onDrop","acceptedFiles","fileRejections","file","readFileAsBase64","base64","useDropzone","accept","multiple","getRootProps","getInputProps","reader","FileReader","base64Data","onerror","readAsDataURL","resizeImage","targetSizeKB","targetAspect","newWidth","newHeight","currentQuality","currentSizeKB","MAX_SAFE_INTEGER","toDataURL","imagePath","imageUrlToBase64","base64Result","resizedBase64","Quill","register","BlotFormatter","ImageCompress","ConfirmCard","IPhoneFrame","mobileFrameImg","Screen","MarginTopButton","ColumnText","imgStyle","GridUploadArea","authorName","ArticleDetail","articleData","articleId","useGetArticleById","isViewMode","setIsViewMode","bodyValue","setBodyValue","isEmptyBody","setIsEmptyBody","onConfirmModalVisible","onDeleteModalVisible","handleOpenConfirmModal","handleCloseConfirmModal","handleOpenDeleteModal","handleCloseDeleteModal","modules","list","indent","blotFormatter","imageCompress","quality","maxHeight","imageType","debug","insertIntoEditor","imageBase64URL","imageBlob","editor","range","getSelection","insertEmbed","thumbnailImage","updateArticle","useEditArticle","useCreateArticle","deleteArticle","useDeleteArticle","onGoBackToArticle","onClickEdit","onClickDelete","marginBottom","invalid","cursor","container","justify","aspectRatio","CardContent","line","Fragment","dangerouslySetInnerHTML","__html","textAlign","BASE_SERVER_MAINTENANCE_URL","Setting","settingData","patchSetting","usePatchSetting","isMaintenance","isMaintenanceDefault","isDisableSubmit","GIVEAWAY","GIVEAWAY_UPLOAD","GIVEAWAY_REPORT","EnumGiveawayStatus","EnumGiveawayUnit","RewardDetail","giveawayId","giveaway","campaignName","prefix","unit","creatorId","fullName","ModalCreateGiveaway","createGiveaway","useCreateGiveaway","setSearch","createBody","tmnUser","units","onSearchChange","ModalExportGiveaway","exportGiveaway","statusOptions","unitOptions","RewardList","openCreateModal","setOpenCreateModal","openExportModal","setOpenExportModal","uploadFile","useUploadGiveaway","onOpenExportModal","onCloseExportModal","onOpenCreateModal","onCloseCreateModal","onClickViewDetail","giveaways","BannerList","searchTitle","filterName","EnumCampaignPath","BannerWrapper","BannerContent","BannerText","CloseButton","button","BannerDetail","bannerData","bannerId","useGetBannerById","isExceedingLength","setIsExceedingLength","updateBanner","useEditBanner","createBanner","useCreateBanner","deleteBanner","useDeleteBanner","onGoBackToBanner","toISOString","bannerIcon","BASE_CAMPAIGN","CampaignList","route","buttonName","CampaignDetail","campaignId","updateCampaign","useUpdateCampaign","useCreateCampaign","deleteCampaign","useDeleteCampaign","onGoBackToCampaign","thumnailImage","pathOptions","marginLeft","formats","BasePage","fallback","exact","UserprofilePage","NotificationDetail","BankAccountList","getInputClasses","componentProps","initialvalues","loginValidation","isFetching","useIsFetching","setErrorMessage","REACT_APP_MODE","NolabelInput","validation","confirmPassword","NoLabelInput","otp","onCancel","otpData","refCode","OTP_EMAIL","VERIFY_OTP","validations","forgotPassword","otpValidation","passwordValidation","verifyEmail","requestOtp","updatePassword","setOtpData","setPage","nextPage","previousPage","isEmailExist","Error","otpId","formProps","ForgotPasswordForm","OtpForm","PasswordForm","AuthPage","Login","ForgotPassword","ErrorPage1","fontSize","ErrorPage2","ErrorPage3","ErrorPage4","ErrorPage5","ErrorPage6","ErrorsPage","maindetail","PortandTransactionandKYC","marginBlockStart","imageprofile","columUnderphoto","OtherDetail","bigAvatar","bigAvatarSlide","avatar","columnPort","columProfile","columLastTransaction","columKYC","columnDetailsidephoto","green","flexGrow","grid","gridTemplateColumns","gridPortLastTransactionKYC","gridheaderport","gridheaderKYC","gridheaderBank","gridheaderLastTransaction","gridcolum1","gridcolum2","gridcolum2detail","gridcolum3","gridphoto","flexphotoanddetail","flexrow","gridPhoto","ImageArray","userRes","setShow","currentCoroselIndex","setCurrentCoroselIndex","Avatar","handleShow","addressCitizen","centered","onHide","Carousel","Routes","isAuthorized","dayJS","extend","utc","timezone","customParseFormat","tz","setDefault","prototype","toNumber","getTranslationErrors","makeText","en","th","getTranslation","translation","resources","i18n","initReactI18next","lng","queryCache","QueryClient","defaultOptions","queries","retry","mutations","App","basename","loading","Suspense","I18nextProvider","MockAdapter","delayResponse","userTableMock","random","Authorization","startsWith","mockAuth","mockCustomers","_redux","ReactDOM","getCookie","matches","cookie","RegExp","expires","toUTCString","updatedCookie","encodeURIComponent","optionKey","hasOwnProperty","optionValue","deleteCookie","module","exports","fetch","blob","responseBlob","onloadend","createImage","setAttribute","getRadianAngle","degreeValue","PI","imageSrc","pixelCrop","maxSize","safeArea","sqrt","translate","rotate","imageSmoothingQuality","getImageData","putImageData","round","toBlob","URL","createObjectURL","imageHeight","Element","msMatchesSelector","webkitMatchesSelector","closest","s","ancestor","documentElement","parentElement","elem","parentNode","removeChild","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","Document","DocumentFragment","defineProperty","configurable","enumerable","writable","argArr","call","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","appendChild","createTextNode","insertBefore","firstChild","getAttributeNames","KTUtilElementDataStore","KTUtilElementDataStoreID","KTUtilDelegatedEventHandlers","resizeHandlers","_windowResizeHandler","throttle","timer","_runResizeHandlers","settings","removeResizeHandler","runResizeHandlers","resize","Event","dispatchEvent","evt","createEvent","initUIEvent","getURLParam","paramName","unescape","getBreakpoint","navigator","userAgent","isDesktopDevice","isInResponsiveRange","mode","breakpoint","getUniqueID","isset","stone","shift","getHighestZindex","isNaN","hasFixedPositionedParent","sleep","milliseconds","getRandomInt","isAngularVersion","Zone","deepExtend","out","getByTag","getElementsByTagName","getByTagName","getByClass","hasClasses","classesArr","addClass","classNames","removeClass","triggerCustomEvent","CustomEvent","initCustomEvent","triggerEvent","node","doc","ownerDocument","nodeType","eventClass","bubbles","initEvent","synthetic","fireEvent","createEventObject","c","string","eventTriggered","currentTarget","dataset","triggered","parent","findAll","querySelectorAll","insertAfter","referenceNode","nextSibling","parents","selector","matchesSelector","mozMatchesSelector","oMatchesSelector","childNodes","l","child","p","f","customDataTag","has","outerWidth","parseFloat","offsetWidth","rect","win","getClientRects","getBoundingClientRect","defaultView","pageYOffset","pageXOffset","outerHeight","withMargin","attr","getAttribute","hasAttr","removeAttr","removeAttribute","duration","easing","done","easings","linear","rAF","performance","loop","timestamp","actualCss","prop","cache","HTMLElement","cssText","actualWidth","getScroll","browserSupportsBoxModel","styleProp","getPropertyValue","currentStyle","str","letter","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","slide","dir","recalcMaxHeight","calcHeight","calcPaddingTop","calcPaddingBottom","overflow","slideUp","slideDown","addEvent","one","removeEvent","eventId","targets","j","off","callee","hash","charCodeAt","animateClass","animationName","animation","animations","OAnimation","MozAnimation","WebkitAnimation","msAnimation","transitionEnd","transition","transitions","OTransition","MozTransition","WebkitTransition","msTransition","animationEnd","animateDelay","animateDuration","scrollTo","targetPos","scrollPos","scrollTop","attachEvent","readyState","numberString","nStr","x1","x2","rgx","detectIE","ua","msie","rv","edge","isRTL","html","wheelSpeed","swipeEasing","wheelPropagation","minScrollbarLength","maxScrollbarLength","suppressScrollX","ps","attrs","attrName","optionName","filterBoolean","Function","mobileHeight","desktopNativeScroll","windowScroll","PerfectScrollbar","uid","rememberPosition","destroy","scrollDestroy","scrollUpdateAll","scrollers","len","resetAll","setProperty","setHTML","getHTML","getDocumentHeight","scrollHeight","clientHeight","getScrollTop","scrollingElement","changeColor","col","amt","usePound","num","g","delay","btnWait","cls","disable","caption","btnRelease","isOffscreen","windowWidth","KTAppSettings","the","getSubmenuMode","hideDropdowns","elementId","slideSpeed","autoScroll","autoScrollSpeed","Plugin","construct","reset","build","events","eventHandlers","pauseDropdownHoverTime","resetSubmenuProps","handleSubmenuAccordion","isConditionalSubmenuDropdown","handleSubmenuDrodownHoverEnter","handleSubmenuDrodownHoverExit","handleSubmenuDropdownClick","handleSubmenuDropdownTabClick","handleLinkClick","submenus","hasAttribute","resumeDropdownHover","showSubmenuDropdown","hideSubmenuDropdown","eventTrigger","hideSubmenuDropdowns","handleSubmenuDropdownClose","shown","li","subnav","closables","el_","submenu_","scrollToItem","classAlso","cnt","createSubmenuDropdownClickDropoff","dropoff","stopPropagation","resetActiveItem","i_","len_","setActiveItem","getBreadcrumbs","submenuLink","reverse","getPageTitle","fired","setDefaults","scrollReInit","hideDropdown","apply","handle","args","toggleSpeed","releseOnReverse","onScrollSticky","st","resetSticky","setContent","getSelf","expand","collapse","destroySticky","toggleElement","targetElement","targetToggleMode","toggleOn","toggleOff","attrCustom","classBase","classShown","classOverlay","isShown","toggleClass","classCustom"],"mappings":"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","file":"static/js/main.78a285ac.chunk.js","sourcesContent":["export function removeCSSClass(ele, cls) {\r\n const reg = new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\");\r\n ele.className = ele.className.replace(reg, \" \");\r\n}\r\n\r\nexport function addCSSClass(ele, cls) {\r\n ele.classList.add(cls);\r\n}\r\n\r\nexport const toAbsoluteUrl = pathname => process.env.PUBLIC_URL + pathname;\r\n","import * as utils from \"./LocalStorageHelpers\";\r\n\r\nconst localStorageLastLocationKey = \"metronic-lastLocation\";\r\n\r\nfunction acceptLocation(lastLocation) {\r\n if (\r\n lastLocation &&\r\n lastLocation.pathname &&\r\n lastLocation.pathname !== \"/\" &&\r\n lastLocation.pathname.indexOf(\"auth\") === -1 &&\r\n lastLocation.pathname !== \"/logout\"\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function saveLastLocation(lastLocation) {\r\n if (acceptLocation(lastLocation)) {\r\n utils.setStorage(\r\n localStorageLastLocationKey,\r\n JSON.stringify(lastLocation),\r\n 120\r\n );\r\n }\r\n}\r\n\r\nexport function forgotLastLocation() {\r\n utils.removeStorage(localStorageLastLocationKey);\r\n}\r\n\r\nexport function getLastLocation() {\r\n const defaultLocation = { pathname: \"/\", title: \"Dashboard\"};\r\n const localStorateLocations = utils.getStorage(localStorageLastLocationKey);\r\n if (!localStorateLocations) {\r\n return { pathname: \"/\", title: \"Dashboard\"};\r\n }\r\n\r\n try {\r\n const result = JSON.parse(localStorateLocations);\r\n return result;\r\n } catch (error) {\r\n console.error(error);\r\n return defaultLocation;\r\n }\r\n}\r\n\r\nexport function getCurrentUrl(location) {\r\n return location.pathname.split(/[?#]/)[0];\r\n}\r\n\r\nexport function checkIsActive(location, url) {\r\n const current = getCurrentUrl(location);\r\n if (!current || !url) {\r\n return false;\r\n }\r\n\r\n if (current === url) {\r\n return true;\r\n }\r\n\r\n if (current.indexOf(url) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n","import {toAbsoluteUrl} from \"../../../../_metronic/_helpers\";\r\n\r\nexport default [\r\n {\r\n id: 1,\r\n username: \"admin\",\r\n password: \"demo\",\r\n email: \"admin@demo.com\",\r\n accessToken: \"access-token-8f3ae836da744329a6f93bf20594b5cc\",\r\n refreshToken: \"access-token-f8c137a2c98743f48b643e71161d90aa\",\r\n roles: [1], // Administrator\r\n pic: toAbsoluteUrl(\"/media/users/300_25.jpg\"),\r\n fullname: \"Sean\",\r\n occupation: \"CEO\",\r\n companyName: \"Keenthemes\",\r\n phone: \"456669067890\",\r\n address: {\r\n addressLine: \"L-12-20 Vertex, Cybersquare\",\r\n city: \"San Francisco\",\r\n state: \"California\",\r\n postCode: \"45000\"\r\n },\r\n socialNetworks: {\r\n linkedIn: \"https://linkedin.com/admin\",\r\n facebook: \"https://facebook.com/admin\",\r\n twitter: \"https://twitter.com/admin\",\r\n instagram: \"https://instagram.com/admin\"\r\n }\r\n },\r\n {\r\n id: 2,\r\n username: \"user\",\r\n password: \"demo\",\r\n email: \"user@demo.com\",\r\n accessToken: \"access-token-6829bba69dd3421d8762-991e9e806dbf\",\r\n refreshToken: \"access-token-f8e4c61a318e4d618b6c199ef96b9e55\",\r\n roles: [2], // Manager\r\n pic: toAbsoluteUrl(\"/media/users/100_2.jpg\"),\r\n fullname: \"Megan\",\r\n occupation: \"Deputy Head of Keenthemes in New York office\",\r\n companyName: \"Keenthemes\",\r\n phone: \"456669067891\",\r\n address: {\r\n addressLine: \"3487 Ingram Road\",\r\n city: \"Greensboro\",\r\n state: \"North Carolina\",\r\n postCode: \"27409\"\r\n },\r\n socialNetworks: {\r\n linkedIn: \"https://linkedin.com/user\",\r\n facebook: \"https://facebook.com/user\",\r\n twitter: \"https://twitter.com/user\",\r\n instagram: \"https://instagram.com/user\"\r\n }\r\n },\r\n {\r\n id: 3,\r\n username: \"guest\",\r\n password: \"demo\",\r\n email: \"guest@demo.com\",\r\n accessToken: \"access-token-d2dff7b82f784de584b60964abbe45b9\",\r\n refreshToken: \"access-token-c999ccfe74aa40d0aa1a64c5e620c1a5\",\r\n roles: [3], // Guest\r\n pic: toAbsoluteUrl(\"/media/users/default.jpg\"),\r\n fullname: \"Ginobili Maccari\",\r\n occupation: \"CFO\",\r\n companyName: \"Keenthemes\",\r\n phone: \"456669067892\",\r\n address: {\r\n addressLine: \"1467 Griffin Street\",\r\n city: \"Phoenix\",\r\n state: \"Arizona\",\r\n postCode: \"85012\"\r\n },\r\n socialNetworks: {\r\n linkedIn: \"https://linkedin.com/guest\",\r\n facebook: \"https://facebook.com/guest\",\r\n twitter: \"https://twitter.com/guest\",\r\n instagram: \"https://instagram.com/guest\"\r\n }\r\n }\r\n];\r\n","export default [\r\n {\r\n id: 1,\r\n firstName: \"Sonni\",\r\n lastName: \"Gabotti\",\r\n email: \"sgabotti0@wsj.com\",\r\n userName: \"sgabotti0\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"10/14/1950\",\r\n ipAddress: \"251.237.126.210\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"09/07/2016\",\r\n _updatedDate: \"05/31/2013\"\r\n },\r\n {\r\n id: 2,\r\n firstName: \"Abie\",\r\n lastName: \"Cowperthwaite\",\r\n email: \"acowperthwaite1@storify.com\",\r\n userName: \"acowperthwaite1\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"12/31/1998\",\r\n ipAddress: \"239.176.5.218\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"03/18/2014\",\r\n _updatedDate: \"08/17/2016\"\r\n },\r\n {\r\n id: 3,\r\n firstName: \"Melody\",\r\n lastName: \"Stodd\",\r\n email: \"mstodd2@twitpic.com\",\r\n userName: \"mstodd2\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"7/3/1957\",\r\n ipAddress: \"14.80.25.15\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"07/03/2015\",\r\n _updatedDate: \"01/28/2015\"\r\n },\r\n {\r\n id: 4,\r\n firstName: \"Naomi\",\r\n lastName: \"Galbreth\",\r\n email: \"ngalbreth3@springer.com\",\r\n userName: \"ngalbreth3\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"12/30/1976\",\r\n ipAddress: \"239.198.18.122\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"06/22/2013\",\r\n _updatedDate: \"01/31/2011\"\r\n },\r\n {\r\n id: 5,\r\n firstName: \"Ashley\",\r\n lastName: \"Jandl\",\r\n email: \"ajandl4@mapy.cz\",\r\n userName: \"ajandl4\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"11/23/1996\",\r\n ipAddress: \"11.19.64.48\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"01/30/2018\",\r\n _updatedDate: \"05/22/2014\"\r\n },\r\n {\r\n id: 6,\r\n firstName: \"Mildrid\",\r\n lastName: \"Duplan\",\r\n email: \"mduplan5@msn.com\",\r\n userName: \"mduplan5\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"4/21/1954\",\r\n ipAddress: \"104.18.128.93\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"03/27/2011\",\r\n _updatedDate: \"09/02/2015\"\r\n },\r\n {\r\n id: 7,\r\n firstName: \"Dall\",\r\n lastName: \"Stow\",\r\n email: \"dstow6@vistaprint.com\",\r\n userName: \"dstow6\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"4/14/1998\",\r\n ipAddress: \"168.199.143.20\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"09/05/2011\",\r\n _updatedDate: \"06/21/2012\"\r\n },\r\n {\r\n id: 8,\r\n firstName: \"Burton\",\r\n lastName: \"Dering\",\r\n email: \"bdering7@europa.eu\",\r\n userName: \"bdering7\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"8/15/1963\",\r\n ipAddress: \"204.7.174.42\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"09/09/2017\",\r\n _updatedDate: \"06/27/2011\"\r\n },\r\n {\r\n id: 9,\r\n firstName: \"Wolf\",\r\n lastName: \"Blackaller\",\r\n email: \"wblackaller8@biblegateway.com\",\r\n userName: \"wblackaller8\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"5/20/1997\",\r\n ipAddress: \"12.229.194.195\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"07/16/2011\",\r\n _updatedDate: \"05/24/2014\"\r\n },\r\n {\r\n id: 10,\r\n firstName: \"Adham\",\r\n lastName: \"Hurtic\",\r\n email: \"ahurtic9@friendfeed.com\",\r\n userName: \"ahurtic9\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"3/15/1971\",\r\n ipAddress: \"236.147.173.25\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"03/25/2011\",\r\n _updatedDate: \"12/13/2015\"\r\n },\r\n {\r\n id: 11,\r\n firstName: \"Carlina\",\r\n lastName: \"Scudders\",\r\n email: \"cscuddersa@shareasale.com\",\r\n userName: \"cscuddersa\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"2/18/1970\",\r\n ipAddress: \"189.61.76.155\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"11/01/2015\",\r\n _updatedDate: \"02/16/2013\"\r\n },\r\n {\r\n id: 12,\r\n firstName: \"Roderich\",\r\n lastName: \"Landsberg\",\r\n email: \"rlandsbergb@deliciousdays.com\",\r\n userName: \"rlandsbergb\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"12/7/1963\",\r\n ipAddress: \"75.200.18.136\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"12/12/2017\",\r\n _updatedDate: \"02/22/2013\"\r\n },\r\n {\r\n id: 13,\r\n firstName: \"Mychal\",\r\n lastName: \"Tremblett\",\r\n email: \"mtremblettc@printfriendly.com\",\r\n userName: \"mtremblettc\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"7/14/1996\",\r\n ipAddress: \"85.132.155.112\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"08/14/2014\",\r\n _updatedDate: \"08/03/2014\"\r\n },\r\n {\r\n id: 14,\r\n firstName: \"Corine\",\r\n lastName: \"Rajchert\",\r\n email: \"crajchertd@google.com\",\r\n userName: \"crajchertd\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"9/13/1966\",\r\n ipAddress: \"47.164.200.96\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"12/07/2010\",\r\n _updatedDate: \"09/24/2012\"\r\n },\r\n {\r\n id: 15,\r\n firstName: \"Worth\",\r\n lastName: \"McFarlane\",\r\n email: \"wmcfarlanee@cocolog-nifty.com\",\r\n userName: \"wmcfarlanee\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"10/13/1968\",\r\n ipAddress: \"56.209.4.81\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"02/23/2013\",\r\n _updatedDate: \"09/24/2016\"\r\n },\r\n {\r\n id: 16,\r\n firstName: \"Ogden\",\r\n lastName: \"Danielski\",\r\n email: \"odanielskif@goo.ne.jp\",\r\n userName: \"odanielskif\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"10/5/1984\",\r\n ipAddress: \"181.198.149.89\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"09/08/2012\",\r\n _updatedDate: \"10/29/2017\"\r\n },\r\n {\r\n id: 17,\r\n firstName: \"Laurette\",\r\n lastName: \"Tift\",\r\n email: \"ltiftg@about.me\",\r\n userName: \"ltiftg\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"7/29/1964\",\r\n ipAddress: \"218.236.252.255\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"05/03/2016\",\r\n _updatedDate: \"08/02/2011\"\r\n },\r\n {\r\n id: 18,\r\n firstName: \"Eleanora\",\r\n lastName: \"Jackson\",\r\n email: \"ejacksonh@geocities.jp\",\r\n userName: \"ejacksonh\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"1/1/1993\",\r\n ipAddress: \"166.210.135.66\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"09/25/2017\",\r\n _updatedDate: \"01/08/2012\"\r\n },\r\n {\r\n id: 19,\r\n firstName: \"Manon\",\r\n lastName: \"Perott\",\r\n email: \"mperotti@nyu.edu\",\r\n userName: \"mperotti\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"11/6/1994\",\r\n ipAddress: \"44.43.119.22\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"04/26/2013\",\r\n _updatedDate: \"02/24/2012\"\r\n },\r\n {\r\n id: 20,\r\n firstName: \"Karney\",\r\n lastName: \"Damerell\",\r\n email: \"kdamerellj@booking.com\",\r\n userName: \"kdamerellj\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"11/22/1996\",\r\n ipAddress: \"253.195.21.217\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"11/28/2014\",\r\n _updatedDate: \"10/11/2012\"\r\n },\r\n {\r\n id: 21,\r\n firstName: \"Chelsea\",\r\n lastName: \"Bruce\",\r\n email: \"cbrucek@icq.com\",\r\n userName: \"cbrucek\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"12/1/1983\",\r\n ipAddress: \"28.184.81.169\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"07/29/2013\",\r\n _updatedDate: \"12/01/2017\"\r\n },\r\n {\r\n id: 22,\r\n firstName: \"Barny\",\r\n lastName: \"Verny\",\r\n email: \"bvernyl@bing.com\",\r\n userName: \"bvernyl\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"8/13/1957\",\r\n ipAddress: \"7.26.116.49\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"06/14/2011\",\r\n _updatedDate: \"06/28/2011\"\r\n },\r\n {\r\n id: 23,\r\n firstName: \"Elita\",\r\n lastName: \"Matuszewski\",\r\n email: \"ematuszewskim@businesswire.com\",\r\n userName: \"ematuszewskim\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"6/6/1985\",\r\n ipAddress: \"82.223.2.228\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"05/19/2016\",\r\n _updatedDate: \"09/12/2011\"\r\n },\r\n {\r\n id: 24,\r\n firstName: \"Chelsey\",\r\n lastName: \"Scullard\",\r\n email: \"cscullardn@buzzfeed.com\",\r\n userName: \"cscullardn\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"11/20/1960\",\r\n ipAddress: \"68.177.196.151\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"02/09/2013\",\r\n _updatedDate: \"12/11/2011\"\r\n },\r\n {\r\n id: 25,\r\n firstName: \"Jodi\",\r\n lastName: \"Olphert\",\r\n email: \"jolpherto@elpais.com\",\r\n userName: \"jolpherto\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"4/20/2000\",\r\n ipAddress: \"32.219.74.161\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"07/28/2017\",\r\n _updatedDate: \"05/03/2017\"\r\n },\r\n {\r\n id: 26,\r\n firstName: \"Micah\",\r\n lastName: \"Searchfield\",\r\n email: \"msearchfieldp@instagram.com\",\r\n userName: \"msearchfieldp\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"8/15/1993\",\r\n ipAddress: \"99.205.47.226\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"07/05/2011\",\r\n _updatedDate: \"02/19/2013\"\r\n },\r\n {\r\n id: 27,\r\n firstName: \"Freeland\",\r\n lastName: \"O'Dougherty\",\r\n email: \"fodoughertyq@cbsnews.com\",\r\n userName: \"fodoughertyq\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"5/19/1956\",\r\n ipAddress: \"91.116.249.149\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"06/09/2012\",\r\n _updatedDate: \"03/15/2014\"\r\n },\r\n {\r\n id: 28,\r\n firstName: \"Marna\",\r\n lastName: \"Dacre\",\r\n email: \"mdacrer@tmall.com\",\r\n userName: \"mdacrer\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"10/26/1959\",\r\n ipAddress: \"127.23.103.102\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"12/30/2011\",\r\n _updatedDate: \"03/24/2016\"\r\n },\r\n {\r\n id: 29,\r\n firstName: \"Carlita\",\r\n lastName: \"Calwell\",\r\n email: \"ccalwells@1688.com\",\r\n userName: \"ccalwells\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"7/28/1961\",\r\n ipAddress: \"3.205.16.120\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"02/28/2016\",\r\n _updatedDate: \"02/25/2013\"\r\n },\r\n {\r\n id: 30,\r\n firstName: \"Deonne\",\r\n lastName: \"Castellan\",\r\n email: \"dcastellant@gizmodo.com\",\r\n userName: \"dcastellant\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"10/21/1955\",\r\n ipAddress: \"213.3.222.52\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"03/12/2011\",\r\n _updatedDate: \"03/26/2017\"\r\n },\r\n {\r\n id: 31,\r\n firstName: \"Cesare\",\r\n lastName: \"Chestnutt\",\r\n email: \"cchestnuttu@cornell.edu\",\r\n userName: \"cchestnuttu\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"4/14/1979\",\r\n ipAddress: \"218.107.75.113\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"03/06/2012\",\r\n _updatedDate: \"09/08/2012\"\r\n },\r\n {\r\n id: 32,\r\n firstName: \"Gauthier\",\r\n lastName: \"Luparto\",\r\n email: \"glupartov@wordpress.org\",\r\n userName: \"glupartov\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"11/28/1952\",\r\n ipAddress: \"148.234.79.85\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"04/28/2013\",\r\n _updatedDate: \"02/26/2016\"\r\n },\r\n {\r\n id: 33,\r\n firstName: \"Kimmi\",\r\n lastName: \"Corde\",\r\n email: \"kcordew@kickstarter.com\",\r\n userName: \"kcordew\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"8/7/1978\",\r\n ipAddress: \"94.85.235.54\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"10/21/2012\",\r\n _updatedDate: \"10/31/2017\"\r\n },\r\n {\r\n id: 34,\r\n firstName: \"Riordan\",\r\n lastName: \"Rosenbush\",\r\n email: \"rrosenbushx@wix.com\",\r\n userName: \"rrosenbushx\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"11/28/1957\",\r\n ipAddress: \"236.15.158.122\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"08/28/2011\",\r\n _updatedDate: \"08/14/2015\"\r\n },\r\n {\r\n id: 35,\r\n firstName: \"Daune\",\r\n lastName: \"Sellek\",\r\n email: \"dselleky@amazon.co.jp\",\r\n userName: \"dselleky\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"10/12/1995\",\r\n ipAddress: \"163.229.197.138\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"03/28/2018\",\r\n _updatedDate: \"03/01/2017\"\r\n },\r\n {\r\n id: 36,\r\n firstName: \"Myriam\",\r\n lastName: \"Marshland\",\r\n email: \"mmarshlandz@army.mil\",\r\n userName: \"mmarshlandz\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"8/1/1961\",\r\n ipAddress: \"153.40.246.134\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"05/15/2017\",\r\n _updatedDate: \"08/12/2016\"\r\n },\r\n {\r\n id: 37,\r\n firstName: \"Laryssa\",\r\n lastName: \"Hynard\",\r\n email: \"lhynard10@squidoo.com\",\r\n userName: \"lhynard10\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"1/6/1998\",\r\n ipAddress: \"186.155.125.145\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"01/16/2012\",\r\n _updatedDate: \"10/09/2012\"\r\n },\r\n {\r\n id: 38,\r\n firstName: \"Evelin\",\r\n lastName: \"Poate\",\r\n email: \"epoate11@cnet.com\",\r\n userName: \"epoate11\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"9/11/1957\",\r\n ipAddress: \"76.53.54.233\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"01/07/2012\",\r\n _updatedDate: \"01/18/2018\"\r\n },\r\n {\r\n id: 39,\r\n firstName: \"Cesar\",\r\n lastName: \"D'Orsay\",\r\n email: \"cdorsay12@ezinearticles.com\",\r\n userName: \"cdorsay12\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"10/20/1992\",\r\n ipAddress: \"101.137.215.28\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"10/20/2010\",\r\n _updatedDate: \"07/14/2012\"\r\n },\r\n {\r\n id: 40,\r\n firstName: \"Jareb\",\r\n lastName: \"Luberto\",\r\n email: \"jluberto13@apple.com\",\r\n userName: \"jluberto13\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"12/22/1951\",\r\n ipAddress: \"69.111.152.125\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"01/11/2012\",\r\n _updatedDate: \"01/20/2018\"\r\n },\r\n {\r\n id: 41,\r\n firstName: \"Kerry\",\r\n lastName: \"Glawsop\",\r\n email: \"kglawsop14@wp.com\",\r\n userName: \"kglawsop14\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"11/28/1953\",\r\n ipAddress: \"105.245.81.58\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"02/23/2015\",\r\n _updatedDate: \"03/14/2012\"\r\n },\r\n {\r\n id: 42,\r\n firstName: \"Brose\",\r\n lastName: \"Conti\",\r\n email: \"bconti15@smh.com.au\",\r\n userName: \"bconti15\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"8/13/1967\",\r\n ipAddress: \"109.92.204.48\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"08/04/2012\",\r\n _updatedDate: \"11/01/2011\"\r\n },\r\n {\r\n id: 43,\r\n firstName: \"Shannah\",\r\n lastName: \"Ceeley\",\r\n email: \"sceeley16@sogou.com\",\r\n userName: \"sceeley16\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"6/10/1962\",\r\n ipAddress: \"57.218.60.216\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"05/28/2014\",\r\n _updatedDate: \"03/16/2018\"\r\n },\r\n {\r\n id: 44,\r\n firstName: \"Rudolf\",\r\n lastName: \"Stallworthy\",\r\n email: \"rstallworthy17@theatlantic.com\",\r\n userName: \"rstallworthy17\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"10/15/1966\",\r\n ipAddress: \"74.223.255.220\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"06/01/2015\",\r\n _updatedDate: \"10/25/2013\"\r\n },\r\n {\r\n id: 45,\r\n firstName: \"Egor\",\r\n lastName: \"Scotson\",\r\n email: \"escotson18@weather.com\",\r\n userName: \"escotson18\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"1/17/1956\",\r\n ipAddress: \"70.189.158.38\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"03/25/2011\",\r\n _updatedDate: \"12/05/2010\"\r\n },\r\n {\r\n id: 46,\r\n firstName: \"Selie\",\r\n lastName: \"Dugue\",\r\n email: \"sdugue19@meetup.com\",\r\n userName: \"sdugue19\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"11/9/1981\",\r\n ipAddress: \"54.129.221.70\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"06/09/2013\",\r\n _updatedDate: \"08/10/2016\"\r\n },\r\n {\r\n id: 47,\r\n firstName: \"Gene\",\r\n lastName: \"Kirkbright\",\r\n email: \"gkirkbright1a@wp.com\",\r\n userName: \"gkirkbright1a\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"5/9/1972\",\r\n ipAddress: \"217.224.216.105\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"02/02/2016\",\r\n _updatedDate: \"03/30/2014\"\r\n },\r\n {\r\n id: 48,\r\n firstName: \"Reagan\",\r\n lastName: \"Colloby\",\r\n email: \"rcolloby1b@usgs.gov\",\r\n userName: \"rcolloby1b\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"9/21/1997\",\r\n ipAddress: \"32.53.20.172\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"04/08/2016\",\r\n _updatedDate: \"01/25/2014\"\r\n },\r\n {\r\n id: 49,\r\n firstName: \"Saidee\",\r\n lastName: \"Kivelle\",\r\n email: \"skivelle1c@newsvine.com\",\r\n userName: \"skivelle1c\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"10/23/1994\",\r\n ipAddress: \"79.152.227.238\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"12/26/2015\",\r\n _updatedDate: \"09/17/2011\"\r\n },\r\n {\r\n id: 50,\r\n firstName: \"Mychal\",\r\n lastName: \"Karlowicz\",\r\n email: \"mkarlowicz1d@opera.com\",\r\n userName: \"mkarlowicz1d\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"10/20/1971\",\r\n ipAddress: \"70.175.193.245\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"10/10/2011\",\r\n _updatedDate: \"03/02/2012\"\r\n },\r\n {\r\n id: 51,\r\n firstName: \"Nessie\",\r\n lastName: \"Casassa\",\r\n email: \"ncasassa1e@pinterest.com\",\r\n userName: \"ncasassa1e\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"3/9/1983\",\r\n ipAddress: \"17.128.173.230\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"01/09/2018\",\r\n _updatedDate: \"08/05/2015\"\r\n },\r\n {\r\n id: 52,\r\n firstName: \"Myrvyn\",\r\n lastName: \"Coots\",\r\n email: \"mcoots1f@sourceforge.net\",\r\n userName: \"mcoots1f\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"4/5/1972\",\r\n ipAddress: \"253.21.191.36\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"01/13/2015\",\r\n _updatedDate: \"04/30/2011\"\r\n },\r\n {\r\n id: 53,\r\n firstName: \"Liuka\",\r\n lastName: \"Monard\",\r\n email: \"lmonard1g@wikipedia.org\",\r\n userName: \"lmonard1g\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"6/6/1999\",\r\n ipAddress: \"33.46.177.2\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"11/17/2012\",\r\n _updatedDate: \"02/18/2011\"\r\n },\r\n {\r\n id: 54,\r\n firstName: \"Alis\",\r\n lastName: \"Nozzolii\",\r\n email: \"anozzolii1h@google.com.br\",\r\n userName: \"anozzolii1h\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"7/25/1953\",\r\n ipAddress: \"242.76.135.219\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"10/16/2012\",\r\n _updatedDate: \"09/17/2012\"\r\n },\r\n {\r\n id: 55,\r\n firstName: \"Gage\",\r\n lastName: \"Slamaker\",\r\n email: \"gslamaker1i@people.com.cn\",\r\n userName: \"gslamaker1i\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"3/19/1959\",\r\n ipAddress: \"179.85.197.219\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"04/20/2015\",\r\n _updatedDate: \"07/02/2014\"\r\n },\r\n {\r\n id: 56,\r\n firstName: \"Jamal\",\r\n lastName: \"Glasard\",\r\n email: \"jglasard1j@google.ru\",\r\n userName: \"jglasard1j\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"9/21/1968\",\r\n ipAddress: \"163.99.109.106\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"08/24/2017\",\r\n _updatedDate: \"12/09/2012\"\r\n },\r\n {\r\n id: 57,\r\n firstName: \"Antone\",\r\n lastName: \"Christophersen\",\r\n email: \"achristophersen1k@slashdot.org\",\r\n userName: \"achristophersen1k\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"8/5/1953\",\r\n ipAddress: \"42.207.110.255\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"12/30/2012\",\r\n _updatedDate: \"04/07/2013\"\r\n },\r\n {\r\n id: 58,\r\n firstName: \"Glenn\",\r\n lastName: \"Gentle\",\r\n email: \"ggentle1l@imdb.com\",\r\n userName: \"ggentle1l\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"8/4/1959\",\r\n ipAddress: \"82.135.105.157\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"01/16/2017\",\r\n _updatedDate: \"10/04/2017\"\r\n },\r\n {\r\n id: 59,\r\n firstName: \"Jerrilyn\",\r\n lastName: \"Prujean\",\r\n email: \"jprujean1m@csmonitor.com\",\r\n userName: \"jprujean1m\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"12/22/1961\",\r\n ipAddress: \"45.111.98.145\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"08/22/2014\",\r\n _updatedDate: \"09/01/2014\"\r\n },\r\n {\r\n id: 60,\r\n firstName: \"Becki\",\r\n lastName: \"Mucklestone\",\r\n email: \"bmucklestone1n@wiley.com\",\r\n userName: \"bmucklestone1n\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"10/15/1970\",\r\n ipAddress: \"208.63.250.181\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"03/08/2018\",\r\n _updatedDate: \"08/09/2016\"\r\n },\r\n {\r\n id: 61,\r\n firstName: \"Kingsly\",\r\n lastName: \"Sawday\",\r\n email: \"ksawday1o@patch.com\",\r\n userName: \"ksawday1o\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"1/20/1978\",\r\n ipAddress: \"196.38.7.53\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"07/15/2016\",\r\n _updatedDate: \"10/28/2012\"\r\n },\r\n {\r\n id: 62,\r\n firstName: \"Austen\",\r\n lastName: \"Possel\",\r\n email: \"apossel1p@blogtalkradio.com\",\r\n userName: \"apossel1p\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"5/8/1960\",\r\n ipAddress: \"162.0.150.104\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"12/20/2017\",\r\n _updatedDate: \"04/20/2018\"\r\n },\r\n {\r\n id: 63,\r\n firstName: \"Rudie\",\r\n lastName: \"Southouse\",\r\n email: \"rsouthouse1q@mapy.cz\",\r\n userName: \"rsouthouse1q\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"12/2/1950\",\r\n ipAddress: \"67.123.229.124\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"09/24/2012\",\r\n _updatedDate: \"07/02/2014\"\r\n },\r\n {\r\n id: 64,\r\n firstName: \"Julienne\",\r\n lastName: \"Le Noury\",\r\n email: \"jlenoury1r@cnet.com\",\r\n userName: \"jlenoury1r\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"10/30/1976\",\r\n ipAddress: \"208.192.238.241\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"06/29/2012\",\r\n _updatedDate: \"11/26/2016\"\r\n },\r\n {\r\n id: 65,\r\n firstName: \"Bernard\",\r\n lastName: \"Levicount\",\r\n email: \"blevicount1s@angelfire.com\",\r\n userName: \"blevicount1s\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"12/6/1982\",\r\n ipAddress: \"123.229.51.62\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"04/11/2013\",\r\n _updatedDate: \"05/14/2013\"\r\n },\r\n {\r\n id: 66,\r\n firstName: \"Katine\",\r\n lastName: \"Glazyer\",\r\n email: \"kglazyer1t@unblog.fr\",\r\n userName: \"kglazyer1t\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"8/20/1954\",\r\n ipAddress: \"165.87.178.12\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"03/20/2015\",\r\n _updatedDate: \"06/18/2015\"\r\n },\r\n {\r\n id: 67,\r\n firstName: \"Rem\",\r\n lastName: \"Crichten\",\r\n email: \"rcrichten1u@patch.com\",\r\n userName: \"rcrichten1u\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"6/19/1950\",\r\n ipAddress: \"184.177.108.6\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"11/12/2014\",\r\n _updatedDate: \"04/12/2011\"\r\n },\r\n {\r\n id: 68,\r\n firstName: \"Colman\",\r\n lastName: \"Simnor\",\r\n email: \"csimnor1v@reddit.com\",\r\n userName: \"csimnor1v\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"1/3/2000\",\r\n ipAddress: \"19.3.156.170\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"05/06/2013\",\r\n _updatedDate: \"05/23/2014\"\r\n },\r\n {\r\n id: 69,\r\n firstName: \"Arin\",\r\n lastName: \"Hanscombe\",\r\n email: \"ahanscombe1w@blogspot.com\",\r\n userName: \"ahanscombe1w\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"9/21/1955\",\r\n ipAddress: \"154.59.243.61\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"06/23/2013\",\r\n _updatedDate: \"11/10/2011\"\r\n },\r\n {\r\n id: 70,\r\n firstName: \"Emogene\",\r\n lastName: \"Gruszka\",\r\n email: \"egruszka1x@cmu.edu\",\r\n userName: \"egruszka1x\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"7/3/1971\",\r\n ipAddress: \"105.138.138.125\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"07/26/2016\",\r\n _updatedDate: \"10/28/2013\"\r\n },\r\n {\r\n id: 71,\r\n firstName: \"Rosina\",\r\n lastName: \"Kauffman\",\r\n email: \"rkauffman1y@google.com.hk\",\r\n userName: \"rkauffman1y\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"11/21/1953\",\r\n ipAddress: \"131.87.248.164\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"10/16/2016\",\r\n _updatedDate: \"07/24/2015\"\r\n },\r\n {\r\n id: 72,\r\n firstName: \"Fran\",\r\n lastName: \"MacGill\",\r\n email: \"fmacgill1z@pinterest.com\",\r\n userName: \"fmacgill1z\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"3/16/1991\",\r\n ipAddress: \"155.41.152.146\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"11/23/2012\",\r\n _updatedDate: \"09/03/2016\"\r\n },\r\n {\r\n id: 73,\r\n firstName: \"Marinna\",\r\n lastName: \"Allington\",\r\n email: \"mallington20@icio.us\",\r\n userName: \"mallington20\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"3/15/1964\",\r\n ipAddress: \"120.145.107.78\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"09/07/2011\",\r\n _updatedDate: \"12/26/2017\"\r\n },\r\n {\r\n id: 74,\r\n firstName: \"Irv\",\r\n lastName: \"Rishbrook\",\r\n email: \"irishbrook21@tripod.com\",\r\n userName: \"irishbrook21\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"11/25/1966\",\r\n ipAddress: \"127.115.28.247\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"08/25/2014\",\r\n _updatedDate: \"06/16/2013\"\r\n },\r\n {\r\n id: 75,\r\n firstName: \"Riordan\",\r\n lastName: \"Durran\",\r\n email: \"rdurran22@hubpages.com\",\r\n userName: \"rdurran22\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"3/3/1952\",\r\n ipAddress: \"246.102.6.88\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"04/02/2017\",\r\n _updatedDate: \"01/30/2011\"\r\n },\r\n {\r\n id: 76,\r\n firstName: \"Phillie\",\r\n lastName: \"Elward\",\r\n email: \"pelward23@parallels.com\",\r\n userName: \"pelward23\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"9/15/1965\",\r\n ipAddress: \"75.220.58.105\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"06/23/2014\",\r\n _updatedDate: \"08/20/2016\"\r\n },\r\n {\r\n id: 77,\r\n firstName: \"Hadlee\",\r\n lastName: \"Haddow\",\r\n email: \"hhaddow24@nationalgeographic.com\",\r\n userName: \"hhaddow24\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"10/2/1973\",\r\n ipAddress: \"155.40.18.171\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"03/05/2016\",\r\n _updatedDate: \"07/03/2017\"\r\n },\r\n {\r\n id: 78,\r\n firstName: \"Luciano\",\r\n lastName: \"Pittford\",\r\n email: \"lpittford25@europa.eu\",\r\n userName: \"lpittford25\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"6/14/1963\",\r\n ipAddress: \"131.175.149.47\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"05/01/2014\",\r\n _updatedDate: \"08/02/2011\"\r\n },\r\n {\r\n id: 79,\r\n firstName: \"Zelma\",\r\n lastName: \"Cumberpatch\",\r\n email: \"zcumberpatch26@multiply.com\",\r\n userName: \"zcumberpatch26\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"7/16/1956\",\r\n ipAddress: \"145.155.37.45\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"11/07/2015\",\r\n _updatedDate: \"12/03/2014\"\r\n },\r\n {\r\n id: 80,\r\n firstName: \"Thornton\",\r\n lastName: \"Smuth\",\r\n email: \"tsmuth27@go.com\",\r\n userName: \"tsmuth27\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"5/9/1989\",\r\n ipAddress: \"146.151.187.52\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"12/25/2011\",\r\n _updatedDate: \"12/31/2010\"\r\n },\r\n {\r\n id: 81,\r\n firstName: \"Bunnie\",\r\n lastName: \"Ealden\",\r\n email: \"bealden28@gravatar.com\",\r\n userName: \"bealden28\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"10/2/1999\",\r\n ipAddress: \"184.116.180.222\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"04/09/2015\",\r\n _updatedDate: \"12/07/2013\"\r\n },\r\n {\r\n id: 82,\r\n firstName: \"Pearl\",\r\n lastName: \"Robeson\",\r\n email: \"probeson29@moonfruit.com\",\r\n userName: \"probeson29\",\r\n gender: \"Female\",\r\n status: 0,\r\n dateOfBbirth: \"8/20/1980\",\r\n ipAddress: \"235.213.39.68\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"07/13/2016\",\r\n _updatedDate: \"03/07/2012\"\r\n },\r\n {\r\n id: 83,\r\n firstName: \"Charlie\",\r\n lastName: \"Marvelley\",\r\n email: \"cmarvelley2a@archive.org\",\r\n userName: \"cmarvelley2a\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"11/22/1969\",\r\n ipAddress: \"158.224.240.173\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"03/25/2012\",\r\n _updatedDate: \"11/20/2012\"\r\n },\r\n {\r\n id: 84,\r\n firstName: \"Vere\",\r\n lastName: \"McCartan\",\r\n email: \"vmccartan2b@about.me\",\r\n userName: \"vmccartan2b\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"3/24/1956\",\r\n ipAddress: \"235.57.57.54\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"06/21/2016\",\r\n _updatedDate: \"05/17/2015\"\r\n },\r\n {\r\n id: 85,\r\n firstName: \"Deni\",\r\n lastName: \"Frostdicke\",\r\n email: \"dfrostdicke2c@jigsy.com\",\r\n userName: \"dfrostdicke2c\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"7/31/1964\",\r\n ipAddress: \"108.183.237.176\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"03/13/2013\",\r\n _updatedDate: \"11/12/2017\"\r\n },\r\n {\r\n id: 86,\r\n firstName: \"Poppy\",\r\n lastName: \"Pech\",\r\n email: \"ppech2d@wsj.com\",\r\n userName: \"ppech2d\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"2/24/1976\",\r\n ipAddress: \"221.35.18.213\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"09/10/2015\",\r\n _updatedDate: \"02/13/2013\"\r\n },\r\n {\r\n id: 87,\r\n firstName: \"Dasya\",\r\n lastName: \"O'Nion\",\r\n email: \"donion2e@addthis.com\",\r\n userName: \"donion2e\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"7/5/1993\",\r\n ipAddress: \"28.25.44.40\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"04/12/2013\",\r\n _updatedDate: \"08/24/2012\"\r\n },\r\n {\r\n id: 88,\r\n firstName: \"Marco\",\r\n lastName: \"Izhakov\",\r\n email: \"mizhakov2f@si.edu\",\r\n userName: \"mizhakov2f\",\r\n gender: \"Male\",\r\n status: 1,\r\n dateOfBbirth: \"2/28/1999\",\r\n ipAddress: \"155.123.153.36\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"06/04/2012\",\r\n _updatedDate: \"03/06/2017\"\r\n },\r\n {\r\n id: 89,\r\n firstName: \"Jane\",\r\n lastName: \"Meneux\",\r\n email: \"jmeneux2g@bluehost.com\",\r\n userName: \"jmeneux2g\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"3/15/1962\",\r\n ipAddress: \"216.200.223.149\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"11/24/2015\",\r\n _updatedDate: \"02/08/2012\"\r\n },\r\n {\r\n id: 90,\r\n firstName: \"Audry\",\r\n lastName: \"Glasheen\",\r\n email: \"aglasheen2h@booking.com\",\r\n userName: \"aglasheen2h\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"10/24/1962\",\r\n ipAddress: \"186.134.95.243\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"09/13/2016\",\r\n _updatedDate: \"04/28/2014\"\r\n },\r\n {\r\n id: 91,\r\n firstName: \"Florida\",\r\n lastName: \"Lawleff\",\r\n email: \"flawleff2i@livejournal.com\",\r\n userName: \"flawleff2i\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"2/3/1960\",\r\n ipAddress: \"88.32.51.173\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"03/22/2018\",\r\n _updatedDate: \"11/28/2010\"\r\n },\r\n {\r\n id: 92,\r\n firstName: \"Christoforo\",\r\n lastName: \"Pinchon\",\r\n email: \"cpinchon2j@bloglovin.com\",\r\n userName: \"cpinchon2j\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"2/26/1995\",\r\n ipAddress: \"244.162.142.84\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"11/14/2017\",\r\n _updatedDate: \"11/19/2016\"\r\n },\r\n {\r\n id: 93,\r\n firstName: \"Bertie\",\r\n lastName: \"Antognazzi\",\r\n email: \"bantognazzi2k@ow.ly\",\r\n userName: \"bantognazzi2k\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"6/7/1955\",\r\n ipAddress: \"108.174.189.179\",\r\n type: 0,\r\n _userId: 2,\r\n _createdDate: \"08/03/2016\",\r\n _updatedDate: \"01/27/2018\"\r\n },\r\n {\r\n id: 94,\r\n firstName: \"Clevey\",\r\n lastName: \"Grima\",\r\n email: \"cgrima2l@cmu.edu\",\r\n userName: \"cgrima2l\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"7/7/1981\",\r\n ipAddress: \"255.186.178.211\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"03/23/2014\",\r\n _updatedDate: \"02/10/2011\"\r\n },\r\n {\r\n id: 95,\r\n firstName: \"Herbie\",\r\n lastName: \"Symper\",\r\n email: \"hsymper2m@ca.gov\",\r\n userName: \"hsymper2m\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"7/16/1993\",\r\n ipAddress: \"54.240.157.6\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"07/27/2011\",\r\n _updatedDate: \"05/28/2013\"\r\n },\r\n {\r\n id: 96,\r\n firstName: \"Kizzie\",\r\n lastName: \"Clapson\",\r\n email: \"kclapson2n@linkedin.com\",\r\n userName: \"kclapson2n\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"1/26/1977\",\r\n ipAddress: \"171.243.142.104\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"09/03/2011\",\r\n _updatedDate: \"10/14/2014\"\r\n },\r\n {\r\n id: 97,\r\n firstName: \"Sigvard\",\r\n lastName: \"Edwin\",\r\n email: \"sedwin2o@mlb.com\",\r\n userName: \"sedwin2o\",\r\n gender: \"Male\",\r\n status: 0,\r\n dateOfBbirth: \"4/24/1966\",\r\n ipAddress: \"78.224.218.52\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"05/20/2017\",\r\n _updatedDate: \"09/17/2013\"\r\n },\r\n {\r\n id: 98,\r\n firstName: \"Boniface\",\r\n lastName: \"Rodd\",\r\n email: \"brodd2p@123-reg.co.uk\",\r\n userName: \"brodd2p\",\r\n gender: \"Male\",\r\n status: 2,\r\n dateOfBbirth: \"10/24/1978\",\r\n ipAddress: \"250.44.55.222\",\r\n type: 1,\r\n _userId: 2,\r\n _createdDate: \"04/21/2012\",\r\n _updatedDate: \"07/30/2012\"\r\n },\r\n {\r\n id: 99,\r\n firstName: \"Dorena\",\r\n lastName: \"Oliva\",\r\n email: \"doliva2q@europa.eu\",\r\n userName: \"doliva2q\",\r\n gender: \"Female\",\r\n status: 1,\r\n dateOfBbirth: \"6/16/1987\",\r\n ipAddress: \"94.196.238.12\",\r\n type: 0,\r\n _userId: 1,\r\n _createdDate: \"10/23/2016\",\r\n _updatedDate: \"06/28/2014\"\r\n },\r\n {\r\n id: 100,\r\n firstName: \"Sibylla\",\r\n lastName: \"O'Cahey\",\r\n email: \"socahey2r@paginegialle.it\",\r\n userName: \"socahey2r\",\r\n gender: \"Female\",\r\n status: 2,\r\n dateOfBbirth: \"10/13/1958\",\r\n ipAddress: \"139.240.194.212\",\r\n type: 1,\r\n _userId: 1,\r\n _createdDate: \"11/25/2014\",\r\n _updatedDate: \"08/18/2015\"\r\n }\r\n];\r\n","export default class MockUtils {\r\n /**\r\n * Filtration with sorting\r\n * First do Sort then filter\r\n *\r\n * @param _entities: any[]\r\n * @param _queryParams: QueryParamsModel\r\n * @param _filtrationFields: string[]\r\n */\r\n baseFilter(_entities, _queryParams, _filtrationFields = []) {\r\n // Filtration\r\n let entitiesResult = this.searchInArray(\r\n _entities,\r\n _queryParams.filter,\r\n _filtrationFields\r\n );\r\n\r\n // Sorting\r\n // start\r\n if (_queryParams.sortField) {\r\n entitiesResult = this.sortArray(\r\n entitiesResult,\r\n _queryParams.sortField,\r\n _queryParams.sortOrder\r\n );\r\n }\r\n // end\r\n\r\n // Paginator\r\n // start\r\n const pageNumber = _queryParams.pageNumber - 1;\r\n const totalCount = entitiesResult.length;\r\n const initialPos = pageNumber * _queryParams.pageSize;\r\n entitiesResult = entitiesResult.slice(\r\n initialPos,\r\n initialPos + _queryParams.pageSize\r\n );\r\n // end\r\n\r\n const queryResults = {\r\n entities: entitiesResult,\r\n totalCount: totalCount,\r\n errorMessage: \"\"\r\n };\r\n return queryResults;\r\n }\r\n\r\n /**\r\n * Sort array by field name and order-type\r\n * @param _incomingArray: any[]\r\n * @param _sortField: string\r\n * @param _sortOrder: string\r\n */\r\n sortArray(_incomingArray, _sortField = \"\", _sortOrder = \"asc\") {\r\n if (!_sortField) {\r\n return _incomingArray;\r\n }\r\n\r\n let result = [];\r\n result = _incomingArray.sort((a, b) => {\r\n if (a[_sortField] < b[_sortField]) {\r\n return _sortOrder === \"asc\" ? -1 : 1;\r\n }\r\n\r\n if (a[_sortField] > b[_sortField]) {\r\n return _sortOrder === \"asc\" ? 1 : -1;\r\n }\r\n\r\n return 0;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Filter array by some fields\r\n *\r\n * @param _incomingArray: any[]\r\n * @param _queryObj: any\r\n * @param _filtrationFields: string[]\r\n */\r\n searchInArray(_incomingArray, _queryObj, _filtrationFields = []) {\r\n const result = [];\r\n let resultBuffer = [];\r\n const indexes = [];\r\n let firstIndexes = [];\r\n let doSearch = false;\r\n\r\n _filtrationFields.forEach(item => {\r\n if (item in _queryObj) {\r\n _incomingArray.forEach((element, index) => {\r\n if (element[item] === _queryObj[item]) {\r\n firstIndexes.push(index);\r\n }\r\n });\r\n firstIndexes.forEach(element => {\r\n resultBuffer.push(_incomingArray[element]);\r\n });\r\n _incomingArray = resultBuffer.slice(0);\r\n resultBuffer = [].slice(0);\r\n firstIndexes = [].slice(0);\r\n }\r\n });\r\n\r\n Object.keys(_queryObj).forEach(key => {\r\n const searchText = _queryObj[key]\r\n .toString()\r\n .trim()\r\n .toLowerCase();\r\n if (key && !_filtrationFields.some(e => e === key) && searchText) {\r\n doSearch = true;\r\n try {\r\n _incomingArray.forEach((element, index) => {\r\n if (element[key] || (element[key] === 0 && searchText === \"0\")) {\r\n const _val = element[key]\r\n .toString()\r\n .trim()\r\n .toLowerCase();\r\n if (\r\n _val.indexOf(searchText) > -1 &&\r\n indexes.indexOf(index) === -1\r\n ) {\r\n indexes.push(index);\r\n }\r\n }\r\n });\r\n } catch (ex) {\r\n console.log(ex, key, searchText);\r\n }\r\n }\r\n });\r\n\r\n if (!doSearch) {\r\n return _incomingArray;\r\n }\r\n\r\n indexes.forEach(re => {\r\n result.push(_incomingArray[re]);\r\n });\r\n\r\n return result;\r\n }\r\n}\r\n","import customerTableMock from \"./customerTableMock\";\r\nimport MockUtils from \"./mock.utils\";\r\n\r\nexport default function mockCustomer(mock) {\r\n mock.onPost(\"api/customers\").reply(({ data }) => {\r\n const { customer } = JSON.parse(data);\r\n const {\r\n firstName = \"\",\r\n lastName = \"\",\r\n email = \"\",\r\n userName = \"\",\r\n gender = \"Female\",\r\n status = 0,\r\n dateOfBbirth = \"01/01/2019\",\r\n ipAddress = \"127.0.0.1\",\r\n type = 1\r\n } = customer;\r\n\r\n const id = generateUserId();\r\n const newCustomer = {\r\n id,\r\n firstName,\r\n lastName,\r\n email,\r\n userName,\r\n gender,\r\n status,\r\n dateOfBbirth,\r\n ipAddress,\r\n type\r\n };\r\n customerTableMock.push(newCustomer);\r\n return [200, { customer: newCustomer }];\r\n });\r\n\r\n mock.onPost(\"api/customers/find\").reply(config => {\r\n const mockUtils = new MockUtils();\r\n const { queryParams } = JSON.parse(config.data);\r\n const filterdCustomers = mockUtils.baseFilter(\r\n customerTableMock,\r\n queryParams\r\n );\r\n return [200, filterdCustomers];\r\n });\r\n\r\n mock.onPost(\"api/customers/deleteCustomers\").reply(config => {\r\n const { ids } = JSON.parse(config.data);\r\n ids.forEach(id => {\r\n const index = customerTableMock.findIndex(el => el.id === id);\r\n if (index > -1) {\r\n customerTableMock.splice(index, 1);\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onPost(\"api/customers/updateStatusForCustomers\").reply(config => {\r\n const { ids, status } = JSON.parse(config.data);\r\n customerTableMock.forEach(el => {\r\n if (ids.findIndex(id => id === el.id) > -1) {\r\n el.status = status;\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onGet(/api\\/customers\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/customers\\/(\\d+)/)[1];\r\n const customer = customerTableMock.find(el => el.id === +id);\r\n if (!customer) {\r\n return [400];\r\n }\r\n\r\n return [200, customer];\r\n });\r\n\r\n mock.onPut(/api\\/customers\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/customers\\/(\\d+)/)[1];\r\n const { customer } = JSON.parse(config.data);\r\n const index = customerTableMock.findIndex(el => el.id === +id);\r\n if (!index) {\r\n return [400];\r\n }\r\n\r\n customerTableMock[index] = { ...customer };\r\n return [200];\r\n });\r\n\r\n mock.onDelete(/api\\/customers\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/customers\\/(\\d+)/)[1];\r\n const index = customerTableMock.findIndex(el => el.id === +id);\r\n customerTableMock.splice(index, 1);\r\n if (!index === -1) {\r\n return [400];\r\n }\r\n\r\n return [200];\r\n });\r\n}\r\n\r\nfunction generateUserId() {\r\n const ids = customerTableMock.map(el => el.id);\r\n const maxId = Math.max(...ids);\r\n return maxId + 1;\r\n}\r\n","export default [\r\n {\r\n id: 1,\r\n model: \"Elise\",\r\n manufacture: \"Lotus\",\r\n modelYear: 2004,\r\n mileage: 116879,\r\n // eslint-disable-next-line\r\n description: `The Lotus Elise first appeared in 1996 and revolutionised small sports car design with its lightweight extruded aluminium chassis and composite body. There have been many variations, but the basic principle remain the same.`,\r\n color: \"Red\",\r\n price: 18347,\r\n condition: 1,\r\n createdDate: \"09/30/2017\",\r\n status: 0,\r\n VINCode: \"1FTWX3D52AE575540\",\r\n _userId: 1,\r\n _createdDate: \"03/31/2015\",\r\n _updatedDate: \"05/08/2015\"\r\n },\r\n {\r\n id: 2,\r\n model: \"Sunbird\",\r\n manufacture: \"Pontiac\",\r\n modelYear: 1984,\r\n mileage: 99515,\r\n // eslint-disable-next-line\r\n description: `The Pontiac Sunbird is an automobile that was produced by Pontiac, initially as a subcompact for the 1976 to 1980 model years,and later as a compact for the 1982 to 1994 model years. The Sunbird badge ran for 18 years (with a hiatus during the 1981 and 1982 model years, as the 1982 model was called J2000) and was then replaced in 1995 by the Pontiac Sunfire. Through the years the Sunbird was available in notchback coupé, sedan, hatchback, station wagon, and convertible body styles.`,\r\n color: \"Khaki\",\r\n price: 165956,\r\n condition: 0,\r\n createdDate: \"03/22/2018\",\r\n status: 1,\r\n VINCode: \"JM1NC2EF8A0293556\",\r\n _userId: 1,\r\n _createdDate: \"11/11/2016\",\r\n _updatedDate: \"09/01/2016\"\r\n },\r\n {\r\n id: 3,\r\n model: \"Amigo\",\r\n manufacture: \"Isuzu\",\r\n modelYear: 1993,\r\n mileage: 138027,\r\n // eslint-disable-next-line\r\n description: `The Isuzu MU is a mid-size SUV that was produced by the Japan-based manufacturer Isuzu. The three-door MU was introduced in 1989, followed in 1990 by the five-door version called Isuzu MU Wizard, both of which stopped production in 1998 to be replaced by a second generation. This time, the five-door version dropped the \"MU\" prefix, to become the Isuzu Wizard. The acronym \"MU\" is short for \"Mysterious Utility\". Isuzu manufactured several variations to the MU and its derivates for sale in other countries.`,\r\n color: \"Aquamarine\",\r\n price: 45684,\r\n condition: 0,\r\n createdDate: \"03/06/2018\",\r\n status: 0,\r\n VINCode: \"1G6DG8E56C0973889\",\r\n _userId: 1,\r\n _createdDate: \"08/14/2012\",\r\n _updatedDate: \"03/21/2013\"\r\n },\r\n {\r\n id: 4,\r\n model: \"LS\",\r\n manufacture: \"Lexus\",\r\n modelYear: 2004,\r\n mileage: 183068,\r\n // eslint-disable-next-line\r\n description: `The Lexus LS (Japanese: レクサス・LS, Rekusasu LS) is a full-size luxury car (F-segment in Europe) serving as the flagship model of Lexus, the luxury division of Toyota. For the first four generations, all LS models featured V8 engines and were predominantly rear-wheel-drive, with Lexus also offering all-wheel-drive, hybrid, and long-wheelbase variants. The fifth generation changed to using a V6 engine with no V8 option, and the long wheelbase variant was removed entirely.`,\r\n color: \"Mauv\",\r\n price: 95410,\r\n condition: 1,\r\n createdDate: \"02/03/2018\",\r\n status: 1,\r\n VINCode: \"2T1BU4EE6DC859114\",\r\n _userId: 2,\r\n _createdDate: \"11/25/2012\",\r\n _updatedDate: \"08/15/2013\"\r\n },\r\n {\r\n id: 5,\r\n model: \"Paseo\",\r\n manufacture: \"Toyota\",\r\n modelYear: 1997,\r\n mileage: 74884,\r\n // eslint-disable-next-line\r\n description: `The Toyota Paseo (known as the Cynos in Japan and other regions) is a sports styled compact car sold from 1991–1999 and was loosely based on the Tercel. It was available as a coupe and in later models as a convertible. Toyota stopped selling the car in the United States in 1997, however the car continued to be sold in Canada, Europe and Japan until 1999, but had no direct replacement. The Paseo, like the Tercel, shares a platform with the Starlet. Several parts are interchangeable between the three`,\r\n color: \"Pink\",\r\n price: 24796,\r\n condition: 1,\r\n createdDate: \"08/13/2017\",\r\n status: 0,\r\n VINCode: \"1D7RB1GP0AS597432\",\r\n _userId: 1,\r\n _createdDate: \"11/21/2016\",\r\n _updatedDate: \"10/09/2012\"\r\n },\r\n {\r\n id: 6,\r\n model: \"M\",\r\n manufacture: \"Infiniti\",\r\n modelYear: 2009,\r\n mileage: 194846,\r\n // eslint-disable-next-line\r\n description: `The Infiniti M is a line of mid-size luxury (executive) cars from the Infiniti luxury division of Nissan.\\r\\nThe first iteration was the M30 Coupe/Convertible, which were rebadged JDM Nissan Leopard.\\r\\nAfter a long hiatus, the M nameplate was used for Infiniti's mid-luxury sedans (executive cars). First was the short-lived M45 sedan, a rebadged version of the Japanese-spec Nissan Gloria. The next generations, the M35/45 and M37/56/35h/30d, became the flagship of the Infiniti brand and are based on the JDM Nissan Fuga.`,\r\n color: \"Puce\",\r\n price: 30521,\r\n condition: 1,\r\n createdDate: \"01/27/2018\",\r\n status: 0,\r\n VINCode: \"YV1940AS1D1542424\",\r\n _userId: 2,\r\n _createdDate: \"03/13/2016\",\r\n _updatedDate: \"12/14/2013\"\r\n },\r\n {\r\n id: 7,\r\n model: \"Phantom\",\r\n manufacture: \"Rolls-Royce\",\r\n modelYear: 2008,\r\n mileage: 164124,\r\n // eslint-disable-next-line\r\n description: `The Rolls-Royce Phantom VIII is a luxury saloon car manufactured by Rolls-Royce Motor Cars. It is the eighth and current generation of Rolls-Royce Phantom, and the second launched by Rolls-Royce under BMW ownership. It is offered in two wheelbase lengths`,\r\n color: \"Purple\",\r\n price: 196247,\r\n condition: 1,\r\n createdDate: \"09/28/2017\",\r\n status: 1,\r\n VINCode: \"3VWML7AJ1DM234625\",\r\n _userId: 2,\r\n _createdDate: \"03/31/2012\",\r\n _updatedDate: \"06/27/2014\"\r\n },\r\n {\r\n id: 8,\r\n model: \"QX\",\r\n manufacture: \"Infiniti\",\r\n modelYear: 2002,\r\n mileage: 57410,\r\n // eslint-disable-next-line\r\n description: `The Infiniti QX80 (called the Infiniti QX56 until 2013) is a full-size luxury SUV built by Nissan Motor Company's Infiniti division. The naming convention originally adhered to the current trend of using a numeric designation derived from the engine's displacement, thus QX56 since the car has a 5.6-liter engine. From the 2014 model year, the car was renamed the QX80, as part of Infiniti's model name rebranding. The new name carries no meaning beyond suggesting that the vehicle is larger than smaller models such as the QX60`,\r\n color: \"Green\",\r\n price: 185775,\r\n condition: 1,\r\n createdDate: \"11/15/2017\",\r\n status: 0,\r\n VINCode: \"WDDHF2EB9CA161524\",\r\n _userId: 1,\r\n _createdDate: \"03/17/2013\",\r\n _updatedDate: \"09/05/2014\"\r\n },\r\n {\r\n id: 9,\r\n model: \"Daytona\",\r\n manufacture: \"Dodge\",\r\n modelYear: 1993,\r\n mileage: 4444,\r\n // eslint-disable-next-line\r\n description: `The Dodge Daytona was an automobile which was produced by the Chrysler Corporation under their Dodge division from 1984 to 1993. It was a front-wheel drive hatchback based on the Chrysler G platform, which was derived from the Chrysler K platform. The Chrysler Laser was an upscale rebadged version of the Daytona. The Daytona was restyled for 1987, and again for 1992. It replaced the Mitsubishi Galant-based Challenger, and slotted between the Charger and the Conquest. The Daytona was replaced by the 1995 Dodge Avenger, which was built by Mitsubishi Motors. The Daytona derives its name mainly from the Dodge Charger Daytona, which itself was named after the Daytona 500 race in Daytona Beach, Florida.`,\r\n color: \"Maroon\",\r\n price: 171898,\r\n condition: 0,\r\n createdDate: \"12/24/2017\",\r\n status: 1,\r\n VINCode: \"WBAET37422N752051\",\r\n _userId: 2,\r\n _createdDate: \"11/17/2012\",\r\n _updatedDate: \"03/17/2018\"\r\n },\r\n {\r\n id: 10,\r\n model: \"1500 Silverado\",\r\n manufacture: \"Chevrolet\",\r\n modelYear: 1999,\r\n mileage: 195310,\r\n // eslint-disable-next-line\r\n description: `The Chevrolet Silverado, and its mechanically identical cousin, the GMC Sierra, are a series of full-size and heavy-duty pickup trucks manufactured by General Motors and introduced in 1998 as the successor to the long-running Chevrolet C/K line. The Silverado name was taken from a trim level previously used on its predecessor, the Chevrolet C/K pickup truck from 1975 through 1998. General Motors continues to offer a GMC-badged variant of the Chevrolet full-size pickup under the GMC Sierra name, first used in 1987 for its variant of the GMT400 platform trucks.`,\r\n color: \"Blue\",\r\n price: 25764,\r\n condition: 0,\r\n createdDate: \"08/30/2017\",\r\n status: 1,\r\n VINCode: \"1N6AF0LX6EN590806\",\r\n _userId: 2,\r\n _createdDate: \"10/06/2013\",\r\n _updatedDate: \"03/27/2017\"\r\n },\r\n {\r\n id: 11,\r\n model: \"CTS\",\r\n manufacture: \"Cadillac\",\r\n modelYear: 2012,\r\n mileage: 170862,\r\n // eslint-disable-next-line\r\n description: `The Cadillac CTS is a mid-size luxury car / executive car designed, engineered, manufactured and marketed by General Motors, and now in its third generation. \\r\\nInitially available only as a 4-door sedan on the GM Sigma platform, GM had offered the second generation CTS in three body styles: 4-door sedan, 2-door coupe, and 5-door sport wagon also using the Sigma platform — and the third generation in coupe and sedan configurations, using a stretched version of the GM Alpha platform.\\r\\nWayne Cherry and Kip Wasenko designed the exterior of the first generation CTS, marking the production debut of a design language (marketed as \"Art and Science\") first seen on the Evoq concept car. Bob Boniface and Robin Krieg designed the exterior of the third generation CTS`,\r\n color: \"Crimson\",\r\n price: 80588,\r\n condition: 0,\r\n createdDate: \"02/15/2018\",\r\n status: 0,\r\n VINCode: \"1G4HR54KX4U506530\",\r\n _userId: 2,\r\n _createdDate: \"09/04/2016\",\r\n _updatedDate: \"09/17/2012\"\r\n },\r\n {\r\n id: 12,\r\n model: \"Astro\",\r\n manufacture: \"Chevrolet\",\r\n modelYear: 1995,\r\n mileage: 142137,\r\n // eslint-disable-next-line\r\n description: `The Chevrolet Astro was a rear-wheel drive van/minivan manufactured and marketed by the American automaker Chevrolet from 1985 to 2005 and over two build generations. Along with its rebadged variant, the GMC Safari, the Astro was marketed in passenger as well as cargo and livery configurations—featuring a V6 engine, unibody construction with a separate front engine/suspension sub-frame, leaf-spring rear suspension, rear bi-parting doors, and a seating capacity of up to eight passengers`,\r\n color: \"Teal\",\r\n price: 72430,\r\n condition: 1,\r\n createdDate: \"07/31/2017\",\r\n status: 0,\r\n VINCode: \"KMHGH4JH2DU676107\",\r\n _userId: 1,\r\n _createdDate: \"02/12/2013\",\r\n _updatedDate: \"01/26/2017\"\r\n },\r\n {\r\n id: 13,\r\n model: \"XL7\",\r\n manufacture: \"Suzuki\",\r\n modelYear: 2009,\r\n mileage: 165165,\r\n // eslint-disable-next-line\r\n description: `The Suzuki XL-7 (styled as XL7 for the second generation) is Suzuki's mid-sized SUV that was made from 1998 to 2009, over two generations. It was slotted above the Grand Vitara in Suzuki's lineup.`,\r\n color: \"Puce\",\r\n price: 118667,\r\n condition: 0,\r\n createdDate: \"02/04/2018\",\r\n status: 0,\r\n VINCode: \"1N6AF0LX9EN733005\",\r\n _userId: 2,\r\n _createdDate: \"10/31/2015\",\r\n _updatedDate: \"08/24/2015\"\r\n },\r\n {\r\n id: 14,\r\n model: \"SJ 410\",\r\n manufacture: \"Suzuki\",\r\n modelYear: 1984,\r\n mileage: 176074,\r\n // eslint-disable-next-line\r\n description: `The SJ-Series was introduced to the United States (Puerto Rico (SJ-410) and Canada earlier) in 1985 for the 1986 model year. It was priced at $6200 and 47,000 were sold in its first year. The Samurai had a 1.3 liter, 63 hp (47 kW), 4-cylinder engine and was available as a convertible or a hardtop, and with or without a rear seat. The Suzuki Samurai became intensely popular within the serious 4WD community for its good off-road performance and reliability compared to other 4WDs of the time. This is due to the fact that while very compact and light, it is a real 4WD vehicle equipped with a transfer case, switchable 4WD and low range. Its lightness makes it a very nimble off-roader less prone to sinking in softer ground than heavier types. It is also considered a great beginner off-roader due to its simple design and ease of engine and suspension modifications.`,\r\n color: \"Orange\",\r\n price: 84325,\r\n condition: 0,\r\n createdDate: \"12/22/2017\",\r\n status: 0,\r\n VINCode: \"2C3CDYBT6DH183756\",\r\n _userId: 1,\r\n _createdDate: \"05/30/2010\",\r\n _updatedDate: \"01/02/2014\"\r\n },\r\n {\r\n id: 15,\r\n model: \"F-Series\",\r\n manufacture: \"Ford\",\r\n modelYear: 1995,\r\n mileage: 53030,\r\n // eslint-disable-next-line\r\n description: `The Ford F-Series is a series of light-duty trucks and medium-duty trucks (Class 2-7) that have been marketed and manufactured by Ford Motor Company since 1948. While most variants of the F-Series trucks are full-size pickup trucks, the F-Series also includes chassis cab trucks and commercial vehicles. The Ford F-Series has been the best-selling vehicle in the United States since 1986 and the best-selling pickup since 1977.[1][2] It is also the best selling vehicle in Canada.[3] As of the 2018 model year, the F-Series generates $41.0 billion in annual revenue for Ford, making the F-Series brand more valuable than Coca-Cola and Nike.`,\r\n color: \"Aquamarine\",\r\n price: 77108,\r\n condition: 0,\r\n createdDate: \"01/09/2018\",\r\n status: 0,\r\n VINCode: \"WBAVB33526P873481\",\r\n _userId: 1,\r\n _createdDate: \"12/29/2016\",\r\n _updatedDate: \"02/14/2012\"\r\n },\r\n {\r\n id: 16,\r\n model: \"HS\",\r\n manufacture: \"Lexus\",\r\n modelYear: 2011,\r\n mileage: 84718,\r\n // eslint-disable-next-line\r\n description: `The Lexus HS (Japanese: レクサス・HS, Rekusasu HS) is a dedicated hybrid vehicle introduced by Lexus as a new entry-level luxury compact sedan in 2009.[2] Built on the Toyota New MC platform,[3] it is classified as a compact under Japanese regulations concerning vehicle exterior dimensions and engine displacement. Unveiled at the North American International Auto Show in January 2009, the HS 250h went on sale in July 2009 in Japan, followed by the United States in August 2009 as a 2010 model. The HS 250h represented the first dedicated hybrid vehicle in the Lexus lineup, as well as the first offered with an inline-four gasoline engine.[4] Bioplastic materials are used for the vehicle interior.[5] With a total length of 184.8 inches, the Lexus HS is slightly larger than the Lexus IS, but still smaller than the mid-size Lexus ES.`,\r\n color: \"Purple\",\r\n price: 140170,\r\n condition: 0,\r\n createdDate: \"11/14/2017\",\r\n status: 1,\r\n VINCode: \"1FTWF3A56AE545514\",\r\n _userId: 1,\r\n _createdDate: \"12/19/2014\",\r\n _updatedDate: \"11/09/2014\"\r\n },\r\n {\r\n id: 17,\r\n model: \"Land Cruiser\",\r\n manufacture: \"Toyota\",\r\n modelYear: 2008,\r\n mileage: 157019,\r\n // eslint-disable-next-line\r\n description: `Production of the first generation Land Cruiser began in 1951 (90 units) as Toyota's version of a Jeep-like vehicle.[2][3] The Land Cruiser has been produced in convertible, hardtop, station wagon and cab chassis versions. The Land Cruiser's reliability and longevity has led to huge popularity, especially in Australia where it is the best-selling body-on-frame, four-wheel drive vehicle.[4] Toyota also extensively tests the Land Cruiser in the Australian outback – considered to be one of the toughest operating environments in both temperature and terrain. In Japan, the Land Cruiser is exclusive to Toyota Japanese dealerships called Toyota Store.`,\r\n color: \"Crimson\",\r\n price: 72638,\r\n condition: 1,\r\n createdDate: \"08/08/2017\",\r\n status: 1,\r\n VINCode: \"3C3CFFDR2FT957799\",\r\n _userId: 1,\r\n _createdDate: \"05/30/2010\",\r\n _updatedDate: \"11/06/2012\"\r\n },\r\n {\r\n id: 18,\r\n model: \"Wrangler\",\r\n manufacture: \"Jeep\",\r\n modelYear: 1994,\r\n mileage: 55857,\r\n // eslint-disable-next-line\r\n description: `The Jeep Wrangler is a series of compact and mid-size (Wrangler Unlimited and Wrangler 4-door JL) four-wheel drive off-road vehicle models, manufactured by Jeep since 1986, and currently migrating from its third into its fourth generation. The Wrangler JL was unveiled in late 2017 and will be produced at Jeep's Toledo Complex.`,\r\n color: \"Red\",\r\n price: 193523,\r\n condition: 0,\r\n createdDate: \"02/28/2018\",\r\n status: 1,\r\n VINCode: \"3C4PDCAB7FT652291\",\r\n _userId: 1,\r\n _createdDate: \"10/26/2011\",\r\n _updatedDate: \"10/04/2016\"\r\n },\r\n {\r\n id: 19,\r\n model: \"Sunbird\",\r\n manufacture: \"Pontiac\",\r\n modelYear: 1994,\r\n mileage: 165202,\r\n // eslint-disable-next-line\r\n description: `The Pontiac Sunbird is an automobile that was produced by Pontiac, initially as a subcompact for the 1976 to 1980 model years, and later as a compact for the 1982 to 1994 model years. The Sunbird badge ran for 18 years (with a hiatus during the 1981 and 1982 model years, as the 1982 model was called J2000) and was then replaced in 1995 by the Pontiac Sunfire. Through the years the Sunbird was available in notchback coupé, sedan, hatchback, station wagon, and convertible body styles.`,\r\n color: \"Blue\",\r\n price: 198739,\r\n condition: 0,\r\n createdDate: \"05/13/2017\",\r\n status: 1,\r\n VINCode: \"1GD22XEG9FZ103872\",\r\n _userId: 2,\r\n _createdDate: \"07/24/2013\",\r\n _updatedDate: \"10/03/2013\"\r\n },\r\n {\r\n id: 20,\r\n model: \"A4\",\r\n manufacture: \"Audi\",\r\n modelYear: 1998,\r\n mileage: 117958,\r\n // eslint-disable-next-line\r\n description: `The A4 has been built in five generations and is based on the Volkswagen Group B platform. The first generation A4 succeeded the Audi 80. The automaker's internal numbering treats the A4 as a continuation of the Audi 80 lineage, with the initial A4 designated as the B5-series, followed by the B6, B7, B8 and the B9. The B8 and B9 versions of the A4 are built on the Volkswagen Group MLB platform shared with many other Audi models and potentially one Porsche model within Volkswagen Group`,\r\n color: \"Yellow\",\r\n price: 159377,\r\n condition: 0,\r\n createdDate: \"12/15/2017\",\r\n status: 1,\r\n VINCode: \"2C3CDXCT2FH350366\",\r\n _userId: 2,\r\n _createdDate: \"12/04/2014\",\r\n _updatedDate: \"03/07/2014\"\r\n },\r\n {\r\n id: 21,\r\n model: \"Camry Solara\",\r\n manufacture: \"Toyota\",\r\n modelYear: 2006,\r\n mileage: 22436,\r\n // eslint-disable-next-line\r\n description: `The Toyota Camry Solara, popularly known as the Toyota Solara, is a mid-size coupe/convertible built by Toyota. The Camry Solara is mechanically based on the Toyota Camry and effectively replaced the discontinued Camry Coupe (XV10); however, in contrast with its predecessor's conservative design, the Camry Solara was designed with a greater emphasis on sportiness, with more rakish styling, and uprated suspension and engine tuning intended to provide a sportier feel.[5] The coupe was launched in late 1998 as a 1999 model.[1] In 2000, the convertible was introduced, effectively replacing the Celica convertible in Toyota's North American lineup`,\r\n color: \"Green\",\r\n price: 122562,\r\n condition: 0,\r\n createdDate: \"07/11/2017\",\r\n status: 0,\r\n VINCode: \"3C3CFFHH6DT874066\",\r\n _userId: 2,\r\n _createdDate: \"03/21/2018\",\r\n _updatedDate: \"02/23/2014\"\r\n },\r\n {\r\n id: 22,\r\n model: \"Tribeca\",\r\n manufacture: \"Subaru\",\r\n modelYear: 2007,\r\n mileage: 127958,\r\n // eslint-disable-next-line\r\n description: `The Subaru Tribeca is a mid-size crossover SUV made from 2005 to 2014. Released in some markets, including Canada, as the Subaru B9 Tribeca, the name \"Tribeca\" derives from the Tribeca neighborhood of New York City.[1] Built on the Subaru Legacy platform and sold in five- and seven-seat configurations, the Tribeca was intended to be sold alongside a slightly revised version known as the Saab 9-6. Saab, at the time a subsidiary of General Motors (GM), abandoned the 9-6 program just prior to its release subsequent to GM's 2005 divestiture of its 20 percent stake in FHI.`,\r\n color: \"Yellow\",\r\n price: 90221,\r\n condition: 1,\r\n createdDate: \"11/12/2017\",\r\n status: 0,\r\n VINCode: \"WVWGU7AN9AE957575\",\r\n _userId: 1,\r\n _createdDate: \"07/04/2011\",\r\n _updatedDate: \"08/25/2013\"\r\n },\r\n {\r\n id: 23,\r\n model: \"1500 Club Coupe\",\r\n manufacture: \"GMC\",\r\n modelYear: 1997,\r\n mileage: 95783,\r\n // eslint-disable-next-line\r\n description: `GMC (General Motors Truck Company), formally the GMC Division of General Motors LLC, is a division of the American automobile manufacturer General Motors (GM) that primarily focuses on trucks and utility vehicles. GMC sells pickup and commercial trucks, buses, vans, military vehicles, and sport utility vehicles marketed worldwide by General Motors.`,\r\n color: \"Teal\",\r\n price: 64376,\r\n condition: 1,\r\n createdDate: \"06/28/2017\",\r\n status: 0,\r\n VINCode: \"SCFBF04BX7G920997\",\r\n _userId: 2,\r\n _createdDate: \"02/21/2017\",\r\n _updatedDate: \"01/29/2015\"\r\n },\r\n {\r\n id: 24,\r\n model: \"Firebird\",\r\n manufacture: \"Pontiac\",\r\n modelYear: 2002,\r\n mileage: 74063,\r\n // eslint-disable-next-line\r\n description: `The Pontiac Firebird is an American automobile built by Pontiac from the 1967 to the 2002 model years. Designed as a pony car to compete with the Ford Mustang, it was introduced 23 February 1967, the same model year as GM's Chevrolet division platform-sharing Camaro.[1] This also coincided with the release of the 1967 Mercury Cougar, Ford's upscale, platform-sharing version of the Mustang. The name \"Firebird\" was also previously used by GM for the General Motors Firebird 1950s and early-1960s`,\r\n color: \"Puce\",\r\n price: 94178,\r\n condition: 1,\r\n createdDate: \"09/13/2017\",\r\n status: 0,\r\n VINCode: \"3C63D2JL5CG563879\",\r\n _userId: 2,\r\n _createdDate: \"05/11/2014\",\r\n _updatedDate: \"11/24/2012\"\r\n },\r\n {\r\n id: 25,\r\n model: \"RAV4\",\r\n manufacture: \"Toyota\",\r\n modelYear: 1996,\r\n mileage: 99461,\r\n // eslint-disable-next-line\r\n description: `The Toyota RAV4 (Japanese: トヨタ RAV4 Toyota Ravufō) is a compact crossover SUV (sport utility vehicle) produced by the Japanese automobile manufacturer Toyota. This was the first compact crossover SUV;[1] it made its debut in Japan and Europe in 1994,[2] and in North America in 1995. The vehicle was designed for consumers wanting a vehicle that had most of the benefits of SUVs, such as increased cargo room, higher visibility, and the option of full-time four-wheel drive, along with the maneuverability and fuel economy of a compact car. Although not all RAV4s are four-wheel-drive, RAV4 stands for \"Recreational Activity Vehicle: 4-wheel drive\", because the aforementioned equipment is an option in select countries`,\r\n color: \"Goldenrod\",\r\n price: 48342,\r\n condition: 0,\r\n createdDate: \"12/29/2017\",\r\n status: 0,\r\n VINCode: \"2C4RDGDG6DR836144\",\r\n _userId: 2,\r\n _createdDate: \"04/23/2011\",\r\n _updatedDate: \"07/19/2016\"\r\n },\r\n {\r\n id: 26,\r\n model: \"Rio\",\r\n manufacture: \"Kia\",\r\n modelYear: 2007,\r\n mileage: 189651,\r\n // eslint-disable-next-line\r\n description: `The Kia Opirus was an executive car manufactured and marketed by Kia Motors that was launched in April 2003 and was marketed globally under various nameplates, prominently as the Amanti. It was considered to be Kia's flagship vehicle.`,\r\n color: \"Indigo\",\r\n price: 44292,\r\n condition: 1,\r\n createdDate: \"09/01/2017\",\r\n status: 1,\r\n VINCode: \"1C4SDHCT2CC055294\",\r\n _userId: 2,\r\n _createdDate: \"04/09/2018\",\r\n _updatedDate: \"04/17/2014\"\r\n },\r\n {\r\n id: 27,\r\n model: \"S60\",\r\n manufacture: \"Volvo\",\r\n modelYear: 2001,\r\n mileage: 78963,\r\n // eslint-disable-next-line\r\n description: `First introduced in 2004, Volvo's S60 R used a Haldex all-wheel-drive system mated to a 300 PS (221 kW; 296 hp) / 400 N⋅m (300 lbf⋅ft) inline-5. The 2004–2005 models came with a 6-speed manual transmission, or an available 5-speed automatic which allowed only 258 lb⋅ft (350 N⋅m) torque in 1st and 2nd gears. The 2006–2007 models came with a 6-speed manual or 6-speed automatic transmission (which was no longer torque-restricted)`,\r\n color: \"Goldenrod\",\r\n price: 9440,\r\n condition: 0,\r\n createdDate: \"11/06/2017\",\r\n status: 0,\r\n VINCode: \"3C6TD5CT5CG316067\",\r\n _userId: 2,\r\n _createdDate: \"01/11/2016\",\r\n _updatedDate: \"04/18/2013\"\r\n },\r\n {\r\n id: 28,\r\n model: \"Grand Marquis\",\r\n manufacture: \"Mercury\",\r\n modelYear: 1984,\r\n mileage: 153027,\r\n // eslint-disable-next-line\r\n description: `The Mercury Grand Marquis is an automobile that was sold by the Mercury division of Ford Motor Company from 1975 to 2011. From 1975 to 1982, it was the premium model of the Mercury Marquis model line, becoming a standalone model line in 1983. For its entire production run, the Grand Marquis served as the flagship of the Mercury line, with the Ford (LTD) Crown Victoria serving as its Ford counterpart. In addition, from 1979 to 2011, the Grand Marquis shared the rear-wheel drive Panther platform alongside the Lincoln Town Car`,\r\n color: \"Goldenrod\",\r\n price: 76027,\r\n condition: 0,\r\n createdDate: \"12/16/2017\",\r\n status: 1,\r\n VINCode: \"3C3CFFJH2DT871398\",\r\n _userId: 1,\r\n _createdDate: \"04/04/2014\",\r\n _updatedDate: \"08/24/2017\"\r\n },\r\n {\r\n id: 29,\r\n model: \"Talon\",\r\n manufacture: \"Eagle\",\r\n modelYear: 1991,\r\n mileage: 111234,\r\n // eslint-disable-next-line\r\n description: `Cosmetically, differences between the three were found in wheels, availability of colors, tail lights, front and rear bumpers, and spoilers. The Talon featured two-tone body color with a black 'greenhouse' (roof, pillars, door-mounted mirrors) regardless of the body color. The variants featured 5-speed manual or 4-speed automatic transmissions and a hood bulge on the left-hand side of the car in order for camshaft clearance on the 4G63 engine. The base model DL did not use this engine but still had a bulge as evident in the 1992 Talon brochure. 2nd Generation cars all had such a bulge, even with the inclusion of the 420A engine`,\r\n color: \"Teal\",\r\n price: 157216,\r\n condition: 0,\r\n createdDate: \"05/08/2017\",\r\n status: 1,\r\n VINCode: \"YV1902FH1D2957659\",\r\n _userId: 1,\r\n _createdDate: \"04/16/2017\",\r\n _updatedDate: \"01/14/2011\"\r\n },\r\n {\r\n id: 30,\r\n model: \"Passport\",\r\n manufacture: \"Honda\",\r\n modelYear: 2002,\r\n mileage: 3812,\r\n // eslint-disable-next-line\r\n description: `The Passport was a part of a partnership between Isuzu and Honda in the 1990s, which saw an exchange of passenger vehicles from Honda to Isuzu, such as the Isuzu Oasis, and trucks from Isuzu to Honda, such as the Passport and Acura SLX. This arrangement was convenient for both companies, as Isuzu discontinued passenger car production in 1993 after a corporate restructuring, and Honda was in desperate need a SUV, a segment that was growing in popularity in North America as well as Japan during the 1990s. The partnership ended in 2002 with the discontinuation of the Passport in favor of the Honda-engineered Pilot`,\r\n color: \"Puce\",\r\n price: 41299,\r\n condition: 1,\r\n createdDate: \"03/08/2018\",\r\n status: 0,\r\n VINCode: \"WVWEU9AN4AE524071\",\r\n _userId: 2,\r\n _createdDate: \"07/31/2015\",\r\n _updatedDate: \"07/03/2017\"\r\n },\r\n {\r\n id: 31,\r\n model: \"H3\",\r\n manufacture: \"Hummer\",\r\n modelYear: 2006,\r\n mileage: 196321,\r\n // eslint-disable-next-line\r\n description: `The Hummer H3 is a sport utility vehicle/off-road vehicle from Hummer that was produced from 2005 to 2010. Introduced for the 2006 model year, it was based on a highly modified GMT355 underpinning the Chevrolet Colorado/GMC Canyon compact pickup trucks that were also built at GM's Shreveport Operations in Shreveport, Louisiana and the Port Elizabeth plant in South Africa. The H3 was actually the smallest among the Hummer models. It was available either as a traditional midsize SUV or as a midsize pickup known as the H3T`,\r\n color: \"Pink\",\r\n price: 186964,\r\n condition: 1,\r\n createdDate: \"06/04/2017\",\r\n status: 1,\r\n VINCode: \"4T1BF1FK4FU746230\",\r\n _userId: 2,\r\n _createdDate: \"03/09/2014\",\r\n _updatedDate: \"02/10/2017\"\r\n },\r\n {\r\n id: 32,\r\n model: \"Comanche\",\r\n manufacture: \"Jeep\",\r\n modelYear: 1992,\r\n mileage: 72285,\r\n // eslint-disable-next-line\r\n description: `The Jeep Comanche (designated MJ) is a pickup truck variant of the Cherokee compact SUV (1984–2001)[3] manufactured and marketed by Jeep for model years 1986-1992 in rear wheel (RWD) and four-wheel drive (4WD) models as well as two cargo bed lengths: six-feet (1.83 metres) and seven-feet (2.13 metres)`,\r\n color: \"Mauv\",\r\n price: 145971,\r\n condition: 1,\r\n createdDate: \"09/01/2017\",\r\n status: 0,\r\n VINCode: \"1J4PN2GK1BW745045\",\r\n _userId: 2,\r\n _createdDate: \"07/27/2013\",\r\n _updatedDate: \"09/23/2016\"\r\n },\r\n {\r\n id: 33,\r\n model: \"Blazer\",\r\n manufacture: \"Chevrolet\",\r\n modelYear: 1993,\r\n mileage: 189804,\r\n // eslint-disable-next-line\r\n description: `The 2014 – 2nd generation, MY14 Duramax 2.8L diesel engines have several new parts, namely a new water-cooled variable-geometry turbocharger, a new high-pressure common-rail fuel delivery system, a new exhaust gas recirculation (EGR) system, a new intake manifold, a new cylinder head, a new cylinder block, a new balance shaft unit and a new Engine Control Module (ECM). and now produce 197 hp and 369 Ft/Lbs of torque`,\r\n color: \"Indigo\",\r\n price: 154594,\r\n condition: 0,\r\n createdDate: \"09/13/2017\",\r\n status: 0,\r\n VINCode: \"1G6KD57Y43U482896\",\r\n _userId: 1,\r\n _createdDate: \"05/27/2017\",\r\n _updatedDate: \"05/17/2016\"\r\n },\r\n {\r\n id: 34,\r\n model: \"Envoy XUV\",\r\n manufacture: \"GMC\",\r\n modelYear: 2004,\r\n mileage: 187960,\r\n // eslint-disable-next-line\r\n description: `The GMC Envoy is a mid-size SUV that was produced by General Motors. It was introduced for the 1998 model year. After the first generation Envoy was discontinued after the 2000 model year, but the Envoy was reintroduced and redesigned for the 2002 model year, and it was available in the GMC line of vehicles from the 2002 to 2009 model years`,\r\n color: \"Turquoise\",\r\n price: 185103,\r\n condition: 1,\r\n createdDate: \"12/07/2017\",\r\n status: 0,\r\n VINCode: \"5GAER23D09J658030\",\r\n _userId: 2,\r\n _createdDate: \"12/08/2017\",\r\n _updatedDate: \"06/15/2011\"\r\n }\r\n];\r\n","import carTableMock from \"./carTableMock\";\r\nimport MockUtils from \"./mock.utils\";\r\n\r\nexport default function mockProducts(mock) {\r\n mock.onPost(\"api/products\").reply(({ data }) => {\r\n const { product } = JSON.parse(data);\r\n const {\r\n model = \"\",\r\n manufacture = \"\",\r\n modelYear = 2000,\r\n mileage = 0,\r\n description = \"\",\r\n color = \"Black\",\r\n price = 1000,\r\n condition = 0,\r\n status = 0,\r\n VINCode = \"\"\r\n } = product;\r\n\r\n const id = generateProductId();\r\n const newProduct = {\r\n id,\r\n model,\r\n manufacture,\r\n modelYear,\r\n mileage,\r\n description,\r\n color,\r\n price,\r\n condition,\r\n status,\r\n VINCode\r\n };\r\n carTableMock.push(newProduct);\r\n return [200, { product: newProduct }];\r\n });\r\n\r\n mock.onPost(\"api/products/find\").reply(config => {\r\n const mockUtils = new MockUtils();\r\n const { queryParams } = JSON.parse(config.data);\r\n const filteredProducts = mockUtils.baseFilter(carTableMock, queryParams);\r\n return [200, filteredProducts];\r\n });\r\n\r\n mock.onPost(\"api/products/deleteProducts\").reply(config => {\r\n const { ids } = JSON.parse(config.data);\r\n ids.forEach(id => {\r\n const index = carTableMock.findIndex(el => el.id === id);\r\n if (index > -1) {\r\n carTableMock.splice(index, 1);\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onPost(\"api/products/updateStatusForProducts\").reply(config => {\r\n const { ids, status } = JSON.parse(config.data);\r\n carTableMock.forEach(el => {\r\n if (ids.findIndex(id => id === el.id) > -1) {\r\n el.status = status;\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onGet(/api\\/products\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/products\\/(\\d+)/)[1];\r\n const product = carTableMock.find(el => el.id === +id);\r\n if (!product) {\r\n return [400];\r\n }\r\n\r\n return [200, product];\r\n });\r\n\r\n mock.onPut(/api\\/products\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/products\\/(\\d+)/)[1];\r\n const { product } = JSON.parse(config.data);\r\n const index = carTableMock.findIndex(el => el.id === +id);\r\n if (!index) {\r\n return [400];\r\n }\r\n\r\n carTableMock[index] = { ...product };\r\n return [200];\r\n });\r\n\r\n mock.onDelete(/api\\/products\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/products\\/(\\d+)/)[1];\r\n const index = carTableMock.findIndex(el => el.id === +id);\r\n carTableMock.splice(index, 1);\r\n if (!index === -1) {\r\n return [400];\r\n }\r\n\r\n return [200];\r\n });\r\n}\r\n\r\nfunction generateProductId() {\r\n const ids = carTableMock.map(el => el.id);\r\n const maxId = Math.max(...ids);\r\n return maxId + 1;\r\n}","export default [\r\n {\r\n id: 1,\r\n carId: 1,\r\n text: \"enim lorem ipsum dolor sit amet consectetuer adipiscing elit proin\",\r\n _userId: 2,\r\n _createdDate: \"02/20/2011\",\r\n _updatedDate: \"06/25/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"11/18/2018\"\r\n },\r\n {\r\n id: 2,\r\n carId: 1,\r\n text: \"in\",\r\n _userId: 1,\r\n _createdDate: \"02/05/2014\",\r\n _updatedDate: \"09/25/2017\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"10/26/2019\"\r\n },\r\n {\r\n id: 3,\r\n carId: 1,\r\n text: \"quis tortor id nulla ultrices aliquet maecenas leo\",\r\n _userId: 2,\r\n _createdDate: \"04/10/2017\",\r\n _updatedDate: \"06/12/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/10/2020\"\r\n },\r\n {\r\n id: 4,\r\n carId: 2,\r\n text: \"curabitur gravida nisi at nibh in hac habitasse\",\r\n _userId: 1,\r\n _createdDate: \"03/02/2015\",\r\n _updatedDate: \"03/30/2014\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"12/13/2018\"\r\n },\r\n {\r\n id: 5,\r\n carId: 2,\r\n text:\r\n \"orci luctus et ultrices posuere cubilia curae duis faucibus accumsan odio curabitur convallis\",\r\n _userId: 2,\r\n _createdDate: \"02/14/2015\",\r\n _updatedDate: \"07/11/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"10/24/2019\"\r\n },\r\n {\r\n id: 6,\r\n carId: 2,\r\n text: \"integer ac\",\r\n _userId: 1,\r\n _createdDate: \"05/28/2015\",\r\n _updatedDate: \"07/29/2016\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"01/22/2019\"\r\n },\r\n {\r\n id: 7,\r\n carId: 3,\r\n text:\r\n \"lectus aliquam sit amet diam in magna bibendum imperdiet nullam orci pede\",\r\n _userId: 2,\r\n _createdDate: \"03/08/2013\",\r\n _updatedDate: \"09/24/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"03/31/2020\"\r\n },\r\n {\r\n id: 8,\r\n carId: 3,\r\n text: \"morbi odio odio elementum eu interdum eu tincidunt in leo\",\r\n _userId: 2,\r\n _createdDate: \"07/09/2010\",\r\n _updatedDate: \"01/25/2015\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/20/2019\"\r\n },\r\n {\r\n id: 9,\r\n carId: 3,\r\n text: \"orci\",\r\n _userId: 1,\r\n _createdDate: \"02/02/2018\",\r\n _updatedDate: \"08/04/2015\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"04/03/2020\"\r\n },\r\n {\r\n id: 10,\r\n carId: 4,\r\n text:\r\n \"vel pede morbi porttitor lorem id ligula suspendisse ornare consequat lectus in est risus auctor sed tristique in tempus sit\",\r\n _userId: 1,\r\n _createdDate: \"09/09/2013\",\r\n _updatedDate: \"03/06/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"10/28/2018\"\r\n },\r\n {\r\n id: 11,\r\n carId: 4,\r\n text: \"ligula sit amet eleifend pede libero quis orci\",\r\n _userId: 2,\r\n _createdDate: \"08/17/2010\",\r\n _updatedDate: \"03/05/2016\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"06/22/2019\"\r\n },\r\n {\r\n id: 12,\r\n carId: 4,\r\n text: \"eget eleifend luctus ultricies eu nibh quisque id justo sit amet\",\r\n _userId: 2,\r\n _createdDate: \"09/17/2014\",\r\n _updatedDate: \"04/18/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"01/01/2020\"\r\n },\r\n {\r\n id: 13,\r\n carId: 5,\r\n text: \"\",\r\n _userId: 1,\r\n _createdDate: \"03/25/2013\",\r\n _updatedDate: \"11/13/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/25/2019\"\r\n },\r\n {\r\n id: 14,\r\n carId: 5,\r\n text: \"justo lacinia eget tincidunt eget tempus vel pede morbi porttitor\",\r\n _userId: 2,\r\n _createdDate: \"03/22/2015\",\r\n _updatedDate: \"04/22/2015\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/07/2020\"\r\n },\r\n {\r\n id: 15,\r\n carId: 5,\r\n text: \"quam pede\",\r\n _userId: 1,\r\n _createdDate: \"03/18/2018\",\r\n _updatedDate: \"06/01/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"02/09/2020\"\r\n },\r\n {\r\n id: 16,\r\n carId: 6,\r\n text:\r\n \"bibendum morbi non quam nec dui luctus rutrum nulla tellus in sagittis dui vel nisl duis ac nibh fusce\",\r\n _userId: 2,\r\n _createdDate: \"01/09/2013\",\r\n _updatedDate: \"02/10/2017\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"09/21/2019\"\r\n },\r\n {\r\n id: 17,\r\n carId: 6,\r\n text: \"id consequat in consequat ut nulla sed accumsan felis ut at dolor\",\r\n _userId: 2,\r\n _createdDate: \"07/27/2012\",\r\n _updatedDate: \"04/13/2015\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"08/01/2019\"\r\n },\r\n {\r\n id: 18,\r\n carId: 6,\r\n text:\r\n \"eu magna vulputate luctus cum sociis natoque penatibus et magnis dis parturient\",\r\n _userId: 1,\r\n _createdDate: \"08/12/2011\",\r\n _updatedDate: \"04/08/2018\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"03/28/2020\"\r\n },\r\n {\r\n id: 19,\r\n carId: 7,\r\n text:\r\n \"nec nisi vulputate nonummy maecenas tincidunt lacus at velit vivamus vel nulla eget\",\r\n _userId: 1,\r\n _createdDate: \"03/03/2013\",\r\n _updatedDate: \"09/18/2017\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"08/08/2019\"\r\n },\r\n {\r\n id: 20,\r\n carId: 7,\r\n text: \"\",\r\n _userId: 1,\r\n _createdDate: \"05/06/2015\",\r\n _updatedDate: \"02/20/2016\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"02/11/2019\"\r\n },\r\n {\r\n id: 21,\r\n carId: 7,\r\n text:\r\n \"sed vestibulum sit amet cursus id turpis integer aliquet massa id lobortis convallis\",\r\n _userId: 2,\r\n _createdDate: \"08/05/2014\",\r\n _updatedDate: \"03/13/2018\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"02/03/2020\"\r\n },\r\n {\r\n id: 22,\r\n carId: 8,\r\n text: \"dolor morbi vel lectus in quam fringilla rhoncus mauris enim leo\",\r\n _userId: 2,\r\n _createdDate: \"04/25/2011\",\r\n _updatedDate: \"03/09/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"12/06/2018\"\r\n },\r\n {\r\n id: 23,\r\n carId: 8,\r\n text:\r\n \"mauris lacinia sapien quis libero nullam sit amet turpis elementum ligula vehicula consequat morbi a ipsum integer a nibh\",\r\n _userId: 1,\r\n _createdDate: \"07/03/2014\",\r\n _updatedDate: \"08/23/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/18/2019\"\r\n },\r\n {\r\n id: 24,\r\n carId: 8,\r\n text:\r\n \"ultrices posuere cubilia curae donec pharetra magna vestibulum aliquet ultrices erat tortor sollicitudin\",\r\n _userId: 2,\r\n _createdDate: \"05/21/2013\",\r\n _updatedDate: \"10/01/2016\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"04/18/2019\"\r\n },\r\n {\r\n id: 25,\r\n carId: 9,\r\n text: \"orci luctus et ultrices\",\r\n _userId: 2,\r\n _createdDate: \"05/29/2014\",\r\n _updatedDate: \"02/03/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"06/23/2019\"\r\n },\r\n {\r\n id: 26,\r\n carId: 9,\r\n text: \"donec diam neque vestibulum eget vulputate ut\",\r\n _userId: 1,\r\n _createdDate: \"06/06/2012\",\r\n _updatedDate: \"02/01/2018\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"12/29/2018\"\r\n },\r\n {\r\n id: 27,\r\n carId: 9,\r\n text: \"sapien sapien non mi integer ac neque duis bibendum morbi non quam\",\r\n _userId: 1,\r\n _createdDate: \"05/12/2015\",\r\n _updatedDate: \"11/11/2011\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"04/26/2020\"\r\n },\r\n {\r\n id: 28,\r\n carId: 10,\r\n text: \"\",\r\n _userId: 1,\r\n _createdDate: \"03/17/2013\",\r\n _updatedDate: \"08/13/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/12/2019\"\r\n },\r\n {\r\n id: 29,\r\n carId: 10,\r\n text:\r\n \"aliquam lacus morbi quis tortor id nulla ultrices aliquet maecenas leo odio condimentum id luctus nec molestie sed\",\r\n _userId: 1,\r\n _createdDate: \"07/03/2016\",\r\n _updatedDate: \"02/06/2011\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"02/24/2019\"\r\n },\r\n {\r\n id: 30,\r\n carId: 10,\r\n text: \"donec quis orci eget orci vehicula condimentum\",\r\n _userId: 2,\r\n _createdDate: \"01/27/2014\",\r\n _updatedDate: \"12/09/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/27/2020\"\r\n },\r\n {\r\n id: 31,\r\n carId: 11,\r\n text: \"etiam faucibus cursus urna ut tellus nulla ut erat\",\r\n _userId: 1,\r\n _createdDate: \"07/08/2014\",\r\n _updatedDate: \"06/07/2014\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"05/26/2020\"\r\n },\r\n {\r\n id: 32,\r\n carId: 11,\r\n text:\r\n \"hac habitasse platea dictumst etiam faucibus cursus urna ut tellus nulla ut erat id mauris vulputate elementum nullam varius\",\r\n _userId: 1,\r\n _createdDate: \"05/03/2016\",\r\n _updatedDate: \"07/20/2012\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"08/11/2019\"\r\n },\r\n {\r\n id: 33,\r\n carId: 11,\r\n text: \"vel enim sit amet\",\r\n _userId: 1,\r\n _createdDate: \"06/02/2017\",\r\n _updatedDate: \"05/03/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"12/18/2019\"\r\n },\r\n {\r\n id: 34,\r\n carId: 12,\r\n text:\r\n \"est congue elementum in hac habitasse platea dictumst morbi vestibulum\",\r\n _userId: 2,\r\n _createdDate: \"03/28/2017\",\r\n _updatedDate: \"07/23/2010\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/16/2019\"\r\n },\r\n {\r\n id: 35,\r\n carId: 12,\r\n text: \"tempus vel pede morbi\",\r\n _userId: 1,\r\n _createdDate: \"10/29/2013\",\r\n _updatedDate: \"01/22/2016\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"12/30/2018\"\r\n },\r\n {\r\n id: 36,\r\n carId: 12,\r\n text:\r\n \"augue vel accumsan tellus nisi eu orci mauris lacinia sapien quis libero nullam sit amet turpis\",\r\n _userId: 2,\r\n _createdDate: \"03/31/2011\",\r\n _updatedDate: \"08/20/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"06/29/2019\"\r\n },\r\n {\r\n id: 37,\r\n carId: 13,\r\n text: \"faucibus\",\r\n _userId: 2,\r\n _createdDate: \"12/24/2016\",\r\n _updatedDate: \"03/01/2017\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"04/09/2020\"\r\n },\r\n {\r\n id: 38,\r\n carId: 13,\r\n text:\r\n \"vulputate luctus cum sociis natoque penatibus et magnis dis parturient montes nascetur ridiculus\",\r\n _userId: 1,\r\n _createdDate: \"08/02/2015\",\r\n _updatedDate: \"10/24/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"03/03/2020\"\r\n },\r\n {\r\n id: 39,\r\n carId: 13,\r\n text:\r\n \"nulla ultrices aliquet maecenas leo odio condimentum id luctus nec molestie sed justo pellentesque viverra pede ac\",\r\n _userId: 1,\r\n _createdDate: \"03/27/2011\",\r\n _updatedDate: \"11/25/2017\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"12/22/2019\"\r\n },\r\n {\r\n id: 40,\r\n carId: 14,\r\n text:\r\n \"vel accumsan tellus nisi eu orci mauris lacinia sapien quis libero nullam sit amet turpis elementum\",\r\n _userId: 1,\r\n _createdDate: \"02/03/2017\",\r\n _updatedDate: \"03/15/2014\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"02/06/2020\"\r\n },\r\n {\r\n id: 41,\r\n carId: 14,\r\n text: \"nec dui luctus rutrum nulla tellus in sagittis dui vel\",\r\n _userId: 2,\r\n _createdDate: \"08/12/2013\",\r\n _updatedDate: \"03/26/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"09/22/2019\"\r\n },\r\n {\r\n id: 42,\r\n carId: 14,\r\n text: \"integer aliquet massa id lobortis convallis\",\r\n _userId: 1,\r\n _createdDate: \"09/09/2013\",\r\n _updatedDate: \"03/06/2018\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"01/19/2019\"\r\n },\r\n {\r\n id: 43,\r\n carId: 15,\r\n text: \"proin leo odio porttitor id consequat in consequat\",\r\n _userId: 2,\r\n _createdDate: \"04/25/2015\",\r\n _updatedDate: \"09/29/2015\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"11/02/2019\"\r\n },\r\n {\r\n id: 44,\r\n carId: 15,\r\n text:\r\n \"mauris enim leo rhoncus sed vestibulum sit amet cursus id turpis integer aliquet massa id lobortis convallis tortor\",\r\n _userId: 1,\r\n _createdDate: \"11/28/2013\",\r\n _updatedDate: \"10/12/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"02/28/2019\"\r\n },\r\n {\r\n id: 45,\r\n carId: 15,\r\n text:\r\n \"felis donec semper sapien a libero nam dui proin leo odio porttitor id consequat in consequat ut\",\r\n _userId: 1,\r\n _createdDate: \"12/24/2016\",\r\n _updatedDate: \"03/18/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/13/2019\"\r\n },\r\n {\r\n id: 46,\r\n carId: 16,\r\n text:\r\n \"id lobortis convallis tortor risus dapibus augue vel accumsan tellus nisi eu orci mauris lacinia sapien quis libero\",\r\n _userId: 2,\r\n _createdDate: \"09/16/2015\",\r\n _updatedDate: \"09/20/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/28/2019\"\r\n },\r\n {\r\n id: 47,\r\n carId: 16,\r\n text: \"semper rutrum nulla nunc purus phasellus\",\r\n _userId: 1,\r\n _createdDate: \"04/09/2017\",\r\n _updatedDate: \"08/19/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"11/05/2019\"\r\n },\r\n {\r\n id: 48,\r\n carId: 16,\r\n text: \"curabitur at ipsum ac tellus semper\",\r\n _userId: 2,\r\n _createdDate: \"10/09/2010\",\r\n _updatedDate: \"11/20/2014\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"11/27/2018\"\r\n },\r\n {\r\n id: 49,\r\n carId: 17,\r\n text: \"tellus nisi eu orci mauris lacinia sapien\",\r\n _userId: 1,\r\n _createdDate: \"11/18/2012\",\r\n _updatedDate: \"10/24/2017\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"04/10/2019\"\r\n },\r\n {\r\n id: 50,\r\n carId: 17,\r\n text: \"quisque id justo sit amet sapien dignissim vestibulum vestibulum\",\r\n _userId: 1,\r\n _createdDate: \"09/21/2015\",\r\n _updatedDate: \"11/27/2016\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"12/17/2018\"\r\n },\r\n {\r\n id: 51,\r\n carId: 17,\r\n text:\r\n \"diam id ornare imperdiet sapien urna pretium nisl ut volutpat sapien arcu sed\",\r\n _userId: 1,\r\n _createdDate: \"08/13/2012\",\r\n _updatedDate: \"06/21/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"06/11/2019\"\r\n },\r\n {\r\n id: 52,\r\n carId: 18,\r\n text: \"eget nunc donec\",\r\n _userId: 1,\r\n _createdDate: \"03/30/2012\",\r\n _updatedDate: \"08/05/2012\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/15/2018\"\r\n },\r\n {\r\n id: 53,\r\n carId: 18,\r\n text: \"nulla ac enim in tempor\",\r\n _userId: 1,\r\n _createdDate: \"04/30/2012\",\r\n _updatedDate: \"11/12/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"01/16/2020\"\r\n },\r\n {\r\n id: 54,\r\n carId: 18,\r\n text: \"in quis justo maecenas rhoncus aliquam lacus morbi quis tortor id\",\r\n _userId: 2,\r\n _createdDate: \"08/29/2012\",\r\n _updatedDate: \"12/10/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"09/25/2019\"\r\n },\r\n {\r\n id: 55,\r\n carId: 19,\r\n text: \"justo in\",\r\n _userId: 2,\r\n _createdDate: \"11/27/2017\",\r\n _updatedDate: \"10/03/2010\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"10/04/2019\"\r\n },\r\n {\r\n id: 56,\r\n carId: 19,\r\n text: \"duis\",\r\n _userId: 2,\r\n _createdDate: \"07/09/2016\",\r\n _updatedDate: \"02/13/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/07/2020\"\r\n },\r\n {\r\n id: 57,\r\n carId: 19,\r\n text:\r\n \"luctus tincidunt nulla mollis molestie lorem quisque ut erat curabitur gravida nisi at nibh in hac habitasse platea\",\r\n _userId: 1,\r\n _createdDate: \"01/10/2014\",\r\n _updatedDate: \"01/07/2014\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"04/01/2020\"\r\n },\r\n {\r\n id: 58,\r\n carId: 20,\r\n text: \"non sodales sed tincidunt\",\r\n _userId: 1,\r\n _createdDate: \"02/15/2016\",\r\n _updatedDate: \"12/12/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"08/26/2019\"\r\n },\r\n {\r\n id: 59,\r\n carId: 20,\r\n text:\r\n \"dictumst aliquam augue quam sollicitudin vitae consectetuer eget rutrum at lorem integer tincidunt ante vel ipsum\",\r\n _userId: 2,\r\n _createdDate: \"01/08/2018\",\r\n _updatedDate: \"06/20/2011\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"10/27/2019\"\r\n },\r\n {\r\n id: 60,\r\n carId: 20,\r\n text: \"adipiscing molestie hendrerit at vulputate\",\r\n _userId: 1,\r\n _createdDate: \"01/06/2013\",\r\n _updatedDate: \"09/08/2017\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/03/2020\"\r\n },\r\n {\r\n id: 61,\r\n carId: 21,\r\n text: \"sed tristique in tempus sit amet sem fusce consequat nulla nisl\",\r\n _userId: 1,\r\n _createdDate: \"01/05/2012\",\r\n _updatedDate: \"06/05/2014\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"04/06/2019\"\r\n },\r\n {\r\n id: 62,\r\n carId: 21,\r\n text: \"sem praesent id massa id nisl venenatis lacinia aenean sit\",\r\n _userId: 2,\r\n _createdDate: \"12/06/2014\",\r\n _updatedDate: \"12/23/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"02/05/2019\"\r\n },\r\n {\r\n id: 63,\r\n carId: 21,\r\n text: \"curabitur at ipsum ac tellus semper interdum\",\r\n _userId: 2,\r\n _createdDate: \"11/23/2014\",\r\n _updatedDate: \"04/10/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"04/05/2020\"\r\n },\r\n {\r\n id: 64,\r\n carId: 22,\r\n text: \"donec ut mauris eget massa tempor convallis\",\r\n _userId: 2,\r\n _createdDate: \"10/16/2011\",\r\n _updatedDate: \"11/30/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"11/23/2019\"\r\n },\r\n {\r\n id: 65,\r\n carId: 22,\r\n text: \"in faucibus orci luctus et ultrices posuere\",\r\n _userId: 1,\r\n _createdDate: \"11/12/2011\",\r\n _updatedDate: \"12/16/2016\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"04/23/2019\"\r\n },\r\n {\r\n id: 66,\r\n carId: 22,\r\n text: \"ligula\",\r\n _userId: 2,\r\n _createdDate: \"12/30/2014\",\r\n _updatedDate: \"12/12/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"03/28/2019\"\r\n },\r\n {\r\n id: 67,\r\n carId: 23,\r\n text:\r\n \"congue etiam justo etiam pretium iaculis justo in hac habitasse platea dictumst etiam faucibus cursus\",\r\n _userId: 1,\r\n _createdDate: \"05/09/2014\",\r\n _updatedDate: \"05/28/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/25/2018\"\r\n },\r\n {\r\n id: 68,\r\n carId: 23,\r\n text: \"mollis molestie lorem quisque ut erat curabitur gravida nisi\",\r\n _userId: 2,\r\n _createdDate: \"12/07/2011\",\r\n _updatedDate: \"08/07/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"06/22/2019\"\r\n },\r\n {\r\n id: 69,\r\n carId: 23,\r\n text:\r\n \"maecenas tincidunt lacus at velit vivamus vel nulla eget eros elementum pellentesque quisque porta volutpat erat quisque\",\r\n _userId: 1,\r\n _createdDate: \"11/15/2012\",\r\n _updatedDate: \"09/02/2015\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"10/30/2018\"\r\n },\r\n {\r\n id: 70,\r\n carId: 24,\r\n text: \"libero convallis\",\r\n _userId: 1,\r\n _createdDate: \"12/04/2010\",\r\n _updatedDate: \"09/25/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/25/2018\"\r\n },\r\n {\r\n id: 71,\r\n carId: 24,\r\n text: \"vitae nisi nam ultrices libero\",\r\n _userId: 1,\r\n _createdDate: \"02/24/2015\",\r\n _updatedDate: \"03/10/2011\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"04/17/2020\"\r\n },\r\n {\r\n id: 72,\r\n carId: 24,\r\n text: \"augue a suscipit nulla elit ac nulla sed vel enim sit amet nunc\",\r\n _userId: 1,\r\n _createdDate: \"02/21/2012\",\r\n _updatedDate: \"12/09/2011\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"07/22/2019\"\r\n },\r\n {\r\n id: 73,\r\n carId: 25,\r\n text: \"id turpis integer aliquet massa id lobortis convallis tortor\",\r\n _userId: 1,\r\n _createdDate: \"01/20/2014\",\r\n _updatedDate: \"09/03/2014\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"01/10/2020\"\r\n },\r\n {\r\n id: 74,\r\n carId: 25,\r\n text: \"felis fusce posuere felis sed lacus morbi sem mauris laoreet\",\r\n _userId: 1,\r\n _createdDate: \"10/24/2014\",\r\n _updatedDate: \"02/19/2018\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"12/19/2019\"\r\n },\r\n {\r\n id: 75,\r\n carId: 25,\r\n text:\r\n \"neque libero convallis eget eleifend luctus ultricies eu nibh quisque id justo sit amet sapien dignissim\",\r\n _userId: 2,\r\n _createdDate: \"02/19/2016\",\r\n _updatedDate: \"06/26/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/23/2020\"\r\n },\r\n {\r\n id: 76,\r\n carId: 26,\r\n text:\r\n \"nulla nunc purus phasellus in felis donec semper sapien a libero nam\",\r\n _userId: 1,\r\n _createdDate: \"07/29/2011\",\r\n _updatedDate: \"12/09/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/07/2020\"\r\n },\r\n {\r\n id: 77,\r\n carId: 26,\r\n text: \"elit sodales scelerisque\",\r\n _userId: 2,\r\n _createdDate: \"10/02/2012\",\r\n _updatedDate: \"05/05/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"10/05/2019\"\r\n },\r\n {\r\n id: 78,\r\n carId: 26,\r\n text:\r\n \"sed lacus morbi sem mauris laoreet ut rhoncus aliquet pulvinar sed nisl nunc rhoncus dui vel\",\r\n _userId: 1,\r\n _createdDate: \"01/27/2015\",\r\n _updatedDate: \"07/14/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"01/19/2019\"\r\n },\r\n {\r\n id: 79,\r\n carId: 27,\r\n text: \"augue vestibulum\",\r\n _userId: 1,\r\n _createdDate: \"09/19/2011\",\r\n _updatedDate: \"09/11/2014\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"03/08/2020\"\r\n },\r\n {\r\n id: 80,\r\n carId: 27,\r\n text: \"turpis nec euismod scelerisque\",\r\n _userId: 2,\r\n _createdDate: \"01/17/2014\",\r\n _updatedDate: \"03/04/2018\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/08/2019\"\r\n },\r\n {\r\n id: 81,\r\n carId: 27,\r\n text:\r\n \"quisque id justo sit amet sapien dignissim vestibulum vestibulum ante ipsum primis in faucibus orci luctus\",\r\n _userId: 1,\r\n _createdDate: \"08/16/2015\",\r\n _updatedDate: \"02/21/2011\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/15/2019\"\r\n },\r\n {\r\n id: 82,\r\n carId: 28,\r\n text:\r\n \"ultrices posuere cubilia curae duis faucibus accumsan odio curabitur convallis duis consequat dui nec nisi volutpat eleifend\",\r\n _userId: 1,\r\n _createdDate: \"03/07/2014\",\r\n _updatedDate: \"08/21/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"05/14/2019\"\r\n },\r\n {\r\n id: 83,\r\n carId: 28,\r\n text:\r\n \"curabitur gravida nisi at nibh in hac habitasse platea dictumst aliquam augue\",\r\n _userId: 2,\r\n _createdDate: \"09/20/2017\",\r\n _updatedDate: \"08/21/2014\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"07/07/2019\"\r\n },\r\n {\r\n id: 84,\r\n carId: 28,\r\n text:\r\n \"dolor quis odio consequat varius integer ac leo pellentesque ultrices mattis odio donec vitae nisi\",\r\n _userId: 2,\r\n _createdDate: \"04/08/2017\",\r\n _updatedDate: \"08/17/2016\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"03/19/2019\"\r\n },\r\n {\r\n id: 85,\r\n carId: 29,\r\n text:\r\n \"interdum in ante vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae duis faucibus\",\r\n _userId: 2,\r\n _createdDate: \"04/30/2013\",\r\n _updatedDate: \"08/22/2013\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"03/23/2020\"\r\n },\r\n {\r\n id: 86,\r\n carId: 29,\r\n text:\r\n \"faucibus orci luctus et ultrices posuere cubilia curae nulla dapibus dolor vel est donec odio justo sollicitudin ut suscipit a\",\r\n _userId: 2,\r\n _createdDate: \"04/12/2014\",\r\n _updatedDate: \"03/06/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"02/17/2019\"\r\n },\r\n {\r\n id: 87,\r\n carId: 29,\r\n text:\r\n \"faucibus orci luctus et ultrices posuere cubilia curae donec pharetra magna vestibulum\",\r\n _userId: 2,\r\n _createdDate: \"11/21/2016\",\r\n _updatedDate: \"08/21/2010\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"11/06/2019\"\r\n },\r\n {\r\n id: 88,\r\n carId: 30,\r\n text: \"nibh in hac habitasse platea dictumst\",\r\n _userId: 1,\r\n _createdDate: \"10/30/2011\",\r\n _updatedDate: \"03/07/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"12/02/2019\"\r\n },\r\n {\r\n id: 89,\r\n carId: 30,\r\n text: \"fusce lacus purus\",\r\n _userId: 2,\r\n _createdDate: \"09/02/2014\",\r\n _updatedDate: \"05/22/2015\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"10/13/2019\"\r\n },\r\n {\r\n id: 90,\r\n carId: 30,\r\n text: \"ultrices enim lorem ipsum dolor\",\r\n _userId: 1,\r\n _createdDate: \"12/21/2012\",\r\n _updatedDate: \"02/28/2018\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"12/08/2019\"\r\n },\r\n {\r\n id: 91,\r\n carId: 31,\r\n text: \"suspendisse accumsan tortor quis turpis\",\r\n _userId: 1,\r\n _createdDate: \"01/22/2014\",\r\n _updatedDate: \"01/26/2015\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"03/05/2019\"\r\n },\r\n {\r\n id: 92,\r\n carId: 31,\r\n text:\r\n \"sed interdum venenatis turpis enim blandit mi in porttitor pede justo eu massa\",\r\n _userId: 1,\r\n _createdDate: \"12/20/2013\",\r\n _updatedDate: \"08/13/2016\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"09/03/2019\"\r\n },\r\n {\r\n id: 93,\r\n carId: 31,\r\n text:\r\n \"quisque id justo sit amet sapien dignissim vestibulum vestibulum ante ipsum primis\",\r\n _userId: 1,\r\n _createdDate: \"07/08/2016\",\r\n _updatedDate: \"02/26/2013\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"01/22/2019\"\r\n },\r\n {\r\n id: 94,\r\n carId: 32,\r\n text: \"vitae nisi nam ultrices\",\r\n _userId: 1,\r\n _createdDate: \"02/21/2015\",\r\n _updatedDate: \"03/04/2017\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"01/05/2020\"\r\n },\r\n {\r\n id: 95,\r\n carId: 32,\r\n text: \"in tempus sit amet sem fusce consequat\",\r\n _userId: 2,\r\n _createdDate: \"09/15/2014\",\r\n _updatedDate: \"05/21/2017\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"03/31/2019\"\r\n },\r\n {\r\n id: 96,\r\n carId: 32,\r\n text:\r\n \"eros elementum pellentesque quisque porta volutpat erat quisque erat eros viverra eget congue eget semper\",\r\n _userId: 2,\r\n _createdDate: \"06/04/2014\",\r\n _updatedDate: \"08/12/2010\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"10/10/2019\"\r\n },\r\n {\r\n id: 97,\r\n carId: 33,\r\n text: \"eu pede\",\r\n _userId: 2,\r\n _createdDate: \"03/21/2011\",\r\n _updatedDate: \"07/18/2012\",\r\n type: 2,\r\n _isEditMode: false,\r\n dueDate: \"03/29/2020\"\r\n },\r\n {\r\n id: 98,\r\n carId: 33,\r\n text: \"tempus vivamus in felis eu sapien cursus vestibulum proin\",\r\n _userId: 2,\r\n _createdDate: \"09/17/2017\",\r\n _updatedDate: \"11/29/2013\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"04/01/2019\"\r\n },\r\n {\r\n id: 99,\r\n carId: 33,\r\n text:\r\n \"velit eu est congue elementum in hac habitasse platea dictumst morbi vestibulum velit id pretium iaculis diam erat fermentum\",\r\n _userId: 1,\r\n _createdDate: \"03/27/2013\",\r\n _updatedDate: \"09/26/2014\",\r\n type: 1,\r\n _isEditMode: false,\r\n dueDate: \"09/14/2019\"\r\n },\r\n {\r\n id: 100,\r\n carId: 34,\r\n text: \"luctus et ultrices posuere cubilia curae nulla dapibus dolor vel\",\r\n _userId: 2,\r\n _createdDate: \"03/07/2017\",\r\n _updatedDate: \"08/14/2012\",\r\n type: 0,\r\n _isEditMode: false,\r\n dueDate: \"08/11/2019\"\r\n }\r\n];\r\n","import remarkTableMock from \"./remarkTableMock\";\r\nimport MockUtils from \"./mock.utils\";\r\n\r\nexport default function mockRemarks(mock) {\r\n mock.onPost(\"api/remarks\").reply(({ data }) => {\r\n const { remark } = JSON.parse(data);\r\n const { carId, text = \"\", dueDate = \"01/01/2019\", type = 0 } = remark;\r\n const id = generateRemarkId();\r\n const newRemark = {\r\n id,\r\n carId: +carId,\r\n text,\r\n dueDate,\r\n type\r\n };\r\n remarkTableMock.push(newRemark);\r\n return [200, { remark: newRemark }];\r\n });\r\n\r\n mock.onPost(/api\\/remarksfind\\/\\d+/).reply(config => {\r\n const urls = config.url.split(\"/\");\r\n const id = urls[2];\r\n const mockUtils = new MockUtils();\r\n const { queryParams } = JSON.parse(config.data);\r\n const productRemarks = remarkTableMock.filter(el => el.carId === +id);\r\n const filterdRemarks = mockUtils.baseFilter(productRemarks, queryParams);\r\n return [200, filterdRemarks];\r\n });\r\n\r\n mock.onPost(\"api/remarks/deleteRemarks\").reply(config => {\r\n const { ids } = JSON.parse(config.data);\r\n ids.forEach(id => {\r\n const index = remarkTableMock.findIndex(el => el.id === id);\r\n if (index > -1) {\r\n remarkTableMock.splice(index, 1);\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onGet(/api\\/remarks\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/remarks\\/(\\d+)/)[1];\r\n const remark = remarkTableMock.find(el => el.id === +id);\r\n if (!remark) {\r\n return [400];\r\n }\r\n\r\n return [200, remark];\r\n });\r\n\r\n mock.onPut(/api\\/remarks\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/remarks\\/(\\d+)/)[1];\r\n const { remark } = JSON.parse(config.data);\r\n const index = remarkTableMock.findIndex(el => el.id === +id);\r\n if (!index) {\r\n return [400];\r\n }\r\n\r\n remarkTableMock[index] = { ...remark };\r\n return [200];\r\n });\r\n\r\n mock.onDelete(/api\\/remarks\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/remarks\\/(\\d+)/)[1];\r\n const index = remarkTableMock.findIndex(el => el.id === +id);\r\n remarkTableMock.splice(index, 1);\r\n if (!index === -1) {\r\n return [400];\r\n }\r\n\r\n return [200];\r\n });\r\n}\r\n\r\nfunction generateRemarkId() {\r\n const ids = remarkTableMock.map(el => el.id);\r\n const maxId = Math.max(...ids);\r\n return maxId + 1;\r\n}\r\n","export default [\r\n {\r\n id: 1,\r\n carId: 1,\r\n specId: 1,\r\n value: \"purus sit amet nulla\",\r\n _userId: 1,\r\n _createdDate: \"07/14/2011\",\r\n _updatedDate: \"07/27/2013\"\r\n },\r\n {\r\n id: 2,\r\n carId: 1,\r\n specId: 2,\r\n value: \"nulla sed vel enim\",\r\n _userId: 2,\r\n _createdDate: \"09/29/2012\",\r\n _updatedDate: \"09/25/2013\"\r\n },\r\n {\r\n id: 3,\r\n carId: 1,\r\n specId: 3,\r\n value: \"id ornare\",\r\n _userId: 1,\r\n _createdDate: \"01/13/2016\",\r\n _updatedDate: \"07/08/2010\"\r\n },\r\n {\r\n id: 4,\r\n carId: 1,\r\n specId: 4,\r\n value: \"orci luctus et\",\r\n _userId: 1,\r\n _createdDate: \"06/20/2013\",\r\n _updatedDate: \"05/09/2013\"\r\n },\r\n {\r\n id: 5,\r\n carId: 1,\r\n specId: 5,\r\n value: \"convallis duis consequat dui nec\",\r\n _userId: 1,\r\n _createdDate: \"02/24/2014\",\r\n _updatedDate: \"04/26/2016\"\r\n },\r\n {\r\n id: 6,\r\n carId: 2,\r\n specId: 6,\r\n value: \"augue luctus\",\r\n _userId: 1,\r\n _createdDate: \"03/16/2017\",\r\n _updatedDate: \"02/01/2018\"\r\n },\r\n {\r\n id: 7,\r\n carId: 2,\r\n specId: 7,\r\n value: \"in tempus sit amet\",\r\n _userId: 1,\r\n _createdDate: \"01/24/2012\",\r\n _updatedDate: \"03/14/2015\"\r\n },\r\n {\r\n id: 8,\r\n carId: 2,\r\n specId: 8,\r\n value: \"venenatis turpis enim blandit mi\",\r\n _userId: 1,\r\n _createdDate: \"10/02/2017\",\r\n _updatedDate: \"05/20/2011\"\r\n },\r\n {\r\n id: 9,\r\n carId: 2,\r\n specId: 9,\r\n value: \"sed magna at nunc commodo\",\r\n _userId: 2,\r\n _createdDate: \"02/29/2012\",\r\n _updatedDate: \"06/30/2015\"\r\n },\r\n {\r\n id: 10,\r\n carId: 2,\r\n specId: 0,\r\n value: \"nascetur\",\r\n _userId: 1,\r\n _createdDate: \"11/26/2013\",\r\n _updatedDate: \"12/03/2013\"\r\n },\r\n {\r\n id: 11,\r\n carId: 3,\r\n specId: 1,\r\n value: \"magna vestibulum aliquet\",\r\n _userId: 2,\r\n _createdDate: \"06/23/2014\",\r\n _updatedDate: \"07/11/2014\"\r\n },\r\n {\r\n id: 12,\r\n carId: 3,\r\n specId: 1,\r\n value: \"bibendum imperdiet nullam orci\",\r\n _userId: 2,\r\n _createdDate: \"08/14/2013\",\r\n _updatedDate: \"06/22/2017\"\r\n },\r\n {\r\n id: 13,\r\n carId: 3,\r\n specId: 2,\r\n value: \"ligula pellentesque ultrices phasellus\",\r\n _userId: 2,\r\n _createdDate: \"05/03/2016\",\r\n _updatedDate: \"06/08/2012\"\r\n },\r\n {\r\n id: 14,\r\n carId: 3,\r\n specId: 3,\r\n value: \"in faucibus orci luctus\",\r\n _userId: 2,\r\n _createdDate: \"04/10/2016\",\r\n _updatedDate: \"11/23/2011\"\r\n },\r\n {\r\n id: 15,\r\n carId: 3,\r\n specId: 4,\r\n value: \"quis turpis sed ante\",\r\n _userId: 2,\r\n _createdDate: \"12/28/2015\",\r\n _updatedDate: \"02/11/2011\"\r\n },\r\n {\r\n id: 16,\r\n carId: 4,\r\n specId: 5,\r\n value: \"proin risus praesent lectus\",\r\n _userId: 2,\r\n _createdDate: \"04/25/2011\",\r\n _updatedDate: \"08/26/2014\"\r\n },\r\n {\r\n id: 17,\r\n carId: 4,\r\n specId: 6,\r\n value: \"morbi sem mauris laoreet\",\r\n _userId: 2,\r\n _createdDate: \"09/23/2012\",\r\n _updatedDate: \"05/17/2018\"\r\n },\r\n {\r\n id: 18,\r\n carId: 4,\r\n specId: 7,\r\n value: \"erat curabitur gravida\",\r\n _userId: 2,\r\n _createdDate: \"02/26/2015\",\r\n _updatedDate: \"01/07/2014\"\r\n },\r\n {\r\n id: 19,\r\n carId: 4,\r\n specId: 8,\r\n value: \"tellus nulla ut\",\r\n _userId: 1,\r\n _createdDate: \"12/08/2016\",\r\n _updatedDate: \"10/08/2015\"\r\n },\r\n {\r\n id: 20,\r\n carId: 4,\r\n specId: 9,\r\n value: \"tempus sit amet sem fusce\",\r\n _userId: 2,\r\n _createdDate: \"05/09/2011\",\r\n _updatedDate: \"11/07/2011\"\r\n },\r\n {\r\n id: 21,\r\n carId: 5,\r\n specId: 0,\r\n value: \"pellentesque ultrices phasellus\",\r\n _userId: 1,\r\n _createdDate: \"03/22/2011\",\r\n _updatedDate: \"07/04/2010\"\r\n },\r\n {\r\n id: 22,\r\n carId: 5,\r\n specId: 1,\r\n value: \"gravida\",\r\n _userId: 1,\r\n _createdDate: \"01/09/2018\",\r\n _updatedDate: \"02/15/2011\"\r\n },\r\n {\r\n id: 23,\r\n carId: 5,\r\n specId: 1,\r\n value: \"nulla\",\r\n _userId: 1,\r\n _createdDate: \"11/13/2012\",\r\n _updatedDate: \"06/25/2017\"\r\n },\r\n {\r\n id: 24,\r\n carId: 5,\r\n specId: 2,\r\n value: \"et ultrices posuere cubilia\",\r\n _userId: 2,\r\n _createdDate: \"02/24/2014\",\r\n _updatedDate: \"12/11/2011\"\r\n },\r\n {\r\n id: 25,\r\n carId: 5,\r\n specId: 3,\r\n value: \"nulla quisque arcu\",\r\n _userId: 2,\r\n _createdDate: \"12/16/2012\",\r\n _updatedDate: \"02/08/2012\"\r\n },\r\n {\r\n id: 26,\r\n carId: 6,\r\n specId: 4,\r\n value: \"orci eget orci vehicula\",\r\n _userId: 2,\r\n _createdDate: \"09/21/2015\",\r\n _updatedDate: \"05/05/2014\"\r\n },\r\n {\r\n id: 27,\r\n carId: 6,\r\n specId: 5,\r\n value: \"lobortis convallis\",\r\n _userId: 2,\r\n _createdDate: \"08/28/2014\",\r\n _updatedDate: \"05/18/2011\"\r\n },\r\n {\r\n id: 28,\r\n carId: 6,\r\n specId: 6,\r\n value: \"ipsum praesent blandit lacinia\",\r\n _userId: 1,\r\n _createdDate: \"06/14/2015\",\r\n _updatedDate: \"12/28/2012\"\r\n },\r\n {\r\n id: 29,\r\n carId: 6,\r\n specId: 7,\r\n value: \"tempus semper est quam pharetra\",\r\n _userId: 1,\r\n _createdDate: \"08/30/2017\",\r\n _updatedDate: \"08/17/2016\"\r\n },\r\n {\r\n id: 30,\r\n carId: 6,\r\n specId: 8,\r\n value: \"in felis eu sapien\",\r\n _userId: 2,\r\n _createdDate: \"11/18/2010\",\r\n _updatedDate: \"09/20/2016\"\r\n },\r\n {\r\n id: 31,\r\n carId: 7,\r\n specId: 9,\r\n value: \"nam\",\r\n _userId: 2,\r\n _createdDate: \"06/28/2015\",\r\n _updatedDate: \"04/19/2011\"\r\n },\r\n {\r\n id: 32,\r\n carId: 7,\r\n specId: 0,\r\n value: \"metus arcu\",\r\n _userId: 1,\r\n _createdDate: \"06/15/2017\",\r\n _updatedDate: \"08/05/2012\"\r\n },\r\n {\r\n id: 33,\r\n carId: 7,\r\n specId: 1,\r\n value: \"libero nullam\",\r\n _userId: 1,\r\n _createdDate: \"12/15/2014\",\r\n _updatedDate: \"03/28/2013\"\r\n },\r\n {\r\n id: 34,\r\n carId: 7,\r\n specId: 1,\r\n value: \"diam nam\",\r\n _userId: 1,\r\n _createdDate: \"08/28/2017\",\r\n _updatedDate: \"08/24/2015\"\r\n },\r\n {\r\n id: 35,\r\n carId: 7,\r\n specId: 2,\r\n value: \"iaculis congue vivamus metus\",\r\n _userId: 1,\r\n _createdDate: \"06/26/2010\",\r\n _updatedDate: \"01/27/2012\"\r\n },\r\n {\r\n id: 36,\r\n carId: 8,\r\n specId: 3,\r\n value: \"cum sociis natoque\",\r\n _userId: 1,\r\n _createdDate: \"07/04/2016\",\r\n _updatedDate: \"12/24/2013\"\r\n },\r\n {\r\n id: 37,\r\n carId: 8,\r\n specId: 4,\r\n value: \"odio odio elementum eu\",\r\n _userId: 1,\r\n _createdDate: \"06/03/2017\",\r\n _updatedDate: \"11/21/2017\"\r\n },\r\n {\r\n id: 38,\r\n carId: 8,\r\n specId: 5,\r\n value: \"at ipsum ac tellus\",\r\n _userId: 1,\r\n _createdDate: \"06/03/2014\",\r\n _updatedDate: \"07/18/2014\"\r\n },\r\n {\r\n id: 39,\r\n carId: 8,\r\n specId: 6,\r\n value: \"quis\",\r\n _userId: 2,\r\n _createdDate: \"12/25/2015\",\r\n _updatedDate: \"10/10/2012\"\r\n },\r\n {\r\n id: 40,\r\n carId: 8,\r\n specId: 7,\r\n value: \"justo aliquam quis turpis\",\r\n _userId: 2,\r\n _createdDate: \"04/22/2017\",\r\n _updatedDate: \"01/16/2018\"\r\n },\r\n {\r\n id: 41,\r\n carId: 9,\r\n specId: 8,\r\n value: \"adipiscing elit proin risus\",\r\n _userId: 2,\r\n _createdDate: \"02/26/2012\",\r\n _updatedDate: \"03/07/2017\"\r\n },\r\n {\r\n id: 42,\r\n carId: 9,\r\n specId: 9,\r\n value: \"nibh ligula nec sem duis\",\r\n _userId: 1,\r\n _createdDate: \"09/16/2013\",\r\n _updatedDate: \"11/13/2011\"\r\n },\r\n {\r\n id: 43,\r\n carId: 9,\r\n specId: 0,\r\n value: \"purus aliquet at feugiat\",\r\n _userId: 2,\r\n _createdDate: \"05/23/2018\",\r\n _updatedDate: \"10/05/2014\"\r\n },\r\n {\r\n id: 44,\r\n carId: 9,\r\n specId: 1,\r\n value: \"eros suspendisse accumsan tortor quis\",\r\n _userId: 2,\r\n _createdDate: \"10/14/2014\",\r\n _updatedDate: \"08/02/2014\"\r\n },\r\n {\r\n id: 45,\r\n carId: 9,\r\n specId: 1,\r\n value: \"eget rutrum\",\r\n _userId: 2,\r\n _createdDate: \"01/23/2017\",\r\n _updatedDate: \"09/28/2012\"\r\n },\r\n {\r\n id: 46,\r\n carId: 10,\r\n specId: 2,\r\n value: \"hendrerit at vulputate\",\r\n _userId: 1,\r\n _createdDate: \"10/20/2011\",\r\n _updatedDate: \"10/09/2010\"\r\n },\r\n {\r\n id: 47,\r\n carId: 10,\r\n specId: 3,\r\n value: \"et\",\r\n _userId: 1,\r\n _createdDate: \"12/25/2015\",\r\n _updatedDate: \"08/26/2015\"\r\n },\r\n {\r\n id: 48,\r\n carId: 10,\r\n specId: 4,\r\n value: \"volutpat in congue etiam\",\r\n _userId: 2,\r\n _createdDate: \"09/17/2010\",\r\n _updatedDate: \"04/12/2016\"\r\n },\r\n {\r\n id: 49,\r\n carId: 10,\r\n specId: 5,\r\n value: \"odio elementum eu\",\r\n _userId: 2,\r\n _createdDate: \"10/19/2015\",\r\n _updatedDate: \"11/10/2017\"\r\n },\r\n {\r\n id: 50,\r\n carId: 10,\r\n specId: 6,\r\n value: \"donec odio justo\",\r\n _userId: 2,\r\n _createdDate: \"06/18/2016\",\r\n _updatedDate: \"01/26/2011\"\r\n },\r\n {\r\n id: 51,\r\n carId: 11,\r\n specId: 7,\r\n value: \"nulla suspendisse potenti cras in\",\r\n _userId: 2,\r\n _createdDate: \"11/18/2010\",\r\n _updatedDate: \"05/30/2017\"\r\n },\r\n {\r\n id: 52,\r\n carId: 11,\r\n specId: 8,\r\n value: \"nisl\",\r\n _userId: 2,\r\n _createdDate: \"10/26/2010\",\r\n _updatedDate: \"05/14/2015\"\r\n },\r\n {\r\n id: 53,\r\n carId: 11,\r\n specId: 9,\r\n value: \"tincidunt ante\",\r\n _userId: 2,\r\n _createdDate: \"06/29/2016\",\r\n _updatedDate: \"09/05/2010\"\r\n },\r\n {\r\n id: 54,\r\n carId: 11,\r\n specId: 0,\r\n value: \"condimentum curabitur\",\r\n _userId: 1,\r\n _createdDate: \"05/25/2011\",\r\n _updatedDate: \"09/29/2014\"\r\n },\r\n {\r\n id: 55,\r\n carId: 11,\r\n specId: 1,\r\n value: \"mi nulla\",\r\n _userId: 2,\r\n _createdDate: \"12/06/2014\",\r\n _updatedDate: \"05/20/2018\"\r\n },\r\n {\r\n id: 56,\r\n carId: 12,\r\n specId: 1,\r\n value: \"tortor risus\",\r\n _userId: 1,\r\n _createdDate: \"09/26/2016\",\r\n _updatedDate: \"08/07/2010\"\r\n },\r\n {\r\n id: 57,\r\n carId: 12,\r\n specId: 2,\r\n value: \"quisque erat eros\",\r\n _userId: 1,\r\n _createdDate: \"03/18/2012\",\r\n _updatedDate: \"03/27/2016\"\r\n },\r\n {\r\n id: 58,\r\n carId: 12,\r\n specId: 3,\r\n value: \"ultrices posuere cubilia curae nulla\",\r\n _userId: 2,\r\n _createdDate: \"08/11/2010\",\r\n _updatedDate: \"01/10/2013\"\r\n },\r\n {\r\n id: 59,\r\n carId: 12,\r\n specId: 4,\r\n value: \"dapibus\",\r\n _userId: 1,\r\n _createdDate: \"02/15/2015\",\r\n _updatedDate: \"10/19/2010\"\r\n },\r\n {\r\n id: 60,\r\n carId: 12,\r\n specId: 5,\r\n value: \"pharetra magna vestibulum\",\r\n _userId: 2,\r\n _createdDate: \"05/30/2015\",\r\n _updatedDate: \"11/13/2011\"\r\n },\r\n {\r\n id: 61,\r\n carId: 13,\r\n specId: 6,\r\n value: \"lectus\",\r\n _userId: 2,\r\n _createdDate: \"07/20/2012\",\r\n _updatedDate: \"03/10/2015\"\r\n },\r\n {\r\n id: 62,\r\n carId: 13,\r\n specId: 7,\r\n value: \"eget vulputate\",\r\n _userId: 1,\r\n _createdDate: \"04/30/2017\",\r\n _updatedDate: \"03/11/2016\"\r\n },\r\n {\r\n id: 63,\r\n carId: 13,\r\n specId: 8,\r\n value: \"feugiat et eros\",\r\n _userId: 2,\r\n _createdDate: \"04/21/2018\",\r\n _updatedDate: \"09/11/2011\"\r\n },\r\n {\r\n id: 64,\r\n carId: 13,\r\n specId: 9,\r\n value: \"dis parturient\",\r\n _userId: 1,\r\n _createdDate: \"02/09/2011\",\r\n _updatedDate: \"02/06/2011\"\r\n },\r\n {\r\n id: 65,\r\n carId: 13,\r\n specId: 0,\r\n value: \"gravida\",\r\n _userId: 1,\r\n _createdDate: \"08/22/2013\",\r\n _updatedDate: \"09/02/2012\"\r\n },\r\n {\r\n id: 66,\r\n carId: 14,\r\n specId: 1,\r\n value: \"sed\",\r\n _userId: 1,\r\n _createdDate: \"09/18/2010\",\r\n _updatedDate: \"06/10/2015\"\r\n },\r\n {\r\n id: 67,\r\n carId: 14,\r\n specId: 1,\r\n value: \"in blandit\",\r\n _userId: 2,\r\n _createdDate: \"11/21/2017\",\r\n _updatedDate: \"06/22/2016\"\r\n },\r\n {\r\n id: 68,\r\n carId: 14,\r\n specId: 2,\r\n value: \"id\",\r\n _userId: 2,\r\n _createdDate: \"04/23/2014\",\r\n _updatedDate: \"02/13/2018\"\r\n },\r\n {\r\n id: 69,\r\n carId: 14,\r\n specId: 3,\r\n value: \"sapien\",\r\n _userId: 1,\r\n _createdDate: \"09/04/2011\",\r\n _updatedDate: \"04/21/2012\"\r\n },\r\n {\r\n id: 70,\r\n carId: 14,\r\n specId: 4,\r\n value: \"nec nisi volutpat eleifend donec\",\r\n _userId: 2,\r\n _createdDate: \"05/07/2017\",\r\n _updatedDate: \"12/28/2015\"\r\n },\r\n {\r\n id: 71,\r\n carId: 15,\r\n specId: 5,\r\n value: \"non\",\r\n _userId: 2,\r\n _createdDate: \"05/29/2017\",\r\n _updatedDate: \"08/15/2014\"\r\n },\r\n {\r\n id: 72,\r\n carId: 15,\r\n specId: 6,\r\n value: \"pharetra magna ac consequat metus\",\r\n _userId: 2,\r\n _createdDate: \"06/13/2016\",\r\n _updatedDate: \"12/22/2014\"\r\n },\r\n {\r\n id: 73,\r\n carId: 15,\r\n specId: 7,\r\n value: \"erat quisque erat eros\",\r\n _userId: 2,\r\n _createdDate: \"02/27/2013\",\r\n _updatedDate: \"07/15/2012\"\r\n },\r\n {\r\n id: 74,\r\n carId: 15,\r\n specId: 8,\r\n value: \"diam nam tristique tortor eu\",\r\n _userId: 1,\r\n _createdDate: \"01/07/2017\",\r\n _updatedDate: \"09/24/2014\"\r\n },\r\n {\r\n id: 75,\r\n carId: 15,\r\n specId: 9,\r\n value: \"semper sapien a libero nam\",\r\n _userId: 1,\r\n _createdDate: \"02/03/2016\",\r\n _updatedDate: \"04/26/2015\"\r\n },\r\n {\r\n id: 76,\r\n carId: 16,\r\n specId: 0,\r\n value: \"consequat varius\",\r\n _userId: 1,\r\n _createdDate: \"04/06/2014\",\r\n _updatedDate: \"04/21/2013\"\r\n },\r\n {\r\n id: 77,\r\n carId: 16,\r\n specId: 1,\r\n value: \"mauris morbi non\",\r\n _userId: 2,\r\n _createdDate: \"11/15/2017\",\r\n _updatedDate: \"02/10/2017\"\r\n },\r\n {\r\n id: 78,\r\n carId: 16,\r\n specId: 1,\r\n value: \"iaculis justo in hac habitasse\",\r\n _userId: 1,\r\n _createdDate: \"01/11/2013\",\r\n _updatedDate: \"12/20/2010\"\r\n },\r\n {\r\n id: 79,\r\n carId: 16,\r\n specId: 2,\r\n value: \"dui\",\r\n _userId: 1,\r\n _createdDate: \"02/29/2016\",\r\n _updatedDate: \"04/20/2014\"\r\n },\r\n {\r\n id: 80,\r\n carId: 16,\r\n specId: 3,\r\n value: \"pulvinar nulla pede ullamcorper augue\",\r\n _userId: 2,\r\n _createdDate: \"10/31/2013\",\r\n _updatedDate: \"12/06/2010\"\r\n },\r\n {\r\n id: 81,\r\n carId: 17,\r\n specId: 4,\r\n value: \"congue elementum\",\r\n _userId: 1,\r\n _createdDate: \"07/17/2013\",\r\n _updatedDate: \"01/28/2014\"\r\n },\r\n {\r\n id: 82,\r\n carId: 17,\r\n specId: 5,\r\n value: \"dapibus nulla suscipit ligula\",\r\n _userId: 2,\r\n _createdDate: \"08/24/2012\",\r\n _updatedDate: \"02/04/2018\"\r\n },\r\n {\r\n id: 83,\r\n carId: 17,\r\n specId: 6,\r\n value: \"donec ut dolor\",\r\n _userId: 1,\r\n _createdDate: \"01/10/2012\",\r\n _updatedDate: \"06/07/2010\"\r\n },\r\n {\r\n id: 84,\r\n carId: 17,\r\n specId: 7,\r\n value: \"non lectus aliquam sit amet\",\r\n _userId: 2,\r\n _createdDate: \"01/26/2014\",\r\n _updatedDate: \"02/06/2016\"\r\n },\r\n {\r\n id: 85,\r\n carId: 17,\r\n specId: 8,\r\n value: \"sapien iaculis congue vivamus\",\r\n _userId: 2,\r\n _createdDate: \"01/01/2018\",\r\n _updatedDate: \"10/20/2012\"\r\n },\r\n {\r\n id: 86,\r\n carId: 18,\r\n specId: 9,\r\n value: \"dui vel sem\",\r\n _userId: 1,\r\n _createdDate: \"04/04/2016\",\r\n _updatedDate: \"01/19/2015\"\r\n },\r\n {\r\n id: 87,\r\n carId: 18,\r\n specId: 0,\r\n value: \"posuere cubilia curae\",\r\n _userId: 2,\r\n _createdDate: \"06/03/2015\",\r\n _updatedDate: \"12/22/2014\"\r\n },\r\n {\r\n id: 88,\r\n carId: 18,\r\n specId: 1,\r\n value: \"nascetur ridiculus\",\r\n _userId: 1,\r\n _createdDate: \"03/05/2018\",\r\n _updatedDate: \"08/04/2015\"\r\n },\r\n {\r\n id: 89,\r\n carId: 18,\r\n specId: 1,\r\n value: \"vestibulum sagittis sapien cum sociis\",\r\n _userId: 1,\r\n _createdDate: \"12/26/2017\",\r\n _updatedDate: \"07/08/2017\"\r\n },\r\n {\r\n id: 90,\r\n carId: 18,\r\n specId: 2,\r\n value: \"neque vestibulum eget vulputate ut\",\r\n _userId: 2,\r\n _createdDate: \"09/22/2014\",\r\n _updatedDate: \"06/08/2015\"\r\n },\r\n {\r\n id: 91,\r\n carId: 19,\r\n specId: 3,\r\n value: \"habitasse platea\",\r\n _userId: 2,\r\n _createdDate: \"10/06/2011\",\r\n _updatedDate: \"07/03/2017\"\r\n },\r\n {\r\n id: 92,\r\n carId: 19,\r\n specId: 4,\r\n value: \"tortor sollicitudin\",\r\n _userId: 2,\r\n _createdDate: \"03/20/2014\",\r\n _updatedDate: \"10/20/2015\"\r\n },\r\n {\r\n id: 93,\r\n carId: 19,\r\n specId: 5,\r\n value: \"posuere cubilia curae nulla dapibus\",\r\n _userId: 1,\r\n _createdDate: \"04/27/2012\",\r\n _updatedDate: \"08/03/2012\"\r\n },\r\n {\r\n id: 94,\r\n carId: 19,\r\n specId: 6,\r\n value: \"nulla\",\r\n _userId: 1,\r\n _createdDate: \"08/16/2016\",\r\n _updatedDate: \"11/02/2016\"\r\n },\r\n {\r\n id: 95,\r\n carId: 19,\r\n specId: 7,\r\n value: \"vel dapibus at diam nam\",\r\n _userId: 2,\r\n _createdDate: \"08/24/2013\",\r\n _updatedDate: \"03/02/2011\"\r\n },\r\n {\r\n id: 96,\r\n carId: 20,\r\n specId: 8,\r\n value: \"ultrices posuere cubilia\",\r\n _userId: 1,\r\n _createdDate: \"07/04/2010\",\r\n _updatedDate: \"06/07/2010\"\r\n },\r\n {\r\n id: 97,\r\n carId: 20,\r\n specId: 9,\r\n value: \"ut blandit non interdum\",\r\n _userId: 2,\r\n _createdDate: \"04/25/2018\",\r\n _updatedDate: \"06/24/2013\"\r\n },\r\n {\r\n id: 98,\r\n carId: 20,\r\n specId: 0,\r\n value: \"amet erat\",\r\n _userId: 2,\r\n _createdDate: \"07/13/2017\",\r\n _updatedDate: \"12/28/2014\"\r\n },\r\n {\r\n id: 99,\r\n carId: 20,\r\n specId: 1,\r\n value: \"ligula\",\r\n _userId: 1,\r\n _createdDate: \"03/18/2015\",\r\n _updatedDate: \"09/14/2012\"\r\n },\r\n {\r\n id: 100,\r\n carId: 20,\r\n specId: 1,\r\n value: \"id\",\r\n _userId: 1,\r\n _createdDate: \"04/02/2011\",\r\n _updatedDate: \"02/16/2017\"\r\n },\r\n {\r\n id: 101,\r\n carId: 26,\r\n specId: 8,\r\n value: \"ultrices posuere cubilia\",\r\n _userId: 1,\r\n _createdDate: \"07/04/2010\",\r\n _updatedDate: \"06/07/2010\"\r\n }\r\n];\r\n","import specificationTableMock from \"./specificationTableMock\";\r\nimport MockUtils from \"./mock.utils\";\r\n\r\nexport default function mockSpecifications(mock) {\r\n mock.onPost(\"api/specifications\").reply(({ data }) => {\r\n const { specification } = JSON.parse(data);\r\n const { carId, value = \"\", specId } = specification;\r\n const id = generateSpecificationId();\r\n const newSpecification = {\r\n id,\r\n carId: +carId,\r\n value,\r\n specId: +specId\r\n };\r\n specificationTableMock.push(newSpecification);\r\n return [200, { specification: newSpecification }];\r\n });\r\n\r\n mock.onPost(/api\\/specificationsfind\\/\\d+/).reply(config => {\r\n const urls = config.url.split(\"/\");\r\n const id = urls[2];\r\n const mockUtils = new MockUtils();\r\n const { queryParams } = JSON.parse(config.data);\r\n const specifications = specificationTableMock.filter(\r\n el => el.carId === +id\r\n );\r\n const result = [];\r\n specifications.forEach(el => result.push(wrapSpecification(el)));\r\n const filterdSpecifications = mockUtils.baseFilter(result, queryParams);\r\n\r\n return [200, filterdSpecifications];\r\n });\r\n\r\n mock.onPost(\"api/specifications/deleteSpecifications\").reply(config => {\r\n const { ids } = JSON.parse(config.data);\r\n ids.forEach(id => {\r\n const index = specificationTableMock.findIndex(el => el.id === id);\r\n if (index > -1) {\r\n specificationTableMock.splice(index, 1);\r\n }\r\n });\r\n return [200];\r\n });\r\n\r\n mock.onGet(/api\\/specifications\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/specifications\\/(\\d+)/)[1];\r\n const spec = specificationTableMock.find(el => el.id === +id);\r\n if (!spec) {\r\n return [400];\r\n }\r\n\r\n const specification = wrapSpecification(spec);\r\n\r\n return [200, specification];\r\n });\r\n\r\n mock.onPut(/api\\/specifications\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/specifications\\/(\\d+)/)[1];\r\n const { specification } = JSON.parse(config.data);\r\n const index = specificationTableMock.findIndex(el => el.id === +id);\r\n if (!index) {\r\n return [400];\r\n }\r\n\r\n specificationTableMock[index] = { ...specification };\r\n return [200];\r\n });\r\n\r\n mock.onDelete(/api\\/specifications\\/\\d+/).reply(config => {\r\n const id = config.url.match(/api\\/specifications\\/(\\d+)/)[1];\r\n const index = specificationTableMock.findIndex(el => el.id === +id);\r\n specificationTableMock.splice(index, 1);\r\n if (!index === -1) {\r\n return [400];\r\n }\r\n\r\n return [200];\r\n });\r\n}\r\n\r\nfunction generateSpecificationId() {\r\n const ids = specificationTableMock.map(el => el.id);\r\n const maxId = Math.max(...ids);\r\n return maxId + 1;\r\n}\r\n\r\nfunction wrapSpecification(specification) {\r\n const newSpec = { ...specification };\r\n newSpec.name = getSpecNameById(newSpec.specId);\r\n return newSpec;\r\n}\r\n\r\nfunction getSpecNameById(specId) {\r\n const specs = [\r\n \"Seats\",\r\n \"Fuel Type\",\r\n \"Stock\",\r\n \"Door count\",\r\n \"Engine\",\r\n \"Transmission\",\r\n \"Drivetrain\",\r\n \"Combined MPG\",\r\n \"Warranty\",\r\n \"Wheels\"\r\n ];\r\n return specs[specId];\r\n}\r\n","import { persistReducer } from \"redux-persist\";\r\nimport storage from \"redux-persist/lib/storage\";\r\nimport { put, takeLatest } from \"redux-saga/effects\";\r\nimport { getUserByToken } from \"./authCrud\";\r\n\r\nexport const actionTypes = {\r\n Login: \"[Login] Action\",\r\n Logout: \"[Logout] Action\",\r\n Register: \"[Register] Action\",\r\n UserRequested: \"[Request User] Action\",\r\n UserLoaded: \"[Load User] Auth API\",\r\n};\r\n\r\nconst initialAuthState = {\r\n user: undefined,\r\n authToken: undefined,\r\n};\r\n\r\nexport const reducer = persistReducer(\r\n { storage, key: \"v711-demo3-auth\", whitelist: [\"user\", \"authToken\"] },\r\n (state = initialAuthState, action) => {\r\n switch (action.type) {\r\n case actionTypes.Login: {\r\n const { authToken } = action.payload;\r\n\r\n return { authToken, user: undefined };\r\n }\r\n\r\n case actionTypes.Register: {\r\n const { authToken } = action.payload;\r\n\r\n return { authToken, user: undefined };\r\n }\r\n\r\n case actionTypes.Logout: {\r\n // TODO: Change this code. Actions in reducer aren't allowed.\r\n return initialAuthState;\r\n }\r\n\r\n case actionTypes.UserLoaded: {\r\n const { user } = action.payload;\r\n return { ...state, user };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n }\r\n);\r\n\r\nexport const actions = {\r\n login: (authToken) => ({ type: actionTypes.Login, payload: { authToken } }),\r\n register: (authToken) => ({\r\n type: actionTypes.Register,\r\n payload: { authToken },\r\n }),\r\n logout: () => ({ type: actionTypes.Logout }),\r\n requestUser: (user) => ({\r\n type: actionTypes.UserRequested,\r\n payload: { user },\r\n }),\r\n fulfillUser: (user) => ({ type: actionTypes.UserLoaded, payload: { user } }),\r\n};\r\n\r\nexport function* saga() {\r\n yield takeLatest(actionTypes.Login, function* loginSaga() {\r\n yield put(actions.requestUser());\r\n });\r\n\r\n yield takeLatest(actionTypes.Register, function* registerSaga() {\r\n yield put(actions.requestUser());\r\n });\r\n\r\n yield takeLatest(actionTypes.UserRequested, function* userRequested() {\r\n const { data: user } = yield getUserByToken();\r\n\r\n yield put(actions.fulfillUser(user));\r\n });\r\n}\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\ntype AppStateType = {\n toast: {\n show: boolean\n title: string\n message: string\n }\n}\nexport const appSlice = createSlice({\n name: 'app',\n initialState: {\n toast: {\n show: false,\n title: '',\n message: '',\n },\n },\n reducers: {\n showToast: (state, action: PayloadAction<{ title: string; message: string }>) => {\n const { title, message } = action.payload\n state.toast.title = title\n state.toast.message = message\n state.toast.show = true\n },\n hideToast: state => {\n state.toast.title = ''\n state.toast.message = ''\n state.toast.show = false\n },\n },\n})\n\nexport const { showToast, hideToast } = appSlice.actions\n","import { combineReducers } from 'redux'\r\n\r\nimport * as auth from '../app/modules/Auth/_redux/authRedux'\r\nimport { appSlice } from './app-reducer'\r\n\r\nexport const rootReducer = combineReducers({\r\n auth: auth.reducer,\r\n app: appSlice.reducer,\r\n})\r\n\r\nexport type RootState = ReturnType\r\n\r\nexport function* rootSaga() {}\r\n","import { configureStore, getDefaultMiddleware } from \"@reduxjs/toolkit\";\r\nimport createSagaMiddleware from \"redux-saga\";\r\nimport { reduxBatch } from \"@manaflair/redux-batch\";\r\nimport { persistStore } from \"redux-persist\";\r\nimport { rootReducer, rootSaga } from \"./rootReducer\";\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\nconst middleware = [\r\n ...getDefaultMiddleware({\r\n immutableCheck: false,\r\n serializableCheck: false,\r\n thunk: true,\r\n }),\r\n sagaMiddleware,\r\n];\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer,\r\n middleware,\r\n devTools: process.env.NODE_ENV !== \"production\",\r\n enhancers: [reduxBatch],\r\n});\r\n\r\n/**\r\n * @see https://github.com/rt2zz/redux-persist#persiststorestore-config-callback\r\n * @see https://github.com/rt2zz/redux-persist#persistor-object\r\n */\r\nexport const persistor = persistStore(store);\r\n\r\nsagaMiddleware.run(rootSaga);\r\n\r\nexport default store;\r\n","import objectPath from \"object-path\";\r\nimport {toAbsoluteUrl} from \"../../_helpers\";\r\n\r\nexport class HtmlClassService {\r\n // Public properties\r\n config;\r\n classes;\r\n attributes;\r\n\r\n /**\r\n * Build html element classes from layout config\r\n * @param layoutConfig\r\n */\r\n setConfig(layoutConfig) {\r\n this.config = this.preInit(layoutConfig);\r\n\r\n // scope list of classes\r\n this.classes = {\r\n header: [],\r\n header_container: [],\r\n header_mobile: [],\r\n header_menu: [],\r\n aside: [],\r\n aside_menu: [],\r\n subheader: [],\r\n subheader_container: [],\r\n content: [],\r\n content_container: [],\r\n footer_container: []\r\n };\r\n\r\n this.attributes = {\r\n aside_menu: {},\r\n header_mobile: {},\r\n header_menu: {}\r\n };\r\n\r\n // init base layout\r\n this.initLoader();\r\n this.initLayout();\r\n\r\n // init header and subheader menu\r\n this.initHeader();\r\n this.initSubheader();\r\n\r\n this.initContent();\r\n // init aside and aside menu\r\n this.initAside();\r\n\r\n // init footer\r\n this.initFooter();\r\n }\r\n\r\n preInit(layoutConfig) {\r\n const updateLayoutConfig = Object.assign({}, layoutConfig);\r\n const subheaderFixed = objectPath.get(layoutConfig, \"subheader.fixed\");\r\n if (subheaderFixed) {\r\n updateLayoutConfig.subheader.style = \"solid\";\r\n } else {\r\n updateLayoutConfig.subheader.fixed = false;\r\n }\r\n return updateLayoutConfig;\r\n }\r\n\r\n /**\r\n * Returns Classes\r\n *\r\n * @param path: string\r\n * @param toString boolean\r\n */\r\n getClasses(path, toString) {\r\n if (path) {\r\n const classes = objectPath.get(this.classes, path) || \"\";\r\n if (toString && Array.isArray(classes)) {\r\n return classes.join(\" \");\r\n }\r\n return classes.toString();\r\n }\r\n return this.classes;\r\n }\r\n\r\n getAttributes(path) {\r\n if (path) {\r\n const attributes = objectPath.get(this.attributes, path) || [];\r\n return attributes;\r\n }\r\n return [];\r\n }\r\n\r\n getLogo() {\r\n const brandSkin = objectPath.get(this.config, \"brand.self.theme\");\r\n if (brandSkin === \"light\") {\r\n return toAbsoluteUrl(\"/media/logos/logo-dark.png\");\r\n } else {\r\n return toAbsoluteUrl(\"/media/logos/logo-light.png\");\r\n }\r\n }\r\n\r\n getStickyLogo() {\r\n let logo = objectPath.get(this.config, \"self.logo.sticky\");\r\n if (typeof logo === \"undefined\") {\r\n logo = this.getLogo();\r\n }\r\n return logo + \"\";\r\n }\r\n\r\n /**\r\n * Init Layout\r\n */\r\n initLayout() {\r\n const selfBodyBackgroundImage = objectPath.get(this.config, \"self.body.backgroundImage\");\r\n if (selfBodyBackgroundImage) {\r\n const backgroundImageUrl = `${toAbsoluteUrl(\"/media/\" + selfBodyBackgroundImage)}`;\r\n document.body.style.backgroundImage = `url(\"${backgroundImageUrl}\")`;\r\n }\r\n\r\n const _selfBodyClass = objectPath.get(this.config, \"self.body.class\");\r\n if (_selfBodyClass) {\r\n const bodyClasses = _selfBodyClass.toString().split(\" \");\r\n bodyClasses.forEach(cssClass => document.body.classList.add(cssClass));\r\n }\r\n }\r\n\r\n /**\r\n * Init Loader\r\n */\r\n initLoader() {}\r\n\r\n /**\r\n * Init Header\r\n */\r\n initHeader() {\r\n const headerSelfFixedMobile = objectPath.get(this.config, \"header.self.fixed.mobile\");\r\n if (headerSelfFixedMobile) {\r\n document.body.classList.add(\"header-mobile-fixed\");\r\n }\r\n }\r\n\r\n /**\r\n * Init Subheader\r\n */\r\n initSubheader() {\r\n const subheaderDisplay = objectPath.get(this.config, \"subheader.display\");\r\n if (subheaderDisplay) {\r\n document.body.classList.add(\"subheader-enabled\");\r\n } else {\r\n return;\r\n }\r\n\r\n // Fixed content head\r\n const subheaderFixed = objectPath.get(this.config, \"subheader.fixed\");\r\n if (subheaderFixed ) {\r\n document.body.classList.add(\"subheader-fixed\");\r\n }\r\n\r\n const subheaderStyle = objectPath.get(this.config, \"subheader.style\");\r\n if (subheaderStyle) {\r\n const subheaderClass = `subheader-${subheaderStyle}`;\r\n objectPath.push(this.classes, \"subheader\", subheaderClass);\r\n }\r\n\r\n const subheaderWidth = objectPath.get(this.config, \"subheader.width\");\r\n if (subheaderWidth === \"fluid\") {\r\n objectPath.push(this.classes, \"subheader_container\", \"container-fluid\");\r\n } else {\r\n objectPath.push(this.classes, \"subheader_container\", \"container\");\r\n }\r\n\r\n const subheaderClear = objectPath.get(this.config, \"subheader.clear\");\r\n if (subheaderClear) {\r\n objectPath.push(this.classes, \"subheader\", \"mb-0\");\r\n }\r\n }\r\n\r\n /**\r\n * Init Content\r\n */\r\n initContent() {\r\n if (objectPath.get(this.config, \"content.fit-top\")) {\r\n objectPath.push(this.classes, \"content\", \"pt-0\");\r\n }\r\n\r\n if (objectPath.get(this.config, \"content.fit-bottom\")) {\r\n objectPath.push(this.classes, \"content\", \"pb-0\");\r\n }\r\n\r\n if (objectPath.get(this.config, \"content.width\") === \"fluid\") {\r\n objectPath.push(this.classes, \"content_container\", \"container-fluid\");\r\n } else {\r\n objectPath.push(this.classes, \"content_container\", \"container\");\r\n }\r\n }\r\n\r\n /**\r\n * Init Aside\r\n */\r\n initAside() {\r\n // Check Aside\r\n const asideSelfDisplay = objectPath.get(this.config, \"aside.self.display\");\r\n if (!asideSelfDisplay) {\r\n return;\r\n }\r\n\r\n // Enable Aside\r\n document.body.classList.add(\"aside-enabled\");\r\n\r\n // Fixed Aside\r\n const asideSelfFixed = objectPath.get(this.config, \"aside.self.fixed\");\r\n if (asideSelfFixed) {\r\n document.body.classList.add(\"aside-fixed\");\r\n objectPath.push(this.classes, \"aside\", \"aside-fixed\");\r\n } else {\r\n document.body.classList.add(\"aside-static\");\r\n }\r\n\r\n\t\t// Aside Secondary\r\n const asideSecondaryDisplay = objectPath.get(this.config, \"aside.secondary.display\");\r\n if (asideSecondaryDisplay) {\r\n document.body.classList.add(\"aside-secondary-enabled\");\r\n } else {\r\n document.body.classList.add(\"aside-secondary-disabled\");\r\n }\r\n\r\n // Check Aside\r\n if (!asideSelfDisplay) {\r\n return;\r\n }\r\n\r\n // Default fixed\r\n const asideSelfMinimizeDefault = objectPath.get(this.config, \"aside.self.minimize.default\");\r\n if (asideSelfMinimizeDefault) {\r\n document.body.classList.add(\"aside-minimize\");\r\n }\r\n\r\n // Menu\r\n // Dropdown Submenu\r\n const asideMenuDropdown = objectPath.get(this.config, \"aside.menu.dropdown\");\r\n if (asideMenuDropdown) {\r\n objectPath.push(this.classes, \"aside_menu\", \"aside-menu-dropdown\");\r\n this.attributes.aside_menu[\"data-menu-dropdown\"] = \"1\";\r\n }\r\n\r\n // Scrollable Menu\r\n this.attributes.aside_menu[\"data-menu-scroll\"] = asideMenuDropdown ? \"0\" : \"1\";\r\n\r\n const asideSubmenuDHoverTimeout = objectPath.get(\r\n this.config,\r\n \"aside.menu.submenu.dropdown.hover-timeout\"\r\n );\r\n if (asideSubmenuDHoverTimeout) {\r\n this.attributes.aside_menu[\r\n \"data-menu-dropdown-timeout\"\r\n ] = asideSubmenuDHoverTimeout;\r\n }\r\n }\r\n\r\n /**\r\n * Init Footer\r\n */\r\n initFooter() {\r\n const footerFixed = objectPath.get(this.config, \"footer.fixed\");\r\n if (footerFixed) {\r\n document.body.classList.add(\"footer-fixed\");\r\n objectPath.push(this.classes, \"footer\", \"bg-white\");\r\n }\r\n\r\n if (objectPath.get(this.config, \"footer.width\") === \"fluid\") {\r\n objectPath.push(this.classes, \"footer_container\", \"container-fluid\");\r\n } else {\r\n objectPath.push(this.classes, \"footer_container\", \"container\");\r\n }\r\n }\r\n}\r\n","import React, { createContext, useContext, useMemo } from \"react\";\r\nimport { getInitLayoutConfig } from \"./LayoutConfig\";\r\nimport { HtmlClassService } from \"./HTMLClassService\";\r\n\r\nconst LAYOUT_CONFIG_KEY =\r\n process.env.REACT_APP_LAYOUT_CONFIG_KEY || \"LayoutConfig\";\r\n\r\nfunction getConfig() {\r\n const ls = localStorage.getItem(LAYOUT_CONFIG_KEY);\r\n if (ls) {\r\n try {\r\n return JSON.parse(ls);\r\n } catch (er) {\r\n console.error(er);\r\n }\r\n }\r\n return getInitLayoutConfig();\r\n}\r\n\r\n// Side effect\r\nexport function setLayoutConfig(config) {\r\n localStorage.setItem(LAYOUT_CONFIG_KEY, JSON.stringify(config));\r\n window.location.reload();\r\n}\r\n\r\nconst HtmlClassServiceContext = createContext();\r\n\r\n/**\r\n *\r\n *\r\n * @export\r\n * @returns Layout context from 'localStorage'\r\n */\r\nexport function useHtmlClassService() {\r\n return useContext(HtmlClassServiceContext);\r\n}\r\n\r\nexport function withHtmlClassService(Component) {\r\n class WithHtmlClassService extends React.Component {\r\n static displayName = `WithHtmlClassService(${Component.displayName ||\r\n Component.name})`;\r\n\r\n static contextType = HtmlClassServiceContext;\r\n\r\n render() {\r\n return ;\r\n }\r\n }\r\n\r\n return WithHtmlClassService;\r\n}\r\n\r\nexport const HtmlClassServiceConsumer = HtmlClassServiceContext.Consumer;\r\n\r\nexport function MetronicLayoutProvider({ children }) {\r\n const lc = useMemo(getConfig, []);\r\n const hcs = useMemo(() => {\r\n const service = new HtmlClassService();\r\n\r\n service.setConfig(lc);\r\n\r\n return service;\r\n }, [lc]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import { toAbsoluteUrl } from \"../../_helpers\";\r\nexport function getInitLayoutConfig() {\r\n return {\r\n demo: \"demo3\",\r\n // Javascript Settings\r\n js: {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1200,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: \"#ffffff\",\r\n primary: \"#1BC5BD\",\r\n secondary: \"#E5EAEE\",\r\n success: \"#1BC5BD\",\r\n info: \"#6993FF\",\r\n warning: \"#FFA800\",\r\n danger: \"#F64E60\",\r\n light: \"#F3F6F9\",\r\n dark: \"#212121\",\r\n },\r\n light: {\r\n white: \"#ffffff\",\r\n primary: \"#1BC5BD\",\r\n secondary: \"#ECF0F3\",\r\n success: \"#C9F7F5\",\r\n info: \"#E1E9FF\",\r\n warning: \"#FFF4DE\",\r\n danger: \"#FFE2E5\",\r\n light: \"#F3F6F9\",\r\n dark: \"#D6D6E0\",\r\n },\r\n inverse: {\r\n white: \"#ffffff\",\r\n primary: \"#ffffff\",\r\n secondary: \"#212121\",\r\n success: \"#ffffff\",\r\n info: \"#ffffff\",\r\n warning: \"#ffffff\",\r\n danger: \"#ffffff\",\r\n light: \"#464E5F\",\r\n dark: \"#ffffff\",\r\n },\r\n },\r\n gray: {\r\n gray100: \"#F3F6F9\",\r\n gray200: \"#ECF0F3\",\r\n gray300: \"#E5EAEE\",\r\n gray400: \"#D6D6E0\",\r\n gray500: \"#B5B5C3\",\r\n gray600: \"#80808F\",\r\n gray700: \"#464E5F\",\r\n gray800: \"#1B283F\",\r\n gray900: \"#212121\",\r\n },\r\n },\r\n fontFamily: \"Poppins\",\r\n },\r\n // Base Settins\r\n self: {\r\n layout: \"default\", // blank/default page mode\r\n body: {},\r\n },\r\n // == Page Splash Screen loading\r\n loader: {\r\n enabled: true,\r\n type: \"\", // default|spinner-message|spinner-logo\r\n logo: toAbsoluteUrl(\"/media/logos/logo-dark-sm.png\"),\r\n message: \"Please wait...\",\r\n },\r\n header: {\r\n self: {\r\n fixed: {\r\n mobile: true,\r\n },\r\n }\r\n },\r\n subheader: {\r\n display: true,\r\n displayDesc: false,\r\n displayDaterangepicker: true,\r\n breadcrumb: {\r\n display: true,\r\n },\r\n layout: \"subheader-v6\",\r\n fixed: false,\r\n width: \"fixed\", // fixed/fluid,\r\n clear: false,\r\n style: \"transparent\", // solid/transparent\r\n },\r\n content: {\r\n width: \"fixed\", // fluid|fixed\r\n },\r\n aside: {\r\n self: {\r\n display: true,\r\n fixed: true,\r\n minimize: {\r\n toggle: true,\r\n default: false\r\n }\r\n },\r\n secondary: {\r\n display: true\r\n },\r\n menu: {\r\n dropdown: false, // ok\r\n scroll: false, // ok\r\n \"icon-style\": \"duotone\", // duotone, line, bold, solid\r\n submenu: {\r\n accordion: true,\r\n },\r\n },\r\n },\r\n footer: {\r\n width: \"fixed\", // fixed|fluid\r\n fixed: false\r\n },\r\n extras: {\r\n search: {\r\n display: false,\r\n layout: \"offcanvas\", // offcanvas, dropdown\r\n offcanvas: {\r\n direction: \"right\",\r\n },\r\n },\r\n notifications: {\r\n display: false,\r\n layout: \"offcanvas\", // offcanvas, dropdown\r\n dropdown: {\r\n style: \"dark\", // light, dark\r\n },\r\n offcanvas: {\r\n direction: \"right\",\r\n },\r\n },\r\n \"quick-actions\": {\r\n display: true,\r\n layout: \"offcanvas\", // offcanvas, dropdown,\r\n dropdown: {\r\n style: \"dark\", // light, dark\r\n },\r\n offcanvas: {\r\n direction: \"left\",\r\n },\r\n },\r\n cart: {\r\n display: false,\r\n layout: \"dropdown\", // offcanvas, dropdown\r\n offcanvas: {\r\n direction: \"dark\", // ligth, dark\r\n },\r\n },\r\n chat: {\r\n display: true,\r\n },\r\n user: {\r\n display: true,\r\n layout: \"offcanvas\", // offcanvas, dropdown\r\n dropdown: {\r\n style: \"light\", // light|dark\r\n },\r\n offcanvas: {\r\n direction: \"left\",\r\n },\r\n },\r\n languages: {\r\n display: false,\r\n },\r\n \"quick-panel\": {\r\n display: true,\r\n offcanvas: {\r\n direction: \"left\",\r\n },\r\n },\r\n\r\n toolbar: {\r\n display: true,\r\n },\r\n scrolltop: {\r\n display: true,\r\n },\r\n },\r\n };\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport objectPath from \"object-path\";\r\nimport { toAbsoluteUrl } from \"../../../_helpers\";\r\nimport { useHtmlClassService } from \"../../_core/MetronicLayout\";\r\n\r\nexport function HeaderMobile() {\r\n const uiService = useHtmlClassService();\r\n\r\n const layoutProps = useMemo(() => {\r\n return {\r\n asideDisplay: objectPath.get(uiService.config, \"aside.self.display\"),\r\n headerMobileCssClasses: uiService.getClasses(\"header_mobile\", true),\r\n headerMobileAttributes: uiService.getAttributes(\"header_mobile\"),\r\n };\r\n }, [uiService]);\r\n\r\n return (\r\n <>\r\n {/*begin::Header Mobile*/}\r\n \r\n {/* begin::Logo */}\r\n \r\n \r\n \r\n {/* end::Logo */}\r\n\r\n {/* begin::Toolbar */}\r\n
\r\n {layoutProps.asideDisplay && (\r\n \r\n \r\n \r\n )}\r\n
\r\n {/* end::Toolbar */}\r\n \r\n {/* end::Header Mobile */}\r\n \r\n );\r\n}\r\n","/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid */\r\nimport React from 'react'\r\nimport { useLocation } from 'react-router'\r\nimport { NavLink } from 'react-router-dom'\r\nimport SVG from 'react-inlinesvg'\r\nimport { toAbsoluteUrl, checkIsActive } from '../../../../_helpers'\r\n\r\nexport function AsideMenuList({ layoutProps }) {\r\n const location = useLocation()\r\n const getMenuItemActive = (url, hasSubmenu = false) => {\r\n return checkIsActive(location, url)\r\n ? ` ${!hasSubmenu && 'menu-item-active'} menu-item-open `\r\n : ''\r\n }\r\n\r\n return (\r\n <>\r\n {/* begin::Menu Nav */}\r\n
    \r\n {/*begin::1 Level*/}\r\n
  • \r\n \r\n \r\n \r\n \r\n Dashboard\r\n \r\n
  • \r\n {/*end::1 Level*/}\r\n\r\n {/*begin::1 Level*/}\r\n {/* \r\n \r\n \r\n \r\n \r\n Layout Builder\r\n \r\n */}\r\n {/*end::1 Level*/}\r\n\r\n {/* Components */}\r\n {/* begin::section */}\r\n
  • \r\n

    Components

    \r\n \r\n
  • \r\n {/* end:: section */}\r\n\r\n {/* Material-UI */}\r\n {/*begin::1 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Material UI\r\n \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n Material UI\r\n \r\n
    • \r\n\r\n {/* Inputs */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Inputs\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Autocomplete\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Buttons\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Checkboxes\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Pickers\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Radio Buttons\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Selects\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Switches\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Text Fields\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Transfer List\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Navigation */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Navigation\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Bottom Navigation\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Breadcrumbs\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Drawers\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n NavLinks\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Menus\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Steppers\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Tabs\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Surfaces */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Surfaces\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n App Bar\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Paper\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Cards\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Expansion Panels\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Feedback */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Feedback\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Progress\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Dialogs\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Snackbars\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Data Display */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Data Display\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Avatars\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Badges\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Chips\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Dividers\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Icons\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Lists\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Tables\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Tooltips\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Typography\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Utils */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Utils\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Click Away Listener\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n No SSR\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Popover\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Popper\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Portal\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Transitions\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n useMediaQuery\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/* Layout */}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Layout\r\n \r\n \r\n
      \r\n \r\n
        \r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Box\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Container\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Grid\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Grid list\r\n \r\n \r\n {/*end::3 Level*/}\r\n\r\n {/*begin::3 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Hidden\r\n \r\n \r\n {/*end::3 Level*/}\r\n
      \r\n
      \r\n \r\n {/*end::2 Level*/}\r\n
    \r\n
    \r\n \r\n {/*end::1 Level*/}\r\n\r\n {/* Bootstrap */}\r\n {/*begin::1 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Bootstrap\r\n \r\n \r\n
    \r\n
      \r\n
        \r\n
      • \r\n \r\n Bootstrap\r\n \r\n
      • \r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Alerts\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Badge\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Breadcrumb\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Buttons\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Button Group\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Cards\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Carousel\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Dropdowns\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Forms\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Input Group\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Images\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Figures\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Jumbotron\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n List group\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Modal\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Navs\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Navbar\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Overlays\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Pagination\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Popovers\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Progress\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Spinners\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Table\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Tabs\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Tooltips\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Toasts\r\n \r\n \r\n {/*end::2 Level*/}\r\n
      \r\n
    \r\n
    \r\n \r\n {/*end::1 Level*/}\r\n\r\n {/* Applications */}\r\n {/* begin::section */}\r\n
  • \r\n

    Applications

    \r\n \r\n
  • \r\n {/* end:: section */}\r\n\r\n {/* eCommerce */}\r\n {/*begin::1 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n eCommerce\r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n eCommerce\r\n \r\n
    • \r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Customers\r\n \r\n \r\n {/*end::2 Level*/}\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Products\r\n \r\n \r\n {/*end::2 Level*/}\r\n
    \r\n
    \r\n \r\n {/*end::1 Level*/}\r\n\r\n {/* Custom */}\r\n {/* begin::section */}\r\n
  • \r\n

    Custom

    \r\n \r\n
  • \r\n {/* end:: section */}\r\n\r\n {/* Error Pages */}\r\n {/*begin::1 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Pages\r\n \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n Error Pages\r\n \r\n
    • \r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page - 1\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page -2\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page - 3\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page - 4\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page - 5\r\n \r\n \r\n {/*end::2 Level*/}\r\n\r\n {/*begin::2 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n Error Page - 6\r\n \r\n \r\n {/*end::2 Level*/}\r\n
    \r\n
    \r\n \r\n {/*end::1 Level*/}\r\n
\r\n\r\n {/* end::Menu Nav */}\r\n \r\n )\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { AsideMenuList } from \"./AsideMenuList\";\r\nimport { useHtmlClassService } from \"../../../_core/MetronicLayout\";\r\n\r\nexport function AsideMenu({ isActive }) {\r\n const uiService = useHtmlClassService();\r\n const layoutProps = useMemo(() => {\r\n return {\r\n layoutConfig: uiService.config,\r\n asideMenuAttr: uiService.getAttributes(\"aside_menu\"),\r\n ulClasses: uiService.getClasses(\"aside_menu_nav\", true),\r\n asideClassesFromConfig: uiService.getClasses(\"aside_menu\", true),\r\n };\r\n }, [uiService]);\r\n\r\n return (\r\n
\r\n
\r\n {/* begin::Menu Container */}\r\n \r\n \r\n
\r\n {/* end::Menu Container */}\r\n
\r\n \r\n );\r\n}\r\n","import React, {createContext} from \"react\";\r\nimport {useMemo} from \"react\";\r\nimport {useContext} from \"react\";\r\n\r\nconst I18N_CONFIG_KEY = process.env.REACT_APP_I18N_CONFIG_KEY || \"i18nConfig\";\r\nconst initialState = {\r\n selectedLang: \"en\"\r\n };\r\n\r\nfunction getConfig() {\r\n const ls = localStorage.getItem(I18N_CONFIG_KEY);\r\n if (ls) {\r\n try {\r\n return JSON.parse(ls);\r\n } catch (er) {\r\n console.error(er);\r\n }\r\n }\r\n return initialState;\r\n}\r\n\r\n// Side effect\r\nexport function setLanguage(lang) {\r\n localStorage.setItem(I18N_CONFIG_KEY, JSON.stringify({ selectedLang: lang }));\r\n window.location.reload();\r\n}\r\n\r\nconst I18nContext = createContext();\r\n\r\nexport function useLang() {\r\n return useContext(I18nContext).selectedLang;\r\n}\r\n\r\nexport function withI18n(Component) {\r\n class WithI18n extends React.Component {\r\n static displayName = `WithI18n(${Component.displayName || Component.name})`;\r\n\r\n static contextType = I18nContext;\r\n\r\n render() {\r\n return ;\r\n }\r\n }\r\n\r\n return WithI18n;\r\n}\r\n\r\nexport const I18nConsumer = I18nContext.Consumer;\r\n\r\nexport function MetronicI18nProvider({ children }) {\r\n const lang = useMemo(getConfig, []);\r\n\r\n return {children};\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport const DropdownCustomToggler = forwardRef((props, ref) => {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.onClick(e);\r\n }}\r\n >\r\n {props.children}\r\n \r\n );\r\n});\r\n","import React from \"react\";\r\n\r\nexport const DropdownItemToggler = React.forwardRef((props, ref) => {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.onClick(e);\r\n }}\r\n >\r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nDropdownItemToggler.displayName = 'DropdownItemToggler';\r\n","/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid */\r\nimport React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { Dropdown } from \"react-bootstrap\";\r\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\nimport { toAbsoluteUrl } from \"../../../../_helpers\";\r\nimport { useLang, setLanguage } from \"../../../../i18n\";\r\nimport { DropdownItemToggler } from \"../../../../_partials/dropdowns\";\r\n\r\nconst languages = [\r\n {\r\n lang: \"en\",\r\n name: \"English\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/226-united-states.svg\"),\r\n },\r\n {\r\n lang: \"zh\",\r\n name: \"Mandarin\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/015-china.svg\"),\r\n },\r\n {\r\n lang: \"es\",\r\n name: \"Spanish\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/128-spain.svg\"),\r\n },\r\n {\r\n lang: \"ja\",\r\n name: \"Japanese\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/063-japan.svg\"),\r\n },\r\n {\r\n lang: \"de\",\r\n name: \"German\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/162-germany.svg\"),\r\n },\r\n {\r\n lang: \"fr\",\r\n name: \"French\",\r\n flag: toAbsoluteUrl(\"/media/svg/flags/195-france.svg\"),\r\n },\r\n];\r\n\r\nexport function LanguageSelectorDropdown() {\r\n const lang = useLang();\r\n const currentLanguage = languages.find((x) => x.lang === lang);\r\n return (\r\n \r\n \r\n Select Language\r\n }\r\n >\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
    \r\n {languages.map((language) => (\r\n \r\n setLanguage(language.lang)}\r\n className=\"navi-link\"\r\n >\r\n \r\n {language.name}\r\n \r\n {language.name}\r\n \r\n \r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import {\n AddressCitizen,\n AddressRecent,\n AddressWork,\n BankAccount,\n} from '../bankaccount/bankaccount-typed'\nimport { Kyc } from '../kyc/kyc-typed'\nexport enum UserStatus {\n ACTIVE = 'active',\n BLOCKED = 'blocked',\n}\n\nexport enum UserSignInType {\n GOOGLE = 'google',\n FACEBOOK = 'facebook',\n APPLE = 'apple',\n EMAIL = 'e-mail',\n}\nexport type PublicProfile = {\n distinctId: string\n lastnameEn: string\n lastnameTh: string\n firstnameEn: string\n firstnameTh: string\n middleNameEn: string\n middleNameTh: string\n profileImage: string\n}\nexport type TmnProfile = {\n tmnId: string\n publicProfile: PublicProfile\n dateOfBirth: string\n gender?: string\n mobile: string\n expiryDate: string\n occupation: string\n thaiIdMask: string\n}\n\nexport type User = {\n addressCitizen: AddressCitizen\n addressRecent: AddressRecent\n addressWork: AddressWork\n birthdate: string\n callbackConvenientTime: string\n callbackMobileNo: string\n citizenId: string\n createdAt: string\n deletedAt: string\n bankAccount: BankAccount\n email: string\n firstnameEn: string\n firstnameTh: string\n portId: string\n gender: string\n id: string\n job: string\n laserCode: string\n lastSignInAt: string\n lastnameEn: string\n lastnameTh: string\n mobileNo: string\n role: ROLE\n tinNo: string\n titleEn: string\n titleTh: string\n updatedAt: string\n imageProfile: ImageProfile\n kyc: KycExtends\n status: UserStatus\n typeSignIn: UserSignInType\n tmnProfile: TmnProfile\n tmnId: string\n}\nexport type KycExtends = {\n kyc: Kyc\n}\nexport type ImageProfile = {\n id: string\n createAt: string\n updateAt: string\n deleteAt: string\n attachableId: string\n attachableType: string\n type: string\n path: string\n}\n\nexport type PageMeta = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\n\nexport type UserList = {\n items: User[]\n meta: PageMeta\n}\nexport type Image = {\n image: string\n}\n\nexport enum ROLE {\n USER = 'user',\n VIEWER = 'viewer',\n MANAGER = 'manager',\n ADMIN = 'admin',\n SUPER_ADMIN = 'super_admin',\n}\nexport type UpdateRoleUser = {\n userId: string\n role: ROLE\n}\n\nexport interface UpdateUserProfileParams {\n mobileNo?: string\n email?: string\n}\n\nexport interface ChangeUserMobileNumberResponse {\n mobileNo: string\n}\n\nexport interface ChangeTmnIdParams {\n userId: string\n thaiId: string\n oldTmnId: string\n newTmnId: string\n oldMobileNo: string\n newMobileNo: string\n}\n\nexport interface SearchUserParams {\n limit?: number\n page?: number\n q?: string\n filter?: string\n}\n","import { User } from '../user/user-typed'\n\nexport type BankAccount = {\n approvedStatus: BankAccountStatus\n bank: string\n branch: string\n createdAt: string\n deletedAt: string\n id: string\n idempotencyKey: string\n isDefault: string\n name: string\n no: string\n rejectedAt: string\n remark: string\n updatedAt: string\n userId: string\n user: User\n imageBankAccount: Attachment\n}\nexport type AddressCitizen = {\n addressableId: string\n addressableType: string\n createdAt: string\n deletedAt: string\n detail: string\n district: string\n houseNo: string\n id: string\n mobileNo: string\n province: string\n subDistrict: string\n type: string\n updatedAt: string\n zipCode: string\n}\nexport type AddressRecent = {\n addressableId: string\n addressableType: string\n createdAt: string\n deletedAt: string\n detail: string\n district: string\n houseNo: string\n id: string\n mobileNo: string\n province: string\n subDistrict: string\n type: string\n updatedAt: string\n zipCode: string\n}\nexport type AddressWork = {\n addressableId: string\n addressableType: string\n createdAt: string\n deletedAt: string\n detail: string\n district: string\n houseNo: string\n id: string\n mobileNo: string\n province: string\n subDistrict: string\n type: string\n updatedAt: string\n zipCode: string\n}\n\nexport type PageMeta = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\n\nexport type BankAccountList = {\n items: BankAccount[]\n meta: PageMeta\n}\nexport type Attachment = {\n attachableId: string\n attachableType: string\n createdAt: string\n deletedAt: string\n id: string\n path: string\n type: string\n updatedAt: string\n}\n\nexport type Image = {\n image: string\n}\n\nexport type VerifyBankAccount = {\n bankAccountId: string\n status: string\n remark?: string\n}\n\nexport enum BankAccountStatus {\n PENDING = 'pending',\n APPROVED = 'approved',\n REJECTED = 'rejected',\n CANCELED = 'canceled',\n}\n","import { Dayjs } from 'dayjs'\nimport { EnumDeliveryDispatchStatus } from '../../pages/transaction/TransactionDetail/SafeGoldCallBacksCard'\nimport { Port } from '../port/port-typed'\nimport { User } from '../user/user-typed'\n\nexport enum EnumTransactionStatus {\n PENDING = 'pending',\n AWAITING_TRANSFER = 'awaiting_transfer', // for sell\n AWAIT_SAFEGOLD_CONFIRM = 'await_safegold_confirm',\n SUCCESS = 'success',\n FAIL = 'fail',\n REFUND = 'refund',\n}\n\nexport enum EnumTransactionType {\n DELIVERY = 'delivery',\n SELL = 'sell',\n BUY = 'buy',\n DCA = 'dca',\n PICK_UP = 'pick_up',\n TRANSFER_IN = 'transfer_in',\n TRANSFER_OUT = 'transfer_out',\n ONE_TIME_DELIVERY = 'one_time_delivery',\n}\n\nexport enum EnumTransactionTypeCapitalize {\n BUY = 'Buy',\n SELL = 'Sell',\n DCA = 'Dca',\n DELIVERY = 'Delivery',\n PICK_UP = 'Pick Up',\n TRANSFER_IN = 'Transfer In',\n TRANSFER_OUT = 'Transfer Out',\n ONE_TIME_DELIVERY = 'One Time Delivery',\n}\n\nexport enum EnumSafeGoldDataType {\n JEWELLER = 'jeweller',\n DELIVERY = 'redeem',\n TRANSFER_IN = 'transferIn',\n TRANSFER_OUT = 'transferOut',\n SIP = 'sip',\n BUY = 'buy',\n SELL = 'sell',\n}\n\nexport type PromoCodeDetail = {\n promoCode: string\n message: string\n promoType: number\n rewardPrice: number\n rewardAmount: number\n}\n\nexport type Transaction = {\n bankAccountNo: string\n bankName: string\n createdAt: string\n deletedAt: string\n deliveryDetails: Delivery[]\n expiredTime: string\n goldAmount: number\n id: string\n invoiceId: string\n invoiceLink: string\n port: Port\n user: User\n portId: string\n price: string\n rateId: string\n sgRate: string\n sgUserId: string\n status: EnumTransactionStatus\n transactionValidity: string\n txId: string\n type: EnumTransactionType\n payment: Payment\n reference: string\n safeGoldCallbacks?: SafeGoldCallbacksType[]\n promoCodeDetail?: PromoCodeDetail\n txIdCc: string\n patternId: string\n errorMessage?: string\n spentGoldAmount?: number\n}\n\nexport type SafeGoldCallbacksType = {\n createdAt: string\n deletedAt: string\n id: string\n isSuccess: boolean\n remark: string\n txId: string\n type: string\n updatedAt: string\n data: IDataSafeGoldCallback\n}\n\nexport type IDataSafeGoldCallback = {\n buyPrice: string\n feeAmount: string\n feeAmountTax: string\n goldAmount: string\n preFeesBuyPrice: string\n rate: string\n status: number\n txDate: string\n txId: string\n type: EnumSafeGoldDataType\n userId: string\n settlementStatus: number\n settlementDate: string\n deliveryStatus?: EnumDeliveryDispatchStatus\n productDeliveryNumber?: string\n isRefund?: boolean\n}\n\nexport type Payment = {\n amount: string\n createdAt: string\n currency: string\n deletedAt: string\n externalReference: string\n failOddLog: FailOddLog\n failureCode: string\n failureMessage: string\n id: string\n isChecksumError: boolean\n messageChecksumError: string\n orderId: string\n payplusId: string\n redirectUrl: string\n ref1: string\n referenceOrder: string\n status: string\n transactionId: string\n transactionState: string\n type: string\n updatedAt: string\n tmnIsvRefundRef: string\n tmnPaymentId: string\n tmnRefundId: string\n}\nexport type FailOddLog = {\n authParameter: string\n externalSystem: string\n transactionList: {\n amount: number\n espaId: string\n externalReference: string\n payeeShortName: string\n payerAccount: string\n payerShortName: string\n returnCode: string\n returnMessage: string\n returnStatus: string\n timestamp: string\n transactionNo: string\n }[]\n transactionMode: string\n transactionType: string\n}\n\nexport type PageMeta = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\n\nexport type Delivery = {\n createdAt: string\n deletedAt: string\n id: string\n courierCompany: string\n courierTrackingId: string\n deliveryCost: string\n deliveryStatus: number\n message: string\n mintingCost: string\n patternId: string\n patternName: string\n productId: string\n trackingId: string\n trackingNumber: string\n transactionId: string\n updatedAt: string\n address: addresstype\n skuNumber: string\n trackingLink: string\n vat: number\n amount: number\n}\nexport type addresstype = {\n addressableId: string\n addressableType: string\n createdAt: string\n deletedAt: string\n detail: string\n district: string\n houseNo: string\n id: string\n mobileNo: string\n province: string\n subDistrict: string\n type: string\n updatedAt: string\n zipCode: string\n}\n\nexport type TransactionList = {\n items: Transaction[]\n meta: PageMeta\n}\n\nexport type ExportTransactionReportParams = {\n startDate: Dayjs\n endDate: Dayjs\n status?: EnumTransactionStatus\n type?: EnumTransactionType\n}\n\nexport type GoldProductType = {\n id: number\n name: string\n inStock: 'Y' | 'N'\n skuNumber: string\n purity: string\n weight: string\n goldPattern: string\n description: string\n description2: string\n packaging: string\n certification: string\n opportunities: string\n serialNumber: string\n deliveryCost: string\n mintingCost: string\n pattern: string\n images: string[]\n cardName: string\n vatFees: number\n brand: string\n}\n\nexport type GetProductsResponseType = {\n products: GoldProductType[]\n}\n","import { useMemo } from 'react'\nimport { useHistory, useLocation, useParams, useRouteMatch } from 'react-router'\nimport queryString from 'qs'\n\nimport { capitalize } from 'voca'\nimport { UserStatus } from '../app/services/user/user-typed'\nimport { AxiosResponse } from 'axios'\nimport downloadjs from 'downloadjs'\nimport { Address } from '../app/services/port/port-typed'\nimport { BankAccountStatus } from '../app/services/bankaccount/bankaccount-typed'\nimport {\n EnumTransactionStatus,\n EnumTransactionType,\n EnumTransactionTypeCapitalize,\n} from '../app/services/transaction/transaction-typed'\n\nexport const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))\n\nexport const useRouter = () => {\n const params = useParams()\n const location = useLocation()\n const history = useHistory()\n const match = useRouteMatch()\n const query = useMemo(() => {\n return {\n ...queryString.parse(location.search.slice(1)),\n ...params,\n } as TQuery\n }, [location.search, params])\n\n return useMemo(() => {\n return {\n push: history.push,\n replace: history.replace,\n pathname: location.pathname,\n query,\n match,\n location,\n }\n }, [location, match, history.push, history.replace, query])\n}\n\nexport const setToken = (token: string) => {\n localStorage.setItem('AUTH_TOKEN', token)\n}\n\nexport const getToken = () => {\n return localStorage.getItem('AUTH_TOKEN')\n}\n\nexport const clearToken = () => {\n localStorage.removeItem('AUTH_TOKEN')\n}\n\nexport const setLanguage = (lang: string) => {\n localStorage.setItem('LANGUAGE', lang)\n}\n\nexport const getLanguage = () => {\n return localStorage.getItem('LANGUAGE')\n}\n\nexport const setUserId = (userId: string) => {\n localStorage.setItem('UID', userId)\n}\n\nexport const getUserId = () => {\n return localStorage.getItem('UID')\n}\n\nexport const createFormData = (data: T) => {\n const formData = new FormData()\n Object.entries(data).forEach(([k, v]) => {\n formData.append(k, v)\n })\n return formData\n}\n\nexport const getColorStatusTransactionBadge = (status: string) => {\n if (status === 'success') {\n return 'primary'\n } else if (status === 'fail') {\n return 'danger'\n } else if (status === 'pending') {\n return 'warning'\n } else return 'secondary'\n}\nexport const getColorStatusTransactionText = (status: string) => {\n if (status === 'Success') {\n return '#00b050'\n } else if (status === 'Fail') {\n return '#FF0000'\n } else if (status === 'Pending') {\n return '#ffc000'\n } else return '#00FF7F'\n}\nexport const getColorPaymentStatus = (status: string) => {\n if (status === 'success') {\n return '#00b050'\n } else if (status === 'failed') {\n return '#FF0000'\n } else if (status === 'pending') {\n return '#ffc000'\n } else return '#00FF7F'\n}\nexport const getColorStatusTransactionDetail = (status: string) => {\n if (status === 'success') {\n return '#00b050'\n } else if (status === 'fail') {\n return '#FF0000'\n } else if (status === 'pending') {\n return '#ffc000'\n } else return '#00FF7F'\n}\n\nexport const getColorStatusBankAccountBadge = (status: string) => {\n if (status === 'approved') {\n return 'primary'\n } else if (status === 'rejected') {\n return 'danger'\n } else if (status === 'pending') {\n return 'warning'\n } else return 'secondary'\n}\n\nexport const getColorStatusKycText = (status: string) => {\n if (status === 'approved') {\n return '#00b050'\n } else if (status === 'rejected') {\n return '#FF0000'\n } else if (status === 'pending') {\n return '#ffc000'\n } else return '#00FF7F'\n}\n\nexport const getColorStatusKycBadge = (status: string) => {\n if (status === 'approved') {\n return 'primary'\n } else if (status === 'rejected') {\n return 'danger'\n } else if (status === 'pending') {\n return 'warning'\n }\n}\nexport const getColorStatusBankAccountText = (status?: BankAccountStatus) => {\n switch (status) {\n case BankAccountStatus.APPROVED:\n return '#00b050'\n case BankAccountStatus.REJECTED:\n return '#FF0000'\n case BankAccountStatus.PENDING:\n return '#ffc000'\n case BankAccountStatus.CANCELED:\n return '#002372'\n default:\n return 'transparent'\n }\n}\n\nexport const getTransactionTypeColor = (\n transactionType?: EnumTransactionType | EnumTransactionTypeCapitalize,\n) => {\n switch (transactionType) {\n case EnumTransactionType.BUY:\n case EnumTransactionTypeCapitalize.BUY:\n return '#00b050'\n case EnumTransactionType.SELL:\n case EnumTransactionTypeCapitalize.SELL:\n return '#FF0000'\n case EnumTransactionType.DCA:\n case EnumTransactionTypeCapitalize.DCA:\n return '#000000'\n case EnumTransactionType.DELIVERY:\n case EnumTransactionTypeCapitalize.DELIVERY:\n return '#005fa3'\n case EnumTransactionType.PICK_UP:\n case EnumTransactionTypeCapitalize.PICK_UP:\n return '#00b0f0'\n case EnumTransactionType.TRANSFER_IN:\n case EnumTransactionTypeCapitalize.TRANSFER_IN:\n return '#04ff00'\n case EnumTransactionType.TRANSFER_OUT:\n case EnumTransactionTypeCapitalize.TRANSFER_OUT:\n return '#ff0084'\n case EnumTransactionType.ONE_TIME_DELIVERY:\n case EnumTransactionTypeCapitalize.ONE_TIME_DELIVERY:\n return '#7B68EE'\n default:\n return '#FFFFFF'\n }\n}\nexport const getColorTransactionStatus = (status?: EnumTransactionStatus) => {\n switch (status) {\n case EnumTransactionStatus.FAIL:\n return '#ff0000'\n case EnumTransactionStatus.SUCCESS:\n return '#00b050'\n case EnumTransactionStatus.PENDING:\n return '#ffc000'\n case EnumTransactionStatus.AWAITING_TRANSFER:\n return '#d98602'\n case EnumTransactionStatus.AWAIT_SAFEGOLD_CONFIRM:\n return '#e6de0e'\n case EnumTransactionStatus.REFUND:\n return '#001b74'\n default:\n return '#1E90FF'\n }\n}\n\nexport const getColorUserStatus = (status: UserStatus) => {\n switch (status) {\n case UserStatus.BLOCKED:\n return '#ff0000'\n default:\n return '#00b050'\n }\n}\n\nexport const replaceUnderScoreAndCapitalize = (text: T) => {\n if (typeof text === 'string') {\n return (text || '')\n .split('_')\n .map(v => capitalize(v))\n .join(' ') as EnumTransactionTypeCapitalize\n }\n\n return text\n}\n\nexport const downloadFile = async (res: AxiosResponse) => {\n const filename = res.headers['content-disposition'].split('filename=')[1].replace(/\"/g, '')\n downloadjs(res.data, decodeURIComponent(filename))\n}\n\nexport const customAddressLabel = (address?: Address): string => {\n const {\n province = '',\n district = '',\n subDistrict = '',\n detail = '',\n zipCode = '',\n houseNo = '',\n } = address || {}\n return province ? [houseNo, detail, subDistrict, district, province, zipCode].join(' ') : '-'\n}\n\nexport const isDevelopment = process.env.NODE_ENV === 'development'\n\nexport const validateEmail = (email: string) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return re.test(String(email).toLowerCase())\n}\n\nexport const normalizeNumberWith4Digit = (value: any) => {\n if (!value) return value\n value = value.toString()\n\n // const regex = /^-?\\d+(?:\\.\\d+)?$/gm\n let onlyNumber = value.replace(/[^\\d.-]/g, '')\n if (onlyNumber.includes('..')) {\n onlyNumber = onlyNumber.replace('..', '.')\n }\n if (onlyNumber.includes('--')) {\n onlyNumber = onlyNumber.replace('--', '-')\n }\n if (onlyNumber.includes('-.')) {\n onlyNumber = onlyNumber.replace('-.', '-0.')\n }\n if (onlyNumber.includes('.-')) {\n onlyNumber = onlyNumber.replace('.-', '.')\n }\n if (onlyNumber.length > 1 && onlyNumber.slice(-1) === '-') {\n onlyNumber = onlyNumber.slice(0, -1) // remove last char\n }\n\n const temp = onlyNumber.slice(0, -1).indexOf('.')\n if (temp !== -1 && onlyNumber.slice(-1) === '.') {\n onlyNumber = onlyNumber.slice(0, -1) // remove last char\n }\n const indexOfDot = onlyNumber.indexOf('.')\n let result = ''\n if (indexOfDot !== -1) {\n if (indexOfDot === 10) {\n result = onlyNumber.substring(0, 14)\n } else if (onlyNumber.length < 14) {\n result =\n onlyNumber.substring(0, indexOfDot) + onlyNumber.substring(indexOfDot, indexOfDot + 5)\n } else {\n result = onlyNumber.substring(0, 10) + onlyNumber.substring(indexOfDot, indexOfDot + 5)\n }\n } else {\n if (onlyNumber.length >= 10) {\n result = onlyNumber.substring(0, 10)\n } else {\n result = onlyNumber\n }\n }\n\n let v = ''\n if (result !== '-') {\n v =\n indexOfDot !== -1\n ? Number(result.substring(0, result.indexOf('.'))).toLocaleString() +\n result.substring(result.indexOf('.'), result.length)\n : Number(result).toLocaleString()\n } else {\n v = result\n }\n return v\n}\n\nexport const formatMobile = /^(^[0-9]{10}$)|(^\\+[0-9]{2}\\s+[0-9]{2}[0-9]{8}$)|(^[0-9]{3}-[0-9]{4}-[0-9]{4}$)/\n\nexport const formatTmnId = /^tmn\\.[0-9]{11}$/\n\nexport const formatThaiId = (thaiId: string): boolean => {\n const m = thaiId.match(/(\\d{12})(\\d)/)\n if (!m) {\n return false\n // console.warn('Bad input from user, invalid thaiId=', thaiId)\n // throw new Error('thai-id-must-be-13-digits')\n }\n const digits = m[1].split('')\n const sum = digits.reduce((total: number, digit: string, i: number) => {\n return total + (13 - i) * +digit\n }, 0)\n const lastDigit = `${(11 - (sum % 11)) % 10}`\n const inputLastDigit = m[2]\n if (lastDigit !== inputLastDigit) {\n return false\n // console.warn('Bad input from user, invalid checksum thaiId=', thaiId)\n // throw new Error('thai-id-checksum-mismatched')\n }\n return true\n}\n\nexport const composeValidators = (...validators: any[]) => (value: any) =>\n validators.reduce((error, validator) => error || validator(value), undefined)\n","import { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios'\nimport qs from 'qs'\n\nexport enum ContentType {\n XFORM = 'application/x-www-form-urlencoded',\n JSON = 'application/json',\n FORMDATA = 'multipart/form-data',\n}\n\nconst customClientWithData = (\n url: string,\n method: AxiosInstance['put'] | AxiosInstance['post'] | AxiosInstance['patch'],\n data: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n) => {\n const { contentType = ContentType.JSON, ...restOption } = option || {}\n return method(url, data, {\n headers: {\n 'Content-Type': contentType,\n },\n ...restOption,\n })\n}\n\nconst customClient = (\n url: string,\n method: AxiosInstance['delete'] | AxiosInstance['get'],\n params: any,\n option?: AxiosRequestConfig & { contentType?: ContentType },\n) => {\n const { contentType = ContentType.JSON, ...restOption } = option || {}\n return method(url, {\n params,\n headers: {\n 'Content-Type': contentType,\n },\n ...restOption,\n })\n}\n\nexport type ResponseData = Promise>\n\nexport const createMethod = (\n client: AxiosInstance,\n apiWraper: (method: Promise) => Promise,\n) => ({\n get: (\n url: string,\n params?: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n ): ResponseData => apiWraper(customClient(url, client.get, params, option)),\n put: (\n url: string,\n data?: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n ): ResponseData => apiWraper(customClientWithData(url, client.put, data, option)),\n post: (\n url: string,\n data?: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n ): ResponseData => apiWraper(customClientWithData(url, client.post, data, option)),\n patch: (\n url: string,\n data?: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n ): ResponseData => apiWraper(customClientWithData(url, client.patch, data, option)),\n delete: (\n url: string,\n params?: any,\n option?: AxiosRequestConfig & { contentType: ContentType },\n ): ResponseData => apiWraper(customClient(url, client.delete, params, option)),\n getFile: (url: string, params?: any, option?: AxiosRequestConfig): Promise> =>\n apiWraper(customClient(url, client.get, params, { responseType: 'blob', ...option })),\n})\n\nexport const customRequestData = (request: any) => {\n if (request.headers['Content-Type'] === ContentType.FORMDATA) {\n if (request.data) {\n const formData = new FormData()\n Object.entries(request.data).forEach(([key, value]: any[]) => {\n formData.append(key, value)\n })\n request.data = formData\n }\n } else if (request.headers['Content-Type'] === ContentType.XFORM) {\n if (request.data) {\n request.data = qs.stringify(request.data)\n }\n } else if (request.headers['Content-Type'] === ContentType.JSON) {\n }\n}\n\nexport const deepLoop = (data: any, func: (data: any) => any): any => {\n if (data instanceof File) {\n return func(data)\n }\n if (data instanceof Array) {\n return data.map(d => deepLoop(d, func))\n }\n if (data instanceof Object) {\n const formatData: any = {}\n Object.keys(data).forEach(key => {\n formatData[key] = deepLoop(data[key], func)\n })\n return formatData\n }\n return func(data)\n}\n","const windowEnv = (window as any)?._env_ || {}\n\nconst parseBoolean = (e?: string | boolean) => e === true || e === 'true'\nconst parseString = (e?: string) => e || ''\n\nexport const appConfig = {\n API_HOST: parseString(windowEnv.apiHost),\n APP_NAME: parseString(windowEnv.appName),\n ENABLE_FEATURE_ARTICLE: parseBoolean(windowEnv.enableFeatureArticle),\n ENABLE_FEATURE_APPROVE_KYC: parseBoolean(windowEnv.enableFeatureApproveKyc),\n ENABLE_FEATURE_SELL_MANUAL: parseBoolean(windowEnv.enableFeatureSellManual),\n ENABLE_FEATURE_TRUE_MONEY: parseBoolean(windowEnv.enableFeatureTrueMoney),\n ENABLE_FEATURE_GIVEAWAY: parseBoolean(windowEnv.enableFeatureGiveaway),\n ENABLE_FEATURE_SELL_TO_BANK: parseBoolean(windowEnv.enableFeatureSellToBank),\n ENABLE_FEATURE_SELL_TO_TMN: parseBoolean(windowEnv.enableFeatureSellToTMN),\n}\n","import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport dayjs from 'dayjs'\nimport humps from 'humps'\nimport { clearToken, getToken, getUserId } from '../helper'\nimport { customRequestData, deepLoop } from './tools'\nimport { appConfig } from '../../app/constants/app-config'\nimport { compact, join, set } from 'lodash'\n\nconst createClient = (apiVersion?: string) => {\n const ax = axios.create({\n baseURL: join(compact([appConfig.API_HOST, apiVersion]), '/'),\n })\n\n ax.interceptors.request.use((request: AxiosRequestConfig) => {\n const token = getToken()\n if (token) {\n set(request, 'headers.authorization', `Bearer ${token}`)\n }\n\n const userId = getUserId()\n if (userId) {\n set(request, 'headers.x-user-id', userId)\n }\n\n if (process.env.REACT_APP_VERSION) {\n set(request, 'headers.x-app-version', process.env.REACT_APP_VERSION)\n }\n if (process.env.REACT_APP_BUILD_VERSION) {\n set(request, 'headers.x-app-build-version', process.env.REACT_APP_BUILD_VERSION)\n }\n\n if (request.params) {\n request.params = deepLoop(request.params, modifyRequestData)\n }\n if (request.data) {\n request.data = deepLoop(request.data, modifyRequestData)\n // request.data = humps.decamelizeKeys(request.data)\n customRequestData(request)\n }\n return request\n })\n ax.interceptors.response.use(\n (response: AxiosResponse) => {\n if (response.headers['content-type'].includes('application/json')) {\n response.data = humps.camelizeKeys(response.data)\n // deepLoop(response.data, data => {\n // return data\n // })\n }\n // response.data = { data: response.data }\n return response\n },\n (error: AxiosError) => {\n if (error.response?.status === 401) {\n clearToken()\n window.location.reload()\n }\n return Promise.reject(error)\n },\n )\n return ax\n}\n\nconst modifyRequestData = (data: any) => {\n if (data) {\n if (dayjs.isDayjs(data)) {\n return data.format()\n }\n }\n return data\n}\n\nexport const savvyGoldClient = createClient('v1')\n\nexport const savvyGoldApiWraper = async (method: Promise) => {\n try {\n const res = await method\n return Promise.resolve(res)\n } catch (e) {\n const { response, message } = e as any\n let { data } = response || {}\n if (data instanceof Blob) {\n const responseFromBlob = await data.text()\n data = JSON.parse(responseFromBlob || '')\n }\n const { message: message2, errorCode } = data || {}\n return Promise.reject(errorCode || message2 || message || e)\n }\n}\n","import { savvyGoldClient, savvyGoldApiWraper } from './savvy-gold-client'\nimport { createMethod } from './tools'\n\nexport const api = {\n savvyGold: createMethod(savvyGoldClient, savvyGoldApiWraper),\n}\n","import { QueryOptions, useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { clearToken, getToken } from '../../../utils/helper'\nimport {\n UpdateUserProfileParams,\n Image,\n UpdateRoleUser,\n User,\n UserList,\n ChangeTmnIdParams,\n SearchUserParams,\n} from '../../services/user/user-typed'\n\nexport const USERS_URL = `internal/users`\nexport const CURRENT_USER_URL = `${USERS_URL}/current-user`\nexport const IMAGE_URL = `images`\nexport const UPDATE_PROFILE = `update-profile`\nexport const CHANGE_TMN_ID = 'change-tmn-id'\n\nexport const useGetUsers = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [USERS_URL, params],\n async () => {\n const datas = await api.savvyGold.get(USERS_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n\n return datas.data.data\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetUser = (userId: string) => {\n return useQuery(\n [USERS_URL, userId],\n async () => {\n const data = await api.savvyGold.get(`${USERS_URL}/${userId}`)\n return data.data.data\n },\n {\n enabled: !!userId,\n },\n )\n}\n\nexport const useGetSearchUser = (params: SearchUserParams) => {\n return useQuery(\n [USERS_URL, params],\n async () => {\n const data = await api.savvyGold.get(`${USERS_URL}/search-by-port`, {\n page: params?.page,\n limit: params.limit,\n q: params?.q,\n })\n return data.data.data\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetImageUser = (id: string, size: string) => {\n return useQuery(\n [IMAGE_URL, id],\n async () => {\n const datas = await api.savvyGold.get(`${IMAGE_URL}/${id}`, {\n size: size,\n })\n\n return datas.data.data\n },\n {\n enabled: !!id,\n },\n )\n}\n\nexport const useCurrentUser = (options?: QueryOptions) => {\n return useQuery(\n [USERS_URL, CURRENT_USER_URL],\n async () => {\n if (getToken()) {\n const response = await api.savvyGold.get(CURRENT_USER_URL)\n return response.data.data\n }\n },\n {\n cacheTime: Infinity,\n staleTime: Infinity,\n onError: () => {\n clearToken()\n },\n ...options,\n },\n )\n}\nexport const useUpdateRoleUser = () => {\n const queryClient = useQueryClient()\n\n return useMutation(\n async (params: UpdateRoleUser) => {\n const { role, userId } = params\n const { data } = await api.savvyGold.put(`${USERS_URL}/${userId}/update-role`, { role })\n return data\n },\n {\n onSuccess: () => {\n queryClient.refetchQueries([USERS_URL])\n },\n },\n )\n}\n\nexport const useUpdateUserProfile = (userId: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n async params => {\n const { mobileNo, email } = params\n const { data } = await api.savvyGold.patch(`${USERS_URL}/${userId}/${UPDATE_PROFILE}`, {\n mobileNo,\n email,\n })\n return data\n },\n {\n onSuccess: () => {\n queryClient.refetchQueries([USERS_URL])\n },\n },\n )\n}\n\nexport const useChangeTmnId = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async params => {\n const { data } = await api.savvyGold.put(`${USERS_URL}/${CHANGE_TMN_ID}`, {\n ...params,\n })\n return data\n },\n {\n onSuccess: () => {\n queryClient.refetchQueries([USERS_URL])\n },\n },\n )\n}\n","import { useMutation, useQueryClient } from 'react-query'\n\nimport { api } from '../../../utils/api'\nimport { clearToken, setToken, setUserId } from '../../../utils/helper'\nimport { LoginFormValue } from '../../pages/auth/Login'\nimport { LoginType, VerifyEmail } from './auth-type'\nimport { USERS_URL, CURRENT_USER_URL } from '../user/user-query'\nimport { PasswordFormValue } from '../../pages/auth/shared/PasswordForm'\n\nconst AUTH_URL = 'internal/auth'\nconst LOGIN_URL = `${AUTH_URL}/email`\n\nconst VERIFY_EMAIL_URL = `${AUTH_URL}/verify-email`\n// const REGISTER_URL = `${AUTH_URL}/register`\nconst UPDATE_PASSWORD_URL = `${AUTH_URL}/update-password`\n\nexport const useLogin = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: LoginFormValue) => {\n const res = await api.savvyGold.post(LOGIN_URL, params)\n return res.data.data\n },\n {\n onSuccess: param => {\n setUserId(param.user.id)\n setToken(param.accessToken)\n queryClient.setQueryData([USERS_URL, CURRENT_USER_URL], param.user)\n },\n onError: () => {},\n },\n )\n}\n\nexport const useLogout = () => {\n const queryClient = useQueryClient()\n return useMutation(\n () => {\n return Promise.resolve('logout')\n },\n {\n onSuccess: () => {\n clearToken()\n queryClient.resetQueries()\n },\n },\n )\n}\n\nexport const useVerifyEmail = () => {\n return useMutation>(\n async params => {\n const response = await api.savvyGold.post(VERIFY_EMAIL_URL, params)\n return response.data.data\n },\n {\n onError: () => {},\n },\n )\n}\n\n// export const useRegister = () => {\n// return useMutation, 'confirmPassword'>>(\n// params => {\n// return api.savvyGold.post(REGISTER_URL, params)\n// },\n// {\n// onError: () => {},\n// },\n// )\n// }\n\nexport const useUpdatePassword = () => {\n return useMutation>(\n params => {\n return api.savvyGold.patch(UPDATE_PASSWORD_URL, params)\n },\n {\n onError: () => {},\n },\n )\n}\n","/* eslint-disable no-restricted-imports */\r\n/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid */\r\nimport React, { useCallback, useMemo } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport Dropdown from 'react-bootstrap/Dropdown'\r\nimport { useSelector } from 'react-redux'\r\nimport objectPath from 'object-path'\r\nimport { useHtmlClassService } from '../../../_core/MetronicLayout'\r\nimport { toAbsoluteUrl } from '../../../../_helpers'\r\nimport { DropdownItemToggler } from '../../../../_partials/dropdowns'\r\nimport { useLogout } from '../../../../../app/services/auth/auth-query'\r\n\r\nexport function UserProfileDropdown() {\r\n const { user } = useSelector(state => state.auth)\r\n\r\n const uiService = useHtmlClassService()\r\n const layoutProps = useMemo(() => {\r\n return {\r\n light: objectPath.get(uiService.config, 'extras.user.dropdown.style') === 'light',\r\n }\r\n }, [uiService])\r\n\r\n const { mutate: logout } = useLogout()\r\n const onLogoutClick = useCallback(() => {\r\n logout()\r\n }, [logout])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Hi,\r\n \r\n \r\n {user.fullname}\r\n \r\n \r\n \r\n {user.fullname[0]}\r\n \r\n \r\n \r\n \r\n \r\n <>\r\n {/** ClassName should be 'dropdown-menu p-0 m-0 dropdown-menu-right dropdown-menu-anim dropdown-menu-top-unround dropdown-menu-xl' */}\r\n {layoutProps.light && (\r\n <>\r\n
\r\n
\r\n \"\"\r\n
\r\n
Sean Stone
\r\n \r\n 3 messages\r\n \r\n
\r\n
\r\n \r\n )}\r\n\r\n {!layoutProps.light && (\r\n \r\n
\r\n S\r\n {/*\"Pic\"*/}\r\n
\r\n
Sean Stone
\r\n \r\n 3 messages\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n
\r\n
\r\n )\r\n}\r\n","/* eslint-disable no-restricted-imports */\r\n/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo } from \"react\";\r\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\n// import { useSelector } from \"react-redux\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport objectPath from \"object-path\";\r\nimport { toAbsoluteUrl } from \"../../../_helpers\";\r\nimport { useHtmlClassService } from \"../../_core/MetronicLayout\";\r\nimport { UserProfileDropdown } from \"./dropdowns/UserProfileDropdown\";\r\n\r\nexport function QuickUserToggler() {\r\n // const { user } = useSelector((state) => state.auth);\r\n const uiService = useHtmlClassService();\r\n const layoutProps = useMemo(() => {\r\n return {\r\n offcanvas:\r\n objectPath.get(uiService.config, \"extras.user.layout\") === \"offcanvas\",\r\n };\r\n }, [uiService]);\r\n\r\n return (\r\n <>\r\n {layoutProps.offcanvas && (\r\n User Profile}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {!layoutProps.offcanvas && }\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { toAbsoluteUrl } from \"../../../_helpers\";\r\n\r\nexport function Brand() {\r\n return (\r\n <>\r\n {/* begin::Brand */}\r\n \r\n {/* begin::Logo */}\r\n \r\n \r\n \r\n {/* end::Logo */}\r\n \r\n {/* end::Brand */}\r\n \r\n );\r\n}\r\n","import React from \"react\";\nimport { NavLink, useLocation } from \"react-router-dom\";\nimport SVG from \"react-inlinesvg\";\nimport { toAbsoluteUrl, checkIsActive } from \"../../../../_helpers\";\n\ntype SubMenuProps = {\n title: string;\n to: string;\n};\n\nexport default (props: SubMenuProps) => {\n const { title, to } = props;\n const location = useLocation();\n const getMenuItemActive = (url: string, hasSubmenu = false) => {\n return checkIsActive(location, url)\n ? ` ${!hasSubmenu && \"menu-item-active\"} menu-item-open `\n : \"\";\n };\n return (\n \n \n \n \n \n {title}\n \n \n );\n};\n","import qs from 'querystring'\n\ntype ParamType = { [p: string]: any } | undefined\ntype Option = {\n routeParam?: T\n queryParam?: V\n}\n\nconst generate = (\n url: string,\n) => (option?: Option) => {\n const { routeParam, queryParam } = option || {}\n let newQueryParam = ''\n if (queryParam) {\n newQueryParam = `?${qs.stringify(queryParam)}`\n }\n\n let newUrl = url\n if (routeParam) {\n const urls = url.split('/')\n newUrl = urls\n .map(u => {\n if (/:.+/.test(u)) {\n return routeParam[u.slice(1)]\n }\n return u\n })\n .join('/')\n }\n\n return `${newUrl}${newQueryParam}`\n}\n\nexport const login = generate(`/auth/login`)\nexport const portDetail = generate<{ portId: string }>(`/ports/:portId`)\nexport const ports = generate<{ q?: string; page?: string }>('/ports')\nexport const userProfile = generate<{ userId: string }>(`users/:userId`)\nexport const users = generate<{ q?: string; page?: string }>('/users')\nexport const transactionDetail = generate<{ transactionId: string }>(`/transactions/:transactionId`)\nexport const transactions = generate<{ q?: string; page?: string }>('/transactions')\nexport const kycDetail = generate<{ kycId: string }>(`/ekycs/:kycId`)\nexport const kycs = generate<{ q?: string; page?: string }>('/ekycs')\n\nexport const notification = generate('/notification')\nexport const notificationDetail = generate(`${notification()}/:notificationId`)\nexport const notificationCreate = generate(`${notification()}/news`)\nexport const bankAccountDetail = generate<{ bankAccountId: string }>(\n `/bank_accounts/:bankAccountId`,\n)\nexport const bankAccounts = generate<{ q?: string; page?: string }>('/bank_accounts')\nexport const article = generate(`/article`)\nexport const createArticle = generate(`${article()}/create`)\nexport const articleDetail = generate(`${article()}/detail/:id`)\n\nexport const banner = generate(`/banner`)\nexport const bannerCreate = generate(`${banner()}/create`)\nexport const bannerDetail = generate(`${banner()}/detail/:id`)\n\nexport const setting = generate(`/setting`)\n\nexport const rewards = generate<{ q?: string; page?: string }>(`/rewards`)\nexport const rewardDetail = generate<{ giveawayId: string }>(`${rewards()}/:giveawayId`)\n\nexport const campaign = generate<{ q?: string; page?: string }>(`/campaign`)\nexport const createCampaign = generate(`${campaign()}/create`)\nexport const campaignDetail = generate(`${campaign()}/detail/:id`)\n","import React, { PropsWithChildren } from 'react'\nimport { useCurrentUser } from '../services/user/user-query'\nimport { ROLE } from '../services/user/user-typed'\n\ninterface IAuthorizeProps {\n role: ROLE\n}\nconst roleLevels: ROLE[] = [ROLE.USER, ROLE.VIEWER, ROLE.MANAGER, ROLE.ADMIN, ROLE.SUPER_ADMIN]\nexport const validateCorrectRole = (role: ROLE, userRole?: ROLE) => {\n if (!role) return true\n if (!userRole) return false\n const targetRoleIndex = roleLevels.indexOf(role)\n const userRoleIndex = roleLevels.indexOf(userRole)\n return userRoleIndex >= targetRoleIndex\n}\n\nexport const Authorize = (props: PropsWithChildren) => {\n const { data: currentUser } = useCurrentUser()\n console.log(currentUser)\n console.log('sss', validateCorrectRole(props.role, currentUser?.role))\n if (validateCorrectRole(props.role, currentUser?.role)) {\n return <>{props.children}\n }\n return <>\n}\n","import React, { useMemo } from 'react'\r\nimport { useHtmlClassService } from '../../../_core/MetronicLayout'\r\nimport SubMenu from './SubMenu'\r\nimport * as paths from '../../../../../app/constants/path'\r\nimport { appConfig } from '../../../../../app/constants/app-config'\r\nimport { ROLE } from '../../../../../app/services/user/user-typed'\r\nimport { Authorize } from '../../../../../app/components/Authorize'\r\ntype OfficerMenuProp = {\r\n isActive: boolean\r\n}\r\n\r\nexport function OfficerMenu({ isActive }: OfficerMenuProp) {\r\n const uiService = useHtmlClassService()\r\n const layoutProps = useMemo(() => {\r\n return {\r\n layoutConfig: uiService.config,\r\n asideMenuAttr: uiService.getAttributes('aside_menu'),\r\n ulClasses: uiService.getClasses('aside_menu_nav', true),\r\n asideClassesFromConfig: uiService.getClasses('aside_menu', true),\r\n }\r\n }, [uiService])\r\n\r\n return (\r\n
\r\n
\r\n {/* begin::Menu Container */}\r\n \r\n {/* begin::Menu Nav */}\r\n
    \r\n {/*begin::1 Level*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {appConfig.ENABLE_FEATURE_ARTICLE && appConfig.ENABLE_FEATURE_TRUE_MONEY && (\r\n \r\n )}\r\n {appConfig.ENABLE_FEATURE_TRUE_MONEY && appConfig.ENABLE_FEATURE_GIVEAWAY && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/*end::1 Level*/}\r\n
\r\n\r\n {/* end::Menu Nav */}\r\n
\r\n {/* end::Menu Container */}\r\n
\r\n \r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap'\r\nimport SVG from 'react-inlinesvg'\r\nimport { toAbsoluteUrl } from '../../../_helpers'\r\nimport { NavLink } from 'react-router-dom'\r\nimport * as path from '../../../../app/constants/path'\r\n\r\nexport function QuickSettingToggler() {\r\n return (\r\n \r\n Setting}\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","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo, useState } from 'react'\r\nimport objectPath from 'object-path'\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap'\r\nimport SVG from 'react-inlinesvg'\r\nimport { useHtmlClassService } from '../../_core/MetronicLayout'\r\nimport { toAbsoluteUrl } from '../../../_helpers'\r\nimport { AsideMenu } from './aside-menu/AsideMenu'\r\nimport { LanguageSelectorDropdown } from '../extras/dropdowns/LanguageSelectorDropdown'\r\nimport { QuickUserToggler } from '../extras/QuickUserToggler'\r\nimport { Brand } from '../brand/Brand'\r\nimport { KTUtil } from './../../../_assets/js/components/util'\r\nimport { OfficerMenu } from './aside-menu/OfficerMenu'\r\nimport { QuickSettingToggler } from '../extras/QuickSettingToggler'\r\nimport { Authorize } from '../../../../app/components/Authorize'\r\nimport { ROLE } from '../../../../app/services/user/user-typed'\r\n\r\nexport function Aside() {\r\n const uiService = useHtmlClassService()\r\n\r\n const layoutProps = useMemo(() => {\r\n return {\r\n asideClassesFromConfig: uiService.getClasses('aside', true),\r\n asideSecondaryDisplay: objectPath.get(uiService.config, 'aside.secondary.display'),\r\n asideSelfMinimizeToggle: objectPath.get(uiService.config, 'aside.self.minimize.toggle'),\r\n extrasSearchDisplay: objectPath.get(uiService.config, 'extras.search.display'),\r\n extrasNotificationsDisplay: objectPath.get(uiService.config, 'extras.notifications.display'),\r\n extrasQuickActionsDisplay: objectPath.get(uiService.config, 'extras.quick-actions.display'),\r\n extrasQuickPanelDisplay: objectPath.get(uiService.config, 'extras.quick-panel.display'),\r\n extrasLanguagesDisplay: objectPath.get(uiService.config, 'extras.languages.display'),\r\n extrasUserDisplay: objectPath.get(uiService.config, 'extras.user.display'),\r\n }\r\n }, [uiService])\r\n\r\n const tabs = {\r\n officer: 'kt_asidet_tab_1',\r\n tabId2: 'kt_asidet_tab_2',\r\n }\r\n const [activeTab, setActiveTab] = useState(tabs.officer)\r\n const handleTabChange = (id: string) => {\r\n setActiveTab(id)\r\n const asideWorkspace = KTUtil.find(\r\n document.getElementById('kt_aside'),\r\n '.aside-secondary .aside-workspace',\r\n )\r\n if (asideWorkspace) {\r\n KTUtil.scrollUpdate(asideWorkspace)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {/* begin::Aside */}\r\n \r\n {/* begin::Primary */}\r\n
\r\n \r\n {/* begin::Nav Wrapper */}\r\n
\r\n {/* begin::Nav */}\r\n
    \r\n {/* begin::Item */}\r\n \r\n Officer}>\r\n handleTabChange(tabs.officer)}\r\n role=\"tab\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* end::Item */}\r\n {/* begin::Item */}\r\n {/* \r\n Metronic Features\r\n }\r\n >\r\n handleTabChange(tabs.tabId2)}\r\n role=\"tab\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n */}\r\n {/* end::Item */}\r\n
\r\n {/* end::Nav */}\r\n
\r\n {/* end::Nav Wrapper */}\r\n\r\n {/* begin::Footer */}\r\n
\r\n {/* begin::Aside Toggle */}\r\n {layoutProps.asideSecondaryDisplay && layoutProps.asideSelfMinimizeToggle && (\r\n <>\r\n Toggle Aside}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {/* end::Aside Toggle */}\r\n\r\n {/* begin::Search */}\r\n {layoutProps.extrasSearchDisplay && (\r\n Quick Search}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {/* end::Search */}\r\n\r\n {/* begin::Notifications */}\r\n {layoutProps.extrasNotificationsDisplay && (\r\n Notifications}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {/* end::Notifications */}\r\n\r\n {/* begin::Quick Actions */}\r\n {/* {layoutProps.extrasQuickActionsDisplay && (\r\n Quick Actions}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )} */}\r\n {/* end::Quick Actions */}\r\n\r\n {/* begin::Quick Panel */}\r\n {/* {layoutProps.extrasQuickPanelDisplay && (\r\n Quick Panel}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n 3\r\n \r\n \r\n \r\n )} */}\r\n {/* end::Quick Panel */}\r\n\r\n {/* begin::Languages*/}\r\n {layoutProps.extrasLanguagesDisplay && }\r\n {/* end::Languages */}\r\n\r\n {/* Setting*/}\r\n \r\n \r\n \r\n\r\n {/* begin::User*/}\r\n {layoutProps.extrasUserDisplay && }\r\n {/* end::User */}\r\n
\r\n {/* end::Footer */}\r\n
\r\n {/* end::Primary */}\r\n\r\n {layoutProps.asideSecondaryDisplay && (\r\n <>\r\n {/* begin::Secondary */}\r\n
\r\n {/* begin::Workspace */}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {/* end::Workspace */}\r\n
\r\n {/* end::Secondary */}\r\n \r\n )}\r\n \r\n {/* end::Aside */}\r\n \r\n )\r\n}\r\n","import { get } from 'lodash'\nimport React from 'react'\nimport { appConfig } from './constants/app-config'\nimport { Helmet } from 'react-helmet'\n\ninterface IAppMeta {\n title: string\n mediaDir: string\n}\nenum EnumAppName {\n SAVVY_GOLD = 'savvy-gold',\n SAVVY_TMN = 'savvy-tmn',\n}\n\nconst appMetaConfig: Record = {\n [EnumAppName.SAVVY_GOLD]: {\n title: 'Savvy Gold Admin',\n mediaDir: 'savvy-gold',\n },\n [EnumAppName.SAVVY_TMN]: {\n title: 'Safegold Admin',\n mediaDir: 'savvy-tmn',\n },\n}\n\nexport const appMeta = get, string, IAppMeta>(\n appMetaConfig,\n appConfig.APP_NAME,\n appMetaConfig[EnumAppName.SAVVY_GOLD],\n)\n\nexport const AppHelmet = () => {\n return (\n \n {appMeta.title}\n \n \n )\n}\n","import React, { useMemo } from 'react'\r\nimport objectPath from 'object-path'\r\nimport { useHtmlClassService } from '../../_core/MetronicLayout'\r\nimport { appMeta } from '../../../../app/AppHelmet'\r\n\r\nexport function Footer() {\r\n const currentYear = new Date().getFullYear()\r\n const uiService = useHtmlClassService()\r\n\r\n const layoutProps = useMemo(() => {\r\n return {\r\n footerLayout: objectPath.get(uiService.config, 'footer.layout'),\r\n footerClasses: uiService.getClasses('footer', true),\r\n footerContainerClasses: uiService.getClasses('footer_container', true),\r\n }\r\n }, [uiService])\r\n\r\n return (\r\n <>\r\n {/* begin::Footer */}\r\n {/* doc: add \"bg-white\" class to have footer with solod background color */}\r\n \r\n {/* begin::Container */}\r\n \r\n {/* begin::Copyright */}\r\n
\r\n \r\n {currentYear} © {appMeta.title}\r\n \r\n
\r\n {/* end::Copyright */}\r\n {` `}\r\n {/* begin::Nav */}\r\n {/*
\r\n \r\n About\r\n \r\n \r\n Team\r\n \r\n \r\n Contact\r\n \r\n
*/}\r\n {/* end::Nav */}\r\n \r\n {/* end::Container */}\r\n \r\n {/* end::Footer */}\r\n \r\n )\r\n}\r\n","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutAside = function() {\r\n // Private properties\r\n var _body;\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\tvar offcanvasClass = KTUtil.hasClass(_element, 'aside-offcanvas-default') ? 'aside-offcanvas-default' : 'aside';\r\n\r\n // Initialize mobile aside offcanvas\r\n\t\t_offcanvasObject = new KTOffcanvas(_element, {\r\n\t\t\tbaseClass: offcanvasClass,\r\n\t\t\toverlay: true,\r\n\t\t\tcloseBy: 'kt_aside_close_btn',\r\n\t\t\ttoggleBy: {\r\n\t\t\t\ttarget: 'kt_aside_mobile_toggle',\r\n\t\t\t\tstate: 'mobile-toggle-active'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n var _initNav = function() {\r\n var asideNav = KTUtil.find(_element, '.aside-primary .aside-nav');\r\n\r\n if (!asideNav) {\r\n return;\r\n }\r\n\r\n KTUtil.scrollInit(asideNav, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n var asideBrand = KTUtil.find(_element, '.aside-primary .aside-brand');\r\n var asideFooter = KTUtil.find(_element, '.aside-primary .aside-footer');\r\n\r\n height = height - (parseInt(KTUtil.css(asideBrand, 'height')));\r\n height = height - (parseInt(KTUtil.css(asideBrand, 'marginBottom')) + parseInt(KTUtil.css(asideBrand, 'marginTop')));\r\n\r\n height = height - (parseInt(KTUtil.css(asideFooter, 'height')));\r\n height = height - (parseInt(KTUtil.css(asideFooter, 'marginBottom')) + parseInt(KTUtil.css(asideFooter, 'marginTop')));\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n var _initWorkspace = function() {\r\n var asideTabs = KTUtil.find(_element, '.aside-primary .aside-nav .nav');\r\n var asideWorkspace = KTUtil.find(_element, '.aside-secondary .aside-workspace');\r\n\r\n if (!asideWorkspace) {\r\n return;\r\n }\r\n\r\n KTUtil.scrollInit(asideWorkspace, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n var asideSecondary = KTUtil.find(_element, '.aside-secondary');\r\n\r\n height = height - (parseInt(KTUtil.css(asideWorkspace, 'marginBottom')) + parseInt(KTUtil.css(asideWorkspace, 'marginTop')));\r\n height = height - (parseInt(KTUtil.css(asideSecondary, 'paddingBottom')) + parseInt(KTUtil.css(asideSecondary, 'paddingTop')));\r\n\r\n return height;\r\n }\r\n });\r\n\r\n if (asideTabs) {\r\n $(asideTabs).find('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n KTUtil.scrollUpdate(asideWorkspace);\r\n });\r\n }\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n _body = KTUtil.getBody();\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n _initNav();\r\n _initWorkspace();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getOffcanvas: function() {\r\n return _offcanvasObject;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutAside;\r\n}\r\n\nexport default KTLayoutAside;","/* eslint-disable */\n\"use strict\";\n\nimport KTMenu from \"./../../components/menu.js\";\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTLayoutAside from \"./aside.js\";\r\n\r\nvar KTLayoutAsideMenu = function() {\r\n // Private properties\r\n var _element;\r\n var _menuObject;\r\n\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\t_menuObject = new KTMenu(_element, {\r\n\t\t\t// Submenu setup\r\n\t\t\tsubmenu: {\r\n\t\t\t\tdesktop: 'accordion',\r\n\t\t\t\ttablet: 'accordion', // menu set to accordion in tablet mode\r\n\t\t\t\tmobile: 'accordion' // menu set to accordion in mobile mode\r\n\t\t\t},\r\n\r\n\t\t\t// Accordion setup\r\n\t\t\taccordion: {\r\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t // Close aside offcanvas panel before page reload On tablet and mobile\r\n _menuObject.on('linkClick', function(menu) {\r\n if (KTUtil.isBreakpointDown('lg')) { // Tablet and mobile mode\r\n KTLayoutAside.getOffcanvas().hide(); // Hide offcanvas after general link click\r\n }\r\n });\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize menu\r\n _init();\r\n\t\t},\r\n\r\n\t\tgetElement: function() {\r\n\t\t\treturn _element;\r\n\t\t},\r\n\r\n getMenu: function() {\r\n\t\t\treturn _menuObject;\r\n\t\t},\r\n\r\n pauseDropdownHover: function(time) {\r\n\t\t\tif (_menuObject) {\r\n\t\t\t\t_menuObject.pauseDropdownHover(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcloseMobileOffcanvas: function() {\r\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\r\n\t\t\t\t_menuObject.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutAsideMenu;\r\n}\r\n\nexport default KTLayoutAsideMenu;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutSubheader = function() {\r\n // Private properties\r\n var _element;\r\n\r\n // Private functions\r\n var _getHeight = function() {\r\n var height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n return height;\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'subheader-fixed');\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutSubheader;\r\n}\r\n\nexport default KTLayoutSubheader;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutFooter = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutFooter;\r\n}\r\n\nexport default KTLayoutFooter;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTLayoutSubheader from \"./subheader.js\";\nimport KTLayoutFooter from \"./footer.js\";\r\n\r\nvar KTLayoutContent = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height;\r\n\r\n\t\theight = KTUtil.getViewPort().height;\r\n\r\n if (_element) {\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n }\r\n\r\n height = height - KTLayoutSubheader.getHeight();\r\n height = height - KTLayoutFooter.getHeight();\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutContent;\r\n}\r\n\nexport default KTLayoutContent;","/* eslint-disable */\n\"use strict\";\n\nimport KTScrolltop from \"./../../components/scrolltop.js\";\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutScrolltop = function() {\r\n // Private properties\r\n var _element;\r\n var _object;\r\n\r\n // Private functions\r\n var _init = function() {\r\n _object = new KTScrolltop(_element, {\r\n offset: 300,\r\n speed: 600,\r\n });\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutScrolltop;\r\n}\r\n\nexport default KTLayoutScrolltop;","/* eslint-disable */\n\"use strict\";\n\nimport KTCard from \"./../../components/card.js\";\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTLayoutSubheader from \"./subheader.js\";\r\n\r\nvar KTLayoutStickyCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n var _object;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar offset = 300;\r\n\r\n\t\tif (typeof KTLayoutHeader !== 'undefined') {\r\n\t\t\toffset = KTLayoutHeader.getHeight();\r\n\t\t}\r\n\r\n _object = new KTCard(_element, {\r\n\t\t\tsticky: {\r\n\t\t\t\toffset: offset,\r\n\t\t\t\tzIndex: 90,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\ttop: function() {\r\n\t\t\t\t\t\tvar pos = 0;\r\n var body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (typeof KTLayoutSubheader !== 'undefined' && KTLayoutSubheader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutSubheader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixedForMobile()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeightForMobile();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpos = pos - 1; // remove header border width\r\n\r\n\t\t\t\t\t\treturn pos;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tleft: function(card) {\r\n\t\t\t\t\t\treturn KTUtil.offset(_element).left;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tright: function(card) {\r\n\t\t\t\t\t\tvar body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tvar cardWidth = parseInt(KTUtil.css(_element, 'width'));\r\n\t\t\t\t\t\tvar bodyWidth = parseInt(KTUtil.css(body, 'width'));\r\n\t\t\t\t\t\tvar cardOffsetLeft = KTUtil.offset(_element).left;\r\n\r\n\t\t\t\t\t\treturn bodyWidth - cardWidth - cardOffsetLeft;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_object.initSticky();\r\n\r\n\t\tKTUtil.addResizeHandler(function() {\r\n\t\t\t_object.updateSticky();\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tif (_object) {\r\n\t\t\t\t_object.updateSticky();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutStickyCard;\r\n}\r\n\nexport default KTLayoutStickyCard;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTLayoutContent from \"./content.js\";\r\n\r\nvar KTLayoutStretchedCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar scroll = KTUtil.find(_element, '.card-scroll');\r\n\t\tvar cardBody = KTUtil.find(_element, '.card-body');\r\n\t\tvar cardHeader = KTUtil.find(_element, '.card-header');\r\n\r\n\t\tvar height = KTLayoutContent.getHeight();\r\n\r\n\t\theight = height - parseInt(KTUtil.actualHeight(cardHeader));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'marginTop')) - parseInt(KTUtil.css(_element, 'marginBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'paddingTop')) - parseInt(KTUtil.css(cardBody, 'paddingBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'marginTop')) - parseInt(KTUtil.css(cardBody, 'marginBottom'));\r\n\r\n\t\theight = height - 3;\r\n\r\n\t\tKTUtil.css(scroll, 'height', height + 'px');\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\r\n // Re-calculate on window resize\r\n KTUtil.addResizeHandler(function() {\r\n\t\t\t\t_init();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\t_init();\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutStretchedCard;\r\n}\r\n\nexport default KTLayoutStretchedCard;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickPanel = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n var _notificationsElement;\r\n var _logsElement;\r\n var _settingsElement;\r\n\r\n // Private functions\r\n var _getContentHeight = function() {\r\n var height;\r\n\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n\r\n var _init = function() {\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_panel_close',\r\n toggleBy: 'kt_quick_panel_toggle'\r\n });\r\n }\r\n\r\n var _initNotifications = function() {\r\n KTUtil.scrollInit(_notificationsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _initLogs = function() {\r\n KTUtil.scrollInit(_logsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _initSettings = function() {\r\n KTUtil.scrollInit(_settingsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _updateScrollbars = function() {\r\n $(_element).find('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n KTUtil.scrollUpdate(_notificationsElement);\r\n KTUtil.scrollUpdate(_logsElement);\r\n KTUtil.scrollUpdate(_settingsElement);\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n _notificationsElement = KTUtil.getById('kt_quick_panel_notifications');\r\n _logsElement = KTUtil.getById('kt_quick_panel_logs');\r\n _settingsElement = KTUtil.getById('kt_quick_panel_settings');\r\n\r\n _init();\r\n _initNotifications();\r\n _initLogs();\r\n _initSettings();\r\n\r\n \r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickPanel;\r\n}\r\n\nexport default KTLayoutQuickPanel;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickUser = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_user_close',\r\n toggleBy: 'kt_quick_user_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickUser;\r\n}\r\n\nexport default KTLayoutQuickUser;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutHeaderMobile = function() {\r\n // Private properties\r\n var _element;\r\n var _object;\r\n\r\n // Get height\r\n var _getHeight = function() {\r\n var height;\r\n\r\n height = KTUtil.actualHeight(_element);\r\n\r\n return height;\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'header-mobile-fixed')\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getHeader: function() {\r\n return _object;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutHeaderMobile;\r\n}\r\n\nexport default KTLayoutHeaderMobile;","/* eslint-disable */\n\"use strict\";\n\nimport KTToggle from \"./../../components/toggle.js\";\nimport KTLayoutStickyCard from \"./sticky-card.js\";\nimport KTLayoutAsideMenu from \"./aside-menu.js\";\nimport { KTCookie } from \"./../../components/cookie.js\";\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutAsideToggle = function() {\r\n // Private properties\r\n var _body;\r\n var _element;\r\n var _toggleObject;\r\n\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\t_toggleObject = new KTToggle(_element, _body, {\r\n\t\t\ttargetState: 'aside-minimize',\r\n\t\t\ttoggleState: 'aside-toggle-active'\r\n\t\t});\r\n\r\n\t\t_toggleObject.on('toggle', function(toggle) {\r\n // Update sticky card\r\n if (typeof KTLayoutStickyCard !== 'undefined') {\r\n setTimeout(function() {\r\n KTLayoutStickyCard.update();\r\n }, 500);\r\n }\r\n\r\n // Pause header menu dropdowns\r\n if (typeof KTLayoutHeaderMenu !== 'undefined') {\r\n KTLayoutHeaderMenu.pauseDropdownHover(800);\r\n }\r\n\r\n // Pause aside menu dropdowns\r\n if (typeof KTLayoutAsideMenu !== 'undefined') {\r\n KTLayoutAsideMenu.pauseDropdownHover(800);\r\n }\r\n\r\n // Remember state in cookie\r\n\t\t\tKTCookie.setCookie('kt_aside_toggle_state', toggle.getState());\r\n\t\t\t// to set default minimized left aside use this cookie value in your\r\n\t\t\t// server side code and add \"kt-primary--minimize aside-minimize\" classes to\r\n\t\t\t// the body tag in order to initialize the minimized left aside mode during page loading.\r\n\t\t});\r\n\r\n\t\t_toggleObject.on('beforeToggle', function(toggle) {\r\n\t\t\t//if (KTUtil.hasClass(_body, 'aside-minimize') === false && KTUtil.hasClass(_body, 'aside-minimize-hover')) {\r\n\t\t\t//\tKTUtil.removeClass(_body, 'aside-minimize-hover');\r\n\t\t\t//}\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n _body = KTUtil.getBody();\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getToggle: function() {\r\n\t\t\treturn _toggleObject;\r\n\t\t},\r\n\r\n\t\tonToggle: function(handler) {\r\n\t\t\tif (typeof _toggleObject.element !== 'undefined') {\r\n\t\t\t\t_toggleObject.on('toggle', handler);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutAsideToggle;\r\n}\r\n\nexport default KTLayoutAsideToggle;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickSearch = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n var form = KTUtil.find(_element, '.quick-search-form');\r\n var results = KTUtil.find(_element, '.quick-search-wrapper');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_search_close',\r\n toggleBy: 'kt_quick_search_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(results, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n if (results) {\r\n height = height - parseInt(KTUtil.actualHeight(form));\r\n height = height - parseInt(KTUtil.css(form, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(form, 'marginBottom'));\r\n\r\n height = height - parseInt(KTUtil.css(results, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(results, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickSearch;\r\n}\r\n\nexport default KTLayoutQuickSearch;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickNotifications = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_notifications_close',\r\n toggleBy: 'kt_quick_notifications_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickNotifications;\r\n}\r\n\nexport default KTLayoutQuickNotifications;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./../../components/util.js\";\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickActions = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_actions_close',\r\n toggleBy: 'kt_quick_actions_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickActions;\r\n}\r\n\nexport default KTLayoutQuickActions;","import React, { useLayoutEffect } from \"react\";\r\nimport { KTUtil } from \"../../_assets/js/components/util\";\r\nimport KTLayoutAside from \"../../_assets/js/layout/base/aside\";\r\nimport KTLayoutAsideMenu from \"../../_assets/js/layout/base/aside-menu\";\r\nimport KTLayoutContent from \"../../_assets/js/layout/base/content\";\r\nimport KTLayoutFooter from \"../../_assets/js/layout/base/footer\";\r\nimport KTLayoutSubheader from \"../../_assets/js/layout/base/subheader\";\r\nimport KTLayoutScrolltop from \"../../_assets/js/layout/extended/scrolltop\";\r\nimport KTLayoutStickyCard from \"../../_assets/js/layout/base/sticky-card\";\r\nimport KTLayoutStretchedCard from \"../../_assets/js/layout/base/stretched-card\";\r\nimport KTLayoutQuickPanel from \"../../_assets/js/layout/extended/quick-panel\";\r\nimport KTLayoutQuickUser from \"../../_assets/js/layout/extended/quick-user\";\r\nimport KTLayoutHeaderMobile from \"../../_assets/js/layout/base/header-mobile\";\r\nimport KTLayoutAsideToggle from \"../../_assets/js/layout/base/aside-toggle\";\r\nimport KTLayoutQuickSearch from \"../../_assets/js/layout/extended/quick-search\";\r\nimport KTLayoutQuickNotifications from \"../../_assets/js/layout/extended/quick-notifications\";\r\nimport KTLayoutQuickActions from \"../../_assets/js/layout/extended/quick-actions\";\r\n\r\nexport function LayoutInit() {\r\n useLayoutEffect(() => {\r\n // Initialization\r\n KTUtil.ready(function() {\r\n ////////////////////////////////////////////////////\r\n // Layout Base Partials(mandatory for core layout)//\r\n ////////////////////////////////////////////////////\r\n\r\n // Init Mobile Header\r\n KTLayoutHeaderMobile.init(\"kt_header_mobile\");\r\n\r\n // Init Aside\r\n KTLayoutAside.init(\"kt_aside\");\r\n\r\n // Init Aside Toggle\r\n KTLayoutAsideToggle.init(\"kt_aside_toggle\");\r\n\r\n // Init Aside Menu\r\n KTLayoutAsideMenu.init(\"kt_aside_menu\");\r\n\r\n // Init Content\r\n KTLayoutContent.init(\"kt_content\");\r\n\r\n // Init Footer\r\n KTLayoutFooter.init(\"kt_footer\");\r\n\r\n //////////////////////////////////////////////\r\n // Layout Extended Partials(optional to use)//\r\n //////////////////////////////////////////////\r\n\r\n // Init subheader\r\n KTLayoutSubheader.init(\"kt_subheader\");\r\n\r\n // Init Scrolltop\r\n KTLayoutScrolltop.init(\"kt_scrolltop\");\r\n\r\n // Init Sticky Card\r\n KTLayoutStickyCard.init(\"kt_page_sticky_card\");\r\n\r\n // Init Stretched Card\r\n KTLayoutStretchedCard.init(\"kt_page_stretched_card\");\r\n\r\n // Init Quick Actions Offcanvas Panel\r\n KTLayoutQuickActions.init(\"kt_quick_actions\");\r\n\r\n // Init Quick Offcanvas Panel\r\n KTLayoutQuickPanel.init(\"kt_quick_panel\");\r\n\r\n // Init Quick User Panel\r\n KTLayoutQuickUser.init(\"kt_quick_user\");\r\n\r\n // Init Quick Search Panel\r\n KTLayoutQuickSearch.init(\"kt_quick_search\");\r\n\r\n // Init Quick Notifications Offcanvas Panel\r\n KTLayoutQuickNotifications.init(\"kt_quick_notifications\");\r\n });\r\n }, []);\r\n return <>;\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport * as path from '../../../../../app/constants/path'\r\n\r\nexport function BreadCrumbs({ items }) {\r\n if (!items || !items.length) {\r\n return ''\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Dashboard\r\n \r\n {items.map((item, index) => (\r\n
  • \r\n \r\n {item.title}\r\n \r\n
  • \r\n ))}\r\n
\r\n )\r\n}\r\n","import React, {createContext, useState, useContext} from \"react\";\r\n\r\nexport function getBreadcrumbsAndTitle(menuId, pathName) {\r\n const result = {\r\n breadcrumbs: [],\r\n title: \"\"\r\n };\r\n const menu = document.getElementById(menuId);\r\n if (!menu) {\r\n return result;\r\n }\r\n\r\n const activeLinksArray = Array.from(menu.getElementsByClassName(\"active\") || []);\r\n const activeLinks = activeLinksArray.filter(el => el.tagName === \"A\");\r\n if (!activeLinks) {\r\n return result;\r\n }\r\n\r\n activeLinks.forEach(link => {\r\n const titleSpans = link.getElementsByClassName(\"menu-text\");\r\n\r\n if (titleSpans) {\r\n const titleSpan = Array.from(titleSpans).find(t => t.innerHTML && t.innerHTML.trim().length > 0);\r\n if (titleSpan) {\r\n result.breadcrumbs.push(\r\n {\r\n pathname: link.pathname,\r\n title: titleSpan.innerHTML\r\n }\r\n );\r\n }\r\n }\r\n });\r\n result.title = getTitle(result.breadcrumbs, pathName);\r\n return result;\r\n}\r\n\r\nexport function getTitle(breadCrumbs, pathname) {\r\n if (!breadCrumbs || !pathname) {\r\n return \"\";\r\n }\r\n\r\n const length = breadCrumbs.length;\r\n if (!length) {\r\n return \"\";\r\n }\r\n\r\n return breadCrumbs[length - 1].title;\r\n}\r\n\r\nconst SubheaderContext = createContext();\r\n\r\nexport function useSubheader() {\r\n return useContext(SubheaderContext);\r\n}\r\n\r\nexport const SubheaderConsumer = SubheaderContext.Consumer;\r\n\r\nexport function MetronicSubheaderProvider({ children }) {\r\n const [title, setTitle] = useState(\"\");\r\n const [breadcrumbs, setBreadcrumbs] = useState([]);\r\n const value = { title, setTitle, breadcrumbs, setBreadcrumbs };\r\n return {children};\r\n}\r\n","/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo, useLayoutEffect, useEffect } from 'react'\r\nimport objectPath from 'object-path'\r\nimport { useLocation } from 'react-router-dom'\r\nimport { BreadCrumbs } from './components/BreadCrumbs'\r\nimport { getBreadcrumbsAndTitle, useSubheader } from '../../_core/MetronicSubheader'\r\nimport { useHtmlClassService } from '../../_core/MetronicLayout'\r\n\r\nexport function SubHeader() {\r\n const uiService = useHtmlClassService()\r\n const location = useLocation()\r\n const subheader = useSubheader()\r\n\r\n const layoutProps = useMemo(() => {\r\n return {\r\n config: uiService.config,\r\n subheaderFixed: objectPath.get(uiService.config, 'subheader.fixed'),\r\n subheaderMobileToggle: objectPath.get(uiService.config, 'subheader.mobile-toggle'),\r\n subheaderCssClasses: uiService.getClasses('subheader', true),\r\n subheaderContainerCssClasses: uiService.getClasses('subheader_container', true),\r\n }\r\n }, [uiService])\r\n\r\n useLayoutEffect(() => {\r\n const aside = getBreadcrumbsAndTitle('kt_aside_officer_menu', location.pathname)\r\n const header = getBreadcrumbsAndTitle('kt_header_menu', location.pathname)\r\n const breadcrumbs =\r\n aside && aside.breadcrumbs.length > 0 ? aside.breadcrumbs : header.breadcrumbs\r\n subheader.setBreadcrumbs(breadcrumbs)\r\n subheader.setTitle(aside && aside.title && aside.title.length > 0 ? aside.title : header.title)\r\n // eslint-disable-next-line\r\n }, [location.pathname])\r\n\r\n // Do not remove this useEffect, need from update title/breadcrumbs outside (from the page)\r\n useEffect(() => {}, [subheader])\r\n\r\n return (\r\n
\r\n \r\n {/* Info */}\r\n
\r\n {/* begin::Mobile Toggle */}\r\n {layoutProps.subheaderMobileToggle && (\r\n \r\n \r\n \r\n )}\r\n {/* end::Mobile Toggle */}\r\n\r\n {/* begin::Heading */}\r\n
\r\n {/* begin::Title */}\r\n

\r\n {subheader.title}\r\n

\r\n {/* end::Title */}\r\n\r\n \r\n
\r\n {/* end::Heading */}\r\n
\r\n {/* Info */}\r\n\r\n {/* Toolbar */}\r\n
\r\n {/* \r\n \r\n \r\n \r\n {` `}New Member\r\n */}\r\n\r\n {/* */}\r\n\r\n {/* Button */}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n
\r\n
\r\n \r\n )\r\n}\r\n","/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid,no-undef */\r\nimport React, {useState} from \"react\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport {Tab, Nav} from \"react-bootstrap\";\r\nimport {toAbsoluteUrl} from \"../../../../_helpers\";\r\n\r\nexport function QuickPanel() {\r\n const [selectedTab, setSelectedTab] = useState(\"AuditLogs\");\r\n\r\n const setTab = _tabName => {\r\n setSelectedTab(_tabName);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {/*begin::Header*/}\r\n \r\n \r\n \r\n \r\n Audit Logs\r\n \r\n \r\n \r\n \r\n Notifications\r\n \r\n \r\n \r\n \r\n Settings\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {/*end::Header*/}\r\n\r\n {/*begin::Content*/}\r\n
\r\n
\r\n \r\n
\r\n
System Messages
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Top Authors\r\n \r\n \r\n Most Successful Fellas\r\n \r\n
\r\n \r\n +82$\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Popular Authors\r\n \r\n \r\n Most Successful Fellas\r\n \r\n
\r\n \r\n +280$\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n New Users\r\n \r\n \r\n Most Successful Fellas\r\n \r\n
\r\n \r\n +4500$\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Active Customers\r\n \r\n \r\n Most Successful Fellas\r\n \r\n
\r\n \r\n +4500$\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Bestseller Theme\r\n \r\n \r\n Most Successful Fellas\r\n \r\n
\r\n \r\n +4500$\r\n \r\n
\r\n
\r\n\r\n
\r\n
Notifications
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n Another purpose persuade\r\n \r\n \r\n Due in 2 Days\r\n \r\n
\r\n\r\n \r\n +28%\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Would be to people\r\n \r\n \r\n Due in 2 Days\r\n \r\n
\r\n\r\n \r\n +50%\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Purpose would be to persuade\r\n \r\n \r\n Due in 2 Days\r\n \r\n
\r\n\r\n \r\n -27%\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n The best product\r\n \r\n \r\n Due in 2 Days\r\n \r\n
\r\n\r\n \r\n +8%\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 5 new user generated report\r\n
\r\n
Reports based on sales
\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 2 new items submited\r\n
\r\n
by Grog John
\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 79 PSD files generated\r\n
\r\n
Reports based on sales
\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 $2900 worth producucts sold\r\n
\r\n
Total 234 items
\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 4.5h-avarage response time\r\n
\r\n
Fostest is Barry
\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 3 Defence alerts\r\n
\r\n
\r\n 40% less alerts thar last week\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 Avarage 4 blog posts per author\r\n
\r\n
Most posted 12 time
\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 16 authors joined last week\r\n
\r\n
\r\n 9 photodrapehrs, 7 designer\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 2 new items have been submited\r\n
\r\n
by Grog John
\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 2.8 GB-total downloads size\r\n
\r\n
\r\n Mostly PSD end AL concepts\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 $2900 worth producucts sold\r\n
\r\n
Total 234 items
\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 7 new user generated report\r\n
\r\n
Reports based on sales
\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 4.5h-avarage response time\r\n
\r\n
Fostest is Barry
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Customer Care
\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
Reports
\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
Memebers
\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 {/*end::Content*/}\r\n \r\n \r\n );\r\n}\r\n","import React, { CSSProperties, useCallback, useState } from 'react'\nimport styled from '@emotion/styled'\nimport LightBox from 'react-image-lightbox'\nimport { Image } from 'react-bootstrap'\n\nimport 'react-image-lightbox/style.css'\n\nconst ImageLayout = styled.div`\n display: flex;\n gap: 10px;\n`\n\nconst ThumbImage = styled(Image)`\n width: 50px;\n height: 50px;\n object-fit: cover;\n cursor: pointer;\n margin-right: 10px;\n`\n\ntype ImageViewerProps = {\n images: string[]\n className?: string\n style?: CSSProperties\n}\n\nconst ImageViewer = (props: ImageViewerProps) => {\n const { images, ...restProps } = props\n\n const [visible, setVisible] = useState(false)\n const [activeIndex, setActiveIndex] = useState(0)\n\n const onThumbImageClick = useCallback(index => {\n setVisible(true)\n setActiveIndex(index)\n }, [])\n\n const onClose = useCallback(() => {\n setVisible(false)\n }, [])\n\n return (\n <>\n \n {images.map((img, index) => (\n \n ))}\n \n {visible && (\n \n setActiveIndex((activeIndex + images.length - 1) % images.length)\n }\n onMoveNextRequest={() => setActiveIndex((activeIndex + 1) % images.length)}\n />\n )}\n \n )\n}\nexport default ImageViewer\n","/* eslint-disable no-script-url,jsx-a11y/anchor-is-valid,no-undef */\r\nimport React, { useCallback } from 'react'\r\nimport SVG from 'react-inlinesvg'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { useLogout } from '../../../../../app/services/auth/auth-query'\r\nimport { toAbsoluteUrl } from '../../../../_helpers'\r\nimport { useCurrentUser, useGetImageUser } from '../../../../../app/services/user/user-query'\r\nimport ImageViewer from '../../../../../app/components/common/ImageViewer'\r\nimport profile from '../../../../../asset/images/default_profile_picture.jpg'\r\n\r\nexport function QuickUser() {\r\n const { mutate: logout } = useLogout()\r\n\r\n const logoutClick = useCallback(() => {\r\n logout()\r\n }, [logout])\r\n\r\n const { data } = useCurrentUser()\r\n const { firstnameTh, lastnameTh, email, imageProfile } = data || {}\r\n const { id: imageUserProfileId = '' } = imageProfile || {}\r\n const { data: imageUSerProfile } = useGetImageUser(imageUserProfileId, 'origin')\r\n const { image } = imageUSerProfile || { image: 'noImage' }\r\n\r\n return (\r\n
\r\n
\r\n

\r\n User Profile\r\n {/* 12 messages */}\r\n

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {image === 'noImage' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n\r\n
\r\n \r\n {firstnameTh} {lastnameTh}\r\n \r\n\r\n \r\n {/* \r\n Sign Out\r\n */}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/alt-text */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from \"react\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport { toAbsoluteUrl } from \"../../../../_helpers\";\r\n\r\nexport function QuickSearch() {\r\n return (\r\n <>\r\n {/* begin::Search Panel */}\r\n
\r\n {/* begin::Header */}\r\n
\r\n

\r\n Search\r\n \r\n files, reports, members\r\n \r\n

\r\n \r\n \r\n \r\n
\r\n {/* end::Header */}\r\n\r\n {/* begin::Content */}\r\n
\r\n {/* begin::Container */}\r\n \r\n {/* begin::Form */}\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 {/* end::Form */}\r\n\r\n {/* begin::Wrapper */}\r\n
\r\n
\r\n {/* begin::Message */}\r\n
No record found
\r\n {/* end::Message */}\r\n\r\n {/* begin::Section */}\r\n
\r\n Documents\r\n
\r\n
\r\n {/* begin::Item */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n AirPlus Requirements\r\n \r\n \r\n by Grog John\r\n \r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n TechNav Documentation\r\n \r\n \r\n by Mary Broun\r\n \r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n All Framework Docs\r\n \r\n \r\n by Nick Stone\r\n \r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Finance & Accounting Reports\r\n \r\n \r\n by Jhon Larson\r\n \r\n
\r\n
\r\n {/* end::Item */}\r\n
\r\n {/* end::Section */}\r\n\r\n {/* begin::Section */}\r\n
\r\n Members\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Milena Gibson\r\n \r\n \r\n UI Designer\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Stefan JohnStefan\r\n \r\n \r\n Marketing Manager\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Anna Strong\r\n \r\n \r\n Software Developer\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Nick Bold\r\n \r\n \r\n Project Coordinator\r\n \r\n
\r\n
\r\n
\r\n {/* end::Section */}\r\n\r\n {/* begin::Section */}\r\n
\r\n Files\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n 79 PSD files generated\r\n \r\n \r\n by Grog John\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n $2900 worth products sold\r\n \r\n \r\n Total 234 items\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n 4 New items submitted\r\n \r\n \r\n Marketing Manager\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n 4 New items submitted\r\n \r\n \r\n Marketing Manager\r\n \r\n
\r\n
\r\n
\r\n {/* end::Section */}\r\n
\r\n
\r\n {/* end::Wrapper */}\r\n
\r\n {/* end::Container */}\r\n
\r\n {/* end::Content */}\r\n \r\n {/* end::Search Panel */}\r\n \r\n );\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from \"react\";\r\n\r\nexport function QuickNotification() {\r\n return (\r\n <>\r\n {/* begin::Notifications Panel */}\r\n
\r\n {/* begin::Header */}\r\n
\r\n

\r\n Notifications\r\n 24 New\r\n

\r\n \r\n \r\n \r\n
\r\n {/* end::Header */}\r\n\r\n {/* begin::Content */}\r\n
\r\n {/* begin::Nav */}\r\n
\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 5 new user generated report\r\n
\r\n
Reports based on sales
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 2 new items submited\r\n
\r\n
by Grog John
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 79 PSD files generated\r\n
\r\n
Reports based on sales
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n $2900 worth producucts sold\r\n
\r\n
Total 234 items
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 4.5h-avarage response time\r\n
\r\n
Fostest is Barry
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 3 Defence alerts\r\n
\r\n
40% less alerts thar last week
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Avarage 4 blog posts per author\r\n
\r\n
Most posted 12 time
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 16 authors joined last week\r\n
\r\n
9 photodrapehrs, 7 designer
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 2 new items have been submited\r\n
\r\n
by Grog John
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 2.8 GB-total downloads size\r\n
\r\n
Mostly PSD end AL concepts
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n $2900 worth producucts sold\r\n
\r\n
Total 234 items
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 7 new user generated report\r\n
\r\n
Reports based on sales
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 4.5h-avarage response time\r\n
\r\n
Fostest is Barry
\r\n
\r\n
\r\n
\r\n {/* end::Item */}\r\n
\r\n {/* end::Nav */}\r\n
\r\n {/* end::Content */}\r\n
\r\n {/* end::Notifications Panel */}\r\n \r\n );\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from \"react\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport { toAbsoluteUrl } from \"../../../../_helpers\";\r\n\r\nexport function QuickActions() {\r\n return (\r\n <>\r\n {/* begin::Quick Actions Panel */}\r\n
\r\n {/* begin::Header */}\r\n
\r\n

\r\n Quick Actions\r\n \r\n finance & reports\r\n \r\n

\r\n \r\n \r\n \r\n
\r\n {/* end::Header */}\r\n\r\n {/* begin::Content */}\r\n
\r\n
\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Accounting\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Members\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n
\r\n
\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Projects\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Customers\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n
\r\n
\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Email\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Settings\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n
\r\n
\r\n {/* begin::Item */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Orders\r\n \r\n \r\n
\r\n {/* end::Item */}\r\n
\r\n
\r\n {/* end::Content */}\r\n
\r\n {/* end::Quick Actions Panel */}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport {toAbsoluteUrl} from \"../../../_helpers\";\r\n\r\nexport function ScrollTop() {\r\n return (\r\n
\r\n \r\n \r\n {\" \"}\r\n
\r\n );\r\n}\r\n","import React, { forwardRef, useEffect, useState } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport {isFragment} from \"react-is\";\r\n\r\nexport const CardHeaderIcon = forwardRef(({ className }, ref) => (\r\n \r\n));\r\n\r\nexport const CardHeaderTitle = forwardRef(({ className, ...props }, ref) => (\r\n // eslint-disable-next-line jsx-a11y/heading-has-content\r\n

\r\n));\r\n\r\nexport const CardHeaderToolbar = forwardRef(\r\n ({ children, className, ...props }, ref) => (\r\n
\r\n {children}\r\n
\r\n )\r\n);\r\n\r\nexport const CardHeader = forwardRef(\r\n (\r\n {\r\n children,\r\n icon,\r\n title,\r\n toolbar,\r\n className,\r\n sticky = false,\r\n labelRef,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [top, setTop] = useState(0);\r\n const [windowHeight, setWindowHeight] = useState(0);\r\n\r\n useEffect(() => {\r\n handleResize();\r\n\r\n function handleResize() {\r\n setWindowHeight(window.innerWidth);\r\n }\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n });\r\n\r\n useEffect(() => {\r\n // Skip if sticky is disabled or on initial render when we don't know about window height.\r\n if (!sticky || windowHeight === 0) {\r\n return;\r\n }\r\n\r\n const headerElement = document.querySelector(\".header\");\r\n const subheaderElement = document.querySelector(\".subheader\");\r\n const headerMobileElement = document.querySelector(\".header-mobile\");\r\n\r\n let nextMarginTop = 0;\r\n\r\n // mobile header\r\n if (window.getComputedStyle(headerElement).height === \"0px\") {\r\n nextMarginTop = headerMobileElement.offsetHeight;\r\n } else {\r\n // desktop header\r\n if (document.body.classList.contains(\"header-minimize-topbar\")) {\r\n // hardcoded minimized header height\r\n nextMarginTop = 60;\r\n } else {\r\n // normal fixed header\r\n if (document.body.classList.contains(\"header-fixed\")) {\r\n nextMarginTop += headerElement.offsetHeight;\r\n }\r\n\r\n if (document.body.classList.contains(\"subheader-fixed\")) {\r\n nextMarginTop += subheaderElement.offsetHeight;\r\n }\r\n }\r\n }\r\n\r\n setTop(nextMarginTop);\r\n }, [sticky, windowHeight]);\r\n\r\n return (\r\n \r\n {title != null && (\r\n
\r\n {icon}\r\n\r\n {/* Wrap string and fragments in CardHeaderTitle */\r\n typeof title === \"string\" || isFragment(title) ? (\r\n {title}\r\n ) : (\r\n title\r\n )}\r\n
\r\n )}\r\n\r\n {toolbar}\r\n {children}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport const CardBody = forwardRef(\r\n ({ fit, fluid, className, ...props }, ref) => (\r\n \r\n )\r\n);\r\n\r\nexport const CardFooter = forwardRef(({ className, ...props }, ref) => (\r\n
\r\n));\r\n\r\nexport const Card = forwardRef(({ fluidHeight, className, ...props }, ref) => (\r\n \r\n));\r\n\r\n// Set display names for debugging.\r\nif (process.env.NODE_ENV !== \"production\") {\r\n Card.displayName = \"Card\";\r\n\r\n CardHeader.displayName = \"CardHeader\";\r\n CardHeaderIcon.displayName = \"CardHeaderIcon\";\r\n CardHeaderTitle.displayName = \"CardHeaderTitle\";\r\n CardHeaderToolbar.displayName = \"CardHeaderToolbar\";\r\n\r\n CardBody.displayName = \"CardBody\";\r\n CardFooter.displayName = \"CardFooter\";\r\n}\r\n","import React from \"react\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {ProgressBar} from \"react-bootstrap\";\r\n\r\n// TODO: Should be rewrited to pure function\r\nclass AnimateLoading extends React.Component {\r\n animateTimeout;\r\n stopAnimateTimeout;\r\n state = {\r\n width: 0,\r\n routeChanged: false\r\n };\r\n\r\n componentDidUpdate(nextProps) {\r\n if (this.props.location.pathname !== nextProps.location.pathname) {\r\n this.animate();\r\n this.scrollToTop();\r\n }\r\n }\r\n\r\n scrollToTop() {\r\n const scrollToTopBtn = document.getElementById(\"kt_scrolltop\");\r\n if (scrollToTopBtn) {\r\n scrollToTopBtn.click();\r\n }\r\n }\r\n\r\n animate() {\r\n this.animateTimeout = setTimeout(() => {\r\n if (this.state.width <= 100) {\r\n this.setState({ width: this.state.width + 10 });\r\n this.animate();\r\n } else {\r\n this.stopAnimate();\r\n }\r\n }, 30);\r\n }\r\n stopAnimate() {\r\n clearTimeout(this.animateInterval);\r\n this.stopAnimateTimeout = setTimeout(() => {\r\n this.setState({ width: 0 });\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n if (this.stopAnimateTimeout) {\r\n clearTimeout(this.stopAnimateTimeout);\r\n }\r\n if (this.animateTimeout) {\r\n clearTimeout(this.animateTimeout);\r\n }\r\n }\r\n render() {\r\n return (\r\n \r\n {this.state.width > 0 && (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(AnimateLoading);\r\n","import React, { forwardRef } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport {toAbsoluteUrl} from \"../../_helpers\";\r\n\r\nexport const Notice = forwardRef(\r\n (\r\n {\r\n icon,\r\n svg,\r\n iconRef,\r\n textRef,\r\n iconWrapperRef,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {children}\r\n
\r\n \r\n );\r\n }\r\n);\r\n\r\n// Set display name for debugging.\r\nif (process.env.NODE_ENV !== \"production\") {\r\n Notice.displayName = \"Notice\";\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport objectPath from 'object-path'\r\n// LayoutContext\r\nimport { useHtmlClassService } from '../_core/MetronicLayout'\r\n// Import Layout components\r\nimport { HeaderMobile } from './header-mobile/HeaderMobile'\r\nimport { Aside } from './aside/Aside'\r\nimport { Footer } from './footer/Footer'\r\nimport { LayoutInit } from './LayoutInit'\r\nimport { SubHeader } from './subheader/SubHeader'\r\nimport { QuickPanel } from './extras/offcanvas/QuickPanel'\r\nimport { QuickUser } from './extras/offcanvas/QuickUser'\r\nimport { QuickSearch } from './extras/offcanvas/QuickSearch'\r\nimport { QuickNotification } from './extras/offcanvas/QuickNotification'\r\nimport { QuickActions } from './extras/offcanvas/QuickActions'\r\nimport { ScrollTop } from './extras/ScrollTop'\r\n\r\nimport { AnimateLoading } from '../../_partials/controls'\r\n\r\nexport function Layout({ children }) {\r\n const uiService = useHtmlClassService()\r\n // Layout settings (cssClasses/cssAttributes)\r\n const layoutProps = useMemo(() => {\r\n return {\r\n selfLayout: objectPath.get(uiService.config, 'self.layout'),\r\n subheaderDisplay: objectPath.get(uiService.config, 'subheader.display'),\r\n contentCssClasses: uiService.getClasses('content', true),\r\n contentContainerClasses: uiService.getClasses('content_container', true),\r\n contentExtended: objectPath.get(uiService.config, 'content.extended'),\r\n }\r\n }, [uiService])\r\n\r\n return layoutProps.selfLayout !== 'blank' ? (\r\n <>\r\n {/*begin::Main*/}\r\n \r\n\r\n
\r\n {/*begin::Page*/}\r\n
\r\n
\r\n {/*end::Wrapper*/}\r\n
\r\n {/*end::Page*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n {/*end::Main*/}\r\n \r\n \r\n ) : (\r\n // BLANK LAYOUT\r\n
{children}
\r\n )\r\n}\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {useRouteMatch} from \"react-router-dom\";\r\n\r\nexport function Content({ children }) {\r\n const match = useRouteMatch() || {};\r\n const animationEndClass = \"grid-animateContent-finished\";\r\n const [cssClassesState, setCssClassesState] = useState([\r\n \"grid-animateContent\",\r\n animationEndClass\r\n ]);\r\n\r\n useEffect(() => {\r\n // for animation start should toggle 'grid-animateContent-finished' css class\r\n // TODO: change useMemo\r\n const fullClasses = [...cssClassesState];\r\n const startAnimation = fullClasses.filter(el => el !== animationEndClass);\r\n setCssClassesState(startAnimation);\r\n const timeOutId = setTimeout(() => {\r\n setCssClassesState(fullClasses);\r\n }, 200);\r\n\r\n return () => {\r\n clearTimeout(timeOutId);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [match.url]);\r\n\r\n return <>{children};\r\n}\r\n","import React from 'react'\r\nimport { Route, RouteProps } from 'react-router-dom'\r\nimport { Content } from './Content'\r\n\r\nexport function ContentRoute({ children, component: Component, render, ...props }: RouteProps) {\r\n return (\r\n \r\n {(routeProps: any) => {\r\n if (typeof children === 'function') {\r\n return {children(routeProps)}\r\n }\r\n\r\n if (!routeProps.match) {\r\n return null\r\n }\r\n\r\n if (children) {\r\n return {children}\r\n }\r\n\r\n if (Component) {\r\n return {React.createElement(Component as any, routeProps)}\r\n }\r\n\r\n if (render) {\r\n return {render(routeProps)}\r\n }\r\n\r\n return null\r\n }}\r\n \r\n )\r\n}\r\n","import React, {createContext, useContext, useState, useEffect} from \"react\";\r\n\r\nconst MetronicSplashScreenContext = createContext();\r\n\r\nexport function MetronicSplashScreenProvider({ children }) {\r\n const [count, setCount] = useState(0);\r\n let visible = count > 0;\r\n\r\n useEffect(() => {\r\n const splashScreen = document.getElementById(\"splash-screen\");\r\n\r\n // Show SplashScreen\r\n if (splashScreen && visible) {\r\n splashScreen.classList.remove(\"hidden\");\r\n\r\n return () => {\r\n splashScreen.classList.add(\"hidden\");\r\n };\r\n }\r\n\r\n // Hide SplashScreen\r\n let timeout;\r\n if (splashScreen && !visible) {\r\n timeout = setTimeout(() => {\r\n splashScreen.classList.add(\"hidden\");\r\n }, 3000);\r\n }\r\n\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, [visible]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport function LayoutSplashScreen({ visible = true }) {\r\n // Everything are ready - remove splashscreen\r\n const setCount = useContext(MetronicSplashScreenContext);\r\n\r\n useEffect(() => {\r\n if (!visible) {\r\n return;\r\n }\r\n\r\n setCount(prev => {\r\n return prev + 1;\r\n });\r\n\r\n return () => {\r\n setCount(prev => {\r\n return prev - 1;\r\n });\r\n };\r\n }, [setCount, visible]);\r\n\r\n return null;\r\n}\r\n","import React from \"react\";\r\nimport {createMuiTheme, ThemeProvider} from \"@material-ui/core\";\r\n\r\nconst theme = createMuiTheme(\r\n /**\r\n * @see https://material-ui.com/customization/themes/#theme-configuration-variables\r\n */\r\n {\r\n // direction: \"rtl\",\r\n typography: {\r\n fontFamily: [\"Poppins\"].join(\",\")\r\n },\r\n\r\n palette: {\r\n primary: {\r\n // light: will be calculated from palette.primary.main,\r\n main: \"#17c191\",\r\n // dark: will be calculated from palette.primary.main,\r\n // contrastText: \"#fff\" //will be calculated to contrast with palette.primary.main\r\n },\r\n secondary: {\r\n // light: will be calculated from palette.primary.main,\r\n main: \"#3783e7\",\r\n // dark: will be calculated from palette.primary.main,\r\n // contrastText: \"#fff\" //will be calculated to contrast with palette.primary.main\r\n },\r\n error: {\r\n // light: will be calculated from palette.primary.main,\r\n main: \"#f018a6\",\r\n // dark: will be calculated from palette.primary.main,\r\n // contrastText: \"#fff\" //will be calculated to contrast with palette.primary.main\r\n }\r\n },\r\n\r\n /**\r\n * @see https://material-ui.com/customization/globals/#default-props\r\n */\r\n props: {\r\n // Name of the component ⚛️\r\n MuiButtonBase: {\r\n // The properties to apply\r\n disableRipple: false // No more ripple, on the whole application 💣!\r\n },\r\n\r\n // Set default elevation to 1 for popovers.\r\n MuiPopover: {\r\n elevation: 1\r\n }\r\n }\r\n }\r\n);\r\n\r\nexport function MaterialThemeProvider(props) {\r\n const { children } = props;\r\n\r\n return {children};\r\n}\r\n","import React, { ReactNode, useMemo } from 'react'\nimport Typography, { TypographyTypeMap } from '@material-ui/core/Typography'\nimport { CSSProperties } from '@material-ui/styles'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { Link } from 'react-router-dom'\n\nconst useStyles = makeStyles(theme => ({\n bold: {\n fontWeight: 'bold',\n },\n}))\n\ntype TypographyColorType = Exclude['props']['color'], undefined>\n\nexport type TextProps = {\n children: ReactNode\n variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1'\n style?: CSSProperties\n gutterBottom?: boolean\n bold?: boolean\n linkTo?: string\n color?: TypographyColorType | string\n}\nconst Text = (props: TextProps) => {\n const classes = useStyles()\n const { children, gutterBottom = true, bold, linkTo, color, ...restProps } = props\n const className = useMemo(() => {\n if (bold) {\n return classes.bold\n } else {\n return ''\n }\n }, [classes.bold, bold])\n\n const _colorProps = useMemo((): {\n color?: TypographyColorType\n style?: {\n color?: string\n }\n } => {\n if (color) {\n if (\n [\n 'initial',\n 'inherit',\n 'primary',\n 'secondary',\n 'textPrimary',\n 'textSecondary',\n 'error',\n ].includes(color)\n ) {\n return {\n color: color as TypographyColorType,\n }\n } else {\n return {\n style: {\n color,\n },\n }\n }\n } else {\n return {\n color: 'inherit',\n }\n }\n }, [color])\n\n return !linkTo ? (\n \n {children}\n \n ) : (\n \n \n {children}\n \n \n )\n}\n\nexport default Text\n","import { uniqueId } from 'lodash'\nimport { useCallback, useMemo, useState } from 'react'\nimport { toast, ToastContent, ToastOptions, UpdateOptions } from 'react-toastify'\n\nexport const useVisible = () => {\n const [visible, setVisible] = useState(false)\n\n const open = useCallback(() => {\n setVisible(true)\n }, [])\n\n const close = useCallback(() => {\n setVisible(false)\n }, [])\n\n return {\n visible,\n open,\n close,\n }\n}\n\nexport const useToastForReactQuery = (option?: ToastOptions) => {\n const [updateId] = useState(uniqueId())\n\n const defaultOption = useMemo(() => {\n const _toastOption: ToastOptions = {\n position: 'top-right',\n autoClose: 2.5 * 1000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: false,\n draggable: false,\n progress: undefined,\n ...option,\n }\n return _toastOption\n }, [option])\n\n const open = useCallback(\n (content?: ToastContent, option?: ToastOptions) => {\n return toast(content, {\n ...defaultOption,\n type: 'default',\n closeOnClick: false,\n autoClose: 10 * 1000,\n hideProgressBar: true,\n bodyStyle: {\n fontWeight: 'bold',\n },\n ...option,\n toastId: updateId,\n updateId,\n })\n },\n [defaultOption, updateId],\n )\n\n const onSuccess = useCallback(\n (toastId: string | number, content?: ToastContent, option?: UpdateOptions) => {\n toast.update(toastId, {\n ...defaultOption,\n render: content || 'Success',\n type: 'success',\n ...option,\n toastId,\n updateId,\n })\n },\n [updateId, defaultOption],\n )\n\n const onError = useCallback(\n (toastId: string | number, content?: ToastContent, option?: UpdateOptions) => {\n toast.update(toastId, {\n ...defaultOption,\n render: content || 'Fail',\n type: 'warning',\n ...option,\n toastId,\n updateId,\n })\n },\n [updateId, defaultOption],\n )\n\n return {\n open,\n onSuccess,\n onError,\n }\n}\n","import React from 'react'\nimport { Button } from 'react-bootstrap'\n\nexport default Button\n","import React, { ElementType } from 'react'\nimport styled from '@emotion/styled'\n\nconst ErrorMessage = styled.div`\n margin-top: 4px;\n color: red;\n`\n\nexport const makeField = (Components: ElementType) => (props: T) => {\n /* @ts-ignore */\n const { input, meta, ...restProps } = props\n return (\n
\n \n {meta.error && meta.touched && (\n
\n {meta.error}\n
\n )}\n
\n )\n}\n","import styled from '@emotion/styled'\nimport React, { useCallback } from 'react'\nimport ReactSelect, { Props, OnChangeValue } from 'react-select'\nimport Text from './Text'\n\nconst Layout = styled.div`\n display: flex;\n flex-flow: column;\n`\n\nexport type SelectProps = {\n label?: string\n onChange?: (value: OnChangeValue) => void\n disabled?: boolean\n className?: string\n} & Partial, 'isDisabled' | 'isMulti' | 'onChange'>>\n\nconst Select = (\n props: SelectProps,\n) => {\n const { label, value, onChange, disabled = false, ...restProps } = props\n\n const handleChange = useCallback(\n (value: OnChangeValue) => {\n onChange?.(value)\n },\n [onChange],\n )\n\n return (\n \n {label && {label}}\n !!e.disabled}\n />\n \n )\n}\n\nexport default Select\n","import React from 'react'\nimport { TextField, TextFieldProps } from '@material-ui/core'\n\nconst disableBlackground = 'rgba(239, 239, 239, 0.3)'\nexport default (props: TextFieldProps) => {\n const { variant, margin, style, disabled, ...restProps } = { ...props }\n\n return (\n \n )\n}\n","import React from 'react'\nimport { TextField, TextFieldProps as MaterailTextFieldProps } from '@material-ui/core'\nimport dayjs from 'dayjs'\n\ntype DataPickerProps = MaterailTextFieldProps & {\n input: any\n meta: any\n}\n\nconst DataPiker = (props: DataPickerProps) => {\n const { input, meta, ...rest } = props\n return (\n \n )\n}\n\nexport default DataPiker\n","import { Checkbox, CheckboxProps as MaterailCheckboxProps } from '@material-ui/core'\nimport React from 'react'\n\ntype CheckboxProps = MaterailCheckboxProps & {\n value?: boolean\n}\n\nconst CheckBox = (props: CheckboxProps) => {\n const { checked, value, ...rest } = props\n return \n}\n\nexport default CheckBox\n","import React, { useCallback, useEffect, useMemo } from 'react'\nimport dayjs, { Dayjs } from 'dayjs'\nimport moment from 'moment'\nimport BaseDateRangePicker, {\n Props as BaseDateRangePickerProps,\n} from 'react-bootstrap-daterangepicker'\n// you will also need the css that comes with bootstrap-daterangepicker\nimport 'bootstrap-daterangepicker/daterangepicker.css'\nimport styled from '@emotion/styled'\nimport Text from './Text'\nimport { DateOrString } from 'daterangepicker'\nimport DateRangeOutlined from '@material-ui/icons/DateRangeOutlined'\n\nconst Layout = styled.div`\n position: relative;\n display: flex;\n flex-flow: column;\n`\nconst DateRangeOutlinedStyled = styled(DateRangeOutlined)`\n position: absolute;\n right: 10px;\n bottom: 10px;\n pointer-events: none;\n`\n\nconst InputStyled = styled.input`\n align-items: center;\n background-color: hsl(0, 0%, 100%);\n border-color: hsl(0, 0%, 80%);\n border-radius: 4px;\n border-style: solid;\n border-width: 1px;\n cursor: default;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n min-height: 38px;\n outline: 0 !important;\n position: relative;\n transition: all 100ms;\n box-sizing: border-box;\n padding: 2px 8px;\n`\n\nconst parseToDayjs = (date?: DateOrString) => {\n let _date: Dayjs | DateOrString | undefined = date\n if (typeof _date === 'string') {\n _date = dayjs(_date)\n } else if (_date instanceof Date) {\n _date = dayjs(_date)\n } else if (_date instanceof moment) {\n _date = dayjs(_date.toDate())\n }\n return _date\n}\n\nexport type DateRangePickerValue = {\n startDate: Dayjs\n endDate: Dayjs\n}\nexport type DateRangePickerProps = {\n value?: DateRangePickerValue\n onChange?: (value: DateRangePickerValue) => void\n label: string\n option?: Partial\n}\n\nconst DateRangePicker = (props: DateRangePickerProps) => {\n const { label, value, onChange, option } = props\n const now = useMemo(() => dayjs(), [])\n\n const startDate = useMemo(() => {\n return value?.startDate ? dayjs(value.startDate) : now.subtract(1, 'months').startOf('months')\n }, [now, value])\n\n const endDate = useMemo(() => {\n return value?.endDate ? dayjs(value?.endDate) : now\n }, [now, value])\n\n const handleCallback: BaseDateRangePickerProps['onCallback'] = useCallback(\n (start, end, label) => {\n const _start = parseToDayjs(start)\n const _end = parseToDayjs(end)\n\n if (_start && _end) {\n onChange?.({\n startDate: dayjs(_start.toDate()),\n endDate: dayjs(_end.toDate()),\n })\n }\n },\n [onChange],\n )\n\n useEffect(() => {\n if (!value) {\n onChange?.({\n startDate: now.subtract(1, 'months').startOf('months'),\n endDate: now,\n })\n }\n }, [now, onChange, value])\n\n return (\n \n {label}\n \n \n \n \n \n )\n}\n\nexport default DateRangePicker\n","import { Dayjs } from 'dayjs'\nimport { Attachment } from '../bankaccount/bankaccount-typed'\nimport { Address } from '../port/port-typed'\n\nexport type RiskAssessment = {\n answer: true\n createdAt: string\n deletedAt: string | null | undefined\n description: string\n id: string\n kycId:string\n questionCode: string\n updatedAt: string\n}\n\nexport type Kyc = {\n birthdate: string\n callbackConvenientTime: CallbackConvenientTime[] | null\n attachments: Attachment[]\n callbackMobileNo: string\n citizenId: string\n createdAt: string\n deletedAt: string\n ekycStatus: string\n ekycStatusAt: string\n ekycUserId: string\n email: string\n firstnameEn: string\n firstnameTh: string\n gender: string\n id: string\n idempotencyKey: string\n job: string\n laserCode: string\n lastnameEn: string\n lastnameTh: string\n mobileNo: string\n refCode: string\n registerError?: string\n rejectReason?: string\n tinNo: string\n titleEn: string\n titleTh: string\n updatedAt: string\n userId: string\n dopa: {\n isError: 'true' | 'false'\n errorMessage: any[]\n code: string\n desc: string\n }\n amlo: {\n status: 'not pass' | 'pass'\n data: string\n }\n addresses?: Address[]\n riskAssessments:RiskAssessment[]\n}\n\nexport type CallbackConvenientTime = {\n contactEnd: string\n contactStart: string\n}\n\nexport type PageMeta = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\nexport type KycList = {\n items: Kyc[]\n meta: PageMeta\n}\n\nexport type ExportKycReportParams = {\n startDate: Dayjs\n endDate: Dayjs\n status?: EKycState\n}\n\nexport enum EKycState {\n PENDING = 'pending',\n APPROVED = 'approved',\n REJECTED = 'rejected',\n}\n","import { Switch, SwitchProps as MaterailSwitchProps } from '@material-ui/core'\nimport React from 'react'\n\ntype CheckboxProps = MaterailSwitchProps & {\n value?: boolean\n}\n\nconst CheckBox = (props: CheckboxProps) => {\n const { checked, value, ...rest } = props\n return \n}\n\nexport default CheckBox\n","import React from 'react'\nimport { makeField } from './tools'\nimport Select, { SelectProps } from '../common/Select'\nimport Input from '../common/Input'\nimport DataPiker from '../common/DataPiker'\nimport CheckBox from '../common/CheckBox'\nimport { Field, FieldProps } from 'react-final-form'\nimport DateRangePicker, { DateRangePickerProps } from '../common/DateRangePicker'\nimport Switch from '../common/Switch'\n\nexport const InputField = makeField(Input)\nexport const DatePickerField = makeField(DataPiker)\nexport const CheckBoxField = makeField(CheckBox)\nexport const SwitchField = makeField(Switch)\n\ntype DateRangePickerFieldProps = FieldProps & DateRangePickerProps\nexport const DateRangePickerField = (props: DateRangePickerFieldProps) => {\n const { name } = props\n return \n}\n\nexport const SelectField = (props: FieldProps & SelectProps) => {\n const { name } = props\n return \n}\n","import React, { useCallback, useEffect, useMemo } from 'react'\nimport { Card } from 'react-bootstrap'\nimport Button from '../common/Button'\nimport { Modal, Typography } from '@material-ui/core'\nimport { Field, Form } from 'react-final-form'\nimport { InputField, SelectField } from '../fields'\nimport {\n useCurrentUser,\n useGetUser,\n useUpdateRoleUser,\n useUpdateUserProfile,\n} from '../../services/user/user-query'\nimport { validateEmail } from '../../../utils/helper'\nimport styled from '@emotion/styled'\nimport { ROLE } from '../../services/user/user-typed'\nimport Text from '../common/Text'\nimport { useToastForReactQuery } from '../../../utils/custom-hooks'\nimport { useTranslation } from 'react-i18next'\nimport { isEqual, some } from 'lodash'\nimport { EKycState } from '../../services/kyc/kyc-typed'\nimport { Authorize, validateCorrectRole } from '../Authorize'\n\nconst ContentLayout = styled(Card)`\n width: 500px;\n min-height: 200px;\n padding: 30px 80px 20px 80px;\n grid-row-gap: 12px;\n`\n\nconst InputFieldStyled = styled(InputField)`\n &.MuiFormControl-root {\n width: 100%;\n margin-top: 0;\n }\n`\n\ntype UpdateUserProfileFormValues = {\n mobileNo?: string\n email?: string\n role?: BaseOptionType\n}\n\ntype ModalUpdateUserProfileProps = {\n userId: string\n visible: boolean\n onClose: () => void\n className: string\n}\n\ntype RoleKeys = keyof typeof ROLE\n\nconst ModalUpdateUserProfile = (props: ModalUpdateUserProfileProps) => {\n const { userId, visible, onClose, className } = props\n\n const toast = useToastForReactQuery()\n const { t } = useTranslation()\n\n const { data: currentUser } = useCurrentUser()\n const { data: user } = useGetUser(userId)\n\n const { mutateAsync: updateRoleUser } = useUpdateRoleUser()\n const { mutateAsync: updateUserProfile } = useUpdateUserProfile(userId)\n\n const canUpdateUserProfile = useMemo(() => {\n const hasKycApproved = user?.kyc.kyc ? user?.kyc.kyc.ekycStatus === EKycState.APPROVED : false\n const hasMobileNo = !!user?.mobileNo\n const hasEmail = !!user?.email\n const hasKyc = !!user?.kyc\n const currentUserIsAdmin = validateCorrectRole(ROLE.ADMIN, currentUser?.role)\n return currentUserIsAdmin && hasMobileNo && hasEmail && hasKyc && hasKycApproved\n }, [currentUser, user])\n\n const canChangeRole = useMemo(() => {\n const isNotSameUser = !isEqual(currentUser?.id, user?.id)\n return isNotSameUser\n }, [currentUser, user])\n\n const roleOptions = useMemo((): BaseOptionType[] => {\n return Object.keys(ROLE).reduce((acc: BaseOptionType[], roleKey) => {\n const value = ROLE[roleKey as RoleKeys]\n if (value !== ROLE.SUPER_ADMIN || value === user?.role) {\n acc.push({\n label: roleKey,\n value: value,\n disabled: value === ROLE.SUPER_ADMIN,\n })\n }\n return acc\n }, [])\n }, [user])\n\n const initialValues = useMemo(() => {\n const _initialValues: UpdateUserProfileFormValues = {\n email: user?.email,\n mobileNo: user?.mobileNo,\n role: roleOptions.find(option => option.value === user?.role),\n }\n return _initialValues\n }, [roleOptions, user])\n\n const onSubmit = useCallback(\n async (values: UpdateUserProfileFormValues) => {\n try {\n if (\n canUpdateUserProfile &&\n (!isEqual(values.mobileNo, user?.mobileNo) || !isEqual(values.email, user?.email))\n ) {\n await updateUserProfile(values)\n }\n if (values.role?.value && !isEqual(values.role?.value, user?.role)) {\n await updateRoleUser({\n userId,\n role: values.role?.value,\n })\n }\n toast.open('Success', {\n type: 'success',\n autoClose: 3 * 1000,\n })\n } catch (error) {\n toast.open(t(error), {\n type: 'error',\n autoClose: 3 * 1000,\n })\n } finally {\n onClose()\n }\n },\n [canUpdateUserProfile, onClose, t, toast, updateRoleUser, updateUserProfile, user, userId],\n )\n\n return (\n \n
\n \n onSubmit={onSubmit}\n initialValues={initialValues}\n subscription={{ dirty: true, submitting: true, valid: true }}\n validate={values => {\n const errors: Partial> = {}\n if (canUpdateUserProfile) {\n if (!values.email) {\n errors.email = 'Required'\n }\n if (values.email && !validateEmail(values.email)) {\n errors.email = 'Email is invalid'\n }\n\n if (!values.mobileNo) {\n errors.mobileNo = 'Required'\n }\n if (values.mobileNo && values.mobileNo.length !== 10) {\n errors.mobileNo = 'Mobile No is invalid'\n }\n }\n return errors\n }}\n >\n {({ handleSubmit, dirty, submitting, valid }) => {\n return (\n
\n \n \n \n \n
\n Email\n \n
\n {/*
\n Mobile No\n \n
*/}\n \n ***สามารถแก้ไขข้อมูลผู้ใช้ เมื่อผ่านการทำ KYC แล้ว\n \n {!canChangeRole ? (\n \n ***คุณไม่สามารถแก้ไข Role ของตัวเองได้\n \n ) : null}\n \n \n Confirm\n \n \n Cancel\n \n
\n \n \n )\n }}\n \n \n
\n )\n}\nexport default ModalUpdateUserProfile\n","import React, { useCallback, useEffect, useMemo } from 'react'\nimport { Card } from 'react-bootstrap'\nimport Button from '../common/Button'\nimport { Modal, Typography } from '@material-ui/core'\nimport { Field, Form } from 'react-final-form'\nimport { InputField, SelectField } from '../fields'\nimport {\n useChangeTmnId,\n useCurrentUser,\n useGetUser,\n useUpdateRoleUser,\n useUpdateUserProfile,\n} from '../../services/user/user-query'\nimport {\n composeValidators,\n formatMobile,\n formatThaiId,\n formatTmnId,\n validateEmail,\n} from '../../../utils/helper'\nimport styled from '@emotion/styled'\nimport { ChangeTmnIdParams, ROLE } from '../../services/user/user-typed'\nimport Text from '../common/Text'\nimport { useToastForReactQuery } from '../../../utils/custom-hooks'\nimport { useTranslation } from 'react-i18next'\nimport { isEqual, some } from 'lodash'\nimport { EKycState } from '../../services/kyc/kyc-typed'\n\nconst ContentLayout = styled(Card)`\n width: 500px;\n min-height: 200px;\n padding: 30px 80px 20px 80px;\n grid-row-gap: 12px;\n`\n\nconst InputFieldStyled = styled(InputField)`\n &.MuiFormControl-root {\n width: 100%;\n margin-top: 0;\n }\n`\n\nconst ModalStyled = styled(Modal)({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\ntype UpdateTmnProfileFormValues = {\n thaiId: string\n oldTmnId: string\n newTmnId: string\n oldMobileNo: string\n newMobileNo: string\n}\n\ntype ModalChangeTmnProfileProps = {\n userId: string\n visible: boolean\n onClose: () => void\n}\n\ntype RoleKeys = keyof typeof ROLE\n\nconst ModalChangeTmnProfile = (props: ModalChangeTmnProfileProps) => {\n const { userId, visible, onClose } = props\n\n const toast = useToastForReactQuery()\n const { t } = useTranslation()\n\n const { mutate: changeTmnId } = useChangeTmnId()\n\n // const initialValues = useMemo(() => {\n // const _initialValues: UpdateTmnProfileFormValues = {\n // email: user?.email,\n // mobileNo: user?.mobileNo,\n // role: roleOptions.find(option => option.value === user?.role),\n // }\n // return _initialValues\n // }, [roleOptions, user])\n\n const onSubmit = useCallback(\n (values: UpdateTmnProfileFormValues) => {\n const changeTmnParams: ChangeTmnIdParams = {\n userId,\n ...values,\n }\n changeTmnId(changeTmnParams, {\n onSuccess: () => {\n toast.open('Success', {\n type: 'success',\n autoClose: 3 * 1000,\n })\n },\n onError: error => {\n toast.open(error, {\n type: 'error',\n autoClose: 3 * 1000,\n })\n },\n })\n onClose()\n },\n [changeTmnId, onClose, toast, userId],\n )\n const validateRequired = useCallback((value: string) => (value ? undefined : 'required'), [])\n\n const validateFormatMobile = useCallback(\n (value: string) => (formatMobile.test(value) ? undefined : 'invalid format mobile number'),\n [],\n )\n\n const validateFormatTmnId = useCallback(\n (value: string) => (formatTmnId.test(value) ? undefined : 'invalid format tmn id'),\n [],\n )\n\n const validateFormatThaiId = useCallback(\n (value: string) => (formatThaiId(value) ? undefined : 'invalid format thai id'),\n [],\n )\n\n return (\n \n
\n \n onSubmit={onSubmit}\n //initialValues={initialValues}\n subscription={{ dirty: true, submitting: true, valid: true }}\n // validate={values => {\n // const errors: Partial> = {}\n // if (canUpdateUserProfile) {\n // if (!values.email) {\n // errors.email = 'Required'\n // }\n // if (values.email && !validateEmail(values.email)) {\n // errors.email = 'Email is invalid'\n // }\n\n // if (!values.mobileNo) {\n // errors.mobileNo = 'Required'\n // }\n // if (values.mobileNo && values.mobileNo.length !== 10) {\n // errors.mobileNo = 'Mobile No is invalid'\n // }\n // }\n // return errors\n // }}\n >\n {({ handleSubmit, dirty, submitting, valid }) => {\n return (\n
\n \n
\n THAI ID\n \n
\n
\n OLD TMN ID\n \n
\n
\n NEW TMN ID\n \n
\n
\n OLD MOBILE NO\n \n
\n
\n NEW MOBILE NO\n \n
\n \n \n Confirm\n \n \n Cancel\n \n
\n \n \n )\n }}\n \n \n
\n )\n}\nexport default ModalChangeTmnProfile\n","import React, { Fragment, useCallback, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { Card } from 'react-bootstrap'\nimport Text from '../../components/common/Text'\nimport Image from 'react-bootstrap/Image'\nimport { ROLE, User } from '../../services/user/user-typed'\nimport dayjs from 'dayjs'\nimport { useGetImageUser, useCurrentUser } from '../../services/user/user-query'\nimport profile from '../../../asset/images/default_profile_picture.jpg'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useVisible } from '../../../utils/custom-hooks'\nimport ModalUpdateUserProfile from './ModalUpdateUserProfile'\nimport EditIcon from '@material-ui/icons/Edit'\nimport ModalChangeTmnProfile from './ModalChangeTmnProfile'\nimport { appConfig } from '../../constants/app-config'\nimport { Authorize } from '../Authorize'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst UserDetailLayout = styled.div`\n width: 100%;\n display: flex;\n flex-flow: row;\n justify-content: space-between;\n align-items: flex-start;\n`\n\nconst EditIconLayout = styled.div`\n display: flex;\n flex-flow: column;\n align-items: flex-end;\n justify-content: flex-start;\n grid-row-gap: 12px;\n\n .edit-profile-desc {\n max-width: 100px;\n }\n`\n\nconst EditIconStyled = styled(EditIcon)<{ disabled?: boolean }>`\n &.MuiSvgIcon-root {\n width: 28px;\n height: 28px;\n margin-top: 20px;\n color: ${({ disabled }) => (disabled ? '#3F4254' : '#17c191')};\n cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n }\n`\n\nconst EditTmnIconStyled = styled(EditIcon)<{ disabled?: boolean }>`\n &.MuiSvgIcon-root {\n width: 16px;\n height: 16px;\n /* margin-top: 20px; */\n margin-left: 32px;\n color: ${({ disabled }) => (disabled ? '#3F4254' : '#17c191')};\n cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n }\n`\n\nconst RootLayout = styled(Grid)`\n grid-template-columns: repeat(auto-fill, minmax(49%, 1fr));\n`\nconst ContentDetailLayout = styled(Grid)`\n grid-template-columns: 150px auto;\n`\n\nexport const Flex = styled(Grid)`\n display: flex;\n margin: 0px;\n`\nconst Margin = styled(Grid)`\n margin: 20px;\n`\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n width: 400,\n backgroundColor: theme.palette.background.paper,\n border: '2px solid #000',\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n },\n}))\n\ntype DetailPage = {\n user: User\n gridItems?: JSX.Element[]\n role?: string\n}\n\nexport const UserProfileCard = (props: DetailPage) => {\n const { user, gridItems } = props\n const classes = useStyles()\n const {\n firstnameEn,\n lastnameEn,\n firstnameTh,\n lastnameTh,\n citizenId,\n gender,\n mobileNo,\n email,\n job,\n birthdate,\n callbackConvenientTime,\n callbackMobileNo,\n imageProfile,\n typeSignIn,\n tmnProfile,\n tmnId,\n id: userId,\n } = user\n\n const { id: imageUserProfileId = '' } = imageProfile || {}\n const { data: imageUSerProfile } = useGetImageUser(imageUserProfileId, 'origin')\n const { image } = imageUSerProfile || { image: 'noImage' }\n\n const changeMobileNoVisible = useVisible()\n\n //const changeTmnModal = useVisible()\n const [changeTmnModal, setChangeTmnModal] = useState(false)\n const onOpenChangeTmnModal = useCallback(() => {\n setChangeTmnModal(true)\n }, [])\n\n const onCloseChangeTmnModal = useCallback(() => {\n setChangeTmnModal(false)\n }, [])\n\n return (\n \n \n \n
\n \n {image === 'noImage' ? (\n \n ) : (\n \n )}\n \n \n \n {firstnameEn ? firstnameEn : '-'} {lastnameEn}\n \n\n \n {firstnameTh ? firstnameTh : '-'} {lastnameTh}\n \n\n \n Citizend Id\n {citizenId ? citizenId : '-'}\n Gender\n {gender ? gender : '-'}\n Mobile No\n {mobileNo ? mobileNo : '-'}\n Email\n {email ? email : '-'}\n Type SignIn\n {typeSignIn ? typeSignIn.toLocaleUpperCase() : '-'}\n Tmn Id\n {appConfig.ENABLE_FEATURE_TRUE_MONEY ? (\n
\n {tmnId ? tmnId : '-'}\n \n \n \n
\n ) : (\n -\n )}\n
\n
\n \n \n \n \n \n
\n
\n
\n\n \n Job\n {job ? job : '-'}\n Birthdate\n {birthdate ? dayjs(birthdate).format('DD MMM YYYY') : '-'}\n Convenient Time\n {callbackConvenientTime ? callbackConvenientTime : '-'}\n Callback Number\n {callbackMobileNo ? callbackMobileNo : '-'}\n Role\n {user.role ? user.role.toLocaleUpperCase() : '-'}\n \n
\n
\n {gridItems?.map((gridItem, index) => (\n {gridItem}\n ))}\n \n \n
\n )\n}\nexport default UserProfileCard\n","import React, { CSSProperties, Fragment, ReactNode } from 'react'\nimport { Card } from 'react-bootstrap'\nimport styled from '@emotion/styled'\nimport Text from '../common/Text'\nimport { Link } from 'react-router-dom'\n\ntype ContentType = {\n label: string\n value?: string | number | undefined | ReactNode\n valueComponent?: ReactNode\n linkTo?: string\n valueTextColor?: string\n}\n\ntype PortalCardProps = {\n title: JSX.Element | string\n contents: ContentType[]\n viewMoreUrl?: string\n style?: CSSProperties\n}\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n grid-template-columns: minmax(100px, 150px) minmax(150px, 1fr);\n`\nconst TopLayout = styled.div`\n display: flex;\n\n align-items: center;\n`\n\nexport default (props: PortalCardProps) => {\n const { title, contents, viewMoreUrl, style } = props\n return (\n \n \n \n \n {title}\n \n {viewMoreUrl && (\n \n (view more)\n \n )}\n \n \n {contents.map(\n (\n { label, value, linkTo, valueTextColor = '#000000', valueComponent },\n contentIndex,\n ) => {\n if (linkTo) {\n return (\n \n {label}\n \n {value}\n \n \n )\n }\n if (valueComponent) {\n return (\n \n {label}\n {valueComponent}\n \n )\n } else {\n return (\n \n {label}\n \n {value}\n \n \n )\n }\n },\n )}\n \n \n \n )\n}\n","import { useMutation, useQuery } from 'react-query'\nimport { api } from '../../../utils/api'\nimport {\n EnumTransactionType,\n ExportTransactionReportParams,\n GetProductsResponseType,\n GoldProductType,\n Transaction,\n TransactionList,\n} from './transaction-typed'\nimport { downloadFile } from '../../../utils/helper'\nimport dayjs from 'dayjs'\n\nexport const TRANSACTION_URL = `internal/transactions`\nexport const TRANSACTION_REPORT_URL = `${TRANSACTION_URL}/report`\nexport const BASE_SELL_URL = 'sell'\nexport const GET_GOLD_PRODUCTS_URL = `${BASE_SELL_URL}/products`\n\nconst customTransactionData = (transaction: Transaction) => {\n return transaction\n}\n\nexport const useGetTransactions = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [TRANSACTION_URL, params],\n async () => {\n const { data } = await api.savvyGold.get(TRANSACTION_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n const result = data.data\n result.items = result.items.map(v => customTransactionData(v))\n return result\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetTransaction = (transactionId: string) => {\n return useQuery(\n [TRANSACTION_URL, transactionId],\n async () => {\n const { data } = await api.savvyGold.get(`${TRANSACTION_URL}/${transactionId}`)\n return customTransactionData(data.data)\n },\n {\n enabled: !!transactionId,\n },\n )\n}\n\nexport const useGetTransactionByPortId = (portId: string) => {\n return useQuery(\n [TRANSACTION_URL, portId],\n async () => {\n const { data } = await api.savvyGold.get(`${TRANSACTION_URL}/port/${portId}`)\n return customTransactionData(data.data)\n },\n {\n enabled: !!portId,\n },\n )\n}\n\nexport const useGetAllTransactionsByPortId = (\n portId: string,\n params?: {\n q?: string\n page?: number\n type?: EnumTransactionType\n limit?: number\n isManual?: boolean\n },\n) => {\n return useQuery(\n [TRANSACTION_URL, portId, params],\n async () => {\n const { data } = await api.savvyGold.get(\n `${TRANSACTION_URL}/port/${portId}`,\n {\n page: params?.page,\n limit: params?.limit || 10,\n q: params?.q,\n type: params?.type,\n isManual: params?.isManual,\n },\n )\n const result = data.data\n result.items = result.items.map(v => customTransactionData(v))\n return result\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useExportTransactionReport = () => {\n return useMutation(\n async (params: ExportTransactionReportParams) => {\n const { startDate, endDate, ...restParams } = params\n const res = await api.savvyGold.getFile(`${TRANSACTION_REPORT_URL}`, {\n startDate: dayjs(startDate).format(),\n endDate: dayjs(endDate).format(),\n ...restParams,\n })\n downloadFile(res)\n },\n )\n}\n\nexport const customGoldProduct = (product: GoldProductType) => {\n const { name, goldPattern, ...restProduct } = product\n return {\n ...restProduct,\n goldPattern: goldPattern,\n pattern: goldPattern === 'ลายโลโก้ออสสิริส' ? 'ลายมาตรฐาน' : goldPattern,\n name: name.replace('บาท', 'บาททอง'),\n } as const\n}\n\nexport const useGetGoldProductDetail = (productId: number) => {\n return useQuery(\n [GET_GOLD_PRODUCTS_URL, productId],\n async () => {\n const { data } = await api.savvyGold.get(GET_GOLD_PRODUCTS_URL, {})\n const product = data.data.products.find(product => product.id === productId)\n return product ? customGoldProduct(product) : undefined\n },\n {\n cacheTime: 1 * 60 * 1000,\n staleTime: 0,\n },\n )\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { TRANSACTION_URL } from '../transaction/transaction-query'\nimport { Port, PortList, SellClearPortParams, SellType } from './port-typed'\n\nexport const PORT_URL = `internal/ports`\n\nexport const useGetPorts = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [PORT_URL, params],\n async () => {\n const datas = await api.savvyGold.get(PORT_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n\n return datas.data.data\n },\n {\n keepPreviousData: true,\n },\n )\n}\nexport const useGetPort = (id: string) => {\n return useQuery(\n [PORT_URL, id],\n async () => {\n const data = await api.savvyGold.get(`${PORT_URL}/${id}`)\n return data.data.data\n },\n {\n enabled: !!id,\n },\n )\n}\n\nexport const useSellClearPortByPortId = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (param: SellClearPortParams) => {\n const { data } = await api.savvyGold.post(`${PORT_URL}/clear-port`, param)\n return data\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries([PORT_URL])\n queryClient.invalidateQueries([TRANSACTION_URL])\n },\n },\n )\n}\n","import numeral from 'numeral'\nimport React, { useMemo } from 'react'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport { useGetPort } from '../../../services/port/port-query'\n\ninterface UserIdProps {\n portId: string\n}\n\nexport const PortCard = (props: UserIdProps) => {\n const { portId } = props\n const { data: port } = useGetPort(portId)\n const { sgGoldBalance = '' } = port || {}\n\n const dataPort = useMemo(() => {\n let b = Number(sgGoldBalance)\n const goldbalance = b / 15.244\n const balance = numeral(goldbalance).format('0,0.0000')\n const balancegram = numeral(b).format('0,0.0000')\n const dcaDate = port?.dcaPlan?.date ? `every ${port?.dcaPlan?.date} of month` : '-'\n return [\n { label: 'Balance', value: balance ? `${balance} Baht Gold` : '-' },\n { label: 'Balance', value: balancegram ? `${balancegram} g.` : '-' },\n { label: 'DCA date', value: dcaDate },\n ]\n }, [port, sgGoldBalance])\n\n return \n}\n\nexport default PortCard\n","import { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { BankAccountList, BankAccount, Image, VerifyBankAccount } from './bankaccount-typed'\n\nexport const BANK_ACCOUNT_URL = `internal/bank-accounts`\nexport const IMAGE_URL = `images`\n\nexport const useGetBankAccounts = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [BANK_ACCOUNT_URL, params],\n async () => {\n const { data } = await api.savvyGold.get(BANK_ACCOUNT_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n\n return data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetBankAccount = (id: string) => {\n return useQuery(\n [BANK_ACCOUNT_URL, id],\n async () => {\n const { data } = await api.savvyGold.get(`${BANK_ACCOUNT_URL}/${id}`)\n\n return data.data\n },\n {\n enabled: !!id,\n },\n )\n}\n\nexport const useGetImageBankAccount = (imageId: string) => {\n return useQuery(\n [IMAGE_URL, imageId],\n async () => {\n const { data } = await api.savvyGold.get(`${IMAGE_URL}/${imageId}`, {\n size: 'origin',\n })\n\n return data.data\n },\n {\n enabled: !!imageId,\n },\n )\n}\n\nexport const usePatchBankAccountVerify = (userId: string) => {\n const queryClient = useQueryClient()\n const mutate = useMutation(\n (params: VerifyBankAccount) => {\n const { bankAccountId, status, remark } = params\n if (!bankAccountId || !userId) return Promise.reject()\n\n return api.savvyGold.patch(`${BANK_ACCOUNT_URL}/${bankAccountId}/verify`, {\n approvedStatus: status,\n userId,\n remark,\n })\n },\n {\n onSuccess: (data, params) => {\n queryClient.invalidateQueries([BANK_ACCOUNT_URL, params.bankAccountId])\n },\n onError: (e: any) => {\n if (e.message) {\n console.log(e.message)\n }\n },\n },\n )\n return mutate\n}\nexport const useCancelBankAccount = () => {\n const queryClient = useQueryClient()\n const mutate = useMutation(\n (bankAccountId: string) => {\n if (!bankAccountId) return Promise.reject()\n return api.savvyGold.post(`${BANK_ACCOUNT_URL}/${bankAccountId}/cancel`)\n },\n {\n onSuccess: (data, bankAccountId) => {\n queryClient.invalidateQueries([BANK_ACCOUNT_URL, bankAccountId])\n },\n onError: (e: any) => {\n if (e.message) {\n console.log(e.message)\n }\n },\n },\n )\n return mutate\n}\n","import React, { useMemo } from 'react'\nimport {\n getColorStatusBankAccountText,\n replaceUnderScoreAndCapitalize,\n} from '../../../../utils/helper'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport { useGetBankAccount } from '../../../services/bankaccount/bankaccount-query'\nimport styled from '@emotion/styled'\nimport { Grid } from '@material-ui/core'\nimport Text from '../../../components/common/Text'\nimport * as paths from '../../../constants/path'\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(Text)<{ color: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\n\ninterface BankAccountProps {\n bankAccountId: string\n}\n\nexport const BankAccountCard = (props: BankAccountProps) => {\n const { bankAccountId } = props\n const { data: bankAccount } = useGetBankAccount(bankAccountId)\n const { no = '', name = '', remark = '', approvedStatus } = bankAccount || {}\n const dataBankAccount = useMemo(\n () => [\n { label: 'No.', value: no ? no : '-' },\n { label: 'bank name', value: name ? name : '-' },\n { label: 'message', value: remark ? remark : '-' },\n ],\n [name, no, remark],\n )\n\n return (\n \n \n Bank Account\n \n \n ({replaceUnderScoreAndCapitalize(approvedStatus)})\n \n \n }\n contents={dataBankAccount}\n viewMoreUrl={paths.bankAccountDetail({\n routeParam: {\n bankAccountId,\n },\n })}\n />\n )\n}\n\nexport default BankAccountCard\n","import dayjs from 'dayjs'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { downloadFile } from '../../../utils/helper'\n\nimport { ExportKycReportParams, Kyc, KycList } from './kyc-typed'\n\nexport const KYC_URL = `internal/ekycs`\nexport const KYC_REPORT_URL = `${KYC_URL}/report`\n\nexport enum EnumGetKycListFilter {\n ALL = 'all',\n HIGH_RISK = 'high_risk',\n WAITING_APPROVE = 'waiting_approve',\n}\n\nexport const useGetkycs = (params?: {\n q?: string\n page?: number\n filter?: EnumGetKycListFilter\n}) => {\n return useQuery(\n [KYC_URL, params],\n async () => {\n const datas = await api.savvyGold.get(KYC_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n filter: params?.filter,\n })\n\n return datas.data.data\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetKyc = (id: string) => {\n return useQuery(\n [KYC_URL, id],\n async () => {\n const data = await api.savvyGold.get(`${KYC_URL}/${id}`)\n return data.data.data\n },\n {\n enabled: !!id,\n },\n )\n}\n\nexport const useExportKycReport = () => {\n return useMutation(async (params: ExportKycReportParams) => {\n const { startDate, endDate, ...restParams } = params\n const res = await api.savvyGold.getFile(`${KYC_REPORT_URL}`, {\n startDate: dayjs(startDate).format(),\n endDate: dayjs(endDate).format(),\n ...restParams,\n })\n downloadFile(res)\n })\n}\n\nexport const useRejectKyc = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (kycId: string) => {\n const { data } = await api.savvyGold.post(`${KYC_URL}/${kycId}/reject`)\n return data\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries([KYC_URL])\n },\n },\n )\n}\n\nexport const useApproveKyc = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (kycId: string) => {\n const { data } = await api.savvyGold.post(`${KYC_URL}/${kycId}/approve`)\n return data\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries([KYC_URL])\n },\n },\n )\n}\n","import React, { useMemo } from 'react'\nimport { getColorStatusKycText, replaceUnderScoreAndCapitalize } from '../../../../utils/helper'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport styled from '@emotion/styled'\nimport { Grid } from '@material-ui/core'\nimport Text from '../../../components/common/Text'\nimport { useGetKyc } from '../../../services/kyc/kyc-query'\nimport { CallbackConvenientTime } from '../../../services/kyc/kyc-typed'\nimport dayjs from 'dayjs'\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(Text)<{ color: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\n\ninterface KycCardProps {\n kycId: string\n}\n\nexport const KycCard = (props: KycCardProps) => {\n const { kycId } = props\n const { data: kyc } = useGetKyc(kycId)\n const {\n firstnameEn = '',\n lastnameEn = '',\n citizenId = '',\n callbackConvenientTime = [],\n callbackMobileNo = '',\n ekycStatus = '',\n } = kyc || {}\n\n const fullname = `${firstnameEn} ${lastnameEn}`\n const convenientTime = useMemo(() => {\n if (callbackConvenientTime?.length) {\n return callbackConvenientTime?.map((item: CallbackConvenientTime) => {\n const { contactEnd, contactStart } = item\n return (\n <>\n \n {dayjs(contactStart).format('hh:mm')}-{dayjs(contactEnd).format('hh:mm')}\n \n \n )\n })\n } else {\n return -\n }\n }, [callbackConvenientTime])\n\n const dataKyc = useMemo(\n () => [\n { label: 'Name', value: firstnameEn ? fullname : '-' },\n { label: 'Citizen Id', value: citizenId ? citizenId : '-' },\n { label: 'Convenient time', valueComponent:
{convenientTime}
},\n { label: 'Callback number', value: callbackMobileNo ? callbackMobileNo : '-' },\n ],\n [callbackMobileNo, citizenId, convenientTime, firstnameEn, fullname],\n )\n\n return (\n \n \n Kyc\n \n \n ({replaceUnderScoreAndCapitalize(ekycStatus)})\n \n \n }\n contents={dataKyc}\n viewMoreUrl={`/ekycs/${kycId}`}\n />\n )\n}\n\nexport default KycCard\n","import React from 'react'\nimport UserProfileCard from '../../../components/templates/UserProfileCard'\nimport { useCurrentUser, useGetUser } from '../../../services/user/user-query'\nimport { useRouter } from '../../../../utils/helper'\nimport PortCard from '../../port/PortDetail/PortCard'\nimport BankAccountCard from '../../bankaccount/BankAccountDetail/BankAccountCard'\nimport KycCard from '../../kyc/KycDetail/KycCard'\n\nexport interface ImageCoroselProps {\n src: string\n}\n\nexport const UserProfile = () => {\n const { userId } = useRouter().query\n const { data: user } = useGetUser(userId)\n const { data: currUser } = useCurrentUser()\n\n const { role } = currUser || {}\n const { portId = '', bankAccount, kyc } = user || {}\n const { id: bankAccountId = '' } = bankAccount || {}\n const { id: kycId = '' } = kyc?.kyc || {}\n\n return user ? (\n \n {portId ? : null}\n {bankAccountId ? : null}\n {kycId ? : null}\n ,\n ]}\n role={role}\n />\n ) : (\n <>\n )\n}\nexport default UserProfile\n","import React, { useCallback, useState } from 'react'\nimport IconButton from '@material-ui/core/IconButton'\nimport SearchIcon from '@material-ui/icons/Search'\nimport { TextField } from '@material-ui/core'\nimport styled from '@emotion/styled'\nimport { CSSProperties } from '@material-ui/core/styles/withStyles'\n\nexport type SearchInputProps = {\n placeholder?: string\n onSearch: (text: string) => void\n value: string\n style?: CSSProperties\n}\n\nconst RootLayout = styled.div`\n display: inline-flex;\n position: relative;\n`\nconst Input = styled(TextField)`\n input {\n min-width: 250px;\n }\n`\nconst IconLayout = styled(IconButton)`\n width: 35px;\n height: 35px;\n position: absolute !important;\n padding: 0 !important;\n right: 0px;\n top: 8px;\n`\n\nexport default (props: SearchInputProps) => {\n const { placeholder = 'Search', onSearch, style, value } = props\n const [text, setText] = useState(value || '')\n const onKeyUp = useCallback(\n e => {\n if (e.key === 'Enter') {\n onSearch(text)\n }\n },\n [onSearch, text],\n )\n const onIconClick = useCallback(\n e => {\n onSearch(text)\n },\n [onSearch, text],\n )\n const onChange = useCallback(e => {\n const text = e.target.value\n setText(text)\n }, [])\n\n return (\n \n \n \n \n \n \n )\n}\n","import React, { useMemo, useCallback } from 'react'\nimport { Table, TableBody, TableCell, TableHead, TableRow, TableContainer } from '@material-ui/core'\nimport Pagination from '@material-ui/lab/Pagination'\nimport styled from '@emotion/styled'\nimport { CSSProperties } from '@material-ui/core/styles/withStyles'\nimport { get } from 'lodash'\n\nexport type DataSourceProps = any\nexport type ColumnsProps = {\n title: string\n dataIndex: string //บังคับใส่เพราะเอาไปทำ key\n minWidth?: string | number\n maxWidth?: string | number\n width?: string | number\n align?: 'left' | 'right' | 'inherit' | 'center' | 'justify' | undefined\n render?: (data: string, record: any) => JSX.Element\n}[]\nexport type PaginationProps = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\nexport type TableProps = {\n data: DataSourceProps\n columns: ColumnsProps\n pagination?: PaginationProps\n onPageChange?: (page: number) => void\n style?: CSSProperties\n}\n\nconst CustomTableHeader = (props: { columns: ColumnsProps }) => {\n const { columns } = props\n return (\n \n \n {columns.map((column, colIndex) => (\n \n
{column.title}
\n \n ))}\n
\n
\n )\n}\n\nconst CustomTableBody = (props: { columns: ColumnsProps; data: any[] }) => {\n const { columns, data } = props\n\n const renderBody = useMemo(() => {\n return (\n <>\n {data.map((item, rowIndex) => {\n return (\n \n {columns.map((column, colIndex) => {\n const columnData = get(item, column.dataIndex)\n\n return (\n \n {column.render && column.render(columnData, item)}\n {!column.render && columnData}\n \n )\n })}\n \n )\n })}\n \n )\n }, [data, columns])\n\n return {renderBody}\n}\n\nconst RootLayout = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`\n\nexport default (props: TableProps) => {\n const {\n data = [],\n columns,\n pagination = { currentPage: 0, totalPages: 0 },\n onPageChange,\n style,\n } = props\n const { currentPage, totalPages } = pagination\n\n const handleChangePage = useCallback(\n (event: unknown, newPage: number) => {\n onPageChange?.(newPage)\n },\n [onPageChange],\n )\n\n return (\n \n \n \n \n \n
\n
\n \n
\n )\n}\n","import React from 'react'\nimport { Card } from 'react-bootstrap'\nimport styled from '@emotion/styled'\n\nimport SearchInput, { SearchInputProps } from '../common/SearchInput'\nimport Table, { TableProps } from '../common/Table'\n\ntype ListPageProps = {\n searchInputProps?: SearchInputProps\n tableProps: TableProps\n topbar?: JSX.Element\n}\n\nconst TopbarLayout = styled.div`\n display: flex;\n align-items: baseline;\n grid-column-gap: 12px;\n`\n\nexport default (props: ListPageProps) => {\n const { searchInputProps, tableProps, topbar } = props\n return (\n <>\n \n \n \n {searchInputProps && }\n {topbar}\n \n \n \n \n \n )\n}\n","import { useMutation, useQuery } from 'react-query'\nimport { parseJsonText } from 'typescript'\nimport { api } from '../../../utils/api'\nimport { UserList } from '../user/user-typed'\nimport { NotiDetail, NotificationUpdateResponse, NotiList } from './notification-typed'\n\nconst NOTIFICATION_URL = `internal/notifications`\n\nexport const useGetNotiList = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [NOTIFICATION_URL, params],\n async () => {\n const datas = await api.savvyGold.get(NOTIFICATION_URL, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n\n return datas.data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetNotificationDetail = ({ notificationId }: { notificationId: string }) => {\n return useQuery(\n [NOTIFICATION_URL, notificationId],\n async () => {\n const datas = await api.savvyGold.get(`${NOTIFICATION_URL}/${notificationId}`)\n return datas.data.data\n },\n { enabled: !!notificationId },\n )\n}\n\nexport const useGetUserOptions = (q: string) => {\n return useQuery(\n [`internal/users/search`, q],\n async () => {\n const datas = await api.savvyGold.get(`internal/users/search`, {\n limit: 5,\n q,\n filter: ['email'],\n })\n\n return datas.data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useUpdateNotification = () => {\n const mutate = useMutation(\n ({ params, notificationId }: any) => {\n /* console.log('API', params, notificationId) */\n return api.savvyGold.put(\n `${NOTIFICATION_URL}/${notificationId}`,\n params,\n )\n },\n {\n onSuccess: data => {\n console.log('sssssss', 'success')\n },\n onError: (e: any) => {\n if (e.message) {\n console.log(e.message)\n }\n },\n },\n )\n return mutate\n}\n\nexport const useCreateNotification = () => {\n const mutate = useMutation(\n ({ params }: any) => {\n /* console.log('API', params, notificationId) */\n return api.savvyGold.post(`${NOTIFICATION_URL}`, params)\n },\n {\n onSuccess: data => {\n console.log('sssssss', 'success')\n },\n onError: (e: any) => {\n if (e.message) {\n console.log(e.message)\n }\n },\n },\n )\n return mutate\n}\n","import React, { useCallback, useMemo } from 'react'\nimport { replaceUnderScoreAndCapitalize, useRouter } from '../../../../utils/helper'\nimport ListPage from '../../../components/templates/ListPage'\nimport { useGetNotiList } from '../../../services/notification/notification-query'\nimport * as paths from '../../../constants/path'\nimport Button from '../../../components/common/Button'\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\nimport { Link } from 'react-router-dom'\nimport styled from '@emotion/styled'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst NotificationList = () => {\n const { push, query } = useRouter()\n const { data: notiList } = useGetNotiList({ q: query.q, page: query.page })\n const { items, meta } = notiList || {}\n\n const onViewClick = useCallback(\n record => {\n const routeParam: any = {\n notificationId: record.id,\n }\n\n push(paths.notificationDetail({ routeParam }))\n },\n [push],\n )\n const onCreateClick = useCallback(\n record => {\n push(paths.notificationCreate())\n },\n [push],\n )\n const convertUserType = useCallback((userType: string) => {\n if (userType === 'individual') {\n return 'Multi user'\n } else if (userType === 'everyone') {\n return 'All user'\n }\n }, [])\n const columns = useMemo(() => {\n return [\n {\n title: 'Title',\n dataIndex: 'title',\n },\n { title: 'Description', dataIndex: 'description' },\n {\n title: 'Send To',\n dataIndex: 'sentDate',\n render: (text: string, record: { email: string; userType: string; userId: string }) => {\n const { email, userType, userId } = record\n return email ? (\n \n {email}\n \n ) : (\n \n {replaceUnderScoreAndCapitalize(convertUserType(userType))} {}\n \n )\n },\n },\n {\n title: 'Send Time',\n dataIndex: 'sentDate',\n render: (text: string, record: { sentDate: string }) => {\n const { sentDate } = record\n return {dayjs(sentDate).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Send',\n dataIndex: 'isSend',\n render: (text: string, record: { isSend: string }) => {\n const { isSend } = record\n return {` ${isSend}`}\n },\n },\n {\n title: '',\n dataIndex: 'action',\n render: (text: string, record: {}) => (\n \n ),\n },\n ]\n }, [convertUserType, onViewClick])\n\n const setQueryParam = useCallback(\n params => {\n push(paths.notification({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n return (\n \n \n Create\n \n \n }\n tableProps={{\n columns,\n data: items,\n onPageChange,\n pagination: {\n currentPage: meta?.currentPage || 0,\n itemCount: meta?.itemCount || 0,\n itemsPerPage: meta?.itemsPerPage || 0,\n totalItems: meta?.totalItems || 0,\n totalPages: meta?.totalPages || 0,\n },\n }}\n searchInputProps={{ onSearch, value: query.q }}\n />\n )\n}\n\nexport default NotificationList\n","import { Card } from 'react-bootstrap'\nimport React, { ReactNode } from 'react'\nimport { CSSProperties } from '@material-ui/core/styles/withStyles'\n\ntype CustomCard = {\n children: ReactNode\n style?: CSSProperties\n border?: 'light' | 'dark'\n}\n\nexport default (props: CustomCard) => {\n const { children, border = 'light', ...restProps } = props\n\n return (\n \n {children}\n \n )\n}\n","import { isEmpty, isEqual } from 'lodash'\n// const makeNormalize = (func: (value: any, prevValue: any) => any) => {\n// return (value: any) => {\n// if (!value) return value;\n// const prevValue = value.slice(0, value.length - 1);\n// return func(value, prevValue);\n// };\n// };\n\nexport const createValidation = (\n obj: (values: T) => { [key in keyof Partial]: (val: any) => string | undefined },\n) => {\n return (values: any) =>\n Object.entries(obj(values)).reduce((r, [key, schema]: any) => {\n r[key] = schema(values[key])\n return r\n }, {} as any)\n}\n\nexport const cp = (...funcs: ((val: any) => string | undefined)[]) => (\n value: any,\n): string | undefined => {\n for (let func of funcs) {\n const message = func(value)\n if (message) {\n return message\n }\n }\n return undefined\n}\n\n// funcs.reduce(\n// (c, func) => (...args: any[]) => c(func(...args)),\n// (...arg: any[]) => arg\n// );\nexport const minLength = (min: number, errorMessage: string) => (val: any) => {\n if (!val) return undefined\n return val && val.length < min ? errorMessage : undefined\n}\n\nexport const maxLength = (max: number, errorMessage: string) => (val: any) => {\n if (!val) return undefined\n return val && val.length > max ? errorMessage : undefined\n}\n\nexport const number = (errorMessage: string) => (val: any) => {\n if (!val) return undefined\n return /^\\d+$/.test(val) ? undefined : errorMessage\n}\n\nexport const required = (errorMessage: string) => (val: any) => {\n return isEmpty(val) ? errorMessage : undefined\n}\n\nexport const when = (\n validateFunc: (val: any) => boolean,\n funcs: (val: any) => string | undefined,\n) => (val: any) => {\n return validateFunc(val) ? funcs(val) : undefined\n}\n\nexport const latitude = (errorMessage: string) => (val: any) => {\n if (!val) return undefined\n return /^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$/.test(val)\n ? undefined\n : errorMessage\n}\n\nexport const longitude = (errorMessage: string) => (val: any) => {\n if (!val) return undefined\n return /^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$/.test(\n val,\n )\n ? undefined\n : errorMessage\n}\nexport const email = (errorMesage: string) => (val: any) => {\n return /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/.test(\n val,\n )\n ? undefined\n : errorMesage\n}\nexport const equal = (value: any, errorMesage: string) => (val: any) => {\n return isEqual(val, value) ? undefined : errorMesage\n}\n","import React from 'react'\n\nimport { ToastContainer, toast } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\n\nconst info = (message: string) => {\n toast(
{message}
, {\n position: 'top-right',\n autoClose: 3000,\n hideProgressBar: true,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n })\n}\nconst error = (message: string) => {\n toast(
{message}
, {\n position: 'top-right',\n autoClose: 3000,\n hideProgressBar: true,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n type: 'error',\n })\n}\n\nconst Toast = () => {\n return \n}\n\nToast.info = info\nToast.error = error\nexport default Toast\n","import React, { useCallback, useMemo, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { FormControlLabel, TextField } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Form, Field } from 'react-final-form'\nimport {\n useCreateNotification,\n useGetNotificationDetail,\n useGetUserOptions,\n useUpdateNotification,\n} from '../../../services/notification/notification-query'\nimport Card from '../../../components/common/Card'\nimport { useRouter } from '../../../../utils/helper'\nimport { DatePickerField, InputField, SelectField, CheckBoxField } from '../../../components/fields'\nimport { createValidation, required, maxLength, cp, when } from '../../../../utils/field-validation'\nimport Toast from '../../../components/common/Toast'\nimport { debounce } from 'lodash'\n\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\n\nconst ContentLayout = styled.div`\n display: flex;\n flex-direction: row;\n`\nconst CustomCard = styled(Card)`\n width: 100%;\n max-width: 1000px;\n`\nconst FlexChild = styled.div`\n flex: 1;\n padding: 24px;\n`\nconst FlexChildCenter = styled.div`\n flex: 1;\n padding: 24px;\n text-align: center;\n`\nconst AndroidPreview = styled.div`\n width: 600px;\n height: 200px;\n background-repeat: no-repeat;\n background-position-x: center;\n background-image: url('https://www.gstatic.com/mobilesdk/190403_mobilesdk/android.png');\n margin-top: 24px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n padding-top: 24px;\n`\nconst IOSPreview = styled.div`\n width: 600px;\n height: 200px;\n background-repeat: no-repeat;\n background-position-x: center;\n background-image: url('https://www.gstatic.com/mobilesdk/190403_mobilesdk/iphone.png');\n margin-top: 10px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n padding-top: 16px;\n`\nconst NotiPreviewCard = styled(Card)`\n width: 58%;\n height: 50%;\n align-self: center;\n padding: 8px;\n .card-body {\n padding: 0;\n }\n`\nconst NotiText = styled.div`\n text-align: left;\n word-break: break-all;\n`\nexport const SentTime = styled(TextField)`\n margin-bottom: 16px;\n`\nconst UserSelect = styled(SelectField)`\n width: 250px;\n margin: 16px 0 16px 0;\n`\n\nconst MargintopButton = styled.div`\n margin-top: 20px;\n text-align: left;\n`\n\ntype FormValue = { title: string; description: string; sentDate: string; isAllUser: boolean }\n\nconst validate = createValidation(values => ({\n title: cp(required('required title'), maxLength(100, 'Maximum length required 100')),\n description: cp(required('required description'), maxLength(100, 'Maximum length required 100')),\n sentDate: cp(\n required('required send date'),\n when(\n () => {\n return dayjs().isAfter(dayjs(values.sentDate))\n },\n () => 'The sending time must be greater than the current time.',\n ),\n ),\n users: when(() => !values.isAllUser, required('required user send to')),\n}))\n\nconst Notification = () => {\n const [q, setQ] = useState('')\n const { query } = useRouter()\n\n const { data: notiDetailData } = useGetNotificationDetail({\n notificationId: query.notificationId,\n })\n\n const initialValues = useMemo(() => {\n const tempData = notiDetailData\n const { users = [] } = tempData || {}\n\n return {\n ...tempData,\n isAllUser: tempData?.userType === 'everyone',\n sentDate: tempData?.sentDate.toDayjs().format('YYYY-MM-DDTHH:mm'),\n users: users.map(({ id, email }) => ({ value: id, label: email })),\n isSend: tempData?.isSend,\n }\n }, [notiDetailData])\n\n const { data: usersResponse } = useGetUserOptions(q)\n const userOptions = useMemo(() => {\n return q && usersResponse\n ? usersResponse.items.map(item => ({ label: item.email, value: item.id }))\n : []\n }, [usersResponse, q])\n\n const makeCalllbackWithDebounce = (callback: (...args: any) => any, wait: number = 300) => {\n return debounce(callback, wait, { leading: true, trailing: false })\n }\n\n const onUserInputChange = useMemo(() => {\n return makeCalllbackWithDebounce(value => {\n setQ(value)\n }, 300)\n }, [])\n\n const { mutate: updateNotiDetail } = useUpdateNotification()\n const { mutate: createNotification } = useCreateNotification()\n\n const onSubmit = useCallback(\n values => {\n const { title, description, sentDate, users, isAllUser } = values\n Toast.info('Submit Success')\n\n const params = {\n title,\n description,\n sentDate,\n userType: isAllUser ? 'everyone' : 'individual',\n users: isAllUser\n ? []\n : users.map((option: { value: string; label: string }) => option.value),\n type: 'buy',\n }\n\n if (query.notificationId) {\n updateNotiDetail({ params, notificationId: query.notificationId })\n } else {\n createNotification({ params })\n }\n },\n [createNotification, query.notificationId, updateNotiDetail],\n )\n\n return (\n <>\n \n {\n values.isAllUser === true && form.change('users', '')\n return (\n
\n \n \n
\n Title\n \n
\n
\n Description\n \n
\n Users\n \n\n \n }\n label=\"send to all user?\"\n />\n Send Time *\n \n\n \n \n \n \n *** The sending time must be three minutes greater than the current time. ***\n \n
\n\n \n \n \n {values.title}\n {values.description}\n \n \n
Android
\n \n \n {values.title}\n {values.description}\n \n \n
iOS
\n
\n
\n \n )\n }}\n />\n
\n \n )\n}\n\nexport default Notification\n","import React from 'react'\nimport styled from '@emotion/styled'\nimport Button from './common/Button'\n\nexport const CustomStyledButton = styled(Button)`\n color: white;\n`\ninterface buttonProps {\n onClick?: any\n}\nconst ButtonViewTable = (props: buttonProps) => {\n const { onClick } = props\n\n return (\n \n View\n \n )\n}\n\nexport default ButtonViewTable\n","import React from 'react'\nimport styled from '@emotion/styled'\n\nconst Flex = styled.div`\n display: flex;\n align-items: center;\n gap: 20px;\n`\nconst Flexrow = styled.div`\n display: flex;\n flex-direction: column;\n align-items: left;\n gap: 10px;\n`\n\nconst FlexName = styled(Flex)`\n gap: 10px;\n`\n\ninterface UsernameTableColumnProps {\n firstnameTh: string\n lastnameTh: string\n citizenId: string\n}\nconst UsernameTableColumn = (props: UsernameTableColumnProps) => {\n const { firstnameTh, lastnameTh, citizenId } = props\n\n return (\n
\n \n \n \n
{firstnameTh}
\n
{lastnameTh}
\n
\n
{citizenId}
\n
\n
\n
\n )\n}\n\nexport default UsernameTableColumn\n","import React, { useCallback } from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport * as pahts from '../../../constants/path'\nimport { useRouter } from '../../../../utils/helper'\nimport { useGetPorts } from '../../../services/port/port-query'\nimport ButtonViewTable from '../../../components/ButtonViewTable'\nimport { Link, useHistory } from 'react-router-dom'\nimport UsernameTableColumn from '../../../components/UsernameTableColumn'\nimport { Port } from '../../../services/port/port-typed'\nimport Text from '../../../components/common/Text'\nimport numeral from 'numeral'\n\nconst column = (onClick: any) => [\n {\n title: 'User',\n dataIndex: 'name',\n render: (text: string, port: Port) => {\n const { firstnameTh = '', lastnameTh = '', citizenId = '' } = port.user || {}\n return (\n \n )\n },\n },\n {\n title: 'Email',\n dataIndex: 'email',\n render: (text: string, port: Port) => {\n const { email, id } = port.user || {}\n return email ? (\n \n {email}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Mobile No.',\n dataIndex: 'mobileNo',\n render: (text: string, port: Port) => {\n const { sgMobileNo, userId } = port || {}\n return sgMobileNo ? (\n \n {sgMobileNo}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Balance (Baht Gold)',\n dataIndex: 'sgGoldBalance',\n render: (text: string, record: { sgGoldBalance: string }) => {\n const { sgGoldBalance } = record\n let b = Number(sgGoldBalance)\n const goldbalance = b / 15.244\n const balance = numeral(goldbalance).format('0,0.0000')\n return {balance}\n },\n },\n {\n title: 'Balance (g.)',\n dataIndex: 'sgGoldBalance',\n render: (text: string, record: { sgGoldBalance: string }) => {\n const { sgGoldBalance } = record\n let b = Number(sgGoldBalance)\n const goldbalance = b\n const balance = numeral(goldbalance).format('0,0.0000')\n return {balance}\n },\n },\n {\n title: '',\n width: 100,\n dataIndex: 'buttonView',\n render: (text: string, port: Port) => {\n return \n },\n },\n]\n\nconst PortList = () => {\n const { push, query } = useRouter()\n const { q, page } = query\n const { data: ports } = useGetPorts({ q, page })\n\n const history = useHistory()\n const setQueryParam = useCallback(\n params => {\n push(pahts.ports({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n const onViewClick = useCallback(\n (portId: string) => {\n history.push(pahts.portDetail({ routeParam: { portId } }))\n },\n [history],\n )\n\n return (\n \n )\n}\n\nexport default PortList\n","import React, { Fragment, ReactNode } from 'react'\nimport styled from '@emotion/styled'\n\nimport Text from '../common/Text'\nimport { Card } from 'react-bootstrap'\nimport { useMemo } from 'react'\nimport { useCallback } from 'react'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\nconst RootLayout = styled(Grid)`\n grid-template-columns: repeat(auto-fill, minmax(49%, 1fr));\n`\nconst ContentDetailLayout = styled(Grid)`\n flex: 1;\n grid-template-columns: 150px auto;\n align-self: self-start;\n`\n\nexport type ContentType = {\n label?: string\n value?: string | JSX.Element\n linkTo?: string\n component?: ReactNode\n position?: 'left' | 'right'\n}\n\ntype DetailPageProps = {\n title: JSX.Element | string\n contents: ContentType[]\n gridItems?: JSX.Element[]\n extendLayout?: JSX.Element\n rightContent?: ReactNode\n}\n\nconst DetailPage = (props: DetailPageProps) => {\n const { title, contents, gridItems, extendLayout, rightContent } = props\n\n const leftItems = useMemo(() => {\n return contents.filter(v => v.position === 'left' || !v.position)\n }, [contents])\n\n const rightItems = useMemo(() => {\n return contents.filter(v => v.position === 'right')\n }, [contents])\n\n const renderContent = useCallback((content: ContentType, index: number) => {\n const { label, value, linkTo, component } = content\n return component ? (\n {component}\n ) : (\n \n {label}\n {typeof value === 'string' || value === undefined || value === null ? (\n \n {value}\n \n ) : (\n value\n )}\n \n )\n }, [])\n\n return (\n \n \n \n
\n {typeof title === 'string' ? (\n \n {title}\n \n ) : (\n title\n )}\n
\n
\n \n {leftItems.map(renderContent)}\n \n {rightContent ? (\n rightContent\n ) : (\n {rightItems.map(renderContent)}\n )}\n
\n {extendLayout ? extendLayout : null}\n
\n
\n {gridItems?.map((gridItem, index) => (\n {gridItem}\n ))}\n
\n )\n}\n\nexport default DetailPage\n","import styled from '@emotion/styled'\nimport { capitalize } from 'lodash'\nimport React, { useMemo } from 'react'\nimport { getColorUserStatus } from '../../../../utils/helper'\nimport Text from '../../../components/common/Text'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport { useGetUser } from '../../../services/user/user-query'\nconst Row = styled.div`\n display: flex;\n flex-flow: row wrap;\n align-items: baseline;\n *:nth-of-type(odd) {\n margin-right: 8px;\n }\n`\ninterface UserIdProps {\n userId: string\n}\n\nexport const UserCard = (props: UserIdProps) => {\n const { userId } = props\n const { data: user } = useGetUser(userId)\n const { firstnameTh = '', citizenId = '', mobileNo = '', gender = '', lastnameTh = '', status } =\n user || {}\n\n const dataUser = useMemo(\n () => [\n {\n label: 'Name',\n valueComponent: firstnameTh ? (\n \n {`${firstnameTh} ${lastnameTh}`}\n {status ? (\n \n {`(${capitalize(status)})`}\n \n ) : null}\n \n ) : (\n '-'\n ),\n },\n { label: 'Citizen No.', value: citizenId ? citizenId : '-' },\n { label: 'Mobile No.', value: mobileNo ? mobileNo : '-' },\n { label: 'Gender', value: gender ? (gender === 'M' ? 'male' : 'female') : '-' },\n ],\n [citizenId, firstnameTh, gender, lastnameTh, mobileNo, status],\n )\n\n return \n}\n\nexport default UserCard\n","import { Attachment } from '../bankaccount/bankaccount-typed'\nimport { Paging } from '../shared-typed'\nimport { User } from '../user/user-typed'\n\nexport type Port = {\n createdAt: string\n deletedAt: string\n id: string\n kycId: string\n sgGoldBalance: string\n sgMobileNo: string\n sgPincode: string\n sgUserId: string\n updatedAt: string\n user?: User\n userId: string\n dcaPlan: DcaPlans\n address: Address[]\n attachments: Attachment[]\n}\nexport type DcaPlans = {\n portId: string\n date: string\n value: string\n deletedAt: string\n id: string\n createdAt: string\n updatedAt: string\n}\nexport type PortList = {\n items: Port[]\n meta: Paging\n}\nexport type Address = {\n id: string\n createdAt: string\n updatedAt: string\n deletedAt: string\n addressableId: string\n addressableType: string\n type: 'citizen' | 'recent' | 'work'\n province: string\n district: string\n subDistrict: string\n detail: string\n mobileNo: string\n zipCode: string\n houseNo: string\n}\n\nexport enum SellType {\n BANK = 'bank',\n TMNWallet = 'true_money_wallet',\n}\n\n\nexport type SellClearPortParams = {\n portId: string\n sellType?: SellType\n}","import React, { useMemo } from 'react'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport Text from '../../../components/common/Text'\nimport { useGetTransactionByPortId } from '../../../services/transaction/transaction-query'\nimport numeral from 'numeral'\nimport {\n getColorTransactionStatus,\n getTransactionTypeColor,\n replaceUnderScoreAndCapitalize,\n} from '../../../../utils/helper'\n\ninterface TransationCardProps {\n portId?: string\n transactionId?: string\n fullname?: string\n}\n\nexport const TransactionCard = (props: TransationCardProps) => {\n const { portId = '', fullname = '' } = props\n\n const { data: transaction, isLoading } = useGetTransactionByPortId(portId)\n const { status, type } = transaction || {}\n\n const dataTransaction = useMemo(() => {\n const typeTransaction = (\n
\n \n {replaceUnderScoreAndCapitalize(transaction?.type)}\n \n \n {` (${replaceUnderScoreAndCapitalize(status)})`}\n \n
\n )\n return [\n { label: 'Type', valueComponent: typeTransaction ? typeTransaction : '-' },\n { label: 'Rate', value: transaction?.sgRate ? `${transaction?.sgRate} THB/g.` : '-' },\n {\n label: 'Gold amount',\n value: transaction?.goldAmount\n ? `${numeral(transaction?.goldAmount).format('0,0.0000')} g.`\n : '-',\n },\n {\n label: 'Price',\n value: transaction?.price ? `${numeral(transaction?.price).format('0,0.00')} THB` : '-',\n },\n {\n label: 'Bank account',\n value:\n transaction?.bankAccountNo && transaction.bankName\n ? `${transaction?.bankAccountNo} - ${transaction?.bankName}`\n : '-',\n },\n ]\n }, [status, transaction, type])\n\n return !isLoading && portId && transaction ? (\n \n ) : (\n <>\n )\n}\n\nexport default TransactionCard\n","import React from 'react'\nimport styled from '@emotion/styled'\nimport { Box } from '@material-ui/core'\nimport { getColorTransactionStatus, replaceUnderScoreAndCapitalize } from '../../../../utils/helper'\nimport Text from '../../../components/common/Text'\nimport { EnumTransactionStatus } from '../../../services/transaction/transaction-typed'\n\nconst Layout = styled(Box)`\n padding: 2px 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n border-radius: 30px;\n\n > p {\n margin: 0;\n }\n`\n\ninterface ITransactionStatusTag {\n status: EnumTransactionStatus\n}\nconst TransactionStatusTag = (props: ITransactionStatusTag) => {\n const { status } = props\n return (\n // \n // {replaceUnderScoreAndCapitalize(status)}\n // \n \n {replaceUnderScoreAndCapitalize(status)}\n \n )\n}\n\nexport default TransactionStatusTag\n","import React, { useCallback, useMemo } from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport Text from '../../../components/common/Text'\nimport {\n getTransactionTypeColor,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport * as paths from '../../../constants/path'\nimport { useGetAllTransactionsByPortId } from '../../../services/transaction/transaction-query'\nimport {\n EnumTransactionStatus,\n EnumTransactionType,\n EnumTransactionTypeCapitalize,\n} from '../../../services/transaction/transaction-typed'\nimport numeral from 'numeral'\nimport dayjs from 'dayjs'\nimport { ColumnsProps } from '../../../components/common/Table'\nimport TransactionStatusTag from '../../transaction/TransactionList/TransactionStatusTag'\nimport { Typography } from '@material-ui/core'\nimport styled from '@emotion/styled'\nimport { SellType } from '../../../services/port/port-typed'\n\nconst TextLib = styled(Typography)`\n line-height: 2 !important;\n`\n\nconst TextColor = styled(TextLib)<{ color?: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\n\nconst column = () =>\n [\n {\n title: 'Type',\n dataIndex: 'type',\n render: (type: EnumTransactionTypeCapitalize) => {\n return (\n \n {replaceUnderScoreAndCapitalize(type)}\n \n )\n },\n },\n {\n title: 'Gold Amount',\n dataIndex: 'goldAmount',\n },\n {\n title: 'Price (THB)',\n dataIndex: 'price',\n render: (price: string) => {\n return {numeral(price).format('0,0.00')} \n },\n },\n {\n title: 'Sell Type',\n dataIndex: 'sellType',\n render: (sellType: SellType) => {\n const type = replaceUnderScoreAndCapitalize(sellType)\n return {type}\n },\n },\n {\n title: 'Created At',\n dataIndex: 'createdAt',\n render: (createdAt: string) => {\n return {dayjs(createdAt).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Status',\n dataIndex: 'status',\n render: (status: EnumTransactionStatus) => {\n return \n },\n },\n ] as ColumnsProps\n\ntype TransactionListProps = {\n portId: string\n}\n\nexport const TransactionList = (props: TransactionListProps) => {\n const { portId } = props\n const { push, query } = useRouter()\n const { q, page } = query\n const { data: transactions, isLoading } = useGetAllTransactionsByPortId(portId, {\n q,\n page,\n type: EnumTransactionType.SELL,\n limit: 5,\n isManual: true,\n })\n const setQueryParam = useCallback(\n params => {\n push(paths.portDetail({ routeParam: { portId }, queryParam: { ...params } }))\n },\n [portId, push],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n const isHasTransaction = useMemo(() => {\n const total = transactions?.meta?.totalItems || 0\n return total > 0\n }, [transactions])\n\n return !isLoading && portId && isHasTransaction ? (\n Manual Cancel Saving Gold Transaction}\n tableProps={{\n columns: column(),\n data: transactions?.items,\n onPageChange,\n pagination: transactions?.meta,\n }}\n />\n ) : (\n <>\n )\n}\n\nexport default TransactionList\n","import { ceil, floor, isNumber } from 'lodash'\nimport { useCallback, useMemo } from 'react'\n\nexport const GOLD_WEIGHT_PER_GOLD_BAHT = 15.244 as const\n\nexport const roundDownOnly = (value: number, digit = 0) => {\n return isNumber(Number(value)) ? floor(Number(value), digit) : 0\n}\n\nexport const roundUpOnly = (value: number, digit = 0) => {\n return isNumber(Number(value)) ? ceil(Number(value), digit) : 0\n}\n\nexport const numberWithCommas = (value: number, digit?: number) => {\n const option = isNumber(digit)\n ? {\n minimumFractionDigits: digit,\n maximumFractionDigits: digit,\n }\n : {}\n return isNumber(Number(value)) ? Number(value).toLocaleString('en-US', option) : value\n}\n\nexport const useGoldConvertor = () => {\n const moneyToGoldWeight = useCallback((money: number, goldPriceInGrams: number) => {\n return goldPriceInGrams > 0 ? money / goldPriceInGrams : 0\n }, [])\n\n const goldWeightToGoldBaht = useCallback((goldWeight: number) => {\n return goldWeight / GOLD_WEIGHT_PER_GOLD_BAHT\n }, [])\n const goldWeightToMoney = useCallback((goldWeight: number, goldPriceInGrams: number) => {\n return goldWeight * goldPriceInGrams\n }, [])\n\n const goldBahtToGoldWeight = useCallback((goldBaht: number) => {\n return goldBaht * GOLD_WEIGHT_PER_GOLD_BAHT\n }, [])\n\n const moneyToGoldBaht = useCallback(\n (money: number, goldPriceInGrams: number) => {\n const goldWeight = moneyToGoldWeight(money, goldPriceInGrams)\n return goldWeightToGoldBaht(goldWeight)\n },\n [moneyToGoldWeight, goldWeightToGoldBaht],\n )\n\n const goldBahtToMoney = useCallback(\n (goldBaht: number, goldPriceInGrams: number) => {\n const goldWeight = goldBahtToGoldWeight(goldBaht)\n return goldWeightToMoney(goldWeight, goldPriceInGrams)\n },\n [goldWeightToMoney, goldBahtToGoldWeight],\n )\n\n const goldPriceInGramsToGoldPriceInBaht = useCallback((goldPriceInGrams: number) => {\n return goldPriceInGrams * GOLD_WEIGHT_PER_GOLD_BAHT\n }, [])\n\n return {\n GOLD_WEIGHT_PER_GOLD_BAHT,\n moneyToGoldWeight,\n moneyToGoldBaht,\n goldWeightToGoldBaht,\n goldWeightToMoney,\n goldBahtToGoldWeight,\n goldBahtToMoney,\n goldPriceInGramsToGoldPriceInBaht,\n }\n}\n\nexport const useSellMoneyHelper = (sellInBaht: number, goldPriceInGrams: number) => {\n const {\n moneyToGoldWeight,\n goldPriceInGramsToGoldPriceInBaht,\n // goldWeightToMoney,\n goldWeightToGoldBaht,\n } = useGoldConvertor()\n\n /**\n * calculate gold weight\n * and round down only to 4 digit for safe gold\n * */\n const sellInGoldWeight = useMemo(\n () => roundDownOnly(moneyToGoldWeight(sellInBaht, goldPriceInGrams), 4),\n [sellInBaht, goldPriceInGrams, moneyToGoldWeight],\n )\n\n /**\n * convert gold weight to thai baht\n * and round up only to 2 digit is real amount for payment\n * */\n // const sellInThaiBaht = useMemo(\n // () => roundUpOnly(goldWeightToMoney(sellInGoldWeight, goldPriceInGrams), 2),\n // [sellInGoldWeight, goldPriceInGrams, goldWeightToMoney],\n // )\n\n /**\n * convert gold weight to gold baht\n * */\n const sellInGoldBaht = useMemo(() => goldWeightToGoldBaht(sellInGoldWeight), [\n sellInGoldWeight,\n goldWeightToGoldBaht,\n ])\n\n /**\n * convert gold price in grams to gold price in thai baht\n * */\n const goldPriceInBaht = useMemo(\n () => roundUpOnly(goldPriceInGramsToGoldPriceInBaht(goldPriceInGrams), 2),\n [goldPriceInGrams, goldPriceInGramsToGoldPriceInBaht],\n )\n\n return {\n sellInThaiBaht: sellInBaht,\n sellInGoldWeight,\n sellInGoldBaht,\n goldPriceInGrams,\n goldPriceInBaht,\n }\n}\n\ntype DisplayNumberFormatOptions = {\n digits?: number\n roundMode?: 'up' | 'down'\n}\n\nexport const useDisplayNumberFormat = () => {\n const getRoundValue = useCallback((value: number, options?: DisplayNumberFormatOptions) => {\n const { digits = 4, roundMode = 'down' } = options || {}\n if (roundMode === 'down') {\n return roundDownOnly(value, digits)\n } else {\n return roundUpOnly(value, digits)\n }\n }, [])\n\n const formatMoney = useCallback(\n (value: number, options?: DisplayNumberFormatOptions) => {\n const { digits = 2 } = options || {}\n const tempValue = getRoundValue(value, {\n digits,\n roundMode: 'up',\n })\n return numberWithCommas(tempValue, digits)\n },\n [getRoundValue],\n )\n\n const formatGoldBaht = useCallback(\n (value: number, options?: DisplayNumberFormatOptions) => {\n const { digits = 4, roundMode } = options || {}\n const tempValue = getRoundValue(value, {\n digits,\n roundMode,\n })\n return numberWithCommas(tempValue, digits)\n },\n [getRoundValue],\n )\n return {\n formatMoney,\n formatGoldBaht,\n }\n}\n","import dayjs from 'dayjs'\nimport { useQuery, UseQueryOptions } from 'react-query'\nimport { savvyGoldClient } from '../../../utils/api/savvy-gold-client'\nimport { GetSellPriceResponse } from './sell-typed'\n\nexport const BASE_SELL_URL = `internal/sell`\nexport const GET_SELL_PRICE_URL = `${BASE_SELL_URL}/sell-prices`\n\nexport const useGetSellPrice = (options?: UseQueryOptions) => {\n return useQuery(\n [GET_SELL_PRICE_URL],\n async () => {\n const { data: res } = await savvyGoldClient.get(GET_SELL_PRICE_URL)\n const data = res.data as GetSellPriceResponse\n return { ...data, updatedAt: dayjs() }\n },\n {\n cacheTime: 5 * 60 * 1000,\n staleTime: 5 * 60 * 1000,\n ...options,\n },\n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styled from '@emotion/styled'\nimport Text from '../../../components/common/Text'\nimport {\n CircularProgress,\n FormControl,\n FormControlLabel,\n FormLabel,\n Modal,\n Radio,\n RadioGroup,\n} from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport Card from 'react-bootstrap/Card'\nimport { Typography } from '@material-ui/core'\nimport {\n useDisplayNumberFormat,\n useGoldConvertor,\n useSellMoneyHelper,\n} from '../../../../utils/core'\nimport { useGetSellPrice } from '../../../services/sell/sell-query'\nimport { SellType } from '../../../services/port/port-typed'\n\nconst Row = styled.div`\n display: flex;\n flex-flow: row wrap;\n align-items: baseline;\n /* *:nth-of-type(odd) {\n margin-right: 8px;\n } */\n`\nconst Divider = styled.div`\n display: flex;\n flex-flow: row wrap;\n width: 100%;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n`\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\nconst ContentLayout = styled(Card)`\n width: fit-content;\n min-width: 350px;\n /* min-height: 300px; */\n padding: 2.25rem;\n grid-row-gap: 12px;\n`\n\nconst TextLib = styled(Typography)`\n line-height: 2 !important;\n`\nconst TextColor = styled(TextLib)<{ color?: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\n\nexport type SellGoldOption = {\n title: string\n sellType: SellType\n}\n\ntype SellGoldModalProps = {\n isOpen: boolean\n onClosed: () => void\n onConfirm: (sellType?: SellType) => void\n sellOptions: SellGoldOption[]\n balance?: string\n}\n\nexport const SellGoldModal = (props: SellGoldModalProps) => {\n const { isOpen, onClosed, onConfirm, balance, sellOptions } = props\n const { data: sellPriceDetail, isLoading, refetch } = useGetSellPrice()\n\n const [selectedSellType, setSelectedSellType] = useState()\n\n const classes = useStyles()\n const { formatMoney, formatGoldBaht } = useDisplayNumberFormat()\n const { goldPriceInGrams, goldPriceInBaht } = useSellMoneyHelper(\n 0,\n sellPriceDetail?.currentPrice || 0,\n )\n const { goldWeightToMoney, goldWeightToGoldBaht } = useGoldConvertor()\n\n const handleClose = useCallback(() => {\n onClosed()\n }, [onClosed])\n\n const onClickSubmit = useCallback(() => {\n onConfirm(selectedSellType)\n }, [onConfirm, selectedSellType])\n\n const onClickCancel = useCallback(() => {\n onClosed()\n }, [onClosed])\n\n const sellAmountInThaiBaht = useMemo(() => {\n const userMoney = goldWeightToMoney(Number(balance), goldPriceInGrams)\n return userMoney\n }, [balance, goldPriceInGrams, goldWeightToMoney])\n\n const userGoldBalanceInGoldWeight = useMemo(() => {\n const userGoldBaht = balance !== undefined ? goldWeightToGoldBaht(Number(balance)) : 0\n\n return userGoldBaht !== undefined\n ? `${\n userGoldBaht === 0\n ? formatGoldBaht(userGoldBaht, { digits: 2 })\n : formatGoldBaht(userGoldBaht, { digits: 4 })\n } gold baht`\n : '-'\n }, [balance, formatGoldBaht, goldWeightToGoldBaht])\n\n useEffect(() => {\n if (isOpen) {\n refetch()\n }\n }, [isOpen, refetch])\n\n const contents = useMemo(() => {\n return [\n { label: 'Balance', value: userGoldBalanceInGoldWeight },\n {\n label: 'Sell Rate',\n value: `฿${formatMoney(goldPriceInBaht ?? 0, {\n digits: 2,\n })}`,\n },\n { value: },\n {\n label: 'Money To Receive',\n value: `฿${formatMoney(sellAmountInThaiBaht ?? 0, {\n digits: 2,\n })}`,\n },\n ]\n }, [formatMoney, goldPriceInBaht, sellAmountInThaiBaht, userGoldBalanceInGoldWeight])\n\n return (\n \n {isLoading ? (\n \n ) : (\n \n Cancel Saving Gold\n {contents.map((content, index) => {\n const { label, value } = content\n return (\n \n {label && {label}}\n\n {typeof value === 'string' ? {value} : value}\n \n )\n })}\n\n \n\n \n Payment Type\n \n {sellOptions?.map((option, index) => {\n return (\n }\n label={option.title}\n onClick={() => setSelectedSellType(option.sellType)}\n />\n )\n })}\n \n \n \n \n \n \n \n )}\n \n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { Typography } from '@material-ui/core'\nimport styled from '@emotion/styled'\nimport { customAddressLabel, useRouter } from '../../../../utils/helper'\nimport { useGetPort, useSellClearPortByPortId } from '../../../services/port/port-query'\nimport DetailPage from '../../../components/templates/DetailPage'\nimport numeral from 'numeral'\nimport UserCard from '../../user/UserProfile/UserCard'\nimport { Address, SellType } from '../../../services/port/port-typed'\nimport { useGetImageUser } from '../../../services/user/user-query'\nimport ImageViewer from '../../../components/common/ImageViewer'\nimport TransactionCard from '../../transaction/TransactionDetail/TransactionCard'\nimport Text from '../../../components/common/Text'\nimport { TransactionList } from './TransactionList'\nimport Button from '../../../components/common/Button'\nimport { SellGoldModal, SellGoldOption } from './SellGoldModal'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport { appConfig } from '../../../constants/app-config'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\n\nconst TextLib = styled(Typography)`\n line-height: 2 !important;\n`\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(TextLib)<{ color?: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\nconst PortDetail = () => {\n const { portId } = useRouter().query\n const { data: port } = useGetPort(portId)\n const { mutate: sellClearPort } = useSellClearPortByPortId()\n\n const [isVisibleSellGoldModal, setIsVisibleSellGoldModal] = useState(false)\n\n const address = useMemo(() => {\n const obj: Partial> = {}\n port?.address.forEach(data => {\n obj[data.type] = data\n })\n return obj\n }, [port])\n\n const { userId = '', sgGoldBalance = '', attachments = [], user, sgUserId = '' } = port || {}\n const { firstnameTh = '', lastnameTh = '' } = user || {}\n const fullname = `${firstnameTh} ${lastnameTh}`\n const { date = '' } = port?.dcaPlan || {}\n let b = Number(sgGoldBalance)\n const goldBalance = b / 15.244\n const balance = numeral(goldBalance).format('0,0.0000')\n const dcaDate = date ? `every ${date} of mount` : '-'\n const [fontCitizenId, setFontCitizenId] = useState('')\n const [backCitizenId, setBackCitizenId] = useState('')\n const [holdCitizenId, setHoldCitizenId] = useState('')\n\n useEffect(() => {\n attachments.forEach(({ type, id: imageId }) => {\n if (type === 'holdCitizen') {\n setHoldCitizenId(imageId)\n } else if (type === 'citizen') {\n setFontCitizenId(imageId)\n } else if (type === 'laserCode') {\n setBackCitizenId(imageId)\n }\n })\n }, [attachments])\n\n const { data: imageCitizen } = useGetImageUser(fontCitizenId, 'origin')\n const { image: imageCitizenPhoto } = imageCitizen! || '-'\n const { data: imageBackCitizen } = useGetImageUser(backCitizenId, 'origin')\n const { image: imageBackCitizenPhoto } = imageBackCitizen! || '-'\n const { data: imageHoldCitizen } = useGetImageUser(holdCitizenId, 'origin')\n const { image: imageHoldCitizenPhoto } = imageHoldCitizen! || '-'\n\n const showPhoto = useMemo(() => {\n if (!imageCitizenPhoto) {\n return 0\n } else if (!imageBackCitizenPhoto) {\n return 0\n } else if (!imageHoldCitizenPhoto) {\n return 0\n }\n }, [imageCitizenPhoto, imageHoldCitizenPhoto, imageBackCitizenPhoto])\n\n const portData = useMemo(\n () => [\n {\n label: 'Registered Address',\n value: customAddressLabel(address.citizen),\n },\n {\n label: 'Present Address',\n value: customAddressLabel(address.recent),\n },\n {\n label: 'Work Address ',\n value: customAddressLabel(address.work),\n },\n { label: 'DCA date', value: dcaDate },\n { label: 'Safe Gold User Id', value: sgUserId },\n {\n label: 'Attachments',\n value:\n showPhoto === 0 ? (\n -\n ) : (\n \n ),\n },\n ],\n [\n address.citizen,\n address.recent,\n address.work,\n dcaDate,\n imageCitizenPhoto,\n imageHoldCitizenPhoto,\n imageBackCitizenPhoto,\n sgUserId,\n showPhoto,\n ],\n )\n\n const sellOptions: SellGoldOption[] = useMemo(() => {\n const sellOptions: SellGoldOption[] = []\n if (appConfig.ENABLE_FEATURE_SELL_TO_BANK) {\n sellOptions.push({\n sellType: SellType.BANK,\n title: 'Bank',\n })\n }\n if (appConfig.ENABLE_FEATURE_SELL_TO_TMN) {\n sellOptions.push({\n sellType: SellType.TMNWallet,\n title: 'True Money Wallet',\n })\n }\n return sellOptions\n }, [])\n\n const isHaveSellOptions = useMemo(() => sellOptions.length > 0, [sellOptions])\n\n const onClickSellGold = useCallback(() => {\n setIsVisibleSellGoldModal(true)\n }, [])\n\n const onCloseSellGoldModal = useCallback(() => {\n setIsVisibleSellGoldModal(false)\n }, [])\n\n const onConfirmSellGold = useCallback(\n (sellType?: SellType) => {\n const sellClearPortParams = {\n portId,\n sellType,\n }\n sellClearPort(sellClearPortParams)\n setIsVisibleSellGoldModal(false)\n },\n [portId, sellClearPort],\n )\n\n return (\n
\n \n Balance\n {balance ? `${balance} Baht Gold` : '-'}\n {goldBalance > 0 && (\n \n {appConfig.ENABLE_FEATURE_SELL_MANUAL &&\n appConfig.ENABLE_FEATURE_TRUE_MONEY &&\n isHaveSellOptions && (\n \n \n \n )}\n \n )}\n \n }\n contents={portData}\n gridItems={[\n ,\n ,\n ]}\n />\n \n \n
\n {isVisibleSellGoldModal && (\n \n )}\n \n )\n}\n\nexport default PortDetail\n","import React, { useCallback, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { default as AvatarLib } from '@material-ui/core/Avatar'\nimport { useGetImageUser } from '../services/user/user-query'\nimport ImageViewer from './common/ImageViewer'\nimport profile from '../../asset/images/default_profile_picture.jpg'\nconst Flex = styled.div`\n display: flex;\n align-items: center;\n gap: 20px;\n`\nconst Flexrow = styled.div`\n display: flex;\n flex-direction: column;\n align-items: left;\n gap: 10px;\n`\nconst FlexName = styled(Flex)`\n gap: 10px;\n`\ninterface UserTableColumnProps {\n id: string\n firstNameTh: string\n lastNameTh: string\n citizenId: string\n}\nconst UserTableColumn = (props: UserTableColumnProps) => {\n const { firstNameTh, lastNameTh, citizenId, id } = props\n\n const { data: imageUSerProfile } = useGetImageUser(id, 'thumb')\n const { image } = imageUSerProfile || { image: 'noImage' }\n\n return (\n
\n \n
\n {image === 'noImage' ? (\n \n ) : (\n \n )}\n
\n \n \n
{firstNameTh}
\n
{lastNameTh}
\n
\n\n
{citizenId}
\n
\n
\n
\n )\n}\n\nexport default UserTableColumn\n","import React, { useCallback } from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport ButtonViewTable from '../../../components/ButtonViewTable'\nimport UserTableColumn from '../../../components/UserTableColumn'\nimport { useGetUsers } from '../../../services/user/user-query'\nimport { useHistory } from 'react-router'\nimport { User } from '../../../services/user/user-typed'\nimport * as pahts from '../../../constants/path'\nimport { useRouter } from '../../../../utils/helper'\nimport Text from '../../../components/common/Text'\nimport { Link } from 'react-router-dom'\n\nconst column = (onClick: any) => {\n return [\n {\n title: 'Name',\n dataIndex: 'name',\n render: (data: string, user: User) => {\n const { firstnameTh, citizenId, lastnameTh, imageProfile } = user\n const { id } = imageProfile || { id: '' }\n\n return (\n \n )\n },\n },\n {\n title: 'Email',\n dataIndex: 'gender',\n render: (data: string, user: User) => {\n const { email, id } = user || {}\n return email ? (\n \n {email}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Mobile No.',\n dataIndex: 'mobileNo',\n render: (text: string, user: User) => {\n const { mobileNo, id } = user || {}\n return mobileNo ? (\n \n {mobileNo}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Gender',\n dataIndex: 'gender',\n render: (data: string, user: User) => {\n const { gender } = user\n\n return {gender ? (gender === 'M' ? 'male' : 'female') : ''}\n },\n },\n\n {\n title: '',\n dataIndex: 'buttonView',\n render: (text: string, user: User) => {\n return \n },\n },\n ]\n}\n\nexport const UserList = (props: any) => {\n const { push, query } = useRouter()\n const { data: users } = useGetUsers({ q: query.q, page: query.page })\n\n const history = useHistory()\n\n const setQueryParam = useCallback(\n params => {\n push(pahts.users({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n\n const onViewClick = useCallback(\n (userId: string) => {\n history.push(pahts.userProfile({ routeParam: { userId } }))\n },\n [history],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n return (\n \n )\n}\nexport default UserList\n","import React, { useMemo } from 'react'\nimport styled from '@emotion/styled'\nimport { Form } from 'react-final-form'\nimport { Button } from 'react-bootstrap'\nimport { Dialog } from '@material-ui/core'\nimport { DateRangePickerValue } from '../../../components/common/DateRangePicker'\nimport { DateRangePickerField, SelectField } from '../../../components/fields'\nimport dayjs from 'dayjs'\nimport moment from 'moment'\nimport {\n EnumTransactionStatus,\n EnumTransactionType,\n} from '../../../services/transaction/transaction-typed'\nimport { map, transform } from 'lodash'\nimport { pascalize } from 'humps'\n\nconst FormLayout = styled.form`\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n grid-row-gap: 24px;\n\n background-color: white;\n padding: 36px;\n\n width: 100%;\n min-width: 400px;\n max-width: 600px;\n`\n\nconst ContentLayout = styled.div`\n width: 80%;\n display: flex;\n flex-flow: column;\n grid-row-gap: 20px;\n`\n\nconst ButtonStyled = styled(Button)`\n width: max-content;\n`\n\nconst transactionStatusOptions = map(EnumTransactionStatus, value => ({\n value: `${value}`,\n label: pascalize(value),\n}))\ntransactionStatusOptions.unshift({\n value: '',\n label: 'All',\n})\n\nconst transactionTypeOptions = transform(\n EnumTransactionType,\n (acc: BaseOptionType[], value) => {\n if (![EnumTransactionType.TRANSFER_IN, EnumTransactionType.TRANSFER_OUT].includes(value)) {\n acc.push({\n value: `${value}`,\n label: pascalize(value),\n })\n }\n return acc\n },\n [],\n)\n\ntransactionTypeOptions.unshift({\n value: '',\n label: 'All',\n})\n\nconst MIN_YEAR = 2020\nconst MAX_DAYS_SPAN = 60\nconst MAX_MONTHS_SPAN = Math.floor(MAX_DAYS_SPAN / 30)\n\nexport type ExportTransactionFilterFormValues = {\n filterRange?: DateRangePickerValue\n status?: BaseOptionType\n type?: BaseOptionType\n}\n\ntype DialogExportTransactionFilterProps = {\n visible: boolean\n onClose: () => void\n onSubmit: (values: ExportTransactionFilterFormValues) => void\n}\n\nconst DialogExportTransactionFilter = (props: DialogExportTransactionFilterProps) => {\n const { visible, onClose, onSubmit } = props\n\n const now = useMemo(() => {\n return dayjs()\n }, [])\n\n return (\n \n \n onSubmit={onSubmit}\n initialValues={{\n status: {\n value: '',\n label: 'All',\n },\n type: {\n value: '',\n label: 'All',\n },\n }}\n validate={values => {\n const errors: Partial> = {}\n if (values.filterRange) {\n const { startDate, endDate } = values.filterRange\n const monthsDiff = dayjs(endDate).diff(dayjs(startDate), 'month')\n if (Math.abs(monthsDiff) > MAX_MONTHS_SPAN) {\n errors.filterRange = `The start date should be greater that ${MAX_MONTHS_SPAN} months of the end date .`\n }\n }\n return errors\n }}\n >\n {({ handleSubmit }) => {\n return (\n \n \n \n \n \n \n Submit\n \n )\n }}\n \n \n )\n}\n\nexport default DialogExportTransactionFilter\n","import styled from '@emotion/styled'\nimport React, { useCallback } from 'react'\nimport { useToastForReactQuery, useVisible } from '../../../../utils/custom-hooks'\nimport Button from '../../../components/common/Button'\nimport DialogExportTransactionFilter, {\n ExportTransactionFilterFormValues,\n} from './DialogExportTransactionFilter'\nimport 'react-toastify/dist/ReactToastify.css'\nimport { useExportTransactionReport } from '../../../services/transaction/transaction-query'\nimport { ExportTransactionReportParams } from '../../../services/transaction/transaction-typed'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst ExportTransactionReportButton = () => {\n const { visible, open, close } = useVisible()\n\n const { mutate: exportTransactionReport } = useExportTransactionReport()\n const toast = useToastForReactQuery()\n\n const onExportClick = useCallback(\n (values: ExportTransactionFilterFormValues) => {\n const { filterRange, status, type } = values\n const { endDate, startDate } = filterRange || {}\n if (startDate && endDate) {\n const params: ExportTransactionReportParams = {\n startDate,\n endDate,\n status: status?.value ? status?.value : undefined,\n type: type?.value ? type?.value : undefined,\n }\n\n const toastId = toast.open('Exporting...')\n exportTransactionReport(params, {\n onSuccess: () => {\n toast.onSuccess(toastId)\n },\n onError: error => {\n toast.onError(toastId, error)\n },\n })\n }\n close()\n },\n [close, toast, exportTransactionReport],\n )\n const onClose = useCallback(() => {\n close()\n }, [close])\n\n return (\n \n \n Export\n \n \n \n )\n}\n\nexport default ExportTransactionReportButton\n","import React, { useCallback } from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport ButtonViewTable from '../../../components/ButtonViewTable'\nimport Text from '../../../components/common/Text'\nimport {\n getTransactionTypeColor,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport { Link, useHistory } from 'react-router-dom'\nimport * as paths from '../../../constants/path'\nimport { useGetTransactions } from '../../../services/transaction/transaction-query'\nimport {\n EnumTransactionStatus,\n EnumTransactionTypeCapitalize,\n Transaction,\n} from '../../../services/transaction/transaction-typed'\nimport numeral from 'numeral'\nimport dayjs from 'dayjs'\nimport ExportTransactionReportButton from './ExportTransactionReportButton'\nimport { ColumnsProps } from '../../../components/common/Table'\nimport TransactionStatusTag from './TransactionStatusTag'\n\nconst column = (onClick: any) =>\n [\n {\n title: 'Type',\n dataIndex: 'type',\n render: (type: EnumTransactionTypeCapitalize) => {\n return (\n \n {replaceUnderScoreAndCapitalize(type)}\n \n )\n },\n },\n {\n title: 'Gold Amount',\n dataIndex: 'goldAmount',\n render: (goldAmount: number, transaction: Transaction) => {\n const { spentGoldAmount = 0 } = transaction\n const totalGoldAmount = goldAmount + spentGoldAmount\n return {totalGoldAmount} \n },\n },\n {\n title: 'Price (THB)',\n dataIndex: 'price',\n render: (price: string, transaction: Transaction) => {\n const { sgRate = 0, goldAmount = 0, spentGoldAmount = 0 } = transaction\n const totalPrice = Number(sgRate) * (goldAmount + spentGoldAmount)\n return {numeral(totalPrice).format('0,0.00')} \n },\n },\n {\n title: 'Email',\n dataIndex: 'email',\n render: (text: string, transaction: Transaction) => {\n const { email = '', id = '' } = transaction.port.user || {}\n return email ? (\n \n {email}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Created At',\n dataIndex: 'createdAt',\n render: (createdAt: string) => {\n return {dayjs(createdAt).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Status',\n dataIndex: 'status',\n render: (status: EnumTransactionStatus) => {\n return \n },\n },\n {\n title: '',\n dataIndex: 'buttonView',\n render: (text: string, transaction: Transaction) => {\n return \n },\n },\n ] as ColumnsProps\n\nexport const TransactionList = (props: any) => {\n const { push, query } = useRouter()\n const { q, page } = query\n const { data: transactions } = useGetTransactions({ q, page })\n const history = useHistory()\n const setQueryParam = useCallback(\n params => {\n push(paths.transactions({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n\n const onViewClick = useCallback(\n (transactionId: string) => {\n history.push(paths.transactionDetail({ routeParam: { transactionId } }))\n },\n [history],\n )\n return (\n }\n tableProps={{\n columns: column(onViewClick),\n data: transactions?.items,\n onPageChange,\n pagination: transactions?.meta,\n }}\n />\n )\n}\n\nexport default TransactionList\n","import React, { useCallback, useMemo } from 'react'\n\nimport PortalCard from '../../../components/templates/PortalCard'\n\nimport { useGetPort } from '../../../services/port/port-query'\nimport { useGetTransaction } from '../../../services/transaction/transaction-query'\nimport { addresstype } from '../../../services/transaction/transaction-typed'\nimport { CardMedia } from '@material-ui/core'\nimport { first } from 'lodash'\n\ninterface UserIdProps {\n transactionIdAPI: string\n attachment?: string\n}\n\nexport const DeliveryCard = (props: UserIdProps) => {\n const { transactionIdAPI, attachment } = props\n const { data: transaction } = useGetTransaction(transactionIdAPI)\n const transactionAddress = first(transaction?.deliveryDetails)?.address\n const { portId = '' } = transaction || {}\n const { data: port } = useGetPort(portId)\n const { user } = port || {}\n const { firstnameTh: firstNameTh = ' ', lastnameTh: lastNameTh = '' } = user || {}\n\n const {\n patternName = '',\n deliveryStatus,\n mintingCost = '',\n vat = 0,\n deliveryCost = 0,\n amount = 0,\n } = first(transaction?.deliveryDetails) || {}\n const customAddressLabel = useCallback((address: addresstype | undefined) => {\n const {\n province = '',\n district = '',\n subDistrict = '',\n detail = '',\n zipCode = '',\n houseNo = '',\n } = address || {}\n return province ? `${houseNo} ${detail} ${subDistrict} ${district} ${province} ${zipCode}` : '-'\n }, [])\n\n /*\n PACKAGE_PENDING = 1,\n PACKED = 2,\n DISPATCHED = 3,\n DELIVERED = 4,\n FAILED = 5,\n */\n const getStatusDelivery = useMemo(() => {\n if (deliveryStatus === 1) {\n return 'PACKAGE_PENDING'\n }\n if (deliveryStatus === 2) {\n return 'PACKED'\n }\n if (deliveryStatus === 3) {\n return 'DISPATCHED'\n }\n if (deliveryStatus === 4) {\n return 'DELIVERED'\n }\n if (deliveryStatus === 5) {\n return 'FAILED'\n } else {\n return '-'\n }\n }, [deliveryStatus])\n\n const dataDelivery = useMemo(\n () => [\n { label: 'Name', value: firstNameTh ? `${firstNameTh} ${lastNameTh}` : '-' },\n { label: 'Address', value: customAddressLabel(transactionAddress) },\n { label: 'Amount', value: `${amount} g.` },\n { label: 'Pattern Name', value: patternName ? patternName : '-' },\n { label: 'Minting Cost ', value: mintingCost ? mintingCost : '-' },\n { label: 'Vat', value: vat },\n { label: 'Delivery Cost', value: deliveryCost },\n { label: 'Delivery Status', value: getStatusDelivery },\n {\n label: 'Attachment',\n value: attachment ? (\n \n ) : (\n '-'\n ),\n },\n ],\n [\n amount,\n attachment,\n customAddressLabel,\n deliveryCost,\n firstNameTh,\n getStatusDelivery,\n lastNameTh,\n mintingCost,\n patternName,\n transactionAddress,\n vat,\n ],\n )\n\n return \n}\n\nexport default DeliveryCard\n","import numeral from 'numeral'\nimport React, { useMemo } from 'react'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\nimport PortalCard from '../../../components/templates/PortalCard'\nimport {\n getColorPaymentStatus,\n isDevelopment,\n replaceUnderScoreAndCapitalize,\n} from '../../../../utils/helper'\nimport { Payment } from '../../../services/transaction/transaction-typed'\nimport dayjs from 'dayjs'\nimport { compact } from 'lodash'\n\ninterface PaymentCardProps {\n payment: Payment\n}\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(Text)<{ color: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\n\nexport const PaymentCard = (props: PaymentCardProps) => {\n const { payment } = props\n const {\n id,\n amount = '',\n type = '',\n status = '',\n referenceOrder,\n failureMessage = '',\n failOddLog,\n createdAt,\n updatedAt,\n tmnIsvRefundRef,\n tmnPaymentId,\n tmnRefundId,\n } = payment || {}\n\n const checkErrorMessage = useMemo(() => {\n if (type === 'promptpay_no') {\n return failureMessage\n } else if (type === 'online_direct_debit') {\n return failOddLog.transactionList ? failOddLog.transactionList[0].returnMessage : '-'\n } else {\n return '-'\n }\n }, [failOddLog.transactionList, failureMessage, type])\n const dataPayment = useMemo(() => {\n const data = [\n isDevelopment ? { label: 'Id', value: id } : undefined,\n isDevelopment\n ? { label: 'createdAt', value: dayjs(createdAt).format('DD/MM/YYYY HH:mm:ss') }\n : undefined,\n isDevelopment\n ? { label: 'updatedAt', value: dayjs(updatedAt).format('DD/MM/YYYY HH:mm:ss') }\n : undefined,\n { label: 'Amount', value: `${numeral(amount).format('0,0.00')} THB` },\n { label: 'ReferenceOrder', value: referenceOrder ? referenceOrder : '-' },\n { label: 'type.', value: type ? type : '-' },\n { label: 'tmnPaymentId', value: tmnPaymentId ? tmnPaymentId : '-' },\n { label: 'tmnIsvRefundRef', value: tmnIsvRefundRef ? tmnIsvRefundRef : '-' },\n { label: 'tmnRefundId', value: tmnRefundId ? tmnRefundId : '-' },\n ]\n const errorsMessage = { label: 'Message error', value: checkErrorMessage }\n if (status === 'failed') {\n data.push(errorsMessage)\n }\n return compact(data)\n }, [\n id,\n createdAt,\n updatedAt,\n amount,\n referenceOrder,\n type,\n tmnPaymentId,\n tmnIsvRefundRef,\n tmnRefundId,\n checkErrorMessage,\n status,\n ])\n\n return (\n \n \n Payment\n \n \n ({replaceUnderScoreAndCapitalize(status)})\n \n \n }\n contents={dataPayment}\n />\n )\n}\n\nexport default PaymentCard\n","import React, { useMemo } from 'react'\nimport Card from '../../../components/common/Card'\nimport { EnumSafeGoldDataType, Transaction } from '../../../services/transaction/transaction-typed'\nimport Table from '../../../components/common/Table'\nimport dayjs from 'dayjs'\nimport { pascalize } from 'humps'\nimport { replaceUnderScoreAndCapitalize } from '../../../../utils/helper'\n\ninterface TransactionCardProps {\n transaction: Transaction\n}\nexport enum SafeGoldTransactionStatus {\n NOT_CONFIRMED = 0,\n SUCCESS = 1,\n FAILED = 2,\n}\n\nexport enum EnumDeliveryDispatchStatus {\n PACKAGE_PENDING = 1,\n PACKED = 2,\n DISPATCHED = 3,\n DELIVERED = 4,\n FAILED = 5,\n}\nexport enum EnumSettlementStatus {\n SETTLED = 1,\n FAILED = 2,\n}\n\nexport const SafeGoldCallBacksCard = (props: TransactionCardProps) => {\n const { transaction } = props\n const { safeGoldCallbacks = [] } = transaction\n\n const data = useMemo(() => {\n return safeGoldCallbacks.map(safeGoldData => {\n const { isSuccess, data, createdAt } = safeGoldData\n const {\n status,\n txId,\n txDate,\n type,\n settlementDate,\n settlementStatus,\n deliveryStatus,\n productDeliveryNumber,\n isRefund,\n } = data\n const typeCapitalize = replaceUnderScoreAndCapitalize(type)\n switch (type) {\n case EnumSafeGoldDataType.BUY:\n case EnumSafeGoldDataType.SIP:\n return {\n txId,\n type: typeCapitalize,\n isSuccess: isSuccess ? 'Y' : 'N',\n status: SafeGoldTransactionStatus[status] || '-',\n isRefund: isRefund ? 'True' : '',\n txDate,\n createdAt: dayjs(createdAt).format('YYYY-MM-DD HH:mm:ss'),\n }\n case EnumSafeGoldDataType.SELL:\n return {\n txId,\n type: typeCapitalize,\n isSuccess: isSuccess ? 'Y' : 'N',\n status: SafeGoldTransactionStatus[status] || '-',\n settlementStatus: EnumSettlementStatus[settlementStatus] || '-',\n settlementDate: settlementDate ? settlementDate : '-',\n isRefund: isRefund ? 'True' : '',\n createdAt: dayjs(createdAt).format('YYYY-MM-DD HH:mm:ss'),\n }\n case EnumSafeGoldDataType.DELIVERY:\n return {\n txId,\n type: typeCapitalize,\n isSuccess: isSuccess ? 'Y' : 'N',\n status: SafeGoldTransactionStatus[status],\n deliveryStatus: deliveryStatus ? EnumDeliveryDispatchStatus[deliveryStatus] : '-',\n trackingNumber: productDeliveryNumber || '-',\n isRefund: isRefund ? 'True' : '',\n txDate,\n createdAt: dayjs(createdAt).format('YYYY-MM-DD HH:mm:ss'),\n }\n default:\n break\n }\n return {\n txId,\n type: typeCapitalize,\n isSuccess: isSuccess ? 'Y' : 'N',\n status: SafeGoldTransactionStatus[status],\n txDate,\n createdAt: dayjs(createdAt).format('YYYY-MM-DD HH:mm:ss'),\n }\n })\n }, [safeGoldCallbacks])\n\n const columns = useMemo(() => {\n return (\n data.length &&\n Object.keys(data[0]).map(key => {\n return {\n title: pascalize(key),\n dataIndex: key,\n }\n })\n )\n }, [data])\n return columns ? (\n \n Safe Gold CallBack\n
\n \n ) : (\n <>\n )\n}\n\nexport default SafeGoldCallBacksCard\n","import React from 'react'\nimport {\n getColorTransactionStatus,\n getTransactionTypeColor,\n isDevelopment,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport DetailPage, { ContentType } from '../../../components/templates/DetailPage'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\n\nimport {\n useGetGoldProductDetail,\n useGetTransaction,\n} from '../../../services/transaction/transaction-query'\nimport DeliveryCard from './DeliveryCard'\nimport PaymentCard from './PaymentCard'\nimport numeral from 'numeral'\nimport dayjs from 'dayjs'\nimport PortCard from '../../port/PortDetail/PortCard'\nimport { useMemo } from 'react'\nimport SafeGoldCallBacksCard from './SafeGoldCallBacksCard'\nimport { compact, first } from 'lodash'\nimport {\n EnumTransactionType,\n EnumTransactionTypeCapitalize,\n GoldProductType,\n} from '../../../services/transaction/transaction-typed'\nimport { Card, CardMedia } from '@material-ui/core'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\n\nconst TextColor = styled(Text)<{ color: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\nexport const statusDelivery = (type?: EnumTransactionType | EnumTransactionTypeCapitalize) => {\n if (\n type === EnumTransactionType.ONE_TIME_DELIVERY ||\n type === EnumTransactionTypeCapitalize.ONE_TIME_DELIVERY\n ) {\n return true\n } else return false\n}\n\nexport const TransactionDetail = () => {\n const { query } = useRouter()\n const { transactionId } = query || {}\n const { data: transaction } = useGetTransaction(transactionId)\n\n const {\n txId,\n type,\n status,\n goldAmount = 0,\n price = '',\n sgRate = '',\n bankAccountNo = '',\n bankName = '',\n createdAt = '',\n portId = '',\n payment,\n reference = '',\n invoiceLink = '',\n sgUserId = '',\n promoCodeDetail,\n txIdCc = '',\n patternId = '',\n errorMessage,\n spentGoldAmount = 0,\n } = transaction ?? {}\n\n const { data: goldProductDetail } = useGetGoldProductDetail(Number(patternId || undefined))\n\n const goldDetail = useMemo(() => {\n return goldProductDetail as GoldProductType\n }, [goldProductDetail])\n\n const attachment = useMemo(() => {\n return first(goldDetail?.images)\n }, [goldDetail])\n\n const transactionDate = useMemo(() => {\n const totalGoldAmount = spentGoldAmount + goldAmount\n const totalPrice = Number(sgRate) * totalGoldAmount\n const priceGold = numeral(totalPrice).format('0,0.00')\n const priceRate = numeral(sgRate).format('0,0.00')\n const promoCodeContent: ContentType[] = promoCodeDetail?.promoCode\n ? [\n {\n label: 'Promo Code',\n value: promoCodeDetail?.promoCode ? (\n
\n {promoCodeDetail?.promoCode || '-'}\n \n {[\n `${numeral(promoCodeDetail?.rewardPrice || 0).format('0,0.00')} บาท`,\n `(${promoCodeDetail?.rewardAmount} g.)`,\n ].join(' ')}\n \n {promoCodeDetail?.message}\n
\n ) : (\n '-'\n ),\n position: 'left',\n },\n ]\n : []\n\n const data: (ContentType | undefined)[] = [\n {\n label: 'Gold amount',\n value: totalGoldAmount > 0 ? `${totalGoldAmount} g.` : '-',\n position: 'left',\n },\n { label: 'Price', value: priceGold ? `${priceGold} THB` : '-', position: 'left' },\n { label: 'Rate', value: sgRate ? `${priceRate} THB/g.` : '-', position: 'left' },\n {\n label: 'Invoice Link',\n value: invoiceLink ? (\n \n {invoiceLink.split('/').pop()}\n \n ) : (\n '-'\n ),\n position: 'left',\n },\n ...promoCodeContent,\n isDevelopment\n ? {\n label: 'Safe Gold User Id',\n value: sgUserId ? sgUserId : '-',\n position: 'right',\n }\n : undefined,\n { label: 'Tx Id', value: txId ? txId : '-', position: 'right' },\n\n {\n label: 'Time',\n value: createdAt ? dayjs(createdAt).format('DD MMMM YYYY HH:mm') : '-',\n position: 'right',\n },\n {\n label: 'Reference',\n value: reference || '-',\n position: 'right',\n },\n {\n label: 'Bank Account',\n value: bankAccountNo && bankName ? `${bankAccountNo} - ${bankName}` : '-',\n position: 'right',\n },\n {\n label: 'Transaction Blockchain Id',\n value: txIdCc ? `${txIdCc}` : '-',\n position: 'right',\n },\n {\n label: 'Error Message',\n value: errorMessage ? `${errorMessage}` : '-',\n position: 'right',\n },\n ]\n return compact(data)\n }, [\n bankAccountNo,\n bankName,\n createdAt,\n errorMessage,\n goldAmount,\n invoiceLink,\n promoCodeDetail,\n reference,\n sgRate,\n sgUserId,\n spentGoldAmount,\n txId,\n txIdCc,\n ])\n\n return transaction ? (\n
\n \n \n {replaceUnderScoreAndCapitalize(type)}\n \n \n ({replaceUnderScoreAndCapitalize(status)})\n \n \n }\n contents={transactionDate}\n gridItems={[\n <>\n \n {payment ? : null}\n {statusDelivery(type) === true && (\n \n )}\n ,\n ]}\n />\n \n
\n ) : (\n <>\n )\n}\nexport default TransactionDetail\n","import React from 'react'\nimport styled from '@emotion/styled'\n\nconst Flex = styled.div`\n display: flex;\n align-items: center;\n gap: 20px;\n`\nconst Flexrow = styled.div`\n display: flex;\n flex-direction: column;\n align-items: left;\n gap: 10px;\n`\nconst FlexName = styled(Flex)`\n gap: 10px;\n`\n\ninterface UserProfileNameCitizenProps {\n firstnameTh: string\n lastnameTh: string\n citizenId: string\n}\nconst UserProfileNameCitizen = (props: UserProfileNameCitizenProps) => {\n const { firstnameTh, lastnameTh, citizenId } = props\n\n return (\n
\n \n \n \n
{firstnameTh}
\n
{lastnameTh}
\n
\n\n
{citizenId}
\n
\n
\n
\n )\n}\n\nexport default UserProfileNameCitizen\n","import React, { useMemo } from 'react'\nimport styled from '@emotion/styled'\nimport { Form } from 'react-final-form'\nimport { Button } from 'react-bootstrap'\nimport { Dialog } from '@material-ui/core'\nimport { DateRangePickerValue } from '../../../components/common/DateRangePicker'\nimport { DateRangePickerField, SelectField } from '../../../components/fields'\nimport dayjs from 'dayjs'\nimport moment from 'moment'\nimport { pascalize } from 'humps'\nimport { EKycState } from '../../../services/kyc/kyc-typed'\nimport { map } from 'lodash'\n\nconst FormLayout = styled.form`\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n grid-row-gap: 24px;\n\n background-color: white;\n padding: 36px;\n\n width: 100%;\n min-width: 400px;\n max-width: 600px;\n`\n\nconst ContentLayout = styled.div`\n width: 80%;\n display: flex;\n flex-flow: column;\n grid-row-gap: 20px;\n`\n\nconst ButtonStyled = styled(Button)`\n width: max-content;\n`\n\nconst kycStatusOptions = map(EKycState, value => ({\n value: `${value}`,\n label: pascalize(value),\n}))\n\nkycStatusOptions.unshift({\n value: '',\n label: 'All',\n})\n\nconst MIN_YEAR = 2020\nconst MAX_DAYS_SPAN = 60\nconst MAX_MONTHS_SPAN = Math.floor(MAX_DAYS_SPAN / 30)\n\nexport type ExportKycFilterFormValues = {\n filterRange?: DateRangePickerValue\n status?: BaseOptionType\n}\n\ntype DialogExportKycFilterProps = {\n visible: boolean\n onClose: () => void\n onSubmit: (values: ExportKycFilterFormValues) => void\n}\n\nconst DialogExportKycFilter = (props: DialogExportKycFilterProps) => {\n const { visible, onClose, onSubmit } = props\n\n const now = useMemo(() => {\n return dayjs()\n }, [])\n\n return (\n \n \n onSubmit={onSubmit}\n initialValues={{\n status: {\n value: '',\n label: 'All',\n },\n }}\n validate={values => {\n const errors: Partial> = {}\n if (values.filterRange) {\n const { startDate, endDate } = values.filterRange\n const monthsDiff = dayjs(endDate).diff(dayjs(startDate), 'month')\n if (Math.abs(monthsDiff) > MAX_MONTHS_SPAN) {\n errors.filterRange = `The start date should be greater that ${MAX_MONTHS_SPAN} months of the end date .`\n }\n }\n return errors\n }}\n >\n {({ handleSubmit, values }) => {\n console.log({ values })\n return (\n \n \n \n \n \n Submit\n \n )\n }}\n \n \n )\n}\n\nexport default DialogExportKycFilter\n","import styled from '@emotion/styled'\nimport React, { useCallback } from 'react'\nimport { useToastForReactQuery, useVisible } from '../../../../utils/custom-hooks'\nimport Button from '../../../components/common/Button'\nimport DialogExportKycFilter, { ExportKycFilterFormValues } from './DialogExportKycFilter'\nimport { useExportKycReport } from '../../../services/kyc/kyc-query'\nimport 'react-toastify/dist/ReactToastify.css'\nimport { ExportKycReportParams } from '../../../services/kyc/kyc-typed'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst ExportKycReportButton = () => {\n const { visible, open, close } = useVisible()\n\n const { mutate: exportKycReport } = useExportKycReport()\n const toast = useToastForReactQuery()\n\n const onExportClick = useCallback(\n (values: ExportKycFilterFormValues) => {\n const { filterRange, status } = values\n const { endDate, startDate } = filterRange || {}\n if (startDate && endDate) {\n const params: ExportKycReportParams = {\n startDate,\n endDate,\n status: status?.value ? status?.value : undefined,\n }\n\n const toastId = toast.open('Exporting...')\n exportKycReport(params, {\n onSuccess: () => {\n toast.onSuccess(toastId)\n },\n onError: error => {\n toast.onError(toastId, error)\n },\n })\n }\n close()\n },\n [close, toast, exportKycReport],\n )\n const onClose = useCallback(() => {\n close()\n }, [close])\n\n return (\n \n \n Export\n \n \n \n )\n}\n\nexport default ExportKycReportButton\n","import React, { useCallback, useMemo } from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport ButtonViewTable from '../../../components/ButtonViewTable'\nimport UserProfileNameCitizen from '../../../components/UserProfileNameCitizen'\nimport { useHistory } from 'react-router'\nimport * as paths from '../../../constants/path'\nimport {\n getColorStatusKycText,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport { EnumGetKycListFilter, useGetkycs } from '../../../services/kyc/kyc-query'\nimport { Kyc } from '../../../services/kyc/kyc-typed'\nimport Text from '../../../components/common/Text'\nimport { Link } from 'react-router-dom'\nimport ExportKycReportButton from './ExportKycReportButton'\nimport dayjs from 'dayjs'\nimport { Box } from '@material-ui/core'\nimport Select from '../../../components/common/Select'\nimport { values } from 'lodash'\nimport { OnChangeValue } from 'react-select'\nimport styled from '@emotion/styled'\nimport { ClassNames } from '@emotion/react'\nimport { appConfig } from '../../../constants/app-config'\n\nconst column = (onClick: any) => {\n return [\n {\n title: 'User',\n dataIndex: 'name',\n render: (data: string, kyc: Kyc) => {\n const { lastnameTh, citizenId, firstnameTh } = kyc\n return (\n \n )\n },\n },\n {\n title: 'Email',\n dataIndex: 'email',\n render: (text: string, kyc: Kyc) => {\n const { email, userId } = kyc || {}\n return email ? (\n \n {email}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Mobile No.',\n dataIndex: 'mobileNo',\n render: (text: string, kyc: Kyc) => {\n const { mobileNo, userId } = kyc || {}\n return mobileNo ? (\n \n {mobileNo}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Created At',\n dataIndex: 'createdAt',\n render: (text: string, record: { createdAt: string }) => {\n const { createdAt } = record\n return {dayjs(createdAt).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Status',\n dataIndex: 'ekycStatus',\n render: (text: string, record: { ekycStatus: string }) => {\n const { ekycStatus } = record\n return (\n \n {replaceUnderScoreAndCapitalize(ekycStatus)}\n \n )\n },\n },\n {\n title: '',\n dataIndex: 'buttonView',\n render: (text: string, kyc: Kyc) => {\n return \n },\n },\n ]\n}\n\nexport const KycList = () => {\n const { push, query } = useRouter()\n const { data: kycs } = useGetkycs({ q: query.q, page: query.page, filter: query.filter })\n const history = useHistory()\n\n const setQueryParam = useCallback(\n params => {\n push(paths.kycs({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n\n const onViewClick = useCallback(\n (kycId: string) => {\n history.push(paths.kycDetail({ routeParam: { kycId } }))\n },\n [history],\n )\n\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n const onFilterChange = useCallback(\n (value: OnChangeValue) => {\n setQueryParam({ filter: value?.value, page: 1 })\n },\n [setQueryParam],\n )\n\n const kycFilterOptions = useMemo(() => {\n return values(EnumGetKycListFilter).map(\n (e): BaseOptionType => {\n return {\n label: e\n .toString()\n .toUpperCase()\n .replaceAll('_', ' '),\n value: e.toString(),\n }\n },\n )\n }, [])\n\n const filterValue = useMemo(() => {\n const filter = query?.filter ?? EnumGetKycListFilter.ALL\n return kycFilterOptions.find(e => e.value === filter)\n }, [kycFilterOptions, query])\n\n return (\n \n {appConfig.ENABLE_FEATURE_TRUE_MONEY && (\n \n {({ css }) => (\n \n )}\n \n )}\n \n \n }\n tableProps={{\n columns: column(onViewClick),\n data: kycs?.items,\n onPageChange,\n pagination: kycs?.meta,\n }}\n />\n )\n}\nexport default KycList\n","import React, { Fragment } from 'react'\nimport styled from '@emotion/styled'\n\nimport Text from '../common/Text'\nimport { Card } from 'react-bootstrap'\nimport { useCallback } from 'react'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\nconst RootLayout = styled(Grid)`\n grid-template-columns: repeat(auto-fill, minmax(49%, 1fr));\n`\n\nconst BodyLayout = styled(Grid)`\n grid-template-columns: 1fr 1fr;\n align-self: self-start;\n`\n\nconst ItemWarp = styled(Grid)`\n grid-template-columns: 150px auto;\n align-self: self-start;\n`\n\nexport type ContentType = {\n label?: string\n value?: string | JSX.Element\n linkTo?: string\n position?: 'left' | 'right'\n colSpan?: 1 | 2\n}\n\ntype DetailPage2Props = {\n title: JSX.Element | string\n contents: ContentType[]\n gridItems?: JSX.Element[]\n extendLayout?: JSX.Element\n}\n\nconst DetailPage2 = (props: React.PropsWithChildren) => {\n const { title, contents, gridItems, extendLayout } = props\n\n const renderContent = useCallback((content: ContentType, index: number) => {\n const { label, value, linkTo, colSpan = 1 } = content\n return (\n \n {label}\n {typeof value === 'string' || value === undefined || value === null ? (\n \n {value}\n \n ) : (\n value\n )}\n \n )\n }, [])\n\n return (\n \n \n \n
\n {typeof title === 'string' ? (\n \n {title}\n \n ) : (\n title\n )}\n
\n {contents.map(renderContent)}\n {extendLayout ? extendLayout : null}\n
\n
\n {gridItems?.map((gridItem, index) => (\n {gridItem}\n ))}\n
\n )\n}\n\nexport default DetailPage2\n","import React, { useCallback } from 'react'\nimport styled from '@emotion/styled'\nimport Button from '../components/common/Button'\n\nexport const CustomStyledButton = styled(Button)`\n color: white;\n`\ninterface buttonProps {\n onClick?: any\n name: string\n variant:\n | 'primary'\n | 'secondary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'dark'\n | 'light'\n | 'link'\n | 'outline-primary'\n | 'outline-secondary'\n | 'outline-success'\n | 'outline-danger'\n | 'outline-warning'\n | 'outline-info'\n | 'outline-dark'\n | 'outline-light'\n}\nconst ButtonBankAccount = (props: buttonProps) => {\n const { onClick, name, variant } = props\n return (\n \n )\n}\n\nexport default ButtonBankAccount\n","export enum EnumEventName {\n GOLD_ONBOARD_BEGIN = 'Gold - Onboard Begin',\n GOLD_ONBOARD_ACCEPT_TC = 'Gold - Onboard Accept T&C',\n GOLD_ONBOARD_ACCOUNT_VERIFIED = 'Gold - Onboard Account Verified',\n GOLD_ONBOARD_ACCOUNT_FILL_INFO = 'Gold - Onboard Account Fill info',\n GOLD_ONBOARD_CONFIRMED_INFO = 'Gold - Onboard confirmed info',\n GOLD_ONBOARD_OTP_SUCCESS = 'Gold - Onboard OTP Success',\n GOLD_REGISTER_SUCCESS = 'Gold - Register Success',\n GOLD_REQUIRED_EDD = 'Gold - Required EDD',\n GOLD_SUBMITTED_EDD = 'Gold - Submitted EDD',\n GOLD_HOME_DASHBOARD = 'Gold - Home Dashboard',\n GOLD_CLICK_BUTTON = 'Gold - Click Button',\n GOLD_BUY_INPUT_AMOUNT = 'Gold - Buy Input Amount',\n GOLD_BUY_GOLD_SUCCESS = 'Gold - Buy Gold Success',\n GOLD_DCA_SETUP_SUCCESS = 'Gold - DCA Setup Success',\n GOLD_DCA_DELETE = 'Gold - DCA Delete',\n GOLD_SELL_INPUT_AMOUNT = 'Gold - Sell Input Amount',\n GOLD_SELL_GOLD_SUCCESS = 'Gold - Sell Gold Sucess',\n GOLD_ADD_BOOK_BANK_SUCCESS = 'Gold - Add Book Bank Success',\n GOLD_WITHDRAW_DELIVERY_GOLD_CONFIRM = 'Gold - Withdraw Delivery Gold Confirm',\n GOLD_PAY_FEE_SUCCESS = 'Gold - Pay Fee Success',\n GOLD_ERROR = 'Gold - Error',\n}\n\nexport enum EnumMixPanelType {\n TRACK = 'track',\n PEOPLE = 'people',\n TRACK_AND_PEOPLE = 'track_and_people',\n}\n\nexport enum EnumPropertyName {\n CHANNEL = 'Channel',\n MARKETING_CONSENT = 'Marketing consent',\n SOURCE = 'Source',\n QUESTION = 'Question',\n TOTAL_GOLD = 'Total Gold',\n TOTAL_BALANCE = 'Total balance',\n IS_CUSTOMER = 'isCustomer',\n PROFIT_LOSS = 'Profit/Loss',\n PERCENT_PROFIT_LOSS = '%Profit/Loss',\n GOLD_MARKET_PRICE = 'Gold Market Price',\n PERCENT_CHANGE = '% Change',\n BUTTON_NAME = 'Button name',\n AMOUNT = 'Amount',\n GOLD_WEIGHT = 'Gold Weight',\n GOLD_PRICE = 'Gold Price',\n DATE = 'Date',\n BANK = 'Bank',\n PATTERN = 'Pattern',\n PREMIUM_FEE = 'Premium fee',\n DELIVERY_FEE = 'Delivery fee',\n ERROR_CODE = 'Error code',\n ERROR_MESSAGE = 'Error message',\n}\n\nexport enum EnumPeoplePropertyName {\n GOLD_BIRTHYEAR = 'Gold - Birthyear',\n GOLD_MARKETING_CONSENT = 'Gold - Marketing consent',\n GOLD_ACCOUNT_LEVEL = 'Gold - Account Level',\n GOLD_OCCUPATION = 'Gold - Occupation',\n GOLD_INCOME_RANGE = 'Gold - Income Range',\n GOLD_REGISTERED_DATE = 'Gold - Registered Date',\n GOLD_ACCOUNT_RISK_LEVEL = 'Gold - Account Risk Level',\n GOLD_ONBOARD_STATUS = 'Gold - Onboard Status',\n GOLD_TOTAL_GOLD = 'Gold - Total Gold',\n GOLD_TOTAL_BALANCE = 'Gold - Total Balance',\n GOLD_PROFIT_LOSS = 'Gold - Profit/Loss',\n GOLD_DCA_DATE = 'Gold - DCA Date',\n GOLD_DCA_AMOUNT = 'Gold - DCA Amount',\n}\n\nexport type Property = {\n key: string\n value: string\n}\n\nexport type PeopleProperty = {\n key: string\n value: string\n}\n\nexport type MixPanelTrackEvent = {\n mixPanelType: EnumMixPanelType\n eventName: EnumEventName\n property?: Property[]\n peopleProperty?: PeopleProperty[]\n}\n","import React, { useCallback, useState } from 'react'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\nimport ButtonBankAccount from '../../../components/ButtonApproveBankAccount'\nimport Toast from '../../../components/common/Toast'\nimport Modal from '@material-ui/core/Modal'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport { Grid } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Card } from 'react-bootstrap'\nimport { useApproveKyc, useRejectKyc } from '../../../services/kyc/kyc-query'\nimport { appConfig } from '../../../constants/app-config'\nimport {\n EnumEventName,\n EnumMixPanelType,\n EnumPeoplePropertyName,\n} from '../../../services/mix-panel/mix-panel-typed'\nimport dayjs from 'dayjs'\nimport { useMixPanelTrackEvent } from '../../../services/mix-panel/mix-panel-query'\nimport { useBrazeTrackEvent } from '../../../services/braze/braze.query'\nimport { useGetUser } from '../../../services/user/user-query'\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\n\nconst FlexButton = styled(Flex)`\n margin: 10px;\n`\nconst useStyles = makeStyles(() => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\nenum CurrentButtonAction {\n REJECT = 'reject',\n APPROVE = 'approve',\n}\n\ntype KycOnPendingActionProps = {\n kycId: string\n userId: string\n}\n\nconst KycOnPendingAction = (props: KycOnPendingActionProps) => {\n const { kycId, userId } = props\n const { data: user } = useGetUser(userId)\n const classes = useStyles()\n const modalVisible = useVisible()\n const [currentButtonAction, setCurrentButtonAction] = useState()\n\n const { mutate: rejectKyc } = useRejectKyc()\n const { mutate: approveKyc } = useApproveKyc()\n\n const handleOpenModal = useCallback(() => {\n modalVisible.open()\n }, [modalVisible])\n\n const { publicProfile } = user?.tmnProfile || {}\n const { distinctId } = publicProfile || {}\n\n const { mutate: mixPanelTrackEvent } = useMixPanelTrackEvent(distinctId || '')\n const { mutate: brazeTrackEvent } = useBrazeTrackEvent(distinctId || '')\n\n const onRegisterSuccess = useCallback(\n (risk: boolean) => {\n if (distinctId) {\n const peopleProperty = [\n {\n key: EnumPeoplePropertyName.GOLD_REGISTERED_DATE,\n value: `${dayjs()}`,\n },\n {\n key: EnumPeoplePropertyName.GOLD_ACCOUNT_LEVEL,\n value: '2',\n },\n {\n key: EnumPeoplePropertyName.GOLD_ACCOUNT_RISK_LEVEL,\n value: '2',\n },\n ]\n mixPanelTrackEvent({\n mixPanelType: EnumMixPanelType.TRACK_AND_PEOPLE,\n eventName: EnumEventName.GOLD_REGISTER_SUCCESS,\n peopleProperty: peopleProperty,\n })\n brazeTrackEvent({\n eventName: EnumEventName.GOLD_REGISTER_SUCCESS,\n })\n }\n },\n [brazeTrackEvent, distinctId, mixPanelTrackEvent],\n )\n\n const onUpdateBankAccountStatusClick = useCallback(() => {\n if (currentButtonAction === CurrentButtonAction.APPROVE) {\n approveKyc(kycId, {\n onSuccess: () => {\n Toast.info(`Kyc Approve Success`)\n },\n onError: () => {\n Toast.error(`Kyc Approve Fail`)\n },\n })\n } else {\n rejectKyc(kycId, {\n onSuccess: () => {\n Toast.info(`Kyc Reject Success`)\n },\n onError: () => {\n Toast.error(`Kyc Reject Fail`)\n },\n })\n }\n modalVisible.close()\n }, [approveKyc, currentButtonAction, kycId, modalVisible, rejectKyc])\n\n return (\n <>\n \n {appConfig.ENABLE_FEATURE_APPROVE_KYC && (\n {\n setCurrentButtonAction(CurrentButtonAction.APPROVE)\n handleOpenModal()\n }}\n name=\"Approve\"\n variant=\"success\"\n />\n )}\n\n {\n setCurrentButtonAction(CurrentButtonAction.REJECT)\n handleOpenModal()\n }}\n name=\"Reject\"\n variant=\"danger\"\n />\n \n \n \n Are You Sure\n \n \n Yes\n \n \n No\n \n \n \n \n \n )\n}\n\nexport default KycOnPendingAction\n","import { UseMutationOptions } from 'react-query'\nimport { useMutation } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { BrazeTrackEvent } from './braze.typed'\n\nexport const BASE_BRAZE = 'braze'\n\nexport const useBrazeTrackEvent = (\n externalId: string,\n options?: UseMutationOptions<{ data: string }, unknown, BrazeTrackEvent>,\n) => {\n return useMutation(\n [BASE_BRAZE],\n async params => {\n const { data } = await api.savvyGold.post<{ data: string }>(\n `${BASE_BRAZE}/${externalId}`,\n params,\n )\n return data.data\n },\n {\n onError: () => {\n //error\n },\n ...options,\n },\n )\n}\n","import { UseMutationOptions } from 'react-query'\nimport { MixPanelTrackEvent } from './mix-panel-typed'\nimport { api } from '../../../utils/api'\nimport { useMutation } from 'react-query'\n\nexport const BASE_MIX_PANEL = 'mix-panel'\n\nexport const useMixPanelTrackEvent = (\n distinctId: string,\n options?: UseMutationOptions<{ data: string }, unknown, MixPanelTrackEvent>,\n) => {\n return useMutation(\n [BASE_MIX_PANEL],\n async params => {\n const { data } = await api.savvyGold.post<{ data: string }>(\n `${BASE_MIX_PANEL}/${distinctId}`,\n params,\n )\n return data.data\n },\n {\n onError: () => {\n //error\n },\n ...options,\n },\n )\n}\n","import React, { Fragment } from 'react'\nimport { RiskAssessment } from \"../../../services/kyc/kyc-typed\"\nimport styled from '@emotion/styled'\nimport Text from '../../../components/common/Text'\n\nexport type RiskAssessmentDetailProps = {\n riskAssessments: RiskAssessment[]\n}\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n`\n\nconst RiskAssessmentDetail = (props: RiskAssessmentDetailProps) => {\n const {riskAssessments} = props\n return (\n \n {riskAssessments.map((risk, index)=>{\n return (\n \n
\n \n {`${index+1}. ${risk.description}`}\n \n \n {risk.answer ? '- ใช่ -' : '- ไม่ใช่ -'}\n \n
\n
)\n }\n )\n }\n
\n \n )\n}\n\nexport default RiskAssessmentDetail","import React, { Fragment, useEffect, useMemo, useState } from 'react'\nimport { useGetKyc } from '../../../services/kyc/kyc-query'\nimport {\n customAddressLabel,\n getColorStatusKycText,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport { UserCard } from '../../user/UserProfile/UserCard'\nimport styled from '@emotion/styled'\nimport Text from '../../../components/common/Text'\nimport ImageViewer from '../../../components/common/ImageViewer'\nimport { useGetImageUser } from '../../../services/user/user-query'\nimport dayjs from 'dayjs'\nimport { Address } from '../../../services/port/port-typed'\nimport DetailPage2, { ContentType } from '../../../components/templates/DetailPage2'\nimport KycOnPendingAction from './KycOnPendingAction'\nimport { Box } from '@material-ui/core'\nimport { EKycState } from '../../../services/kyc/kyc-typed'\nimport RiskAssessmentDetail from './RiskAssessmentDetail'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport { isEmpty } from 'lodash'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\nconst RejectedReasonLayout = styled.div`\n display: grid;\n grid-template-columns: 150px auto;\n grid-gap: 10px;\n border-top: 1px solid var(--secondary);\n\n margin-top: 16px;\n padding-top: 16px;\n\n .title {\n grid-column: 1 / span 2;\n }\n`\n\nconst TitleLayout = styled(Box)`\n display: flex;\n flex-flow: row;\n justify-content: space-between;\n align-items: center;\n`\n\nexport const Flex = styled(Grid)`\n display: flex;\n margin: 0px;\n`\n\nexport const KycDetail = () => {\n const { kycId } = useRouter().query\n const { data: kyc } = useGetKyc(kycId)\n const {\n ekycStatus = '',\n titleEn = '',\n firstnameEn = '',\n lastnameEn = '',\n citizenId = '',\n laserCode = '',\n gender = '',\n titleTh = '',\n firstnameTh = '',\n lastnameTh = '',\n birthdate = '',\n job = '',\n email = '',\n dopa,\n amlo,\n registerError,\n rejectReason,\n attachments = [],\n } = kyc || {}\n const [fontCitizenId, setFontCitizenId] = useState('')\n const [backCitizenId, setBackCitizenId] = useState('')\n const [holdCitizenId, setHoldCitizenId] = useState('')\n\n useEffect(() => {\n attachments.forEach(({ type, id: imageId }) => {\n if (type === 'holdCitizen') {\n setHoldCitizenId(imageId)\n } else if (type === 'citizen') {\n setFontCitizenId(imageId)\n } else if (type === 'laserCode') {\n setBackCitizenId(imageId)\n }\n })\n }, [attachments])\n\n const { data: imageCitizen } = useGetImageUser(fontCitizenId, 'origin')\n const { image: imageCitizenPhoto } = imageCitizen! || '-'\n const { data: imageUser } = useGetImageUser(backCitizenId, 'origin')\n const { image: imageUserPhoto } = imageUser! || '-'\n const { data: imageHoldCitizen } = useGetImageUser(holdCitizenId, 'origin')\n const { image: imageHoldCitizenPhoto } = imageHoldCitizen! || '-'\n\n const someImageMissing = useMemo(() => {\n return !imageCitizenPhoto || !imageUserPhoto || !imageHoldCitizenPhoto\n }, [imageCitizenPhoto, imageHoldCitizenPhoto, imageUserPhoto])\n\n const address = useMemo(() => {\n return kyc?.addresses && kyc?.addresses.length\n ? kyc?.addresses?.reduce((acc: Partial>, data) => {\n acc[data.type] = data\n return acc\n }, {})\n : {}\n }, [kyc])\n\n const dataKyc = useMemo(() => {\n const data: ContentType[] = [\n { label: 'Title EN', value: titleEn ? titleEn : '-', position: 'left' },\n { label: 'Firstname EN', value: firstnameEn ? firstnameEn : '-', position: 'left' },\n { label: 'Lastname EN', value: lastnameEn ? lastnameEn : '-', position: 'left' },\n { label: 'Citizen Id', value: citizenId ? citizenId : '-', position: 'left' },\n { label: 'Laser code', value: laserCode ? laserCode : '-', position: 'left' },\n { label: 'Gender', value: gender ? gender : '-', position: 'left' },\n { label: 'Title TH', value: titleTh ? titleTh : '-', position: 'right' },\n { label: 'Firstname TH', value: firstnameTh ? firstnameTh : '-', position: 'right' },\n { label: 'Lastname TH', value: lastnameTh ? lastnameTh : '-', position: 'right' },\n {\n label: 'Birthdate',\n value: birthdate ? dayjs(birthdate).format('DD-MM-YYYY') : '-',\n position: 'right',\n },\n { label: 'Job', value: job ? job : '-', position: 'right' },\n { label: 'Email', value: email ? email : '-', position: 'right' },\n ]\n if (address.citizen) {\n data.push({\n label: 'Registered Address',\n colSpan: 2,\n value: customAddressLabel(address.citizen),\n })\n }\n if (address.recent) {\n data.push({\n label: 'Present Address',\n colSpan: 2,\n value: customAddressLabel(address.recent),\n })\n }\n if (address.work) {\n data.push({\n label: 'Work Address ',\n colSpan: 2,\n value: customAddressLabel(address.work),\n })\n }\n // data.push({\n // label: 'Attachments',\n // value: someImageMissing ? (\n // -\n // ) : (\n // \n // ),\n // })\n if (kyc?.riskAssessments) {\n data.push({\n label: 'Risk Assessment',\n value: ,\n })\n }\n return data\n }, [\n address.citizen,\n address.recent,\n address.work,\n birthdate,\n citizenId,\n email,\n firstnameEn,\n firstnameTh,\n gender,\n job,\n kyc,\n laserCode,\n lastnameEn,\n lastnameTh,\n titleEn,\n titleTh,\n ])\n\n const dateRejectReasons = useMemo(() => {\n const data: ContentType[] = []\n if (registerError) data.push({ label: 'RegisterError', value: registerError })\n if (rejectReason) data.push({ label: 'RejectReason', value: rejectReason })\n if (dopa && dopa.isError === 'true') data.push({ label: 'Dopa', value: dopa.desc })\n if (amlo && amlo.status && amlo.status !== 'pass')\n data.push({ label: 'Amlo', value: amlo.data })\n return data\n }, [amlo, dopa, registerError, rejectReason])\n\n const isEmptyRiskAssessment = useMemo(() => isEmpty(kyc?.riskAssessments), [kyc])\n\n return kyc ? (\n \n \n {replaceUnderScoreAndCapitalize(ekycStatus)}\n \n {ekycStatus === EKycState.PENDING && !isEmptyRiskAssessment && (\n \n \n \n )}\n \n }\n contents={dataKyc}\n gridItems={[]}\n extendLayout={\n dateRejectReasons.length ? (\n \n
\n \n Reject Reason\n \n
\n {dateRejectReasons.map((dateRejectReason, index) => (\n \n {dateRejectReason?.label}\n {dateRejectReason?.value}\n \n ))}\n
\n ) : (\n undefined\n )\n }\n />\n ) : (\n <>\n )\n}\nexport default KycDetail\n","import React from 'react'\nimport ListPage from '../../../components/templates/ListPage'\nimport ButtonViewTable from '../../../components/ButtonViewTable'\nimport Text from '../../../components/common/Text'\nimport {\n getColorStatusBankAccountText,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport { Link, useHistory } from 'react-router-dom'\nimport { useCallback } from 'react'\nimport * as paths from '../../../constants/path'\nimport { useGetBankAccounts } from '../../../services/bankaccount/bankaccount-query'\nimport { BankAccount, BankAccountStatus } from '../../../services/bankaccount/bankaccount-typed'\nimport { User } from '../../../services/user/user-typed'\n\nconst column = (onClick: any) => [\n {\n title: 'Bank',\n dataIndex: 'bank',\n\n render: (text: string, record: { no: string; bank: string; branch: string }) => {\n const { no, bank, branch } = record\n return (\n
\n {no}{' '}\n \n {bank} {branch}\n {' '}\n
\n )\n },\n },\n\n {\n title: 'User',\n dataIndex: 'name',\n render: (text: string, bankaccount: { name: string; user: User }) => {\n const { name, user } = bankaccount\n const { citizenId } = user\n return (\n
\n {name}\n {citizenId}\n
\n )\n },\n },\n {\n title: 'Email',\n dataIndex: 'email',\n render: (text: string, bankaccount: { name: string; user: User }) => {\n const { user } = bankaccount\n const { email = '', id = '' } = user\n return email ? (\n \n {email}\n \n ) : (\n ''\n )\n },\n },\n {\n title: 'Status',\n dataIndex: 'approvedStatus',\n render: (text: string, record: { approvedStatus: BankAccountStatus }) => {\n const { approvedStatus } = record\n return (\n \n {replaceUnderScoreAndCapitalize(approvedStatus)}{' '}\n \n )\n },\n },\n {\n title: '',\n dataIndex: 'buttonView',\n render: (text: string, bankaccount: BankAccount) => {\n return \n },\n },\n]\n\nexport const BackAccountList = () => {\n const { push, query } = useRouter()\n const { q, page } = query\n const { data: bankaccount } = useGetBankAccounts({ q, page })\n\n const history = useHistory()\n\n const setQueryParam = useCallback(\n params => {\n push(paths.bankAccounts({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onViewClick = useCallback(\n (bankAccountId: string) => {\n history.push(paths.bankAccountDetail({ routeParam: { bankAccountId } }))\n },\n [history],\n )\n return (\n \n )\n}\nexport default BackAccountList\n","import React, { useCallback, useState, useRef } from 'react'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\nimport { usePatchBankAccountVerify } from '../../../services/bankaccount/bankaccount-query'\nimport { BankAccountStatus } from '../../../services/bankaccount/bankaccount-typed'\nimport ButtonBankAccount from '../../../components/ButtonApproveBankAccount'\nimport { useCurrentUser } from '../../../services/user/user-query'\nimport Toast from '../../../components/common/Toast'\nimport Modal from '@material-ui/core/Modal'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Input from '../../../components/common/Input'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport { Grid } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Card } from 'react-bootstrap'\nimport { replaceUnderScoreAndCapitalize } from '../../../../utils/helper'\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\n\nconst FlexButton = styled(Flex)`\n margin: 10px;\n`\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\ntype BankAccountOnPendingActionProps = {\n bankAccountId: string\n}\nconst BankAccountOnPendingAction = (props: BankAccountOnPendingActionProps) => {\n const { bankAccountId } = props\n const classes = useStyles()\n const modalVisible = useVisible()\n const refRemark = useRef()\n const { data: user } = useCurrentUser()\n const { id: currentUserId } = user || {}\n\n const { mutate: updateStatusApprove } = usePatchBankAccountVerify(currentUserId!)\n const [statusBank, setStatusBank] = useState()\n\n const handleOpenModal = useCallback(\n status => {\n modalVisible.open()\n setStatusBank(status)\n },\n [modalVisible],\n )\n\n const onUpdateBankAccountStatusClick = useCallback(() => {\n const form = refRemark.current\n const remark = form?.value ? form?.value : ''\n updateStatusApprove(\n { bankAccountId, status: statusBank!, remark },\n {\n onSuccess: () => {\n Toast.info(`${replaceUnderScoreAndCapitalize(statusBank)} Success`)\n },\n onError: () => {\n Toast.error(`${replaceUnderScoreAndCapitalize(statusBank)} Fail`)\n },\n },\n )\n modalVisible.close()\n }, [bankAccountId, modalVisible, statusBank, updateStatusApprove])\n\n return (\n <>\n \n \n\n \n \n \n \n Are You Sure\n {statusBank === BankAccountStatus.REJECTED && (\n
\n \n
\n )}\n \n \n Yes\n \n \n No\n \n \n
\n
\n \n )\n}\n\nexport default BankAccountOnPendingAction\n","import React, { useCallback } from 'react'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\nimport { useCancelBankAccount } from '../../../services/bankaccount/bankaccount-query'\nimport ButtonBankAccount from '../../../components/ButtonApproveBankAccount'\nimport Toast from '../../../components/common/Toast'\nimport Modal from '@material-ui/core/Modal'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport { Grid } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Card } from 'react-bootstrap'\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\n\nconst FlexButton = styled(Flex)`\n margin: 10px;\n`\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\ntype BankAccountOnApprovedActionProps = {\n bankAccountId: string\n}\nconst BankAccountOnApprovedAction = (props: BankAccountOnApprovedActionProps) => {\n const { bankAccountId } = props\n const classes = useStyles()\n const modalVisible = useVisible()\n\n const { mutate: cancelBankAccount } = useCancelBankAccount()\n\n const onCancelBankAccountClick = useCallback(() => {\n cancelBankAccount(bankAccountId, {\n onSuccess: () => {\n Toast.info(`Cancel Success`)\n },\n onError: () => {\n Toast.error(`Cancel Fail`)\n },\n })\n modalVisible.close()\n }, [bankAccountId, cancelBankAccount, modalVisible])\n\n return (\n <>\n \n \n \n \n \n Are You Sure\n\n \n \n Yes\n \n \n No\n \n \n \n \n \n )\n}\n\nexport default BankAccountOnApprovedAction\n","import React, { useMemo } from 'react'\nimport {\n getColorStatusBankAccountText,\n replaceUnderScoreAndCapitalize,\n useRouter,\n} from '../../../../utils/helper'\nimport ImageViewer from '../../../components/common/ImageViewer'\nimport Text from '../../../components/common/Text'\nimport styled from '@emotion/styled'\nimport DetailPage, { ContentType } from '../../../components/templates/DetailPage'\nimport {\n useGetBankAccount,\n useGetImageBankAccount,\n} from '../../../services/bankaccount/bankaccount-query'\nimport UserCard from '../../user/UserProfile/UserCard'\nimport { BankAccountStatus } from '../../../services/bankaccount/bankaccount-typed'\nimport BankAccountOnPendingAction from './BankAccountOnPendingAction'\nimport BankAccountOnApprovedAction from './BankAccountOnApprovedAction'\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(Text)<{ color: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\nconst ActionLayout = styled.div`\n grid-column: 1 / -1;\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n flex: 1;\n width: 100%;\n`\nconst ImageViewerStyled = styled(ImageViewer)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n flex: 1;\n width: 50%;\n .thumb-image {\n width: 100%;\n height: 100%;\n max-height: 500px;\n margin: unset;\n }\n`\n\nexport const BankAccountDetail = () => {\n const { bankAccountId } = useRouter().query\n\n const { data: bankAccountData } = useGetBankAccount(bankAccountId)\n const {\n approvedStatus,\n bank = '',\n branch = '',\n no = '',\n remark = '',\n userId = '',\n imageBankAccount = '',\n } = bankAccountData || {}\n\n const { id: imageBankAccountId = '' } = imageBankAccount || {}\n const { data: imageBackAccountData } = useGetImageBankAccount(imageBankAccountId)\n\n const dataBankAccount = useMemo((): ContentType[] => {\n return [\n { label: 'Bank Name', value: bank === null || branch === null ? '-' : `${bank} - ${branch}` },\n { label: 'Remark', value: remark ? remark : '-' },\n {\n component: (\n \n {approvedStatus === BankAccountStatus.APPROVED && (\n \n )}\n {approvedStatus === BankAccountStatus.PENDING && (\n \n )}\n \n ),\n },\n ]\n }, [approvedStatus, bank, bankAccountId, branch, remark])\n\n const imageBackAccount = useMemo(() => {\n const image = imageBackAccountData?.image\n return image ? : undefined\n }, [imageBackAccountData])\n\n return bankAccountData ? (\n \n \n \n Bank Account Number {no}\n \n \n {`(${replaceUnderScoreAndCapitalize(approvedStatus)})`}\n \n \n \n }\n contents={dataBankAccount}\n gridItems={[]}\n rightContent={imageBackAccount}\n />\n ) : (\n <>\n )\n}\nexport default BankAccountDetail\n","import React, { useCallback, useMemo } from 'react'\nimport { useRouter } from '../../../../utils/helper'\nimport ListPage from '../../../components/templates/ListPage'\nimport * as paths from '../../../constants/path'\nimport Button from '../../../components/common/Button'\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\nimport styled from '@emotion/styled'\nimport { useGetAllArticle } from '../../../services/article/article-query'\nimport { Chip } from '@material-ui/core'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst ArticleList = () => {\n const { push, query } = useRouter()\n const { data: articleData } = useGetAllArticle({ page: query.page, q: query.q })\n const { items, meta } = articleData || {}\n\n const onViewClick = useCallback(\n record => {\n const routeParam: any = {\n id: record.id,\n }\n\n push(paths.articleDetail({ routeParam }))\n },\n [push],\n )\n\n const onCreateClick = useCallback(\n record => {\n push(paths.createArticle())\n },\n [push],\n )\n\n const columns = useMemo(() => {\n return [\n {\n title: 'Title',\n dataIndex: 'title',\n },\n { title: 'Author', dataIndex: 'authorName' },\n {\n title: 'Status',\n dataIndex: 'isActive',\n render: (text: string, record: { isActive: boolean }) => {\n const { isActive } = record\n return isActive ? (\n \n ) : (\n \n )\n },\n },\n {\n title: 'Last Modified Date',\n dataIndex: 'updatedAt',\n render: (text: string, record: { updatedAt: string }) => {\n const { updatedAt } = record\n return {dayjs(updatedAt).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Publish Date',\n dataIndex: 'publishDate',\n render: (text: string, record: { publishDate: string }) => {\n const { publishDate } = record\n return publishDate ? (\n {dayjs(publishDate).format('D MMMM YYYY HH:mm ')}\n ) : (\n {`Not published yet`}\n )\n },\n },\n {\n title: '',\n dataIndex: 'action',\n render: (text: string, record: {}) => (\n \n ),\n },\n ]\n }, [onViewClick])\n\n const setQueryParam = useCallback(\n params => {\n push(paths.article({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n return (\n \n \n \n Create\n \n \n \n }\n tableProps={{\n columns,\n data: items,\n onPageChange,\n pagination: {\n currentPage: meta?.currentPage || 0,\n itemCount: meta?.itemCount || 0,\n itemsPerPage: meta?.itemsPerPage || 0,\n totalItems: meta?.totalItems || 0,\n totalPages: meta?.totalPages || 0,\n },\n }}\n searchInputProps={{ onSearch, value: query.q, placeholder: 'Search name or Author' }}\n />\n )\n}\n\nexport default ArticleList\n","import { useQuery, useQueryClient, useMutation } from 'react-query'\nimport { ArticleBodyType, ArticleListResponseType, ArticleResponseType } from './article-type'\nimport { api } from '../../../utils/api'\n\nexport const BASE_ARTICLE_URL = 'internal/articles'\n\nexport const useGetAllArticle = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [BASE_ARTICLE_URL, params],\n async () => {\n const response = await api.savvyGold.get(BASE_ARTICLE_URL, {\n limit: 10,\n page: params?.page,\n q: params?.q,\n })\n\n return response.data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useCreateArticle = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: ArticleBodyType) => {\n const { data } = await api.savvyGold.post(`${BASE_ARTICLE_URL}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_ARTICLE_URL])\n },\n },\n )\n}\n\nexport const useGetArticleById = (articleId: string) => {\n return useQuery(\n [BASE_ARTICLE_URL, articleId],\n async () => {\n const response = await api.savvyGold.get(\n `${BASE_ARTICLE_URL}/${articleId}`,\n )\n return response.data.data\n },\n {\n enabled: !!articleId,\n },\n )\n}\n\nexport const useEditArticle = (articleId: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: ArticleBodyType) => {\n const { data } = await api.savvyGold.patch(`${BASE_ARTICLE_URL}/${articleId}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_ARTICLE_URL])\n },\n },\n )\n}\n\nexport const useDeleteArticle = (articleId: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n [BASE_ARTICLE_URL],\n async () => {\n const { data } = await api.savvyGold.delete(`${BASE_ARTICLE_URL}/${articleId}`)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_ARTICLE_URL])\n },\n },\n )\n}\n","import React from 'react'\nimport styled from '@emotion/styled'\nimport { Slider } from '@material-ui/core'\nimport { debounce } from 'lodash'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport Cropper from 'react-easy-crop'\nimport { Area } from 'react-easy-crop/types'\nimport Button from './common/Button'\nimport Text from './common/Text'\nimport { getCroppedImg, getCroppedImgCircle } from '../../utils/image-helper'\n\nconst Layout = styled.div`\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n grid-gap: 10px;\n\n /* .image-crop {\n width: fit-content;\n }\n img {\n max-height: 50vh;\n object-fit: scale-down;\n } */\n`\nconst CropLayout = styled.div`\n /* width: 100vw; */\n position: relative;\n /* height: 40vh; */\n min-height: 100px;\n width: 100%;\n aspect-ratio: 198 / 167;\n`\n\nconst ButtonStyled = styled(Button)`\n width: fit-content;\n`\n\nconst ControlLayout = styled.div``\n\nconst SliderStyled = styled(Slider)`\n min-width: 200px;\n`\nconst ButtonLayout = styled.div`\n display: flex;\n flex-flow: row;\n grid-column-gap: 14px;\n`\n\nconst MIN_ZOOM = 1 as const\nconst MAX_ZOOM = 3 as const\nconst ZOOM_STEP = 0.1 as const\n\nexport enum CropAspect {\n '1:1' = 1 / 1,\n '16:9' = 16 / 9,\n '16:10' = 16 / 10,\n '167:198' = 167 / 198,\n}\n\nexport type ImageEasyCropProps = {\n image: string\n circle?: boolean\n aspect?: CropAspect\n hideScaleBar?: true\n onConfirm: (image: string) => void\n onChange?: (image: string) => void\n onClose?: () => void\n}\nconst ImageEasyCrop = (props: ImageEasyCropProps) => {\n const {\n image,\n aspect = CropAspect['1:1'],\n circle = false,\n onConfirm,\n hideScaleBar = false,\n // onChange,\n onClose,\n } = props\n\n const canvasRef = useRef(null)\n const imageRef = useRef(null)\n\n const [crop, setCrop] = useState({ x: 0, y: 0 })\n const [zoom, setZoom] = useState(1)\n const [rotation] = useState(0)\n // const [croppedAreaPixels, setCroppedAreaPixels] = useState()\n const [croppedImage, setCroppedImage] = useState('')\n // const [croppedImageCircle, setCroppedImageCircle] = useState('')\n\n const onCropComplete = useMemo(\n () =>\n debounce(async (croppedArea: Area, croppedAreaPixels: Area) => {\n // console.log(croppedArea, croppedAreaPixels)\n // setCroppedAreaPixels(croppedAreaPixels)\n if (croppedAreaPixels && imageRef.current) {\n const croppedImage = await getCroppedImg(image, croppedAreaPixels, rotation)\n setCroppedImage(croppedImage)\n }\n }, 150),\n [image, rotation],\n )\n\n const onConfirmCrop = useCallback(async () => {\n if (croppedImage) {\n if (circle) {\n const croppedImageCircle = await getCroppedImgCircle(croppedImage)\n onConfirm?.(croppedImageCircle)\n } else {\n onConfirm?.(croppedImage)\n }\n }\n }, [circle, croppedImage, onConfirm])\n\n const drawCanvas = useCallback(() => {\n var img = new Image()\n if (canvasRef.current) {\n img.onload = function() {\n if (canvasRef.current) {\n const canvas = canvasRef.current\n const ctx = canvas.getContext('2d')\n const imageHeight = canvas.height\n const halfImageHeight = imageHeight / 2\n\n if (ctx) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (circle) {\n ctx.beginPath()\n ctx.arc(halfImageHeight, halfImageHeight, halfImageHeight, 0, 6.28, false) //draw the circle\n ctx.clip() //call the clip method so the next render is clipped in last path\n ctx.closePath()\n }\n\n ctx.drawImage(\n img,\n 0,\n 0,\n img.naturalWidth,\n img.naturalHeight, // source rectangle\n 0,\n 0,\n canvas.width,\n canvas.height,\n )\n }\n }\n }\n img.src = croppedImage\n }\n }, [circle, croppedImage])\n\n useEffect(() => {\n drawCanvas()\n }, [drawCanvas, croppedImage])\n\n const onCancelClick = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n return (\n \n \n \n \n {!hideScaleBar && (\n \n {`Zoom (x${zoom.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })})`}\n {\n if (typeof zoom === 'number') setZoom(zoom)\n }}\n />\n \n )}\n {/* ref && (canvasRef.current = ref)}\n width=\"200px\"\n height=\"200px\"\n /> */}\n \n \n ยกเลิก\n \n \n ยืนยัน\n \n \n \n )\n}\n\nexport default ImageEasyCrop\n","import styled from '@emotion/styled'\nimport React, { useState } from 'react'\nimport { useCallback } from 'react'\nimport { FileRejection, useDropzone } from 'react-dropzone'\nimport { imageUrlToBase64, urlToFile } from '../../../../utils/image-helper'\nimport ImageEasyCrop, { CropAspect } from '../../../components/ImageEasyCrop'\n\nconst UploadArea = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 36px;\n padding: 10px 14px;\n border-radius: 4px;\n border: 1px dotted gray;\n`\n\nconst ImageEasyCropLayout = styled.div`\n position: relative;\n`\n\nexport type IUploadRenderProps = {\n onChange?: (value: string) => void\n}\n\nexport const UploadThumbNail = (props: IUploadRenderProps) => {\n const { onChange } = props\n const [imageBase64, setImageBase64] = useState('')\n\n const onDrop = useCallback(async (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n if (acceptedFiles.length > 0) {\n // Update the state with the uploaded file\n const file = acceptedFiles[0]\n const base64 = await readFileAsBase64(file)\n setImageBase64(base64)\n }\n }, [])\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop,\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg'],\n }, // Only allow image files\n multiple: false, // Only allow single file upload\n })\n\n const readFileAsBase64 = (file: File): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.onload = () => {\n // Read the file as base64 data\n const base64Data = reader.result as string\n resolve(base64Data)\n }\n\n reader.onerror = () => {\n reject(reader.error)\n }\n\n reader.readAsDataURL(file)\n })\n }\n\n const resizeImage = async (\n base64: string,\n targetSizeKB: number,\n targetAspect: number,\n ): Promise => {\n return new Promise(resolve => {\n const img = new Image()\n img.src = base64\n\n img.onload = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n\n // Set a maximum size to ensure better performance\n const maxSize = 1080\n let newWidth, newHeight\n\n // Calculate new dimensions based on the target aspect ratio\n if (img.width > img.height) {\n newWidth = Math.min(img.width, maxSize)\n newHeight = newWidth / targetAspect\n } else {\n newHeight = Math.min(img.height, maxSize)\n newWidth = newHeight * targetAspect\n }\n\n // Set the new dimensions on the canvas\n canvas.width = newWidth\n canvas.height = newHeight\n\n // Draw the image on the canvas with the new dimensions\n ctx.drawImage(img, 0, 0, newWidth, newHeight)\n\n // Initialize quality and compression settings\n let currentQuality = 1 // Starting with a high quality\n let currentSizeKB = Number.MAX_SAFE_INTEGER\n const step = 0.1\n\n // Iterate until the size is below the target\n while (currentSizeKB > targetSizeKB && currentQuality >= 0.7) {\n console.log('currentSizeKB:', currentSizeKB)\n const imageDataUrl = canvas.toDataURL('image/jpeg', currentQuality)\n currentSizeKB = imageDataUrl.length / 1024\n currentQuality -= step\n }\n\n // Resolve with the final base64 string\n resolve(canvas.toDataURL('image/jpeg', currentQuality))\n }\n })\n }\n\n const onConfirm = useCallback(\n async (imagePath: string): Promise => {\n const base64Result = await imageUrlToBase64(imagePath)\n const base64 = base64Result?.toString()\n\n if (base64) {\n // Resize the image to target size (e.g., 100KB)\n const aspect = 167 / 198\n const resizedBase64 = await resizeImage(base64, 100, aspect)\n onChange?.(resizedBase64)\n // onChange?.(base64)\n }\n },\n [onChange],\n )\n\n const onClose = useCallback(() => {\n onChange?.('')\n }, [onChange])\n\n return (\n
\n
\n \n Upload Thumbnail Image\n \n \n
\n \n {!!imageBase64 && (\n \n )}\n \n
\n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport styled from '@emotion/styled'\nimport {\n Card,\n CardContent,\n CardMedia,\n FormControlLabel,\n Grid,\n Modal,\n makeStyles,\n} from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Form, Field } from 'react-final-form'\nimport ConfirmCard from '../../../components/common/Card'\nimport { useRouter } from '../../../../utils/helper'\nimport { InputField, CheckBoxField } from '../../../components/fields'\nimport { createValidation, required, maxLength, cp } from '../../../../utils/field-validation'\nimport Toast from '../../../components/common/Toast'\nimport ReactQuill from 'react-quill'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport Text from '../../../components/common/Text'\nimport {\n useCreateArticle,\n useDeleteArticle,\n useEditArticle,\n useGetArticleById,\n} from '../../../services/article/article-query'\nimport { ArticleBodyType } from '../../../services/article/article-type'\nimport { useCurrentUser } from '../../../services/user/user-query'\nimport { isEmpty } from 'lodash'\nimport mobileFrameImg from '../../../../asset/images/mobile_frame.png'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport * as paths from '../../../constants/path'\nimport { UploadThumbNail } from './UploadThumbNail'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport AttachFileIcon from '@material-ui/icons/AttachFile'\nimport { Authorize, validateCorrectRole } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport Quill from 'quill'\nimport BlotFormatter from 'quill-blot-formatter'\nimport ImageCompress from 'quill-image-compress'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport { toast } from 'react-toastify'\nimport { css } from '@emotion/css'\n\n// Register Quill modules\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageCompress', ImageCompress)\n\nconst CustomCard = styled(ConfirmCard)`\n width: 100%;\n max-width: 1000px;\n`\n\nconst ContentLayout = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0 24px;\n`\n\nconst IPhoneFrame = styled.div`\n background-image: url(${mobileFrameImg});\n background-repeat: no-repeat;\n background-size: 1080px;\n background-position-x: center;\n width: 500px;\n height: 1000px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: -78px;\n`\n\nconst Screen = styled.div`\n width: 375px;\n height: 766px;\n margin-top: 160px;\n margin-left: 8px;\n border: 1px solid #dbdbdb;\n padding-left: 4px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\n\nconst MarginTopButton = styled.div`\n margin-top: 86px;\n margin-left: 24px;\n`\n\nconst ColumnText = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst imgStyle = css`\n img {\n width: 100%;\n height: 100%;\n }\n`\n\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\nconst GridUploadArea = styled(Grid)`\n padding: 8px 16px 8px 0;\n border-radius: 4px;\n border: 1px dotted gray;\n :hover {\n background-color: #dadada;\n }\n`\n\ntype FormValue = {\n title: string\n description: string\n authorName: string\n isActive: boolean\n thumbnailImage: string\n}\n\nconst validate = createValidation(() => ({\n title: cp(required('required title'), maxLength(50, 'Maximum length required 50')),\n description: cp(required('required description'), maxLength(100, 'Maximum length required 100')),\n authorName: cp(required('required author name'), maxLength(50, 'Maximum length required 50')),\n}))\n\nconst ArticleDetail = () => {\n const history = useRouter()\n const { query } = useRouter()\n const { data: currentUser } = useCurrentUser()\n const articleId = useMemo(() => query.id, [query.id])\n const { data: articleData } = useGetArticleById(articleId)\n const [isViewMode, setIsViewMode] = useState(false)\n const [bodyValue, setBodyValue] = useState('')\n const [isEmptyBody, setIsEmptyBody] = useState(true)\n const onConfirmModalVisible = useVisible()\n const onDeleteModalVisible = useVisible()\n const classes = useStyles()\n\n const handleOpenConfirmModal = useCallback(() => {\n onConfirmModalVisible.open()\n }, [onConfirmModalVisible])\n\n const handleCloseConfirmModal = useCallback(() => {\n onConfirmModalVisible.close()\n }, [onConfirmModalVisible])\n\n const handleOpenDeleteModal = useCallback(() => {\n onDeleteModalVisible.open()\n }, [onDeleteModalVisible])\n\n const handleCloseDeleteModal = useCallback(() => {\n onDeleteModalVisible.close()\n }, [onDeleteModalVisible])\n\n useEffect(() => {\n if (isEmpty(bodyValue) || bodyValue === '


') {\n setIsEmptyBody(true)\n } else {\n setIsEmptyBody(false)\n }\n }, [bodyValue])\n\n const modules = useMemo(() => {\n return {\n toolbar: [\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\n [{ size: [] }],\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\n [{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\n [{ align: [] }],\n [{ color: [] }, { background: [] }],\n ['image', 'link'], // Include 'image' in the toolbar options\n // Add other modules as needed\n ],\n blotFormatter: {},\n\n imageCompress: {\n quality: 0.7, // default 0.7\n maxWidth: 1000, // default 1000\n maxHeight: 1000, // default 1000\n imageType: 'image/jpeg', // default image/jpeg\n debug: true, // default true\n insertIntoEditor: (imageBase64URL: string, imageBlob: Blob, editor: Quill) => {\n const fileSizeInKb = imageBlob.size / 1024\n if (fileSizeInKb <= 150) {\n const range = editor.getSelection()\n editor.insertEmbed(range?.index || 0, 'image', `${imageBase64URL}`, 'user')\n } else {\n toast.error('File to Large')\n }\n },\n },\n }\n }, [])\n\n useEffect(() => {\n if (articleData?.id || !validateCorrectRole(ROLE.MANAGER, currentUser?.role)) {\n setIsViewMode(true)\n }\n }, [articleData, currentUser])\n\n const initialValues = useMemo(() => {\n return query.id\n ? {\n title: articleData?.title,\n authorName: articleData?.authorName,\n isActive: articleData?.isActive,\n description: articleData?.description,\n thumbnailImage: articleData?.thumbnailImage,\n }\n : {\n isActive: false,\n }\n }, [articleData, query.id])\n\n const { mutate: updateArticle } = useEditArticle(articleData?.id || '')\n const { mutate: createArticle } = useCreateArticle()\n const { mutate: deleteArticle } = useDeleteArticle(articleData?.id || '')\n\n const onGoBackToArticle = useCallback(() => {\n history.push(paths.article())\n }, [history])\n\n const onSubmit = useCallback(\n values => {\n const { title, authorName, isActive, description, thumbnailImage } = values\n const params: ArticleBodyType = {\n title,\n authorName,\n body: bodyValue,\n isActive,\n description,\n thumbnailImage,\n userId: currentUser?.id || '',\n }\n\n if (query.id) {\n updateArticle(params, {\n onSuccess: () => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToArticle()\n },\n onError: error => {\n Toast.info('ไฟล์รูปภายในบทความอาจมีความใหญ่เกินไป')\n handleCloseConfirmModal()\n },\n })\n } else {\n createArticle(params, {\n onSuccess: error => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToArticle()\n },\n onError: error => {\n Toast.info('ไฟล์รูปภายในบทความอาจมีความใหญ่เกินไป')\n handleCloseConfirmModal()\n },\n })\n }\n },\n [\n bodyValue,\n createArticle,\n currentUser,\n handleCloseConfirmModal,\n onGoBackToArticle,\n query.id,\n updateArticle,\n ],\n )\n\n useEffect(() => {\n if (isViewMode) {\n setBodyValue(articleData?.body || '')\n }\n }, [articleData, isViewMode])\n\n const onClickEdit = useCallback(() => {\n setIsViewMode(false)\n }, [])\n\n const onClickDelete = useCallback(() => {\n deleteArticle()\n onGoBackToArticle()\n }, [deleteArticle, onGoBackToArticle])\n\n return (\n <>\n \n {query.id && (\n \n \n Edit\n \n \n Delete\n \n \n )}\n \n \n {\n return (\n <>\n
\n
\n \n
\n Title\n \n
\n
\n Description\n \n
\n
\n Author Name\n \n
\n {!isViewMode && (\n
\n Cover Image\n {!values.thumbnailImage ? (\n {\n form?.change('thumbnailImage', value)\n }}\n />\n ) : (\n \n
\n \n Uploaded\n
\n {\n form?.change('thumbnailImage', null)\n }}\n />\n
\n )}\n
\n )}\n
\n {!!values?.thumbnailImage && (\n \n \n \n {values?.title}\n \n {values?.description\n ?.split('\\n')\n .map((line: string, index: number) => (\n \n {line}\n
\n
\n ))}\n
\n
\n
\n )}\n
\n\n \n }\n label=\"Active\"\n />\n
\n {!isViewMode && (\n \n )}\n \n \n \n Submit\n \n \n \n
\n
\n \n \n \n \n \n
\n
\n \n \n Confirm\n \n \n Yes\n \n \n No\n \n \n \n \n \n \n Confirm Delete\n \n \n Yes\n \n \n No\n \n \n \n \n \n )\n }}\n />\n
\n \n )\n}\n\nexport default ArticleDetail\n","import { useQuery, useQueryClient, useMutation } from 'react-query'\nimport { IGetSettingDetailResponse, IPatchSettingDetailBodyParams } from './setting-type'\nimport { api } from '../../../utils/api'\n\nexport const BASE_SETTING_URL = 'internal/setting'\nexport const BASE_SERVER_MAINTENANCE_URL = `${BASE_SETTING_URL}/maintenance`\n\nexport const useGetSettingDetail = () => {\n return useQuery([BASE_SETTING_URL], async () => {\n const response = await api.savvyGold.get(BASE_SERVER_MAINTENANCE_URL)\n return response.data.data\n })\n}\n\nexport const usePatchSetting = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: IPatchSettingDetailBodyParams) => {\n const { data } = await api.savvyGold.patch(`${BASE_SERVER_MAINTENANCE_URL}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_SETTING_URL])\n },\n },\n )\n}\n","import React, { useCallback, useMemo } from 'react'\nimport styled from '@emotion/styled'\nimport { FormControlLabel, Modal, makeStyles } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Form, Field } from 'react-final-form'\nimport ConfirmCard from '../../../components/common/Card'\nimport { SwitchField } from '../../../components/fields'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport Text from '../../../components/common/Text'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport { useGetSettingDetail, usePatchSetting } from '../../../services/setting/setting-query'\nimport { IPatchSettingDetailBodyParams } from '../../../services/setting/setting-type'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\n\nconst CustomCard = styled(ConfirmCard)`\n width: 100%;\n max-width: 1000px;\n margin-top: 16px;\n`\n\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\nconst Setting = () => {\n const classes = useStyles()\n const onConfirmModalVisible = useVisible()\n\n const handleOpenConfirmModal = useCallback(() => {\n onConfirmModalVisible.open()\n }, [onConfirmModalVisible])\n\n const handleCloseConfirmModal = useCallback(() => {\n onConfirmModalVisible.close()\n }, [onConfirmModalVisible])\n\n const { data: settingData } = useGetSettingDetail()\n const { mutate: patchSetting } = usePatchSetting()\n\n const onSubmit = useCallback(\n (values: IPatchSettingDetailBodyParams) => {\n const isMaintenance = values.isMaintenance\n patchSetting(\n { isMaintenance: isMaintenance },\n {\n onSuccess: () => {},\n },\n )\n handleCloseConfirmModal()\n },\n [handleCloseConfirmModal, patchSetting],\n )\n\n const initialValues = useMemo(() => {\n return {\n isMaintenance: settingData?.isMaintenance === true,\n }\n }, [settingData])\n\n return (\n
\n Setting\n \n \n \n initialValues={initialValues}\n onSubmit={onSubmit}\n render={({ handleSubmit, values }) => {\n const isMaintenanceDefault = settingData?.isMaintenance === true\n const isDisableSubmit = values.isMaintenance === isMaintenanceDefault\n return (\n
\n
\n }\n label=\"Server Maintenance \"\n />\n \n Submit\n \n
\n \n \n Confirm\n \n \n Yes\n \n \n No\n \n
\n \n \n \n )\n }}\n />\n \n \n \n )\n}\n\nexport default Setting\n","import { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport {\n ICreateGiveawayBody,\n IExportGiveawayReportParams,\n IGiveaway,\n IGiveawayList,\n} from './giveaway-typed'\nimport { ContentType } from '../../../utils/api/tools'\nimport { downloadFile } from '../../../utils/helper'\nimport dayjs from 'dayjs'\nimport axios from 'axios'\nimport { compact, join } from 'lodash'\nimport { appConfig } from '../../constants/app-config'\n\nconst GIVEAWAY = 'internal/giveaways'\nconst GIVEAWAY_UPLOAD = `${GIVEAWAY}/upload`\nconst GIVEAWAY_REPORT = `${GIVEAWAY}/report`\n\nexport const useCreateGiveaway = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async body => {\n const { data } = await api.savvyGold.post(`${GIVEAWAY}`, {\n ...body,\n amount: Number(body.amount),\n })\n return data\n },\n {\n onSuccess: () => {\n queryClient.refetchQueries([GIVEAWAY])\n },\n },\n )\n}\n\nexport const useGetGiveaways = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [GIVEAWAY, params],\n async () => {\n const { data } = await api.savvyGold.get(GIVEAWAY, {\n page: params?.page,\n limit: 10,\n q: params?.q,\n })\n const result = data.data\n\n return result\n },\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetGiveawayById = (id: string) => {\n return useQuery([GIVEAWAY, id], async () => {\n const { data } = await api.savvyGold.get(`${GIVEAWAY}/${id}`)\n const result = data.data\n\n return result\n })\n}\n\nexport const useUploadGiveaway = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (file: File) => {\n // const formData = new FormData()\n // formData.append('file', file)\n console.log({ file })\n\n const { data } = await api.savvyGold.post(\n `${GIVEAWAY_UPLOAD}`,\n { file },\n {\n contentType: ContentType.FORMDATA,\n },\n )\n return data\n },\n {\n onSuccess: () => {\n queryClient.refetchQueries([GIVEAWAY])\n },\n },\n )\n}\n\nexport const useGetGiveawayReport = () => {\n return useMutation(\n async (params: IExportGiveawayReportParams) => {\n const { startDate, endDate, ...restParams } = params\n const res = await api.savvyGold.getFile(`${GIVEAWAY_REPORT}`, {\n startDate: dayjs(startDate).format(),\n endDate: dayjs(endDate).format(),\n ...restParams,\n })\n downloadFile(res)\n },\n )\n}\n","import React, { useEffect, useMemo, useState } from 'react'\nimport { Typography } from '@material-ui/core'\nimport styled from '@emotion/styled'\nimport { customAddressLabel, useRouter } from '../../../../utils/helper'\nimport { useGetPort } from '../../../services/port/port-query'\nimport DetailPage from '../../../components/templates/DetailPage'\nimport numeral from 'numeral'\nimport UserCard from '../../user/UserProfile/UserCard'\nimport { Address } from '../../../services/port/port-typed'\nimport { useGetImageUser } from '../../../services/user/user-query'\nimport ImageViewer from '../../../components/common/ImageViewer'\nimport TransactionCard from '../../transaction/TransactionDetail/TransactionCard'\nimport Text from '../../../components/common/Text'\nimport { useGetGiveawayById, useGetGiveaways } from '../../../services/giveaway/giveaway-query'\nimport dayjs from 'dayjs'\n\nconst TextLib = styled(Typography)`\n line-height: 2 !important;\n`\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: 10px;\n margin-top: 10px;\n`\n\nconst Flex = styled(Grid)`\n display: flex;\n grid-gap: 10px;\n margin-top: 0px;\n`\nconst TextColor = styled(TextLib)<{ color?: string }>`\n color: ${({ color }) => color};\n font-weight: bold !important;\n`\nconst RewardDetail = () => {\n const { giveawayId } = useRouter().query\n console.log({ giveawayId })\n const { data: giveaway } = useGetGiveawayById(giveawayId)\n const {\n user,\n transactionId,\n transaction,\n campaignName,\n prefix,\n unit,\n status,\n amount,\n createdAt,\n creatorId,\n userId,\n errorMessage,\n } = giveaway || {}\n const portData = useMemo(\n () => [\n {\n label: 'Campaign Name',\n value: campaignName || '-',\n },\n {\n label: 'Prefix',\n value: prefix || '-',\n },\n {\n label: 'Amount',\n value: `${amount}` || '-',\n },\n {\n label: 'Unit ',\n value: unit || '-',\n },\n { label: 'Status', value: status || '-' },\n { label: 'createdAt', value: dayjs(createdAt).format('D MMMM YYYY HH:mm') },\n { label: 'creatorId', value: creatorId || '-' },\n { label: 'userId', value: userId || '-' },\n { label: 'errorMessage', value: errorMessage || '-' },\n ],\n [amount, campaignName, createdAt, creatorId, errorMessage, prefix, status, unit, userId],\n )\n\n const fullName = useMemo(() => {\n return `${user?.firstnameTh} ${user?.lastnameTh}`\n }, [user])\n\n return (\n \n Campaign\n \n }\n contents={portData}\n gridItems={[\n ,\n transactionId ? (\n \n ) : (\n <>\n ),\n ]}\n />\n )\n}\n\nexport default RewardDetail\n","import { Dayjs } from 'dayjs'\nimport { User } from '../user/user-typed'\nimport { Transaction } from '../transaction/transaction-typed'\n\nexport enum EnumGiveawayStatus {\n PENDING = 'pending',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport enum EnumGiveawayUnit {\n gram = 'gram',\n baht = 'baht',\n}\n\nexport type ICreateGiveawayBody = {\n tmnId: string\n prefix: string\n amount: number\n unit: any\n campaign: string\n}\n\nexport type IPageMeta = {\n currentPage: number\n itemCount: number\n itemsPerPage: number\n totalItems: number\n totalPages: number\n}\n\nexport type IGiveaway = {\n id: string\n createdAt: string\n updatedAt: string\n deletedAt: any\n userId: string\n amount: number\n status: string\n prefix: string\n campaignName: string\n unit: string\n creatorId: string\n transactionId: string\n user: User\n transaction?: Transaction\n errorMessage?: string\n}\n\nexport type IGiveawayList = {\n items: IGiveaway[]\n meta: IPageMeta\n}\n\nexport type IExportGiveawayReportParams = {\n prefix?: string\n startDate: Dayjs\n endDate: Dayjs\n status?: EnumGiveawayStatus\n unit?: EnumGiveawayUnit\n}\n","import { useTranslation } from 'react-i18next'\nimport { useToastForReactQuery } from '../../../../utils/custom-hooks'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { EnumGiveawayUnit, ICreateGiveawayBody } from '../../../services/giveaway/giveaway-typed'\nimport { useCreateGiveaway } from '../../../services/giveaway/giveaway-query'\nimport { Field, Form } from 'react-final-form'\nimport styled from '@emotion/styled'\nimport Card from '../../../components/common/Card'\nimport { InputField, SelectField } from '../../../components/fields'\nimport Button from '../../../components/common/Button'\nimport { Modal } from '@material-ui/core'\nimport Text from '../../../components/common/Text'\nimport { normalizeNumberWith4Digit, useRouter } from '../../../../utils/helper'\nimport Select from '../../../components/common/Select'\nimport { useGetSearchUser } from '../../../services/user/user-query'\nimport * as paths from '../../../constants/path'\nimport { OnChangeValue } from 'react-select'\n\nconst ContentLayout = styled(Card)`\n width: 500px;\n min-height: 200px;\n padding: 30px 80px 20px 80px;\n grid-row-gap: 12px;\n`\n\nconst InputFieldStyled = styled(InputField)`\n &.MuiFormControl-root {\n width: 100%;\n margin-top: 0;\n }\n`\n\nconst ModalStyled = styled(Modal)({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\ntype GiveawayFormValues = {\n tmnUser: { label: string; value: string }\n prefix: string\n amount: number\n unit: { label: string; value: EnumGiveawayUnit }\n campaign: string\n}\n\ntype ModalCreateGiveawayProps = {\n visible: boolean\n onClose: () => void\n}\n\nconst ModalCreateGiveaway = (props: ModalCreateGiveawayProps) => {\n const { visible, onClose } = props\n const { push, query } = useRouter()\n\n const toast = useToastForReactQuery()\n const { t } = useTranslation()\n\n const { mutate: createGiveaway } = useCreateGiveaway()\n const [search, setSearch] = useState(null)\n const { data: users } = useGetSearchUser({ limit: 5, q: search })\n\n const setQueryParam = useCallback(\n params => {\n push(paths.rewards({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n\n const onSubmit = useCallback(\n (values: GiveawayFormValues) => {\n const createBody: ICreateGiveawayBody = {\n amount: values.amount,\n campaign: values.campaign,\n prefix: values.prefix,\n tmnId: values.tmnUser?.value,\n unit: values.unit.value,\n }\n createGiveaway(createBody, {\n onSuccess: () => {\n toast.open('Success', {\n type: 'success',\n autoClose: 3 * 1000,\n })\n onClose()\n },\n onError: () => {\n toast.open('Can not create giveaway', {\n type: 'error',\n autoClose: 3 * 1000,\n })\n },\n })\n },\n [createGiveaway, onClose, toast],\n )\n const validateRequired = useCallback((value: string) => (value ? undefined : 'required'), [])\n\n const units = useMemo(() => {\n return Object.keys(EnumGiveawayUnit).map(unit => {\n const value = EnumGiveawayUnit[unit as EnumGiveawayUnit]\n return {\n label: unit.toUpperCase(),\n value: value,\n }\n })\n }, [])\n\n const userOptions = useMemo(() => {\n return users?.items.map(\n (e): BaseOptionType => {\n return {\n label: `${e.firstnameTh} ${e.lastnameTh}`,\n value: e.tmnProfile?.tmnId,\n }\n },\n )\n }, [users])\n console.log({ userOptions })\n const onSearchChange = useCallback((input: string) => {\n setSearch(input)\n }, [])\n\n return (\n \n
\n \n onSubmit={onSubmit}\n //initialValues={initialValues}\n\n subscription={{ dirty: true, submitting: true, valid: true }}\n >\n {({ handleSubmit, dirty, submitting, valid, form }) => {\n return (\n
\n \n
\n CAMPAIGN NAME\n \n
\n
\n PREFIX\n \n
\n
\n USER\n \n {/* \n {({ input, meta }) => {\n console.log({ input: input.value })\n return \n }}\n */}\n
\n
\n AMOUNT\n \n
\n
\n \n
\n \n \n Confirm\n \n \n
\n \n \n )\n }}\n \n \n
\n )\n}\n\nexport default ModalCreateGiveaway\n","import { useTranslation } from 'react-i18next'\nimport { useToastForReactQuery } from '../../../../utils/custom-hooks'\n\nimport styled from '@emotion/styled'\nimport { useCallback, useMemo } from 'react'\nimport { DateRangePickerField, InputField, SelectField } from '../../../components/fields'\nimport { Field, Form } from 'react-final-form'\nimport { Modal } from '@material-ui/core'\nimport {\n EnumGiveawayStatus,\n EnumGiveawayUnit,\n IExportGiveawayReportParams,\n} from '../../../services/giveaway/giveaway-typed'\nimport React from 'react'\n\nimport dayjs from 'dayjs'\nimport { DateRangePickerValue } from '../../../components/common/DateRangePicker'\nimport { useGetGiveawayReport } from '../../../services/giveaway/giveaway-query'\nimport { Button } from 'react-bootstrap'\nimport { values } from 'lodash'\nimport Card from '../../../components/common/Card'\nimport Text from '../../../components/common/Text'\n\nconst InputFieldStyled = styled(InputField)`\n &.MuiFormControl-root {\n width: 100%;\n margin-top: 0;\n }\n`\n\nconst ContentLayout = styled(Card)`\n min-height: 200px;\n padding: 30px 40px 20px 40px;\n grid-row-gap: 12px;\n`\n\nconst ModalStyled = styled(Modal)({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst MAX_DAYS_SPAN = 60\nconst MAX_MONTHS_SPAN = Math.floor(MAX_DAYS_SPAN / 30)\n\ntype ExportGiveawayFormValues = {\n prefix?: string\n filterRange: DateRangePickerValue\n status?: BaseOptionType\n unit?: BaseOptionType\n}\n\ntype ModalCreateGiveawayProps = {\n visible: boolean\n onClose: () => void\n}\n\nconst ModalExportGiveaway = (props: ModalCreateGiveawayProps) => {\n const { visible, onClose } = props\n\n const toast = useToastForReactQuery()\n const { t } = useTranslation()\n\n const { mutate: exportGiveaway } = useGetGiveawayReport()\n\n const onSubmit = useCallback(\n (values: ExportGiveawayFormValues) => {\n const createBody: IExportGiveawayReportParams = {\n prefix: values?.prefix,\n startDate: values.filterRange.startDate,\n endDate: values.filterRange.endDate,\n status: values.status?.value,\n unit: values.unit?.value,\n }\n exportGiveaway(createBody, {\n onSuccess: () => {\n toast.open('Success', {\n type: 'success',\n autoClose: 3 * 1000,\n })\n onClose()\n },\n onError: error => {\n toast.open(error, {\n type: 'error',\n autoClose: 3 * 1000,\n })\n onClose()\n },\n })\n },\n [exportGiveaway, onClose, toast],\n )\n const validateRequired = useCallback((value: string) => (value ? undefined : 'required'), [])\n\n const statusOptions = useMemo(() => {\n return values(EnumGiveawayStatus).map(status => {\n return {\n label: status.toUpperCase(),\n value: status,\n }\n })\n }, [])\n\n const unitOptions = useMemo(() => {\n return values(EnumGiveawayUnit).map(unit => {\n return {\n label: unit.toUpperCase(),\n value: unit,\n }\n })\n }, [])\n\n return (\n \n
\n \n onSubmit={onSubmit}\n //initialValues={initialValues}\n\n subscription={{ dirty: true, submitting: true, valid: true }}\n validate={values => {\n const errors: Partial> = {}\n if (values.filterRange) {\n const { startDate, endDate } = values.filterRange\n const monthsDiff = dayjs(endDate).diff(dayjs(startDate), 'month')\n if (Math.abs(monthsDiff) > MAX_MONTHS_SPAN) {\n errors.filterRange = `The start date should be greater that ${MAX_MONTHS_SPAN} months of the end date .`\n }\n }\n return errors\n }}\n >\n {({ handleSubmit, dirty, submitting, valid, form }) => {\n return (\n
\n \n
\n Prefix\n \n
\n \n
\n \n
\n \n \n \n Confirm\n \n \n
\n \n \n )\n }}\n \n \n
\n )\n}\n\nexport default ModalExportGiveaway\n","import React, { useCallback, useMemo, useState } from 'react'\nimport { useRouter } from '../../../../utils/helper'\nimport ListPage from '../../../components/templates/ListPage'\nimport * as paths from '../../../constants/path'\nimport Button from '../../../components/common/Button'\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\nimport styled from '@emotion/styled'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport ModalCreateGiveaway from './ModalCreateGiveaway'\nimport { useGetGiveaways, useUploadGiveaway } from '../../../services/giveaway/giveaway-query'\nimport { useHistory } from 'react-router-dom'\nimport { IGiveaway } from '../../../services/giveaway/giveaway-typed'\nimport ModalExportGiveaway from './ModalExportGiveaway'\nimport { FileRejection, useDropzone } from 'react-dropzone'\nimport { useToastForReactQuery } from '../../../../utils/custom-hooks'\nimport { appConfig } from '../../../constants/app-config'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n margin-right: 16px;\n`\n\nconst RewardList = () => {\n const { push, query } = useRouter()\n const history = useHistory()\n const { q, page } = query\n\n const [openCreateModal, setOpenCreateModal] = useState(false)\n const [openExportModal, setOpenExportModal] = useState(false)\n const { mutate: uploadFile } = useUploadGiveaway()\n\n const onOpenExportModal = useCallback(() => {\n setOpenExportModal(true)\n }, [])\n\n const onCloseExportModal = useCallback(() => {\n setOpenExportModal(false)\n }, [])\n const onOpenCreateModal = useCallback(() => {\n setOpenCreateModal(true)\n }, [])\n\n const onCloseCreateModal = useCallback(() => {\n setOpenCreateModal(false)\n }, [])\n\n const onClickViewDetail = useCallback(\n (giveawayId: string) => {\n history.push(paths.rewardDetail({ routeParam: { giveawayId } }))\n },\n [history],\n )\n\n const columns = useMemo(() => {\n return [\n {\n title: 'Campaign name',\n dataIndex: 'campaignName',\n },\n {\n title: 'Prefix',\n dataIndex: 'prefix',\n },\n { title: 'Tmn Id', dataIndex: 'user.tmnId' },\n {\n title: 'Amount',\n dataIndex: 'amount',\n },\n {\n title: 'Unit',\n dataIndex: 'unit',\n },\n {\n title: 'Create At',\n dataIndex: 'createdAt',\n render: (text: string) => {\n return {dayjs(text).format('D MMMM YYYY HH:mm ')}\n },\n },\n {\n title: 'Status',\n dataIndex: 'status',\n render: (text: string) => {\n //const { isActive } = record\n return {text}\n },\n },\n {\n title: '',\n dataIndex: 'action',\n render: (text: string, giveaway: IGiveaway) => {\n console.debug({ giveaway })\n return \n },\n },\n ]\n }, [onClickViewDetail])\n\n const { data: giveaways } = useGetGiveaways({ q, page })\n\n const setQueryParam = useCallback(\n params => {\n push(paths.rewards({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n const toast = useToastForReactQuery()\n\n const onDrop = useCallback(\n async (acceptedFiles: File[]) => {\n if (acceptedFiles.length > 0) {\n const file = acceptedFiles[0]\n\n uploadFile(file, {\n onError: error => {\n //console.debug({ error })\n toast.open(error, {\n type: 'error',\n autoClose: 3 * 1000,\n })\n },\n onSuccess: () => {\n toast.open('Success', {\n type: 'success',\n autoClose: 3 * 1000,\n })\n },\n })\n }\n },\n [toast, uploadFile],\n )\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop,\n accept: {\n 'application/vnd.ms-excel': ['.xls'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],\n },\n multiple: false,\n })\n\n return (\n \n \n \n import file\n \n \n \n Export\n \n\n \n Create\n \n\n \n \n \n \n ) : (\n undefined\n )\n }\n tableProps={{\n columns,\n data: giveaways?.items || [],\n onPageChange,\n pagination: giveaways?.meta,\n }}\n searchInputProps={{ onSearch, value: query.q, placeholder: 'Search' }}\n />\n )\n}\n\nexport default RewardList\n","import React, { useCallback, useMemo } from 'react'\nimport { useRouter } from '../../../../utils/helper'\nimport ListPage from '../../../components/templates/ListPage'\nimport * as paths from '../../../constants/path'\nimport Button from '../../../components/common/Button'\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\nimport styled from '@emotion/styled'\nimport { Chip } from '@material-ui/core'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport { useGetAllBanner } from '../../../services/banner/banner-query'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst BannerList = () => {\n const { push, query } = useRouter()\n const { data: bannerData } = useGetAllBanner({ page: query.page, searchTitle: query.filterName })\n const { items, meta } = bannerData || {}\n\n const onViewClick = useCallback(\n record => {\n const routeParam: any = {\n id: record.id,\n }\n\n push(paths.bannerDetail({ routeParam }))\n },\n [push],\n )\n\n const onCreateClick = useCallback(\n record => {\n push(paths.bannerCreate())\n },\n [push],\n )\n\n const columns = useMemo(() => {\n return [\n {\n title: 'Title',\n dataIndex: 'title',\n },\n {\n title: 'Status',\n dataIndex: 'isActive',\n render: (text: string, record: { isActive: boolean }) => {\n const { isActive } = record\n return isActive ? (\n \n ) : (\n \n )\n },\n },\n {\n title: 'Publish Date',\n dataIndex: 'publishDate',\n render: (text: string, record: { publishDate: string }) => {\n const { publishDate } = record\n return {dayjs(publishDate).format('D MMMM YYYY')}\n },\n },\n {\n title: 'End Date',\n dataIndex: 'endDate',\n render: (text: string, record: { endDate: string }) => {\n const { endDate } = record\n return endDate ? (\n {dayjs(endDate).format('D MMMM YYYY ')}\n ) : (\n {`Not published yet`}\n )\n },\n },\n {\n title: '',\n dataIndex: 'action',\n render: (text: string, record: {}) => (\n \n ),\n },\n ]\n }, [onViewClick])\n\n const setQueryParam = useCallback(\n params => {\n push(paths.banner({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ filterName: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n return (\n \n \n \n Create\n \n \n \n }\n tableProps={{\n columns,\n data: items,\n onPageChange,\n pagination: {\n currentPage: meta?.currentPage || 0,\n itemCount: meta?.itemCount || 0,\n itemsPerPage: meta?.itemsPerPage || 0,\n totalItems: meta?.totalItems || 0,\n totalPages: meta?.totalPages || 0,\n },\n }}\n searchInputProps={{ onSearch, value: query.filterName, placeholder: 'Search Title' }}\n />\n )\n}\n\nexport default BannerList\n","import { useQuery, useQueryClient, useMutation } from 'react-query'\n\nimport { api } from '../../../utils/api'\nimport { CreateBannerBody, GetAllBannersResponse, GetOneBannerResponse } from './banner-type'\n\nexport const BASE_BANNER_URL = 'bo/banners'\n\nexport const useGetAllBanner = (params?: {\n searchTitle?: string\n page?: number\n sort?: string\n}) => {\n return useQuery(\n [BASE_BANNER_URL, params],\n async () => {\n const response = await api.savvyGold.get(BASE_BANNER_URL, {\n limit: 10,\n page: params?.page,\n searchTitle: params?.searchTitle,\n })\n\n return response.data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useCreateBanner = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: CreateBannerBody) => {\n const { data } = await api.savvyGold.post(`${BASE_BANNER_URL}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_BANNER_URL])\n },\n },\n )\n}\n\nexport const useGetBannerById = (bannerId: string) => {\n return useQuery(\n [BASE_BANNER_URL, bannerId],\n async () => {\n const response = await api.savvyGold.get(\n `${BASE_BANNER_URL}/${bannerId}`,\n )\n return response.data.data\n },\n {\n enabled: !!bannerId,\n },\n )\n}\n\nexport const useEditBanner = (bannerId: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: CreateBannerBody) => {\n const { data } = await api.savvyGold.patch(`${BASE_BANNER_URL}/${bannerId}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_BANNER_URL])\n },\n },\n )\n}\n\nexport const useDeleteBanner = (bannerId: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n [BASE_BANNER_URL],\n async () => {\n const { data } = await api.savvyGold.delete(`${BASE_BANNER_URL}/${bannerId}`)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_BANNER_URL])\n },\n },\n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { FormControlLabel, Modal, TextField, TextFieldProps, makeStyles } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Form, Field } from 'react-final-form'\nimport ConfirmCard from '../../../components/common/Card'\nimport { useRouter } from '../../../../utils/helper'\nimport { InputField, CheckBoxField, DatePickerField } from '../../../components/fields'\nimport { createValidation, required, maxLength, cp, when } from '../../../../utils/field-validation'\nimport Toast from '../../../components/common/Toast'\nimport ReactQuill from 'react-quill'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport Text from '../../../components/common/Text'\n\nimport { useCurrentUser } from '../../../services/user/user-query'\n\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport * as paths from '../../../constants/path'\nimport mobileFrameImg from '../../../../asset/images/mobile_frame.png'\nimport bannerIcon from '../../../../asset/images/bannerIcon.png'\nimport { Authorize, validateCorrectRole } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport Quill from 'quill'\nimport BlotFormatter from 'quill-blot-formatter'\nimport ImageCompress from 'quill-image-compress'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\n\nimport {\n useCreateBanner,\n useDeleteBanner,\n useEditBanner,\n useGetBannerById,\n} from '../../../services/banner/banner-query'\nimport { CreateBannerBody } from '../../../services/banner/banner-type'\nimport dayjs from 'dayjs'\n\nimport { isEmpty } from 'lodash'\n\n// Register Quill modules\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageCompress', ImageCompress)\n\nconst CustomCard = styled(ConfirmCard)`\n width: 100%;\n max-width: 1000px;\n`\n\nconst ContentLayout = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0 24px;\n`\n\nconst MarginTopButton = styled.div`\n margin-top: 86px;\n margin-left: 24px;\n`\n\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst BannerWrapper = styled.div`\n background-color: #e0f7fa; /* Light blue background */\n border-radius: 8px; /* Rounded corners */\n padding: 8px 16px; /* Padding inside the notification */\n display: flex;\n justify-content: space-between;\n width: 70%;\n\n height: fit-content;\n min-height: 160px;\n margin-top: 180px;\n\n border: 1px solid #b3e5fc; /* Light border */\n word-wrap: break-word;\n overflow: hidden;\n`\n\nconst BannerContent = styled.div`\n display: flex;\n margin-top: 8px;\n\n justify-content: space-between;\n word-break: break-word;\n text-align: left;\n`\n\nconst BannerText = styled.div`\n margin-left: 12px; /* Space between icon and text */\n font-size: 16px; /* Text size */\n\n color: #333; /* Text color */\n`\n\nconst CloseButton = styled.button`\n background: none;\n border: none;\n height: 16px;\n font-size: 28px;\n cursor: pointer;\n color: #999;\n margin-left: 4px;\n margin-top: -8px;\n\n &:hover {\n color: #000;\n }\n`\n\nconst IPhoneFrame = styled.div`\n background-image: url(${mobileFrameImg});\n background-repeat: no-repeat;\n background-size: 1080px;\n background-position-x: center;\n width: 500px;\n height: 1000px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: -78px;\n`\n\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\ntype FormValue = {\n title: string\n description: string\n isActive: boolean\n publishDate: string\n endDate: string\n}\n\nconst validate = createValidation(values => ({\n title: cp(required('required title'), maxLength(50, 'Maximum length required 50')),\n publishDate: cp(required('required publish date')),\n endDate: cp(\n required('required end date'),\n when(\n () => {\n return dayjs(values.endDate) < dayjs(values.publishDate)\n },\n () => 'End date must greater than publish date',\n ),\n ),\n}))\n\nconst BannerDetail = () => {\n const history = useRouter()\n const { query } = useRouter()\n const { data: currentUser } = useCurrentUser()\n const bannerId = useMemo(() => query.id, [query.id])\n const { data: bannerData } = useGetBannerById(bannerId)\n const [isViewMode, setIsViewMode] = useState(false)\n const [bodyValue, setBodyValue] = useState('')\n const [isEmptyBody, setIsEmptyBody] = useState(true)\n const [isExceedingLength, setIsExceedingLength] = useState(false)\n const onConfirmModalVisible = useVisible()\n const onDeleteModalVisible = useVisible()\n const classes = useStyles()\n const maxDescriptionLength = 150 // Set your maximum length here\n\n const handleOpenConfirmModal = useCallback(() => {\n onConfirmModalVisible.open()\n }, [onConfirmModalVisible])\n\n const handleCloseConfirmModal = useCallback(() => {\n onConfirmModalVisible.close()\n }, [onConfirmModalVisible])\n\n const handleOpenDeleteModal = useCallback(() => {\n onDeleteModalVisible.open()\n }, [onDeleteModalVisible])\n\n const handleCloseDeleteModal = useCallback(() => {\n onDeleteModalVisible.close()\n }, [onDeleteModalVisible])\n\n const modules = useMemo(() => {\n return {\n toolbar: [\n // [{ header: [1, 2, 3, 4, 5, 6, false] }],\n\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\n [{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\n [{ align: [] }],\n [{ color: [] }, { background: [] }],\n ['link'], // Include 'image' in the toolbar options\n // Add other modules as needed\n ],\n blotFormatter: {},\n }\n }, [])\n\n useEffect(() => {\n if (isEmpty(bodyValue) || bodyValue === '


') {\n setIsEmptyBody(true)\n } else {\n setIsEmptyBody(false)\n }\n }, [bodyValue])\n\n useEffect(() => {\n if (isViewMode) {\n setBodyValue(bannerData?.description || '')\n }\n }, [bannerData, isViewMode])\n\n useEffect(() => {\n if (bannerData?.id || !validateCorrectRole(ROLE.MANAGER, currentUser?.role)) {\n setIsViewMode(true)\n }\n }, [bannerData, currentUser])\n\n const initialValues = useMemo(() => {\n return query.id\n ? {\n title: bannerData?.title,\n publishDate: dayjs(bannerData?.publishDate).format('YYYY-MM-DDTHH:mm'),\n endDate: dayjs(bannerData?.endDate).format('YYYY-MM-DDTHH:mm'),\n isActive: bannerData?.isActive,\n description: bannerData?.description,\n }\n : {\n isActive: false,\n }\n }, [bannerData, query.id])\n\n const { mutate: updateBanner } = useEditBanner(bannerData?.id || '')\n const { mutate: createBanner } = useCreateBanner()\n const { mutate: deleteBanner } = useDeleteBanner(bannerData?.id || '')\n\n const onGoBackToBanner = useCallback(() => {\n history.push(paths.banner())\n }, [history])\n\n const onSubmit = useCallback(\n values => {\n const { title, publishDate, isActive, endDate } = values\n const params: CreateBannerBody = {\n title,\n\n isActive,\n description: bodyValue,\n publishDate: dayjs(publishDate).toISOString(),\n endDate: dayjs(endDate).toISOString(),\n userId: currentUser?.id || '',\n }\n\n if (query.id) {\n updateBanner(params, {\n onSuccess: () => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToBanner()\n },\n onError: error => {\n Toast.info('อัพเดทผิดพลาด')\n handleCloseConfirmModal()\n },\n })\n } else {\n createBanner(params, {\n onSuccess: error => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToBanner()\n },\n onError: error => {\n Toast.info('สร้างผิดพลาด')\n handleCloseConfirmModal()\n },\n })\n }\n },\n [\n bodyValue,\n createBanner,\n currentUser,\n handleCloseConfirmModal,\n onGoBackToBanner,\n query.id,\n updateBanner,\n ],\n )\n\n const onClickEdit = useCallback(() => {\n setIsViewMode(false)\n }, [])\n\n const onClickDelete = useCallback(() => {\n deleteBanner()\n onGoBackToBanner()\n }, [deleteBanner, onGoBackToBanner])\n\n return (\n <>\n \n {query.id && (\n \n \n Edit\n \n \n Delete\n \n \n )}\n \n \n {\n return (\n <>\n
\n
\n \n
\n Title\n \n
\n\n
\n Publish Date\n \n
\n
\n End Date\n \n
\n \n }\n label=\"Active\"\n />\n
\n {!isViewMode && (\n <>\n Description\n\n {\n if (value.length < maxDescriptionLength) {\n setBodyValue(value)\n setIsExceedingLength(false)\n } else {\n setIsExceedingLength(true)\n }\n }}\n modules={modules}\n style={{\n width: '100%',\n maxWidth: '500px',\n height: '110px',\n maxHeight: '110px',\n }}\n placeholder=\"Write your banner...\"\n />\n {isExceedingLength && (\n \n The description exceeds the maximum length.\n \n )}\n \n )}\n
\n
\n\n \n \n \n Submit\n \n \n \n
\n\n \n \n \n \n\n \n \n ×\n \n \n
\n\n \n \n Confirm\n \n \n Yes\n \n \n No\n \n \n \n \n \n \n Confirm Delete\n \n \n Yes\n \n \n No\n \n \n \n \n \n )\n }}\n />\n
\n \n )\n}\n\nexport default BannerDetail\n","import { Paging } from '../shared-typed'\n\nexport type CreateCampaignBody = {\n title: string\n startDate: string\n endDate: string\n body?: string\n buttonName: string\n route: string\n thumnailImage?: string\n}\n\nexport enum EnumCampaignPath {\n market = '/market-place',\n profile = '/profile',\n faq = '/faq',\n buy = '/buy-option/buy-now',\n sell = '/sell-gold',\n}\n\nexport type CampaignResponseType = {\n id: string\n createdAt: string\n updatedAt: string\n deletedAt: string | null\n body: string\n creatorId: string\n updaterId: string\n title: string\n buttonName: string\n route: string\n thumbnailImage?: string\n startDate: Date\n endDate: Date\n}\n\nexport type CampaignListResponseType = {\n items: CampaignResponseType[]\n meta: Paging\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { api } from '../../../utils/api'\nimport {\n CampaignListResponseType,\n CampaignResponseType,\n CreateCampaignBody,\n} from './campaign-typed'\n\nconst BASE_CAMPAIGN = `internal/campaigns`\n\nexport const useCreateCampaign = () => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: CreateCampaignBody) => {\n const { data } = await api.savvyGold.post(`${BASE_CAMPAIGN}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_CAMPAIGN])\n },\n },\n )\n}\n\nexport const useGetCampaignWithPage = (params?: { q?: string; page?: number }) => {\n return useQuery(\n [BASE_CAMPAIGN, params],\n async () => {\n const response = await api.savvyGold.get(BASE_CAMPAIGN, {\n limit: 10,\n page: params?.page,\n q: params?.q,\n isActive: false,\n })\n\n return response.data.data\n },\n\n {\n keepPreviousData: true,\n },\n )\n}\n\nexport const useGetCampaignById = (id: string) => {\n return useQuery(\n [BASE_CAMPAIGN, id],\n async () => {\n const response = await api.savvyGold.get(`${BASE_CAMPAIGN}/${id}`)\n return response.data.data\n },\n {\n enabled: !!id,\n },\n )\n}\n\nexport const useUpdateCampaign = (id: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n async (params: CreateCampaignBody) => {\n const { data } = await api.savvyGold.patch(`${BASE_CAMPAIGN}/${id}`, params)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_CAMPAIGN])\n },\n },\n )\n}\n\nexport const useDeleteCampaign = (id: string) => {\n const queryClient = useQueryClient()\n return useMutation(\n async () => {\n const { data } = await api.savvyGold.delete(`${BASE_CAMPAIGN}/${id}`)\n return data\n },\n {\n onSuccess: () => {\n void queryClient.invalidateQueries([BASE_CAMPAIGN])\n },\n },\n )\n}\n","import React, { useCallback, useMemo } from 'react'\nimport { useRouter } from '../../../../utils/helper'\nimport ListPage from '../../../components/templates/ListPage'\nimport * as paths from '../../../constants/path'\nimport Button from '../../../components/common/Button'\nimport Text from '../../../components/common/Text'\nimport dayjs from 'dayjs'\nimport styled from '@emotion/styled'\nimport { useGetAllArticle } from '../../../services/article/article-query'\nimport { Chip } from '@material-ui/core'\nimport { Authorize } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport { useGetCampaignWithPage } from '../../../services/campaign/campaign-query'\nimport { EnumCampaignPath } from '../../../services/campaign/campaign-typed'\n\nconst Layout = styled.div`\n display: flex;\n flex: 1;\n flex-flow: row;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n padding-right: 16px;\n`\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst CampaignList = () => {\n const { push, query } = useRouter()\n const { data: campaign } = useGetCampaignWithPage({ page: query.page, q: query.q })\n const { items, meta } = campaign || {}\n\n const onViewClick = useCallback(\n record => {\n const routeParam: any = {\n id: record.id,\n }\n\n push(paths.campaignDetail({ routeParam }))\n },\n [push],\n )\n\n const onCreateClick = useCallback(\n record => {\n push(paths.createCampaign())\n },\n [push],\n )\n\n const columns = useMemo(() => {\n return [\n {\n title: 'Title',\n dataIndex: 'title',\n },\n // { title: 'Author', dataIndex: 'authorName' },\n // {\n // title: 'Status',\n // dataIndex: 'isActive',\n // render: (text: string, record: { isActive: boolean }) => {\n // const { isActive } = record\n // return isActive ? (\n // \n // ) : (\n // \n // )\n // },\n // },\n {\n title: 'route',\n dataIndex: 'route',\n render: (text: string, record: { route: string }) => {\n const { route } = record\n const pathName = Object.keys(EnumCampaignPath).find(path => {\n const value = EnumCampaignPath[path as keyof typeof EnumCampaignPath]\n return route === value\n })\n return {pathName ? pathName?.toUpperCase() : '-'}\n },\n },\n {\n title: 'Start Date',\n dataIndex: 'startDate',\n render: (text: string, record: { startDate: string }) => {\n const { startDate } = record\n return startDate ? (\n {dayjs(startDate).format('D MMMM YYYY HH:mm ')}\n ) : (\n {`Not starDate yet`}\n )\n },\n },\n {\n title: 'End Date',\n dataIndex: 'endDate',\n render: (text: string, record: { endDate: string }) => {\n const { endDate } = record\n return endDate ? (\n {dayjs(endDate).format('D MMMM YYYY HH:mm ')}\n ) : (\n {`Not endDate yet`}\n )\n },\n },\n {\n title: '',\n dataIndex: 'action',\n render: (text: string, record: {}) => (\n \n ),\n },\n ]\n }, [onViewClick])\n\n const setQueryParam = useCallback(\n params => {\n push(paths.campaign({ queryParam: { ...query, ...params } }))\n },\n [push, query],\n )\n const onSearch = useCallback(\n text => {\n setQueryParam({ q: text, page: 1 })\n },\n [setQueryParam],\n )\n const onPageChange = useCallback(\n page => {\n setQueryParam({ page })\n },\n [setQueryParam],\n )\n\n return (\n \n \n \n Create\n \n \n \n }\n tableProps={{\n columns,\n data: items,\n onPageChange,\n pagination: {\n currentPage: meta?.currentPage || 0,\n itemCount: meta?.itemCount || 0,\n itemsPerPage: meta?.itemsPerPage || 0,\n totalItems: meta?.totalItems || 0,\n totalPages: meta?.totalPages || 0,\n },\n }}\n searchInputProps={{ onSearch, value: query.q, placeholder: 'Search title' }}\n />\n )\n}\n\nexport default CampaignList\n","import styled from '@emotion/styled'\nimport React, { useState } from 'react'\nimport { useCallback } from 'react'\nimport { FileRejection, useDropzone } from 'react-dropzone'\nimport { imageUrlToBase64, urlToFile } from '../../../../utils/image-helper'\nimport ImageEasyCrop, { CropAspect } from '../../../components/ImageEasyCrop'\n\nconst UploadArea = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 36px;\n padding: 10px 14px;\n border-radius: 4px;\n border: 1px dotted gray;\n`\n\nconst ImageEasyCropLayout = styled.div`\n position: relative;\n`\n\nexport type IUploadRenderProps = {\n onChange?: (value: string) => void\n}\n\nexport const UploadThumbNail = (props: IUploadRenderProps) => {\n const { onChange } = props\n const [imageBase64, setImageBase64] = useState('')\n\n const onDrop = useCallback(async (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n if (acceptedFiles.length > 0) {\n // Update the state with the uploaded file\n const file = acceptedFiles[0]\n const base64 = await readFileAsBase64(file)\n setImageBase64(base64)\n }\n }, [])\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop,\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg'],\n }, // Only allow image files\n multiple: false, // Only allow single file upload\n })\n\n const readFileAsBase64 = (file: File): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.onload = () => {\n // Read the file as base64 data\n const base64Data = reader.result as string\n resolve(base64Data)\n }\n\n reader.onerror = () => {\n reject(reader.error)\n }\n\n reader.readAsDataURL(file)\n })\n }\n\n const resizeImage = async (\n base64: string,\n targetSizeKB: number,\n targetAspect: number,\n ): Promise => {\n return new Promise(resolve => {\n const img = new Image()\n img.src = base64\n\n img.onload = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n\n // Set a maximum size to ensure better performance\n const maxSize = 1080\n let newWidth, newHeight\n\n // Calculate new dimensions based on the target aspect ratio\n if (img.width > img.height) {\n newWidth = Math.min(img.width, maxSize)\n newHeight = newWidth / targetAspect\n } else {\n newHeight = Math.min(img.height, maxSize)\n newWidth = newHeight * targetAspect\n }\n\n // Set the new dimensions on the canvas\n canvas.width = newWidth\n canvas.height = newHeight\n\n // Draw the image on the canvas with the new dimensions\n ctx.drawImage(img, 0, 0, newWidth, newHeight)\n\n // Initialize quality and compression settings\n let currentQuality = 1 // Starting with a high quality\n let currentSizeKB = Number.MAX_SAFE_INTEGER\n const step = 0.1\n\n // Iterate until the size is below the target\n while (currentSizeKB > targetSizeKB && currentQuality >= 0.7) {\n console.log('currentSizeKB:', currentSizeKB)\n const imageDataUrl = canvas.toDataURL('image/jpeg', currentQuality)\n currentSizeKB = imageDataUrl.length / 1024\n currentQuality -= step\n }\n\n // Resolve with the final base64 string\n resolve(canvas.toDataURL('image/jpeg', currentQuality))\n }\n })\n }\n\n const onConfirm = useCallback(\n async (imagePath: string): Promise => {\n const base64Result = await imageUrlToBase64(imagePath)\n const base64 = base64Result?.toString()\n\n if (base64) {\n // Resize the image to target size (e.g., 100KB)\n const aspect = 16 / 9\n const resizedBase64 = await resizeImage(base64, 100, aspect)\n onChange?.(resizedBase64)\n // onChange?.(base64)\n }\n },\n [onChange],\n )\n\n const onClose = useCallback(() => {\n onChange?.('')\n }, [onChange])\n\n return (\n
\n
\n \n Upload Thumbnail Image\n \n \n
\n \n {!!imageBase64 && (\n \n )}\n \n
\n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { Card, CardContent, CardMedia, Grid, Modal, makeStyles } from '@material-ui/core'\nimport Button from '../../../components/common/Button'\nimport { Form, Field } from 'react-final-form'\nimport ConfirmCard from '../../../components/common/Card'\nimport { useRouter } from '../../../../utils/helper'\nimport { InputField, SelectField, DatePickerField } from '../../../components/fields'\nimport { createValidation, required, maxLength, cp } from '../../../../utils/field-validation'\nimport Toast from '../../../components/common/Toast'\nimport ReactQuill from 'react-quill'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport Text from '../../../components/common/Text'\nimport { useCurrentUser } from '../../../services/user/user-query'\nimport { isEmpty } from 'lodash'\nimport mobileFrameImg from '../../../../asset/images/mobile_frame.png'\nimport { useVisible } from '../../../../utils/custom-hooks'\nimport * as paths from '../../../constants/path'\nimport { UploadThumbNail } from './UploadThumbNail'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport AttachFileIcon from '@material-ui/icons/AttachFile'\nimport { Authorize, validateCorrectRole } from '../../../components/Authorize'\nimport { ROLE } from '../../../services/user/user-typed'\nimport Quill from 'quill'\nimport BlotFormatter from 'quill-blot-formatter'\nimport ImageCompress from 'quill-image-compress'\nimport 'react-quill/dist/quill.snow.css'\nimport 'react-quill/dist/quill.core.css'\nimport { toast } from 'react-toastify'\nimport { css } from '@emotion/css'\nimport {\n useCreateCampaign,\n useDeleteCampaign,\n useGetCampaignById,\n useUpdateCampaign,\n} from '../../../services/campaign/campaign-query'\nimport { CreateCampaignBody, EnumCampaignPath } from '../../../services/campaign/campaign-typed'\nimport dayjs from 'dayjs'\n\n// Register Quill modules\nQuill.register('modules/blotFormatter', BlotFormatter)\nQuill.register('modules/imageCompress', ImageCompress)\n\nconst CustomCard = styled(ConfirmCard)`\n width: 100%;\n max-width: 1000px;\n`\n\nconst ContentLayout = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0 24px;\n`\n\nconst IPhoneFrame = styled.div`\n background-image: url(${mobileFrameImg});\n background-repeat: no-repeat;\n background-size: 1080px;\n background-position-x: center;\n width: 500px;\n height: 1000px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: -78px;\n`\n\nconst Screen = styled.div`\n width: 375px;\n height: 766px;\n margin-top: 160px;\n margin-left: 8px;\n border: 1px solid #dbdbdb;\n //padding-left: 4px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\n\nconst MarginTopButton = styled.div`\n margin-top: 86px;\n margin-left: 24px;\n`\n\nconst ColumnText = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0px;\n`\n\nconst ButtonStyled = styled(Button)`\n padding: 7px 13px;\n`\n\nconst imgStyle = css`\n img {\n width: 100%;\n height: 100%;\n }\n`\n\nconst useStyles = makeStyles(theme => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}))\n\nconst GridUploadArea = styled(Grid)`\n padding: 8px 16px 8px 0;\n border-radius: 4px;\n border: 1px dotted gray;\n :hover {\n background-color: #dadada;\n }\n`\n\ntype FormValue = {\n title: string\n description: string\n authorName: string\n isActive: boolean\n thumbnailImage: string\n}\n\nconst validate = createValidation(() => ({\n title: cp(required('required title'), maxLength(50, 'Maximum length required 50')),\n buttonName: cp(maxLength(50, 'Maximum length required 50')),\n //route: cp(required('required path')),\n\n // description: cp(required('required description'), maxLength(100, 'Maximum length required 100')),\n // authorName: cp(required('required author name'), maxLength(50, 'Maximum length required 50')),\n}))\n\nconst CampaignDetail = () => {\n const history = useRouter()\n const { query } = useRouter()\n const { data: currentUser } = useCurrentUser()\n const campaignId = useMemo(() => query.id, [query.id])\n const { data: campaign } = useGetCampaignById(campaignId)\n const [isViewMode, setIsViewMode] = useState(false)\n const [bodyValue, setBodyValue] = useState('')\n const [isEmptyBody, setIsEmptyBody] = useState(true)\n const onConfirmModalVisible = useVisible()\n const onDeleteModalVisible = useVisible()\n const classes = useStyles()\n\n const handleOpenConfirmModal = useCallback(() => {\n onConfirmModalVisible.open()\n }, [onConfirmModalVisible])\n\n const handleCloseConfirmModal = useCallback(() => {\n onConfirmModalVisible.close()\n }, [onConfirmModalVisible])\n\n const handleOpenDeleteModal = useCallback(() => {\n onDeleteModalVisible.open()\n }, [onDeleteModalVisible])\n\n const handleCloseDeleteModal = useCallback(() => {\n onDeleteModalVisible.close()\n }, [onDeleteModalVisible])\n\n useEffect(() => {\n if (isEmpty(bodyValue) || bodyValue === '


') {\n setIsEmptyBody(true)\n } else {\n setIsEmptyBody(false)\n }\n }, [bodyValue])\n\n const modules = useMemo(() => {\n return {\n toolbar: [\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\n [{ size: [] }],\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\n //[{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\n //[{ align: [] }],\n //[{ color: [] }, { background: [] }],\n [{ list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\n [{ color: [] }],\n ['image', 'link'], // Include 'image' in the toolbar options\n // Add other modules as needed\n ],\n blotFormatter: {},\n\n imageCompress: {\n quality: 0.7, // default 0.7\n maxWidth: 1000, // default 1000\n maxHeight: 1000, // default 1000\n imageType: 'image/jpeg', // default image/jpeg\n debug: true, // default true\n insertIntoEditor: (imageBase64URL: string, imageBlob: Blob, editor: Quill) => {\n const fileSizeInKb = imageBlob.size / 1024\n if (fileSizeInKb <= 150) {\n const range = editor.getSelection()\n editor.insertEmbed(range?.index || 0, 'image', `${imageBase64URL}`, 'user')\n } else {\n toast.error('File to Large')\n }\n },\n },\n }\n }, [])\n\n useEffect(() => {\n if (campaign?.id || !validateCorrectRole(ROLE.MANAGER, currentUser?.role)) {\n setIsViewMode(true)\n }\n }, [campaign, currentUser])\n\n const initialValues = useMemo(() => {\n let label\n Object.entries(EnumCampaignPath).forEach(([key, value]) => {\n if (value === campaign?.route) {\n label = key\n }\n })\n console.log({ label, startDate: campaign?.startDate })\n return query.id\n ? {\n title: campaign?.title,\n buttonName: campaign?.buttonName,\n startDate: dayjs(campaign?.startDate).format('YYYY-MM-DDTHH:mm'),\n endDate: dayjs(campaign?.endDate).format('YYYY-MM-DDTHH:mm'),\n thumbnailImage: campaign?.thumbnailImage,\n route: label ? { label: label, value: campaign?.route } : undefined,\n }\n : {}\n }, [campaign, query.id])\n\n const { mutate: updateCampaign } = useUpdateCampaign(campaign?.id || '')\n const { mutate: createCampaign } = useCreateCampaign()\n const { mutate: deleteCampaign } = useDeleteCampaign(campaign?.id || '')\n\n const onGoBackToCampaign = useCallback(() => {\n history.push(paths.campaign())\n }, [history])\n\n const onSubmit = useCallback(\n values => {\n const { title, buttonName, route, startDate, endDate, thumbnailImage } = values\n const params: CreateCampaignBody = {\n title,\n body: bodyValue,\n thumnailImage: thumbnailImage,\n buttonName: buttonName,\n startDate: startDate,\n endDate: endDate,\n route: route?.value,\n }\n if (query.id) {\n updateCampaign(params, {\n onSuccess: () => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToCampaign()\n },\n onError: error => {\n Toast.info('ไฟล์รูปภายในบทความอาจมีความใหญ่เกินไป')\n handleCloseConfirmModal()\n },\n })\n } else {\n createCampaign(params, {\n onSuccess: () => {\n Toast.info('Success')\n handleCloseConfirmModal()\n onGoBackToCampaign()\n },\n onError: (error: any) => {\n Toast.info(error.errorMessage)\n handleCloseConfirmModal()\n },\n })\n }\n },\n [\n bodyValue,\n createCampaign,\n handleCloseConfirmModal,\n onGoBackToCampaign,\n query.id,\n updateCampaign,\n ],\n )\n\n useEffect(() => {\n if (isViewMode) {\n setBodyValue(campaign?.body || '')\n }\n }, [campaign, isViewMode])\n\n const onClickEdit = useCallback(() => {\n setIsViewMode(false)\n }, [])\n\n const onClickDelete = useCallback(() => {\n deleteCampaign()\n onGoBackToCampaign()\n }, [deleteCampaign, onGoBackToCampaign])\n\n const pathOptions = useMemo(() => {\n return Object.keys(EnumCampaignPath).map(\n (path): BaseOptionType => {\n const value = EnumCampaignPath[path as keyof typeof EnumCampaignPath]\n return {\n label: path.toUpperCase(),\n value: `${value}`,\n }\n },\n )\n }, [])\n\n return (\n <>\n \n {query.id && (\n \n \n Edit\n \n \n Delete\n \n \n )}\n \n \n {\n return (\n <>\n
\n
\n \n
\n Title\n \n
\n {/*
\n Description\n \n
*/}\n
\n
\n start date\n \n
\n
\n end date\n \n
\n
\n
\n Button Name\n \n
\n \n
\n {!isViewMode && (\n
\n Cover Image\n {!values.thumbnailImage ? (\n {\n form?.change('thumbnailImage', value)\n }}\n />\n ) : (\n \n
\n \n Uploaded\n
\n {\n form?.change('thumbnailImage', null)\n }}\n />\n
\n )}\n
\n )}\n
\n {!!values?.thumbnailImage && (\n \n \n {values?.title && (\n \n {values?.title}\n \n {values?.description\n ?.split('\\n')\n .map((line: string, index: number) => (\n \n {line}\n
\n
\n ))}\n
\n
\n )}\n
\n )}\n
\n\n {/* \n }\n label=\"Active\"\n /> */}\n \n {!isViewMode && (\n \n )}\n \n \n \n Submit\n \n \n \n
\n
\n \n \n \n \n \n
\n
\n \n \n Confirm\n \n \n Yes\n \n \n No\n \n
\n \n \n \n \n Confirm Delete\n \n \n Yes\n \n \n No\n \n \n \n \n \n )\n }}\n />\n
\n \n )\n}\n\nexport default CampaignDetail\n","import React, { Suspense } from 'react'\r\nimport { Redirect, Switch } from 'react-router-dom'\r\nimport { LayoutSplashScreen, ContentRoute } from '../_metronic/layout'\r\nimport UserprofilePage, { UserProfile } from './pages/user/UserProfile'\r\nimport { NotificationList, NotificationDetail } from './pages/notification'\r\nimport { PortList, PortDetail } from './pages/port'\r\nimport * as path from '../app/constants/path'\r\nimport { UserList } from './pages/user'\r\nimport { TransactionList, TransactionDetail } from './pages/transaction'\r\n\r\nimport { KycDetail, KycList } from './pages/kyc'\r\nimport { BankAccountList, BankAccountDetail } from './pages/bankaccount'\r\nimport { ArticleList, ArticleDetail } from './pages/article'\r\nimport { appConfig } from './constants/app-config'\r\nimport { Setting } from './pages/setting'\r\nimport { RewardList } from './pages/reward'\r\nimport RewardDetail from './pages/reward/RewardDetail'\r\nimport { Authorize } from './components/Authorize'\r\nimport { ROLE } from './services/user/user-typed'\r\nimport { BannerDetail, BannerList } from './pages/banner'\r\nimport { CampaignDetail, CampaignList } from './pages/campaign'\r\n\r\nexport default function BasePage() {\r\n return (\r\n }>\r\n \r\n {\r\n /* Redirect from root URL to /users */\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 {appConfig.ENABLE_FEATURE_ARTICLE && appConfig.ENABLE_FEATURE_TRUE_MONEY && (\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","import React from 'react'\n\ntype AuthInputProps = {\n input: any\n meta: any\n [key: string]: any\n}\n\nconst getInputClasses = (meta: any) => {\n if (meta.error && meta.touched) {\n return 'is-invalid'\n }\n if (!meta.error && meta.touched) {\n return 'is-valid'\n }\n return ''\n}\n\nexport default (props: AuthInputProps) => {\n const { input, meta, ...componentProps } = props\n return (\n <>\n \n {meta.error && meta.touched && (\n
\n
\n {meta.error}\n
\n
\n )}\n \n )\n}\n","import React, { useCallback, useState } from 'react'\r\nimport { Field, Form } from 'react-final-form'\r\nimport { Link } from 'react-router-dom'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useIsFetching } from 'react-query'\r\nimport { useLogin } from '../../services/auth/auth-query'\r\nimport { cp, createValidation, required, email } from '../../../utils/field-validation'\r\nimport NolabelInput from '../../components/common/NoLabelInput'\r\n\r\nconst initialvalues = {\r\n email: 'admin@moveplus.com',\r\n password: 'admin1234',\r\n}\r\nexport type LoginFormValue = {\r\n email: string\r\n password: string\r\n}\r\n\r\nconst loginValidation = createValidation(() => ({\r\n email: cp(required('required email'), email('Invalid email')),\r\n password: cp(required('required password')),\r\n}))\r\n\r\nexport default () => {\r\n const isFetching = useIsFetching()\r\n const { t } = useTranslation()\r\n const { mutateAsync } = useLogin() // diable default error\r\n const [errorMessage, setErrorMessage] = useState('')\r\n const onSubmit = useCallback(\r\n async value => {\r\n try {\r\n await mutateAsync(value)\r\n } catch (error) {\r\n setErrorMessage(t(error))\r\n }\r\n },\r\n [mutateAsync, t],\r\n )\r\n return (\r\n
\r\n {/* begin::Head */}\r\n
\r\n

Login Account

\r\n

Enter your username and password

\r\n
\r\n {/* end::Head */}\r\n\r\n {/*begin::Form*/}\r\n {\r\n return (\r\n
\r\n {errorMessage && (\r\n
\r\n
{errorMessage}
\r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Forgot Password\r\n \r\n \r\n Sign In\r\n {(submitting || !!isFetching) && (\r\n \r\n )}\r\n \r\n
\r\n \r\n )\r\n }}\r\n />\r\n
\r\n )\r\n}\r\n","import React from 'react'\nimport { Field, FormRenderProps } from 'react-final-form'\nimport { Link } from 'react-router-dom'\n\nimport NoLabelInput from '../../../components/common/NoLabelInput'\nimport { createValidation, required, cp, equal } from '../../../../utils/field-validation'\n\nexport type PasswordFormValue = {\n email: string\n password: string\n confirmPassword: string\n otpId: string\n otp: string\n}\n\nexport const validation = createValidation(value => ({\n password: required('Enter your password'),\n confirmPassword: cp(\n required('Enter your password'),\n equal(value.password, 'Passwords do not match'),\n ),\n}))\n\nexport default (props: FormRenderProps & { errorMessage: string; title: string }) => {\n const { submitting, errorMessage, title, invalid } = props\n return (\n <>\n
\n

{title}

\n

\n Enter your details to change password your for account\n

\n
\n {errorMessage && (\n
\n
{errorMessage}
\n
\n )}\n\n
\n \n
\n
\n \n
\n
\n \n Submit\n {/* {submitting && } */}\n \n\n \n \n Cancel\n \n \n
\n \n )\n}\n","import React from 'react'\nimport { Field, FormRenderProps } from 'react-final-form'\n\nimport NoLabelInput from '../../../components/common/NoLabelInput'\nimport {\n createValidation,\n required,\n cp,\n number,\n maxLength,\n minLength,\n} from '../../../../utils/field-validation'\nimport { Otp } from '../../../services/otp/otp-types'\n\nexport type OtpFormValue = {\n otp: string\n}\n\nexport const validation = createValidation(value => ({\n otp: cp(\n required('required OTP'),\n number('รูปแบบไม่ถูกต้อง'),\n maxLength(6, 'รูปแบบไม่ถูกต้อง'),\n minLength(6, 'รูปแบบไม่ถูกต้อง'),\n ),\n}))\n\nexport default (\n props: FormRenderProps & { onCancel: () => void; errorMessage: string; otpData?: Otp },\n) => {\n const { submitting, onCancel, errorMessage, otpData, invalid } = props\n\n return (\n <>\n
\n

Email Validation

\n

Enter OPT number from your email

\n
\n {errorMessage && (\n
\n
{errorMessage}
\n
\n )}\n
\n \n\n
ref: {otpData?.refCode}
\n
\n
\n \n Submit\n {submitting && }\n \n\n \n Cancel\n \n
\n \n )\n}\n","import { useMutation } from 'react-query'\nimport { api } from '../../../utils/api'\nimport { PasswordFormValue } from '../../pages/auth/shared/PasswordForm'\nimport { OtpFormValue } from '../../pages/auth/shared/OtpForm'\nimport { Otp } from './otp-types'\n\nexport const OTP_URL = 'internal/otp'\nexport const OTP_EMAIL = `${OTP_URL}/email`\nexport const VERIFY_OTP = `${OTP_URL}/verify`\n\nexport const useOtpEmail = () => {\n return useMutation<\n Otp,\n unknown,\n Pick & { action: 'forgot-password' }\n >(\n async params => {\n const response = await api.savvyGold.post(OTP_EMAIL, {\n value: params.email,\n action: params.action,\n })\n return response.data.data\n },\n {\n onError: () => {},\n },\n )\n}\n\nexport const useVerifyOtp = () => {\n return useMutation(\n params => {\n return api.savvyGold.post(VERIFY_OTP, params)\n },\n {\n onError: () => {},\n },\n )\n}\n","import React from 'react'\nimport { Field, FormRenderProps } from 'react-final-form'\nimport { Link } from 'react-router-dom'\n\nimport NoLabelInput from '../../../components/common/NoLabelInput'\nimport { createValidation, required, cp, email } from '../../../../utils/field-validation'\nimport { User } from '../../../services/user/user-typed'\n\nexport type ForgotPasswordFormValue = {\n email: string\n}\n\nexport type ResponseForgotPassword = {\n verifyOtp: boolean\n user: User\n}\n\nexport const validation = createValidation(value => ({\n email: cp(required('requried email'), email('Invalid email')),\n}))\n\nexport default (props: FormRenderProps & { errorMessage: string; title: string }) => {\n const { submitting, errorMessage, title } = props\n return (\n <>\n
\n

{title}

\n

\n Enter your details to change password your for account\n

\n
\n {errorMessage && (\n
\n
{errorMessage}
\n
\n )}\n\n
\n \n
\n\n
\n \n Submit\n {submitting && }\n \n\n \n \n Cancel\n \n \n
\n \n )\n}\n","import React, { useCallback, useState } from 'react'\r\nimport { Form } from 'react-final-form'\r\n\r\nimport { useUpdatePassword, useVerifyEmail } from '../../services/auth/auth-query'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useRouter } from '../../../utils/helper'\r\n\r\nimport * as paths from '../../constants/path'\r\nimport PasswordForm, {\r\n validation as passwordValidation,\r\n PasswordFormValue,\r\n} from './shared/PasswordForm'\r\nimport OtpForm, { validation as otpValidation, OtpFormValue } from './shared/OtpForm'\r\n\r\nimport { useOtpEmail, useVerifyOtp } from '../../services/otp/otp-query'\r\nimport { Otp } from '../../services/otp/otp-types'\r\nimport Toast from '../../components/common/Toast'\r\nimport ForgotPasswordForm, {\r\n validation as forgotPassword,\r\n ForgotPasswordFormValue,\r\n} from './shared/ForgotPasswordForm'\r\n\r\ntype SubmitValue = PasswordFormValue & OtpFormValue & ForgotPasswordFormValue\r\nconst validations = [forgotPassword, otpValidation, passwordValidation]\r\n\r\nexport default () => {\r\n const { t } = useTranslation()\r\n const { push } = useRouter()\r\n const { mutateAsync: verifyEmail } = useVerifyEmail()\r\n const { mutateAsync: requestOtp } = useOtpEmail()\r\n const { mutateAsync: verifyOtp } = useVerifyOtp()\r\n const { mutateAsync: updatePassword } = useUpdatePassword()\r\n const [otpData, setOtpData] = useState()\r\n const [errorMessage, setErrorMessage] = useState('')\r\n\r\n const [page, setPage] = useState(1)\r\n\r\n const nextPage = useCallback(() => {\r\n setPage(Math.min(page + 1, 3))\r\n }, [page])\r\n const previousPage = useCallback(() => {\r\n setPage(Math.max(page - 1, 1))\r\n }, [page])\r\n\r\n const onSubmit = useCallback(\r\n async (value: SubmitValue) => {\r\n if (page === 1) {\r\n try {\r\n const verifyEmailData = await verifyEmail({ email: value.email })\r\n if (verifyEmailData.isEmailExist) {\r\n const otpData = await requestOtp({ email: value.email, action: 'forgot-password' })\r\n setOtpData(otpData)\r\n setErrorMessage('')\r\n nextPage()\r\n } else {\r\n throw new Error('email is not exist')\r\n }\r\n } catch (e) {\r\n setErrorMessage(t(`errors.${e?.errorCode}`, 'Something Went Wrong'))\r\n }\r\n }\r\n if (page === 2) {\r\n try {\r\n // await verifyOtp({ otpId: otpData!.otpId, otp: value.otp })\r\n setErrorMessage('')\r\n nextPage()\r\n } catch (e) {\r\n setErrorMessage(t(`errors.${e?.errorCode}`, 'Something Went Wrong'))\r\n }\r\n }\r\n if (page === 3) {\r\n try {\r\n await updatePassword({\r\n email: value.email,\r\n password: value.password,\r\n otpId: otpData!.otpId,\r\n otp: value.otp,\r\n })\r\n Toast.info('Change Password Success')\r\n push(paths.login())\r\n } catch (e) {\r\n setErrorMessage(t(`errors.${e?.errorCode}`, 'Something Went Wrong'))\r\n }\r\n }\r\n },\r\n [page, verifyEmail, requestOtp, nextPage, t, otpData, updatePassword, push],\r\n )\r\n return (\r\n
\r\n {\r\n return (\r\n
\r\n {page === 1 && (\r\n \r\n )}\r\n {page === 2 && (\r\n \r\n )}\r\n {page === 3 && (\r\n \r\n )}\r\n \r\n )\r\n }}\r\n />\r\n
\r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react'\r\nimport { Link, Switch, Redirect } from 'react-router-dom'\r\nimport { toAbsoluteUrl } from '../../../_metronic/_helpers'\r\nimport { ContentRoute } from '../../../_metronic/layout'\r\nimport Login from './Login'\r\n\r\nimport ForgotPassword from './ForgotPassword'\r\nimport '../../../_metronic/_assets/sass/pages/login/classic/login-1.scss'\r\nimport { appMeta } from '../../AppHelmet'\r\n\r\nexport function AuthPage() {\r\n const currentYear = new Date().getFullYear()\r\n return (\r\n <>\r\n
\r\n {/*begin::Login*/}\r\n \r\n {/*begin::Aside*/}\r\n \r\n {/*begin: Aside Container*/}\r\n
\r\n {/* start:: Aside header */}\r\n \r\n \r\n \r\n {/* end:: Aside header */}\r\n\r\n {/* start:: Aside content */}\r\n
\r\n

{appMeta.title}

\r\n {/*

\r\n The ultimate Bootstrap & React 16 admin theme framework for next generation web\r\n apps.\r\n

*/}\r\n
\r\n {/* end:: Aside content */}\r\n\r\n {/* start:: Aside footer for desktop */}\r\n
\r\n
\r\n © {currentYear} {appMeta.title}\r\n
\r\n
\r\n {/* \r\n Privacy\r\n \r\n \r\n Legal\r\n \r\n \r\n Contact\r\n */}\r\n
\r\n
\r\n {/* end:: Aside footer for desktop */}\r\n
\r\n {/*end: Aside Container*/}\r\n
\r\n {/*begin::Aside*/}\r\n\r\n {/*begin::Content*/}\r\n
\r\n {/*begin::Content header*/}\r\n {/*
\r\n Don't have an account yet?\r\n \r\n Sign Up!\r\n \r\n
*/}\r\n {/*end::Content header*/}\r\n\r\n {/* begin::Content body */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {/*end::Content body*/}\r\n\r\n {/* begin::Mobile footer */}\r\n
\r\n
\r\n © {currentYear} {appMeta.title}\r\n
\r\n
\r\n {/* \r\n Privacy\r\n \r\n \r\n Legal\r\n \r\n \r\n Contact\r\n */}\r\n
\r\n
\r\n {/* end::Mobile footer */}\r\n
\r\n {/*end::Content*/}\r\n \r\n {/*end::Login*/}\r\n \r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport {toAbsoluteUrl} from \"../../../_metronic/_helpers\";\r\n\r\nexport function ErrorPage1() {\r\n return (\r\n
\r\n \r\n \r\n 404\r\n \r\n

\r\n OOPS! Something went wrong here\r\n

\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport {toAbsoluteUrl} from \"../../../_metronic/_helpers\";\r\n\r\nexport function ErrorPage2() {\r\n return (\r\n
\r\n \r\n
\r\n

OOPS!

\r\n \r\n Something went wrong here\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport {toAbsoluteUrl} from \"../../../_metronic/_helpers\";\r\nimport \"../../../_metronic/_assets/sass/pages/error/error-3.scss\";\r\n\r\nexport function ErrorPage3() {\r\n return (\r\n
\r\n \r\n
\r\n

404

\r\n

\r\n How did you get here\r\n

\r\n

\r\n Sorry we can't seem to find the page you're looking for.\r\n

\r\n

\r\n There may be a misspelling in the URL entered,\r\n
\r\n or the page you are looking for may no longer exist.\r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { toAbsoluteUrl } from \"../../../_metronic/_helpers\";\r\nimport \"../../../_metronic/_assets/sass/pages/error/error-4.scss\";\r\n\r\nexport function ErrorPage4() {\r\n return (\r\n
\r\n \r\n
\r\n

\r\n 404\r\n

\r\n

\r\n ERROR\r\n

\r\n

\r\n Nothing left to do here.\r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { toAbsoluteUrl } from \"../../../_metronic/_helpers\";\r\nimport \"../../../_metronic/_assets/sass/pages/error/error-5.scss\";\r\n\r\nexport function ErrorPage5() {\r\n return (\r\n
\r\n \r\n
\r\n

\r\n Oops!\r\n

\r\n

\r\n Something went wrong here.\r\n

\r\n

\r\n We're working on it and we'll get it fixed\r\n
\r\n as soon possible.\r\n
\r\n You can back or use our Help Center.\r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { toAbsoluteUrl } from \"../../../_metronic/_helpers\";\r\nimport \"../../../_metronic/_assets/sass/pages/error/error-6.scss\";\r\n\r\nexport function ErrorPage6() {\r\n return (\r\n
\r\n \r\n
\r\n \r\n Oops...\r\n \r\n

\r\n Looks like something went wrong.\r\n
\r\n We're working on it\r\n

\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Redirect, Route, Switch } from \"react-router-dom\";\r\nimport { ErrorPage1 } from \"./ErrorPage1\";\r\nimport { ErrorPage2 } from \"./ErrorPage2\";\r\nimport { ErrorPage3 } from \"./ErrorPage3\";\r\nimport { ErrorPage4 } from \"./ErrorPage4\";\r\nimport { ErrorPage5 } from \"./ErrorPage5\";\r\nimport { ErrorPage6 } from \"./ErrorPage6\";\r\n\r\nexport default function ErrorsPage() {\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","import React, { useState, useMemo } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Avatar from '@material-ui/core/Avatar'\nimport Grid from '@material-ui/core/Grid'\nimport Modal from 'react-bootstrap/Modal'\nimport Carousel from 'react-bootstrap/Carousel'\nimport { green } from '@material-ui/core/colors'\nimport { useGetUser } from '../services/user/user-query'\nimport dayjs from 'dayjs'\nimport Card from '../components/common/Card'\nimport Text from '../components/common/Text'\nimport { useLocation } from 'react-router-dom'\nconst useStyles = makeStyles(theme => ({\n maindetail: {\n display: 'flex',\n flexDirection: 'column',\n\n width: '100%',\n maxWidth: 1000,\n },\n PortandTransactionandKYC: {\n padding: '10px',\n width: '100%',\n marginBlockStart: 10,\n },\n imageprofile: {\n padding: 10,\n },\n columUnderphoto: {\n padding: 10,\n width: '80%',\n },\n OtherDetail: {\n display: 'flex',\n flexDirection: 'column',\n padding: 10,\n width: '100%',\n },\n\n bigAvatar: {\n padding: 0,\n margin: 0,\n width: '280px',\n height: '280px',\n },\n bigAvatarSlide: {\n padding: 0,\n margin: 0,\n width: '100%',\n height: '500px',\n },\n avatar: {\n padding: 10,\n margin: 10,\n },\n columnPort: {\n width: '100%',\n padding: '10px',\n height: '300px',\n },\n columProfile: {\n width: '50%',\n padding: '0px',\n margin: 0,\n height: '300px',\n },\n columLastTransaction: {\n width: '100%',\n padding: '10px',\n height: '300px',\n },\n columKYC: {\n width: '100%',\n padding: '10px',\n height: '300px',\n },\n columnDetailsidephoto: {\n display: 'flex',\n flexDirection: 'column',\n padding: '15px',\n height: '300px',\n marginLeft: '10px',\n },\n rounded: {\n color: '#fff',\n backgroundColor: green[500],\n },\n root: {\n flexGrow: 1,\n },\n paper: {\n padding: theme.spacing(2),\n textAlign: 'center',\n color: theme.palette.text.secondary,\n },\n grid: {\n display: 'grid',\n gridTemplateColumns: 'auto auto',\n },\n gridPortLastTransactionKYC: {\n display: 'grid',\n gridTemplateColumns: '505px auto',\n },\n gridheaderport: {\n display: 'grid',\n gridTemplateColumns: '50px auto',\n },\n gridheaderKYC: {\n display: 'grid',\n gridTemplateColumns: '130px auto',\n },\n gridheaderBank: {\n display: 'grid',\n gridTemplateColumns: '240px auto',\n },\n gridheaderLastTransaction: {\n display: 'grid',\n gridTemplateColumns: '170px auto',\n },\n gridcolum1: {\n display: 'grid',\n gridTemplateColumns: 'auto',\n },\n gridcolum2: {\n display: 'grid',\n gridTemplateColumns: '170px auto',\n },\n gridcolum2detail: {\n display: 'grid',\n gridColumnGap: '0px',\n gridTemplateColumns: '40px auto',\n },\n gridcolum3: {\n display: 'grid',\n gridTemplateColumns: 'auto auto auto',\n },\n gridphoto: {\n display: 'grid',\n gridTemplateColumns: 'auto auto',\n margin: '10px',\n padding: '10px',\n },\n flexphotoanddetail: {\n display: 'flex',\n flexDirection: 'row',\n },\n flexrow: {\n display: 'flex',\n flexDirection: 'row',\n padding: '5px',\n margin: '5px',\n },\n gridPhoto: {\n display: 'flex',\n flexDirection: 'row',\n justify: 'Left',\n alignItems: 'Left',\n margin: '10',\n },\n marginBlockStart: {\n marginBlockStart: '10px',\n },\n}))\nconst ImageArray = [0, 1, 2]\nexport const UserprofilePage = () => {\n const location = useLocation()\n const userId = useMemo(() => {\n return location.pathname.split('/')[2]\n }, [location])\n\n const { data: userRes } = useGetUser(userId)\n\n const classes = useStyles()\n const [show, setShow] = useState(false)\n const handleClose = () => setShow(false)\n const [currentCoroselIndex, setCurrentCoroselIndex] = useState()\n const handleShow = (id: any) => {\n setShow(true)\n setCurrentCoroselIndex(id)\n }\n const onCoroselChange = (index: any) => {\n setCurrentCoroselIndex(index)\n }\n\n return (\n
\n
\n User Profile\n \n
\n \n\n
\n
\n \n {userRes?.firstnameEn} {userRes?.lastnameEn}\n \n \n {userRes?.firstnameTh} {userRes?.lastnameTh}\n \n
\n
\n Citizen Id\n\n \n {userRes?.citizenId}\n \n\n Gender\n\n \n {userRes?.gender}\n \n\n Mobile No\n\n \n {userRes?.mobileNo}\n \n\n Email\n\n \n {userRes?.email}\n \n
\n
\n
\n
\n
\n Job\n\n \n {userRes?.job}\n \n\n Birth Date\n\n \n {dayjs(userRes?.birthdate).format('DD MMM')}{' '}\n {dayjs(userRes?.birthdate).format(`YYYY`)}\n \n\n Convenent\n\n \n {userRes?.callbackConvenientTime}\n \n\n Callback Number\n\n \n {userRes?.callbackMobileNo}\n \n\n Attachment\n
\n \n {ImageArray.map(id => (\n handleShow(id)}>\n \n \n ))}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Port\n \n (Link view more)\n \n
\n
\n Balance\n\n \n 12,342 (+300)\n \n\n Default Address \n\n \n {userRes?.addressCitizen}\n \n\n DCA date \n\n \n every 25 of mounth\n \n
\n
\n
\n\n \n
\n
\n Last Transaction \n \n (Link view more)\n \n
\n
\n Type \n
\n \n Buy\n \n (Pending)\n
\n Rate \n \n 0.334 per gram\n \n Gold amount \n \n 50 gram\n \n Price \n \n 100 bath\n \n Bank Account \n \n {userRes?.bankAccount} -scb\n \n
\n
\n
\n\n \n
\n
\n KYC Pending \n \n (Link view more)\n \n
\n
\n Username \n \n {userRes?.firstnameEn}\n \n\n Citizen Id \n \n {userRes?.citizenId}\n \n\n Convenient time \n \n {userRes?.callbackConvenientTime}\n \n\n Callback number \n \n {userRes?.callbackMobileNo}\n \n
\n
\n
\n \n
\n
\n Bank Account(Pending)\n \n (Link view more)\n \n
\n
\n No.\n \n {userRes?.firstnameEn}\n \n\n bank name:\n \n {userRes?.citizenId}\n \n\n Remark\n \n {userRes?.callbackConvenientTime}\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n}\n","/**\r\n * High level router.\r\n *\r\n * Note: It's recommended to compose related routes in internal router\r\n * components (e.g: `src/app/modules/Auth/pages/AuthPage`, `src/app/BasePage`).\r\n */\r\n\r\nimport React, { useMemo } from 'react'\r\nimport { Redirect, Switch, Route } from 'react-router-dom'\r\nimport { Layout } from '../_metronic/layout'\r\nimport BasePage from './BasePage'\r\nimport { AuthPage } from './pages/auth'\r\nimport ErrorsPage from './modules/ErrorsExamples/ErrorsPage'\r\nimport { UserprofilePage } from './pages/UserprofilePage1'\r\nimport { useCurrentUser } from './services/user/user-query'\r\n\r\nexport function Routes() {\r\n const { data, isLoading } = useCurrentUser()\r\n const isAuthorized = useMemo(() => {\r\n return !!data\r\n }, [data])\r\n return isLoading ? null : (\r\n \r\n {!isAuthorized ? (\r\n /*Render auth page when user at `/auth` and not authorized.*/\r\n \r\n \r\n \r\n ) : (\r\n /*Otherwise redirect to root page (`/`)*/\r\n\r\n \r\n )}\r\n\r\n \r\n \r\n {/* */}\r\n\r\n {!isAuthorized ? (\r\n /*Redirect to `/auth` when user is not authorized*/\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","/* eslint-disable no-extend-native */\nimport numeral from 'numeral'\nimport dayJS, { Dayjs } from 'dayjs'\nimport timezone from 'dayjs/plugin/timezone'\nimport utc from 'dayjs/plugin/utc'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayJS.extend(utc)\ndayJS.extend(timezone)\ndayJS.extend(customParseFormat)\ndayJS.tz.setDefault('Asia/Bangkok')\ndeclare global {\n interface Date {\n toDayjs: (format?: string) => Dayjs\n }\n interface Number {\n toDayjs: (format?: string) => Dayjs\n format: (format: string) => string\n }\n interface String {\n toDayjs: (format?: string) => Dayjs\n toNumber: () => number\n }\n}\n\nDate.prototype.toDayjs = function(format?: string) {\n return dayJS(this, format)\n}\n\nNumber.prototype.toDayjs = function(format?: string) {\n return dayJS(this as number, format)\n}\n\nNumber.prototype.format = function(format: string) {\n return numeral(this).format(format)\n}\n\nString.prototype.toDayjs = function(format?: string) {\n return dayJS(this as string, format)\n}\n\nString.prototype.toNumber = function() {\n return numeral(this).value()\n}\n","import { LanguageKeys, makeText } from './language'\n\nexport const getTranslationErrors = (key: LanguageKeys) => {\n const text = makeText(key)\n return {\n '400-001': text('sample message', 'ข้อความตัวอย่าง'),\n '400-002': text(\n \"You don't have permission to use this function.\",\n 'คุณไม่มีสิทธิ์ใช้งานฟังก์ชันนี้',\n ),\n '400-003': text('Missing value', 'ข้อมูลไม่ครบ'),\n '422-001': text('User not found with this e-mail', 'ไม่พบผู้ใช้งานด้วย e-mail นี้'),\n '422-002': text('Wrong e-mail or password', 'e-mail หรือ รหัสผู้ใช้งาน ผิดพลาด'),\n '422-003': text(\n \"Can't create a bank account, The bank account is in a pending state\",\n 'คุณไม่สามารถผูกบัญชีธนาคารได้ เนื่องจากบัญชีธนาคารของคุณอยู่ในสถานะตรวจสอบ',\n ),\n '422-004': text(\n \"Can't create a bank account, The bank account has a already exists\",\n 'คุณไม่สามารถผูกบัญชีธนาคารได้ เนื่องจากคุณมีบัญชีธนาคารแล้ว',\n ),\n '422-005': text(\n \"Can't create a bank account, This number bank account has a already exists.\",\n 'คุณไม่สามารถผูกบัญชีธนาคารได้ เนื่องจากเลขบัญชีธนาคารซ้ำกับเลขบัญชีธนาคารของคนอื่น',\n ),\n '422-006': text('Find not found bank accounts', 'ไม่พบบัญชีธนาคาร'),\n '422-007': text(\n \"This bank account has status a rejected, Can't don't anythings\",\n 'บัญชีได้ถูกยกเลิก ไม่สามารถทำรายการได้',\n ),\n '422-008': text('Find not found user', 'ไม่พบผู้ใช้งาน'),\n '422-009': text('Find not found port', 'ไม่พบการเปิดพอร์ตทอง'),\n '422-010': text('Date must be 1 - 31', 'ข้อมูลวันที่ควรเป็นวันที่ 1-31'),\n '422-011': text(\n 'Amount must be 100 - 300,000 THB',\n 'สามารถใส่จำนวนขั้นต่ำ 100 บาท และไม่เกิน 300,000 บาท',\n ),\n '422-012': text('Find not found Dca', 'ไม่พบการซื้อทองอัตโนมัติ'),\n '422-013': text('Server SafeGold connection problem', 'การเชื่อมต่อ Server SafeGold เกิดปัญหา'),\n '422-014': text('CitizenId was already used', 'รหัสบัตรประชาชนนี้ถูกใช้งานไปแล้ว'),\n '422-015': text('User was already opened port', 'คุณเคยเปิดพอร์ตทองแล้ว'),\n '422-016': text('Find not found eKyc', 'ไม่พบการทำ eKyc'),\n '422-017': text(\n \"The phone number doesn't match the phone number used by eKyc\",\n 'เบอร์โทรศัพท์ติดต่อกลับไม่ตรงกับเบอร์โทรศัพท์ที่ทำ eKyc',\n ),\n '422-018': text('Find not found notification', 'ไม่พบการแจ้งเตือน'),\n '422-019': text(\n 'The notification that has been sent could not be updated',\n 'ไม่สามารถอัพเดตการแจ้งเตือนได้ เนื่องจากการแจ้งเตือนนี้ได้ถูกส่งแล้ว',\n ),\n '422-020': text('Find not found notification schedules', 'ไม่พบตารางการแจ้งเตือน'),\n '422-021': text('Server ThaiBulkSms connection problem', 'การเชื่อมต่อ ThaiBulkSms เกิดปัญหา'),\n '422-022': text('Incorrect pin', 'รหัส pin ไม่ถูกต้อง'),\n '422-023': text('Already verify pin.', 'รหัส pin นี้ถูกยืนยันไปแล้ว'),\n '422-024': text('Timeout pin', 'รหัส pin นี้หมดเวลาการใช้งาน'),\n '422-025': text('Find not found transaction', 'ไม่พบประวัติการทำรายการ'),\n '422-026': text('Payment has already exists', 'มีประวัติการจ่ายเงินแล้ว'),\n '422-027': text(\n 'Prompt Pay must have phone number',\n 'การจ่ายเงินแบบ Prompt pay ต้องมีเบอร์โทรศัพท์',\n ),\n '422-028': text('This payment has already success or fail', 'การจ่ายเงินนี้ถูกทำรายการแล้ว'),\n '422-029': text('Server eKyc connection problem', 'การเชื่อมต่อ Server eKyc เกิดปัญหา'),\n '422-030': text(\n 'Transaction type is not delivery',\n 'ประเภทประวัติการทำรายการไม่ใช่แบบการจัดส่ง',\n ),\n '422-031': text('Transaction status is not pending', 'ประวัติการทำรายการไม่ได้อยู่ในสถานะรอ'),\n '422-032': text('User not type Facebook', 'คุณสมัครสมาชิกผ่าน Facebook'),\n '422-033': text('This e-mail is already exists', 'e-mail นี้ถูกใช้งานแล้ว'),\n '422-034': text('This phone number has already exist', 'เบอร์โทรศัพท์นี้ถูกใช้งานแล้ว'),\n '422-035': text(\"Don't change phone number\", 'ไม่สามารถเปลี่ยนเบอร์โทรศัพท์ได้'),\n '422-036': text('Server Google connection problem', 'การเชื่อมต่อ Server Google เกิดปัญหา'),\n '422-037': text('Server Facebook connection problem', 'การเชื่อมต่อ Server Facebook เกิดปัญหา'),\n '422-038': text('Server Apple connection problem', 'การเชื่อมต่อ Server Apple เกิดปัญหา'),\n '422-039': text(\n \" Params approveStatus support only value 'approved' and 'rejected'\",\n \"การยืนยันสถานะสามารถระบุได้แค่ 'approved' และ 'rejected'\",\n ),\n '422-040': text(\n \"Can't update address to Kyc because Kyc has already verify\",\n 'ไม่สามารถเพิ่มที่อยู่ได้เนื่องจาก Kyc ได้ถูกยืนยันแล้ว',\n ),\n '422-041': text(\n \"Can't upload-image to KYC because KYC has already verify\",\n 'ไม่สามารถอัปโหลดรูปภาพได้เนื่องจาก Kyc ได้ถูกยืนยันแล้ว',\n ),\n '422-042': text('Transaction is exists', 'การทำรายการนี้ มีอยู่ในระบบแล้ว'),\n '422-043': text('Invalid Product Code', 'รหัสสินค้าไม่ถูกต้อง'),\n '422-044': text('Product out of Stock', 'จำนวนสินค้าหมดชั่วคราว'),\n '422-045': text('Insufficient Balance', 'จำนวนทองของคุณไม่เพียงพอ'),\n '422-046': text('User is Blacklisted', 'การทำรายการถูกระงับ'),\n '422-047': text('Missing required information', 'ข้อมูลการทำรายการไม่ครบ'),\n '422-048': text('User with that ID is missing', 'ไม่พบข้อมูลของคุณ'),\n '422-049': text('Service is not functioning', 'ระบบไม่พร้อมให้บริการในขณะนี้'),\n '422-050': text('SG rate does not match current rate', 'ข้อมูลราคาทองไม่ถูกต้อง'),\n '422-051': text('Gold Amount does not match', 'ข้อมูลจำนวนทองไม่ถูกต้อง'),\n '422-052': text('Invalid Rate', 'ข้อมูลราคาทองนี้ไม่สามารถใช้งานได้'),\n '422-053': text('Invalid Transaction ID', 'ไม่พบรายการนี้ระบบ'),\n '422-054': text('User ID/Vendor ID Mismatch', 'รหัสลูกค้าไม่ตรงกัน'),\n '422-055': text('User ID missing in transaction', 'รหัสลููกค้าไม่ตรงกับรายการ'),\n '422-056': text('Transaction Timeout', 'รายการนี้หมดเวลาแล้ว'),\n '422-057': text('Rate does not match current rate', 'ข้อมูลราคาทองไม่ถูกต้อง'),\n '422-058': text('User not registered', 'รหัสของคุณยังไม่ถูกลงทะเบียน'),\n '422-059': text(\n \"You can't create a Dca plan because you already have a Dca planned.\",\n 'คุณไม่สามารถสร้างการวางแผน Dca ได้ เนื่องจากคุณได้มีการวางแผน Dca อยู่แล้ว',\n ),\n '422-060': text(\n 'The start date must be at least today or after today',\n 'วันที่เริ่มต้นต้องเป็นวันปัจจุบัน หรือมากกว่า',\n ),\n '422-061': text('SIP ID does not match the User ID', 'รหัส SIP ไม่ตรงกับของคุณ'),\n '422-062': text('SIP Completed', 'SIP สิ้นสุดแล้ว'),\n '422-063': text('Invalid SIP ID', 'รหัส SIP ไม่ถูกต้อง'),\n '422-064': text('Invalid Service fee', 'ค่าธรรมเนียมไม่ถูกต้อง'),\n '422-065': text('Zip code is invalidate', 'รหัสไปรษณีย์ที่ท่านเลือกไม่สามารถใช้งานได้'),\n '422-066': text(\n 'Sell Transaction cannot be initiated within 1 days from the date of purchase',\n 'คุณสามารถขายทองได้หลังจาก รายการซื้อล่าสุด 1 วัน',\n ),\n '422-067': text(\n 'You have already entered the address, please close / reopen the app for data refresh.',\n 'ได้รับข้อมูลที่อยู่แล้ว กรุณา ปิด/เปิด แอพใหม่เพื่อการรีเฟรชข้อมูล',\n ),\n '422-068': text(\n 'Kyc status has been determined. Unable to save or change address information.',\n 'สถานะ Kyc สถานะได้ถูกพิจารณาแล้ว ไม่สามารถบันทึกหรือเปลี่ยนแปลงข้อมูลที่อยู่ได้',\n ),\n '422-069': text(\n 'Kyc status has been determined. Unable to save or change citizen images.',\n 'สถานะ Kyc สถานะได้ถูกพิจารณาแล้ว ไม่สามารถบันทึกหรือเปลี่ยนแปลงรูปภาพบัตรประชาชนได้',\n ),\n '422-070': text(\n 'You have already entered citizen images, please close / reopen the app for data refresh.',\n 'ได้รับรูปภาพบัตรประชาชนแล้ว กรุณา ปิด/เปิด แอพใหม่เพื่อการรีเฟรชข้อมูล',\n ),\n '422-071': text('Payment cannot be process', 'ไม่สามารถทำรายการชำระเงินได้'),\n '422-072': text(\n 'Payment request cannot be sent. PromptPay account is inactive. Please contact the bank of PromptPay account.',\n 'การขอจ่ายเงินไม่สำเร็จ คุณต้องทำการอนุญาตให้ระบบสามารถร้องขอการจ่ายเงินกับธนาคารที่คุณผูกไว้บนระบบ Prompt Pay',\n ),\n '422-073': text(\n \"Payment can't be processed. Please try again later.\",\n 'ไม่สามารถเชื่อมต่อ KBank ได้ กรุณาลองใหม่อีกครั้ง',\n ),\n '422-074': text('User not found', 'ไม่พบผู้ใช้งาน'),\n '422-075': text('Unable to update user profile', 'ไม่สามารถแก้ไขข้อมูลของคุณได้'),\n '422-076': text('Invalid user id', 'รหัสผู้ใช้งานไม่ถูกต้อง'),\n '422-077': text(\n 'Minimum age for registration should be 18',\n 'ไม่สามารถสมัครผู้ใช้งานได้ ผู้ใช้งานต้องมีอายุ 18 ปีขึ้นไป',\n ),\n '422-078': text(\n 'Sip cannot be cancelled until pending transaction is completed',\n 'คุณมีรายการซื้อทองอัตโนมัติที่กำลังดำเนินการอยู่ ยังไม่สามารถยกเลิกการซื้อทองอัตโนมัติได้ในขณะนี้ ',\n ),\n '422-079': text(\n 'Daily Transaction Limit Exceeded',\n 'การทำรายการของคุณในวันนี้ ถึงจำนวนจำกัดแล้ว',\n ),\n '422-080': text(\n 'Monthly Transaction Limit Exceeded',\n 'การทำรายการของคุณในเดือนนี้ ถึงจำนวนจำกัดแล้ว',\n ),\n '422-081': text(\n 'Purchases are currently unavailable. Please try again after a few hours. You cancontinue to sell your gold or request physical delivery',\n 'ไม่สามารถซื้อทองได้ในขณะนี้ โปรดลองอีกครั้งหลังจากนี้สองสามชั่วโมง แต่คุณสามารถดำเนินการขายทองหรือถอนทอง ของคุณได้',\n ),\n '422-082': text('Transaction cannot be process', 'ไม่สามารถทำรายการชำระเงินได้'),\n '422-083': text(\n 'ไม่สามารถทำรายการได้ กรุณาทำรายการในเวลาซื้อขาย 8.00 - 23.00 อีกครั้ง',\n 'ไม่สามารถทำรายการได้ กรุณาทำรายการในเวลาซื้อขาย 8.00 - 23.00 อีกครั้ง',\n ),\n '422-084': text(\n 'Deliveries are currently unavailable. Please try again tomorrow. You can continue to purchase or sell gold in the meantime.',\n 'การถอนทองอยู่ในช่วงเวลาปรับปรุงระบบ กรุณาลองใหม่อีกครั้งภายในวันพรุ่งนี้ แต่คุณยังสามารถออมทอง หรือถอนทองเป็นเงินได้ในขณะนี้',\n ),\n '422-085': text(\n 'Sales are currently unavailable. Please try again tomorrow. You can continue to purchase gold or request physical delivery.',\n 'การขายทองอยู่ในช่วงเวลาปรับปรุงระบบ กรุณาลองใหม่อีกครั้งภายในวันพรุ่งนี้ แต่คุณยังสามารถออมทอง หรือถอนทองแท่งได้ในขณะนี้',\n ),\n '422-086': text(\n 'System upgrade in progress. Please try again after some time',\n 'ระบบอยู่ในช่วงเวลาปรับปรุง กรุณาลองใหม่อีกครั้งในภายหลัง',\n ),\n '422-087': text(\n 'Transactions are currently unavailable. Please try again tomorrow.',\n 'การทำรายการทั้งหมดอยู่ในช่วงเวลาปรับปรุง กรุณาลองใหม่อีกครั้งในภายหลัง',\n ),\n '422-088': text(\n 'Purchases are currently unavailable. Please try again tomorrow. You can continue to sell your gold or request physical delivery.',\n 'การแแมทองอยู่ในช่วงเวลาปรับปรุงระบบ กรุณาลองใหม่อีกครั้งภายในวันพรุ่งนี้ แต่คุณยังสามารถขายทอง หรือถอนทองแท่งได้ในขณะนี้',\n ),\n '422-089': text('SIP Cancelled', 'ข้อมูล SIP นี้ถูกยกเลิกแล้ว'),\n '422-090': text('No Record found', 'ไม่พบรายการนี้'),\n '422-091': text('Invalid frequency', 'ประเภทความถี่ไม่ถูกต้อง'),\n '422-092': text('Invalid duration period', 'ช่วงเวลาไม่ถูกต้อง'),\n '422-093': text('User Id missing in transaction', 'รหัสผู้ใช้งานไม่ตรงกับรายการนี้'),\n '422-094': text('Invalid sip amount', 'จำนวนเงินไม่ตรงกับที่คุณวางแผนไว้'),\n '422-095': text('Insufficient Balance', 'ยอดคงเหลือไม่เพียงพอ'),\n '422-096': text('Unable to update user profile', 'ไม่สามารถอัพเดทข้อมูลผู้ใช้งานได้'),\n \"422-097\": text(\"User profile can edit after KYC is Approved\", \"สามารถแก้ไขข้อมูลผู้ใช้งานได้หลังจากผ่านการทำ KYC แล้วเท่านั้น\"),\n '500-001': text('Internal Server Error', 'เกิดข้อผิดพลาด'),\n }\n}\n","import { getTranslationErrors } from './errors'\n\nexport const languages = [\n {\n label: 'ภาษาไทย',\n value: 'th',\n },\n {\n label: 'English',\n value: 'en',\n },\n] as const\n\nexport type LanguageKeys = typeof languages[number]['value']\nexport const makeText = (key: LanguageKeys) => (en: string, th: string) =>\n ({\n en,\n th,\n }[key])\n\nexport const getTranslation = (key: LanguageKeys) => {\n return {\n [key]: {\n translation: {\n ...getTranslationErrors(key),\n },\n },\n }\n}\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport { getTranslation } from './language'\n\nconst resources = { ...getTranslation('th'), ...getTranslation('en') }\n\ni18n.use(initReactI18next).init({\n resources,\n lng: 'en',\n})\n\nexport default i18n\n","/**\r\n * Entry application component used to compose providers and render Routes.\r\n * */\r\n\r\nimport React from 'react'\r\nimport { Provider } from 'react-redux'\r\nimport { BrowserRouter } from 'react-router-dom'\r\nimport { PersistGate } from 'redux-persist/integration/react'\r\nimport { Routes } from '../app/Routes'\r\nimport { LayoutSplashScreen, MaterialThemeProvider } from '../_metronic/layout'\r\nimport { QueryClient, QueryClientProvider } from 'react-query'\r\nimport { ReactQueryDevtools } from 'react-query/devtools'\r\nimport './initialize'\r\nimport Toast from './components/common/Toast'\r\nimport i18n from '../utils/i18n'\r\nimport { I18nextProvider } from 'react-i18next'\r\nimport { AppHelmet } from './AppHelmet'\r\n\r\ntype AppProps = {\r\n store: any\r\n persistor: any\r\n basename: any\r\n}\r\n\r\nexport const queryCache = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n cacheTime: 5 * 1000,\r\n staleTime: 10 * 1000,\r\n retry: 0,\r\n },\r\n mutations: {\r\n retry: 0,\r\n },\r\n },\r\n})\r\n\r\nexport default function App({ store, persistor, basename }: AppProps) {\r\n return (\r\n /* Provide Redux store */\r\n \r\n \r\n {/* Asynchronously persist redux stores and show `SplashScreen` while it's loading. */}\r\n }>\r\n \r\n {/* Add high level `Suspense` in case if was not handled inside the React tree. */}\r\n }>\r\n {/* Override `basename` (e.g: `homepage` in `package.json`) */}\r\n \r\n {/*This library only returns the location that has been active before the recent location change in the current window lifetime.*/}\r\n \r\n {/* Provide `react-intl` context synchronized with Redux state. */}\r\n \r\n {/* Render routes with provided `Layout`. */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {process.env.NODE_ENV === 'development' && }\r\n \r\n \r\n \r\n )\r\n}\r\n","import MockAdapter from \"axios-mock-adapter\";\r\nimport mockAuth from \"../../app/modules/Auth/__mocks__/mockAuth\";\r\nimport mockCustomers from \"../../app/modules/ECommerce/__mocks__/mockCustomer\";\r\nimport mockProducts from \"../../app/modules/ECommerce/__mocks__/mockProduct\";\r\nimport mockRemarks from \"../../app/modules/ECommerce/__mocks__/mockRemark\";\r\nimport mockSpecifications from \"../../app/modules/ECommerce/__mocks__/mockSpecification\";\r\n\r\nexport default function mockAxios(axios) {\r\n const mock = new MockAdapter(axios, { delayResponse: 300 });\r\n\r\n mockAuth(mock);\r\n mockCustomers(mock);\r\n mockProducts(mock);\r\n mockRemarks(mock);\r\n mockSpecifications(mock);\r\n\r\n return mock;\r\n}\r\n","import {\r\n LOGIN_URL,\r\n ME_URL,\r\n REGISTER_URL,\r\n REQUEST_PASSWORD_URL\r\n} from \"../_redux/authCrud\";\r\nimport userTableMock from \"./userTableMock\";\r\n\r\nexport default function mockAuth(mock) {\r\n mock.onPost(LOGIN_URL).reply(({ data }) => {\r\n const { email, password } = JSON.parse(data);\r\n\r\n if (email && password) {\r\n const user = userTableMock.find(\r\n x =>\r\n x.email.toLowerCase() === email.toLowerCase() &&\r\n x.password === password\r\n );\r\n\r\n if (user) {\r\n return [200, { ...user, password: undefined }];\r\n }\r\n }\r\n\r\n return [400];\r\n });\r\n\r\n mock.onPost(REGISTER_URL).reply(({ data }) => {\r\n const { email, fullname, username, password } = JSON.parse(data);\r\n\r\n if (email && fullname && username && password) {\r\n const user = {\r\n id: generateUserId(),\r\n email,\r\n fullname,\r\n username,\r\n password,\r\n roles: [2], // Manager\r\n accessToken: \"access-token-\" + Math.random(),\r\n refreshToken: \"access-token-\" + Math.random(),\r\n pic: process.env.PUBLIC_URL + \"/media/users/default.jpg\"\r\n };\r\n\r\n userTableMock.push(user);\r\n\r\n return [200, { ...user, password: undefined }];\r\n }\r\n\r\n return [400];\r\n });\r\n\r\n mock.onPost(REQUEST_PASSWORD_URL).reply(({ data }) => {\r\n const { email } = JSON.parse(data);\r\n\r\n if (email) {\r\n const user = userTableMock.find(\r\n x => x.email.toLowerCase() === email.toLowerCase()\r\n );\r\n\r\n if (user) {\r\n user.password = undefined;\r\n\r\n return [200, { ...user, password: undefined }];\r\n }\r\n }\r\n\r\n return [400];\r\n });\r\n\r\n mock.onGet(ME_URL).reply(({ headers: { Authorization } }) => {\r\n const accessToken =\r\n Authorization &&\r\n Authorization.startsWith(\"Bearer \") &&\r\n Authorization.slice(\"Bearer \".length);\r\n\r\n if (accessToken) {\r\n const user = userTableMock.find(x => x.accessToken === accessToken);\r\n\r\n if (user) {\r\n return [200, { ...user, password: undefined }];\r\n }\r\n }\r\n\r\n return [401];\r\n });\r\n\r\n function generateUserId() {\r\n const ids = userTableMock.map(el => el.id);\r\n const maxId = Math.max(...ids);\r\n return maxId + 1;\r\n }\r\n \r\n}\r\n","import axios from \"axios\";\r\n\r\nexport const LOGIN_URL = \"api/auth/login\";\r\nexport const REGISTER_URL = \"api/auth/register\";\r\nexport const REQUEST_PASSWORD_URL = \"api/auth/forgot-password\";\r\n\r\nexport const ME_URL = \"api/me\";\r\n\r\nexport function login(email, password) {\r\n return axios.post(LOGIN_URL, { email, password });\r\n}\r\n\r\nexport function register(email, fullname, username, password) {\r\n return axios.post(REGISTER_URL, { email, fullname, username, password });\r\n}\r\n\r\nexport function requestPassword(email) {\r\n return axios.post(REQUEST_PASSWORD_URL, { email });\r\n}\r\n\r\nexport function getUserByToken() {\r\n // Authorization head should be fulfilled in interceptor.\r\n return axios.get(ME_URL);\r\n}\r\n","/**\r\n * Create React App entry point. This and `public/index.html` files can not be\r\n * changed or moved.\r\n */\r\nimport 'react-app-polyfill/ie11'\r\nimport 'react-app-polyfill/stable'\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport axios from 'axios'\r\nimport * as _redux from './redux'\r\nimport store, { persistor } from './redux/store'\r\nimport App from './app/App'\r\nimport './index.scss' // Standard version\r\n// import \"./sass/style.react.rtl.css\"; // RTL version\r\nimport './_metronic/_assets/plugins/keenthemes-icons/font/ki.css'\r\nimport 'socicon/css/socicon.css'\r\nimport '@fortawesome/fontawesome-free/css/all.min.css'\r\nimport './_metronic/_assets/plugins/flaticon/flaticon.css'\r\nimport './_metronic/_assets/plugins/flaticon2/flaticon.css'\r\n// Datepicker\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport {\r\n MetronicLayoutProvider,\r\n MetronicSplashScreenProvider,\r\n MetronicSubheaderProvider,\r\n} from './_metronic/layout'\r\n\r\n/**\r\n * Base URL of the website.\r\n *\r\n * @see https://facebook.github.io/create-react-app/docs/using-the-public-folder\r\n */\r\nconst { PUBLIC_URL } = process.env\r\n\r\n/**\r\n * Creates `axios-mock-adapter` instance for provided `axios` instance, add\r\n * basic Metronic mocks and returns it.\r\n *\r\n * @see https://github.com/ctimmerm/axios-mock-adapter\r\n */\r\n/* const mock = */ _redux.mockAxios(axios)\r\n\r\n/**\r\n * Inject metronic interceptors for axios.\r\n *\r\n * @see https://github.com/axios/axios#interceptors\r\n */\r\n_redux.setupAxios(axios, store)\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n)\r\n","/* eslint-disable */\n\"use strict\";\r\n// DOCS: https://javascript.info/cookie\r\n\r\n// Component Definition\r\nexport var KTCookie = function() {\r\n return {\r\n // returns the cookie with the given name,\r\n // or undefined if not found\r\n getCookie: function(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n },\r\n // Please note that a cookie value is encoded,\r\n // so getCookie uses a built-in decodeURIComponent function to decode it.\r\n setCookie: function(name, value, options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n options = Object.assign({}, {path: '/'}, options);\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for (var optionKey in options) {\r\n if (!options.hasOwnProperty(optionKey)) {\r\n continue;\r\n }\r\n updatedCookie += \"; \" + optionKey;\r\n var optionValue = options[optionKey];\r\n if (optionValue !== true) {\r\n updatedCookie += \"=\" + optionValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie;\r\n },\r\n // To delete a cookie, we can call it with a negative expiration date:\r\n deleteCookie: function(name) {\r\n setCookie(name, \"\", {\r\n 'max-age': -1\r\n })\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTCookie;\r\n}\r\n","import { first } from 'lodash'\nimport { FocusEvent } from 'react'\nimport { Area } from 'react-easy-crop/types'\nimport { v4 } from 'uuid'\n\nexport const imageUrlToBase64 = async (url: string) => {\n const response = await fetch(url)\n const responseBlob = await response.blob()\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onloadend = () => resolve(reader.result)\n reader.onerror = reject\n reader.readAsDataURL(responseBlob)\n })\n}\n\nexport const base64ToFile = (dataurl: string, filename: string) => {\n var arr = dataurl.split(',')\n // console.log({ arr })\n if (!arr || arr?.length) return\n\n const imageMeta = first(arr)\n // console.log({ imageMeta })\n const metaSpilt = imageMeta?.match(/:(.*?);/)\n // console.log({ metaSpilt })\n if (metaSpilt) {\n const mime = metaSpilt[1]\n // console.log({ mime })\n\n const buff = Buffer.from(arr[1])\n // console.log({ buff })\n\n return new File([buff], filename, { type: mime })\n }\n}\n\nexport const imageUrlToFile = async (url: string) => {\n try {\n const base64 = await imageUrlToBase64(url)\n // console.log('Here is Base64 Url', { base64 })\n if (!base64) return\n const fileData = base64ToFile(base64.toString(), 'imageName.jpg')\n // console.log('Here is JavaScript File Object', { fileData })\n return fileData\n } catch (error) {\n console.error('imageUrlToFile error', { error })\n }\n}\n\nexport const urlToFile = async (url: string, option?: any) => {\n try {\n const response = await fetch(url, {\n ...option,\n })\n\n if (!response?.ok) {\n throw Error('fetch image erorr')\n }\n const blob = await response.blob()\n // const imageObjectURL = URL.createObjectURL(blob)\n // console.log(imageObjectURL)\n\n return Promise.resolve(\n new File([blob], `temp-image-${v4()}.jpg`, { type: blob.type })\n )\n } catch (error) {\n console.error('urlToFile error', { error })\n return Promise.reject(error)\n }\n}\n\nexport const setCursorPositionOnInputFocus =\n (positionIndex: number) => (event: FocusEvent) => {\n const valueLength = event.target.value.length\n const lastPosition = valueLength - 1\n const targetPosition = Math.max(0, Math.min(positionIndex, lastPosition))\n event.target.selectionStart = targetPosition\n event.target.selectionEnd = targetPosition\n }\n\nexport const createImage = (url: string): Promise =>\n new Promise((resolve, reject) => {\n const image = new Image()\n image.addEventListener('load', () => resolve(image))\n image.addEventListener('error', (error) => reject(error))\n image.setAttribute('crossOrigin', 'anonymous') // needed to avoid cross-origin issues on CodeSandbox\n image.src = url\n })\n\nexport const getRadianAngle = (degreeValue: number) => {\n return (degreeValue * Math.PI) / 180\n}\n\nexport const getCroppedImg = async (\n imageSrc: string,\n pixelCrop: Area,\n rotation = 0\n): Promise => {\n const image = await createImage(imageSrc)\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n const maxSize = Math.max(image.width, image.height)\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2))\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea\n canvas.height = safeArea\n if (ctx) {\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2)\n ctx.rotate(getRadianAngle(rotation))\n ctx.translate(-safeArea / 2, -safeArea / 2)\n\n ctx.imageSmoothingQuality = 'high'\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n )\n const data = ctx.getImageData(0, 0, safeArea, safeArea)\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width\n canvas.height = pixelCrop.height\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n )\n\n // As Base64 string\n // return canvas.toDataURL('image/png');\n\n // As a blob\n return new Promise((resolve) => {\n canvas.toBlob(\n (file) => {\n if (file) {\n resolve(URL.createObjectURL(file))\n }\n },\n 'image/png',\n 1\n )\n })\n } else {\n return Promise.reject()\n }\n}\n\nexport const getCroppedImgCircle = async (\n imageSrc: string\n): Promise => {\n const image = await createImage(imageSrc)\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n canvas.height = image.height\n canvas.width = image.width\n\n const imageHeight = canvas.height\n const halfImageHeight = imageHeight / 2\n if (ctx) {\n ctx.beginPath()\n ctx.arc(halfImageHeight, halfImageHeight, halfImageHeight, 0, 6.28, false) //draw the circle\n ctx.clip() //call the clip method so the next render is clipped in last path\n ctx.closePath()\n\n ctx.drawImage(\n image,\n 0,\n 0,\n image.naturalWidth,\n image.naturalHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n )\n\n // As a blob\n return new Promise((resolve) => {\n canvas.toBlob(\n (file) => {\n if (file) {\n resolve(URL.createObjectURL(file))\n }\n },\n 'image/png',\n 1\n )\n })\n } else {\n return Promise.reject()\n }\n}\n","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4QBWRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAAEsAAAAAQAAASwAAAAB/+0ALFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAPHAFaAAMbJUccAQAAAgAEAP/hDIFodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eG1wdGs9J0ltYWdlOjpFeGlmVG9vbCAxMC4xMCc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp0aWZmPSdodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyc+CiAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICA8dGlmZjpYUmVzb2x1dGlvbj4zMDAvMTwvdGlmZjpYUmVzb2x1dGlvbj4KICA8dGlmZjpZUmVzb2x1dGlvbj4zMDAvMTwvdGlmZjpZUmVzb2x1dGlvbj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wTU09J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8nPgogIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnN0b2NrOjQ5ZDRhN2FlLTI1NjYtNDY5Yi05NmI5LWUxYzAxM2JiNmEwYzwveG1wTU06RG9jdW1lbnRJRD4KICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjUxYWY0OTY0LWE4MjQtNDk1Yy04MzgzLTQ3OTYxMzNjMzY2YjwveG1wTU06SW5zdGFuY2VJRD4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/8AACwgBaAFoAQERAP/EABsAAQADAQEBAQAAAAAAAAAAAAAFBgcEAgMB/8QAPhABAAEDAgIECA0EAgMAAAAAAAECAwQFBhEhEjFBUQcTNmFzgbHRFSIkMkJSU2JxcpGhwRQjk+GC8RY0Vf/aAAgBAQAAPwDXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI59XN68XX9Sr9HmeXXyAAAAAAAAAAAAAfbCxMnMvRZxbFd6ueymOK16Xsa/ciK9RyYtR9nb51fr1LHhbX0TFiOGHF2qPpXZ6X+kpaxMWzHC1jWaI+7REPr0afqx+j5XcTFvRwu41muPvURKLzdr6JlRPHDi1VP0rU9H/Suapsa/bia9OyYux9nc5Vfr1Kpm4mTh3ps5ViuzXHZVHB8QAAAAAAAAAABZdsbVyNSinJy+lYxZ5x9av8O6PO0DT8HE0+xFnEsUWqI6+Ec5/Ge10gAObUMHE1CxNjLsU3aJ745x+E9jP9z7VyNNirJxOlfxY5z9aj8e+POrQAAAAAAAAAALjsrbMZEUalqFv+112rUx87zz5l9iIiOERwiAAACYiY4THGJULeu2Yx4r1LT7f9rru2oj5vnjzKcAAAAAAAAAAn9l6J8K5/jb9M/wBLYmJr+9PZS06mIppimmIiIjhER2P0AAAflURVTNNURMTHCYntZjvTRPgrP8bYpn+lvzM0fdntpQAAAAAAAAAA9Wrdd27Rat0zVXXMU0xHbMtd0DTqNL0uziURHSpjjXP1qp65d4AAADg1/TqNU0u9iV8OlVHGifq1R1SyK7brtXa7Vymaa6JmmqJ7Jh5AAAAAAAAAWPwe4MZWuxfrjjRjU9P/AJdUe/1NLAAAABmnhCwYxddm/RHCjJp6f/Lqn3+tXAAAAAAAAAGh+DPGi3pF7JmOd67w9VMf9rWAAAACqeEvGi5pFnJiPjWbvD1VR/0zwAAAAAAAABquybcW9sYfD6VM1T66pTIAAAAIbe1uLm2Mzj9GmKo9VUMqAAAAAAAAAaxtCYnbWDw+z/mUsAAAACJ3fPDbWdx+z/mGTgAAAAAAAANP2Bei7tmxTx526qqJ/Xj/ACnwAAAAQG/73its36ePO5VTRH68f4ZgAAAAAAAAAvHgwy46OXg1TziYu0x+0/wuwAAAAKT4T8uOjiYNM85mbtUftH8qOAAAAAAAAAk9sah8G61j5Mzwt8ehc/LPKfe1uJiYiYnjE9UgAAABMxETMzwiOuWSbn1D4S1rIyYnjb49C3+WOUe9GAAAAAAAAADSdhavGdpsYd6r5Rjxw59dVHZP8LKAAAArW/dXjB02cOzXwyMiOHLrpo7Z/hmwAAAAAAAAAOnS86/p2dby8erhXRPV2VR2xLWNG1LH1TBoyserlPKqmeume6XaAAAOLWdSx9Lwa8rIq5Ryppjrqnuhk+qZ1/Uc65l5FXGuuerspjsiHMAAAAAAAAAAkNB1fK0jMi/YnpUTyuW5nlXHv87T9F1bD1bFi9i184+fRPzqJ87vAABwa1q2HpOLN7Kr5z8yiPnVz5mYa9q+Vq+ZN+/PRojlbtxPKiPf50eAAAAAAAAAAD74OXk4WRTkYt6q1cp7Yn29686FvTHvRTZ1OnxFzq8bTHxJ/HuWuxetX7cXLNyi5RPVVTPGJewB4v3rVi3Ny9cot0R11VTwiFU13emPZiqzplPj7nV42qPiR+Heo2dl5ObkVZGVequ3Ku2Z9nc+AAAAAAAAAAAAOjCzszCr6eJk3bM/dq5T6lgwt7apZiKci3ZyI75joz+3uSlnfmPMf3tPu0z9yuJ9z7/+dabw/wDVyv0p974Xt+Y8R/Z0+7VP364j3ovN3tql6Jpx7dnHjviOlP7+5X83OzM2vp5eTdvT96rlHqc4AAAAAAAAAAAAAAAAAAAAAAAAAA7MHS9QzZ+S4d67HfFPL9epN4eydVu8Jv3LGPHdNXSn9ktjbDxaeE5Gddr81FMU+9IWdnaHb+dZu3PzXJ/h129t6HR1adZn83Gfa+1OiaRT1abi/wCOHv4I0r/52L/ih4q0TSKuvTcX/HD43Nt6HX16dZj8vGPY5L2ztDufNs3bf5bk/wAo/J2HjVcZx867RPdXTFXs4InM2TqtrjNi5YyI7oq6M/uhM7S9Qwp+VYd61HfNPL9epxgAAAAAAAAD1at13bkW7dFVddU8IppjjMrPo+y8/KiLmbXGJbn6PXXPq7Ft0zbWkYHCqjGi9cj6d340+5MRERHCIiIjsgAAACYiY4TETE9kofU9taRn8aq8aLNyfp2viz7lS1jZefixNzCrjLtx9Hqrj1dqsXbddq5Nu5RVRXTPCaao4TDyAAAAAAAAmtu7dzdXqi5EeJxonndqjr/CO1oejaLgaVb6OLZjxnD41yrnVPrSIAAAAAjtZ0XA1W30cqzHjOHxblPKqPWzzcW3c3SKpuTHjsaZ5XaY6vxjsQoAAAAAAAteztrzndHO1Cmacbrot9U3PPPm9rQbdFFuimi3TFNNMcIiI4REPQAAAAADzcoouUVUXKYqpqjhMTHGJhn28drzg9LO0+masbrrt9c2/PHmVQAAAAAAFi2VoXwpl/1ORT8kszzj69Xd72l0xFNMU0xEREcIiOx+gAAAAAA/KoiqmaaoiYmOExPazTe2hfBeX/U49PyS9PKPqVd3uV0AAAAAB9cLHuZeXaxrMcbl2qKaWv6VhWtOwLWJZj4tunhx757ZdQAAAAAAA5dVwrWo4F3EvR8W5Tw4909ksgzce5iZd3GvRwuWqppqfIAAAAAFt8GmDF3UL2dXHGLFPRo/NP8Ar2tBAAAAAAAAZ94S8GLWoWc6iOEX6ejX+aP9exUgAAAAAaX4PMeLO3abnDneuVVz7I9ixgAAAAAAAK54Q8eL23a7nDnZuU1x7J9rNAAAAAAaztCmKdtYMR9lx/eUqAAAAAAAAit30xVtrOifsuP7wyYAAAAAGtbS8m8D0UJQAAAAAAABF7t8m8/0UslAAAAABrW0vJvA9FCUAAAAAAAARe7fJvP9FLJQAAAAAa1tLybwPRQlAAAAAAAAEXu3ybz/AEUslAAAAABrW0vJvA9FCUAAAAAAAARe7fJvP9FLJQAAAAAa1tLybwPRQlAAAAAAAAEXu3ybz/RSyUAAAAAGtbS8m8D0UJQAAAAAAABF7t8m8/0UslAAAAABrW0vJvA9FCUAAAAAAAARe7fJvP8ARSyUAAAAAGtbS8m8D0UJQAAAAAAABF7t8m8/0UslAAAAABrW0vJvA9FCUAAAAAAAARe7fJvP9FLJQAAf/9k=\"","/* eslint-disable */\n\"use strict\";\n\nimport PerfectScrollbar from \"perfect-scrollbar\";\n\nimport { KTCookie } from \"./cookie.js\";\r\n\r\n/**\r\n * @class KTUtil base utilize class that privides helper functions\r\n */\r\n\r\n// Polyfills\r\n/**\r\n * Element.matches() polyfill (simple version)\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\r\n */\r\nif (!Element.prototype.matches) {\r\n\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n\tif (!Element.prototype.matches) {\r\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\t}\r\n\tElement.prototype.closest = function (s) {\r\n\t\tvar el = this;\r\n\t\tvar ancestor = this;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tif (ancestor.matches(s)) return ancestor;\r\n\t\t\tancestor = ancestor.parentElement;\r\n\t\t} while (ancestor !== null);\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\n/**\r\n * ChildNode.remove() polyfill\r\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\r\n * @author Chris Ferdinandi\r\n * @license MIT\r\n */\r\n(function (elem) {\r\n\tfor (var i = 0; i < elem.length; i++) {\r\n\t\tif (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;\r\n\t\twindow[elem[i]].prototype.remove = function () {\r\n\t\t\tthis.parentNode.removeChild(this);\r\n\t\t};\r\n\t}\r\n})(['Element', 'CharacterData', 'DocumentType']);\r\n\r\n\r\n//\r\n// requestAnimationFrame polyfill by Erik Möller.\r\n// With fixes from Paul Irish and Tino Zijdel\r\n//\r\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n//\r\n// MIT license\r\n//\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['webkit', 'moz'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame =\r\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\r\n(function(arr) {\r\n arr.forEach(function(item) {\r\n if (item.hasOwnProperty('prepend')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'prepend', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function prepend() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function(argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n }\r\n });\r\n });\r\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\r\n\r\n// getAttributeNames\r\nif (Element.prototype.getAttributeNames == undefined) {\r\n Element.prototype.getAttributeNames = function () {\r\n var attributes = this.attributes;\r\n var length = attributes.length;\r\n var result = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n result[i] = attributes[i].name;\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n// Global variables\r\nwindow.KTUtilElementDataStore = {};\r\nwindow.KTUtilElementDataStoreID = 0;\r\nwindow.KTUtilDelegatedEventHandlers = {};\r\n\r\nexport var KTUtil = function() {\r\n var resizeHandlers = [];\r\n\r\n /** @type {object} breakpoints The device width breakpoints **/\r\n var breakpoints = {\r\n sm: 544, // Small screen / phone\r\n md: 768, // Medium screen / tablet\r\n lg: 992, // Large screen / desktop\r\n xl: 1200 // Extra large screen / wide desktop\r\n };\r\n\r\n /**\r\n * Handle window resize event with some\r\n * delay to attach event handlers upon resize complete\r\n */\r\n var _windowResizeHandler = function() {\r\n var _runResizeHandlers = function() {\r\n // reinitialize other subscribed elements\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n var each = resizeHandlers[i];\r\n each.call();\r\n }\r\n };\r\n\r\n var timer;\r\n\r\n window.addEventListener('resize', function() {\r\n KTUtil.throttle(timer, function() {\r\n _runResizeHandlers();\r\n }, 200);\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Class main initializer.\r\n * @param {object} settings.\r\n * @returns null\r\n */\r\n //main function to initiate the theme\r\n init: function(settings) {\r\n if (settings && settings.breakpoints) {\r\n breakpoints = settings.breakpoints;\r\n }\r\n\r\n _windowResizeHandler();\r\n },\r\n\r\n /**\r\n * Adds window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n addResizeHandler: function(callback) {\r\n resizeHandlers.push(callback);\r\n },\r\n\r\n /**\r\n * Removes window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n removeResizeHandler: function(callback) {\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n if (callback === resizeHandlers[i]) {\r\n delete resizeHandlers[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Trigger window resize handlers.\r\n */\r\n runResizeHandlers: function() {\r\n _runResizeHandlers();\r\n },\r\n\r\n resize: function() {\r\n if (typeof(Event) === 'function') {\r\n // modern browsers\r\n window.dispatchEvent(new Event('resize'));\r\n } else {\r\n // for IE and other old browsers\r\n // causes deprecation warning on modern browsers\r\n var evt = window.document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n }\r\n },\r\n\r\n /**\r\n * Get GET parameter value from URL.\r\n * @param {string} paramName Parameter name.\r\n * @returns {string}\r\n */\r\n getURLParam: function(paramName) {\r\n var searchString = window.location.search.substring(1),\r\n i, val, params = searchString.split(\"&\");\r\n\r\n for (i = 0; i < params.length; i++) {\r\n val = params[i].split(\"=\");\r\n if (val[0] == paramName) {\r\n return unescape(val[1]);\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether current device is mobile touch.\r\n * @returns {boolean}\r\n */\r\n isMobileDevice: function() {\r\n var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false);\r\n\r\n if (test === false) {\r\n // For use within normal web clients\r\n test = navigator.userAgent.match(/iPad/i) != null;\r\n }\r\n\r\n return test;\r\n },\r\n\r\n /**\r\n * Checks whether current device is desktop.\r\n * @returns {boolean}\r\n */\r\n isDesktopDevice: function() {\r\n return KTUtil.isMobileDevice() ? false : true;\r\n },\r\n\r\n /**\r\n * Gets browser window viewport size. Ref:\r\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n * @returns {object}\r\n */\r\n getViewPort: function() {\r\n var e = window,\r\n a = 'inner';\r\n if (!('innerWidth' in window)) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return {\r\n width: e[a + 'Width'],\r\n height: e[a + 'Height']\r\n };\r\n },\r\n\r\n /**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isInResponsiveRange: function(mode) {\r\n var breakpoint = this.getViewPort().width;\r\n\r\n if (mode == 'general') {\r\n return true;\r\n } else if (mode == 'desktop' && breakpoint >= (this.getBreakpoint('lg') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet' && (breakpoint >= (this.getBreakpoint('md') + 1) && breakpoint < this.getBreakpoint('lg'))) {\r\n return true;\r\n } else if (mode == 'mobile' && breakpoint <= this.getBreakpoint('md')) {\r\n return true;\r\n } else if (mode == 'desktop-and-tablet' && breakpoint >= (this.getBreakpoint('md') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet-and-mobile' && breakpoint <= this.getBreakpoint('lg')) {\r\n return true;\r\n } else if (mode == 'minimal-desktop-and-below' && breakpoint <= this.getBreakpoint('xl')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n\t\t/**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isBreakpointUp: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width >= breakpoint);\r\n },\r\n\r\n\t\tisBreakpointDown: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width < breakpoint);\r\n },\r\n\r\n /**\r\n * Generates unique ID for give prefix.\r\n * @param {string} prefix Prefix for generated ID\r\n * @returns {boolean}\r\n */\r\n getUniqueID: function(prefix) {\r\n return prefix + Math.floor(Math.random() * (new Date()).getTime());\r\n },\r\n\r\n /**\r\n * Gets window width for give breakpoint mode.\r\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\r\n * @returns {number}\r\n */\r\n getBreakpoint: function(mode) {\r\n return breakpoints[mode];\r\n },\r\n\r\n /**\r\n * Checks whether object has property matchs given key path.\r\n * @param {object} obj Object contains values paired with given key path\r\n * @param {string} keys Keys path seperated with dots\r\n * @returns {object}\r\n */\r\n isset: function(obj, keys) {\r\n var stone;\r\n\r\n keys = keys || '';\r\n\r\n if (keys.indexOf('[') !== -1) {\r\n throw new Error('Unsupported object path notation.');\r\n }\r\n\r\n keys = keys.split('.');\r\n\r\n do {\r\n if (obj === undefined) {\r\n return false;\r\n }\r\n\r\n stone = keys.shift();\r\n\r\n if (!obj.hasOwnProperty(stone)) {\r\n return false;\r\n }\r\n\r\n obj = obj[stone];\r\n\r\n } while (keys.length);\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Gets highest z-index of the given element parents\r\n * @param {object} el jQuery element object\r\n * @returns {number}\r\n */\r\n getHighestZindex: function(el) {\r\n var position, value;\r\n\r\n while (el && el !== document) {\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n //
\r\n value = parseInt(KTUtil.css(el, 'z-index'));\r\n\r\n if (!isNaN(value) && value !== 0) {\r\n return value;\r\n }\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether the element has any parent with fixed positionfreg\r\n * @param {object} el jQuery element object\r\n * @returns {boolean}\r\n */\r\n hasFixedPositionedParent: function(el) {\r\n var position;\r\n\r\n while (el && el !== document) {\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"fixed\") {\r\n return true;\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Simulates delay\r\n */\r\n sleep: function(milliseconds) {\r\n var start = new Date().getTime();\r\n for (var i = 0; i < 1e7; i++) {\r\n if ((new Date().getTime() - start) > milliseconds) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Gets randomly generated integer value within given min and max range\r\n * @param {number} min Range start value\r\n * @param {number} max Range end value\r\n * @returns {number}\r\n */\r\n getRandomInt: function(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n },\r\n\r\n /**\r\n * Checks whether Angular library is included\r\n * @returns {boolean}\r\n */\r\n isAngularVersion: function() {\r\n return window.Zone !== undefined ? true : false;\r\n },\r\n\r\n // jQuery Workarounds\r\n\r\n // Deep extend: $.extend(true, {}, objA, objB);\r\n deepExtend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n var obj = arguments[i];\r\n\r\n if (!obj)\r\n continue;\r\n\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (typeof obj[key] === 'object')\r\n out[key] = KTUtil.deepExtend(out[key], obj[key]);\r\n else\r\n out[key] = obj[key];\r\n }\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n // extend: $.extend({}, objA, objB);\r\n extend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n if (!arguments[i])\r\n continue;\r\n\r\n for (var key in arguments[i]) {\r\n if (arguments[i].hasOwnProperty(key))\r\n out[key] = arguments[i][key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n getById: function(el) {\r\n if (typeof el === 'string') {\r\n return document.getElementById(el);\r\n } else {\r\n return el;\r\n }\r\n },\r\n\r\n getByTag: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByTagName: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByClass: function(query) {\r\n return document.getElementsByClassName(query);\r\n },\r\n\r\n getBody: function() {\r\n return document.getElementsByTagName('body')[0];\r\n },\r\n\r\n /**\r\n * Checks whether the element has given classes\r\n * @param {object} el jQuery element object\r\n * @param {string} Classes string\r\n * @returns {boolean}\r\n */\r\n hasClasses: function(el, classes) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n var classesArr = classes.split(\" \");\r\n\r\n for (var i = 0; i < classesArr.length; i++) {\r\n if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n hasClass: function(el, className) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n return el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n },\r\n\r\n addClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (classNames[i] && classNames[i].length > 0) {\r\n el.classList.add(KTUtil.trim(classNames[i]));\r\n }\r\n }\r\n } else if (!KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className += ' ' + KTUtil.trim(classNames[x]);\r\n }\r\n }\r\n },\r\n\r\n removeClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n el.classList.remove(KTUtil.trim(classNames[i]));\r\n }\r\n } else if (KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className = el.className.replace(new RegExp('\\\\b' + KTUtil.trim(classNames[x]) + '\\\\b', 'g'), '');\r\n }\r\n }\r\n },\r\n\r\n triggerCustomEvent: function(el, eventName, data) {\r\n var event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, {\r\n detail: data\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n el.dispatchEvent(event);\r\n },\r\n\r\n triggerEvent: function(node, eventName) {\r\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\r\n var doc;\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument;\r\n } else if (node.nodeType == 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node;\r\n } else {\r\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\r\n }\r\n\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n var eventClass = \"\";\r\n\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case \"mouseenter\":\r\n case \"mouseleave\":\r\n case \"mousedown\":\r\n case \"mouseup\":\r\n eventClass = \"MouseEvents\";\r\n break;\r\n\r\n case \"focus\":\r\n case \"change\":\r\n case \"blur\":\r\n case \"select\":\r\n eventClass = \"HTMLEvents\";\r\n break;\r\n\r\n default:\r\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\r\n break;\r\n }\r\n var event = doc.createEvent(eventClass);\r\n\r\n var bubbles = eventName == \"change\" ? false : true;\r\n event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.\r\n\r\n event.synthetic = true; // allow detection of synthetic events\r\n // The second parameter says go ahead with the default action\r\n node.dispatchEvent(event, true);\r\n } else if (node.fireEvent) {\r\n // IE-old school style\r\n var event = doc.createEventObject();\r\n event.synthetic = true; // allow detection of synthetic events\r\n node.fireEvent(\"on\" + eventName, event);\r\n }\r\n },\r\n\r\n index: function( el ){\r\n var c = el.parentNode.children, i = 0;\r\n for(; i < c.length; i++ )\r\n if( c[i] == el ) return i;\r\n },\r\n\r\n trim: function(string) {\r\n return string.trim();\r\n },\r\n\r\n eventTriggered: function(e) {\r\n if (e.currentTarget.dataset.triggered) {\r\n return true;\r\n } else {\r\n e.currentTarget.dataset.triggered = true;\r\n\r\n return false;\r\n }\r\n },\r\n\r\n remove: function(el) {\r\n if (el && el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n },\r\n\r\n find: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelector(query);\r\n }\r\n },\r\n\r\n findAll: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelectorAll(query);\r\n }\r\n },\r\n\r\n insertAfter: function(el, referenceNode) {\r\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\r\n },\r\n\r\n parents: function(elem, selector) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.matchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.oMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1;\r\n };\r\n }\r\n\r\n // Set up a parent array\r\n var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if (selector) {\r\n if (elem.matches(selector)) {\r\n parents.push(elem);\r\n }\r\n continue;\r\n }\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n },\r\n\r\n children: function(el, selector, log) {\r\n if (!el || !el.childNodes) {\r\n return;\r\n }\r\n\r\n var result = [],\r\n i = 0,\r\n l = el.childNodes.length;\r\n\r\n for (var i; i < l; ++i) {\r\n if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {\r\n result.push(el.childNodes[i]);\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n child: function(el, selector, log) {\r\n var children = KTUtil.children(el, selector, log);\r\n\r\n return children ? children[0] : null;\r\n },\r\n\r\n matches: function(el, selector, log) {\r\n var p = Element.prototype;\r\n var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {\r\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\r\n };\r\n\r\n if (el && el.tagName) {\r\n return f.call(el, selector);\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n data: function(el) {\r\n return {\r\n set: function(name, data) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n window.KTUtilElementDataStoreID++;\r\n el.customDataTag = window.KTUtilElementDataStoreID;\r\n }\r\n\r\n if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {\r\n window.KTUtilElementDataStore[el.customDataTag] = {};\r\n }\r\n\r\n window.KTUtilElementDataStore[el.customDataTag][name] = data;\r\n },\r\n\r\n get: function(name) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return null;\r\n }\r\n\r\n return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null;\r\n },\r\n\r\n has: function(name) {\r\n if (!el) {\r\n return false;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return false;\r\n }\r\n\r\n return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false;\r\n },\r\n\r\n remove: function(name) {\r\n if (el && this.has(name)) {\r\n delete window.KTUtilElementDataStore[el.customDataTag][name];\r\n }\r\n }\r\n };\r\n },\r\n\r\n outerWidth: function(el, margin) {\r\n var width;\r\n\r\n if (margin === true) {\r\n width = parseFloat(el.offsetWidth);\r\n width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'));\r\n\r\n return parseFloat(width);\r\n } else {\r\n width = parseFloat(el.offsetWidth);\r\n\r\n return width;\r\n }\r\n },\r\n\r\n offset: function(el) {\r\n var rect, win;\r\n\r\n if ( !el ) {\r\n return;\r\n }\r\n\r\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\r\n // Support: IE <=11 only\r\n // Running getBoundingClientRect on a\r\n // disconnected node in IE throws an error\r\n\r\n if ( !el.getClientRects().length ) {\r\n return { top: 0, left: 0 };\r\n }\r\n\r\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\r\n rect = el.getBoundingClientRect();\r\n win = el.ownerDocument.defaultView;\r\n\r\n return {\r\n top: rect.top + win.pageYOffset,\r\n left: rect.left + win.pageXOffset\r\n };\r\n },\r\n\r\n height: function(el) {\r\n return KTUtil.css(el, 'height');\r\n },\r\n\r\n outerHeight: function(el, withMargin) {\r\n var height = el.offsetHeight;\r\n var style;\r\n\r\n if (typeof withMargin !== 'undefined' && withMargin === true) {\r\n style = getComputedStyle(el);\r\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\r\n\r\n return height;\r\n } else {\r\n return height;\r\n }\r\n },\r\n\r\n visible: function(el) {\r\n return !(el.offsetWidth === 0 && el.offsetHeight === 0);\r\n },\r\n\r\n attr: function(el, name, value) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.setAttribute(name, value);\r\n } else {\r\n return el.getAttribute(name);\r\n }\r\n },\r\n\r\n hasAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n return el.getAttribute(name) ? true : false;\r\n },\r\n\r\n removeAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n el.removeAttribute(name);\r\n },\r\n\r\n animate: function(from, to, duration, update, easing, done) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n var easings = {};\r\n var easing;\r\n\r\n easings.linear = function(t, b, c, d) {\r\n return c * t / d + b;\r\n };\r\n\r\n easing = easings.linear;\r\n\r\n // Early bail out if called incorrectly\r\n if (typeof from !== 'number' ||\r\n typeof to !== 'number' ||\r\n typeof duration !== 'number' ||\r\n typeof update !== 'function') {\r\n return;\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (typeof done !== 'function') {\r\n done = function() {};\r\n }\r\n\r\n // Pick implementation (requestAnimationFrame | setTimeout)\r\n var rAF = window.requestAnimationFrame || function(callback) {\r\n window.setTimeout(callback, 1000 / 50);\r\n };\r\n\r\n // Animation loop\r\n var canceled = false;\r\n var change = to - from;\r\n\r\n function loop(timestamp) {\r\n var time = (timestamp || +new Date()) - start;\r\n\r\n if (time >= 0) {\r\n update(easing(time, from, change, duration));\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to);\r\n done();\r\n } else {\r\n rAF(loop);\r\n }\r\n }\r\n\r\n update(from);\r\n\r\n // Start animation loop\r\n var start = window.performance && window.performance.now ? window.performance.now() : +new Date();\r\n\r\n rAF(loop);\r\n },\r\n\r\n actualCss: function(el, prop, cache) {\r\n var css = '';\r\n\r\n if (el instanceof HTMLElement === false) {\r\n return;\r\n }\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n var value;\r\n\r\n // the element is hidden so:\r\n // making the el block so we can meassure its height but still be hidden\r\n css = el.style.cssText;\r\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;';\r\n\r\n if (prop == 'width') {\r\n value = el.offsetWidth;\r\n } else if (prop == 'height') {\r\n value = el.offsetHeight;\r\n }\r\n\r\n el.style.cssText = css;\r\n\r\n // store it in cache\r\n el.setAttribute('kt-hidden-' + prop, value);\r\n\r\n return parseFloat(value);\r\n } else {\r\n // store it in cache\r\n return parseFloat(el.getAttribute('kt-hidden-' + prop));\r\n }\r\n },\r\n\r\n actualHeight: function(el, cache) {\r\n return KTUtil.actualCss(el, 'height', cache);\r\n },\r\n\r\n actualWidth: function(el, cache) {\r\n return KTUtil.actualCss(el, 'width', cache);\r\n },\r\n\r\n getScroll: function(element, method) {\r\n // The passed in `method` value should be 'Top' or 'Left'\r\n method = 'scroll' + method;\r\n return (element == window || element == document) ? (\r\n self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||\r\n (browserSupportsBoxModel && document.documentElement[method]) ||\r\n document.body[method]\r\n ) : element[method];\r\n },\r\n\r\n css: function(el, styleProp, value) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.style[styleProp] = value;\r\n } else {\r\n var defaultView = (el.ownerDocument || document).defaultView;\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, \"-$1\").toLowerCase();\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/\\-(\\w)/g, function(str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = el.currentStyle[styleProp];\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function(value) {\r\n var oldLeft = el.style.left,\r\n oldRsLeft = el.runtimeStyle.left;\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value || 0;\r\n value = el.style.pixelLeft + \"px\";\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n return value;\r\n })(value);\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n\r\n slide: function(el, dir, speed, callback, recalcMaxHeight) {\r\n if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {\r\n return;\r\n }\r\n\r\n speed = (speed ? speed : 600);\r\n var calcHeight = KTUtil.actualHeight(el);\r\n var calcPaddingTop = false;\r\n var calcPaddingBottom = false;\r\n\r\n if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {\r\n KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'));\r\n }\r\n\r\n if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {\r\n KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-top')) {\r\n calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'));\r\n }\r\n\r\n if (dir == 'up') { // up\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {\r\n el.style.paddingTop = (calcPaddingTop - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = (calcPaddingBottom - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = (calcHeight - value) + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = 'none';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n\r\n\r\n } else if (dir == 'down') { // down\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {//\r\n el.style.paddingTop = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingTop = '';\r\n });\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingBottom = '';\r\n });\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = value + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = '';\r\n el.style.overflow = '';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n },\r\n\r\n slideUp: function(el, speed, callback) {\r\n KTUtil.slide(el, 'up', speed, callback);\r\n },\r\n\r\n slideDown: function(el, speed, callback) {\r\n KTUtil.slide(el, 'down', speed, callback);\r\n },\r\n\r\n show: function(el, display) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = (display ? display : 'block');\r\n }\r\n },\r\n\r\n hide: function(el) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = 'none';\r\n }\r\n },\r\n\r\n addEvent: function(el, type, handler, one) {\r\n if (typeof el !== 'undefined' && el !== null) {\r\n el.addEventListener(type, handler);\r\n }\r\n },\r\n\r\n removeEvent: function(el, type, handler) {\r\n if (el !== null) {\r\n el.removeEventListener(type, handler);\r\n }\r\n },\r\n\r\n on: function(element, selector, event, handler) {\r\n if (!selector) {\r\n return;\r\n }\r\n\r\n var eventId = KTUtil.getUniqueID('event');\r\n\r\n window.KTUtilDelegatedEventHandlers[eventId] = function(e) {\r\n var targets = element.querySelectorAll(selector);\r\n var target = e.target;\r\n\r\n while (target && target !== element) {\r\n for (var i = 0, j = targets.length; i < j; i++) {\r\n if (target === targets[i]) {\r\n handler.call(target, e);\r\n }\r\n }\r\n\r\n target = target.parentNode;\r\n }\r\n }\r\n\r\n KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n return eventId;\r\n },\r\n\r\n off: function(element, event, eventId) {\r\n if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {\r\n return;\r\n }\r\n\r\n KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n delete window.KTUtilDelegatedEventHandlers[eventId];\r\n },\r\n\r\n one: function onetime(el, type, callback) {\r\n el.addEventListener(type, function callee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, callee);\r\n }\r\n\r\n // need to verify from https://themeforest.net/author_dashboard#comment_23615588\r\n if (el && el.removeEventListener) {\r\n\t\t\t\t e.currentTarget.removeEventListener(e.type, callee);\r\n\t\t\t }\r\n\r\n // call handler\r\n return callback(e);\r\n });\r\n },\r\n\r\n hash: function(str) {\r\n var hash = 0,\r\n i, chr;\r\n\r\n if (str.length === 0) return hash;\r\n for (i = 0; i < str.length; i++) {\r\n chr = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return hash;\r\n },\r\n\r\n animateClass: function(el, animationName, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd',\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.addClass(el, 'animated ' + animationName);\r\n\r\n KTUtil.one(el, animation, function() {\r\n KTUtil.removeClass(el, 'animated ' + animationName);\r\n });\r\n\r\n if (callback) {\r\n KTUtil.one(el, animation, callback);\r\n }\r\n },\r\n\r\n transitionEnd: function(el, callback) {\r\n var transition;\r\n var transitions = {\r\n transition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n MozTransition: 'mozTransitionEnd',\r\n WebkitTransition: 'webkitTransitionEnd',\r\n msTransition: 'msTransitionEnd'\r\n };\r\n\r\n for (var t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n transition = transitions[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, transition, callback);\r\n },\r\n\r\n animationEnd: function(el, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd'\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, animation, callback);\r\n },\r\n\r\n animateDelay: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-delay', value);\r\n }\r\n },\r\n\r\n animateDuration: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-duration', value);\r\n }\r\n },\r\n\r\n scrollTo: function(target, offset, duration) {\r\n var duration = duration ? duration : 500;\r\n var targetPos = target ? KTUtil.offset(target).top : 0;\r\n var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n var from, to;\r\n\r\n if (offset) {\r\n scrollPos += offset;\r\n }\r\n\r\n from = scrollPos;\r\n to = targetPos;\r\n\r\n KTUtil.animate(from, to, duration, function(value) {\r\n document.documentElement.scrollTop = value;\r\n document.body.parentNode.scrollTop = value;\r\n document.body.scrollTop = value;\r\n }); //, easing, done\r\n },\r\n\r\n scrollTop: function(offset, duration) {\r\n KTUtil.scrollTo(null, offset, duration);\r\n },\r\n\r\n isArray: function(obj) {\r\n return obj && Array.isArray(obj);\r\n },\r\n\r\n ready: function(callback) {\r\n if (document.attachEvent ? document.readyState === \"complete\" : document.readyState !== \"loading\") {\r\n callback();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n },\r\n\r\n isEmpty: function(obj) {\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n numberString: function(nStr) {\r\n nStr += '';\r\n var x = nStr.split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? '.' + x[1] : '';\r\n var rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n },\r\n\r\n detectIE: function() {\r\n var ua = window.navigator.userAgent;\r\n\r\n // Test values; Uncomment to check result …\r\n\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n\r\n // Edge 12 (Spartan)\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\r\n\r\n // Edge 13\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n },\r\n\r\n isRTL: function() {\r\n var html = KTUtil.getByTagName('html')[0];\r\n\r\n if (html) {\r\n return (KTUtil.attr(html, 'direction') == 'rtl');\r\n }\r\n },\r\n\r\n // Scroller\r\n scrollInit: function(element, options) {\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Learn more: https://github.com/mdbootstrap/perfect-scrollbar#options\r\n var pluginDefOptions = {\r\n wheelSpeed: 0.5,\r\n swipeEasing: true,\r\n wheelPropagation: false,\r\n minScrollbarLength: 40,\r\n maxScrollbarLength: 300,\r\n suppressScrollX: true\r\n };\r\n\r\n options = KTUtil.deepExtend({}, pluginDefOptions, options);\r\n\r\n // Define init function\r\n function init() {\r\n var ps;\r\n var height;\r\n\r\n // Get extra options via data attributes\r\n var attrs = element.getAttributeNames();\r\n if (attrs.length > 0) {\r\n attrs.forEach(function(attrName) {\r\n \t\t\t// more options; https://github.com/ganlanyuan/tiny-slider#options\r\n \t\t\tif ((/^data-.*/g).test(attrName)) {\r\n if (['scroll', 'height', 'mobile-height'].includes(optionName) == false) {\r\n var optionName = attrName.replace('data-', '').toLowerCase().replace(/(?:[\\s-])\\w/g, function(match) {\r\n \t\t\t\t\treturn match.replace('-', '').toUpperCase();\r\n \t\t\t\t});\r\n\r\n options[optionName] = KTUtil.filterBoolean(element.getAttribute(attrName));\r\n }\r\n \t\t\t}\r\n \t\t});\r\n }\r\n\r\n if (options.height instanceof Function) {\r\n height = options.height.call();\r\n } else {\r\n if (KTUtil.isMobileDevice() === true && options.mobileHeight) {\r\n height = parseInt(options.mobileHeight);\r\n } else if (options.height) {\r\n height = parseInt(options.height);\r\n } else {\r\n height = parseInt(KTUtil.css(element, 'height'));\r\n }\r\n }\r\n\r\n if (height === false) {\r\n KTUtil.scrollDestroy(element, true);\r\n\r\n return;\r\n }\r\n\r\n height = parseInt(height);\r\n\r\n // Destroy scroll on table and mobile modes\r\n if ((options.mobileNativeScroll || options.disableForMobile) && KTUtil.isMobileDevice() === true) {\r\n ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n if (options.resetHeightOnDestroy) {\r\n KTUtil.css(element, 'height', 'auto');\r\n } else {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n }\r\n\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n } else if (height > 0){\r\n KTUtil.css(element, 'overflow', 'auto');\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n if (options.desktopNativeScroll) {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n return;\r\n }\r\n\r\n // Pass options via HTML Attributes\r\n if (KTUtil.attr(element, 'data-window-scroll') == 'true') {\r\n options.windowScroll = true;\r\n }\r\n\r\n // Init scroll\r\n ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.update();\r\n } else {\r\n KTUtil.css(element, 'overflow', 'hidden');\r\n KTUtil.addClass(element, 'scroll');\r\n\r\n ps = new PerfectScrollbar(element, options);\r\n\r\n KTUtil.data(element).set('ps', ps);\r\n }\r\n\r\n // Remember scroll position in cookie\r\n var uid = KTUtil.attr(element, 'id');\n try {\n if (uid) {\n var cookie = KTCookie.getCookie(uid);\n if (options.rememberPosition === true && cookie) {\n var pos = parseInt(cookie);\n if (pos > 0) {\n element.scrollTop = pos;\n }\n element.addEventListener('ps-scroll-y', function() {\n KTCookie.setCookie(uid, element.scrollTop, {});\n });\n }\n }\n }\n catch (e) {\n console.error(e);\n }\r\n\r\n // Todo:Consider using Localstorage\r\n if (options.rememberPosition === true && KTCookie && uid) {\r\n if (KTCookie.getCookie(uid)) {\r\n var pos = parseInt(KTCookie.getCookie(uid));\r\n\r\n if (pos > 0) {\r\n element.scrollTop = pos;\r\n }\r\n }\r\n\r\n element.addEventListener('ps-scroll-y', function() {\r\n KTCookie.setCookie(uid, element.scrollTop);\r\n });\r\n }\r\n }\r\n\r\n // Init\r\n init();\r\n\r\n // Handle window resize\r\n if (options.handleWindowResize) {\r\n KTUtil.addResizeHandler(function() {\r\n init();\r\n });\r\n }\r\n },\r\n\r\n scrollUpdate: function(element) {\r\n var ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n ps.update();\r\n }\r\n },\r\n\r\n scrollUpdateAll: function(parent) {\r\n var scrollers = KTUtil.findAll(parent, '.ps');\r\n for (var i = 0, len = scrollers.length; i < len; i++) {\r\n KTUtil.scrollUpdate(scrollers[i]);\r\n }\r\n },\r\n\r\n scrollDestroy: function(element, resetAll) {\r\n var ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n }\r\n\r\n if (element && resetAll) {\r\n element.style.setProperty('overflow', '');\r\n element.style.setProperty('height', '');\r\n }\r\n },\r\n\r\n filterBoolean: function(val) {\r\n // Convert string boolean\r\n\t\t\tif (val === true || val === 'true') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (val === false || val === 'false') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n return val;\r\n },\r\n\r\n setHTML: function(el, html) {\r\n el.innerHTML = html;\r\n },\r\n\r\n getHTML: function(el) {\r\n if (el) {\r\n return el.innerHTML;\r\n }\r\n },\r\n\r\n getDocumentHeight: function() {\r\n var body = document.body;\r\n var html = document.documentElement;\r\n\r\n return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );\r\n },\r\n\r\n getScrollTop: function() {\r\n return (document.scrollingElement || document.documentElement).scrollTop;\r\n },\r\n\r\n changeColor: function(col, amt) {\r\n\r\n var usePound = false;\r\n\r\n if (col[0] == \"#\") {\r\n col = col.slice(1);\r\n usePound = true;\r\n }\r\n\r\n var num = parseInt(col,16);\r\n\r\n var r = (num >> 16) + amt;\r\n\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n\r\n var b = ((num >> 8) & 0x00FF) + amt;\r\n\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n var g = (num & 0x0000FF) + amt;\r\n\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n\r\n return (usePound?\"#\":\"\") + (g | (b << 8) | (r << 16)).toString(16);\r\n\r\n },\r\n\r\n // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\r\n throttle: function (timer, func, delay) {\r\n \t// If setTimeout is already scheduled, no need to do anything\r\n \tif (timer) {\r\n \t\treturn;\r\n \t}\r\n\r\n \t// Schedule a setTimeout after delay seconds\r\n \ttimer = setTimeout(function () {\r\n \t\tfunc();\r\n\r\n \t\t// Once setTimeout function execution is finished, timerId = undefined so that in
\r\n \t\t// the next scroll event function execution can be scheduled by the setTimeout\r\n \t\ttimer = undefined;\r\n \t}, delay);\r\n },\r\n\r\n // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds\r\n debounce: function (timer, func, delay) {\r\n \t// Cancels the setTimeout method execution\r\n \tclearTimeout(timer)\r\n\r\n \t// Executes the func after delay time.\r\n \ttimer = setTimeout(func, delay);\r\n },\r\n\r\n btnWait: function(el, cls, message, disable) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (typeof disable !== 'undefined' && disable === true) {\r\n KTUtil.attr(el, \"disabled\", true);\r\n }\r\n\r\n if (cls) {\r\n KTUtil.addClass(el, cls);\r\n KTUtil.attr(el, \"wait-class\", cls);\r\n }\r\n\r\n if (message) {\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption) {\r\n KTUtil.data(caption).set('caption', KTUtil.getHTML(caption));\r\n KTUtil.setHTML(caption, message);\r\n } else {\r\n KTUtil.data(el).set('caption', KTUtil.getHTML(el));\r\n KTUtil.setHTML(el, message);\r\n }\r\n }\r\n },\r\n\r\n btnRelease: function(el) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n /// Show loading state on button\r\n KTUtil.removeAttr(el, \"disabled\");\r\n\r\n if (KTUtil.hasAttr(el, \"wait-class\")) {\r\n KTUtil.removeClass(el, KTUtil.attr(el, \"wait-class\"));\r\n }\r\n\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption && KTUtil.data(caption).has('caption')) {\r\n KTUtil.setHTML(caption, KTUtil.data(caption).get('caption'));\r\n } else if (KTUtil.data(el).has('caption')) {\r\n KTUtil.setHTML(el, KTUtil.data(el).get('caption'));\r\n }\r\n },\r\n\r\n isOffscreen: function(el, direction, offset) {\r\n offset = offset || 0;\r\n\r\n var windowWidth = KTUtil.getViewPort().width;\r\n var windowHeight = KTUtil.getViewPort().height;\r\n\r\n var top = KTUtil.offset(el).top;\r\n var height = KTUtil.outerHeight(el) + offset;\r\n var left = KTUtil.offset(el).left;\r\n var width = KTUtil.outerWidth(el) + offset;\r\n\r\n if (direction == 'bottom') {\r\n if (windowHeight < top + height) {\r\n return true;\r\n } else if (windowHeight > top + height * 1.5) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'top') {\r\n if (top < 0) {\r\n return true;\r\n } else if (top > height) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'left') {\r\n if (left < 0) {\r\n return true;\r\n } else if (left * 2 > width) {\r\n //console.log('left 2');\r\n //return true;\r\n }\r\n }\r\n\r\n if (direction == 'right') {\r\n if (windowWidth < left + width) {\r\n return true;\r\n } else {\r\n //console.log('right 2');\r\n //return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTUtil;\r\n}\r\n\r\n// Initialize KTUtil class on document ready\r\nKTUtil.ready(function() {\r\n\tif (typeof KTAppSettings !== 'undefined') {\r\n\t\tKTUtil.init(KTAppSettings);\r\n\t} else {\r\n\t\tKTUtil.init();\r\n\t}\r\n});\r\n\r\n// CSS3 Transitions only after page load(.page-loading class added to body tag and remove with JS on page load)\r\nwindow.onload = function() {\r\n var result = KTUtil.getByTagName('body');\r\n if (result && result[0]) {\r\n KTUtil.removeClass(result[0], 'page-loading');\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/mobile_frame.339bc6ba.png\";","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTMenu = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n // scrollable area with Perfect Scroll\r\n scroll: {\r\n rememberPosition: false\r\n },\r\n\r\n // accordion submenu mode\r\n accordion: {\r\n slideSpeed: 200, // accordion toggle slide speed in milliseconds\r\n autoScroll: false, // enable auto scrolling(focus) to the clicked menu item\r\n autoScrollSpeed: 1200,\r\n expandAll: true // allow having multiple expanded accordions in the menu\r\n },\r\n\r\n // dropdown submenu mode\r\n dropdown: {\r\n timeout: 500 // timeout in milliseconds to show and hide the hoverable submenu dropdown\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {KTMenu}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('menu')) {\r\n the = KTUtil.data(element).get('menu');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n the.eventHandlers = {};\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n the.uid = KTUtil.getUniqueID();\r\n },\r\n\r\n update: function(options) {\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n the.eventHandlers = {};\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n },\r\n\r\n reload: function() {\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n // reset submenu props\r\n Plugin.resetSubmenuProps();\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n build: function() {\r\n // General accordion submenu toggle\r\n the.eventHandlers['event_1'] = KTUtil.on( element, '.menu-toggle', 'click', Plugin.handleSubmenuAccordion);\r\n\r\n // Dropdown mode(hoverable)\r\n if (Plugin.getSubmenuMode() === 'dropdown' || Plugin.isConditionalSubmenuDropdown()) {\r\n // dropdown submenu - hover toggle\r\n the.eventHandlers['event_2'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseover', Plugin.handleSubmenuDrodownHoverEnter);\r\n the.eventHandlers['event_3'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseout', Plugin.handleSubmenuDrodownHoverExit);\r\n\r\n // dropdown submenu - click toggle\r\n the.eventHandlers['event_4'] = KTUtil.on( element, '[data-menu-toggle=\"click\"] > .menu-toggle, [data-menu-toggle=\"click\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownClick);\r\n the.eventHandlers['event_5'] = KTUtil.on( element, '[data-menu-toggle=\"tab\"] > .menu-toggle, [data-menu-toggle=\"tab\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownTabClick);\r\n }\r\n\r\n // Handle general link click\r\n the.eventHandlers['event_6'] = KTUtil.on(element, '.menu-item > .menu-link:not(.menu-toggle):not(.menu-link-toggle-skip)', 'click', Plugin.handleLinkClick);\r\n\r\n // Init scrollable menu\r\n if (the.options.scroll && the.options.scroll.height) {\r\n Plugin.scrollInit();\r\n }\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n reset: function() {\r\n KTUtil.off( element, 'click', the.eventHandlers['event_1']);\r\n\r\n // dropdown submenu - hover toggle\r\n KTUtil.off( element, 'mouseover', the.eventHandlers['event_2']);\r\n KTUtil.off( element, 'mouseout', the.eventHandlers['event_3']);\r\n\r\n // dropdown submenu - click toggle\r\n KTUtil.off( element, 'click', the.eventHandlers['event_4']);\r\n KTUtil.off( element, 'click', the.eventHandlers['event_5']);\r\n\r\n // handle link click\r\n KTUtil.off(element, 'click', the.eventHandlers['event_6']);\r\n },\r\n\r\n /**\r\n * Init scroll menu\r\n *\r\n */\r\n scrollInit: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollDestroy(element, true);\r\n KTUtil.scrollInit(element, {mobileNativeScroll: true, windowScroll: false, resetHeightOnDestroy: true, handleWindowResize: true, height: the.options.scroll.height, rememberPosition: the.options.scroll.rememberPosition});\r\n } else {\r\n KTUtil.scrollDestroy(element, true);\r\n }\r\n },\r\n\r\n /**\r\n * Update scroll menu\r\n */\r\n scrollUpdate: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollUpdate(element);\r\n }\r\n },\r\n\r\n /**\r\n * Scroll top\r\n */\r\n scrollTop: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollTop(element);\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n getSubmenuMode: function(el) {\r\n if ( KTUtil.isBreakpointUp('lg') ) {\r\n if (el && KTUtil.hasAttr(el, 'data-menu-toggle') && KTUtil.attr(el, 'data-menu-toggle') == 'hover') {\r\n return 'dropdown';\r\n }\r\n\r\n if ( KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n if ( KTUtil.hasClasses(body, the.options.submenu.desktop.state.body) ) {\r\n return the.options.submenu.desktop.state.mode;\r\n } else {\r\n return the.options.submenu.desktop.default;\r\n }\r\n } else if ( KTUtil.isset(the.options.submenu, 'desktop') ) {\r\n return the.options.submenu.desktop;\r\n }\r\n } else if ( KTUtil.isBreakpointUp('md') && KTUtil.isBreakpointDown('lg') && KTUtil.isset(the.options.submenu, 'tablet') ) {\r\n return the.options.submenu.tablet;\r\n } else if ( KTUtil.isBreakpointDown('md') && KTUtil.isset(the.options.submenu, 'mobile') ) {\r\n return the.options.submenu.mobile;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n isConditionalSubmenuDropdown: function() {\r\n if ( KTUtil.isBreakpointUp('lg') && KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n\r\n /**\r\n * Reset submenu attributes\r\n * @returns {KTMenu}\r\n */\r\n resetSubmenuProps: function(e) {\r\n var submenus = KTUtil.findAll(element, '.menu-submenu');\r\n if ( submenus ) {\r\n for (var i = 0, len = submenus.length; i < len; i++) {\r\n var submenu = submenus[0];\r\n\r\n KTUtil.css(submenu, 'display', '');\r\n KTUtil.css(submenu, 'overflow', '');\r\n\r\n if (submenu.hasAttribute('data-hor-direction')) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, submenu.getAttribute('data-hor-direction'));\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverEnter: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n item.removeAttribute('data-hover');\r\n clearTimeout( item.getAttribute('data-timeout') );\r\n item.removeAttribute('data-timeout');\r\n }\r\n\r\n Plugin.showSubmenuDropdown(item);\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverExit: function(e) {\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n var time = the.options.dropdown.timeout;\r\n\r\n var timeout = setTimeout(function() {\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n }, time);\r\n\r\n item.setAttribute('data-hover', '1');\r\n item.setAttribute('data-timeout', timeout);\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClick: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( item.getAttribute('data-menu-submenu-mode') == 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( KTUtil.hasClass(item, 'menu-item-hover') === false ) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n } else {\r\n KTUtil.removeClass(item, 'menu-item-open-dropdown' );\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles tab click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownTabClick: function(e) {\r\n if (Plugin.getSubmenuMode(this) === 'accordion') {\r\n return;\r\n }\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if (item.getAttribute('data-menu-submenu-mode') == 'accordion') {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(item, 'menu-item-hover') == false) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles link click\r\n * @returns {KTMenu}\r\n */\r\n handleLinkClick: function(e) {\r\n var submenu = this.closest('.menu-item.menu-item-submenu');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('linkClick', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( submenu && Plugin.getSubmenuMode(submenu) === 'dropdown' ) {\r\n Plugin.hideSubmenuDropdowns();\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu dropdown close on link click\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClose: function(e, el) {\r\n // exit if its not submenu dropdown mode\r\n if (Plugin.getSubmenuMode(el) === 'accordion') {\r\n return;\r\n }\r\n\r\n var shown = element.querySelectorAll('.menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)');\r\n\r\n // check if currently clicked link's parent item ha\r\n if (shown.length > 0 && KTUtil.hasClass(el, 'menu-toggle') === false && el.querySelectorAll('.menu-toggle').length === 0) {\r\n // close opened dropdown menus\r\n for (var i = 0, len = shown.length; i < len; i++) {\r\n Plugin.hideSubmenuDropdown(shown[0], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuAccordion: function(e, el) {\r\n var query;\r\n var item = el ? el : this;\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(el) === 'dropdown' && (query = item.closest('.menu-item') ) ) {\r\n if (query.getAttribute('data-menu-submenu-mode') != 'accordion' ) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n var li = item.closest('.menu-item');\r\n var submenu = KTUtil.child(li, '.menu-submenu, .menu-inner');\r\n\r\n if (KTUtil.hasClass(item.closest('.menu-item'), 'menu-item-open-always')) {\r\n return;\r\n }\r\n\r\n if ( li && submenu ) {\r\n e.preventDefault();\r\n var speed = the.options.accordion.slideSpeed;\r\n var hasClosables = false;\r\n\r\n if ( KTUtil.hasClass(li, 'menu-item-open') === false ) {\r\n // hide other accordions\r\n if ( the.options.accordion.expandAll === false ) {\r\n var subnav = item.closest('.menu-nav, .menu-subnav');\r\n var closables = KTUtil.children(subnav, '.menu-item.menu-item-open.menu-item-submenu:not(.menu-item-here):not(.menu-item-open-always)');\r\n\r\n if ( subnav && closables ) {\r\n for (var i = 0, len = closables.length; i < len; i++) {\r\n var el_ = closables[0];\r\n var submenu_ = KTUtil.child(el_, '.menu-submenu');\r\n if ( submenu_ ) {\r\n KTUtil.slideUp(submenu_, speed, function() {\r\n Plugin.scrollUpdate();\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n KTUtil.slideDown(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.scrollUpdate();\r\n\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.addClass(li, 'menu-item-open');\r\n\r\n } else {\r\n KTUtil.slideUp(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.removeClass(li, 'menu-item-open');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * scroll to item function\r\n * @returns {KTMenu}\r\n */\r\n scrollToItem: function(item) {\r\n // handle auto scroll for accordion submenus\r\n if ( KTUtil.isBreakpointUp('lg') && the.options.accordion.autoScroll && element.getAttribute('data-menu-scroll') !== '1' ) {\r\n KTUtil.scrollTo(item, the.options.accordion.autoScrollSpeed);\r\n }\r\n },\r\n\r\n /**\r\n * Hide submenu dropdown\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdown: function(item, classAlso) {\r\n // remove submenu activation class\r\n if ( classAlso ) {\r\n KTUtil.removeClass(item, 'menu-item-hover');\r\n KTUtil.removeClass(item, 'menu-item-active-tab');\r\n }\r\n\r\n // clear timeout\r\n item.removeAttribute('data-hover');\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.removeClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n\r\n var timeout = item.getAttribute('data-timeout');\r\n item.removeAttribute('data-timeout');\r\n clearTimeout(timeout);\r\n },\r\n\r\n /**\r\n * Hide submenu dropdowns\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdowns: function() {\r\n var items;\r\n if ( items = element.querySelectorAll('.menu-item-submenu.menu-item-hover:not(.menu-item-tabs):not([data-menu-toggle=\"tab\"])') ) {\r\n for (var j = 0, cnt = items.length; j < cnt; j++) {\r\n Plugin.hideSubmenuDropdown(items[j], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n showSubmenuDropdown: function(item) {\r\n // close active submenus\r\n var list = element.querySelectorAll('.menu-item-submenu.menu-item-hover, .menu-item-submenu.menu-item-active-tab');\r\n\r\n if ( list ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[i];\r\n if ( item !== el && el.contains(item) === false && item.contains(el) === false ) {\r\n Plugin.hideSubmenuDropdown(el, true);\r\n }\r\n }\r\n }\r\n\r\n // add submenu activation class\r\n KTUtil.addClass(item, 'menu-item-hover');\r\n\r\n // Change the alignment of submenu is offscreen.\r\n var submenu = KTUtil.find(item, '.menu-submenu');\r\n\r\n if (submenu && submenu.hasAttribute('data-hor-direction') === false) {\r\n if (KTUtil.hasClass(submenu, 'menu-submenu-left')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-left');\r\n } else if (KTUtil.hasClass(submenu, 'menu-submenu-right')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-right');\r\n }\r\n }\r\n\r\n if ( submenu && KTUtil.isOffscreen(submenu, 'left', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.addClass(submenu, 'menu-submenu-right');\r\n } else if ( submenu && KTUtil.isOffscreen(submenu, 'right', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, 'menu-submenu-left');\r\n }\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.addClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu slide toggle\r\n * @returns {KTMenu}\r\n */\r\n createSubmenuDropdownClickDropoff: function(el) {\r\n var query;\r\n var zIndex = (query = KTUtil.child(el, '.menu-submenu') ? KTUtil.css(query, 'z-index') : 0) - 1;\r\n\r\n var dropoff = document.createElement('
');\r\n\r\n body.appendChild(dropoff);\r\n\r\n KTUtil.addEvent(dropoff, 'click', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n KTUtil.remove(this);\r\n Plugin.hideSubmenuDropdown(el, true);\r\n });\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n pauseDropdownHover: function(time) {\r\n var date = new Date();\r\n\r\n the.pauseDropdownHoverTime = date.getTime() + time;\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n resumeDropdownHover: function() {\r\n var date = new Date();\r\n\r\n return (date.getTime() > the.pauseDropdownHoverTime ? true : false);\r\n },\r\n\r\n /**\r\n * Reset menu's current active item\r\n * @returns {KTMenu}\r\n */\r\n resetActiveItem: function(item) {\r\n var list;\r\n var parents;\r\n\r\n list = element.querySelectorAll('.menu-item-active');\r\n\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[0];\r\n KTUtil.removeClass(el, 'menu-item-active');\r\n KTUtil.hide( KTUtil.child(el, '.menu-submenu') );\r\n parents = KTUtil.parents(el, '.menu-item-submenu') || [];\r\n\r\n for (var i_ = 0, len_ = parents.length; i_ < len_; i_++) {\r\n var el_ = parents[i];\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n KTUtil.hide( KTUtil.child(el_, '.menu-submenu') );\r\n }\r\n }\r\n\r\n // close open submenus\r\n if ( the.options.accordion.expandAll === false ) {\r\n if ( list = element.querySelectorAll('.menu-item-open') ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n KTUtil.removeClass(parents[0], 'menu-item-open');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Sets menu's active item\r\n * @returns {KTMenu}\r\n */\r\n setActiveItem: function(item) {\r\n // reset current active item\r\n Plugin.resetActiveItem();\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu') || [];\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n KTUtil.addClass(parents[i], 'menu-item-open');\r\n }\r\n\r\n KTUtil.addClass(item, 'menu-item-active');\r\n },\r\n\r\n /**\r\n * Returns page breadcrumbs for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getBreadcrumbs: function(item) {\r\n var query;\r\n var breadcrumbs = [];\r\n var link = KTUtil.child(item, '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(link, '.menu-text') ? query.innerHTML : ''),\r\n title: link.getAttribute('title'),\r\n href: link.getAttribute('href')\r\n });\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu');\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n var submenuLink = KTUtil.child(parents[i], '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(submenuLink, '.menu-text') ? query.innerHTML : ''),\r\n title: submenuLink.getAttribute('title'),\r\n href: submenuLink.getAttribute('href')\r\n });\r\n }\r\n\r\n return breadcrumbs.reverse();\r\n },\r\n\r\n /**\r\n * Returns page title for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getPageTitle: function(item) {\r\n var query;\r\n\r\n return (query = KTUtil.child(item, '.menu-text') ? query.innerHTML : '');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, target, e) {\r\n for (var i = 0; i < the.events.length; i++ ) {\r\n var event = the.events[i];\r\n if ( event.name == name ) {\r\n if ( event.one == true ) {\r\n if ( event.fired == false ) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, target, e);\r\n }\r\n } else {\r\n return event.handler.call(this, target, e);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n },\r\n\r\n removeEvent: function(name) {\r\n if (the.events[name]) {\r\n delete the.events[name];\r\n }\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Update scroll\r\n */\r\n the.scrollUpdate = function() {\r\n return Plugin.scrollUpdate();\r\n };\r\n\r\n /**\r\n * Re-init scroll\r\n */\r\n the.scrollReInit = function() {\r\n return Plugin.scrollInit();\r\n };\r\n\r\n /**\r\n * Scroll top\r\n */\r\n the.scrollTop = function() {\r\n return Plugin.scrollTop();\r\n };\r\n\r\n /**\r\n * Set active menu item\r\n */\r\n the.setActiveItem = function(item) {\r\n return Plugin.setActiveItem(item);\r\n };\r\n\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n the.update = function(options) {\r\n return Plugin.update(options);\r\n };\r\n\r\n /**\r\n * Set breadcrumb for menu item\r\n */\r\n the.getBreadcrumbs = function(item) {\r\n return Plugin.getBreadcrumbs(item);\r\n };\r\n\r\n /**\r\n * Set page title for menu item\r\n */\r\n the.getPageTitle = function(item) {\r\n return Plugin.getPageTitle(item);\r\n };\r\n\r\n /**\r\n * Get submenu mode\r\n */\r\n the.getSubmenuMode = function(el) {\r\n return Plugin.getSubmenuMode(el);\r\n };\r\n\r\n /**\r\n * Hide dropdown\r\n * @returns {Object}\r\n */\r\n the.hideDropdown = function(item) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n };\r\n\r\n /**\r\n * Hide dropdowns\r\n * @returns {Object}\r\n */\r\n the.hideDropdowns = function() {\r\n Plugin.hideSubmenuDropdowns();\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.pauseDropdownHover = function(time) {\r\n Plugin.pauseDropdownHover(time);\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.resumeDropdownHover = function() {\r\n return Plugin.resumeDropdownHover();\r\n };\r\n\r\n /**\r\n * Register event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n the.off = function(name) {\r\n return Plugin.removeEvent(name);\r\n };\r\n\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Handle plugin on window resize\r\n KTUtil.addResizeHandler(function() {\r\n if (init) {\r\n the.reload();\r\n }\r\n });\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTMenu;\r\n}\r\n\r\n// Plugin global lazy initialization\r\ndocument.addEventListener(\"click\", function (e) {\r\n var body = KTUtil.getByTagName('body')[0];\r\n var query;\r\n if ( query = body.querySelectorAll('.menu-nav .menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)[data-menu-toggle=\"click\"]') ) {\r\n for (var i = 0, len = query.length; i < len; i++) {\r\n var element = query[i].closest('.menu-nav').parentNode;\r\n\r\n if ( element ) {\r\n var the = KTUtil.data(element).get('menu');\r\n\r\n if ( !the ) {\r\n break;\r\n }\r\n\r\n if ( !the || the.getSubmenuMode() !== 'dropdown' ) {\r\n break;\r\n }\r\n\r\n if ( e.target !== element && element.contains(e.target) === false ) {\r\n the.hideDropdowns();\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\nexport default KTMenu;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTScrolltop = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: 300,\r\n speed: 6000\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {mscrolltop}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('scrolltop')) {\r\n the = KTUtil.data(element).get('scrolltop');\r\n } else {\r\n // reset scrolltop\r\n Plugin.init(options);\r\n\r\n // build scrolltop\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('scrolltop', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subscrolltop click toggle\r\n * @returns {mscrolltop}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n build: function() {\r\n var timer;\r\n\r\n window.addEventListener('scroll', function() {\r\n KTUtil.throttle(timer, function() {\r\n Plugin.handle();\r\n }, 200);\r\n });\r\n\r\n // handle button click\r\n KTUtil.addEvent(element, 'click', Plugin.scroll);\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n handle: function() {\r\n var pos = KTUtil.getScrollTop(); // current vertical position\r\n\r\n if (pos > the.options.offset) {\r\n if (body.hasAttribute('data-scrolltop') === false) {\r\n body.setAttribute('data-scrolltop', 'on');\r\n }\r\n } else {\r\n if (body.hasAttribute('data-scrolltop') === true) {\r\n body.removeAttribute('data-scrolltop');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n scroll: function(e) {\r\n e.preventDefault();\r\n\r\n KTUtil.scrollTop(0, the.options.speed);\r\n },\r\n\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get subscrolltop mode\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Set scrolltop content\r\n * @returns {mscrolltop}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTScrolltop;\r\n}\r\n\nexport default KTScrolltop;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTCard = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n toggleSpeed: 400,\r\n sticky: {\r\n releseOnReverse: false,\r\n offset: 300,\r\n zIndex: 101\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('card')) {\r\n the = KTUtil.data(element).get('card');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('card', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Init card\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.header = KTUtil.child(element, '.card-header');\r\n the.footer = KTUtil.child(element, '.card-footer');\r\n\r\n if (KTUtil.child(element, '.card-body')) {\r\n the.body = KTUtil.child(element, '.card-body');\r\n } else if (KTUtil.child(element, '.form')) {\r\n the.body = KTUtil.child(element, '.form');\r\n }\r\n },\r\n\r\n /**\r\n * Build Form Wizard\r\n */\r\n build: function() {\r\n // Remove\r\n var remove = KTUtil.find(the.header, '[data-card-tool=remove]');\r\n if (remove) {\r\n KTUtil.addEvent(remove, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.remove();\r\n });\r\n }\r\n\r\n // Reload\r\n var reload = KTUtil.find(the.header, '[data-card-tool=reload]');\r\n if (reload) {\r\n KTUtil.addEvent(reload, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.reload();\r\n });\r\n }\r\n\r\n // Toggle\r\n var toggle = KTUtil.find(the.header, '[data-card-tool=toggle]');\r\n if (toggle) {\r\n KTUtil.addEvent(toggle, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.toggle();\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Enable stickt mode\r\n */\r\n initSticky: function() {\r\n var lastScrollTop = 0;\r\n var offset = the.options.sticky.offset;\r\n\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n\t window.addEventListener('scroll', Plugin.onScrollSticky);\r\n },\r\n\r\n\t /**\r\n\t * Window scroll handle event for sticky card\r\n\t */\r\n\t onScrollSticky: function(e) {\r\n\t\t var offset = the.options.sticky.offset;\r\n\r\n\t\t if(isNaN(offset)) return;\r\n\r\n\t\t var st = KTUtil.getScrollTop();\r\n\r\n\t\t if (st >= offset && KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n\t\t\t Plugin.eventTrigger('stickyOn');\r\n\r\n\t\t\t KTUtil.addClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.updateSticky();\r\n\r\n\t\t } else if ((st*1.5) <= offset && KTUtil.hasClass(body, 'card-sticky-on')) {\r\n\t\t\t // Back scroll mode\r\n\t\t\t Plugin.eventTrigger('stickyOff');\r\n\r\n\t\t\t KTUtil.removeClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.resetSticky();\r\n\t\t }\r\n\t },\r\n\r\n updateSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n var top;\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on')) {\r\n if (the.options.sticky.position.top instanceof Function) {\r\n top = parseInt(the.options.sticky.position.top.call(this, the));\r\n } else {\r\n top = parseInt(the.options.sticky.position.top);\r\n }\r\n\r\n var left;\r\n if (the.options.sticky.position.left instanceof Function) {\r\n left = parseInt(the.options.sticky.position.left.call(this, the));\r\n } else {\r\n left = parseInt(the.options.sticky.position.left);\r\n }\r\n\r\n var right;\r\n if (the.options.sticky.position.right instanceof Function) {\r\n right = parseInt(the.options.sticky.position.right.call(this, the));\r\n } else {\r\n right = parseInt(the.options.sticky.position.right);\r\n }\r\n\r\n KTUtil.css(the.header, 'z-index', the.options.sticky.zIndex);\r\n KTUtil.css(the.header, 'top', top + 'px');\r\n KTUtil.css(the.header, 'left', left + 'px');\r\n KTUtil.css(the.header, 'right', right + 'px');\r\n }\r\n },\r\n\r\n resetSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n KTUtil.css(the.header, 'z-index', '');\r\n KTUtil.css(the.header, 'top', '');\r\n KTUtil.css(the.header, 'left', '');\r\n KTUtil.css(the.header, 'right', '');\r\n }\r\n },\r\n\r\n /**\r\n * Remove card\r\n */\r\n remove: function() {\r\n if (Plugin.eventTrigger('beforeRemove') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.remove(element);\r\n\r\n Plugin.eventTrigger('afterRemove');\r\n },\r\n\r\n /**\r\n * Set content\r\n */\r\n setContent: function(html) {\r\n if (html) {\r\n the.body.innerHTML = html;\r\n }\r\n },\r\n\r\n /**\r\n * Get body\r\n */\r\n getBody: function() {\r\n return the.body;\r\n },\r\n\r\n /**\r\n * Get self\r\n */\r\n getSelf: function() {\r\n return element;\r\n },\r\n\r\n /**\r\n * Reload\r\n */\r\n reload: function() {\r\n Plugin.eventTrigger('reload');\r\n },\r\n\r\n /**\r\n * Toggle\r\n */\r\n toggle: function() {\r\n if (KTUtil.hasClass(element, 'card-collapse') || KTUtil.hasClass(element, 'card-collapsed')) {\r\n Plugin.expand();\r\n } else {\r\n Plugin.collapse();\r\n }\r\n },\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse: function() {\r\n if (Plugin.eventTrigger('beforeCollapse') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideUp(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterCollapse');\r\n });\r\n\r\n KTUtil.addClass(element, 'card-collapse');\r\n },\r\n\r\n /**\r\n * Expand\r\n */\r\n expand: function() {\r\n if (Plugin.eventTrigger('beforeExpand') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideDown(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterExpand');\r\n });\r\n\r\n KTUtil.removeClass(element, 'card-collapse');\r\n KTUtil.removeClass(element, 'card-collapsed');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n //KTUtil.triggerCustomEvent(name);\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Remove card\r\n */\r\n the.remove = function() {\r\n return Plugin.remove(html);\r\n };\r\n\r\n /**\r\n * Init sticky card\r\n */\r\n the.initSticky = function() {\r\n return Plugin.initSticky();\r\n };\r\n\r\n /**\r\n * Rerender sticky layout\r\n */\r\n the.updateSticky = function() {\r\n return Plugin.updateSticky();\r\n };\r\n\r\n /**\r\n * Reset the sticky\r\n */\r\n the.resetSticky = function() {\r\n return Plugin.resetSticky();\r\n };\r\n\r\n\t/**\r\n\t * Destroy sticky card\r\n\t */\r\n\tthe.destroySticky = function() {\r\n\t\tPlugin.resetSticky();\r\n\t\twindow.removeEventListener('scroll', Plugin.onScrollSticky);\r\n\t};\r\n\r\n /**\r\n * Reload card\r\n */\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n /**\r\n * Set card content\r\n */\r\n the.setContent = function(html) {\r\n return Plugin.setContent(html);\r\n };\r\n\r\n /**\r\n * Toggle card\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Collapse card\r\n */\r\n the.collapse = function() {\r\n return Plugin.collapse();\r\n };\r\n\r\n /**\r\n * Expand card\r\n */\r\n the.expand = function() {\r\n return Plugin.expand();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getBody = function() {\r\n return Plugin.getBody();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getSelf = function() {\r\n return Plugin.getSelf();\r\n };\r\n\r\n /**\r\n * Attach event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTCard;\r\n}\r\n\nexport default KTCard;","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTToggle = function(toggleElement, targetElement, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = toggleElement;\r\n var target = targetElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n targetToggleMode: 'class' // class|attribute\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('toggle')) {\r\n the = KTUtil.data(element).get('toggle');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('toggle', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subtoggle click toggle\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // Merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n //alert(the.options.target.tagName);\r\n the.target = target;\r\n\r\n the.targetState = the.options.targetState;\r\n the.toggleState = the.options.toggleState;\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n the.state = KTUtil.hasClasses(the.target, the.targetState) ? 'on' : 'off';\r\n } else {\r\n the.state = KTUtil.hasAttr(the.target, 'data-' + the.targetState) ? KTUtil.attr(the.target, 'data-' + the.targetState) : 'off';\r\n }\r\n },\r\n\r\n /**\r\n * Setup toggle\r\n */\r\n build: function() {\r\n KTUtil.addEvent(element, 'mouseup', Plugin.toggle);\r\n },\r\n\r\n /**\r\n * Handles offcanvas click toggle\r\n */\r\n toggle: function(e) {\r\n Plugin.eventTrigger('beforeToggle');\r\n\r\n if (the.state == 'off') {\r\n Plugin.toggleOn();\r\n } else {\r\n Plugin.toggleOff();\r\n }\r\n\r\n Plugin.eventTrigger('afterToggle');\r\n\r\n e.preventDefault();\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOn: function() {\r\n Plugin.eventTrigger('beforeOn');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.addClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.attr(the.target, 'data-' + the.targetState, 'on');\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.addClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'on';\r\n\r\n Plugin.eventTrigger('afterOn');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOff: function() {\r\n Plugin.eventTrigger('beforeOff');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.removeClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.removeAttr(the.target, 'data-' + the.targetState);\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.removeClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'off';\r\n\r\n Plugin.eventTrigger('afterOff');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get toggle state\r\n */\r\n the.getState = function() {\r\n return the.state;\r\n };\r\n\r\n /**\r\n * Toggle\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Toggle on\r\n */\r\n the.toggleOn = function() {\r\n return Plugin.toggleOn();\r\n };\r\n\r\n /**\r\n * Toggle off\r\n */\r\n the.toggleOff = function() {\r\n return Plugin.toggleOff();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @returns {KTToggle}\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @returns {KTToggle}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTToggle;\r\n}\r\n\nexport default KTToggle;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVNQTFRFAAAA////////////////////////////////////////////////////////34CF34CA34CA4oCG4oCG44GH//339MzP4oCG34CD//ff//C+/+KF/+++8b/C4oCF//vv/+aV/+B9/O/w5IGG//HG/+id+ufo4oCI////6aCk6Z+k7ba4////++/w77e77K+z+N/h//XX/+ut/+62//z0/+SN/////vf39tjZ9NDR8L/C66qu5pCV7re74YCG4YCF/914//ns/9Bk/9Np/9Rq/9dv/9ly/9x2+efo6Jyg/////+q7/9Z4/+27/////+ex/////9yL/+Ge//PY//bi//nr/9uK//DO/9Nu//z1/+3F/96U66is99/g/////+Sn/9Z39tfZ9dHU/9mB8sfK/9iB44iN4oCF/+Ke/96V8b/D4YCF5I6T44GI/9V3////////+RsSHAAAAHF0Uk5TACAQMG+f3+//v5BQf1+PMCAQv/9//5/fQP//////n/////9f////r6D//3Bg/////////7//sP/////v//9wgP///////////9+A////r/9P/////////////////3D////f/////2D///+QkG//QM8jOGIgAAAC3klEQVR4nJWWS08TURTHzxnaobRUWoFiGzORRB6GRje4GDcSYyIPo8GYoNG4MNGF38YQE91o4k6NYCRgVOIHcOPGBxJQFIMVq1Ago3Tajvcxnde9hXoWvffOnN+5/zO958wg/KdhjctYqRdoQGpkYimIhrULoESLiv92aHMHQGkuihIqjX7EA4Qa5AlVTCqsBdf9AEZEvU6orSRJC/NeAMOKxDNuy9mDJfIbzrlAQ0iUQ6LyoNBusCH21QHE+B2mSm6ZDMgU+LXEYhUI+sdbmIQqoP1ii7aPTg69SzJvB4DOVbIlvoMqkF2QertAF8lmzjIrNuAIiu/fMlSfNhvgpm7YQDOPmUz/8HsHAdi2GKCEyAbJTE7wFgDFYEB2oYa3ALAsEPoxL/cWADj4llaKJjsTcuDwawLE2uoDjtC6Wi4UMNpeF5DJfGBjCZtSdQFH3/OxD9V0XUDPNz5mMdLR+aUOoHeZj2WM6KSWqG1LOE/SAyvkUGTe5Bhgm8gFHiuUTcDGY8Fa83BB4MQMoKroUTQk+inW+FIEzrwgk1PBdmVb/Ll/PfgEMErLYqiQQKso7hMEzDIgLbfTv6F1CmBEYAKAtU2UKipV1PaUXzprqqsyYGB+BezDB00WDK+7oUYRvwvA+WeQ6n8E4U0KXHkIY8uJGTfsuZxm5H3ARbb/oe67wEo0jCNrqfKUA1z6nJjR06W8C1ye5HdoryT/2vAr4qMVJ2z/kTX2BECPZhZtYEB7zJXdYQDpAnrMAC3yc5rmsGn03LNZfe80n3S1sGooFXgji5VBT9Lur0U2CuRfb3XlOXb1AcCFW+BplaNY4pmmlAnRn2xyHMehCrDWRBSkS/v+rEYnZf70GIED1HideE2pngH7bO9GHJirznZ+ZQX1eABQupdquVtj992Fp9yy8/JN8K/3/eqtTxyaFRG8ftO/9q/6Tt72ianc8LtLPk6w75NVJhtZ1uDstXHxm+YfOHTpzRs+ml4AAAAASUVORK5CYII=\"","/* eslint-disable */\n\"use strict\";\n\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTOffcanvas = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n attrCustom: ''\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('offcanvas')) {\r\n the = KTUtil.data(element).get('offcanvas');\r\n } else {\r\n // Reset offcanvas\r\n Plugin.init(options);\r\n\r\n // Build offcanvas\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('offcanvas', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n the.classBase = the.options.baseClass;\r\n the.attrCustom = the.options.attrCustom;\r\n the.classShown = the.classBase + '-on';\r\n the.classOverlay = the.classBase + '-overlay';\r\n the.target;\r\n\r\n the.state = KTUtil.hasClass(element, the.classShown) ? 'shown' : 'hidden';\r\n },\r\n\r\n build: function() {\r\n // offcanvas toggle\r\n if (the.options.toggleBy) {\r\n if (typeof the.options.toggleBy === 'string') {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n } else if (the.options.toggleBy && the.options.toggleBy[0]) {\r\n if (the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i].target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n } else {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i]), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n KTUtil.addEvent( KTUtil.getById(the.options.toggleBy.target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n // offcanvas close\r\n var closeBy = KTUtil.getById(the.options.closeBy);\r\n if (closeBy) {\r\n KTUtil.addEvent(closeBy, 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.hide();\r\n });\r\n }\r\n },\r\n\r\n isShown: function() {\r\n return (the.state == 'shown' ? true : false);\r\n },\r\n\r\n toggle: function() {;\r\n Plugin.eventTrigger('toggle');\r\n\r\n if (the.state == 'shown') {\r\n Plugin.hide();\r\n } else {\r\n Plugin.show();\r\n }\r\n },\r\n\r\n show: function() {\r\n if (the.state == 'shown') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeShow');\r\n\r\n Plugin.toggleClass('show');\r\n\r\n // Offcanvas panel\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classBase, 'on');\r\n KTUtil.addClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classCustom, 'on');\r\n //KTUtil.addClass(body, the.classCustom);\r\n }\r\n\r\n the.state = 'shown';\r\n\r\n if (the.options.overlay) {\r\n the.overlay = KTUtil.insertAfter(document.createElement('DIV') , element );\r\n KTUtil.addClass(the.overlay, the.classOverlay);\r\n\r\n KTUtil.addEvent(the.overlay, 'click', function(e) {\r\n //e.stopPropagation();\r\n e.preventDefault();\r\n Plugin.hide(the.target);\r\n });\r\n }\r\n\r\n Plugin.eventTrigger('afterShow');\r\n },\r\n\r\n hide: function() {\r\n if (the.state == 'hidden') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeHide');\r\n\r\n Plugin.toggleClass('hide');\r\n\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.classBase);\r\n KTUtil.removeClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.attrCustom);\r\n }\r\n\r\n the.state = 'hidden';\r\n\r\n if (the.options.overlay && the.overlay) {\r\n KTUtil.remove(the.overlay);\r\n }\r\n\r\n Plugin.eventTrigger('afterHide');\r\n },\r\n\r\n toggleClass: function(mode) {\r\n var id = KTUtil.attr(the.target, 'id');\r\n var toggleBy;\r\n\r\n if (the.options.toggleBy && the.options.toggleBy[0] && the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n if (the.options.toggleBy[i].target === id) {\r\n toggleBy = the.options.toggleBy[i];\r\n }\r\n }\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n toggleBy = the.options.toggleBy;\r\n }\r\n\r\n if (toggleBy) {\r\n var el = KTUtil.getById(toggleBy.target);\r\n\r\n if (mode === 'show') {\r\n KTUtil.addClass(el, toggleBy.state);\r\n }\r\n\r\n if (mode === 'hide') {\r\n KTUtil.removeClass(el, toggleBy.state);\r\n }\r\n }\r\n },\r\n\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n * @param options\r\n */\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Check if canvas is shown\r\n * @returns {boolean}\r\n */\r\n the.isShown = function() {\r\n return Plugin.isShown();\r\n };\r\n\r\n /**\r\n * Set to hide the canvas\r\n */\r\n the.hide = function() {\r\n return Plugin.hide();\r\n };\r\n\r\n /**\r\n * Set to show the canvas\r\n */\r\n the.show = function() {\r\n return Plugin.show();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @param name\r\n * @param handler\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @param name\r\n * @param handler\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTOffcanvas;\r\n}\r\n\nexport default KTOffcanvas;"],"sourceRoot":""}