{"version":3,"sources":["utils/Utils.js","utils/context/Can.js","utils/buildAbilities.js","config/acl/superadminAbility.js","config/acl/adminAbility.js","config/acl/initialAbility.js","config/acl/ability.js","config/Api/Api.js","services/Auth.js","store/reducers/User.js","store/reducers/Venue.js","store/saga/user.js","store/saga/index.js","store/reducers/index.js","store/index.js","utils/context/ThemeColors.js","i18n/index.js","components/spinner/Fallback-spinner.js","components/ripple-button/index.js","serviceWorker.js","index.js","utils/format.js","utils/storage.js","utils/currency/index.js","utils/timezone/index.js","utils/modals.js","services/User.js","utils/promise.js","store/reducers/Layout.js","config/themeConfig.js","config/Constants/Locale.js","config/Constants/WidgetLocale.js","config/Constants/AASRuleOptions.js","config/Constants/Roles.js","config/Constants/UserStatus.js","config/Constants/Countries.js"],"names":["formatDate","value","formatting","month","day","year","Intl","DateTimeFormat","format","Date","formatCurrency","currency","toFixed","isUserLoggedIn","user","JSON","parse","localStorage","getItem","length","getHomeRouteForLoggedInUser","userRole","_","indexOf","selectThemeColors","theme","colors","primary25","primary","neutral10","neutral20","neutral30","renderCountry","country","countries","findIndex","label","getUserEmail","userData","storage","get","adminEmail","email","getUserFullName","adminFullName","name","lastName","getUserCompany","company","id","getUserCompanyAccessKey","accessKey","getUserRoles","roles","isBookingChannel","isSuperAdmin","hasReviewsAnalyticsPermissions","permission","rAnalytics","hasListingAnalyticsPermissions","lAnalytics","hasReservationsAnalyticsPermissions","bAnalytics","venueType","type","companyType","getLtnLngFromAddress","address","Geocode","setApiKey","process","latitude","longitude","fromAddress","then","response","results","geometry","location","lat","lng","error","console","getAbilities","data","superadminAbility","log","adminAbility","buildAbilities","generateRandomPass","char","Array","from","Math","floor","random","join","clearCookies","clear","bcStatsColor","RWG","FB","IG","PERE","MG","TOL","GON","FORM","E2E","ZONAL","getColor","rp","AbilityContext","createContext","createContextualCan","Consumer","defaultAbilities","action","subject","permisionMapper","bChannelManagement","lConnectionManagement","rCommentsManagement","sVenues","sUsers","sGroups","sNotifications","pResbook","pResbookSettings","permissions","isPOS","abilities","Object","keys","filter","map","ability","initialAbility","abilityCan","Boolean","find","existingAbility","Ability","api","create","baseURL","timeout","refreshApi","isTokenExpired","accessToken","expiresIn","now","checkTokenValidity","refreshAccessToken","replace","store","dispatch","UserTypes","logoutUser","Error","addRequestTransform","request","headers","Authorization","addAsyncResponseTransform","ok","errors","status","originalConfig","config","refreshtoken","_retry","post","client_id","client_secret","grant_type","refresh_token","refreshResponse","error_description","set","access_token","totalVenues","any","retryResponse","assign","Promise","resolve","setTimeout","pathname","token","form","key","isEmpty","isObject","isArray","isString","push","message","method","loginUser","scope","loginWithHash","refreshToken","longDurationToken","long_time","createActions","updateUser","updateUserStore","getUserProfile","Types","Creators","reducer","createReducer","LOGIN_USER","state","LOGOUT_USER","UPDATE_USER","UPDATE_USER_STORE","GET_USER_PROFILE","INITIAL_STATE","fbConnected","venueId","payload","watchUpdateUser","callback","call","handlePromise","UserService","responseData","stringify","put","UserActions","profile","takeEvery","rootSaga","all","history","createBrowserHistory","routeMiddleware","routerMiddleware","sagaMiddleware","createSagaMiddleware","middlewares","createStateSyncMiddleware","whitelist","blacklistTransform","createTransform","inboundState","omit","outboundState","layoutInitialState","persistConfig","transforms","persistedReducer","persistReducer","withReduxStateSync","combineReducers","router","connectRouter","User","layout","Layout","venue","Venue","createStore","composeWithDevTools","applyMiddleware","initStateWithPrevTab","run","sagas","persistor","persistStore","ThemeColors","ThemeContext","children","useState","setColors","useEffect","window","getHex","color","getComputedStyle","document","body","getPropertyValue","trim","obj","light","concat","main","secondary","success","danger","warning","info","dark","Provider","menuMessages","en","userMessagesEn","de","userMessagesDe","fr","userMessagesFr","es","userMessagesEs","Context","IntlProviderWrapper","locale","setLocale","messages","setMessages","switchLanguage","lang","defaultLocale","SpinnerComponent","className","Button","Ripple","onClick","rest","mounted","setMounted","isRippling","setIsRippling","x","y","coords","setCoords","classnames","e","rect","target","getBoundingClientRect","clientX","left","clientY","top","style","hostname","match","LazyApp","lazy","ReactDOM","render","loading","fallback","newestOnTop","getElementById","navigator","serviceWorker","ready","registration","unregister","formatDataToSend","formData","dataToSend","getState","modified","setItem","removeItem","setCookie","expires","date","setTime","getTime","toUTCString","cookie","getCookie","nameEQ","ca","split","i","c","charAt","substring","eraseCookie","getCurrencies","currencies","item","cc","symbol","getTimezones","tz","sortBy","timezones","withReactContent","Swal","baseEndpoint2","updatePassword","getUsers","params","getUser","createUser","recoverPassword","resetPassword","hash","deleteUser","delete","promise","catch","menuCollapsed","themeConfig","menu","isCollapsed","initialMenuCollapsed","menuHidden","isHidden","contentWidth","toggleLoading","isRTL","skin","routerTransition","customizer","scrollTop","isdisabled"],"mappings":"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","file":"static/js/main.bc562526.chunk.js","sourcesContent":["import { countries } from '@configs/Constants'\nimport Geocode from \"react-geocode\"\nimport { storage } from '@utils'\nimport _ from \"lodash\"\nimport buildAbilities from \"./buildAbilities\"\nimport { superadminAbility } from \"../config/acl/superadminAbility\"\nimport { adminAbility } from \"../config/acl/adminAbility\"\n\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\nexport const formatCurrency = (value, currency) => {\n return `${(value / 100).toFixed(2)} ${currency}`\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 getUserData = () => JSON.parse(localStorage.getItem('persist:mozrest-hub'))\nexport const isUserLoggedIn = () => {\n const user = getUserData()\n return localStorage.getItem('mozrestApp:token') && !!user && user.user.length > 0\n}\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 (_.indexOf(userRole, 'ROLE_ADMIN') || _.indexOf(userRole, 'ROLE_MANAGER') || _.indexOf(userRole, 'ROLE_VENUE') || _.indexOf(userRole, 'ROLE_RESERVATION_PORTAL')) 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: '#7367f0', // 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\nexport const renderCountry = country => {\n return countries[_.findIndex(countries, ['value', country])].label\n}\n\nexport const getUserEmail = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.adminEmail ?? userData.email\n}\n\nexport const getClientEmail = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.email ?? ''\n}\n\nexport const getUserFullName = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.adminFullName ?? `${userData.name} ${userData.lastName ?? ''}`\n}\n\nexport const getUserCompany = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.company.id\n}\n\nexport const getUserCompanyAccessKey = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.company?.accessKey\n}\nexport const getUserCompanyRms = () => {\n //TO FIX\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.partner\n}\n\nexport const getCompanyCountry = () => {\n //TO FIX\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.company.country || 'es'\n}\n\nexport const getUserRoles = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.roles\n}\n\nexport const isBookingChannel = () => {\n return _.indexOf(getUserRoles(), 'ROLE_RESERVATION_PORTAL') >= 0\n}\n\nexport const isSuperAdmin = () => {\n return _.indexOf(getUserRoles(), 'ROLE_SUPER_ADMIN') >= 0\n}\n\nexport const totalVenues = () => {\n return localStorage.getItem('mozrestApp:totalVenues')\n}\n\nexport const hasReviewsAnalyticsPermissions = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.permission?.rAnalytics === 'w'\n}\n\nexport const hasListingAnalyticsPermissions = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.permission?.lAnalytics === 'w'\n}\n\nexport const hasReservationsAnalyticsPermissions = () => {\n const userData = JSON.parse(storage.get('mozrestApp:userData'))\n return userData.permission?.bAnalytics === 'w'\n}\n\nexport const venueType = (type = 'many') => {\n const companyType = localStorage.getItem('mozrestApp:companyType')\n if (companyType === 'restaurant' && type === 'one') return 'restaurant'\n if (companyType === 'restaurant' && type === 'many') return 'restaurants'\n if (companyType === 'garage' && type === 'one') return 'garage'\n if (companyType === 'garage' && type === 'many') return 'garages'\n return 'restaurants'\n}\n\nexport const getLtnLngFromAddress = async (address) => {\n Geocode.setApiKey(process.env.REACT_APP_MAPS_API_KEY)\n let latitude = 0\n let longitude = 0\n if (address) {\n await Geocode.fromAddress(address).then(\n (response) => {\n const { lat, lng } = response.results[0].geometry.location\n latitude = lat\n longitude = lng\n },\n (error) => {\n console.error(error)\n }\n )\n\n return ({ latitude, longitude })\n }\n}\n\nexport const getAbilities = (data) => {\n const { roles, permission } = data\n if (_.indexOf(roles, 'ROLE_SUPER_ADMIN') >= 0) {\n return superadminAbility\n }\n if (_.indexOf(roles, 'ROLE_ADMIN') >= 0 && !permission) {\n console.log(\"admin ability\")\n return adminAbility\n }\n return buildAbilities(permission)\n}\n\nexport const generateRandomPass = () => {\n const char = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890'\n const random = Array.from(\n { length: 20 },\n () => char[Math.floor(Math.random() * char.length)]\n )\n return random.join(\"\")\n}\n\nexport const clearCookies = () => {\n storage.clear('mozrestApp:token')\n storage.clear('mozrestApp:refreshtoken')\n storage.clear('persist:mozrest-hub')\n storage.clear('mozrestApp:userData')\n storage.clear('mozrestApp:companyType')\n storage.clear('mozrestApp:totalVenues')\n}\n\nconst bcStatsColor = {\n RWG: \"#2b7de9\",\n FB: \"#4267B2\",\n IG: \"#E1306C\",\n PERE: \"#E8A014\",\n MG: \"#bd2333\",\n TOL: \"#111111\",\n GON: \"#1DB7CE\",\n FORM: \"#006bff\",\n E2E: \"#f9ab27\",\n ZONAL: \"#28A4A0\"\n}\n\nconst defaulColor = \"#1f155a\"\n\nexport const getColor = (rp) => {\n return bcStatsColor[rp] || defaulColor\n}\n","// ** Imports createContext function\nimport { createContext } from 'react'\n\n// ** Imports createContextualCan function\nimport { createContextualCan } from '@casl/react'\n\n// ** Create Context\nexport const AbilityContext = createContext()\n\n// ** Init Can Context\nexport const Can = createContextualCan(AbilityContext.Consumer)\n","const defaultAbilities = [\n {\n action: \"read\",\n subject: \"home\"\n },\n {\n action: \"view\",\n subject: \"settings:account\"\n },\n {\n action: \"filter\",\n subject: \"venues:selection\"\n }\n]\n\nconst permisionMapper = {\n bChannelManagement: {\n action: \"edit\",\n subject: \"reservations:channel-management\"\n },\n bAnalytics: {\n action: \"view\",\n subject: \"reservations:analytics\"\n },\n lConnectionManagement: {\n action: \"edit\",\n subject: \"listing:connection-management\"\n },\n lAnalytics: {\n action: \"view\",\n subject: \"listing:analytics\"\n },\n rCommentsManagement: {\n action: \"edit\",\n subject: \"reviews:comments-management\"\n },\n rAnalytics: {\n action: \"view\",\n subject: \"reviews:analytics\"\n },\n sVenues: {\n action: \"edit\",\n subject: \"settings:venues\"\n },\n sUsers: {\n action: \"edit\",\n subject: \"settings:users\"\n },\n sGroups: {\n action: \"edit\",\n subject: \"settings:groups\"\n },\n sNotifications: {\n action: \"edit\",\n subject: \"settings:notifications\"\n },\n pResbook: {\n action: \"view\",\n subject: \"resbook:dashboard\"\n },\n pResbookSettings: {\n action: \"view\",\n subject: \"resbook:configuration\"\n }\n}\n\nconst buildAbilities = (permissions = {}, isPOS) => {\n let abilities = Object.keys(permissions)\n .filter((permission) => permissions[permission] !== \"n\")\n .map((permission) => permisionMapper[permission])\n\n if (!isPOS) {\n console.log(abilities, \"HABILITIES\")\n abilities = abilities.filter((ability) => ability?.subject?.indexOf('resbook') === -1)\n }\n\n return [...defaultAbilities, ...abilities]\n}\n\nexport default buildAbilities\n","// ** SuperAdmin user ability\nexport const superadminAbility = [\n {\n action: \"read\",\n subject: \"home\"\n },\n {\n action: \"view\",\n subject: \"reservations:analytics\"\n },\n {\n action: 'edit',\n subject: 'licenses:meta'\n },\n {\n action: 'edit',\n subject: 'licenses:listingAndReview'\n },\n {\n action: 'edit',\n subject: 'licenses:tripadvisor'\n },\n {\n action: 'edit',\n subject: 'customers:companies'\n },\n {\n action: 'edit',\n subject: 'customers:venues'\n },\n {\n action: \"edit\",\n subject: \"settings:widgets\"\n },\n {\n action: 'edit',\n subject: 'customers:venues'\n },\n {\n action: 'edit',\n subject: 'partners:rms'\n },\n {\n action: 'edit',\n subject: 'partners:booking-channels'\n },\n {\n action: 'edit',\n subject: 'partners:distributors'\n },\n {\n action: \"edit\",\n subject: \"settings:users\"\n },\n {\n action: \"view\",\n subject: \"settings:account\"\n },\n {\n action: \"filter\",\n subject: \"venues:selection\"\n },\n {\n action: \"edit\",\n subject: \"settings:listing-review\"\n }\n]\n","// ** Admin user ability\nexport const adminAbility = [\n {\n action: \"read\",\n subject: \"home\"\n },\n {\n action: \"edit\",\n subject: \"reservations:channel-management\"\n },\n {\n action: \"view\",\n subject: \"reservations:analytics\"\n },\n {\n action: \"edit\",\n subject: \"settings:groups\"\n },\n {\n action: \"edit\",\n subject: \"settings:brands\"\n },\n {\n action: \"view\",\n subject: \"settings:account\"\n },\n {\n action: \"filter\",\n subject: \"venues:selection\"\n },\n {\n action: \"edit\",\n subject: \"settings:venues\"\n },\n {\n action: \"edit\",\n subject: \"settings:notifications\"\n },\n {\n action: \"edit\",\n subject: \"listing:connection-management\"\n },\n {\n action: \"view\",\n subject: \"listing:analytics\"\n },\n {\n action: \"edit\",\n subject: \"reviews:comments-management\"\n },\n {\n action: \"view\",\n subject: \"reviews:analytics\"\n },\n {\n action: \"view\",\n subject: \"resbook:dashboard\"\n },\n {\n action: \"view\",\n subject: \"resbook:configuration\"\n }\n // {\n // action: 'edit',\n // subject: 'settings:widgets'\n // }\n]\n","// ** Initial user ability\nexport const initialAbility = [\n {\n action: 'read',\n subject: 'home'\n }\n]\n\nexport const _ = undefined\n","import { Ability } from \"@casl/ability\"\nimport { initialAbility } from \"./initialAbility\"\n\n// Read ability from localStorage\n// * Handles auto fetching previous abilities if already logged in user\n// ? You can update this if you store user abilities to more secure place\n// ! Anyone can update localStorage so be careful and please update this\n\n\nexport const abilityCan = (action, subject) => {\n\n const userData = JSON.parse(localStorage.getItem(\"mozrestApp:userData\"))\n\n\n const existingAbility = userData && userData.ability ? userData.ability.filter(Boolean) : []\n\n\n return !!existingAbility.find(\n (ability) => ability.action === action && ability.subject === subject\n )\n}\n\n\nexport default () => {\n const userData = JSON.parse(localStorage.getItem(\"mozrestApp:userData\"))\n const existingAbility = userData && userData.ability ? userData.ability.filter(Boolean) : null\n return new Ability(existingAbility || initialAbility)\n} \n","import { create } from 'apisauce'\nimport _ from 'lodash'\nimport { handlePromise, storage } from '@utils'\nimport store from '@store'\nimport { UserTypes } from '@store/reducers/User'\nimport AuthService from '@services/Auth'\n\nconst TWO_SECONDS_IN_MILISECONDS = 2000\n\nconst api = create({\n baseURL: process.env.REACT_APP_API_URL,\n timeout: 60000\n})\n\nconst refreshApi = create({\n baseURL: process.env.REACT_APP_API_URL,\n timeout: 60000\n})\n\napi.addRequestTransform((request) => {\n const accessToken = storage.get('mozrestApp:token')\n if (!request['headers[public]']) {\n if (accessToken) request.headers.Authorization = `Bearer ${accessToken}`\n }\n})\nfunction isTokenExpired() {\n const accessToken = storage.get('mozrestApp:token')\n return accessToken && accessToken.expiresIn < Date.now()\n}\nasync function checkTokenValidity() {\n if (isTokenExpired()) {\n\n const refreshed = await refreshAccessToken()\n if (!refreshed) {\n console.log(\"Not has refresh token\")\n location.replace('/login')\n store.dispatch({ type: UserTypes.logoutUser })\n throw new Error('Token refresh failed')\n }\n }\n}\n\napi.addAsyncResponseTransform(async (response) => {\n const { data, ok } = response\n\n if (!ok) {\n let errors = ''\n if (response && response.status === 401\n /* && data && ( data.error === 'invalid_grant' || data.error === 'access_denied' ) */) {\n const originalConfig = response.config\n const refreshtoken = storage.get('mozrestApp:refreshtoken')\n storage.clear('mozrestApp:refreshtoken')\n if (refreshtoken && !originalConfig._retry) {\n try {\n originalConfig._retry = true\n const refreshResponse = await refreshApi.post('/v2/token', {\n client_id: process.env.REACT_APP_CLIENT_ID,\n client_secret: process.env.REACT_APP_CLIENT_SECRET,\n grant_type: 'refresh_token',\n refresh_token: refreshtoken\n })\n if (refreshResponse.status !== 200) {\n throw new Error(refreshResponse?.error_description || 'Error refreshing token')\n }\n storage.set('mozrestApp:token', refreshResponse.data.access_token)\n storage.set('mozrestApp:refreshtoken', refreshResponse.data.refresh_token)\n storage.set('mozrestApp:totalVenues', refreshResponse.data.totalVenues)\n const retryResponse = await api.any(originalConfig)\n Object.assign(response, retryResponse)\n } catch (error) {\n location.replace('/login')\n return store.dispatch({ type: UserTypes.logoutUser })\n }\n }\n\n if (!refreshtoken && !originalConfig._retry) {\n originalConfig._retry = true\n await new Promise((resolve) => setTimeout(resolve, TWO_SECONDS_IN_MILISECONDS))\n const retryResponse = await api.any(originalConfig)\n return Object.assign(response, retryResponse)\n }\n\n if (!refreshtoken && location.pathname !== '/login' && location.pathname !== '/login-hash') {\n storage.clear('mozrestApp:token')\n storage.clear('mozrestApp:refreshtoken')\n storage.clear('persist:mozrest-hub')\n storage.clear('mozrestApp:userData')\n storage.clear('mozrestApp:companyType')\n storage.clear('mozrestApp:totalVenues')\n location.replace('/login')\n // return store.dispatch({ type: UserTypes.logoutUser })\n }\n\n }\n api.addRequestTransform(async (request) => {\n\n await checkTokenValidity()\n\n const accessToken = storage.get('mozrestApp:token')\n if (!request['headers[public]']) {\n if (accessToken) request.headers.Authorization = `Bearer ${accessToken.token}`\n }\n })\n checkTokenValidity()\n if (data) {\n if (data.form) {\n errors = {}\n _.map(data.form.errors, (error, key) => {\n if (!_.isEmpty(error)) {\n errors[key] = error.join('\\n')\n }\n })\n } else if (data.errors) {\n if (_.isObject(data.errors) && !_.isArray(data.errors)) {\n errors = []\n _.map(data.errors, (error) => {\n if (_.isString(error)) errors.push(error)\n else if (_.isArray(errors)) errors.push(error.join('\\n'))\n })\n errors = errors.join('\\n')\n } else if (_.isArray(data.errors)) {\n errors = data.errors.join('\\n')\n } else {\n errors = data.errors\n }\n } else if (data.message) errors = data.message\n else if (data.error_description) errors = data.error_description\n else errors = data\n }\n\n if (!errors || _.isEmpty(errors)) errors = 'apiError'\n if (response.config.method === 'get' && !_.isString(errors)) response.errors = 'apiError'\n else response.errors = errors\n }\n})\n\nexport default api\n","import api from '@configs/Api/Api'\n\nexport default {\n\n loginUser(data) {\n return api.post('/v2/token', {\n ...data,\n client_id: process.env.REACT_APP_CLIENT_ID,\n client_secret: process.env.REACT_APP_CLIENT_SECRET,\n grant_type: 'password',\n scope: null\n })\n },\n loginWithHash(data) {\n return api.post('/v2/token', {\n ...data,\n client_id: process.env.REACT_APP_CLIENT_ID_HASH_GRANT_TYPE,\n client_secret: process.env.REACT_APP_CLIENT_SECRET_HASH_GRANT_TYPE,\n grant_type: 'hash_credentials'\n })\n },\n refreshToken(refresh_token) {\n return api.post('/v2/token', {\n client_id: process.env.REACT_APP_CLIENT_ID,\n client_secret: process.env.REACT_APP_CLIENT_SECRET,\n grant_type: 'refresh_token',\n refresh_token\n })\n },\n longDurationToken(data) {\n return api.post('/v2/token', {\n client_id: process.env.REACT_APP_CLIENT_ID,\n client_secret: process.env.REACT_APP_CLIENT_SECRET,\n grant_type: 'password',\n long_time: true,\n ...data\n })\n }\n}\n","import { createReducer, createActions } from 'reduxsauce'\nimport { storage } from '@utils'\n\nexport const INITIAL_STATE = {}\n\nconst {Types, Creators} = createActions({\n loginUser: ['data'],\n updateUser: ['callback'],\n updateUserStore: ['data'],\n logoutUser: null,\n getUserProfile: ['data']\n})\n\nconst loginUser = (state, { data }) => ({ ...state, ...data })\nconst updateUser = (state, { data }) => ({ ...state, ...data })\nconst getUserProfile = (state, { data }) => ({ ...state, ...data })\n\nconst logoutUser = () => {\n console.log('reducer logoutuser')\n storage.clear('mozrestApp:token')\n storage.clear('mozrestApp:refreshtoken')\n storage.clear('persist:mozrest-hub')\n storage.clear('mozrestApp:userData')\n storage.clear('mozrestApp:companyType')\n storage.clear('mozrestApp:totalVenues')\n return {}\n}\n\nexport const reducer = createReducer(INITIAL_STATE, {\n [Types.LOGIN_USER]: loginUser,\n [Types.LOGOUT_USER]: logoutUser,\n [Types.UPDATE_USER]: null,\n [Types.UPDATE_USER_STORE]: updateUser,\n [Types.GET_USER_PROFILE]: getUserProfile\n})\n\nexport const UserTypes = Types\nexport default Creators\n","const INITIAL_STATE = {\n fbConnected: {venueId: null, status: null}\n}\n\nexport const reducer = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'FB_CONNECTED':\n return {...state, fbConnected: {...action.payload}}\n default:\n return state\n }\n}\n","import {\n takeEvery, put, call\n} from 'redux-saga/effects'\n\nimport UserActions, { UserTypes } from '@store/reducers/User'\nimport handlePromise from '@utils/promise'\nimport UserService from '@services/User'\nimport { storage } from '@utils'\n\nfunction* getUserProfile({ callback }) {\n try {\n const [error, response, responseData] = yield call(\n () => handlePromise(UserService.getUserProfile())\n )\n if (!response.ok) throw error\n\n storage.set('mozrestApp:userData', JSON.stringify(responseData))\n\n yield put(UserActions.updateUserStore({ profile: responseData }))\n if (callback) return callback()\n } catch (error) {\n if (callback) return callback(error)\n }\n}\n\nfunction* watchUpdateUser() {\n yield takeEvery(UserTypes.GET_USER_PROFILE, getUserProfile)\n}\n\nexport default watchUpdateUser\n","import { all } from 'redux-saga/effects'\n\nimport watchUpdateUser from './user'\n\nexport default function* rootSaga() {\n yield all([watchUpdateUser()])\n}\n","import { combineReducers } from 'redux'\nimport { connectRouter } from 'connected-react-router'\nimport { withReduxStateSync } from 'redux-state-sync'\n\nimport { reducer as User } from './User'\nimport { reducer as Layout } from './Layout'\nimport { reducer as Venue } from './Venue'\n\nexport default (history) => withReduxStateSync(combineReducers({\n router: connectRouter(history),\n user: User,\n layout: Layout,\n venue: Venue\n}))\n","import { applyMiddleware, compose, createStore } from 'redux'\nimport { createBrowserHistory } from 'history'\nimport { routerMiddleware } from 'connected-react-router'\nimport { persistStore, persistReducer, createTransform } from 'redux-persist'\nimport storage from 'redux-persist/lib/storage'\nimport createSagaMiddleware from 'redux-saga'\nimport { createStateSyncMiddleware, initStateWithPrevTab } from 'redux-state-sync'\n\nimport omit from 'lodash/omit'\nimport reducers from './reducers'\nimport sagas from './saga'\nimport { composeWithDevTools } from 'redux-devtools-extension'\nimport { INITIAL_STATE as layoutInitialState } from './reducers/Layout'\n\nconst history = createBrowserHistory()\nconst routeMiddleware = routerMiddleware(history)\nconst sagaMiddleware = createSagaMiddleware()\nconst config = {\n // Only 'TOGGLE_TODO' will be triggered in other tabs\n whitelist: ['FB_CONNECTED']\n}\nconst middlewares = [routeMiddleware, sagaMiddleware, createStateSyncMiddleware(config)]\n\nconst blacklistTransform = createTransform(\n (inboundState, key) => {\n if (key === 'layout') {\n //return omit( inboundState, ['menuCollapsed', 'menuHidden', 'contentWidth'] )\n }\n if (key === 'user') {\n return omit(inboundState, ['profile'])\n }\n return inboundState\n },\n (outboundState, key) => {\n if (key === 'layout') {\n return { ...layoutInitialState, ...outboundState }\n }\n return outboundState\n }\n)\n\nconst persistConfig = {\n key: 'mozrest-hub',\n whitelist: ['user', 'layout'],\n storage,\n transforms: [blacklistTransform]\n}\nconst persistedReducer = persistReducer(persistConfig, reducers(history))\n\nconst store = createStore(\n persistedReducer,\n composeWithDevTools(applyMiddleware(...middlewares))\n)\n// init state with other tabs\ninitStateWithPrevTab(store)\n// initMessageListener(store);\nsagaMiddleware.run(sagas)\n\nconst persistor = persistStore(store)\n\nexport default store\nexport { history, persistor, store }\n","// ** 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 <ThemeColors.Provider value={{ colors }}>{children}</ThemeColors.Provider>\n}\n\nexport { ThemeColors, ThemeContext }\n","// ** React Imports\nimport { useState, createContext } from 'react'\n\n// ** Intl Provider Import\nimport { IntlProvider } from 'react-intl'\n\n// ** User Language Data\nimport userMessagesEn from '@i18n/locales/en.json'\nimport userMessagesDe from '@i18n/locales/de.json'\nimport userMessagesFr from '@i18n/locales/fr.json'\nimport userMessagesEs from '@i18n/locales/es.json'\n\n// import { createIntl } from 'react-intl'\n\n// ** Menu msg obj\nconst menuMessages = {\n en: { ...userMessagesEn },\n de: { ...userMessagesDe },\n fr: { ...userMessagesFr },\n es: { ...userMessagesEs }\n}\n\n// ** Create Context\nconst Context = createContext()\n\nconst IntlProviderWrapper = ({ children }) => {\n // ** States\n const [locale, setLocale] = useState('en')\n const [messages, setMessages] = useState(menuMessages['en'])\n\n // ** Switches Language\n const switchLanguage = lang => {\n setLocale(lang)\n setMessages(menuMessages[lang])\n }\n\n return (\n <Context.Provider value={{ locale, switchLanguage }}>\n <IntlProvider key={locale} locale={locale} messages={messages} defaultLocale='en'>\n {children}\n </IntlProvider>\n </Context.Provider>\n )\n}\n\nexport { IntlProviderWrapper, Context as IntlContext }\n","// ** Logo\nimport logo from '@src/assets/images/logo/logo.png'\n\nconst SpinnerComponent = () => {\n return (\n <div className='fallback-spinner vh-100'>\n <div className='loading'>\n <div className='effect-1 effects'></div>\n <div className='effect-2 effects'></div>\n <div className='effect-3 effects'></div>\n </div>\n </div>\n )\n}\n\nexport default SpinnerComponent\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 <Button\n className={classnames('waves-effect', {\n [className]: className\n })}\n onClick={e => {\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 <span\n className='waves-ripple'\n style={{\n left: coords.x,\n top: coords.y\n }}\n ></span>\n ) : null}\n </Button>\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 { ConnectedRouter } from 'connected-react-router'\nimport { Provider } from 'react-redux'\nimport { PersistGate } from 'redux-persist/integration/react'\n\n//import { store } from './redux/storeConfig/store'\nimport store, { persistor, history } from './store'\n\n// ** Intl, CASL & ThemeColors Context\nimport ability from './config/acl/ability'\nimport { ToastContainer } from 'react-toastify'\nimport { AbilityContext } from './utils/context/Can'\nimport { ThemeContext } from './utils/context/ThemeColors'\nimport { IntlProviderWrapper } from './i18n'\n\n// ** Spinner (Splash Screen)\nimport Spinner from '@components/spinner/Fallback-spinner'\n\n// ** Ripple Button\nimport '@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 '@assets/fonts/feather/iconfont.css'\nimport '@assets/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 <Provider store={store}>\n <ConnectedRouter history={history}>\n <PersistGate loading={null} persistor={persistor}>\n <Suspense fallback={<Spinner />}>\n <AbilityContext.Provider value={ability()}>\n <ThemeContext>\n <IntlProviderWrapper>\n <LazyApp />\n <ToastContainer newestOnTop />\n </IntlProviderWrapper>\n </ThemeContext>\n </AbilityContext.Provider>\n </Suspense>\n </PersistGate>\n </ConnectedRouter>\n </Provider>,\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","import _ from 'lodash'\n\nexport const formatDataToSend = (formData, form) => {\n const dataToSend = {}\n _.map(_.keys(form.getState().modified), (key) => {\n if (_.get(formData[key], 'id')) {\n _.set(dataToSend, key, _.get(formData, `${key}.id`))\n } else if (formData.id) {\n if (_.isArray(formData[key]) && _.get(formData, `${key}.0.value`) && _.get(formData, `${key}.0.label`)) {\n _.set(dataToSend, key, _.map(formData[key], 'value'))\n } else if (_.isObject(formData[key]) && formData[key].value && formData[key].label) {\n _.set(dataToSend, key, formData[key].value)\n } else {\n _.set(dataToSend, key, _.get(formData, key, ''))\n }\n } else if (_.isArray(formData[key]) && _.get(formData, `${key}.0.value`) && _.get(formData, `${key}.0.label`)) {\n _.set(dataToSend, key, _.map(formData[key], 'value'))\n } else if (_.isObject(formData[key]) && formData[key].value && formData[key].label) {\n _.set(dataToSend, key, formData[key].value)\n } else {\n _.set(dataToSend, key, _.get(formData, key))\n }\n })\n\n return dataToSend\n}\n\nexport const formatFormDataBody = (data) => {\n const formData = new FormData()\n\n _.forEach(data, (value, key) => {\n if (value) formData.append(key, value)\n })\n\n return formData\n}\n","export default {\n set: (name, value) => localStorage.setItem(name, value),\n get: (name) => localStorage.getItem(name),\n clear: (name) => localStorage.removeItem(name),\n\n setCookie: (name, value) => {\n let expires = ''\n const date = new Date()\n date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000))\n expires = `; expires=${date.toUTCString()}`\n document.cookie = `${name}=${value || ''}${expires}; path=/`\n },\n\n getCookie: (name) => {\n const nameEQ = `${name}=`\n const ca = document.cookie.split(';')\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') c = c.substring(1, c.length)\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length)\n }\n return null\n },\n\n eraseCookie: (name) => {\n document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;`\n }\n\n}\n","import _ from 'lodash'\nimport currencies from './currency.json'\n\nexport const getCurrencies = () => {\n return _.map(currencies, (item) => ({ value: item.cc, label: `${item.cc} (${item.symbol})` }))\n}\n","import _ from 'lodash'\nimport timezones from './timezones.json'\n\nexport const getTimezones = () => {\n const tz = _.sortBy(timezones, ['name'])\n return _.map(tz, (item) => ({ value: item.name, label: item.name }))\n}\n","import withReactContent from \"sweetalert2-react-content\"\nimport Swal from \"sweetalert2\"\nconst MySwal = withReactContent(Swal)\n\nexport const confirmationModal = ({text, action, onSuccess, title, icon, showCancelButton, confirmButtonText}) => {\n\n return MySwal.fire({\n title: title || intl.formatMessage({id: 'Are you sure?'}),\n text,\n icon: icon || 'warning',\n showCancelButton: showCancelButton || true,\n confirmButtonText: confirmButtonText || intl.formatMessage({id: 'Yes, I confirm'}),\n cancelButtonText: intl.formatMessage({id: 'Cancel'}),\n customClass: {\n confirmButton: 'btn btn-primary',\n cancelButton: 'btn btn-outline-danger ml-1'\n },\n buttonsStyling: false\n }).then(async (result) => {\n if (result.value) {\n const response = await action()\n\n if (response) {\n MySwal.fire({\n icon: 'error',\n title: intl.formatMessage({id: 'Error'}),\n text: intl.formatMessage({id: 'There was an error while trying to perform this action. Please contact the administrator.'}),\n customClass: {\n confirmButton: 'btn btn-error'\n }\n })\n } else {\n if (onSuccess) onSuccess()\n }\n }\n })\n}\n","import api from '@configs/Api/Api'\n\nconst baseEndpoint = 'user-me'\nconst baseEndpoint2 = 'users'\n\nexport default {\n\n updatePassword(data) {\n return api.put('user/change-password', data)\n },\n getUserProfile() {\n return api.get(baseEndpoint)\n },\n getUsers(params) {\n return api.get(baseEndpoint2, { ...params })\n },\n getUser(id) {\n return api.get(`${baseEndpoint2}/${id}`)\n },\n createUser(params) {\n return api.post(`${baseEndpoint2}`, { ...params })\n },\n updateUser(id, params) {\n return api.put(`${baseEndpoint2}/${id}`, { ...params })\n },\n recoverPassword(params) {\n return api.post(`recover-password`, { ...params })\n },\n resetPassword(hash, params) {\n return api.post(`recover-password/${hash}`, { ...params })\n },\n deleteUser(id) {\n return api.delete(`${baseEndpoint2}/${id}`)\n }\n}\n","export default (promise) => promise\n .then((response) => {\n if (response.ok) return ([null, response, response.data])\n return ([response.errors, response, null])\n })\n .catch((error) => Promise.resolve([error, { ok: false }, null]))\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\nexport const INITIAL_STATE = {\n menuCollapsed: initialMenuCollapsed(),\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth,\n toggleLoading: false\n}\n\nexport const reducer = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'MENU_COLLAPSED':\n return {...state, value: {...action.value ? action.value : null}}\n case 'CONTENT_WIDTH':\n return {...state, value: {...action.value ? action.value : null}}\n case 'MENU_HIDDEN':\n return {...state, value: {...action.value ? action.value : null}}\n case 'TOGGLE_LOADING':\n return {...state, value: {...action.value ? action.value : false}}\n default:\n return state\n }\n}\n\nexport default reducer\n","//Template config options\nconst themeConfig = {\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 contentWidth: 'full', // full, boxed\n menu: {\n isHidden: false,\n isCollapsed: false\n },\n customizer: false,\n scrollTop: true // Enable scroll to top button\n }\n}\n\nexport default themeConfig\n","export default [\n {\n locale: 'en',\n name: 'english'\n },\n {\n locale: 'es',\n name: 'spanish'\n }\n]\n","export default [\n {\n locale: 'en',\n name: 'english'\n },\n {\n locale: 'es',\n name: 'spanish'\n },\n {\n locale: 'fr',\n name: 'french'\n },\n {\n locale: 'de',\n name: 'german'\n },\n {\n locale: 'fi',\n name: 'finnish'\n },\n {\n locale: 'et',\n name: 'estonian'\n }\n]\n","export default [\n { value: \"always_enable\", label: \"Always enable\" },\n { value: \"always_pause\", label: \"Always paused\" },\n { value: \"manually_modified\", label: \"Manually modified ext.\", isdisabled: true },\n { value: \"rule_7_days\", label: \"Rule 7 days availability\" }\n]","export default [\n { value: 'ROLE_ADMIN', label: 'Admin' },\n { value: 'ROLE_MANAGER', label: 'Manager' }\n // { value: 'ROLE_VENUE', label: 'Venue' }\n]\n","export default [\n { value: 'true', label: 'Active' },\n { value: 'false', label: 'Inactive' }\n]","export default [\n {value: \"AF\", label: \"Afghanistan\"},\n {value: \"AX\", label: \"\\u00c5land Islands\"},\n {value: \"AL\", label: \"Albania\"},\n {value: \"DZ\", label: \"Algeria\"},\n {value: \"AS\", label: \"American Samoa\"},\n {value: \"AD\", label: \"Andorra\"},\n {value: \"AO\", label: \"Angola\"},\n {value: \"AI\", label: \"Anguilla\"},\n {value: \"AQ\", label: \"Antarctica\"},\n {value: \"AG\", label: \"Antigua and Barbuda\"},\n {value: \"AR\", label: \"Argentina\"},\n {value: \"AM\", label: \"Armenia\"},\n {value: \"AW\", label: \"Aruba\"},\n {value: \"AU\", label: \"Australia\"},\n {value: \"AT\", label: \"Austria\"},\n {value: \"AZ\", label: \"Azerbaijan\"},\n {value: \"BS\", label: \"Bahamas\"},\n {value: \"BH\", label: \"Bahrain\"},\n {value: \"BD\", label: \"Bangladesh\"},\n {value: \"BB\", label: \"Barbados\"},\n {value: \"BY\", label: \"Belarus\"},\n {value: \"BE\", label: \"Belgium\"},\n {value: \"BZ\", label: \"Belize\"},\n {value: \"BJ\", label: \"Benin\"},\n {value: \"BM\", label: \"Bermuda\"},\n {value: \"BT\", label: \"Bhutan\"},\n {value: \"BO\", label: \"Bolivia, Plurinational State of\"},\n {value: \"BQ\", label: \"Bonaire, Sint Eustatius and Saba\"},\n {value: \"BA\", label: \"Bosnia and Herzegovina\"},\n {value: \"BW\", label: \"Botswana\"},\n {value: \"BV\", label: \"Bouvet Island\"},\n {value: \"BR\", label: \"Brazil\"},\n {value: \"IO\", label: \"British Indian Ocean Territory\"},\n {value: \"BN\", label: \"Brunei Darussalam\"},\n {value: \"BG\", label: \"Bulgaria\"},\n {value: \"BF\", label: \"Burkina Faso\"},\n {value: \"BI\", label: \"Burundi\"},\n {value: \"KH\", label: \"Cambodia\"},\n {value: \"CM\", label: \"Cameroon\"},\n {value: \"CA\", label: \"Canada\"},\n {value: \"CV\", label: \"Cape Verde\"},\n {value: \"KY\", label: \"Cayman Islands\"},\n {value: \"CF\", label: \"Central African Republic\"},\n {value: \"TD\", label: \"Chad\"},\n {value: \"CL\", label: \"Chile\"},\n {value: \"CN\", label: \"China\"},\n {value: \"CX\", label: \"Christmas Island\"},\n {value: \"CC\", label: \"Cocos (Keeling) Islands\"},\n {value: \"CO\", label: \"Colombia\"},\n {value: \"KM\", label: \"Comoros\"},\n {value: \"CG\", label: \"Congo\"},\n {value: \"CD\", label: \"Congo, the Democratic Republic of the\"},\n {value: \"CK\", label: \"Cook Islands\"},\n {value: \"CR\", label: \"Costa Rica\"},\n {value: \"CI\", label: \"C\\u00f4te d'Ivoire\"},\n {value: \"HR\", label: \"Croatia\"},\n {value: \"CU\", label: \"Cuba\"},\n {value: \"CW\", label: \"Cura\\u00e7ao\"},\n {value: \"CY\", label: \"Cyprus\"},\n {value: \"CZ\", label: \"Czech Republic\"},\n {value: \"DK\", label: \"Denmark\"},\n {value: \"DJ\", label: \"Djibouti\"},\n {value: \"DM\", label: \"Dominica\"},\n {value: \"DO\", label: \"Dominican Republic\"},\n {value: \"EC\", label: \"Ecuador\"},\n {value: \"EG\", label: \"Egypt\"},\n {value: \"SV\", label: \"El Salvador\"},\n {value: \"GQ\", label: \"Equatorial Guinea\"},\n {value: \"ER\", label: \"Eritrea\"},\n {value: \"EE\", label: \"Estonia\"},\n {value: \"ET\", label: \"Ethiopia\"},\n {value: \"FK\", label: \"Falkland Islands (Malvinas)\"},\n {value: \"FO\", label: \"Faroe Islands\"},\n {value: \"FJ\", label: \"Fiji\"},\n {value: \"FI\", label: \"Finland\"},\n {value: \"FR\", label: \"France\"},\n {value: \"GF\", label: \"French Guiana\"},\n {value: \"PF\", label: \"French Polynesia\"},\n {value: \"TF\", label: \"French Southern Territories\"},\n {value: \"GA\", label: \"Gabon\"},\n {value: \"GM\", label: \"Gambia\"},\n {value: \"GE\", label: \"Georgia\"},\n {value: \"DE\", label: \"Germany\"},\n {value: \"GH\", label: \"Ghana\"},\n {value: \"GI\", label: \"Gibraltar\"},\n {value: \"GR\", label: \"Greece\"},\n {value: \"GL\", label: \"Greenland\"},\n {value: \"GD\", label: \"Grenada\"},\n {value: \"GP\", label: \"Guadeloupe\"},\n {value: \"GU\", label: \"Guam\"},\n {value: \"GT\", label: \"Guatemala\"},\n {value: \"GG\", label: \"Guernsey\"},\n {value: \"GN\", label: \"Guinea\"},\n {value: \"GW\", label: \"Guinea-Bissau\"},\n {value: \"GY\", label: \"Guyana\"},\n {value: \"HT\", label: \"Haiti\"},\n {value: \"HM\", label: \"Heard Island and McDonald Islands\"},\n {value: \"VA\", label: \"Holy See (Vatican City State)\"},\n {value: \"HN\", label: \"Honduras\"},\n {value: \"HK\", label: \"Hong Kong\"},\n {value: \"HU\", label: \"Hungary\"},\n {value: \"IS\", label: \"Iceland\"},\n {value: \"IN\", label: \"India\"},\n {value: \"ID\", label: \"Indonesia\"},\n {value: \"IR\", label: \"Iran, Islamic Republic of\"},\n {value: \"IQ\", label: \"Iraq\"},\n {value: \"IE\", label: \"Ireland\"},\n {value: \"IM\", label: \"Isle of Man\"},\n {value: \"IL\", label: \"Israel\"},\n {value: \"IT\", label: \"Italy\"},\n {value: \"JM\", label: \"Jamaica\"},\n {value: \"JP\", label: \"Japan\"},\n {value: \"JE\", label: \"Jersey\"},\n {value: \"JO\", label: \"Jordan\"},\n {value: \"KZ\", label: \"Kazakhstan\"},\n {value: \"KE\", label: \"Kenya\"},\n {value: \"KI\", label: \"Kiribati\"},\n {value: \"KP\", label: \"Korea, Democratic People's Republic of\"},\n {value: \"KR\", label: \"Korea, Republic of\"},\n {value: \"KW\", label: \"Kuwait\"},\n {value: \"KG\", label: \"Kyrgyzstan\"},\n {value: \"LA\", label: \"Lao People's Democratic Republic\"},\n {value: \"LV\", label: \"Latvia\"},\n {value: \"LB\", label: \"Lebanon\"},\n {value: \"LS\", label: \"Lesotho\"},\n {value: \"LR\", label: \"Liberia\"},\n {value: \"LY\", label: \"Libya\"},\n {value: \"LI\", label: \"Liechtenstein\"},\n {value: \"LT\", label: \"Lithuania\"},\n {value: \"LU\", label: \"Luxembourg\"},\n {value: \"MO\", label: \"Macao\"},\n {value: \"MK\", label: \"Macedonia, the Former Yugoslav Republic of\"},\n {value: \"MG\", label: \"Madagascar\"},\n {value: \"MW\", label: \"Malawi\"},\n {value: \"MY\", label: \"Malaysia\"},\n {value: \"MV\", label: \"Maldives\"},\n {value: \"ML\", label: \"Mali\"},\n {value: \"MT\", label: \"Malta\"},\n {value: \"MH\", label: \"Marshall Islands\"},\n {value: \"MQ\", label: \"Martinique\"},\n {value: \"MR\", label: \"Mauritania\"},\n {value: \"MU\", label: \"Mauritius\"},\n {value: \"YT\", label: \"Mayotte\"},\n {value: \"MX\", label: \"Mexico\"},\n {value: \"FM\", label: \"Micronesia, Federated States of\"},\n {value: \"MD\", label: \"Moldova, Republic of\"},\n {value: \"MC\", label: \"Monaco\"},\n {value: \"MN\", label: \"Mongolia\"},\n {value: \"ME\", label: \"Montenegro\"},\n {value: \"MS\", label: \"Montserrat\"},\n {value: \"MA\", label: \"Morocco\"},\n {value: \"MZ\", label: \"Mozambique\"},\n {value: \"MM\", label: \"Myanmar\"},\n {value: \"NA\", label: \"Namibia\"},\n {value: \"NR\", label: \"Nauru\"},\n {value: \"NP\", label: \"Nepal\"},\n {value: \"NL\", label: \"Netherlands\"},\n {value: \"NC\", label: \"New Caledonia\"},\n {value: \"NZ\", label: \"New Zealand\"},\n {value: \"NI\", label: \"Nicaragua\"},\n {value: \"NE\", label: \"Niger\"},\n {value: \"NG\", label: \"Nigeria\"},\n {value: \"NU\", label: \"Niue\"},\n {value: \"NF\", label: \"Norfolk Island\"},\n {value: \"MP\", label: \"Northern Mariana Islands\"},\n {value: \"NO\", label: \"Norway\"},\n {value: \"OM\", label: \"Oman\"},\n {value: \"PK\", label: \"Pakistan\"},\n {value: \"PW\", label: \"Palau\"},\n {value: \"PS\", label: \"Palestine, State of\"},\n {value: \"PA\", label: \"Panama\"},\n {value: \"PG\", label: \"Papua New Guinea\"},\n {value: \"PY\", label: \"Paraguay\"},\n {value: \"PE\", label: \"Peru\"},\n {value: \"PH\", label: \"Philippines\"},\n {value: \"PN\", label: \"Pitcairn\"},\n {value: \"PL\", label: \"Poland\"},\n {value: \"PT\", label: \"Portugal\"},\n {value: \"PR\", label: \"Puerto Rico\"},\n {value: \"QA\", label: \"Qatar\"},\n {value: \"RE\", label: \"R\\u00e9union\"},\n {value: \"RO\", label: \"Romania\"},\n {value: \"RU\", label: \"Russian Federation\"},\n {value: \"RW\", label: \"Rwanda\"},\n {value: \"BL\", label: \"Saint Barth\\u00e9lemy\"},\n {value: \"SH\", label: \"Saint Helena, Ascension and Tristan da Cunha\"},\n {value: \"KN\", label: \"Saint Kitts and Nevis\"},\n {value: \"LC\", label: \"Saint Lucia\"},\n {value: \"MF\", label: \"Saint Martin (French part)\"},\n {value: \"PM\", label: \"Saint Pierre and Miquelon\"},\n {value: \"VC\", label: \"Saint Vincent and the Grenadines\"},\n {value: \"WS\", label: \"Samoa\"},\n {value: \"SM\", label: \"San Marino\"},\n {value: \"ST\", label: \"Sao Tome and Principe\"},\n {value: \"SA\", label: \"Saudi Arabia\"},\n {value: \"SN\", label: \"Senegal\"},\n {value: \"RS\", label: \"Serbia\"},\n {value: \"SC\", label: \"Seychelles\"},\n {value: \"SL\", label: \"Sierra Leone\"},\n {value: \"SG\", label: \"Singapore\"},\n {value: \"SX\", label: \"Sint Maarten (Dutch part)\"},\n {value: \"SK\", label: \"Slovakia\"},\n {value: \"SI\", label: \"Slovenia\"},\n {value: \"SB\", label: \"Solomon Islands\"},\n {value: \"SO\", label: \"Somalia\"},\n {value: \"ZA\", label: \"South Africa\"},\n {value: \"GS\", label: \"South Georgia and the South Sandwich Islands\"},\n {value: \"SS\", label: \"South Sudan\"},\n {value: \"ES\", label: \"Spain\"},\n {value: \"LK\", label: \"Sri Lanka\"},\n {value: \"SD\", label: \"Sudan\"},\n {value: \"SR\", label: \"Surilabel\"},\n {value: \"SJ\", label: \"Svalbard and Jan Mayen\"},\n {value: \"SZ\", label: \"Swaziland\"},\n {value: \"SE\", label: \"Sweden\"},\n {value: \"CH\", label: \"Switzerland\"},\n {value: \"SY\", label: \"Syrian Arab Republic\"},\n {value: \"TW\", label: \"Taiwan, Province of China\"},\n {value: \"TJ\", label: \"Tajikistan\"},\n {value: \"TZ\", label: \"Tanzania, United Republic of\"},\n {value: \"TH\", label: \"Thailand\"},\n {value: \"TL\", label: \"Timor-Leste\"},\n {value: \"TG\", label: \"Togo\"},\n {value: \"TK\", label: \"Tokelau\"},\n {value: \"TO\", label: \"Tonga\"},\n {value: \"TT\", label: \"Trinidad and Tobago\"},\n {value: \"TN\", label: \"Tunisia\"},\n {value: \"TR\", label: \"Turkey\"},\n {value: \"TM\", label: \"Turkmenistan\"},\n {value: \"TC\", label: \"Turks and Caicos Islands\"},\n {value: \"TV\", label: \"Tuvalu\"},\n {value: \"UG\", label: \"Uganda\"},\n {value: \"UA\", label: \"Ukraine\"},\n {value: \"AE\", label: \"United Arab Emirates\"},\n {value: \"GB\", label: \"United Kingdom\"},\n {value: \"US\", label: \"United States\"},\n {value: \"UM\", label: \"United States Minor Outlying Islands\"},\n {value: \"UY\", label: \"Uruguay\"},\n {value: \"UZ\", label: \"Uzbekistan\"},\n {value: \"VU\", label: \"Vanuatu\"},\n {value: \"VE\", label: \"Venezuela, Bolivarian Republic of\"},\n {value: \"VN\", label: \"Viet Nam\"},\n {value: \"VG\", label: \"Virgin Islands, British\"},\n {value: \"VI\", label: \"Virgin Islands, U.S.\"},\n {value: \"WF\", label: \"Wallis and Futuna\"},\n {value: \"EH\", label: \"Western Sahara\"},\n {value: \"YE\", label: \"Yemen\"},\n {value: \"ZM\", label: \"Zambia\"},\n {value: \"ZW\", label: \"Zimbabwe\"}\n]\n"],"sourceRoot":""}