{"version":3,"sources":["utility/context/ThemeColors.js","configs/themeConfig.js","utility/Utils.js","views/components/fallback-spinner/FallbackSpinner.js","assets/images/logo/wetu.png","redux/reducers/auth/index.js","redux/reducers/navbar/index.js","redux/reducers/layout/index.js","redux/reducers/login/index.js","redux/reducers/app/index.js","redux/reducers/rootReducer.js","redux/storeConfig/store.js","@core/components/ripple-button/index.js","serviceWorker.js","index.js"],"names":["ThemeColors","createContext","ThemeContext","children","useState","colors","setColors","useEffect","window","getHex","color","getComputedStyle","document","body","getPropertyValue","trim","obj","primary","light","concat","main","secondary","success","danger","warning","info","dark","Provider","value","themeConfig","app","appName","appLogoImage","require","default","layout","isRTL","skin","routerTransition","type","contentWidth","menu","isHidden","isCollapsed","navbar","backgroundColor","footer","customizer","scrollTop","isObjEmpty","Object","keys","length","isUserLoggedIn","localStorage","getItem","selectThemeColors","theme","primary25","neutral10","neutral20","neutral30","FallbackSpinner","className","style","borderLeft","initialState","userData","authReducer","state","action","data","config","storageTokenKeyName","storageRefreshTokenKeyName","suggestions","bookmarks","query","navbarReducer","val","objectToUpdate","find","item","id","isBookmarked","bookmarkIndex","findIndex","x","push","splice","menuCollapsed","JSON","parse","initialMenuCollapsed","menuHidden","layoutReducer","setItem","emailAddress","loginReducer","showAlert","alertTitle","alertMessage","alertType","ipCountryCode","appReducer","title","message","rootReducer","combineReducers","auth","login","middleware","thunk","createDebounce","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","Button","Ripple","onClick","rest","mounted","setMounted","isRippling","setIsRippling","y","coords","setCoords","setTimeout","classnames","e","rect","target","getBoundingClientRect","clientX","left","clientY","top","Boolean","location","hostname","match","LazyApp","lazy","ReactDOM","render","fallback","newestOnTop","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.82a756cf.chunk.js","sourcesContent":["// ** React Imports\nimport { useEffect, useState, createContext } from 'react'\n\n// ** Create Context\nconst ThemeColors = createContext()\n\nconst ThemeContext = ({ children }) => {\n // ** State\n const [colors, setColors] = useState({})\n\n //** ComponentDidMount\n useEffect(() => {\n if (window !== 'undefined') {\n //** Get variable value\n const getHex = color => window.getComputedStyle(document.body).getPropertyValue(color).trim()\n\n //** Colors obj\n const obj = {\n primary: {\n light: getHex('--primary').concat('1a'),\n main: getHex('--primary')\n },\n secondary: {\n light: getHex('--secondary').concat('1a'),\n main: getHex('--secondary')\n },\n success: {\n light: getHex('--success').concat('1a'),\n main: getHex('--success')\n },\n danger: {\n light: getHex('--danger').concat('1a'),\n main: getHex('--danger')\n },\n warning: {\n light: getHex('--warning').concat('1a'),\n main: getHex('--warning')\n },\n info: {\n light: getHex('--info').concat('1a'),\n main: getHex('--info')\n },\n dark: {\n light: getHex('--dark').concat('1a'),\n main: getHex('--dark')\n }\n }\n\n setColors({ ...obj })\n }\n }, [])\n\n return {children}\n}\n\nexport { ThemeColors, ThemeContext }\n","// You can customize the template with the help of this file\n\n//Template config options\nconst themeConfig = {\n app: {\n appName: 'Wetu Login',\n appLogoImage: require('@src/assets/images/logo/wetu.png').default\n },\n layout: {\n isRTL: false,\n skin: 'light', // light, dark, bordered, semi-dark\n routerTransition: 'fadeIn', // fadeIn, fadeInLeft, zoomIn, none or check this for more transition https://animate.style/\n type: 'vertical', // vertical, horizontal\n contentWidth: 'full', // full, boxed\n menu: {\n isHidden: false,\n isCollapsed: false\n },\n navbar: {\n // ? For horizontal menu, navbar type will work for navMenu type\n type: 'floating', // static , sticky , floating, hidden\n backgroundColor: 'white' // BS color options [primary, success, etc]\n },\n footer: {\n type: 'static' // static, sticky, hidden\n },\n customizer: false,\n scrollTop: true // Enable scroll to top button\n }\n}\n\nexport default themeConfig\n","// ** Checks if an object is empty (returns boolean)\nexport const isObjEmpty = obj => Object.keys(obj).length === 0\n\n// ** Returns K format from a number\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\n\n// ** Converts HTML to string\nexport const htmlToString = html => html.replace(/<\\/?[^>]+(>|$)/g, '')\n\n// ** Checks if the passed date is today\nconst isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\n/**\n ** Format and return date in Humanize format\n ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\n if (!value) return value\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n// ** Returns short month of passed date\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value)\n let formatting = { month: 'short', day: 'numeric' }\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: 'numeric', minute: 'numeric' }\n }\n\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n/**\n ** Return if user is logged in\n ** This is completely up to you and how you want to store the token in your frontend application\n * ? e.g. If you are using cookies to store the application please update this function\n */\nexport const isUserLoggedIn = () => localStorage.getItem('userData')\nexport const getUserData = () => JSON.parse(localStorage.getItem('userData'))\n\n/**\n ** This function is used for demo purpose route navigation\n ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n ** Please note role field is just for showing purpose it's not used by anything in frontend\n ** We are checking role just for ease\n * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'admin') return '/'\n if (userRole === 'client') return '/access-control'\n return 'Login'\n}\n\n// ** React Select Theme Colors\nexport const selectThemeColors = theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: '#7367f01a', // for option hover bg-color\n primary: '#97CD27', // for selected option bg-color\n neutral10: '#7367f0', // for tags bg-color\n neutral20: '#ededed', // for input border-color\n neutral30: '#ededed' // for input hover border-color\n }\n})\n","import { ThemeContext } from '@src/utility/context/ThemeColors'\nimport { selectThemeColors } from '@utils'\n\nconst FallbackSpinner = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default FallbackSpinner","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAAAmCAYAAAA/bE50AAAABGdBTUEAALGPC/xhBQAADq9JREFUaAXVWg1wVcUVPrvvTwwYxI5SqpEJ7yXEQEAjBX+AiPUP/yoCOm0tjrX+VEdbZ9qx0x9xRm1rix3tWKvWTv3paFFplYpKK8VqnNopSBIeIS8viKhgFPwhQpL3cu/td+7evX/v5gVGi8+dvNzds+ecPXvO2bNn915Bn7OSfpoahUEXQOwlZFKNELSJJP1eFGhV12J6/XM2HVdc4dYqvJJZTtMpST8ii+aLGB1sGRDYxE8SoU1k0AcwyvJ4gW7LLqZtFT6dEvE+F4aoX0GXmZKWiTiNtQqYg1UyD9sgMomuIr1hFumK/CJaHYFVsaCKN0TdE3QNJeg3UL6wV8EIqoSx2FAf0xBdlFtIq0ZAr5juijZEZgWdhrCz0jIpZYehfVQbGwM070pJc7rOp659JPtM0RBhK7PU/p2qIdmdJCKMAKllCnuD8+N9wl+sIfQl6HA876DlxDtIxZfQFCpH3ngfXSaS1ICYHyjs7cKiHeYg3U6DdCUV6NcIRe/ZIcmHae8lcTqrTtIZPnDFVjmiVlw58hUaZW2ny5GmBoqtbIPaYiYt6lxI3boTKe0DwH0S/fW8GuzCG7qEzQRdhVrF7xUVuSJG7aAZCCgNrlJZsyypSbvxf4nfCNyVP4+yUtBl2Bf6EcrcYtNbNLd2OdW4wAqtVOSKgDJnywQJhB+3IOaTOUB/zi+kNhfoq2z+Kr2SeZKeQji72A5L3IdzBtqHxIboeLS2afR0elojNvJDpTT4JEKmGYOZ+zfncrmdGudAPytyRVgWFMd7gf7BCOzolqQV5RSEVbGCD3cuHeh5U8cecmyQzrwLwJcMQ7TyD30vmWbqlCDOgW1V5IqA0nuxSb/qD00wziD2ho5y6jEErZf91IrtwZ2XWSCBzX2Pnw4n8KgjoR/lgNddgQ/4yGUG7O6g75R03wTljaDA/AXUA6zZdLN/pyjhVJGAijQELY04vi3dR/0pY1Wcx48kPRtiuH2CJ7M/EwrzsTfCkQRw+veZtqFheqZYNKdJadWYJo2WUhQty9oRi1FHVVWyfd26daGTR5QEfFniS69sFDEQhQkYI4aRGXV/5sf44TkyzNWxyGSaXmVIsCD7JmEglmZjscRPOjvX7Qj2B1vgcQ8CcbNlIRqjgA6ZCF2fz7f/O4gZbNXVNX0TkEuhyNGg0kZHU3wrn2/L+rGR6ZwB5V8P2WcDl/HtcbB3OMXeUZBRWfeZZv+D+Xzel3MRTZ7cdK5pijq+prUseSVkzGAgm1awwEQPQ2rQewdx07RahZBjhDBu1XNTg1lMAoOL1YXCuF9s3bp2OCPa6C0tLfHt23eCv5jk8bEEnOfqzZs71jFSHAy/rJj7/ysHkFLOGhoqHISeb/h7/fUpU6YcNThoXQKDV/GuyAV0mKy5ANVhDVFXN30GcP6AGcWUHmxS5x8bRpV0euYhUvb/Ckq7HBMRSnk8joUxNJb9xFxEM0a/V8qDL5o0qfHKnp5sXmMYhnkFnOocpmEe2gjcz3XQXgJRMA9VYADAh26xLKMd85nB43lF6Qc4JyaTu/oAv8PrK6319fWBQBwHfDiC5iPYWcdqbKmFinoahsFeN7++vn6CJgg/C4VYCwaoglLdCZoYAQOe3tjYiIvp6AL8xWwEP50jgwm4LW1tbXO1EHsfR/vb4AcjlI8Gip5xxDwpY6smT56GiesiBlguRzYNdJ9Mq/v1E50FjG1G6caD0QkukzIVsOcQ6uqI68xbk0i2vP+HSeg+5ykPRY49NwT0Na2zfQ27yoOgHDM4GG8M93E7nU6noGvcAWnvUFgQjGVh57CFiMcLd8IbT1fK8zgpebVXMk1QZjYYYBnDsB6CMziry8LKK8X1uPJ6U/36CTkgC69YraPgOH7aT1qPQ+g/hZhwDK7xKwnynQecR0N4iLuTD8Nk54Th3IbwCfCGsum1cL+UqSZgNDgG091oWs/CQO8jjOyoq5s6H0pY4l8FrCDg4NWQuRx4KzHGTsRxfl26EPzgEJ5hmQ5GnFksymsxwM/x6wXsLdCzFx6OH4dcX7F2wn/2egAcH0nsBnoP5HjQoTsGMsxE3UP7lGrx7u6OQPyHAm6AAMu8wTjkiDnwrHHZbPZ9/7iGkToBCvmih+vv5aVHZwFyO37uEmQMy4qfiT5kbHpCtqe9USyOu9DZ+GQmM/UR4ACXKXSxdgGyJJfb+IyGOM8/ZjLTrgL+XZAF53BVWC78XV1TM/XeYrHve6lU6geJRNwaHJQrkW21aLnZ403TuCGVMv+iabE3YnSj0NNjb/qXMhwyYZP/PxlCD6yfphl/ToihW9G2PYYVgQlOKBTEiYD9TeOpp3W246VBMFo8SdA1Y9Os9W+a6IKnmTCQt8yZB2CrdfZRV9c4FeSztKKYOXAgiXFDd3c2bATupu7utt+l01OPhoJv1HRKBlGTTNLJ+fzWlUCzsxsoVN/R2rTqn+zPZts/9gFKqhDTNXJJ5ycElOS2+Xy6CwOuV8pR3FVdBvaCpqamKvSeqiftyMET9PmwrIrF5Dynz35gxfEGOj1IZ5M85eHJ2Qgr7qR5fBimLZfLPuThRNXidwBvp9/IXIcNw5mh5wUuG7Uvuc0DXOEDXag8bhBNhffwClA6dZR26hFHNFX19rbvYYKBAYGLNBN5sSJXyrKQK9Np+B2poLwyOHbTfbqN51cQCkapUM1QO+5vM4xkq4cjpmm+DOM6lDkeRnwW9RLn8ehsR095bbf2JbdWoZUIQ/A5gJ7BhnkzZLbTT8cQk6qrxXG9vfSSmot1FhSKrEKFfyjIQHZ4N0IDUk46kmlUnzgR+8t47C/vODqYrw3MbceAL2zZsu4jpx909gasm3jasX48cHlvKVscWQM4oHFXV6CjghqR3jV+/GGdUNEGVpIuCBWMy5svteCkCOW46afCs7p7ei5EhmStZi/XBSy+MDQkkYlx2trEKyUQ+5WSxV81Pj/Bj8NeSVHGDebiYVgJEQDwCU+gKIQKgEUaYu3atbzGn/Yr1JnwmYDLN998fzImN0V7HxsCf/8gWmrG47E1WAm+NJBDjziH54rwglRXHMp1VeywtD2VMl7WEDz59By1Ulkmvkfa3x/T8e8zLuX3oKgJ2wJDeatw8LsJDXtZs9KhbESZxtpCwZyHk2tKH7RUn7Czmc7ODT24Q1oPupOVoexNZG5zc/PBu3cXEJbYOdXG4qykNaG0mMn2YCy3cHqJ/egx/MOdT/kJuUROBeFSxmLxD8LwA9netcuoSiREdbkxhzVEdXV8Y19foR3KwmWeUhwWQ7JYtM6HMk/xYLZXvz0wQPrykDcNHMyEbQgHr6avb+hcwBGW/EcKex8JhCUlrLUFY83TBnOeDblcx+Zyk/lkfc5F2X4ygcNo5QxLmUyaSMfFeE9npaiRoYnRnOtkeLnnmswIDPmlzUmaqfJqenHbtg7X67CFP49+DiG68D3RT9E4SgOclfGOEAe96MFUDTx9GRTHeJ6rOC6dnnJJGPfTaiNsOlch+8PRTiLGjUSBuV+POXnXuhEEwxpC4Zo4wAVeWDK4Fj/31lB5qwgc9GIxswPwzY6RbFaoH4OKewnIfVDw2lxuHfL+YMG1xQsQ/kO/EwADJPKXOOzNCGJHt3BtfiNC5JKoXgyNg5vnYIwDB+P9r2yBvAEix0GOr631Xy4GWSBB+S5W94JgJAjicKusIRIJasNgWb9CS1lY+Apb/MsPR8wv4O5/tZ9OCe3HYs1SRFgi6unZ+CZ6HwvTA/8Iy4qtxMn4aypzC/LjFt9/4f3I7ViVP8OYN/HVTCmW2OSHsZKQEy7gKww/3Km7OkLiuNeN0k4nZKqOxaz7GxqOPdpPW19/7ASce5ZhpS2DmQMG1HjghzObKpEIupOf8KrboJQfRlmUFYXJrsJ9VeDUzXT19U3zsFEik4oSgoe13oOxpvT0tL/L+OHCqS7Yv4rfBL8RfcZphVKewkQ3Qr6P8RyH8fga5kKsHBw07Us/vkO6tbt744/9/OvqpmH/Ml8EzFWy089D4YpHrIEhcUUvGgsFed3WrRuwOvmuqWkm5H4lTKf0QNvRx9cob6Fdh/ppkKv8viBji4HTilvmnSMaoqGhCS+HCOmlVRLjnGzmWmyid7Og/lJff9IY09zdjoEmgtbfhZVgvzh6AgZcFOgINXCRtwAKfhTgpN8YjKYMYhvU3kPCbY+V6E8khmZs2rQp68EWxTKZzTCiPDvsYJoPP01zaCcuNtP6sInML4HMDytdtoTpIJEjkxpFyavnreT0xlc1DLEHxi7iDeDpYY8I41KxuPc1ADuVgMFuDNYPOLy+tHR1tfYB+s8oOjYM0t/IsOTnhIu8FcC9FrCBMB+eKCtDGyjcZj58BsVk1xcKcffUrvg/zq+BrwPvrcPz5exOBF63cgKDlfJ9jPVhmI7npORhmZhWGUHhWb0YL3BzzXJgCji4WmPxgRt/4Va+qHe/JqejAURuw1tf6+qqzwc6Ag0+W2iv8DowkV0wxBoPMnwNq+1+vCi8ABg5pdigHKWULBcbwP6o4LcILefg3flbYTzw3YLXoMyXX4UyfhgFbX4nESxdXRv/Cy++GEp8m+l4JUQV5sf9wOPQeT6euegxlIJKBopmGnuaPc6ZoC20M8hzRHxJGF2GhsyX2Xv0RJVwHOFE60gfJPg5Yh/BOImTcKi7EcppQx+Ws6twVy6HhmP1wxizJZdrv0bHdz8/XceV+gYpC7yX3QLYGwxXc9SGER+NGjWmZH74sOF5OOEcZHf3QAyk4FoWprNVyksih7kvTSaNud3d7djrxAOAYUUp3oqG6cDJMvGR4j6UiRMnHpRMjrkci300v8JVJDygtbyrq/31cizq66d/HQIdpekwrsQm/UIu1/afcnTD9fFrVinH4IrFSGMKuAik0XijiZO4iTdwcge+h8A3rKUp8XD8NHzixOlj43EDn+ngi3KLP9Q0tsBA7SqD01ilz0mTmg6X0pyGeWGDJshG7+Azzh4YAMljFmmyV5CAzEIQmoVvAfCq2AsVUsYf+R/0Z4VAnXhtUwAAAABJRU5ErkJggg==\"","// ** Initial State\nconst initialState = {\n userData: {}\n}\n\nconst authReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'LOGIN':\n return {\n ...state,\n userData: action.data,\n [action.config.storageTokenKeyName]: action[action.config.storageTokenKeyName],\n [action.config.storageRefreshTokenKeyName]: action[action.config.storageRefreshTokenKeyName]\n }\n case 'LOGOUT':\n const obj = { ...action }\n delete obj.type\n return { ...state, userData: {}, ...obj }\n default:\n return state\n }\n}\n\nexport default authReducer\n","// ** Initial State\nconst initialState = {\n suggestions: [],\n bookmarks: [],\n query: ''\n}\n\nconst navbarReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_SEARCH_QUERY':\n return { ...state, query: action.val }\n case 'GET_BOOKMARKS':\n return { ...state, suggestions: action.data, bookmarks: action.bookmarks }\n case 'UPDATE_BOOKMARKED':\n let objectToUpdate\n\n // ** find & update object\n state.suggestions.find(item => {\n if (item.id === action.id) {\n item.isBookmarked = !item.isBookmarked\n objectToUpdate = item\n }\n })\n\n // ** Get index to add or remove bookmark from array\n const bookmarkIndex = state.bookmarks.findIndex(x => x.id === action.id)\n\n if (bookmarkIndex === -1) {\n state.bookmarks.push(objectToUpdate)\n } else {\n state.bookmarks.splice(bookmarkIndex, 1)\n }\n\n return { ...state }\n default:\n return state\n }\n}\n\nexport default navbarReducer\n","// ** ThemeConfig Import\nimport themeConfig from '@configs/themeConfig'\n\n// ** Returns Initial Menu Collapsed State\nconst initialMenuCollapsed = () => {\n const item = window.localStorage.getItem('menuCollapsed')\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed\n}\n\n// ** Initial State\nconst initialState = {\n isRTL: themeConfig.layout.isRTL,\n menuCollapsed: initialMenuCollapsed(),\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth\n}\n\nconst layoutReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_CONTENT_WIDTH':\n return { ...state, contentWidth: action.value }\n case 'HANDLE_MENU_COLLAPSED':\n window.localStorage.setItem('menuCollapsed', action.value)\n return { ...state, menuCollapsed: action.value }\n case 'HANDLE_MENU_HIDDEN':\n return { ...state, menuHidden: action.value }\n case 'HANDLE_RTL':\n return { ...state, isRTL: action.value }\n default:\n return state\n }\n}\n\nexport default layoutReducer\n","const initialState = {\n emailAddress: \"\"\n}\n\nconst loginReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'SET_EMAIL_ADDRESS':\n return {\n ...state,\n emailAddress: action.value\n }\n default:\n return state\n }\n}\n\nexport default loginReducer\n\n","const initialState = {\n showAlert: false,\n alertTitle: \"\",\n alertMessage: \"\",\n alertType: \"\",\n ipCountryCode: \"\"\n}\n\nconst appReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_ALERT_THROWN':\n return { ...state, \n showAlert: true,\n alertTitle: action.value.title,\n alertMessage: action.value.message,\n alertType: action.value.type\n }\n case 'HANDLE_DISMISS_ALERT':\n return { ...state, \n showAlert: false,\n alertTitle: \"\",\n alertMessage: \"\",\n alertType: \"\"\n }\n case 'SET_IP_COUNTRY_CODE':\n return { ...state, \n ipCountryCode: action.value\n }\n default:\n return state\n }\n}\n\nexport default appReducer\n","// ** Redux Imports\nimport { combineReducers } from 'redux'\n\n// ** Reducers Imports\nimport auth from './auth'\nimport navbar from './navbar'\nimport layout from './layout'\nimport login from './login'\nimport app from './app'\n\nconst rootReducer = combineReducers({\n auth,\n navbar,\n layout,\n login,\n app\n})\n\nexport default rootReducer\n","// ** Redux, Thunk & Root Reducer Imports\nimport thunk from 'redux-thunk'\nimport createDebounce from 'redux-debounced'\nimport rootReducer from '../reducers/rootReducer'\nimport { createStore, applyMiddleware, compose } from 'redux'\n\n// ** init middleware\nconst middleware = [thunk, createDebounce()]\n\n// ** Dev Tools\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n// ** Create store\nconst store = createStore(rootReducer, {}, composeEnhancers(applyMiddleware(...middleware)))\n\nexport { store }\n","// ** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Third Party Components\nimport { Button } from 'reactstrap'\nimport classnames from 'classnames'\n\n// ** Styles\nimport './ripple-button.scss'\n\nconst RippleButton = ({ className, children, onClick, ...rest }) => {\n // ** States\n const [mounted, setMounted] = useState(false)\n const [isRippling, setIsRippling] = useState(false)\n const [coords, setCoords] = useState({ x: -1, y: -1 })\n\n // ** Toggle mounted on mount & unmount\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n // ** Check for coords and set ripple\n useEffect(() => {\n if (mounted) {\n if (coords.x !== -1 && coords.y !== -1) {\n setIsRippling(true)\n setTimeout(() => setIsRippling(false), 500)\n } else {\n setIsRippling(false)\n }\n }\n }, [coords])\n\n // ** Reset Coords on ripple end\n useEffect(() => {\n if (mounted) {\n if (!isRippling) setCoords({ x: -1, y: -1 })\n }\n }, [isRippling])\n\n return (\n {\n const rect = e.target.getBoundingClientRect()\n setCoords({ x: e.clientX - rect.left, y: e.clientY - rect.top })\n if (onClick) {\n onClick(e)\n }\n }}\n {...rest}\n >\n {children}\n {isRippling ? (\n \n ) : null}\n \n )\n}\n\n// ** PropTypes\nRippleButton.propTypes = {\n ...Button.propTypes\n}\n\nButton.Ripple = RippleButton\n","/*eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker === null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (response.status === 404 || (contentType !== null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","// ** React Imports\nimport { Suspense, lazy } from 'react'\nimport ReactDOM from 'react-dom'\n\n// ** Redux Imports\nimport { Provider } from 'react-redux'\nimport { store } from './redux/storeConfig/store'\n\n// ** Toast & ThemeColors Context\nimport { ToastContainer } from 'react-toastify'\nimport { ThemeContext } from './utility/context/ThemeColors'\n\n// ** Spinner (Splash Screen)\nimport FallbackSpinner from '@src/views/components/fallback-spinner/FallbackSpinner'\n\n// ** Ripple Button\nimport './@core/components/ripple-button'\n\n// ** PrismJS\nimport 'prismjs'\nimport 'prismjs/themes/prism-tomorrow.css'\nimport 'prismjs/components/prism-jsx.min'\n\n// ** React Perfect Scrollbar\nimport 'react-perfect-scrollbar/dist/css/styles.css'\n\n// ** React Toastify\nimport '@styles/react/libs/toastify/toastify.scss'\n\n// ** Core styles\nimport './@core/assets/fonts/feather/iconfont.css'\nimport './@core/scss/core.scss'\nimport './assets/scss/style.scss'\n\n// ** Service Worker\nimport * as serviceWorker from './serviceWorker'\n\n// ** Lazy load app\nconst LazyApp = lazy(() => import('./App'))\n\nReactDOM.render(\n \n }>\n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n"],"sourceRoot":""}