{"version":3,"sources":["utility/context/ThemeColors.js","configs/themeConfig.js","utility/Utils.js","views/components/fallback-spinner/FallbackSpinner.js","assets/images/logo/logo.svg","redux/reducers/auth/index.js","redux/reducers/navbar/index.js","redux/reducers/layout/index.js","redux/reducers/registration/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","subtype","name","surname","email","password","companyName","businessLocation","phoneNumber","termsAndConditions","registrationReducer","country","acceptedTermsAndConditions","showAlert","alertTitle","alertMessage","alertType","ipCountryCode","appReducer","title","message","toLowerCase","rootReducer","combineReducers","auth","registration","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","unregister"],"mappings":"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","file":"static/js/main.3ef44c7d.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: 'Vuexy',\n appLogoImage: require('@src/assets/images/logo/logo.svg').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: '#6CB741', // 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 __webpack_public_path__ + \"static/media/logo.86b72fab.svg\";","// ** 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 type: \"Operator\",\n subtype: \"DMC\",\n name: \"\",\n surname: \"\",\n email: \"\",\n password: \"\",\n companyName: \"\",\n businessLocation: \"\",\n phoneNumber: \"\",\n termsAndConditions: false\n}\n\nconst registrationReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_TYPE_SELECTION':\n return { ...state, \n type: (action.value === \"DMC\" || action.value === \"TourOperator\" || action.value === \"TravelAgent\") ? \"Operator\" : \"Supplier\", \n subtype: action.value\n }\n case 'HANDLE_PERSONAL_DETAILS_SUBMIT':\n return { ...state, \n name: action.value.name,\n surname: action.value.surname,\n email: action.value.email,\n password: action.value.password\n }\n case 'HANDLE_COMPANY_DETAILS_SUBMIT':\n return { ...state, \n companyName: action.value.companyName,\n businessLocation: action.value.country,\n phoneNumber: action.value.phoneNumber,\n termsAndConditions: action.value.acceptedTermsAndConditions\n }\n case 'HANDLE_EMAIL_UPDATE':\n return { ...state, \n email: action.value\n }\n default:\n return state\n }\n}\n\nexport default registrationReducer\n","const initialState = {\n showAlert: false,\n alertTitle: \"\",\n alertMessage: \"\",\n alertType: \"\",\n ipCountryCode: \"za\"\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.toLowerCase()\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 registration from './registration'\nimport app from './app'\n\nconst rootReducer = combineReducers({\n auth,\n navbar,\n layout,\n registration,\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":""}