{"version":3,"sources":["common/auth-manager.ts","store/api.ts","store/positions-slice.ts","store/queues-slice.ts","common/use-token.ts","common/online-context.tsx","store/users-slice.ts","common/grid-mobile/use-grid-mobile-event-listener.ts","common/grid-mobile/use-grid-mobile-installation-resumed-listener.ts","store/occupancies-slice.ts","common/use-organization.ts","store/locations-slice.ts","../node_modules/dayjs/locale lazy /^/.//.*/.js$/ groupOptions: {} namespace object","init-firebase.ts","i18n.ts","containers/organization/useDayjsLocale.ts","containers/organization/useEmotionCache.ts","containers/organization/useMuiTheme.ts","containers/organization/index.tsx","containers/auth-callback.tsx","containers/logout-callback.tsx","app.tsx","service-worker.ts","index.tsx","store/index.ts"],"names":["baseIdentityURLBase","window","location","hostname","baseIdentityURL","manager","UserManager","origin","authority","client_id","redirect_uri","post_logout_redirect_uri","response_type","scope","filterProtocolClaims","stateStore","WebStorageStateStore","prefix","store","localStorage","userStore","getClientSettings","getTimezoneOffset","Date","baseApiUrlBase","baseApiUrl","axiosInstance","Axios","create","baseURL","interceptors","request","use","configOld","token","getItem","internalId","config","headers","Authorization","axios","positionSchema","schema","Entity","normalizePosition","data","normalize","positionListSchema","Array","normalizePositionList","queueSchema","positions","normalizeQueue","occupancySchema","normalizeOccupancy","locationEntity","locationListSchema","normalizeLocationList","userSchema","normalizeUser","loadQueue","createAsyncThunk","a","organization","queue","pin","get","qs","stringify","entities","setQueueOpen","open","rejectWithValue","post","response","status","statusText","setUserAvailable","isAvailable","clearQueue","clearOccupancy","createPosition","position","registrationEnabled","type","timeZoneOffset","createDigitalCallPosition","body","updateNotificationForPosition","notification","updateTagsForPosition","tags","createBooking","priority","label","errorMessage","message","assignManagerForBooking","email","assignManagerForPosition","result","unAssignManagerFromPosition","cancelPositionByUser","put","createCurbsidePickup","loadPosition","nextPosition","station","userCategories","query","checkInPosition","rejectPosition","retryPosition","checkOutOldestPosition","updatePositionNumberOfPeople","numberOfPeople","loadLocations","loadClickAndCollect","createPass","locale","activatePosition","activationNote","completePosition","cancelPositionByAdmin","undefined","params","submitFeedbackForm","feedback","subscribeClickAndCollectNotifications","registrationToken","loadPositions","isReplaceExisting","loadOrganizationPositionsByExternalId","externalId","loadOccupancy","updateOccupancy","peopleIn","peopleOut","manual","updateQueueSettings","storeCapacity","callPosition","checkOutPosition","acceptCall","loadUser","pingUser","queueId","updateUserTags","userId","updateUserCategories","categories","loadDigitalCallPosition","fetchTimeSlots","minDate","maxDate","verifyUser","verifyUserInternalId","fetchQueue","removeDigitalCallPositionFromStore","loadPositionBySession","sessionId","length","verifyPin","notifyAboutClickAndCollectOrder","orderLink","phoneNumber","createClickAndCollectOrder","orderId","note","getClickAndCollectOrders","positionsAdapter","createEntityAdapter","setOnePosition","state","item","setOne","id","createSlice","name","initialState","getInitialState","reducers","extraReducers","pending","fulfilled","action","incomingPositions","payload","positionsList","Object","entries","map","setAll","selectById","getSelectors","filter","currentPosition","_ts","forEach","upsertMany","removeMany","keys","firstItemKey","upsertOne","firstPosition","updateOne","changes","servedBy","removeOne","firstPositionId","selectPositionById","selectClickAndCollectPositions","ids","reduce","acc","push","positionsIdsSelector","positionsEntitiesSelector","positionsCombiner","positionStatus","accumulator","selectPendingPositions","createSelector","selectFulfilledPositions","selectNotifiedPositions","selectOrderPositions","queuesAdapter","queues","meta","arg","selectQueueById","useToken","useLocalStorage","OnlineReactContext","React","createContext","isOnline","globalOnlineStatusSubscription","getOnlineStatusSubscription","OnlineContextProvider","children","useState","onlineContextValue","setOnlineContextValue","lastGridMobileResumedTimestamp","useGridMobileInstallationResumedListener","useEffect","start","stop","unsubscribe","subscribe","Provider","value","useOnlineContext","useContext","user","selectUser","users","GridMobileEventType","useGridMobileEventListener","eventType","handler","eventHandler","addEventListener","removeEventListener","seLastGridMobileResumedTimestamp","InstallationResumed","now","occupanciesAdapter","occupancies","selectOccupancyById","selectAll","fetchOrganization","organizationName","Sentry","useOrganization","useParams","useQuery","refetchOnWindowFocus","cacheTime","Infinity","locationsAdapter","locations","selectAllLocations","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","all","slice","t","module","exports","initFirebase","firebase","apiKey","projectId","messagingSenderId","appId","isSupported","messaging","usePublicVapidKey","onMessage","navigator","serviceWorker","getRegistration","registration","showNotification","title","err","initI18n","supportedLocales","i18n","Backend","LanguageDetector","initReactI18next","init","fallbackLng","debug","process","supportedLngs","load","interpolation","escapeValue","backend","loadPath","detection","order","caches","react","useSuspense","useDayjsLocale","language","lng","substring","loadLocale","dayjs","useEmotionCache","dir","useMemo","createCache","stylisPlugins","stylisRtl","useMuiTheme","createMuiTheme","direction","Queue","lazy","QueueList","LocationSelection","DigitalCall","defaultSupportedLocales","Organization","i18nInt","setI18n","path","useRouteMatch","organizationSupportedLocales","initLocales","useCallback","i18nGlobalInstance","emotionCache","theme","ThemeProvider","Helmet","lang","siteTitle","favicon","rel","href","exact","component","render","Title","styled","h1","ErrorTitle","OrganizationContainer","isLoading","isSuccess","isError","AuthCallback","history","useHistory","setToken","signinRedirectCallback","from","id_token","LogoutCallback","signoutRedirectCallback","App","fallback","Boolean","match","queryClient","QueryClient","dsn","enabled","jss","plugins","jssPreset","rtl","globalStyles","minireset","css","ReactDOM","StrictMode","client","StylesProvider","styles","document","getElementById","ready","unregister","catch","error","console","rootReducer","combineReducers","queuesReducer","positionsReducer","locationsReducer","occupanciesReducer","usersReducer","middleware","getDefaultMiddleware","configureStore","reducer","useDispatch","useReduxDispatch","adapter","key","addOne"],"mappings":"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S7B,MAJM,sCAMtBqO,IAAA,MANsB,8DAAH,sDAqBRC,IATS,WAA8C,IAC9CF,EAAqBG,cAAnCrN,aAER,OAAOsN,mBAAS,CAAC,eAAgBJ,IAAmB,kBAAMD,EAAkBC,KAAmB,CAC7FK,sBAAsB,EACtBC,UAAWC,Q,8FCnBTC,EAAmB9G,cAEZ+G,EAAYzG,YAAY,CACnCC,KAAM,YACNC,aAAcsG,EAAiBrG,kBAC/BC,SAAU,GACVC,cAAc,eACXlE,IAAcoE,UAAUpG,MAAO,SAACyF,EAAOY,GAClCA,EAAOE,QAAQ+F,WACjBD,EAAiBlF,WAAW1B,EAAOY,EAAOE,QAAQ+F,gB,EAMuBD,EAAiBvF,eAAxCyF,G,EAA3C1F,W,EAAgC8E,WAEhCW,MAAf,S,0DCrBA,IAAI3F,EAAM,CACT,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,KAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,IAED,gBAAiB,CAChB,IACA,IAED,UAAW,CACV,IACA,IAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,cAAe,CACd,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,eAAgB,CACf,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,WAAY,CACX,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,WAAY,CACX,IACA,KAED,UAAW,CACV,IACA,KAED,WAAY,CACX,IACA,KAED,gBAAiB,CAChB,IACA,KAED,WAAY,CACX,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,eAAgB,CACf,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,gBAAiB,CAChB,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,aAAc,CACb,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,MAGF,SAAS6F,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEhG,EAAK8F,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,KAIR,IAAI/E,EAAMrB,EAAI8F,GAAM7G,EAAKoC,EAAI,GAC7B,OAAO4E,QAAQM,IAAIlF,EAAImF,MAAM,GAAGxG,IAAI+F,EAAoBK,IAAID,MAAK,WAChE,OAAOJ,EAAoBU,EAAExH,EAAI,MAGnC4G,EAAoBnF,KAAO,WAC1B,OAAOZ,OAAOY,KAAKV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","file":"static/js/main.7ce0ead1.chunk.js","sourcesContent":["import { UserManager, UserManagerSettings, WebStorageStateStore } from 'oidc-client';\n\nlet baseIdentityURLBase = '';\nswitch (window.location.hostname) {\n case 'localhost':\n case 'queue-dev.griddeveloper.com':\n baseIdentityURLBase = 'https://id.griddeveloper.com/';\n break;\n case 'queue-qa.omborigrid.com':\n case 'queue.qa.omborigrid.com':\n baseIdentityURLBase = 'https://id-qa.ombori.com/';\n break;\n case 'queue-in.omborigrid.com':\n case 'queue-eu.omborigrid.com':\n case 'queue-au.omborigrid.com':\n case 'queue-uae.omborigrid.com':\n case 'queue-us.omborigrid.com':\n case 'queue.in.ombori.com':\n case 'queue.eu.ombori.com':\n case 'queue.au.ombori.com':\n case 'queue.uae.ombori.com':\n case 'queue.us.ombori.com':\n case 'booking.ikea.com.bh':\n case 'booking.ikea.com.sa':\n default:\n baseIdentityURLBase = 'https://id.ombori.com/';\n break;\n}\n\nexport const baseIdentityURL = baseIdentityURLBase;\n\nexport function getClientSettings(): UserManagerSettings {\n const { origin } = window.location;\n return {\n authority: baseIdentityURL,\n client_id: 'queue-app',\n redirect_uri: `${origin}/auth-callback`,\n post_logout_redirect_uri: `${origin}/logout-callback`,\n response_type: 'code',\n scope: 'openid email',\n filterProtocolClaims: true,\n stateStore: new WebStorageStateStore({ prefix: 'oidc', store: localStorage }),\n userStore: new WebStorageStateStore({ prefix: 'oidc', store: localStorage }),\n };\n}\n\nconst manager = new UserManager(getClientSettings());\n\nexport default manager;\n","import Axios from 'axios';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { normalize, schema } from 'normalizr';\nimport qs from 'query-string';\nimport { Queue, Position, Location, Occupancy, Notification, User, Station, PositionFeedback, Tag } from './types';\n\nconst getTimezoneOffset = (): number => {\n if (process.env.NODE_ENV === 'test') {\n return 0;\n }\n\n const timeZoneOffset = new Date().getTimezoneOffset();\n\n return timeZoneOffset;\n};\n\nlet baseApiUrlBase = '';\nswitch (window.location.hostname) {\n case 'localhost':\n baseApiUrlBase = 'http://localhost:7071/api';\n break;\n case 'queue-qa.omborigrid.com':\n case 'queue.qa.ombori.com':\n baseApiUrlBase = 'https://api-qa.omborigrid.com/regions/qa/queues/v1';\n break;\n case 'queue-in.omborigrid.com':\n case 'queue.in.ombori.com':\n baseApiUrlBase = 'https://api.omborigrid.com/regions/in/queues/v1';\n break;\n case 'queue-eu.omborigrid.com':\n case 'queue.eu.ombori.com':\n baseApiUrlBase = 'https://api.omborigrid.com/regions/eu/queues/v1';\n break;\n case 'queue-au.omborigrid.com':\n case 'queue.au.ombori.com':\n baseApiUrlBase = 'https://api.omborigrid.com/regions/au/queues/v1';\n break;\n case 'queue-uae.omborigrid.com':\n case 'queue.uae.ombori.com':\n case 'booking.ikea.com.bh':\n case 'booking.ikea.com.sa':\n baseApiUrlBase = 'https://api.omborigrid.com/regions/uae/queues/v1';\n break;\n case 'queue-us.omborigrid.com':\n case 'queue.us.ombori.com':\n baseApiUrlBase = 'https://api.omborigrid.com/regions/us/queues/v1';\n break;\n case 'queue-dev.griddeveloper.com':\n case 'queue.dev.ombori.com':\n default:\n baseApiUrlBase = 'https://api.griddeveloper.com/regions/dev/queues/v1';\n break;\n}\nexport const baseApiUrl = baseApiUrlBase;\n\nexport const getRawBaseApiUrl = () => {\n const result = baseApiUrl.replace('/api', '');\n\n return result;\n};\n\nconst axiosInstance = Axios.create({\n baseURL: baseApiUrl,\n});\n\naxiosInstance.interceptors.request.use((configOld) => {\n const token = localStorage.getItem('grid-queue-app-token');\n const internalId = localStorage.getItem('grid-queue-app-internal-id');\n const config = { ...configOld };\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n if (internalId && !config.headers['X-Authorization-Internal-Id']) {\n config.headers['X-Authorization-Internal-Id'] = internalId;\n }\n\n return config;\n});\n\nexport const axios = axiosInstance;\n\nexport interface QueueOrgParams {\n organization: string;\n queue: string;\n}\n\nexport interface QueueOrgPositionParams {\n organization: string;\n queue: string;\n position: string;\n sessionId?: string;\n}\n\nexport interface OrgPositionSessionParams {\n organization: string;\n sessionId: string;\n position?: string;\n}\n\nexport interface OrgPositionParams {\n organization: string;\n position: string;\n}\n\nexport interface UserOrgParams {\n organization: string;\n}\n\nexport interface AuthenticatedParams extends QueueOrgParams {\n pin?: string;\n token?: string | null;\n station?: Station | null;\n}\n\ninterface PositionAuthenticatedParams extends AuthenticatedParams {\n position: string;\n}\nexport const positionSchema = new schema.Entity('positions');\n\nexport const normalizePosition = (data: any) =>\n normalize<\n any,\n {\n positions: { [key: string]: Position };\n }\n >(data, positionSchema);\n\nexport const positionListSchema = new schema.Array(positionSchema);\n\nexport const normalizePositionList = (data: any) =>\n normalize<\n any,\n {\n positions: { [key: string]: Position };\n }\n >(data, positionListSchema);\n\nexport const queueSchema = new schema.Entity('queues', {\n positions: [positionSchema],\n});\n\nexport const normalizeQueue = (data: any) =>\n normalize<\n any,\n {\n positions?: { [key: string]: Position };\n queues: { [key: string]: Queue };\n }\n >(data, queueSchema);\n\nexport const occupancySchema = new schema.Entity('occupancies');\n\nexport const normalizeOccupancy = (data: any) =>\n normalize<\n any,\n {\n occupancies: { [key: string]: Occupancy };\n }\n >(data, occupancySchema);\n\nexport const locationEntity = new schema.Entity('locations');\n\nexport const locationListSchema = new schema.Array(locationEntity);\n\nconst normalizeLocationList = (data: any) =>\n normalize<\n any,\n {\n locations: { [key: string]: Location };\n }\n >(data, locationListSchema);\n\nexport const userSchema = new schema.Entity('users');\nconst normalizeUser = (data: any) =>\n normalize<\n any,\n {\n users: { [key: string]: User };\n }\n >(data, userSchema);\n\nconst loadQueuePrefixType = 'queues/loadQueue';\nexport const loadQueue = createAsyncThunk(\n loadQueuePrefixType,\n async ({ organization, queue, pin }: AuthenticatedParams) => {\n const { data } = await axios.get(\n `/organizations/${organization}/queues/${queue}?${qs.stringify({\n pin,\n })}`,\n );\n return normalizeQueue(data).entities;\n },\n);\n\nexport const setQueueOpen = createAsyncThunk(\n 'queues/setQueueOpen',\n async ({ organization, queue, pin, open }: AuthenticatedParams & { open: boolean }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/toggle-open?${qs.stringify({\n pin,\n })}`,\n {\n open,\n },\n );\n return normalizeQueue(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const setUserAvailable = createAsyncThunk(\n 'users/setAvailable',\n async ({ organization, isAvailable }: { organization: string; isAvailable: boolean }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(`organizations/${organization}/users/availablity`, {\n isAvailable,\n });\n return normalizeUser(data);\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n ...error.response,\n });\n }\n throw error;\n }\n },\n);\n\nexport const clearQueue = createAsyncThunk(\n 'queues/clearQueue',\n async ({ organization, queue, pin }: AuthenticatedParams, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/clear?${qs.stringify({\n pin,\n })}`,\n );\n return normalizeQueue(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const clearOccupancy = createAsyncThunk(\n 'queues/clearOccupancy',\n async ({ organization, queue, pin }: AuthenticatedParams, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/clear-occupancy?${qs.stringify({\n pin,\n })}`,\n );\n return normalizeQueue(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const createPosition = createAsyncThunk(\n 'positions/createPosition',\n async ({\n organization,\n queue,\n position,\n registrationEnabled = false,\n }: QueueOrgParams & { position: Partial; registrationEnabled?: boolean }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions?sendConfirmation=${position.type === 'manual'}`,\n {\n ...position,\n registrationEnabled,\n timeZoneOffset: getTimezoneOffset(),\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const createDigitalCallPosition = createAsyncThunk(\n 'positions/createDigitalCallPosition',\n async ({ organization, body }: QueueOrgParams & { body: any }) => {\n const { data } = await axios.post(`organizations/${organization}/positions/call`, body);\n return normalizePosition(data).entities;\n },\n);\n\nexport const updateNotificationForPosition = createAsyncThunk(\n 'positions/updateNotificationForPosition',\n async ({ organization, queue, position, notification }: QueueOrgPositionParams & { notification: Notification }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/update-position-notification`,\n {\n notification,\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const updateTagsForPosition = createAsyncThunk(\n 'positions/updateTagsForPosition',\n async ({ organization, queue, position, tags }: QueueOrgPositionParams & { tags: string[] }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/update-position-tags`,\n {\n tags,\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport type BookingPosition = Position & Required>;\ntype CurbsidePickupPosition = Position & Required>;\n\nexport const createBooking = createAsyncThunk(\n 'positions/createBooking',\n async ({ organization, queue, position }: QueueOrgParams & { position: BookingPosition }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(`organizations/${organization}/queues/${queue}/bookings`, {\n ...position,\n type: 'booking',\n status: 'draft',\n priority: 100,\n label: '',\n timeZoneOffset: getTimezoneOffset(),\n });\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n errorMessage: error.response.data.message,\n });\n }\n throw error;\n }\n },\n);\n\nexport const assignManagerForBooking = createAsyncThunk(\n 'positions/assignManagerForBooking',\n async ({ organization, queue, position, email }: QueueOrgPositionParams & { email: string }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/assign-booking-manager`,\n {\n email,\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const assignManagerForPosition = createAsyncThunk(\n 'positions/assignManagerForPosition',\n async ({ organization, queue, position, email }: QueueOrgPositionParams & { email: string }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/assign-manager`,\n {\n email,\n },\n );\n\n const result = normalizePosition(data).entities;\n\n return result;\n },\n);\n\nexport const unAssignManagerFromPosition = createAsyncThunk(\n 'positions/unAssignManagerFromPosition',\n async ({ organization, queue, position }: QueueOrgPositionParams) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/unassign-manager`,\n );\n\n const result = normalizePosition(data).entities;\n\n return result;\n },\n);\n\nexport const cancelPositionByUser = createAsyncThunk(\n 'position/cancelPositionByUser',\n async ({ organization, queue, position }: QueueOrgParams & { position: string }, { rejectWithValue }) => {\n try {\n const { data } = await axios.put(\n `organizations/${organization}/queues/${queue}/positions/${position}/cancel-position`,\n {},\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const createCurbsidePickup = createAsyncThunk(\n 'positions/createPickupTicket',\n async ({ organization, queue, position }: QueueOrgParams & { position: CurbsidePickupPosition }) => {\n const { data } = await axios.post(`organizations/${organization}/queues/${queue}/bookings`, {\n ...position,\n type: 'curbsidePickup',\n status: 'draft',\n priority: 0,\n label: '',\n timeZoneOffset: getTimezoneOffset(),\n });\n return normalizePosition(data).entities;\n },\n);\n\nexport const loadPosition = createAsyncThunk(\n 'positions/loadPosition',\n async ({ organization, queue, position }: QueueOrgPositionParams) => {\n const { data } = await axios.get(`/organizations/${organization}/queues/${queue}/positions/${position}`);\n return normalizePosition(data).entities;\n },\n);\n\ninterface NextPositionProps extends AuthenticatedParams {\n userCategories?: string[];\n}\n\nexport const nextPosition = createAsyncThunk(\n 'positions/nextPosition',\n async ({ organization, queue, pin, station, userCategories }: NextPositionProps, { rejectWithValue }) => {\n const query = qs.stringify({ pin });\n\n try {\n const { data } = await axios.post(`organizations/${organization}/queues/${queue}/next?${query}`, {\n station,\n userCategories,\n });\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const checkInPosition = createAsyncThunk(\n 'positions/checkInPosition',\n async ({ organization, queue, pin, position }: AuthenticatedParams & { position: string }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/check-in?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const rejectPosition = createAsyncThunk(\n 'positions/rejectPosition',\n async ({ organization, queue, pin, position }: AuthenticatedParams & { position: string }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/reject?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const retryPosition = createAsyncThunk(\n 'positions/retryPosition',\n async ({ organization, queue, pin, position }: AuthenticatedParams & { position: string }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/retry?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const checkOutOldestPosition = createAsyncThunk(\n 'positions/checkOutOldestPosition',\n async ({ organization, queue, pin }: AuthenticatedParams, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/check-out?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const updatePositionNumberOfPeople = createAsyncThunk(\n 'positions/updatePositionNumberOfPeople',\n async ({ numberOfPeople, organization, queue, position }: QueueOrgPositionParams & { numberOfPeople: number }) => {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/positions/${position}/number-of-people`,\n {\n numberOfPeople,\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const loadLocations = createAsyncThunk(\n 'locations/loadLocations',\n async ({ organization }: Pick) => {\n const { data } = await axios.get(`/organizations/${organization}/locations`);\n return normalizeLocationList(data).entities;\n },\n);\n\nconst loadClickAndCollectPrefixType = 'queues/loadClickAndCollect';\nexport const loadClickAndCollect = createAsyncThunk(\n loadClickAndCollectPrefixType,\n async ({ organization, queue, pin }: AuthenticatedParams) => {\n const { data } = await axios.get(\n `/organizations/${organization}/queues/${queue}/click-and-collect?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePositionList(data).entities;\n },\n);\n\nexport const createPass = createAsyncThunk(\n 'passes/createPass',\n async ({ organization, queue, locale }: QueueOrgParams & { locale: string }) => {\n const { data } = await axios.post(`organizations/${organization}/queues/${queue}/passes`, {\n locale,\n });\n return normalizePosition(data).entities;\n },\n);\n\nexport const activatePosition = createAsyncThunk(\n 'positions/activatePosition',\n async ({ organization, queue, position, activationNote }: QueueOrgPositionParams & { activationNote: string }) => {\n const { data } = await axios.post(`/organizations/${organization}/queues/${queue}/positions/${position}/activate`, {\n activationNote,\n });\n return normalizePosition(data).entities;\n },\n);\n\nexport const completePosition = createAsyncThunk(\n 'positions/completePosition',\n async ({ organization, queue, position }: QueueOrgPositionParams) => {\n const { data } = await axios.post(`/organizations/${organization}/queues/${queue}/positions/${position}/complete`);\n return normalizePosition(data).entities;\n },\n);\n\nexport const cancelPositionByAdmin = createAsyncThunk(\n 'positions/cancelPositionByAdmin',\n async ({ organization, queue, position, pin }: AuthenticatedParams & QueueOrgPositionParams) => {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/positions/${position}/admin-cancel`,\n undefined,\n {\n params: {\n pin,\n },\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const submitFeedbackForm = createAsyncThunk(\n 'positions/submitFeedbackForm',\n async ({ organization, queue, position, feedback }: QueueOrgPositionParams & { feedback: PositionFeedback }) => {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/update-position-feedback`,\n {\n feedback,\n },\n );\n return normalizePosition(data).entities;\n },\n);\n\nexport const subscribeClickAndCollectNotifications = createAsyncThunk(\n 'queues/subscribeClickAndCollectNotifications',\n async ({ organization, queue, pin, registrationToken }: AuthenticatedParams & { registrationToken: string }) => {\n await axios.post(\n `/organizations/${organization}/queues/${queue}/click-and-collect/subscribe?${qs.stringify({\n pin,\n })}`,\n {\n registrationToken,\n },\n );\n },\n);\n\ninterface LoadPositionProps extends AuthenticatedParams {\n isReplaceExisting?: boolean;\n}\n\nconst loadPositionsPrefixType = 'queues/loadPositions';\nexport const loadPositions = createAsyncThunk(\n loadPositionsPrefixType,\n async ({ organization, queue, pin, isReplaceExisting = false }: LoadPositionProps) => {\n const { data } = await axios.get(\n `/organizations/${organization}/queues/${queue}/positions?${qs.stringify({\n pin,\n })}`,\n );\n\n return { data: normalizePositionList(data).entities, isReplaceExisting };\n },\n);\n\nexport const loadPositionsByExternalId = createAsyncThunk(\n 'queues/loadPositionsByExternalId',\n async ({ organization, queue, externalId }: QueueOrgParams & { externalId: string }) => {\n const { data } = await axios.get(\n `/organizations/${organization}/queues/${queue}/positions-by-externalId?externalId=${externalId}`,\n );\n return normalizePositionList(data).entities;\n },\n);\n\nexport const loadOrganizationPositionsByExternalId = createAsyncThunk(\n 'queues/loadOrganizationPositionsByExternalId',\n async ({ organization, externalId }: { organization: string; externalId: string }) => {\n const { data } = await axios.get(`/organizations/${organization}/positions-by-externalId?externalId=${externalId}`);\n return normalizePositionList(data).entities;\n },\n);\n\nconst loadOccupancyPrefixType = 'occupancies/loadOccupancy';\nexport const loadOccupancy = createAsyncThunk(\n loadOccupancyPrefixType,\n async ({ organization, queue }: QueueOrgParams) => {\n const { data } = await axios.get(`/organizations/${organization}/queues/${queue}/occupancy`);\n return normalizeOccupancy(data).entities;\n },\n);\n\nexport const updateOccupancy = createAsyncThunk(\n 'occupancies/updateOccupancy',\n async ({\n organization,\n queue,\n pin,\n peopleIn = 0,\n peopleOut = 0,\n manual = true,\n }: AuthenticatedParams & { peopleIn?: number; peopleOut?: number; manual?: boolean }) => {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/occupancy?${qs.stringify({\n pin,\n manual,\n })}`,\n {\n peopleIn,\n peopleOut,\n },\n );\n return normalizeOccupancy(data).entities;\n },\n);\n\nexport const updateQueueSettings = createAsyncThunk(\n 'queues/updateQueueSettings',\n async ({ organization, queue, pin, storeCapacity }: AuthenticatedParams & { storeCapacity: number }) => {\n const { data } = await axios.post(\n `/organizations/${organization}/queues/${queue}/settings?${qs.stringify({\n pin,\n })}`,\n {\n storeCapacity,\n },\n );\n return normalizeQueue(data).entities;\n },\n);\n\nexport const callPosition = createAsyncThunk(\n 'positions/callPosition',\n async (\n { organization, queue, pin, position, station }: AuthenticatedParams & { position: string },\n { rejectWithValue },\n ) => {\n const query = qs.stringify({ pin });\n\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/call?${query}`,\n {\n station,\n },\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const checkOutPosition = createAsyncThunk(\n 'positions/checkOutPosition',\n async ({ organization, queue, pin, position }: AuthenticatedParams & { position: string }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/check-out?${qs.stringify({\n pin,\n })}`,\n );\n return normalizePosition(data).entities;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const acceptCall = createAsyncThunk(\n 'positions/acceptCall',\n async (\n { organization, queue, pin, position, internalId }: PositionAuthenticatedParams & { internalId?: string },\n { rejectWithValue },\n ) => {\n try {\n const { data } = await axios.post(\n `organizations/${organization}/queues/${queue}/positions/${position}/accept-call?${qs.stringify({\n pin,\n })}`,\n {},\n {\n headers: internalId ? { 'X-Authorization-Internal-Id': `${internalId}` } : {},\n },\n );\n return data;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n positions: [],\n });\n }\n throw error;\n }\n },\n);\n\nexport const loadUser = createAsyncThunk('users/loadUser', async ({ organization }: { organization: string }) => {\n const { data } = await axios.get(`/organizations/${organization}/me`);\n return normalizeUser(data);\n});\n\nexport const pingUser = createAsyncThunk(\n 'users/pingUser',\n async ({ organization, queue }: { organization: string; queue: string }, { rejectWithValue }) => {\n try {\n const { data } = await axios.post(`/organizations/${organization}/users/ping`, { queueId: queue });\n return data;\n } catch (error) {\n if (error.response) {\n return rejectWithValue({\n status: error.response.status,\n statusText: error.response.statusText,\n });\n }\n throw error;\n }\n },\n);\n\nexport const updateUserTags = createAsyncThunk(\n 'users/updateTags',\n async ({ organization, userId, tags }: { organization: string; userId: string; tags: Tag[] }) => {\n const { data } = await axios.post(`/organizations/${organization}/users/${userId}/tags`, {\n tags,\n });\n\n return normalizeUser(data);\n },\n);\n\nexport const updateUserCategories = createAsyncThunk(\n 'users/updateCategories',\n async ({ organization, userId, categories }: { organization: string; userId: string; categories: string[] }) => {\n const { data } = await axios.post(`/organizations/${organization}/users/${userId}/categories`, {\n categories,\n });\n\n return normalizeUser(data);\n },\n);\n\nexport const loadDigitalCallPosition = createAsyncThunk(\n 'positions/loadDigitalCallPosition',\n async ({ organization, position }: OrgPositionParams) => {\n const { data } = await axios.get(`/organizations/${organization}/digital-call/${position}`);\n return normalizePosition(data).entities;\n },\n);\n\nexport const fetchTimeSlots = async (organization: string, queue: string, minDate?: string, maxDate?: string) =>\n axios.get(`/organizations/${organization}/queues/${queue}/timeslots`, {\n params: {\n minDate,\n maxDate,\n },\n });\n\nexport const verifyUser = (organization: string, queue: string, internalId?: string | null) => {\n return axios.post(\n `/organizations/${organization}/queues/${queue}/verify-user`,\n {},\n {\n headers: internalId ? { 'X-Authorization-Internal-Id': `${internalId}` } : {},\n },\n );\n};\n\nexport const verifyUserInternalId = (organization: string, queue: string, internalId: string) =>\n axios.post(\n `organizations/${organization}/queues/${queue}/verify-user-internal-id`,\n {},\n {\n headers: { 'X-Authorization-Internal-Id': `${internalId}` },\n },\n );\n\nexport const fetchQueue = async ({ organization, queue }: QueueOrgParams): Promise => {\n const { data } = await axios.get(`/organizations/${organization}/queues/${queue}`);\n\n return data;\n};\n\nexport const removeDigitalCallPositionFromStore = createAsyncThunk(\n 'positions/removeDigitalCallPosition',\n async (position: Position) => {\n return normalizePosition(position).entities;\n },\n);\n\nexport const loadPositionBySession = createAsyncThunk(\n 'positions/loadPositionBySession',\n async ({ organization, sessionId }: OrgPositionSessionParams) => {\n const { data } = await axios.get(\n `/organizations/${organization}/positions/active-by-sessionId?sessionId=${sessionId}`,\n );\n if (!data || !data.length) {\n return {};\n }\n return normalizePosition(data[0]).entities;\n },\n);\n\nexport const verifyPin = (organization: string, queue: string, pin: string) =>\n axios.post(`organizations/${organization}/queues/${queue}/verify-pin`, pin, {\n headers: { 'Content-Type': 'text/plain' },\n });\n\ninterface NotifyAboutClickAndCollectOrderProps {\n organization: string;\n queue: string;\n orderLink: string;\n phoneNumber: string;\n locale: string;\n}\n\nexport const notifyAboutClickAndCollectOrder = ({\n organization,\n queue,\n orderLink,\n phoneNumber,\n locale,\n}: NotifyAboutClickAndCollectOrderProps): Promise =>\n axios.post(`organizations/${organization}/queues/${queue}/click-and-collect/notify`, {\n orderLink,\n phoneNumber,\n locale,\n });\n\ninterface CreateClickAndCollectOrderProps extends QueueOrgParams {\n minDate: number;\n maxDate: number;\n orderId: string;\n phoneNumber: string;\n note?: string;\n}\n\nexport const createClickAndCollectOrder = createAsyncThunk(\n 'positions/createClickAndCollectOrder',\n async ({ organization, queue, minDate, maxDate, orderId, phoneNumber, note }: CreateClickAndCollectOrderProps) => {\n const { data } = await axios.post(`organizations/${organization}/queues/${queue}/click-and-collect/orders`, {\n minDate,\n maxDate,\n orderId,\n phoneNumber,\n note,\n });\n\n return normalizePosition(data).entities;\n },\n);\n\nexport const getClickAndCollectOrders = createAsyncThunk(\n 'positions/getClickAndCollectOrders',\n async ({ organization, queue }: QueueOrgParams) => {\n const { data } = await axios.get(`/organizations/${organization}/queues/${queue}/click-and-collect/orders`);\n\n return normalizePositionList(data).entities;\n },\n);\n","import { createEntityAdapter, createSlice, createSelector, Dictionary, EntityId } from '@reduxjs/toolkit';\nimport { Position, PositionStatus } from './types';\n// eslint-disable-next-line import/no-cycle\nimport { AppState, setOne } from './index';\nimport {\n activatePosition,\n callPosition,\n cancelPositionByAdmin,\n checkInPosition,\n completePosition,\n createPosition,\n loadClickAndCollect,\n loadPosition,\n loadPositions,\n nextPosition,\n updateNotificationForPosition,\n cancelPositionByUser,\n updatePositionNumberOfPeople,\n createDigitalCallPosition,\n loadDigitalCallPosition,\n submitFeedbackForm,\n assignManagerForBooking,\n assignManagerForPosition,\n unAssignManagerFromPosition,\n removeDigitalCallPositionFromStore,\n checkOutOldestPosition,\n checkOutPosition,\n rejectPosition,\n retryPosition,\n loadPositionBySession,\n createClickAndCollectOrder,\n getClickAndCollectOrders,\n} from './api';\n\nconst positionsAdapter = createEntityAdapter();\n\nconst setOnePosition = (state: any, item: Position) => {\n return setOne(positionsAdapter, state, item, item.id);\n};\n\nexport const positions = createSlice({\n name: 'positions',\n initialState: positionsAdapter.getInitialState(),\n reducers: {},\n extraReducers: {\n [loadPositions.pending.type]: (state) => ({\n ...state,\n }),\n [loadPositions.fulfilled.type]: (\n state,\n action: { payload: { data: { positions: undefined | { [id: string]: Position } }; isReplaceExisting: boolean } },\n ) => {\n // if it's not socket - we just got all positions and need to sync them as they are\n const incomingPositions = action.payload.data.positions;\n if (action.payload.isReplaceExisting) {\n // if there is no positions - no tickets in the queue\n const positionsList = Object.entries(incomingPositions ?? {}).map(([, position]) => position);\n positionsAdapter.setAll(state, positionsList);\n return;\n }\n // if it's socket - we should update positions which we got but not the rest\n if (!incomingPositions) return;\n\n const { selectById } = positionsAdapter.getSelectors();\n\n const entries = Object.entries(incomingPositions);\n\n entries\n .filter(([id, position]) => {\n const currentPosition = selectById(state, id);\n\n if (!currentPosition) return true;\n\n // eslint-disable-next-line no-underscore-dangle\n if (!position._ts || !currentPosition._ts) return true;\n\n // eslint-disable-next-line no-underscore-dangle\n const result = position._ts >= currentPosition._ts;\n\n return result;\n })\n .forEach(([, position]) => setOnePosition(state, position));\n },\n [loadClickAndCollect.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [loadPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n Object.entries(action.payload.positions).forEach(([, item]) => {\n setOnePosition(state, item as Position);\n });\n }\n },\n [activatePosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [completePosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [rejectPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [cancelPositionByAdmin.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.removeMany(state, Object.keys(action.payload.positions));\n }\n },\n [createPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [createDigitalCallPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n const firstItemKey = Object.keys(action.payload.positions)[0];\n positionsAdapter.upsertOne(state, action.payload.positions[firstItemKey]);\n }\n },\n [nextPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [callPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [retryPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n const firstItemKey = Object.keys(action.payload.positions)[0];\n const firstPosition = action.payload.positions[firstItemKey];\n positionsAdapter.updateOne(state, {\n id: firstItemKey,\n changes: { ...firstPosition, servedBy: firstPosition.servedBy ?? undefined },\n });\n }\n },\n [updateNotificationForPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [checkInPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [checkOutOldestPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [cancelPositionByUser.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [updatePositionNumberOfPeople.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [checkOutPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [loadDigitalCallPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [removeDigitalCallPositionFromStore.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.removeOne(state, Object.keys(action.payload.positions)[0]);\n }\n },\n [submitFeedbackForm.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [assignManagerForBooking.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [assignManagerForPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [unAssignManagerFromPosition.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n const firstPositionId = Object.keys(action.payload.positions)[0];\n const firstPosition = action.payload.positions[firstPositionId];\n\n positionsAdapter.updateOne(state, { id: firstPositionId, changes: { ...firstPosition, servedBy: undefined } });\n }\n },\n [loadPositionBySession.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [createClickAndCollectOrder.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n [getClickAndCollectOrders.fulfilled.type]: (state, action) => {\n if (action.payload.positions) {\n positionsAdapter.upsertMany(state, action.payload.positions);\n }\n },\n },\n});\n\nexport const { selectById: selectPositionById } = positionsAdapter.getSelectors();\n\nexport const selectClickAndCollectPositions = (state: AppState, queue: string) =>\n (state.positions.ids as string[]).reduce((acc, id: string) => {\n const position = state.positions.entities[id];\n if (\n position &&\n position.queue === queue &&\n (position.type === 'storePickup' || position.type === 'curbsidePickup')\n ) {\n acc.push(position);\n }\n return acc;\n }, [] as Position[]);\n\nconst positionsIdsSelector = (state: AppState) => state.positions.ids;\nconst positionsEntitiesSelector = (state: AppState) => state.positions.entities;\n\nconst positionsCombiner = (positionStatus: PositionStatus) => (ids: EntityId[], entities: Dictionary) => {\n const result = ids\n .reduce((accumulator, id) => {\n const position = entities[id];\n\n if (!position) return accumulator;\n\n return [...accumulator, position];\n }, [])\n .filter((position) => position.status === positionStatus);\n\n return result;\n};\n\nexport const selectPendingPositions = createSelector(\n positionsIdsSelector,\n positionsEntitiesSelector,\n positionsCombiner('pending'),\n);\n\nexport const selectFulfilledPositions = createSelector(\n positionsIdsSelector,\n positionsEntitiesSelector,\n positionsCombiner('fulfilled'),\n);\n\nexport const selectNotifiedPositions = createSelector(\n positionsIdsSelector,\n positionsEntitiesSelector,\n positionsCombiner('notified'),\n);\n\nexport const selectOrderPositions = createSelector(\n positionsIdsSelector,\n positionsEntitiesSelector,\n positionsCombiner('preorder'),\n);\n\nexport default positions.reducer;\n","import { createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport { Queue } from './types';\nimport { clearOccupancy, clearQueue, loadQueue, setQueueOpen, updateQueueSettings } from './api';\n\nconst queuesAdapter = createEntityAdapter();\n\nexport const queues = createSlice({\n name: 'queues',\n initialState: queuesAdapter.getInitialState(),\n reducers: {},\n extraReducers: {\n [loadQueue.fulfilled.type]: (state, action) => {\n if (action.payload.queues) {\n queuesAdapter.upsertMany(state, action.payload.queues);\n }\n },\n [updateQueueSettings.fulfilled.type]: (state, action) => {\n queuesAdapter.upsertMany(state, action.payload.queues);\n },\n [setQueueOpen.pending.type]: (state, action) => {\n queuesAdapter.updateOne(state, {\n id: action.meta.arg.queue,\n changes: {\n open: action.meta.arg.open,\n },\n });\n },\n [setQueueOpen.fulfilled.type]: (state, action) => {\n queuesAdapter.upsertMany(state, action.payload.queues);\n },\n [clearQueue.fulfilled.type]: (state, action) => {\n queuesAdapter.upsertMany(state, action.payload.queues);\n },\n [clearOccupancy.fulfilled.type]: (state, action) => {\n queuesAdapter.upsertMany(state, action.payload.queues);\n },\n },\n});\n\nexport const { selectById: selectQueueById } = queuesAdapter.getSelectors();\n\nexport default queues.reducer;\n","import { useLocalStorage } from '@rehooks/local-storage';\n\nconst useToken = () => useLocalStorage(`grid-queue-app-token`);\n\nexport default useToken;\n","import React, { ReactNode, useContext, useEffect, useState } from 'react';\nimport { getOnlineStatusSubscription } from '@ombori/grid-signals-react';\nimport useGridMobileInstallationResumedListener from './grid-mobile/use-grid-mobile-installation-resumed-listener';\n\nconst OnlineReactContext = React.createContext({\n isOnline: true,\n});\n\ninterface OnlineContextProviderProps {\n children?: ReactNode;\n}\n\nconst globalOnlineStatusSubscription = getOnlineStatusSubscription();\n\nexport const OnlineContextProvider = ({ children }: OnlineContextProviderProps) => {\n const [onlineContextValue, setOnlineContextValue] = useState({ isOnline: true });\n const { lastGridMobileResumedTimestamp } = useGridMobileInstallationResumedListener();\n\n useEffect(() => {\n globalOnlineStatusSubscription.start();\n\n return () => {\n globalOnlineStatusSubscription.stop();\n };\n }, [lastGridMobileResumedTimestamp]);\n\n useEffect(() => {\n const unsubscribe = globalOnlineStatusSubscription.subscribe((isOnline) => {\n setOnlineContextValue({ isOnline });\n });\n\n return () => {\n unsubscribe();\n };\n }, [setOnlineContextValue]);\n\n return {children};\n};\n\nexport const useOnlineContext = () => {\n return useContext(OnlineReactContext);\n};\n","import { createSlice, createSelector } from '@reduxjs/toolkit';\n// eslint-disable-next-line import/no-cycle\nimport { AppState } from '.';\nimport { loadUser, setUserAvailable, updateUserTags, updateUserCategories } from './api';\nimport { User } from './types';\n\ninterface IUserAdapter {\n user: User | undefined;\n}\n\nconst initialState: IUserAdapter = {\n user: undefined,\n};\n\nconst userSelector = (state: AppState) => ({ users: state.users });\nexport const selectUser: (state: AppState) => User | undefined = createSelector(userSelector, ({ users }) => {\n return users.user;\n});\n\nexport const users = createSlice({\n name: 'users',\n initialState,\n reducers: {},\n extraReducers: {\n [loadUser.fulfilled.type]: (state, action) => {\n if (action.payload.entities.users) {\n const userId = Object.keys(action.payload.entities.users)[0];\n // we need to think about returning state instead of updating it directly\n // eslint-disable-next-line no-param-reassign\n state.user = action.payload.entities.users[userId];\n }\n },\n [setUserAvailable.fulfilled.type]: (state, action) => {\n if (action.payload.entities.users) {\n const userId = Object.keys(action.payload.entities.users)[0];\n // eslint-disable-next-line no-param-reassign\n state.user = action.payload.entities.users[userId];\n }\n },\n [updateUserTags.fulfilled.type]: (state, action) => {\n if (action.payload.entities.users) {\n const userId = Object.keys(action.payload.entities.users)[0];\n // eslint-disable-next-line no-param-reassign\n state.user = action.payload.entities.users[userId];\n }\n },\n [updateUserCategories.fulfilled.type]: (state, action) => {\n if (action.payload.entities.users) {\n const userId = Object.keys(action.payload.entities.users)[0];\n // eslint-disable-next-line no-param-reassign\n state.user = action.payload.entities.users[userId];\n }\n },\n },\n});\n\nexport default users.reducer;\n","import { useEffect } from 'react';\n\nexport enum GridMobileEventType {\n InstallationResumed = 'omg_mobile__installationResumed',\n}\n\nconst useGridMobileEventListener = (eventType: GridMobileEventType, handler: (event: CustomEvent) => void) => {\n useEffect(() => {\n const eventHandler = handler as EventListener;\n window.addEventListener(eventType, eventHandler);\n\n return () => {\n window.removeEventListener(eventType, eventHandler);\n };\n }, [eventType, handler]);\n};\n\nexport default useGridMobileEventListener;\n","import { useState } from 'react';\nimport useGridMobileEventListener, { GridMobileEventType } from './use-grid-mobile-event-listener';\n\nconst useGridMobileInstallationResumedListener = (handler?: () => void) => {\n const [lastGridMobileResumedTimestamp, seLastGridMobileResumedTimestamp] = useState(0);\n\n useGridMobileEventListener(GridMobileEventType.InstallationResumed, () => {\n seLastGridMobileResumedTimestamp(Date.now());\n if (handler) {\n handler();\n }\n });\n\n return { lastGridMobileResumedTimestamp };\n};\n\nexport default useGridMobileInstallationResumedListener;\n","import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';\nimport { loadOccupancy, updateOccupancy } from './api';\nimport { Occupancy } from './types';\n\nconst occupanciesAdapter = createEntityAdapter();\n\nexport const occupancies = createSlice({\n name: 'occupancies',\n initialState: occupanciesAdapter.getInitialState(),\n reducers: {},\n extraReducers: {\n [loadOccupancy.fulfilled.type]: (state, action) => {\n if (action.payload.occupancies) {\n occupanciesAdapter.upsertMany(state, action.payload.occupancies);\n }\n },\n [updateOccupancy.fulfilled.type]: (state, action) => {\n if (action.payload.occupancies) {\n occupanciesAdapter.upsertMany(state, action.payload.occupancies);\n }\n },\n },\n});\n\nexport const { selectById: selectOccupancyById, selectAll: selectAllOccupancies } = occupanciesAdapter.getSelectors();\n\nexport default occupancies.reducer;\n","import { UseQueryResult, useQuery } from 'react-query';\nimport * as Sentry from '@sentry/browser';\nimport { useParams } from 'react-router-dom';\nimport { Organization } from '../store/types';\nimport { axios } from '../store/api';\n\nconst fetchOrganization = async (organizationName: string): Promise => {\n try {\n const response = await axios.get(`/organizations/${organizationName}`);\n\n return response.data;\n } catch (error) {\n Sentry.captureException(error);\n\n throw error;\n }\n};\n\nconst useOrganization = (): UseQueryResult => {\n const { organization: organizationName } = useParams<{ organization: string }>();\n\n return useQuery(['organization', organizationName], () => fetchOrganization(organizationName), {\n refetchOnWindowFocus: false,\n cacheTime: Infinity,\n });\n};\n\nexport default useOrganization;\n","import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';\nimport { Location } from './types';\nimport { loadLocations } from './api';\n\nconst locationsAdapter = createEntityAdapter();\n\nexport const locations = createSlice({\n name: 'locations',\n initialState: locationsAdapter.getInitialState(),\n reducers: {},\n extraReducers: {\n [loadLocations.fulfilled.type]: (state, action) => {\n if (action.payload.locations) {\n locationsAdapter.upsertMany(state, action.payload.locations);\n }\n },\n },\n});\n\nexport const { selectById: selectLocationById, selectAll: selectAllLocations } = locationsAdapter.getSelectors();\n\nexport default locations.reducer;\n","var map = {\n\t\"./af.js\": [\n\t\t304,\n\t\t42\n\t],\n\t\"./am.js\": [\n\t\t305,\n\t\t43\n\t],\n\t\"./ar-dz.js\": [\n\t\t306,\n\t\t44\n\t],\n\t\"./ar-iq.js\": [\n\t\t307,\n\t\t45\n\t],\n\t\"./ar-kw.js\": [\n\t\t308,\n\t\t46\n\t],\n\t\"./ar-ly.js\": [\n\t\t309,\n\t\t47\n\t],\n\t\"./ar-ma.js\": [\n\t\t310,\n\t\t48\n\t],\n\t\"./ar-sa.js\": [\n\t\t311,\n\t\t49\n\t],\n\t\"./ar-tn.js\": [\n\t\t312,\n\t\t50\n\t],\n\t\"./ar.js\": [\n\t\t175\n\t],\n\t\"./az.js\": [\n\t\t313,\n\t\t51\n\t],\n\t\"./be.js\": [\n\t\t314,\n\t\t52\n\t],\n\t\"./bg.js\": [\n\t\t315,\n\t\t53\n\t],\n\t\"./bi.js\": [\n\t\t316,\n\t\t54\n\t],\n\t\"./bm.js\": [\n\t\t317,\n\t\t55\n\t],\n\t\"./bn.js\": [\n\t\t318,\n\t\t56\n\t],\n\t\"./bo.js\": [\n\t\t319,\n\t\t57\n\t],\n\t\"./br.js\": [\n\t\t320,\n\t\t58\n\t],\n\t\"./bs.js\": [\n\t\t321,\n\t\t59\n\t],\n\t\"./ca.js\": [\n\t\t322,\n\t\t60\n\t],\n\t\"./cs.js\": [\n\t\t323,\n\t\t61\n\t],\n\t\"./cv.js\": [\n\t\t324,\n\t\t62\n\t],\n\t\"./cy.js\": [\n\t\t325,\n\t\t63\n\t],\n\t\"./da.js\": [\n\t\t326,\n\t\t64\n\t],\n\t\"./de-at.js\": [\n\t\t327,\n\t\t65\n\t],\n\t\"./de-ch.js\": [\n\t\t328,\n\t\t66\n\t],\n\t\"./de.js\": [\n\t\t329,\n\t\t67\n\t],\n\t\"./dv.js\": [\n\t\t330,\n\t\t68\n\t],\n\t\"./el.js\": [\n\t\t331,\n\t\t69\n\t],\n\t\"./en-au.js\": [\n\t\t332,\n\t\t70\n\t],\n\t\"./en-ca.js\": [\n\t\t333,\n\t\t71\n\t],\n\t\"./en-gb.js\": [\n\t\t334,\n\t\t72\n\t],\n\t\"./en-ie.js\": [\n\t\t335,\n\t\t73\n\t],\n\t\"./en-il.js\": [\n\t\t336,\n\t\t74\n\t],\n\t\"./en-in.js\": [\n\t\t337,\n\t\t75\n\t],\n\t\"./en-nz.js\": [\n\t\t338,\n\t\t76\n\t],\n\t\"./en-sg.js\": [\n\t\t339,\n\t\t77\n\t],\n\t\"./en-tt.js\": [\n\t\t340,\n\t\t78\n\t],\n\t\"./en.js\": [\n\t\t341,\n\t\t79\n\t],\n\t\"./eo.js\": [\n\t\t342,\n\t\t80\n\t],\n\t\"./es-do.js\": [\n\t\t343,\n\t\t81\n\t],\n\t\"./es-mx.js\": [\n\t\t344,\n\t\t82\n\t],\n\t\"./es-pr.js\": [\n\t\t345,\n\t\t83\n\t],\n\t\"./es-us.js\": [\n\t\t346,\n\t\t84\n\t],\n\t\"./es.js\": [\n\t\t347,\n\t\t85\n\t],\n\t\"./et.js\": [\n\t\t348,\n\t\t86\n\t],\n\t\"./eu.js\": [\n\t\t349,\n\t\t87\n\t],\n\t\"./fa.js\": [\n\t\t350,\n\t\t88\n\t],\n\t\"./fi.js\": [\n\t\t351,\n\t\t89\n\t],\n\t\"./fo.js\": [\n\t\t352,\n\t\t90\n\t],\n\t\"./fr-ca.js\": [\n\t\t353,\n\t\t91\n\t],\n\t\"./fr-ch.js\": [\n\t\t354,\n\t\t92\n\t],\n\t\"./fr.js\": [\n\t\t355,\n\t\t93\n\t],\n\t\"./fy.js\": [\n\t\t356,\n\t\t94\n\t],\n\t\"./ga.js\": [\n\t\t357,\n\t\t95\n\t],\n\t\"./gd.js\": [\n\t\t358,\n\t\t96\n\t],\n\t\"./gl.js\": [\n\t\t359,\n\t\t97\n\t],\n\t\"./gom-latn.js\": [\n\t\t360,\n\t\t98\n\t],\n\t\"./gu.js\": [\n\t\t361,\n\t\t99\n\t],\n\t\"./he.js\": [\n\t\t362,\n\t\t100\n\t],\n\t\"./hi.js\": [\n\t\t363,\n\t\t101\n\t],\n\t\"./hr.js\": [\n\t\t364,\n\t\t102\n\t],\n\t\"./ht.js\": [\n\t\t365,\n\t\t103\n\t],\n\t\"./hu.js\": [\n\t\t366,\n\t\t104\n\t],\n\t\"./hy-am.js\": [\n\t\t367,\n\t\t105\n\t],\n\t\"./id.js\": [\n\t\t368,\n\t\t106\n\t],\n\t\"./is.js\": [\n\t\t369,\n\t\t107\n\t],\n\t\"./it-ch.js\": [\n\t\t370,\n\t\t108\n\t],\n\t\"./it.js\": [\n\t\t371,\n\t\t109\n\t],\n\t\"./ja.js\": [\n\t\t372,\n\t\t110\n\t],\n\t\"./jv.js\": [\n\t\t373,\n\t\t111\n\t],\n\t\"./ka.js\": [\n\t\t374,\n\t\t112\n\t],\n\t\"./kk.js\": [\n\t\t375,\n\t\t113\n\t],\n\t\"./km.js\": [\n\t\t376,\n\t\t114\n\t],\n\t\"./kn.js\": [\n\t\t377,\n\t\t115\n\t],\n\t\"./ko.js\": [\n\t\t378,\n\t\t116\n\t],\n\t\"./ku.js\": [\n\t\t379,\n\t\t117\n\t],\n\t\"./ky.js\": [\n\t\t380,\n\t\t118\n\t],\n\t\"./lb.js\": [\n\t\t381,\n\t\t119\n\t],\n\t\"./lo.js\": [\n\t\t382,\n\t\t120\n\t],\n\t\"./lt.js\": [\n\t\t383,\n\t\t121\n\t],\n\t\"./lv.js\": [\n\t\t384,\n\t\t122\n\t],\n\t\"./me.js\": [\n\t\t385,\n\t\t123\n\t],\n\t\"./mi.js\": [\n\t\t386,\n\t\t124\n\t],\n\t\"./mk.js\": [\n\t\t387,\n\t\t125\n\t],\n\t\"./ml.js\": [\n\t\t388,\n\t\t126\n\t],\n\t\"./mn.js\": [\n\t\t389,\n\t\t127\n\t],\n\t\"./mr.js\": [\n\t\t390,\n\t\t128\n\t],\n\t\"./ms-my.js\": [\n\t\t391,\n\t\t129\n\t],\n\t\"./ms.js\": [\n\t\t392,\n\t\t130\n\t],\n\t\"./mt.js\": [\n\t\t393,\n\t\t131\n\t],\n\t\"./my.js\": [\n\t\t394,\n\t\t132\n\t],\n\t\"./nb.js\": [\n\t\t395,\n\t\t133\n\t],\n\t\"./ne.js\": [\n\t\t396,\n\t\t134\n\t],\n\t\"./nl-be.js\": [\n\t\t397,\n\t\t135\n\t],\n\t\"./nl.js\": [\n\t\t398,\n\t\t136\n\t],\n\t\"./nn.js\": [\n\t\t399,\n\t\t137\n\t],\n\t\"./oc-lnc.js\": [\n\t\t400,\n\t\t138\n\t],\n\t\"./pa-in.js\": [\n\t\t401,\n\t\t139\n\t],\n\t\"./pl.js\": [\n\t\t402,\n\t\t140\n\t],\n\t\"./pt-br.js\": [\n\t\t403,\n\t\t141\n\t],\n\t\"./pt.js\": [\n\t\t404,\n\t\t142\n\t],\n\t\"./ro.js\": [\n\t\t405,\n\t\t143\n\t],\n\t\"./ru.js\": [\n\t\t406,\n\t\t144\n\t],\n\t\"./rw.js\": [\n\t\t407,\n\t\t145\n\t],\n\t\"./sd.js\": [\n\t\t408,\n\t\t146\n\t],\n\t\"./se.js\": [\n\t\t409,\n\t\t147\n\t],\n\t\"./si.js\": [\n\t\t410,\n\t\t148\n\t],\n\t\"./sk.js\": [\n\t\t411,\n\t\t149\n\t],\n\t\"./sl.js\": [\n\t\t412,\n\t\t150\n\t],\n\t\"./sq.js\": [\n\t\t413,\n\t\t151\n\t],\n\t\"./sr-cyrl.js\": [\n\t\t414,\n\t\t152\n\t],\n\t\"./sr.js\": [\n\t\t415,\n\t\t153\n\t],\n\t\"./ss.js\": [\n\t\t416,\n\t\t154\n\t],\n\t\"./sv-fi.js\": [\n\t\t417,\n\t\t155\n\t],\n\t\"./sv.js\": [\n\t\t418,\n\t\t156\n\t],\n\t\"./sw.js\": [\n\t\t419,\n\t\t157\n\t],\n\t\"./ta.js\": [\n\t\t420,\n\t\t158\n\t],\n\t\"./te.js\": [\n\t\t421,\n\t\t159\n\t],\n\t\"./tet.js\": [\n\t\t422,\n\t\t160\n\t],\n\t\"./tg.js\": [\n\t\t423,\n\t\t161\n\t],\n\t\"./th.js\": [\n\t\t424,\n\t\t162\n\t],\n\t\"./tk.js\": [\n\t\t425,\n\t\t163\n\t],\n\t\"./tl-ph.js\": [\n\t\t426,\n\t\t164\n\t],\n\t\"./tlh.js\": [\n\t\t427,\n\t\t165\n\t],\n\t\"./tr.js\": [\n\t\t428,\n\t\t166\n\t],\n\t\"./tzl.js\": [\n\t\t429,\n\t\t167\n\t],\n\t\"./tzm-latn.js\": [\n\t\t430,\n\t\t168\n\t],\n\t\"./tzm.js\": [\n\t\t431,\n\t\t169\n\t],\n\t\"./ug-cn.js\": [\n\t\t432,\n\t\t170\n\t],\n\t\"./uk.js\": [\n\t\t433,\n\t\t171\n\t],\n\t\"./ur.js\": [\n\t\t434,\n\t\t172\n\t],\n\t\"./uz-latn.js\": [\n\t\t435,\n\t\t173\n\t],\n\t\"./uz.js\": [\n\t\t436,\n\t\t174\n\t],\n\t\"./vi.js\": [\n\t\t437,\n\t\t175\n\t],\n\t\"./x-pseudo.js\": [\n\t\t438,\n\t\t176\n\t],\n\t\"./yo.js\": [\n\t\t439,\n\t\t177\n\t],\n\t\"./zh-cn.js\": [\n\t\t440,\n\t\t178\n\t],\n\t\"./zh-hk.js\": [\n\t\t441,\n\t\t179\n\t],\n\t\"./zh-tw.js\": [\n\t\t442,\n\t\t180\n\t],\n\t\"./zh.js\": [\n\t\t443,\n\t\t181\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 263;\nmodule.exports = webpackAsyncContext;","import * as firebase from 'firebase/app';\nimport 'firebase/messaging';\nimport * as Sentry from '@sentry/browser';\n\nconst initFirebase = () => {\n try {\n firebase.initializeApp({\n apiKey: 'AIzaSyCIfIpnWStH2bajR7eTToxyCaPPbdgyR1Q',\n projectId: 'ombori-queue-service',\n messagingSenderId: '901992047000',\n appId: '1:901992047000:web:0cdfe022113c6a0a25cbed',\n });\n\n if (firebase.messaging.isSupported()) {\n const messaging = firebase.messaging();\n messaging.usePublicVapidKey(\n 'BEjvOb9R-vL4XR3sF4Iji6at2nTGYmTpi4GXWYIhoXEllGn-qp1vH-rTyx5UtUPY7-dN5hrvJ6DCN4Sy7w7qcXs',\n );\n\n // handle foreground notifications\n messaging.onMessage((payload) => {\n navigator.serviceWorker.getRegistration('/firebase-cloud-messaging-push-scope').then((registration) => {\n if (registration) {\n registration.showNotification(payload.notification.title, payload.notification);\n }\n });\n });\n }\n } catch (err) {\n Sentry.captureException(err);\n }\n};\n\nexport default initFirebase;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport Backend from 'i18next-xhr-backend';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nconst initI18n = async (supportedLocales: string[]) => {\n await i18n\n // https://github.com/i18next/i18next-xhr-backend\n .use(Backend)\n // https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n .use(initReactI18next)\n // https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: 'en',\n debug: process.env.NODE_ENV === 'development',\n supportedLngs: supportedLocales,\n load: 'languageOnly',\n interpolation: { escapeValue: false }, // not needed for react as it escapes by default\n backend: {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n },\n detection: {\n order: ['querystring', 'navigator'],\n caches: [],\n },\n react: {\n useSuspense: false,\n },\n });\n return i18n;\n};\n\nexport default initI18n;\n","import { useEffect } from 'react';\nimport dayjs from 'dayjs';\n\nconst loadLocale = (lng: string) => import(`dayjs/locale/${lng}.js`);\n\nconst useDayjsLocale = (language: string): void => {\n useEffect(() => {\n const lng = language.substring(0, 2);\n\n loadLocale(lng).then(() => {\n dayjs.locale(lng);\n });\n }, [language]);\n};\n\nexport default useDayjsLocale;\n","import createCache, { EmotionCache } from '@emotion/cache';\nimport { useMemo } from 'react';\n// @ts-ignore\nimport stylisRtl from 'stylis-rtl';\n\nconst useEmotionCache = (dir: string): EmotionCache => {\n const emotionCache = useMemo(() => {\n return createCache({ stylisPlugins: dir === 'rtl' ? [stylisRtl] : [] });\n }, [dir]);\n\n return emotionCache;\n};\n\nexport default useEmotionCache;\n","import { createMuiTheme, Theme } from '@material-ui/core/styles';\nimport { useMemo } from 'react';\n\nconst useMuiTheme = (dir: 'rtl' | 'ltr'): Theme => {\n const theme = useMemo(() => {\n return createMuiTheme({\n direction: dir,\n });\n }, [dir]);\n\n return theme;\n};\n\nexport default useMuiTheme;\n","import React, { lazy, useCallback, useEffect, useState } from 'react';\nimport { Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { i18n } from 'i18next';\nimport 'dayjs/locale/ar';\nimport { CacheProvider } from '@emotion/core';\nimport { Helmet } from 'react-helmet';\nimport styled from '@emotion/styled';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport initI18n from '../../i18n';\nimport { Organization as OrganizationType } from '../../store/types';\nimport useOrganization from '../../common/use-organization';\nimport useDayjsLocale from './useDayjsLocale';\nimport useEmotionCache from './useEmotionCache';\nimport useMuiTheme from './useMuiTheme';\n\nconst Queue = lazy(() => import('../routes/route-queue'));\nconst QueueList = lazy(() => import('../queue-list'));\nconst LocationSelection = lazy(() => import('../location-selection'));\nconst DigitalCall = lazy(() => import('../routes/route-digital-call'));\n\ninterface OrganizationProps {\n organization: OrganizationType;\n}\n\nconst defaultSupportedLocales = ['en', 'sv'];\n\nconst Organization: React.FC = ({ organization }) => {\n const [i18nInt, setI18n] = useState(null);\n const { path }: { path: string } = useRouteMatch();\n\n const organizationSupportedLocales = organization.supportedLocales;\n\n const initLocales = useCallback(async () => {\n if (i18nInt) return;\n\n const supportedLocales = organizationSupportedLocales ?? defaultSupportedLocales;\n\n const i18nGlobalInstance = await initI18n(supportedLocales);\n\n setI18n(i18nGlobalInstance);\n }, [i18nInt, organizationSupportedLocales]);\n\n useEffect(() => {\n initLocales();\n }, [initLocales]);\n\n const language = i18nInt?.language ?? 'en';\n\n const dir = i18nInt?.dir() ?? 'ltr';\n\n const emotionCache = useEmotionCache(dir);\n\n const theme = useMuiTheme(dir);\n\n useDayjsLocale(language);\n\n if (!i18nInt) {\n return null;\n }\n\n return (\n \n \n \n \n {organization?.siteTitle && {organization.siteTitle}}\n {organization?.favicon && }\n \n \n \n } />\n \n \n \n \n \n );\n};\n\nconst Title = styled.h1`\n font-weight: bold;\n font-size: 24px;\n text-align: center;\n padding: 16px;\n color: #fff;\n background-color: #000;\n`;\n\nconst ErrorTitle = styled(Title)`\n color: #e74c3c;\n`;\n\nconst OrganizationContainer: React.FC = () => {\n const organization = useOrganization();\n\n return (\n <>\n {organization.isLoading && Loading organization}\n\n {organization.isSuccess && }\n\n {organization.isError && (\n An error occurred while loading the organization. Please, try again.\n )}\n \n );\n};\n\nexport default OrganizationContainer;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport useToken from '../common/use-token';\nimport manager from '../common/auth-manager';\n\nexport default function AuthCallback() {\n const history = useHistory();\n const [, setToken] = useToken();\n\n useEffect(() => {\n manager.signinRedirectCallback().then((user) => {\n const { queue, organization, from } = user.state;\n setToken(user.id_token);\n history.push(from || `/${organization}/queues/${queue}/admin`);\n });\n }, [setToken, history]);\n\n return <>;\n}\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport manager from '../common/auth-manager';\n\nexport default function LogoutCallback() {\n const history = useHistory();\n\n useEffect(() => {\n manager.signoutRedirectCallback().then((response) => {\n const { queue, organization, from } = response.state;\n\n history.push(from || `/${organization}/queues/${queue}/admin`);\n });\n }, [history]);\n\n return <>;\n}\n","import React, { Suspense } from 'react';\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\nimport initFirebase from './init-firebase';\nimport Organization from './containers/organization';\nimport AuthCallback from './containers/auth-callback';\nimport LogoutCallback from './containers/logout-callback';\n\ninitFirebase();\n\nexport default function App() {\n return (\n \n }>\n \n \n \n \n \n \n \n );\n}\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.0/8 are 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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: 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: string, config?: 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: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\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\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n/* eslint-enable */\n","/* eslint-disable */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Global, css } from '@emotion/core';\nimport minireset from 'emotion-minireset';\nimport { Provider } from 'react-redux';\nimport * as Sentry from '@sentry/browser';\nimport { create } from 'jss';\nimport rtl from 'jss-rtl';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { StylesProvider, jssPreset } from '@material-ui/core/styles';\nimport store from './store';\nimport App from './app';\nimport * as serviceWorker from './service-worker';\nimport { OnlineContextProvider } from './common/online-context';\n\nconst queryClient = new QueryClient();\n\nSentry.init({\n dsn: 'https://e252275369794c93a1a0034492059f1a@o190418.ingest.sentry.io/5220336',\n enabled: process.env.NODE_ENV === 'production',\n});\n\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\n\n/**\n * There's no way that we can override the material styles without using\n * Material UI Theme Provider.\n */\nconst __BEWARE_FORCE_OVERRIDE_MATERIAL_STYLES = `\n .MuiPickersToolbar-toolbar, .MuiPickersClock-pin, .MuiPickersClockPointer-pointer, .MuiPickersClockNumber-clockNumberSelected, .MuiPickersDay-daySelected {\n background-color: #2c9918 !important;\n }\n\n .MuiPickersClockPointer-thumb {\n background-color: #2c9918 !important;\n border: 14px solid #2c9918 !important;\n }\n\n .MuiButton-textPrimary, .MuiPickersDay-current, .MuiTypography-colorPrimary, .MuiPickersYear-root:focus {\n color: #2c9918 !important;\n }\n\n .MuiPickersDay-daySelected {\n color: #ffffff !important;\n }\n`;\n\nconst globalStyles = [\n minireset,\n css`\n html {\n background: #000;\n color: #000;\n user-select: none;\n }\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\n 'Droid Sans', 'Helvetica Neue', sans-serif;\n font-size: 20px;\n }\n code {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n }\n\n .force-ltr {\n html[dir='rtl'] & {\n direction: ltr;\n text-align: right;\n }\n }\n\n .PhoneInputInput {\n html[dir='rtl'] & {\n direction: ltr;\n text-align: right;\n }\n }\n\n .PhoneInputCountrySelectArrow {\n html[dir='rtl'] & {\n margin-right: 8px;\n }\n }\n\n ${__BEWARE_FORCE_OVERRIDE_MATERIAL_STYLES}\n `,\n];\n\nReactDOM.render(\n \n \n \n \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/* eslint-enable */\n","import { configureStore, combineReducers, getDefaultMiddleware, EntityAdapter } from '@reduxjs/toolkit';\nimport { createLogger } from 'redux-logger';\nimport debug from 'debug';\nimport {\n useDispatch as useReduxDispatch,\n useSelector as useReduxSelector,\n useStore as useReduxStore,\n} from 'react-redux';\n/* eslint-disable import/no-cycle */\nimport queuesReducer from './queues-slice';\nimport positionsReducer from './positions-slice';\nimport locationsReducer from './locations-slice';\nimport occupanciesReducer from './occupancies-slice';\nimport usersReducer from './users-slice';\n/* eslint-enable import/no-cycle */\n\nconst rootReducer = combineReducers({\n queues: queuesReducer,\n positions: positionsReducer,\n locations: locationsReducer,\n occupancies: occupanciesReducer,\n users: usersReducer,\n});\n\nexport const middleware = getDefaultMiddleware();\n\nif (process.env.NODE_ENV === 'development') {\n const log = debug('redux');\n\n const logger = createLogger({ logger: { log } });\n\n middleware.push(logger);\n}\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware,\n});\n\nexport type AppState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\n\nexport const useDispatch = (...args: Parameters) => useReduxDispatch(...args);\nexport const useSelector = (...args: Parameters) => useReduxSelector(...args);\nexport const useStore = (...args: Parameters) => useReduxStore(...args);\n\nexport function setOne(adapter: EntityAdapter, state: any, item: T, key: string) {\n adapter.removeOne(state, key);\n adapter.addOne(state, item);\n return adapter;\n}\n\nexport default store;\n"],"sourceRoot":""}