{"version":3,"sources":["Images/sv-SE.svg","Images/en-US.svg","Context/index.js","Context/initialState.js","Actions/cookiesActions.js","Actions/stateActions.js","Context/userManagerContext.js","Common/busySpinner.js","Common/UIComponents.js","AppCommon/util.js","Common/login.js","Common/Header/icons/Icons.jsx","Common/Header/Profile.jsx","Common/Header/index.js","Images/CoursesIcon.jsx","Common/menu.js","Bookings/topActions.js","Common/activityColor.js","Bookings/status.js","Bookings/booking.js","Common/util.js","Bookings/paymentCountdown.js","Bookings/util.js","Bookings/bookingsList.js","Bookings/payment.js","Bookings/index.js","History/index.js","occasion/bookButton.js","Common/progress.js","Common/sideInfo.js","Context/ModalContext.js","occasion/index.js","Filter/util.js","WeekView/occationsList.js","WeekView/util.js","WeekView/selector.js","Common/cardSection.js","Filter/index.js","Common/refetch.js","WeekView/index.js","Courses/util.js","Courses/coursesFilter.js","Courses/course.js","Courses/coursesList.js","Courses/index.js","Common/default.js","Home/upcoming.js","Home/upcomingCourses.js","Home/suggestions.js","Home/views.js","Home/index.js","Common/requireAuth.js","Common/callback.js","Common/silentRenew.js","Common/manages.js","occasion/ParticipantForm/validate.js","Common/textInput.js","occasion/ParticipantForm/form.js","occasion/ParticipantForm/util.js","occasion/ParticipantForm/index.js","occasion/bookingModal.js","Common/toast.js","Common/settings.js","Actions/actionTypes.js","Common/theme.js","Common/bottomNav.js","Common/unpaid.js","Common/SetBackUrl.js","Bookings/NewBookingModal.jsx","routes.js","busyContainer.js","app.js","Actions/languageActions.js","Reducers/busyReducer.js","Reducers/initialState.js","Reducers/cookiesReducer.js","Reducers/configReducer.js","Reducers/languageReducer.js","Middlewares/cookiesMiddleware.js","Middlewares/httpMiddleware.js","Middlewares/promiseMiddleware.js","Middlewares/thunkMiddleware.js","infrastructure.js","AppCommon/auth.js","index.js"],"names":["module","exports","source","initialState","bookingModal","open","bookingData","bookingsOpen","courseFilter","tags","locations","startDates","showOnlyBookable","occasionFilter","activities","weekdays","landingText","footerText","headerText","termsText","fetchText","menuOpen","window","innerWidth","paymentLoading","redirect","settingsOpen","toastOpen","toastText","toastType","setCookie","key","value","type","setActivePersonId","id","dispatch","AppContext","React","createContext","OPEN_TOAST","reducer","state","action","payload","courseType","courseValue","courseChecked","checked","newCourseFilter","newCourseSubFilter","filter","f","newOccasionFilter","HandleStoredFilters","newSubFilter","Error","actionPayload","activeFilters","JSON","parse","localStorage","getItem","setItem","stringify","includes","AppContextProvider","props","useReducer","rdxState","useSelector","activePerson","getState","rdxDispatch","useDispatch","culture","cookies","useEffect","CancelToken","axios","all","get","cancelToken","token","then","spread","data","catch","error","isCancel","console","log","cancel","Provider","children","UserManagerContext","UserManagerProvider","userManager","BusySpinner","size","color","className","style","backgroundColor","height","width","SpinnerContainer","styled","div","BusyContainer","BusyText","h3","Busy","text","moment","locale","relativeTimeThreshold","duration","fn","format","input","output","milliseconds","this","asMilliseconds","totalMilliseconds","replaceRegexps","years","months","weeks","days","hours","minutes","seconds","matchRegexps","r","test","as","charAt","toUpperCase","slice","Math","floor","replacements","match","length","replace","temp","parseInt","handleError","err","today","compactTime","date","language","isSame","td","tomorrow","add","nextWeek","isBefore","useStyles","makeStyles","theme","login","alignItems","display","padding","button","app","labelColor","marginRight","Login","classes","useState","busy","setBusy","useContext","auth","oidc","user","expired","URLSearchParams","location","search","clearStaleState","signinRedirect","Button","onClick","classNames","aria-label","SettingsIcon","xmlns","viewBox","strokeWidth","stroke","fill","strokeLinecap","strokeLinejoin","aria-hidden","d","cx","cy","LogoutIcon","BookingIcon","x","y","rx","x1","y1","x2","y2","AccountIcon","createStyles","settingWrapper","paddingRight","borderRadius","boxShadow","colors","violet","opacity","dropdownWrapper","item","mainSection","paddingBottom","spacing","sm","userActive","darkMode","borderColor","dark","darkestMode","Profile","whoami","userMenuOpened","setUserMenuOpened","showLogoutDialog","setShowLogoutDialog","config","history","useHistory","name","image","photo","membersLink","api","split","position","transition","onClose","onOpen","shadow","Target","UnstyledButton","account_menu","Avatar","src","alt","profilePicture","role","Dropdown","dropdown","Item","icon","push","my_bookings","href","my_account","settings","Divider","logout","Modal","opened","centered","styles","header","margin","radius","zIndex","modal","closeButtonLabel","closeMenus","SimpleGrid","Title","align","order","fontSize","cols","Text","logoutMsg","variant","abort","signoutRedirect","appBar","background","borderBottom","drawer","transitions","create","easing","sharp","leavingScreen","appBarShift","marginLeft","enteringScreen","toolbar","minHeight","menuButton","hide","buttonIcon","nav","flexGrow","unpaid","dangerColor","paid","infoColor","short","easeInOut","palette","hover","logoContainer","logoImg","Header","context","AppBar","SkipToMainContent","Toolbar","disableGutters","IconButton","toggleMenu","backToHomepage","logo","wrapper","inactiveColor","activeColor","primary","main","CoursesIcon","active","strokeMiterlimit","transform","drawerOpen","overflowX","drawerClose","breakpoints","up","justifyContent","mixins","chevron","whiteSpace","pointerEvents","inactive","activeBorder","left","borderLeft","coursesIcon","withRouter","mybookings","handleNavigate","confirmed","b","isConfirmed","anyUnpaid","some","isPaid","Drawer","paper","List","pathname","ListItem","component","Link","to","home","undefined","ListItemIcon","ListItemText","courses","startsWith","week_schedule","Badge","badgeContent","badge","topActions","group","flexDirection","labelText","TopActions","anyConfirmed","anyQueued","anyCancelled","selected","setSelected","bookings","RadioGroup","onChange","e","target","FormControlLabel","label","control","Radio","disabled","queued","cancelled","p","colorInner","top","border","ActivityColor","getStatus","booking","isQueue","isCancelled","status","successColor","warningColor","getColor","textTransform","marginTop","fontWeight","Status","bookingStatus","Typography","confirmedAt","cancelledAt","getTime","iconDisabledColor","gridTemplateColumns","gridGap","marginBottom","content","contentText","titleText","lineHeight","bookingId","heading","subheading","info","infoItem","infoIcon","infoText","actionContainer","cancelButton","cancelDialog","minWidth","closeButton","noPadding","CANCEL_BOOKING","gql","Booking","cancelOpen","setCancelOpen","activity","occasion","remainingPaymentInclVat","substring","toLowerCase","at","lastPaymentTime","useMutation","variables","onError","errorMsg","onCompleted","cancelReservation","failed","errorMessage","refetchQueries","query","MY_BOOKINGS","cancelBooking","loading","queueSlot","maxQueueSlots","bookingInfo","participants","responsible","map","i","is_paid","payAt","canCancel","close","inner","title","DialogContent","DialogContentText","cancel_booking_text","DialogActions","getDuration","occasionDuration","activeLocale","humanizeUnit","unit","humanize","_data","defaultFormatting","humanizedHours","humanizedMinutes","splitHumanizedHours","customHour","and","PaymentCountdown","next","isModal","isNotification","time","setTime","interval","setInterval","clearInterval","localDiff","diff","weight","sx","gray","hasToPay","Group","uriWithCulture","uri","url","URL","params","set","origin","toString","PAY_BOOKING","bookingsList","overflow","overflowY","list","listStyle","paddingLeft","BookingsList","checkoutEnabled","initiatePayment","payableBookings","nextPayment","_","chain","sort","min","Container","my","red","Grid","justify","maxWidth","varianti","pay","payment","dialog","terms","maxHeight","secondaryColor","cbContainer","borderTop","cbLabel","abortButton","Payment","handleClose","setConfirmed","Dialog","fullScreen","DialogTitle","pay_bookings","contentContainer","escapeHtml","skipHtml","labelPlacement","Checkbox","accept_terms","actions","bottom","Bookings","paymentOpen","setPaymentOpen","confirmedBookings","cancelledBookings","filterCancelledBookings","el","queuedBookings","History","useQuery","BookButton","book","manages","canBook","canReserve","reserve","canEnqueue","enqueue","isOccasion","__typename","reason","outlined","progressContainer","noBookingsStroke","successStroke","warningStroke","dangerStroke","circularProgressContainer","progress","progressTrailColor","progressTrail","progressValue","progressText","progressTextFull","Progress","booked","notEmpty","notFull","CircularProgress","spotsBooked","circle","getStroke","tabText","mainHeaderText","subHeaderText","tagsContainer","flexWrap","tab","tag","tabContent","shortest","hoverBackground","TabContainer","SideInfo","setValue","orderedOccasions","occasions","a","Date","anchor","CloseButton","closeActivityMenu","t","Chip","Tabs","event","indicatorColor","Tab","o","divider","secondary","ModalContext","listItem","infoContainer","resource","fontStyle","actionButton","actionButtonText","BOOK_OCCASION","Occasion","memo","setOpen","setOpenModal","openModal","activePersonId","participantId","reserveOccasion","price","inclVat","bookingSucceed","ToastType","bookOccasion","round","maxParticipants","freeSlots","resourceAssignments","blocked","infoAboutActivity","occasion_time","showInfo","getTags","forEach","getWeekdays","weekday","getActivities","getLocations","getFilteredOccasions","groupedOccasions","w","grouped","groupOccasions","included","container","paddingTop","filterContainer","gap","noBookable","textAlign","noBookableButtonContainer","buttonText","chip","OccasionsList","week","isFiltersReapplied","setIsFiltersReapplied","filteredOccasions","filterChips","filters","filterTypes","Object","keys","getAllFilters","removeFilter","setFilter","useCallback","locationName","activityName","weekDay","tagName","reapplyActiveFilters","onDelete","occ","showTooltip","index","nothing_bookable","thisWeek","nextYear","next_week","holidays","getDays","occasionDates","dates","thisYear","getDay","day","year","isoWeek","isoWeekday","hour","minute","second","toISOString","getDate","hasOccasions","isHoliday","isToday","selector","weekYearContainer","selectorContainer","dayContainer","justifyItems","primaryColors","itemButton","holiday","arrowButton","outline","Selector","anyPrevious","shortWeek","ButtonBase","prevYear","prevWeek","previous_week","addToFilter","toFilter","secondaryHeading","verticalAlign","column","flexBasis","details","right","badgeWarning","CardSection","expanded","toggleExpanded","defaultExpanded","badgeVisible","ExpansionPanel","ExpansionPanelSummary","expandIcon","ExpansionPanelDetails","weekViewFilter","cursor","checkbox","Filter","activePanel","setActivePanel","togglePanel","panel","isAfter","getFilterData","Refetch","isAuth","notAuth","refetch","cb","weekView","drawerPaper","filterButtonContainer","filterButtonContainerSmall","filterButton","GET_WEEK","WeekView","filterOpen","setFilterOpen","locationData","setLocationData","openFilter","closeFilter","pollInterval","pathName","isPathMatchingParams","message","Number","yearWeek","now","currentOccasions","firstOccasion","locationById","locationNameById","locationId","open_filter","getFilteredCourses","bookable","c","course","groupedCourses","l","groupCourses","small","CoursesFilter","setCourseFilter","returnTags","getTagsFromCourses","returnLocations","getLocationsFromCourses","returnWeeks","Set","getWeeksFromCourses","showBookableOnly","startDate","getWeek","startOf","endOf","BOOK_COURSE","Course","reserveActivity","totalBooked","lastOccasion","infoAboutCourse","courseList","CoursesList","filteredCourses","typeFilter","removeCourseFilter","courseGroupContainer","g","Courses","firstCourse","Upcoming","upcoming","upcomingOccasions","listWrapper","UpcomingCourses","upcomingCourses","suggestions","Suggestions","buttonWrapper","Default","setText","registerLink","response","register","viewContainer","tabs","radioButton","buttonTextBig","buttonTextSmall","RESERVE_OCCASION","Views","anySuggestions","anyUpcoming","anyCourses","setTab","handleSetValue","handleBook","showUpcomingRadiobuttons","v","textColor","tabUpcoming","tabSuggestions","root","radio_courses","radio_occasions","Home","setTimeout","RequireAuth","successCallback","errorCallback","processSilentRenew","textWrapper","listItemInactive","select","Managing","handleSelect","isNew","setIsNew","users","setUsers","managingItems","m","isBookable","persons","primaryText","alreadyBooked","secondaryText","civicRegistrationNumber","getListItems","reduce","acc","curr","Stack","Box","ml","otherParticipant","otherParticipantSubtext","htmlFor","choosePerson","SegmentedControl","orientation","fullWidth","mt","validate","values","requiredFields","errors","firstName","form","FirstName_Required","Invalid_Length","lastName","LastName_Required","CivicRegistration_Required","trim","CivicRegistration_Invalid","formcontrol","TextInput","field","touched","placeholder","max","required","autoFocus","inputProps","multiline","autoComplete","FormControl","InputLabel","shrink","Input","FormHelperText","row","ResponsibleForm","fieldInfo","registerParticipant","visibleFields","FirstName_Label","FirstName_Placeholder","LastName_Label","LastName_Placeholder","getVisible","CivicRegistration_Label","CivicRegistration_Placeholder","getRequired","inititial","Form","handleSubmit","initialValues","participantIsForRegistration","onSubmit","render","isValid","submitForm","BOOK_COURSE_NEW","modalWrapper","BookingModal","closeBookingsModal","handleMutationError","handleMutationSuccess","AlreadyExists","bookCourseNew","bookCourse","loadBooking","find","when","selectCustomer","setActive","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","InfoIcon","iconVariant","MySnackbarContent","other","Icon","SnackbarContent","aria-describedby","Toast","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","settingsTitle","contentSection","contentHeading","flag","formLabel","Settings","closeDialog","closeMenu","FormLabel","changeLanguage","fetch","process","json","setCulture","sv","swedishFlag","swedish","en","englishFlag","lang","english","changeTheme","setTheme","themeLight","themeDark","themeDarkest","green","blue","darkTheme","themeType","light","secondaryColors","calendarSelectColor","iconColor","iconHoverColor","linkColor","dangerHoverColor","tooltipBackground","tooltipColor","tooltipSecondary","scrollbar","darkestTheme","lightTheme","tabColor","getTheme","getThemeVariation","BottomNavigation","newValue","showLabels","BottomNavigationAction","tooltip","isOpen","Notification","finishBooking","closeButtonProps","closeAlertDialog","youHave","unpaidBooking","unpaidBookings","showMyBookings","toPayment","SetBackUrl","useLocation","NewBookingModal","setOpened","useDidUpdate","payNowOrSeeBookings","workspaceContainer","footer","alignSelf","myTheme","createTheme","default","Workspace","mobile","useMediaQuery","path","exactly","Content","Routes","innerHeight","prevHeight","setPrevHeight","selectedTheme","addEventListener","document","documentElement","sideTitle","ThemeProvider","basename","SilentRenew","isBusy","isWrite","App","store","client","busyReducer","isError","readyState","$isWrite","cookiesReducer","Cookies","InitialState","samesite","defaultTheme","erase","getInitialState","assign","configReducer","languageReducer","cookiesMiddleware","checkStatus","Promise","resolve","reject","msg","statusText","ajax","method","headers","Headers","append","access_token","body","httpMiddleware","apiUri","promise","post","put","del","result","promiseMiddleware","rest","thunkMiddleware","init","authority","self","tokenManagerConfig","client_id","redirect_uri","response_type","scope","post_logout_redirect_uri","silent_redirect_uri","automatic_silent_renew","filterProtocolClaims","loadUserInfo","createUserManager","oidcMiddleware","createOidcMiddleware","reducers","combineReducers","oidcReducer","middleware","applyMiddleware","devTool","__REDUX_DEVTOOLS_EXTENSION__","enhancers","compose","createStore","graphql","httpLink","HttpLink","authLink","ApolloLink","operation","forward","setContext","authorization","ApolloClient","link","concat","cache","InMemoryCache","events","addUserLoaded","addUserUnloaded","loadLanguage","files","getJson","merge","pop","cfg","getElementById","requiredApiVersion","version","ReactDOM","description","intitialized"],"mappings":"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","file":"static/js/main.7cf93c24.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/sv-SE.215b7172.svg\";","module.exports = __webpack_public_path__ + \"static/media/en-US.d7037ad4.svg\";","import React, { useReducer, useEffect } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport axios from \"axios\";\r\nimport initialState from \"./initialState\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nexport const AppContext = React.createContext();\r\n\r\nlet source;\r\nexport const CLOSE_BOOKINGSMODAL = \"close_bookingsmodal\";\r\nexport const CLOSE_MENU = \"close_menu\";\r\nexport const CLOSE_TOAST = \"close_toast\";\r\nexport const OPEN_BOOKINGSMODAL = \"open_bookingsmodal\";\r\nexport const OPEN_TOAST = \"open_toast\";\r\nexport const SET_COURSEFILTER = \"set_coursefilter\";\r\nexport const SET_LANDINGTEXT = \"set_landingtext\";\r\nexport const SET_FOOTERTEXT = \"set_footertext\";\r\nexport const SET_HEADERTEXT = \"set_headertext\";\r\nexport const SET_OCCASIONFILTER = \"set_occasionfilter\";\r\nexport const SET_TERMSTEXT = \"set_termstext\";\r\nexport const TOGGLE_BOOKINGS = \"toggle_bookings\";\r\nexport const TOGGLE_MENU = \"toggle_menu\";\r\nexport const TOGGLE_SETTINGS = \"toggle_settings\";\r\n\r\nconst getState = (state) => ({\r\n activePerson: state.activePerson,\r\n});\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case CLOSE_BOOKINGSMODAL:\r\n return {\r\n ...state,\r\n bookingModal: { ...state.bookingModal, open: false, bookingData: {} },\r\n };\r\n case CLOSE_MENU:\r\n return { ...state, menuOpen: false };\r\n case CLOSE_TOAST:\r\n return { ...state, toastOpen: false, toastText: \"\", toastType: \"\" };\r\n case OPEN_BOOKINGSMODAL:\r\n return {\r\n ...state,\r\n bookingModal: {\r\n ...state.bookingModal,\r\n open: true,\r\n bookingData: action.payload,\r\n },\r\n };\r\n case OPEN_TOAST:\r\n return {\r\n ...state,\r\n toastOpen: true,\r\n toastText: action.toastText,\r\n toastType: action.toastType,\r\n };\r\n case SET_COURSEFILTER:\r\n const {\r\n type: courseType,\r\n value: courseValue,\r\n checked: courseChecked,\r\n } = action.payload;\r\n let newCourseFilter = {};\r\n if (courseType === \"showOnlyBookable\") {\r\n newCourseFilter = {\r\n ...state.courseFilter,\r\n showOnlyBookable: courseChecked,\r\n };\r\n return { ...state, courseFilter: newCourseFilter };\r\n }\r\n if (courseChecked) {\r\n newCourseFilter = {\r\n ...state.courseFilter,\r\n [courseType]: [...state.courseFilter[courseType], courseValue],\r\n };\r\n return { ...state, courseFilter: newCourseFilter };\r\n }\r\n const newCourseSubFilter = state.courseFilter[courseType].filter(\r\n (f) => f !== courseValue\r\n );\r\n newCourseFilter = {\r\n ...state.courseFilter,\r\n [courseType]: newCourseSubFilter,\r\n };\r\n return { ...state, courseFilter: newCourseFilter };\r\n case SET_LANDINGTEXT:\r\n return { ...state, landingText: action.payload };\r\n case SET_FOOTERTEXT:\r\n return { ...state, footerText: action.payload };\r\n case SET_HEADERTEXT:\r\n return { ...state, headerText: action.payload };\r\n case SET_TERMSTEXT:\r\n return { ...state, termsText: action.payload, fetchText: false };\r\n case SET_OCCASIONFILTER:\r\n const { type, value, checked } = action.payload;\r\n let newOccasionFilter = {};\r\n if (checked) {\r\n newOccasionFilter = {\r\n ...state.occasionFilter,\r\n [type]: [...state.occasionFilter[type], value],\r\n };\r\n HandleStoredFilters(newOccasionFilter, action.payload);\r\n return { ...state, occasionFilter: newOccasionFilter };\r\n }\r\n const newSubFilter = state.occasionFilter[type].filter(\r\n (f) => f !== value\r\n );\r\n newOccasionFilter = {\r\n ...state.occasionFilter,\r\n [type]: newSubFilter,\r\n };\r\n HandleStoredFilters(newOccasionFilter, action.payload);\r\n return { ...state, occasionFilter: newOccasionFilter };\r\n case TOGGLE_BOOKINGS:\r\n return { ...state, bookingsOpen: !state.bookingsOpen };\r\n case TOGGLE_MENU:\r\n return { ...state, menuOpen: !state.menuOpen };\r\n case TOGGLE_SETTINGS:\r\n return { ...state, settingsOpen: !state.settingsOpen };\r\n default:\r\n throw new Error(`Wrong action type: ${action.type}`);\r\n }\r\n};\r\n\r\nconst HandleStoredFilters = (newOccasionFilter, actionPayload) => {\r\n const { type, value, checked } = actionPayload;\r\n const activeFilters = JSON.parse(localStorage.getItem(\"ActiveFilters\"));\r\n if (checked === false) {\r\n localStorage.setItem(\"ActiveFilters\", JSON.stringify(newOccasionFilter));\r\n } else if (checked === true) {\r\n if (activeFilters && activeFilters[type].includes(value)) {\r\n return;\r\n } else {\r\n localStorage.setItem(\"ActiveFilters\", JSON.stringify(newOccasionFilter));\r\n }\r\n }\r\n};\r\n\r\nconst AppContextProvider = (props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const rdxState = useSelector((state) => getState(state));\r\n const rdxDispatch = useDispatch();\r\n const { landingText, headerText, footerText, fetchText } = state;\r\n const { culture } = useSelector((state) => ({\r\n culture: state.cookies[STATE_CULTURE],\r\n }));\r\n useEffect(() => {\r\n if (culture) {\r\n let CancelToken = axios.CancelToken;\r\n source = CancelToken.source();\r\n axios\r\n .all([\r\n axios.get(`/ee-static/booking/Texts/landing.${culture}.md`, {\r\n cancelToken: source.token,\r\n }),\r\n axios.get(`/ee-static/booking/Texts/header.${culture}.md`, {\r\n cancelToken: source.token,\r\n }),\r\n axios.get(`/ee-static/booking/Texts/footer.${culture}.md`, {\r\n cancelToken: source.token,\r\n }),\r\n axios.get(\"/ee-static/booking/Texts/terms.md\", {\r\n cancelToken: source.token,\r\n }),\r\n ])\r\n .then(\r\n axios.spread((landingText, headerText, footerText, termsText) => {\r\n dispatch({ type: SET_LANDINGTEXT, payload: landingText.data });\r\n dispatch({ type: SET_FOOTERTEXT, payload: footerText.data });\r\n dispatch({ type: SET_HEADERTEXT, payload: headerText.data });\r\n dispatch({ type: SET_TERMSTEXT, payload: termsText.data });\r\n })\r\n )\r\n .catch((error) => {\r\n if (!axios.isCancel(error)) {\r\n console.log(error);\r\n }\r\n });\r\n }\r\n return () => source.cancel(\"Component Home Is Unmounting\");\r\n }, [landingText, headerText, footerText, fetchText, culture]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default AppContextProvider;\r\n","const initialState = {\r\n bookingModal: {\r\n open: false,\r\n bookingData: {},\r\n },\r\n bookingsOpen: false,\r\n courseFilter: {\r\n tags: [],\r\n locations: [],\r\n startDates: [],\r\n showOnlyBookable: false,\r\n },\r\n occasionFilter: {\r\n locations: [],\r\n activities: [],\r\n weekdays: [],\r\n tags: [],\r\n },\r\n landingText: \"\",\r\n footerText: \"\",\r\n headerText: \"\",\r\n termsText: \"\",\r\n fetchText: true,\r\n menuOpen: window.innerWidth > 1024 ? true : false,\r\n paymentLoading: false,\r\n redirect: false,\r\n settingsOpen: false,\r\n toastOpen: false,\r\n toastText: \"\",\r\n toastType: \"info\",\r\n};\r\n\r\nexport default initialState;\r\n","export const setCookie = (key, value) => {\r\n return {\r\n type: \"@EE/SET_COOKIE\",\r\n key,\r\n value,\r\n };\r\n};\r\n\r\nexport const expireCookie = (key) => {\r\n return {\r\n type: \"@EE/EXPIRE_COOKIE\",\r\n key,\r\n };\r\n};\r\n","import { setCookie } from \"./cookiesActions\";\r\n\r\nexport const STATE_CULTURE = \"shop-culture\";\r\nexport const STATE_ACTIVE_PERSON_ID = \"booking-active-person-id\";\r\nexport const THEME = \"theme\";\r\n\r\nexport const keys = () => {\r\n return [STATE_CULTURE, STATE_ACTIVE_PERSON_ID, THEME];\r\n};\r\n\r\nexport const setActivePersonId = (id) => (dispatch) => {\r\n dispatch(setCookie(STATE_ACTIVE_PERSON_ID, id));\r\n};\r\n","import React from \"react\";\r\n\r\nexport const UserManagerContext = React.createContext();\r\n\r\nconst UserManagerProvider = ({ userManager, children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default UserManagerProvider;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst BusySpinner = ({ size, color }) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nBusySpinner.propTypes = {\r\n size: PropTypes.string,\r\n color: PropTypes.string,\r\n};\r\n\r\nexport default BusySpinner;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport BusySpinner from \"./busySpinner\";\r\n\r\nexport const SpinnerContainer = styled.div`\r\n align-items: center;\r\n display: flex;\r\n height: 100%;\r\n justify-content: center;\r\n width: 100%;\r\n`;\r\n\r\n// ---------------- BUSY --------------\r\nconst BusyContainer = styled.div`\r\n align-items: center;\r\n background: white;\r\n bottom: 0;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n left: 0;\r\n position: fixed;\r\n right: 0;\r\n top: 0;\r\n z-index: 5000;\r\n`;\r\n\r\nconst BusyText = styled.h3`\r\n color: #222;\r\n font-size: 1.5rem;\r\n padding-bottom: 1rem;\r\n`;\r\n\r\nexport const Busy = (props) => (\r\n \r\n {props.text}\r\n \r\n \r\n);\r\n","import moment from \"moment\";\r\nimport \"moment/locale/sv\";\r\n\r\nmoment.locale(\"sv\");\r\nmoment.relativeTimeThreshold(\"m\", 60);\r\n\r\nmoment.duration.fn.format = function (input) {\r\n var output = input;\r\n var milliseconds = this.asMilliseconds();\r\n var totalMilliseconds = 0;\r\n var replaceRegexps = {\r\n years: /Y(?!Y)/g,\r\n months: /M(?!M)/g,\r\n weeks: /W(?!W)/g,\r\n days: /D(?!D)/g,\r\n hours: /H(?!H)/g,\r\n minutes: /m(?!m)/g,\r\n seconds: /s(?!s)/g,\r\n milliseconds: /S(?!S)/g,\r\n };\r\n var matchRegexps = {\r\n years: /Y/g,\r\n months: /M/g,\r\n weeks: /W/g,\r\n days: /D/g,\r\n hours: /H/g,\r\n minutes: /m/g,\r\n seconds: /s/g,\r\n milliseconds: /S/g,\r\n };\r\n for (var r in replaceRegexps) {\r\n if (replaceRegexps[r].test(output)) {\r\n var as = \"as\" + r.charAt(0).toUpperCase() + r.slice(1);\r\n var value = Math.floor(\r\n moment.duration(milliseconds - totalMilliseconds)[as]()\r\n );\r\n var replacements = output.match(matchRegexps[r]).length - value.length;\r\n output = output.replace(replaceRegexps[r], value);\r\n\r\n while (replacements > 0 && replaceRegexps[r].test(output)) {\r\n output = output.replace(replaceRegexps[r], \"0\");\r\n replacements--;\r\n }\r\n output = output.replace(matchRegexps[r], \"\");\r\n\r\n var temp = {};\r\n temp[r] = parseInt(value, 10);\r\n totalMilliseconds += moment.duration(temp).asMilliseconds();\r\n }\r\n }\r\n return output;\r\n};\r\n\r\nexport const handleError = (err) => {\r\n console.log(\"Error!\", err);\r\n};\r\n\r\nconst today = (locale) => {\r\n return moment().locale(locale);\r\n};\r\n\r\nexport function compactTime(date, locale, language) {\r\n if (!date) return \"-\";\r\n\r\n if (!date.isSame) date = moment(date).locale(locale);\r\n\r\n const td = today(locale);\r\n const tomorrow = today(locale).add(1, \"days\");\r\n const nextWeek = today(locale).add(6, \"days\");\r\n\r\n if (date.isSame(td, \"day\")) return `${language.today} ` + date.format(\"LT\");\r\n\r\n if (date.isSame(tomorrow, \"day\"))\r\n return `${language.tomorrow} ` + date.format(\"LT\");\r\n\r\n if (date.isBefore(nextWeek)) {\r\n if (locale === \"en\") {\r\n return `${date.locale(locale).format(\"dddd\")} ${date\r\n .locale(locale)\r\n .format(\"LT\")}`;\r\n }\r\n return date.locale(locale).format(\"dddd HH:mm\");\r\n }\r\n\r\n return date.locale(locale).format(\"llll\");\r\n}\r\n\r\nexport function compactDate(date, locale, language) {\r\n if (!date) return \"-\";\r\n\r\n if (!date.isSame) date = moment(date).locale(locale);\r\n\r\n const td = today(locale);\r\n const yesterday = today(locale).add(-1, \"days\");\r\n const tomorrow = today(locale).add(1, \"days\");\r\n\r\n if (date.isSame(yesterday, \"day\")) return language.yesterday;\r\n\r\n if (date.isSame(td, \"day\")) return language.today;\r\n\r\n if (date.isSame(tomorrow, \"day\")) return language.tomorrow;\r\n\r\n return date.locale(locale).format(\"LL\");\r\n}\r\n\r\nexport function randomString(len, charSet) {\r\n charSet = charSet || \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\r\n var randomString = \"\";\r\n for (var i = 0; i < len; i++) {\r\n var randomPoz = Math.floor(Math.random() * charSet.length);\r\n randomString += charSet.substring(randomPoz, randomPoz + 1);\r\n }\r\n return randomString;\r\n}\r\n\r\nexport function stringJoin(values, separator = \", \") {\r\n let result = \"\";\r\n const last = values.length - 1;\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n result += values[i];\r\n\r\n if (i !== last) {\r\n result += separator;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function weekdayName(day) {\r\n switch (day) {\r\n case 0:\r\n return \"Måndag\";\r\n case 1:\r\n return \"Tisdag\";\r\n case 2:\r\n return \"Onsdag\";\r\n case 3:\r\n return \"Torsdag\";\r\n case 4:\r\n return \"Fredag\";\r\n case 5:\r\n return \"Lördag\";\r\n case 6:\r\n return \"Söndag\";\r\n default:\r\n return \"????\";\r\n }\r\n}\r\n\r\nexport function currentWeek() {\r\n return weekOf(new Date());\r\n}\r\n\r\n// Returns the ISO week of the date.\r\nexport function weekOf(date) {\r\n date.setHours(0, 0, 0, 0);\r\n // Thursday in current week decides the year.\r\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\r\n // January 4 is always in week 1.\r\n var week1 = new Date(date.getFullYear(), 0, 4);\r\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\r\n var week =\r\n 1 +\r\n Math.round(\r\n ((date.getTime() - week1.getTime()) / 86400000 -\r\n 3 +\r\n ((week1.getDay() + 6) % 7)) /\r\n 7\r\n );\r\n\r\n var year = date.getFullYear();\r\n\r\n return {\r\n week,\r\n year,\r\n };\r\n}\r\n\r\n//5 minute resolution\r\nexport const roundTime = (t) => {\r\n let m = moment(t);\r\n const minute = m.minute();\r\n\r\n const rounded = 5 * Math.round(minute / 5);\r\n\r\n m.minute(rounded);\r\n\r\n return m.toDate();\r\n};\r\n\r\nexport function hexToRgb(hex) {\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n}\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport classNames from \"classnames\";\r\nimport { Button } from \"@mantine/core\";\r\nimport { UserManagerContext } from \"../Context/userManagerContext\";\r\nimport { Busy } from \"../Common/UIComponents\";\r\nimport { handleError } from \"../AppCommon/util\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n login: {\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n padding: \"0 5px\",\r\n },\r\n button: {\r\n color: theme.app.labelColor,\r\n marginRight: \"0.5rem\",\r\n },\r\n}));\r\n\r\nconst Login = () => {\r\n const classes = useStyles();\r\n const [busy, setBusy] = useState(false);\r\n const { userManager } = useContext(UserManagerContext);\r\n const { language, auth } = useSelector((state) => ({\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n language: state.language,\r\n }));\r\n\r\n useEffect(() => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n const redirect = searchParams.get(\"redirect\");\r\n if (busy) {\r\n userManager.clearStaleState();\r\n userManager.signinRedirect().catch(handleError);\r\n } else if (redirect && !auth) {\r\n userManager.clearStaleState();\r\n userManager.signinRedirect().catch(handleError);\r\n }\r\n }, [busy, userManager]);\r\n\r\n return (\r\n <>\r\n {busy ? (\r\n \r\n ) : (\r\n
\r\n {auth ? (\r\n \"\"\r\n ) : (\r\n setBusy(true)}\r\n className={classNames(\r\n classes.button,\r\n \"login__login-button primaryButton\"\r\n )}\r\n aria-label={language.login}\r\n >\r\n {language.login}\r\n \r\n )}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React from \"react\";\r\n\r\nexport const ChevronDownIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const SettingsIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const LogoutIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const BookingIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const AccountIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import {\r\n Avatar,\r\n Button,\r\n createStyles,\r\n Menu,\r\n Modal,\r\n SimpleGrid,\r\n Text,\r\n Title,\r\n UnstyledButton,\r\n} from \"@mantine/core\";\r\nimport React from \"react\";\r\nimport { useContext } from \"react\";\r\nimport { useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { THEME } from \"../../Actions/stateActions\";\r\nimport { handleError } from \"../../AppCommon/util\";\r\nimport { AppContext, TOGGLE_SETTINGS } from \"../../Context\";\r\nimport { UserManagerContext } from \"../../Context/userManagerContext\";\r\nimport {\r\n AccountIcon,\r\n BookingIcon,\r\n LogoutIcon,\r\n SettingsIcon,\r\n} from \"./icons/Icons\";\r\n\r\nconst useStyles = createStyles((theme) => ({\r\n settingWrapper: {\r\n paddingRight: \"1rem\",\r\n button: {\r\n borderRadius: \"6px\",\r\n },\r\n },\r\n button: {\r\n boxShadow: `0 0 0 3px ${theme.colors.violet[8]}`,\r\n borderRadius: \"50%\",\r\n \"*::WebkitBorderRadius\": \"50%\",\r\n \":hover\": {\r\n opacity: 0.9,\r\n },\r\n },\r\n\r\n dropdownWrapper: {\r\n \"@media screen and (max-width: 768px)\": {\r\n padding: 0,\r\n },\r\n },\r\n\r\n item: {\r\n \"&[data-hovered]\": {\r\n backgroundColor: theme.colors.violet[8],\r\n color: \"white\",\r\n },\r\n },\r\n\r\n mainSection: {\r\n paddingBottom: theme.spacing.sm,\r\n },\r\n\r\n userActive: {\r\n opacity: 0.9,\r\n },\r\n\r\n darkMode: {\r\n backgroundColor: \"#212121\",\r\n borderColor: theme.colors.dark[7],\r\n button: {\r\n color: theme.colors.dark[0],\r\n \"&:hover\": {\r\n backgroundColor: theme.colors.dark[8],\r\n },\r\n },\r\n \".mantine-Menu-divider\": {\r\n borderColor: theme.colors.dark[5],\r\n },\r\n },\r\n\r\n darkestMode: {\r\n backgroundColor: \"#0C1217\",\r\n borderColor: theme.colors.dark[7],\r\n button: {\r\n color: theme.colors.dark[0],\r\n \"&:hover\": {\r\n backgroundColor: theme.colors.dark[6],\r\n },\r\n },\r\n \".mantine-Menu-divider\": {\r\n borderColor: theme.colors.dark[5],\r\n },\r\n },\r\n}));\r\n\r\nconst Profile = ({ whoami }) => {\r\n const [userMenuOpened, setUserMenuOpened] = useState(false);\r\n const [showLogoutDialog, setShowLogoutDialog] = useState(false);\r\n const { language, config, auth, theme } = useSelector((state) => ({\r\n language: state.language,\r\n config: state.config,\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n theme: state.cookies[THEME],\r\n }));\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const { userManager } = useContext(UserManagerContext);\r\n\r\n const history = useHistory();\r\n const { classes, cx } = useStyles();\r\n let user = {\r\n name: whoami.name,\r\n image: whoami.photo,\r\n };\r\n\r\n const membersLink = `${\r\n config.api.split(\"bookingapi\")[0]\r\n }members?redirect=loginRedirectFromBooking`;\r\n\r\n const handleLogout = () => userManager.signoutRedirect().catch(handleError);\r\n return (\r\n <>\r\n {auth ? (\r\n setUserMenuOpened(false)}\r\n onOpen={() => setUserMenuOpened(true)}\r\n shadow=\"md\"\r\n className={cx(classes.dropdownWrapper)}\r\n classNames={classes}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n onClick={() => history.push(\"/bookings\")}\r\n aria-label={language.my_bookings}\r\n >\r\n {language.my_bookings}\r\n \r\n }\r\n onClick={() => (window.location.href = membersLink)}\r\n aria-label={language.my_account}\r\n >\r\n {language.my_account}\r\n \r\n\r\n }\r\n onClick={() => dispatch({ type: TOGGLE_SETTINGS })}\r\n aria-label={language.settings}\r\n >\r\n {language.settings}\r\n \r\n \r\n setShowLogoutDialog(true)}\r\n icon={}\r\n aria-label={language.logout}\r\n >\r\n {language.logout}\r\n \r\n \r\n
\r\n \r\n ) : (\r\n
\r\n dispatch({ type: TOGGLE_SETTINGS })}\r\n style={{\r\n color:\r\n theme === \"dark\"\r\n ? \"#fff\"\r\n : theme === \"darkest\"\r\n ? \"#fff\"\r\n : theme === \"light\"\r\n ? \"#000\"\r\n : \"inherit\",\r\n }}\r\n >\r\n \r\n \r\n
\r\n )}\r\n setShowLogoutDialog(false)}\r\n styles={{ header: { margin: 0 } }}\r\n padding=\"xl\"\r\n radius=\"md\"\r\n zIndex={1500}\r\n classNames={{\r\n modal:\r\n theme === \"dark\"\r\n ? classes.darkMode\r\n : theme === \"darkest\"\r\n ? classes.darkestMode\r\n : \"\",\r\n }}\r\n closeButtonLabel={language.closeMenus}\r\n >\r\n \r\n \r\n {language.logout}\r\n \r\n \r\n {language.logoutMsg}\r\n \r\n \r\n setShowLogoutDialog(false)}\r\n aria-label={language.abort}\r\n >\r\n {language.abort}\r\n \r\n \r\n {language.logout}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Profile;\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Login from \"../login\";\r\nimport { AppContext, TOGGLE_MENU } from \"../../Context\";\r\nimport { THEME } from \"../../Actions/stateActions\";\r\nimport Profile from \"./Profile\";\r\nimport { UnstyledButton } from \"@mantine/core\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n appBar: {\r\n backgroundColor: theme.app.background[1],\r\n color: theme.app.color,\r\n boxShadow: \"none\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n zIndex: theme.zIndex.drawer + 1,\r\n padding: \"0 0 0 16px\",\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n appBarShift: {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n \"@media(max-width: 600px)\": {\r\n marginLeft: 0,\r\n width: \"100%\",\r\n },\r\n },\r\n toolbar: {\r\n padding: 0,\r\n \"@media(max-width: 600px)\": {\r\n padding: 0,\r\n minHeight: \"64px\",\r\n },\r\n },\r\n menuButton: {\r\n padding: \"4px\",\r\n marginRight: \"32px\",\r\n \"@media(max-width: 600px)\": { display: \"none\" },\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n buttonIcon: {\r\n color: theme.app.labelColor,\r\n },\r\n nav: {\r\n flexGrow: 1,\r\n },\r\n unpaid: {\r\n backgroundColor: theme.app.dangerColor,\r\n color: theme.app.labelColor,\r\n },\r\n paid: {\r\n backgroundColor: theme.app.infoColor,\r\n color: theme.app.labelColor,\r\n },\r\n button: {\r\n color: theme.app.labelColor,\r\n padding: \"4px\",\r\n borderRadius: \"50%\",\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.short,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n logoContainer: {\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n },\r\n logoImg: {\r\n height: \"var(--logo-height)\",\r\n width: \"var(--logo-width)\",\r\n \"@media (max-width: 667px)\": {\r\n height: \"var(--logo-height-xs)\",\r\n width: \"var(--logo-width-xs)\",\r\n },\r\n },\r\n}));\r\n\r\nconst Header = ({ whoami }) => {\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { dispatch, state } = context;\r\n const toggleMenu = () => dispatch({ type: TOGGLE_MENU });\r\n const { config, language, theme } = useSelector((state) => ({\r\n config: state.config,\r\n language: state.language,\r\n theme: state.cookies[THEME],\r\n }));\r\n\r\n const history = useHistory()\r\n\r\n const logoSrc = () => {\r\n if (config.logo) {\r\n return config.logo.src;\r\n }\r\n if (theme === \"light\") {\r\n return \"/ee-static/booking/logo.svg\";\r\n }\r\n return \"/ee-static/booking/logo_dark.svg\";\r\n };\r\n return (\r\n \r\n {language.SkipToMainContent}\r\n \r\n \r\n \r\n \r\n history.push(\"/\")} className={classes.logoContainer} aria-label={language.backToHomepage}>\r\n \"logo\"\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport {makeStyles} from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n wrapper: {\r\n width: \"24px\",\r\n height: \"auto\"\r\n },\r\n inactiveColor: {\r\n fill: theme.app.labelColor,\r\n },\r\n activeColor: {\r\n fill: theme.palette.primary.main\r\n }\r\n}))\r\nconst CoursesIcon = ({active}) => {\r\n const classes = useStyles()\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default CoursesIcon;\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport { Link, withRouter } from \"react-router-dom\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport HomeIcon from \"@material-ui/icons/Home\";\r\nimport WeekscheduleIcon from \"@material-ui/icons/Event\";\r\nimport BookingsIcon from \"@material-ui/icons/AccountCircle\";\r\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\r\nimport { AppContext, TOGGLE_MENU, CLOSE_MENU } from \"../Context\";\r\nimport CoursesIcon from \"../Images/CoursesIcon\";\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n drawer: { \"@media(max-width: 600px)\": { display: \"none\" } },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: 0,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"72px\",\r\n },\r\n },\r\n toolbar: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"0 8px\",\r\n ...theme.mixins.toolbar,\r\n },\r\n chevron: {\r\n color: theme.app.labelColor,\r\n },\r\n primary: {\r\n whiteSpace: \"nowrap\",\r\n },\r\n active: {\r\n height: \"100%\",\r\n color: theme.palette.primary.main,\r\n pointerEvents: \"none\",\r\n },\r\n activeColor: {\r\n \"& div\": {\r\n color: theme.palette.primary.main,\r\n },\r\n \"& svg g\": {\r\n color: theme.palette.primary.main,\r\n fill: theme.palette.primary.main,\r\n },\r\n },\r\n inactive: {\r\n height: \"100%\",\r\n color: theme.app.labelColor,\r\n },\r\n inactiveColor: {\r\n \"& div\": {\r\n color: theme.app.labelColor,\r\n },\r\n \"& svg g\": {\r\n color: theme.app.labelColor,\r\n fill: theme.app.labelColor,\r\n },\r\n },\r\n activeBorder: {\r\n position: \"absolute\",\r\n left: \"0rem\",\r\n borderLeft: `6px solid ${theme.palette.primary.main}`,\r\n height: \"100%\",\r\n },\r\n unpaid: {\r\n backgroundColor: theme.app.dangerColor,\r\n color: \"white\",\r\n },\r\n paid: {\r\n backgroundColor: theme.app.infoColor,\r\n color: \"white\",\r\n },\r\n coursesIcon: {\r\n width: \"20px\",\r\n height: \"auto\",\r\n },\r\n}));\r\n\r\nconst Menu = (props) => {\r\n const { location, mybookings } = props;\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { dispatch, state } = context;\r\n const { menuOpen } = state;\r\n const { language, auth } = useSelector((state) => ({\r\n language: state.language,\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n }));\r\n const toggleMenu = () => dispatch({ type: TOGGLE_MENU });\r\n const closeMenu = () => dispatch({ type: CLOSE_MENU });\r\n const handleNavigate = () => {\r\n if (window.innerWidth < 1024) {\r\n closeMenu();\r\n }\r\n };\r\n const confirmed = mybookings.filter((b) => b.isConfirmed).length;\r\n const anyUnpaid = mybookings.some((b) => !b.isPaid && b.isConfirmed);\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {auth && (\r\n \r\n \r\n \r\n \r\n {confirmed ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(Menu);\r\n","import React, { useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Radio from \"@material-ui/core/Radio\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n topActions: {\r\n // height: \"50px\",\r\n background: theme.app.background[1],\r\n color: theme.app.labelColor,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"0 16px\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n },\r\n group: { flexDirection: \"row\" },\r\n labelText: {\r\n fontSize: \"0.875rem\",\r\n color: theme.app.labelColor,\r\n },\r\n}));\r\n\r\nconst TopActions = (props) => {\r\n const {\r\n anyConfirmed,\r\n anyQueued,\r\n anyCancelled,\r\n selected,\r\n setSelected,\r\n language,\r\n bookings,\r\n } = props;\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n if (bookings.length < 1) return;\r\n if (anyConfirmed && !selected) {\r\n return setSelected(\"confirmed\");\r\n }\r\n if (anyQueued && !selected) {\r\n return setSelected(\"queued\");\r\n }\r\n if (!selected) {\r\n return setSelected(\"cancelled\");\r\n }\r\n }, [anyConfirmed, anyCancelled, anyQueued, selected, setSelected, bookings]);\r\n return (\r\n
\r\n setSelected(e.target.value)}\r\n className={classes.group}\r\n >\r\n }\r\n disabled={!anyConfirmed}\r\n classes={{ label: classes.labelText }}\r\n />\r\n }\r\n classes={{ label: classes.labelText }}\r\n />\r\n }\r\n classes={{ label: classes.labelText }}\r\n />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default TopActions;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n color: {\r\n position: \"relative\",\r\n width: \"26px\",\r\n height: \"26px\",\r\n borderRadius: \"4px\",\r\n background: (p) => p.color,\r\n },\r\n colorInner: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"23px\",\r\n height: \"23px\",\r\n borderRadius: \"4px\",\r\n border: `2px solid ${theme.app.background[1]}`,\r\n },\r\n}));\r\n\r\nconst ActivityColor = (props) => {\r\n const classes = useStyles(props);\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ActivityColor;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport moment from \"moment\";\r\n\r\nconst getColor = (status, theme) => {\r\n if (status === \"paid\") return theme.app.successColor;\r\n if (status === \"confirmed\") return theme.app.successColor;\r\n if (status === \"queued\") return theme.app.warningColor;\r\n if (status === \"cancelled\") return theme.app.dangerColor;\r\n};\r\n\r\nconst getStatus = (booking) => {\r\n if (booking.isPaid) return \"paid\";\r\n if (booking.isConfirmed) return \"confirmed\";\r\n if (booking.isQueue && !booking.isCancelled) return \"queued\";\r\n if (booking.isCancelled) return \"cancelled\";\r\n};\r\n\r\nconst getTime = (booking) => {\r\n const status = getStatus(booking);\r\n switch (status) {\r\n case \"paid\":\r\n return \"\";\r\n case \"confirmed\":\r\n return ` - ${moment(booking.confirmedAt).format(\"YYYY-MM-DD HH:mm\")}`;\r\n case \"queued\":\r\n return \"\";\r\n case \"cancelled\":\r\n if (booking.confirmedAt === null && booking.cancelledAt) {\r\n return ` - ${moment(booking.cancelledAt).format(\"YYYY-MM-DD HH:mm\")}`;\r\n } else if (booking.confirmedAt !== null) {\r\n return ` - ${moment(booking.confirmedAt).format(\"YYYY-MM-DD HH:mm\")}`;\r\n }\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n status: {\r\n color: (p) => getColor(p.status, theme),\r\n textTransform: \"uppercase\",\r\n fontSize: \"0.8125rem\",\r\n marginTop: \"4px\",\r\n fontWeight: 500,\r\n },\r\n}));\r\n\r\nconst Status = ({ booking }) => {\r\n const bookingStatus = getStatus(booking);\r\n const classes = useStyles({ status: bookingStatus });\r\n const language = useSelector((state) => state.language);\r\n\r\n return (\r\n \r\n {`${language.status[bookingStatus]}${getTime(booking)}`}\r\n \r\n );\r\n};\r\n\r\nexport default Status;\r\n","import React, { useState, useContext } from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport moment from \"moment\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\nimport LocationIcon from \"@material-ui/icons/Place\";\r\nimport PaymentIcon from \"@material-ui/icons/CreditCard\";\r\nimport { compactTime } from \"../AppCommon/util\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport ActivityColor from \"../Common/activityColor\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport { MY_BOOKINGS } from \"../routes\";\r\nimport Status from \"./status\";\r\nimport { Modal } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n booking: {\r\n border: `1px solid ${theme.app.iconDisabledColor}`,\r\n borderBottom: \"none\",\r\n background: theme.app.background[1],\r\n display: \"grid\",\r\n gridTemplateColumns: (p) => (p.isCancelled ? \"1fr\" : \"1fr auto\"),\r\n gridGap: (p) => (p.isCancelled ? \"0px\" : \"8px\"),\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n \"&:first-child\": {\r\n borderRadius: \"4px 4px 0 0\",\r\n },\r\n \"&:last-child\": {\r\n borderRadius: \"0 0 4px 4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: \"4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"@media(max-width: 1300px)\": {\r\n \"&:first-child\": {\r\n borderRadius: 0,\r\n },\r\n \"&:last-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n \"@media(max-width: 600px)\": {\r\n \"&:first-child\": {\r\n marginTop: \"16px\",\r\n },\r\n gridTemplateColumns: \"1fr\",\r\n marginBottom: \"16px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n content: { color: theme.app.labelColor, padding: \"1rem\" },\r\n contentText: { color: theme.app.labelColor, marginTop: \"0.25rem\" },\r\n titleText: {\r\n lineHeight: 1.2,\r\n \"@media(max-width: 600px)\": {\r\n fontSize: \"1.1rem\",\r\n },\r\n },\r\n bookingId: {\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.6,\r\n },\r\n heading: {\r\n fontSize: \"1rem !important\",\r\n fontWeight: 500,\r\n },\r\n subheading: {\r\n lineHeight: 1,\r\n textTransform: \"capitalize\",\r\n fontSize: \"0.875rem !important\",\r\n },\r\n info: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"auto 1fr\",\r\n gridGap: \"16px\",\r\n alignItems: \"center\",\r\n marginTop: \"16px\",\r\n },\r\n infoItem: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n lineHeight: 1.5,\r\n },\r\n infoIcon: { width: \"16px\", height: \"16px\" },\r\n infoText: { fontSize: \"0.8125rem\", marginLeft: \"4px\" },\r\n actionContainer: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n padding: \"8px\",\r\n \"@media(max-width: 600px)\": {\r\n padding: \"4px 0\",\r\n // borderTop: `1px solid ${theme.app.iconDisabledColor}`,\r\n justifyContent: \"flex-end\",\r\n },\r\n },\r\n cancelButton: { color: theme.app.dangerColor },\r\n cancelDialog: {\r\n minWidth: \"500px\",\r\n minHeight: \"250px\",\r\n \"@media(max-width: 600px)\": { minWidth: \"initial\", minHeight: \"initial\" },\r\n },\r\n closeButton: {\r\n color: theme.app.labelColor,\r\n },\r\n noPadding: {\r\n padding: 0,\r\n },\r\n}));\r\n\r\nconst CANCEL_BOOKING = gql`\r\n mutation Cancel($id: String) {\r\n cancelReservation(bookingId: $id) {\r\n position\r\n errorMessage\r\n failed\r\n }\r\n }\r\n`;\r\n\r\nconst Booking = ({ booking }) => {\r\n const classes = useStyles({ isCancelled: booking.isCancelled });\r\n const [cancelOpen, setCancelOpen] = useState(false);\r\n const { language, culture } = useSelector((state) => ({\r\n language: state.language,\r\n culture: state.cookies[STATE_CULTURE],\r\n }));\r\n const { activity, occasion, remainingPaymentInclVat } = booking;\r\n const { location, name } = activity;\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const at = occasion\r\n ? compactTime(moment(occasion.at), locale, language)\r\n : \"????\";\r\n const lastPaymentTime = moment(booking.lastPaymentTime);\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const handleMutationError = (error) => {\r\n console.log(error);\r\n setCancelOpen(false);\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.errorMsg,\r\n toastType: \"error\",\r\n });\r\n };\r\n const handleMutationSuccess = ({ cancelReservation }) => {\r\n const { failed, errorMessage } = cancelReservation;\r\n setCancelOpen(false);\r\n if (failed) {\r\n return dispatch({\r\n type: OPEN_TOAST,\r\n toastText: errorMessage,\r\n toastType: \"error\",\r\n });\r\n }\r\n // dispatch({\r\n // type: OPEN_TOAST,\r\n // toastText: \"Avbokningen lyckades!\",\r\n // toastType: \"success\",\r\n // });\r\n };\r\n const [cancelBooking, { loading }] = useMutation(CANCEL_BOOKING, {\r\n variables: { id: booking.id },\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n });\r\n\r\n return (\r\n
  • \r\n
    \r\n
    \r\n \r\n {name}\r\n \r\n {booking.id}\r\n \r\n {at}\r\n \r\n \r\n {booking.isQueue && booking.queueSlot && (\r\n {`${language.queueSlot} ${booking.queueSlot}/${occasion.maxQueueSlots}`}\r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    {location.name}
    \r\n
    \r\n {booking.participants\r\n .filter((x) => x.id !== booking.responsible.id)\r\n .map((p, i) => {\r\n return (\r\n
    \r\n \r\n
    {p.name}
    \r\n
    \r\n );\r\n })}\r\n {remainingPaymentInclVat > 0 && !booking.isCancelled && (\r\n
    \r\n \r\n
    \r\n {booking.isPaid\r\n ? language.is_paid\r\n : `${remainingPaymentInclVat}:- (${\r\n language.payAt\r\n } ${compactTime(lastPaymentTime, locale, language)})`}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {booking.canCancel && (\r\n
    \r\n setCancelOpen(true)}\r\n >\r\n {language.cancel}\r\n \r\n
    \r\n )}\r\n
    \r\n setCancelOpen(false)}\r\n // fullScreen={window.innerWidth < 601}\r\n title={language.cancel}\r\n >\r\n
    \r\n \r\n {activity.name}\r\n \r\n \r\n \r\n {`${language.cancel_booking_text} ${activity.name} - ${at} ?`}\r\n \r\n \r\n \r\n setCancelOpen(false)}\r\n >\r\n {language.abort}\r\n \r\n \r\n {language.cancel}\r\n \r\n \r\n
    \r\n \r\n
  • \r\n );\r\n};\r\n\r\nexport default Booking;\r\n","import moment from \"moment\";\r\n\r\nexport const getListItems = (manages, bookingData, isNew, language) => {\r\n return (\r\n manages &&\r\n manages.map((m) => {\r\n const isBookable =\r\n bookingData.canReserve && bookingData.canReserve.persons.includes(m.id);\r\n const getPrimaryText = () => {\r\n if (isBookable) return m.name;\r\n return `${m.name} (${language.alreadyBooked})`;\r\n };\r\n return {\r\n id: m.id,\r\n primaryText: getPrimaryText(),\r\n secondaryText: m.civicRegistrationNumber,\r\n photo: m.photo,\r\n disabled: !isBookable || isNew,\r\n };\r\n })\r\n );\r\n};\r\n\r\nexport const uriWithCulture = (uri, culture) => {\r\n // uri with culture from state\r\n const url = new URL(uri);\r\n const params = new URLSearchParams(url.search);\r\n params.set(\"cul\", culture);\r\n return `${url.origin}${url.pathname}?${params.toString()}`;\r\n};\r\n\r\nexport const getDuration = (occasionDuration, activeLocale, language) => {\r\n if (!occasionDuration) return \"\";\r\n\r\n const humanizeUnit = (duration, unit) =>\r\n moment.duration(duration, unit).locale(activeLocale).humanize();\r\n\r\n const { minutes, hours, days, months, years } =\r\n moment.duration(occasionDuration)._data;\r\n\r\n const defaultFormatting = moment\r\n .duration(occasionDuration)\r\n .locale(activeLocale)\r\n .humanize();\r\n\r\n if (days || months || years) {\r\n return defaultFormatting;\r\n }\r\n\r\n const humanizedHours = humanizeUnit(hours, \"hours\");\r\n const humanizedMinutes = humanizeUnit(minutes, \"minutes\");\r\n\r\n // \"1 hour\" instead of \"one hour\" to override humanize default behaviour\r\n const splitHumanizedHours = humanizedHours.split(\" \");\r\n const customHour = `${splitHumanizedHours[0].replace(/.*/, \"1\")} ${\r\n splitHumanizedHours[1]\r\n }`;\r\n\r\n if (hours === 1 && !minutes) {\r\n return customHour;\r\n }\r\n\r\n if (hours && minutes) {\r\n if (hours === 1) {\r\n return `${customHour} ${language.and} ${humanizedMinutes}`;\r\n } else {\r\n return `${humanizedHours} ${language.and} ${humanizedMinutes}`;\r\n }\r\n }\r\n\r\n return defaultFormatting;\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport moment from \"moment\";\r\nimport { Group, Text } from \"@mantine/core\";\r\nimport { getDuration } from \"../Common/util\";\r\n\r\nconst PaymentCountdown = (props) => {\r\n const { next, locale, language, isModal, isNotification } = props;\r\n const [time, setTime] = useState(moment());\r\n\r\n useEffect(() => {\r\n const interval = window.setInterval(() => setTime(moment()), 1000);\r\n return window.clearInterval(interval);\r\n }, []);\r\n\r\n if (!next) {\r\n return
    ;\r\n }\r\n\r\n const localDiff = getDuration(time.diff(next), locale, language);\r\n const text = `${localDiff}`;\r\n\r\n return (\r\n <>\r\n {isModal ? (\r\n \r\n {text}\r\n \r\n ) : isNotification ? (\r\n ({\r\n color: theme.colors.gray[9],\r\n })}\r\n >\r\n {language.hasToPay} {text}\r\n \r\n ) : (\r\n \r\n \r\n {language.hasToPay}:\r\n \r\n \r\n {text}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PaymentCountdown;\r\n","export const uriWithCulture = (uri, culture) => {\r\n // rewrite uri with culture from state\r\n const url = new URL (uri)\r\n const params = new URLSearchParams(url.search);\r\n params.set('cul', culture);\r\n return `${url.origin}${url.pathname}?${params.toString()}`\r\n }","import React, { useContext } from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Booking from \"./booking\";\r\nimport gql from \"graphql-tag\";\r\nimport { Button, Container, Grid } from \"@mantine/core\";\r\nimport PaymentCountdown from \"./paymentCountdown\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport \"../Common/unpaid.css\";\r\nimport { uriWithCulture } from \"./util\";\r\n\r\nconst PAY_BOOKING = gql`\r\n mutation initiatePayment {\r\n initiatePayment {\r\n uri\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n bookingsList: {\r\n marginTop: \"1rem\",\r\n // height: (p) => (p.anyUnpaid ? \"calc(100% - 135px)\" : \"calc(100% - 250px)\"),\r\n // height: \"100%\",\r\n overflow: \"auto\",\r\n \"@media screen and (max-width: 600px)\": {\r\n height: \"100% !important\",\r\n margin: 0,\r\n // height: (p) =>\r\n // p.anyUnpaid ? \"calc(100% - 225px)\" : \"calc(100% - 186px)\",\r\n\r\n overflowY: \"scroll\",\r\n \"-webkit-overflow-scrolling\": \"touch\",\r\n },\r\n },\r\n list: {\r\n listStyle: \"none\",\r\n margin: \"0 auto\",\r\n paddingLeft: 0,\r\n marginTop: \"1px\",\r\n width: 1024,\r\n \"@media (max-width: 1300px)\": {\r\n width: \"77%\",\r\n },\r\n \"@media (max-width: 1024px)\": {\r\n width: \"100%\",\r\n // margin: 0,\r\n },\r\n },\r\n}));\r\n\r\nconst BookingsList = (props) => {\r\n const {\r\n bookings,\r\n anyUnpaid,\r\n language,\r\n locale,\r\n mybookings,\r\n checkoutEnabled,\r\n selected,\r\n culture\r\n } = props;\r\n const classes = useStyles({ anyUnpaid });\r\n const context = useContext(AppContext);\r\n const { dispatch, state } = context;\r\n const handleMutationSuccess = (data) => \r\n (window.location = uriWithCulture(data.initiatePayment.uri, culture));\r\n\r\n const handleMutationError = (error) =>\r\n dispatch({ type: OPEN_TOAST, toastText: error, toastType: \"error\" });\r\n const [initiatePayment] = useMutation(PAY_BOOKING, {\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n });\r\n\r\n const payableBookings =\r\n mybookings && mybookings.filter((b) => b.isConfirmed && !b.isPaid);\r\n const nextPayment = _.chain(payableBookings)\r\n .filter((x) => x.lastPaymentTime)\r\n .map((x) => moment(x.lastPaymentTime))\r\n .sort()\r\n .min()\r\n .value();\r\n return (\r\n
    \r\n {payableBookings &&\r\n payableBookings?.length > 0 &&\r\n selected === \"confirmed\" ? (\r\n ({\r\n backgroundColor: theme.colors.red[9],\r\n borderRadius: theme.radius.sm,\r\n padding: 0,\r\n })}\r\n role=\"alert\"\r\n >\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n
      \r\n {bookings.map((b, i) => (\r\n \r\n ))}\r\n {anyUnpaid &&\r\n payableBookings &&\r\n payableBookings?.length > 0 &&\r\n checkoutEnabled &&\r\n selected === \"confirmed\" ? (\r\n ({\r\n \"@media (max-width: 768px)\": {\r\n display: \"none\",\r\n },\r\n })}\r\n >\r\n \r\n {language.pay}\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default BookingsList;\r\n","import React, { useState, useContext } from \"react\";\r\nimport Markdown from \"react-markdown\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport { uriWithCulture } from \"./util\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n payment: {},\r\n dialog: {\r\n width: \"500px\",\r\n minHeight: \"200px\",\r\n \"@media(max-width: 600)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n title: {\r\n color: theme.app.labelColor,\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n },\r\n terms: {\r\n maxHeight: \"250px\",\r\n overflow: \"auto\",\r\n padding: \"8px 16px\",\r\n color: theme.app.secondaryColor,\r\n background: theme.app.background[0],\r\n fontSize: \"0.875rem\",\r\n \"@media(max-width: 600px)\": {\r\n maxHeight: `${theme.height - 180}px`,\r\n },\r\n },\r\n cbContainer: {\r\n borderTop: `1px solid ${theme.app.borderColor}`,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"8px 16px\",\r\n },\r\n cbLabel: { color: theme.app.labelColor, fontSize: \"0.875rem\" },\r\n abortButton: { color: theme.app.labelColor },\r\n}));\r\n\r\nconst PAY_BOOKING = gql`\r\n mutation initiatePayment {\r\n initiatePayment {\r\n uri\r\n }\r\n }\r\n`;\r\n\r\nconst Payment = (props) => {\r\n const { open, handleClose, language, culture } = props;\r\n const classes = useStyles();\r\n const [confirmed, setConfirmed] = useState(false);\r\n const context = useContext(AppContext);\r\n const { dispatch, state } = context;\r\n const { termsText } = state;\r\n const handleMutationSuccess = (data) => \r\n (window.location = uriWithCulture(data.initiatePayment.uri, culture));\r\n const handleMutationError = (error) =>\r\n dispatch({ type: OPEN_TOAST, toastText: error, toastType: \"error\" });\r\n const [initiatePayment, { loading }] = useMutation(PAY_BOOKING, {\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n });\r\n\r\n return (\r\n \r\n \r\n {language.pay_bookings}\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n setConfirmed(!confirmed)}\r\n />\r\n }\r\n label={language.accept_terms}\r\n />\r\n
    \r\n \r\n \r\n \r\n {language.abort}\r\n \r\n \r\n {language.pay}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Payment;\r\n","import React, { useState, useContext } from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { Button } from \"@mantine/core\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport TopActions from \"./topActions\";\r\nimport BookingsList from \"./bookingsList\";\r\nimport Payment from \"./payment\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport gql from \"graphql-tag\";\r\nimport { uriWithCulture } from \"./util\";\r\n\r\nconst PAY_BOOKING = gql`\r\n mutation initiatePayment {\r\n initiatePayment {\r\n uri\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n bookings: {\r\n // height: `${theme.height - 64}px`,\r\n paddingBottom: \"1.5rem\",\r\n \"@media screen and (max-width: 600px)\": {\r\n height: \"100%\",\r\n },\r\n },\r\n header: {\r\n background: theme.app.background[1],\r\n color: theme.app.labelColor,\r\n padding: \"0 16px\",\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto\",\r\n gridGap: \"16px\",\r\n alignItems: \"center\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n height: \"80px\",\r\n \"@media(max-width: 600px)\": {\r\n height: \"60px\",\r\n },\r\n },\r\n heading: {\r\n fontSize: \"1.35rem\",\r\n fontWeight: 500,\r\n },\r\n photo: {\r\n height: \"40px\",\r\n width: \"40px\",\r\n borderRadius: \"50%\",\r\n },\r\n actions: {\r\n height: \"60px\",\r\n background: theme.app.background[1],\r\n borderTop: `1px solid ${theme.app.borderColor}`,\r\n alignItems: \"center\",\r\n gridTemplateColumns: \"1fr auto\",\r\n // gridGap: \"16px\",\r\n padding: \"0 16px\",\r\n display: \"none\",\r\n \"@media screen and (max-width: 768px)\": {\r\n position: \"fixed\",\r\n display: \"grid\",\r\n bottom: \"3.5rem\",\r\n width: \"100%\",\r\n },\r\n },\r\n}));\r\n\r\nconst Bookings = (props) => {\r\n const { mybookings } = props;\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const [paymentOpen, setPaymentOpen] = useState(false);\r\n const [selected, setSelected] = useState();\r\n const { language, culture, checkoutEnabled } = useSelector((state) => ({\r\n language: state.language,\r\n culture: state.cookies[STATE_CULTURE],\r\n checkoutEnabled: state.config.checkoutEnabled,\r\n }));\r\n const handleMutationSuccess = (data) => \r\n (window.location = uriWithCulture(data.initiatePayment.uri, culture));\r\n \r\n const handleMutationError = (error) =>\r\n dispatch({ type: OPEN_TOAST, toastText: error, toastType: \"error\" });\r\n const [initiatePayment, { loading }] = useMutation(PAY_BOOKING, {\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n });\r\n\r\n if (!mybookings) return
    ;\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const anyUnpaid =\r\n mybookings &&\r\n mybookings.filter((b) => b.isConfirmed && !b.isPaid).length > 0;\r\n const confirmedBookings =\r\n mybookings && mybookings.filter((b) => b.isConfirmed);\r\n const cancelledBookings =\r\n mybookings && mybookings.filter((b) => b.isCancelled);\r\n const filterCancelledBookings =\r\n mybookings && mybookings.filter((el) => !el.isCancelled);\r\n const queuedBookings =\r\n mybookings &&\r\n filterCancelledBookings &&\r\n filterCancelledBookings.filter((el) => !el.isCancelled) &&\r\n filterCancelledBookings.filter((b) => b.isQueue);\r\n const payableBookings =\r\n mybookings && mybookings.filter((b) => b.isConfirmed && !b.isPaid);\r\n const nextPayment = _.chain(payableBookings)\r\n .filter((x) => x.lastPaymentTime)\r\n .map((x) => moment(x.lastPaymentTime))\r\n .sort()\r\n .min()\r\n .value();\r\n const getSelected = () => {\r\n if (selected === \"confirmed\") return confirmedBookings;\r\n if (selected === \"queued\") return queuedBookings;\r\n if (selected === \"cancelled\") return cancelledBookings;\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n {language.my_bookings}\r\n \r\n
    \r\n 0}\r\n anyCancelled={cancelledBookings.length > 0}\r\n anyQueued={queuedBookings.length > 0}\r\n selected={selected}\r\n setSelected={setSelected}\r\n language={language}\r\n bookings={mybookings}\r\n />\r\n \r\n\r\n {anyUnpaid && (\r\n
    \r\n {checkoutEnabled && (\r\n \r\n {language.pay}\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n setPaymentOpen(false)}\r\n language={language}\r\n culture={culture}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default Bookings;\r\n","import React from \"react\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\n\r\nconst query = gql`\r\n query history {\r\n history {\r\n id\r\n status\r\n isQueue\r\n isCancelled\r\n isConfirmed\r\n activity {\r\n id\r\n name\r\n infoText\r\n color\r\n location {\r\n id\r\n name\r\n }\r\n }\r\n occasion {\r\n id\r\n at\r\n duration\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst History = (props) => {\r\n const { data, loading, error } = useQuery(query);\r\n console.log(data);\r\n if (loading) return

    Loading...

    ;\r\n if (error) return

    Error :(

    ;\r\n return
    ;\r\n};\r\n\r\nexport default History;\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Button } from \"@mantine/core\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { AppContext, OPEN_BOOKINGSMODAL } from \"../Context\";\r\n\r\nconst useStyles = makeStyles({\r\n button: {\r\n \"@media(max-width: 667px)\": {\r\n border: \"none\",\r\n \"&:hover\": {\r\n border: \"none\",\r\n },\r\n \"&:active\": {\r\n border: \"none\",\r\n },\r\n \"&:visited\": {\r\n border: \"none\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst BookButton = (props) => {\r\n const { book, bookingData, loading, manages } = props;\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const { language, auth } = useSelector((state) => ({\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n language: state.language,\r\n }));\r\n\r\n const canBook = bookingData && bookingData.canReserve.reserve;\r\n const canEnqueue = bookingData && bookingData.canReserve.enqueue;\r\n const isOccasion = bookingData.__typename === \"occasion\";\r\n const handleBook = () => {\r\n if (manages.length < 2 && isOccasion) return book(bookingData.id);\r\n return dispatch({ type: OPEN_BOOKINGSMODAL, payload: bookingData });\r\n };\r\n\r\n let text = \"\";\r\n if (language) {\r\n text = canBook\r\n ? language.book\r\n : canEnqueue\r\n ? language.enqueue\r\n : language.reason[bookingData.canReserve.reason] ||\r\n bookingData.canReserve.reason;\r\n }\r\n\r\n if (!auth) return
    ;\r\n\r\n if (canBook || canEnqueue)\r\n return (\r\n handleBook()}\r\n classes={{\r\n outlined: classes.button,\r\n }}\r\n >{`${text}`}\r\n );\r\n\r\n return
    ;\r\n};\r\n\r\nexport default BookButton;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n progressContainer: {\r\n display: \"none\",\r\n padding: \"8px 16px\",\r\n \"@media(max-width: 1024px)\": {\r\n display: \"block\",\r\n },\r\n },\r\n noBookingsStroke: {\r\n color: theme.app.background[0],\r\n },\r\n successStroke: {\r\n backgroundColor: theme.app.successColor,\r\n color: theme.app.successColor,\r\n },\r\n warningStroke: {\r\n backgroundColor: theme.app.warningColor,\r\n color: theme.app.warningColor,\r\n },\r\n dangerStroke: {\r\n backgroundColor: theme.app.dangerColor,\r\n color: theme.app.dangerColor,\r\n },\r\n circularProgressContainer: {\r\n width: \"55px\",\r\n height: \"55px\",\r\n position: \"relative\",\r\n },\r\n progress: {\r\n color: theme.app.progressTrailColor,\r\n },\r\n progressTrail: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: \"50px\",\r\n },\r\n progressValue: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: \"50px\",\r\n },\r\n progressText: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n color: theme.app.labelColor,\r\n fontWeight: 500,\r\n },\r\n progressTextFull: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n color: theme.app.dangerColor,\r\n fontWeight: 500,\r\n },\r\n}));\r\n\r\nconst Progress = (props) => {\r\n const { language } = useSelector((state) => ({\r\n language: state.language,\r\n }));\r\n const { booked } = props;\r\n const classes = useStyles();\r\n const notEmpty = booked > 0;\r\n const notFull = booked < 100;\r\n const getStroke = (booked) => {\r\n if (booked < 1) {\r\n return classes.successStroke;\r\n }\r\n if (booked < 76) {\r\n return classes.successStroke;\r\n }\r\n if (booked < 90) {\r\n return classes.warningStroke;\r\n }\r\n return classes.dangerStroke;\r\n };\r\n\r\n return (\r\n
    \r\n {notFull && (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n )}\r\n {notEmpty && (\r\n \r\n {notFull ? `${booked}%` : `FULLT`}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Progress;\r\n","import React, { useState } from \"react\";\r\nimport Markdown from \"react-markdown\";\r\nimport moment from \"moment\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport Tab from \"@material-ui/core/Tab\";\r\nimport Tabs from \"@material-ui/core/Tabs\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { CloseButton } from \"@mantine/core\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport { getDuration } from \"./util\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n width: \"350px\",\r\n \"@media(max-width: 667px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n tabText: {\r\n color: \"black\",\r\n },\r\n header: {\r\n background: theme.app.background[1],\r\n color: theme.app.color,\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1000,\r\n },\r\n mainHeaderText: {\r\n padding: \"8px 16px\",\r\n fontSize: \"1.25rem !important\",\r\n fontWeight: 500,\r\n },\r\n subHeaderText: { padding: \"8px 16px\", fontSize: \"1rem !important\" },\r\n contentContainer: {},\r\n tagsContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n padding: \"0 8px\",\r\n margin: \"16px 0\",\r\n },\r\n tab: {\r\n opacity: 1,\r\n },\r\n tag: {\r\n marginRight: \"8px\",\r\n },\r\n tabContent: {\r\n padding: \"16px\",\r\n },\r\n at: {\r\n color: theme.app.color,\r\n fontSize: \"0.875rem\",\r\n },\r\n duration: {\r\n color: theme.app.color,\r\n fontSize: \"0.75rem\",\r\n fontWeight: 500,\r\n },\r\n button: {\r\n margin: \".5rem\",\r\n borderRadius: \"50%\",\r\n color: theme.app.labelColor,\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.shortest,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.app.hoverBackground[1],\r\n },\r\n },\r\n infoText: { fontSize: \"0.8125rem\", color: \"theme.app.secondaryColor\" },\r\n}));\r\n\r\nconst TabContainer = ({ children }) => (\r\n {children}\r\n);\r\n\r\nconst SideInfo = (props) => {\r\n const { culture, language } = useSelector((state) => ({\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n }));\r\n const { open, onClose, activity, occasion } = props;\r\n const classes = useStyles();\r\n const [value, setValue] = useState(0);\r\n const handleChange = (event, value) => setValue(value);\r\n const orderedOccasions =\r\n activity.occasions &&\r\n activity.occasions.slice().sort((a, b) => new Date(a.at) - new Date(b.at));\r\n\r\n const activeLocale = culture.split(\"-\")[0];\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n {activity.name}\r\n \r\n {occasion && (\r\n \r\n {moment(occasion.at).locale(activeLocale).format(\"LLLL\")}\r\n \r\n )}\r\n\r\n {activity.tags && (\r\n
    \r\n {activity.tags.map((t, i) => (\r\n \r\n ))}\r\n
    \r\n )}\r\n\r\n \r\n \r\n {orderedOccasions && (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n {value === 0 && (\r\n \r\n \r\n \r\n )}\r\n {value === 1 && (\r\n \r\n \r\n {orderedOccasions.map((o, i) => {\r\n const at = moment(o.at).locale(activeLocale).format(\"LLLL\");\r\n const duration = getDuration(\r\n o.duration,\r\n activeLocale,\r\n language\r\n );\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SideInfo;\r\n","import { createContext } from \"react\";\r\n\r\nexport const ModalContext = createContext(null);\r\n","import React, { useState, useContext } from \"react\";\r\nimport moment from \"moment\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { Button } from \"@mantine/core\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport LocationIcon from \"@material-ui/icons/Place\";\r\nimport PaymentIcon from \"@material-ui/icons/Payment\";\r\nimport TimeIcon from \"@material-ui/icons/Schedule\";\r\nimport { MY_BOOKINGS } from \"../routes\";\r\nimport BookButton from \"./bookButton\";\r\nimport Progress from \"../Common/progress\";\r\nimport ActivityColor from \"../Common/activityColor\";\r\nimport SideInfo from \"../Common/sideInfo\";\r\nimport { STATE_ACTIVE_PERSON_ID, STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport { ModalContext } from \"../Context/ModalContext\";\r\nimport { getDuration } from \"../Common/util\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n listItem: {\r\n border: `1px solid ${theme.app.iconDisabledColor}`,\r\n borderBottom: \"none\",\r\n background: theme.app.background[1],\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto\",\r\n gridGap: \"8px\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n padding: \"0.5rem\",\r\n \"&:first-child\": {\r\n borderRadius: \"4px 4px 0 0\",\r\n },\r\n \"&:last-child\": {\r\n borderRadius: \"0 0 4px 4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: \"4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"@media(max-width: 1300px)\": {\r\n \"&:first-child\": {\r\n borderRadius: 0,\r\n },\r\n \"&:last-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n \"@media(max-width: 600px)\": {\r\n \"&:first-child\": {\r\n marginTop: \"16px\",\r\n },\r\n gridTemplateColumns: \"1fr\",\r\n marginBottom: \"16px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n content: { padding: \"8px\" },\r\n infoContainer: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"auto auto auto 1fr\",\r\n gridGap: \"16px\",\r\n alignItems: \"center\",\r\n margin: \"8px 0 0\",\r\n \"@media(max-width: 600px)\": {\r\n gridGap: \"8px\",\r\n },\r\n },\r\n title: {\r\n \"@media(max-width: 667px)\": {\r\n fontSize: \"1.1rem\",\r\n },\r\n },\r\n resource: {\r\n color: theme.app.labelColor,\r\n lineHeight: 1,\r\n fontSize: \"0.875rem\",\r\n },\r\n info: {},\r\n infoIcon: {\r\n fontSize: \"20px\",\r\n color: theme.app.labelColor,\r\n },\r\n infoItem: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginBottom: \"8px\",\r\n color: theme.app.labelColor,\r\n \"&:last-child\": {\r\n marginBottom: 0,\r\n },\r\n },\r\n infoText: {\r\n color: theme.app.labelColor,\r\n fontSize: \"0.8125rem\",\r\n fontWeight: 500,\r\n \"&:before\": {\r\n content: '\" \"',\r\n whiteSpace: \"pre\",\r\n },\r\n \"@media(max-width: 600px)\": {\r\n fontSize: \"0.75rem\",\r\n },\r\n },\r\n reason: {\r\n fontStyle: \"italic\",\r\n color: theme.app.dangerColor,\r\n lineHeight: 1.6,\r\n fontSize: \"0.875rem\",\r\n },\r\n actionContainer: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n padding: \"8px\",\r\n \"@media(max-width: 600px)\": {\r\n padding: \"4px 0\",\r\n // borderTop: `1px solid ${theme.app.borderColor}`,\r\n justifyContent: \"flex-end\",\r\n },\r\n },\r\n actionButton: {\r\n marginRight: \"8px\",\r\n color: theme.app.labelColor,\r\n \"@media(max-width: 600px)\": {\r\n marginRight: 0,\r\n border: \"none\",\r\n },\r\n },\r\n actionButtonText: {},\r\n}));\r\n\r\nconst BOOK_OCCASION = gql`\r\n mutation reserveOccasion($id: String, $participantId: Guid) {\r\n reserveOccasion(occasionId: $id, participantId: $participantId) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst getState = (state) => ({\r\n activePersonId: state.cookies[STATE_ACTIVE_PERSON_ID],\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n});\r\n\r\nconst Occasion = React.memo(function Occasion(props) {\r\n const { occasion, manages } = props;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const context = useContext(AppContext);\r\n const { openModal, setOpenModal } = useContext(ModalContext);\r\n const { dispatch } = context;\r\n const { culture, language, activePersonId } = useSelector((state) =>\r\n getState(state)\r\n );\r\n const handleShowInfo = () => setOpen(true);\r\n const handleCloseInfo = () => setOpen(false);\r\n const handleMutationSuccess = ({ reserveOccasion }) => {\r\n const { failed, errorMessage } = reserveOccasion;\r\n\r\n if (failed) {\r\n return dispatch({\r\n type: OPEN_TOAST,\r\n toastText: errorMessage,\r\n toastType: \"error\",\r\n });\r\n }\r\n if (price.inclVat > 0) {\r\n setOpenModal(true);\r\n } else {\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.bookingSucceed,\r\n toastType: \"success\",\r\n });\r\n }\r\n };\r\n const handleMutationError = (error) => {\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.errorMsg,\r\n ToastType: \"error\",\r\n });\r\n };\r\n const [bookOccasion, { loading }] = useMutation(BOOK_OCCASION, {\r\n variables: { id: occasion.id, participantId: activePersonId },\r\n onCompleted: handleMutationSuccess,\r\n onError: handleMutationError,\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n });\r\n const activeLocale = culture.split(\"-\")[0];\r\n const activity = occasion.activity;\r\n const occasionDuration = getDuration(\r\n occasion.duration,\r\n activeLocale,\r\n language\r\n );\r\n const price = occasion.activity.price || {};\r\n const booked = Math.round(\r\n ((occasion.maxParticipants - occasion.freeSlots) /\r\n occasion.maxParticipants) *\r\n 100\r\n );\r\n const anyResource = occasion.resourceAssignments.length > 0;\r\n const resource = anyResource && occasion.resourceAssignments[0].resource;\r\n\r\n const blocked = !occasion.canReserve.reserve && !occasion.canReserve.enqueue;\r\n const reason =\r\n language.reason[occasion.canReserve.reason] || occasion.canReserve.reason;\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n {activity.name}\r\n \r\n {`${\r\n resource.name ? resource.name : \"\"\r\n }`}\r\n {blocked && (\r\n \r\n {reason}\r\n \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    {activity.location.name}
    \r\n
    \r\n \r\n \r\n
    \r\n {price.inclVat > 0 ? `${price.inclVat}:-` : `0:-`}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {moment(occasion.at).format(\"LT\")}\r\n
    \r\n
    \r\n \r\n \r\n
    {occasionDuration}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {language.showInfo}
    \r\n \r\n {!blocked && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n );\r\n});\r\n\r\nexport default Occasion;\r\n","import moment from \"moment\";\r\n\r\nconst getTags = (occasions) => {\r\n if (!occasions || occasions.length < 1) return [];\r\n let tags = [];\r\n occasions.forEach((o) => {\r\n o.activity.tags.forEach((t) => {\r\n if (!tags.includes(t)) {\r\n tags = [...tags, t];\r\n }\r\n });\r\n });\r\n return tags.sort();\r\n};\r\n\r\nconst getWeekdays = (occasions, locale) => {\r\n if (!occasions || occasions.length < 1) return [];\r\n let weekdays = [];\r\n occasions.forEach((o) => {\r\n let weekday = moment(o.at).locale(locale).format(\"dddd\");\r\n if (!weekdays.includes(weekday)) {\r\n weekdays = [...weekdays, weekday];\r\n }\r\n });\r\n return weekdays;\r\n};\r\n\r\nconst getActivities = (occasions) => {\r\n if (!occasions || occasions.length < 1) return [];\r\n let activities = [];\r\n occasions.forEach((o) => {\r\n let activity = o.activity.name;\r\n if (!activities.includes(activity)) {\r\n activities = [...activities, activity];\r\n }\r\n });\r\n return activities;\r\n};\r\n\r\nconst getLocations = (occasions) => {\r\n if (!occasions || occasions.length < 1) return [];\r\n let locations = [];\r\n occasions.forEach((o) => {\r\n let location = o.activity.location.name;\r\n if (!locations.includes(location)) {\r\n locations = [...locations, location];\r\n }\r\n });\r\n return locations;\r\n};\r\n\r\nexport const getFilterData = (week, locale) => {\r\n const occasions = week.occasions.filter((o) =>\r\n moment(o.at).isAfter(moment())\r\n );\r\n return {\r\n locations: getLocations(occasions),\r\n activities: getActivities(occasions),\r\n weekdays: getWeekdays(occasions, locale),\r\n tags: getTags(occasions),\r\n };\r\n};\r\n\r\nconst groupOccasions = (occasions, locale) => {\r\n let groupedOccasions = [];\r\n let weekdays = [];\r\n occasions.forEach((o) => {\r\n const weekday = moment(o.at).locale(locale).format(\"dddd\");\r\n if (!weekdays.includes(weekday)) {\r\n weekdays = [...weekdays, weekday];\r\n }\r\n });\r\n weekdays.forEach((w) => {\r\n const grouped = occasions.filter((o) => o.weekday === w);\r\n groupedOccasions = [\r\n ...groupedOccasions,\r\n { weekday: w, occasions: grouped },\r\n ];\r\n });\r\n return groupedOccasions;\r\n};\r\n\r\nexport const getFilteredOccasions = (occasions, filter, culture) => {\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const locations = () => {\r\n if (filter.locations.length > 0) {\r\n return occasions.filter((o) =>\r\n filter.locations.includes(o.activity.location.name)\r\n );\r\n }\r\n return occasions;\r\n };\r\n\r\n const activities = () => {\r\n const occasions = locations();\r\n if (filter.activities.length > 0) {\r\n return occasions.filter((o) =>\r\n filter.activities.includes(o.activity.name)\r\n );\r\n }\r\n return occasions;\r\n };\r\n\r\n const weekdays = () => {\r\n const occasions = activities();\r\n if (filter.weekdays.length > 0) {\r\n return occasions.filter((o) => filter.weekdays.includes(o.weekday));\r\n }\r\n return occasions;\r\n };\r\n\r\n const tags = () => {\r\n const occasions = weekdays();\r\n if (filter.tags.length > 0) {\r\n return occasions.filter((o) => {\r\n let included = false;\r\n o.activity.tags.forEach((tag) => {\r\n if (filter.tags.includes(tag)) {\r\n included = true;\r\n }\r\n });\r\n return included;\r\n });\r\n }\r\n return occasions;\r\n };\r\n const filtered = tags();\r\n const sorted = filtered.sort((a, b) => new Date(a.at) - new Date(b.at));\r\n const grouped = groupOccasions(sorted, locale);\r\n return grouped;\r\n};\r\n\r\nexport const getAllFilters = (filter) => {\r\n let filters = [];\r\n const filterTypes = Object.keys(filter);\r\n if (filterTypes.length < 1) return filters;\r\n filterTypes.forEach((t) => {\r\n let typeFilter = filter[t];\r\n typeFilter.forEach((f) => {\r\n filters = [...filters, { value: f, type: t, label: f }];\r\n });\r\n });\r\n return filters;\r\n};\r\n","import React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport List from \"@material-ui/core/List\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ForwardIcon from \"@material-ui/icons/ChevronRight\";\r\nimport Occasion from \"../occasion\";\r\nimport { getFilteredOccasions, getAllFilters } from \"../Filter/util\";\r\nimport { AppContext, SET_OCCASIONFILTER } from \"../Context\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n width: \"1024px\",\r\n margin: \"0 auto\",\r\n color: theme.app.color,\r\n \"@media(max-width: 1300px)\": {\r\n width: \"77%\",\r\n },\r\n \"@media(max-width: 1024px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n heading: {\r\n textTransform: \"capitalize\",\r\n color: theme.app.labelColor,\r\n margin: \"24px 0 8px\",\r\n lineHeight: 1.2,\r\n \"@media(max-width: 768px)\": {\r\n margin: \"16px 0 8px\",\r\n padding: \"0 8px 2px\",\r\n },\r\n \"@media(max-width: 600px)\": {\r\n marginTop: 0,\r\n padding: \"0 8px\",\r\n \"&:first-child\": { paddingTop: \"8px\" },\r\n },\r\n },\r\n filterContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: \"0.5rem\",\r\n marginTop: \"1rem\",\r\n },\r\n list: { padding: 0 },\r\n noBookable: {\r\n textAlign: \"center\",\r\n },\r\n noBookableButtonContainer: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n marginTop: \"16px\",\r\n },\r\n buttonText: {\r\n \"&:after\": {\r\n content: \"' '\",\r\n whiteSpace: \"pre\",\r\n },\r\n },\r\n chip: {\r\n margin: \"4px\",\r\n \"& svg\": {\r\n color: theme.app.badge.color,\r\n },\r\n },\r\n}));\r\n\r\nconst reapplyActiveFilters = (\r\n activeFilters,\r\n setFilter,\r\n setIsFiltersReapplied,\r\n occasionFilter\r\n) => {\r\n const { locations, activities, weekdays, tags } = activeFilters;\r\n\r\n if (locations) {\r\n locations.forEach((locationName) => {\r\n if (!occasionFilter.locations.includes(locationName)) {\r\n setFilter(\"locations\", locationName, true);\r\n }\r\n });\r\n }\r\n if (activities) {\r\n activities.forEach((activityName) => {\r\n if (!occasionFilter.activities.includes(activityName)) {\r\n setFilter(\"activities\", activityName, true);\r\n }\r\n });\r\n }\r\n if (weekdays) {\r\n weekdays.forEach((weekDay) => {\r\n if (!occasionFilter.weekdays.includes(weekDay)) {\r\n setFilter(\"weekdays\", weekDay, true);\r\n }\r\n });\r\n }\r\n if (tags) {\r\n tags.forEach((tagName) => {\r\n if (!occasionFilter.tags.includes(tagName)) {\r\n setFilter(\"tags\", tagName, true);\r\n }\r\n });\r\n }\r\n setIsFiltersReapplied(true);\r\n};\r\n\r\nconst OccasionsList = (props) => {\r\n const { manages, week, occasions } = props;\r\n const classes = useStyles();\r\n const [isFiltersReapplied, setIsFiltersReapplied] = useState(false);\r\n const { language, culture } = useSelector((state) => ({\r\n language: state.language,\r\n culture: state.cookies[STATE_CULTURE],\r\n }));\r\n const context = useContext(AppContext);\r\n const { dispatch, state } = context;\r\n const { occasionFilter } = state;\r\n const filteredOccasions = getFilteredOccasions(\r\n occasions,\r\n occasionFilter,\r\n culture\r\n );\r\n const filterChips = getAllFilters(occasionFilter);\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const removeFilter = (type, value, checked) =>\r\n dispatch({ type: SET_OCCASIONFILTER, payload: { type, value, checked } });\r\n\r\n const setFilter = React.useCallback(\r\n (type, value, checked) => {\r\n dispatch({ type: SET_OCCASIONFILTER, payload: { type, value, checked } });\r\n },\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n const activeFilters = JSON.parse(localStorage.getItem(\"ActiveFilters\"));\r\n if (activeFilters && isFiltersReapplied === false) {\r\n reapplyActiveFilters(\r\n activeFilters,\r\n setFilter,\r\n setIsFiltersReapplied,\r\n occasionFilter\r\n );\r\n }\r\n }, [occasionFilter, isFiltersReapplied, setFilter]);\r\n\r\n return (\r\n
    \r\n
    \r\n {filterChips.map((filter, i) => {\r\n return (\r\n removeFilter(filter.type, filter.value, false)}\r\n onDelete={() => removeFilter(filter.type, filter.value, false)}\r\n color=\"primary\"\r\n className={classes.chip}\r\n aria-label={`${language.removeFilter} ${filter.label}`}\r\n />\r\n );\r\n })}\r\n
    \r\n
    \r\n {filteredOccasions.map((o, i) => {\r\n return (\r\n \r\n \r\n {moment(o.occasions[0].at)\r\n .locale(locale)\r\n .format(\"dddd DD MMM YYYY\")}\r\n \r\n \r\n {o.occasions.map((occ, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n
    \r\n {filteredOccasions.length <= 0 ? (\r\n
    \r\n \r\n {`${language.nothing_bookable} - ${language.week} ${week.thisWeek}`}\r\n \r\n
    \r\n \r\n {language.next_week}\r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default OccasionsList;\r\n","import moment from \"moment\";\r\nimport \"moment/locale/sv\";\r\n\r\nconst holidays = [\r\n \"20190622\",\r\n \"20191102\",\r\n \"20191225\",\r\n \"20191226\",\r\n \"20200101\",\r\n \"20200106\",\r\n \"20200410\",\r\n \"20200412\",\r\n \"20200413\",\r\n \"20200501\",\r\n \"20200521\",\r\n \"20200531\",\r\n \"20200606\",\r\n \"20200620\",\r\n \"20201031\",\r\n \"20201225\",\r\n \"20201226\",\r\n \"20210101\",\r\n \"20210106\",\r\n \"20210402\",\r\n \"20210404\",\r\n \"20210405\",\r\n \"20210501\",\r\n \"20210513\",\r\n \"20210523\",\r\n \"20210606\",\r\n \"20210626\",\r\n \"20211106\",\r\n \"20211225\",\r\n \"20211226\",\r\n \"20220101\",\r\n \"20220106\",\r\n \"20220415\",\r\n \"20220417\",\r\n \"20220418\",\r\n \"20220501\",\r\n \"20220526\",\r\n \"20220605\",\r\n \"20220606\",\r\n \"20220625\",\r\n \"20221105\",\r\n \"20221225\",\r\n \"20221226\",\r\n \"20230101\",\r\n \"20230106\",\r\n \"20230407\",\r\n \"20230409\",\r\n \"20230410\",\r\n \"20230501\",\r\n \"20230518\",\r\n \"20230528\",\r\n \"20230606\",\r\n \"20230624\",\r\n \"20231104\",\r\n \"20231225\",\r\n \"20231226\",\r\n];\r\n\r\nconst getDate = (day, week, year) => {\r\n return moment()\r\n .locale(\"sv\")\r\n .year(year)\r\n .isoWeek(week)\r\n .isoWeekday(day)\r\n .hour(0)\r\n .minute(0)\r\n .second(0)\r\n .milliseconds(0)\r\n .toISOString();\r\n};\r\n\r\nexport const getDays = (week, occasionDates) => {\r\n const days = [1, 2, 3, 4, 5, 6, 7];\r\n let dates = [];\r\n const { thisWeek, thisYear } = week;\r\n const getDay = (day) => {\r\n const date = getDate(day, thisWeek, thisYear);\r\n return {\r\n day,\r\n date,\r\n hasOccasions: occasionDates.includes(moment(date).format(\"YYYYMMDD\")),\r\n isHoliday:\r\n day === 7 || holidays.includes(moment(date).format(\"YYYYMMDD\")),\r\n isToday: moment(date).format(\"YYYYMMDD\") === moment().format(\"YYYYMMDD\"),\r\n value: moment(date).format(\"dddd\"),\r\n };\r\n };\r\n days.forEach((d) => {\r\n dates = [...dates, getDay(d)];\r\n });\r\n return dates;\r\n};\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport { Link } from \"react-router-dom\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\r\nimport BackArrow from \"@material-ui/icons/ChevronLeft\";\r\nimport ForwardArrow from \"@material-ui/icons/ChevronRight\";\r\nimport { AppContext, SET_OCCASIONFILTER } from \"../Context\";\r\nimport { getDays } from \"./util\";\r\nimport { UnstyledButton } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n selector: {\r\n width: \"410px\",\r\n margin: \"0 auto\",\r\n \"@media(max-width: 667px)\": {\r\n width: \"340px\",\r\n },\r\n \"@media(max-width: 340px)\": {\r\n width: \"305px\",\r\n },\r\n },\r\n weekYearContainer: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr 1fr\",\r\n gridGap: \"16px\",\r\n padding: \"0 34px\",\r\n color: theme.app.labelColor,\r\n },\r\n year: {\r\n fontSize: \"0.8125rem\",\r\n fontWeight: 500,\r\n textTransform: \"uppercase\",\r\n },\r\n week: {\r\n fontSize: \"0.8125rem\",\r\n fontWeight: 500,\r\n textAlign: \"right\",\r\n textTransform: \"uppercase\",\r\n },\r\n selectorContainer: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"30px 350px 30px\",\r\n \"@media(max-width: 667px)\": {\r\n gridTemplateColumns: \"30px 280px 30px\",\r\n },\r\n \"@media(max-width: 340px)\": {\r\n gridTemplateColumns: \"30px 245px 30px\",\r\n },\r\n },\r\n disabled: {\r\n opacity: 0.5,\r\n },\r\n dayContainer: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(7, 50px)\",\r\n \"@media(max-width: 667px)\": {\r\n gridTemplateColumns: \"repeat(7, 40px)\",\r\n },\r\n \"@media(max-width: 340px)\": {\r\n gridTemplateColumns: \"repeat(7, 35px)\",\r\n },\r\n },\r\n item: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr\",\r\n justifyItems: \"center\", \r\n border: `1px solid ${theme.app.labelColor}`,\r\n borderLeft: \"none\",\r\n backgroundColor: theme.app.background[1],\r\n color: theme.app.labelColor,\r\n \"&:first-child\": {\r\n borderRadius: \"4px 0 0 4px\",\r\n borderLeft: `1px solid ${theme.app.labelColor}`,\r\n \"& button\": {\r\n borderRadius: \"4px 0 0 4px\",\r\n },\r\n },\r\n \"&:last-child\": {\r\n borderRadius: \"0 4px 4px 0\",\r\n \"& button\": {\r\n borderRadius: \"0 4px 4px 0\",\r\n },\r\n },\r\n },\r\n today: {\r\n color: theme.app.primaryColors.main,\r\n },\r\n itemButton: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n padding: \"2px\",\r\n color: theme.app.labelColor,\r\n backgroundColor: theme.app.background[1],\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.short,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n \"&:disabled\": {\r\n // opacity: 0.5\r\n },\r\n },\r\n selected: {\r\n color: theme.app.labelColor,\r\n backgroundColor: theme.app.background[3],\r\n },\r\n date: {\r\n fontSize: \"1.0625rem\",\r\n fontWeight: 500,\r\n lineHeight: 1,\r\n color: theme.app.labelColor,\r\n \"@media(max-width: 340px)\": {\r\n fontSize: \"0.875rem\",\r\n },\r\n },\r\n weekday: {\r\n color: theme.app.labelColor,\r\n fontSize: \"0.625rem\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 500,\r\n },\r\n holiday: {\r\n color: theme.app.dangerColor,\r\n },\r\n arrowButton: {\r\n color: theme.app.labelColor,\r\n \"&:focus\": {\r\n outline: `1px solid ${theme.app.primaryColors.main}`,\r\n borderRadius: \"4px\",\r\n },\r\n },\r\n}));\r\n\r\nconst Selector = (props) => {\r\n const { anyPrevious, week, loading } = props;\r\n const classes = useStyles();\r\n const language = useSelector((state) => state.language);\r\n const context = useContext(AppContext);\r\n const { state, dispatch } = context;\r\n const { occasionFilter } = state;\r\n const setFilter = (type, value, checked) =>\r\n dispatch({ type: SET_OCCASIONFILTER, payload: { type, value, checked } });\r\n let occasionDates = [];\r\n week.occasions.forEach((o) => {\r\n const date = moment(o.at).format(\"YYYYMMDD\");\r\n if (!occasionDates.includes(date)) {\r\n occasionDates = [...occasionDates, date];\r\n }\r\n });\r\n const days = getDays(week, occasionDates);\r\n return (\r\n
    \r\n
    \r\n \r\n {`${moment(days[0].date).format(\"MMM\")} ${week.thisYear}`}\r\n \r\n \r\n {`${language.shortWeek}${week.thisWeek}`}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n {days.map((d, i) => {\r\n const selected = occasionFilter.weekdays.includes(d.value);\r\n return (\r\n \r\n setFilter(\"weekdays\", d.value, !selected)}\r\n sx={{width: \"100%\", height: \"100%\", padding: \"0.35rem 0.25rem 0.25rem 0.25rem\", textAlign: \"center\"}}\r\n aria-label={`${language.addToFilter} ${moment(d.date).format(\"ddd\")} ${moment(d.date).format(\"DD\")} ${moment(d.date).format(\"MMMM\")} ${language.toFilter}`}\r\n >\r\n
    \r\n \r\n {moment(d.date).format(\"DD\")}\r\n \r\n \r\n {moment(d.date).format(\"ddd\")}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Selector;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport ExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport ExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport ExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\n\r\nconst useStyles = makeStyles({\r\n heading: {\r\n fontSize: \"15px\",\r\n },\r\n secondaryHeading: {\r\n fontSize: \"15px\",\r\n color: \"rgba(0,0,0,0.54)\",\r\n },\r\n icon: {\r\n verticalAlign: \"bottom\",\r\n height: 20,\r\n width: 20,\r\n },\r\n column: {\r\n flexBasis: \"33.33%\",\r\n },\r\n details: {\r\n display: \"block\",\r\n },\r\n badge: {\r\n top: \"-2px\",\r\n right: \"-30px\",\r\n backgroundColor: \"rgba(0,0,0,0.4)\",\r\n },\r\n badgeWarning: {\r\n top: \"-2px\",\r\n right: \"-30px\",\r\n backgroundColor: \"rgb(216,27,96)\",\r\n },\r\n});\r\n\r\nconst CardSection = (props) => {\r\n const {\r\n heading,\r\n secondaryHeading,\r\n expanded,\r\n toggleExpanded,\r\n badgeContent,\r\n badgeWarning,\r\n defaultExpanded,\r\n } = props;\r\n const classes = useStyles();\r\n const badgeVisible = !expanded && badgeContent;\r\n\r\n return (\r\n \r\n }>\r\n
    \r\n {badgeVisible ? (\r\n \r\n {heading}\r\n \r\n ) : (\r\n {heading}\r\n )}\r\n
    \r\n
    \r\n \r\n {secondaryHeading}\r\n \r\n
    \r\n
    \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CardSection;\r\n","import React, { useState, useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport { AppContext, SET_OCCASIONFILTER } from \"../Context\";\r\nimport { getFilterData } from \"./util\";\r\n\r\nimport CardSection from \"../Common/cardSection\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport { CloseButton } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n weekViewFilter: {\r\n height: theme.height,\r\n },\r\n header: {\r\n // height: \"50px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"0 16px\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n },\r\n heading: {\r\n fontSize: \"1.25rem\",\r\n padding: \"0 .7rem\",\r\n marginTop: \"0.45rem\"\r\n },\r\n button: {\r\n color: theme.app.labelColor,\r\n borderRadius: \"50%\",\r\n cursor: \"pointer\",\r\n padding: \"4px\",\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.shortest,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.app.hoverBackground[1],\r\n },\r\n },\r\n content: {\r\n // height: \"calc(100% - 50px)\",\r\n overflow: \"auto\",\r\n background: theme.app.background[0],\r\n },\r\n checkbox: {\r\n padding: \"6px\",\r\n },\r\n labelText: {\r\n fontSize: \"0.875rem\",\r\n color: theme.app.labelColor,\r\n },\r\n}));\r\n\r\nconst Filter = (props) => {\r\n const { close, week } = props;\r\n const classes = useStyles();\r\n const [activePanel, setActivePanel] = useState(\"activities\");\r\n const { language, culture } = useSelector((state) => ({\r\n language: state.language,\r\n culture: state.cookies[STATE_CULTURE],\r\n }));\r\n const context = useContext(AppContext);\r\n const { state, dispatch } = context;\r\n const setFilter = (type, value, checked) =>\r\n dispatch({ type: SET_OCCASIONFILTER, payload: { type, value, checked } });\r\n const { occasionFilter } = state;\r\n const togglePanel = (panel) => {\r\n if (panel === activePanel) {\r\n return setActivePanel(\"\");\r\n }\r\n return setActivePanel(panel);\r\n };\r\n\r\n if (!week) {\r\n return null;\r\n }\r\n\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const { locations, activities, weekdays, tags } = getFilterData(week, locale);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n

    {language.filter}

    \r\n\r\n
    \r\n
    \r\n {locations.length > 0 && (\r\n togglePanel(\"locations\")}\r\n >\r\n {locations.map((locationName, i) => (\r\n
    \r\n \r\n setFilter(\"locations\", e.target.value, e.target.checked)\r\n }\r\n value={locationName}\r\n />\r\n }\r\n label={locationName}\r\n />\r\n
    \r\n ))}\r\n \r\n )}\r\n\r\n {activities.length > 0 && (\r\n togglePanel(\"activities\")}\r\n >\r\n {activities.map((activityName, i) => (\r\n
    \r\n \r\n setFilter(\r\n \"activities\",\r\n e.target.value,\r\n e.target.checked\r\n )\r\n }\r\n className={classes.checkbox}\r\n value={activityName}\r\n />\r\n }\r\n label={activityName}\r\n />\r\n
    \r\n ))}\r\n \r\n )}\r\n\r\n {weekdays.length > 0 && (\r\n togglePanel(\"weekdays\")}\r\n >\r\n {weekdays.map((weekDay, i) => (\r\n
    \r\n \r\n setFilter(\"weekdays\", e.target.value, e.target.checked)\r\n }\r\n className={classes.checkbox}\r\n value={weekDay}\r\n />\r\n }\r\n label={weekDay}\r\n />\r\n
    \r\n ))}\r\n \r\n )}\r\n\r\n {tags.length > 0 && (\r\n togglePanel(\"tags\")}\r\n >\r\n {tags.map((t, i) => (\r\n
    \r\n \r\n setFilter(\"tags\", e.target.value, e.target.checked)\r\n }\r\n className={classes.checkbox}\r\n value={t}\r\n />\r\n }\r\n label={t}\r\n />\r\n
    \r\n ))}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Filter;\r\n","import { useEffect } from \"react\";\r\n\r\nconst Refetch = (props) => {\r\n const { isAuth, notAuth, refetch, cb } = props;\r\n\r\n useEffect(() => {\r\n if (isAuth && notAuth) {\r\n refetch();\r\n cb && cb();\r\n }\r\n }, [isAuth, notAuth, cb, refetch]);\r\n\r\n return null;\r\n};\r\n\r\nexport default Refetch;\r\n","import React, { useEffect, useContext, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport classNames from \"classnames\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport FilterIcon from \"@material-ui/icons/FilterList\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport OccasionsList from \"./occationsList\";\r\nimport Selector from \"./selector\";\r\nimport { SpinnerContainer } from \"../Common/UIComponents\";\r\nimport moment from \"moment\";\r\nimport Filter from \"../Filter\";\r\nimport BusySpinner from \"../Common/busySpinner\";\r\nimport Refetch from \"../Common/refetch\";\r\nimport { AppContext, SET_OCCASIONFILTER } from \"../Context\";\r\nimport { UnstyledButton } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n weekView: {\r\n backgroundColor: theme.app.background[0],\r\n color: theme.app.color,\r\n // height: `${theme.height - 64}px`,\r\n position: \"relative\",\r\n },\r\n header: {\r\n background: theme.app.background[1],\r\n color: theme.app.color,\r\n minHeight: \"80px\",\r\n height: \"fit-content\",\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto 1fr\",\r\n alignItems: \"center\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n padding: \"0 16px\",\r\n \"@media(max-width: 768px)\": {\r\n padding: 0,\r\n gridTemplateColumns: \"1fr\",\r\n },\r\n },\r\n headerText: {\r\n fontSize: \"1.35rem\",\r\n fontWeight: 500,\r\n color: theme.app.labelColor,\r\n \"@media(max-width: 768px)\": {\r\n display: \"none\",\r\n },\r\n },\r\n drawerPaper: {\r\n width: \"300px\",\r\n \"@media(max-width:667px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n filterButtonContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n color: theme.app.labelColor,\r\n \"@media(max-width: 768px)\": {\r\n display: \"none\",\r\n },\r\n },\r\n filterButtonContainerSmall: {\r\n display: \"none\",\r\n position: \"fixed\",\r\n zIndex: \"100\",\r\n right: \"16px\",\r\n top: \"149px\",\r\n background: theme.app.background[2],\r\n color: theme.app.labelColor,\r\n border: `1px solid ${theme.app.borderColor}`,\r\n borderRadius: \"50%\",\r\n padding: \"2px\",\r\n \"@media(max-width: 768px)\": {\r\n display: \"block\",\r\n },\r\n },\r\n filterButton: {\r\n padding: \"4px\",\r\n borderRadius: \"50%\",\r\n color: theme.app.labelColor,\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.short,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n contentContainer: {\r\n // height: \"calc(100% - 500px)\",\r\n overflow: \"auto\",\r\n position: \"relative\",\r\n paddingBottom: \"16px\",\r\n \"@media(max-width: 667px)\": {\r\n // height: \"calc(100% - 500px)\",\r\n paddingBottom: 0,\r\n overflowY: \"scroll\",\r\n \"-webkit-overflow-scrolling\": \"touch\",\r\n },\r\n },\r\n}));\r\n\r\nexport const GET_WEEK = gql`\r\n query week($week: Int, $year: Int) {\r\n locations {\r\n id\r\n name\r\n }\r\n week(week: $week, year: $year) {\r\n prevWeek\r\n prevYear\r\n thisWeek\r\n thisYear\r\n nextWeek\r\n nextYear\r\n from\r\n until\r\n occasions {\r\n id\r\n at\r\n duration\r\n maxParticipants\r\n maxQueueSlots\r\n activity {\r\n id\r\n name\r\n infoText\r\n color\r\n tags\r\n location {\r\n id\r\n name\r\n }\r\n price {\r\n inclVat\r\n priceLevelId\r\n priceLevelName\r\n }\r\n }\r\n resourceAssignments {\r\n resource {\r\n id\r\n name\r\n }\r\n role\r\n }\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n freeSlots\r\n queue\r\n }\r\n }\r\n manages {\r\n id\r\n name\r\n email\r\n civicRegistrationNumber\r\n photo\r\n }\r\n }\r\n`;\r\n\r\n// const GET_LOCATION_NAME = gql`\r\n// query locations {\r\n// locations {\r\n// id\r\n// name\r\n// }\r\n// }\r\n// `\r\n\r\nconst WeekView = (props) => {\r\n const { match } = props;\r\n const classes = useStyles();\r\n const [filterOpen, setFilterOpen] = useState(false);\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const [locationData, setLocationData] = useState(undefined);\r\n const { language, culture, auth } = useSelector((state) => ({\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n }));\r\n const openFilter = () => setFilterOpen(true);\r\n const closeFilter = () => setFilterOpen(false);\r\n const params = {\r\n week: match.params.week,\r\n year: match.params.year,\r\n location: match.params.location,\r\n };\r\n const { data, loading, error, refetch } = useQuery(GET_WEEK, {\r\n variables: {\r\n week: params.week,\r\n year: params.year,\r\n },\r\n pollInterval: 30000,\r\n });\r\n\r\n if ((!data || !data.week) && auth) {\r\n refetch();\r\n }\r\n\r\n useEffect(() => {\r\n let pathName = `/booking/week/location/${match.params.location}`;\r\n let isPathMatchingParams = window.location.pathname === pathName;\r\n let activeFilters = JSON.parse(localStorage.getItem(\"ActiveFilters\"));\r\n\r\n if (locationData?.locationName !== undefined && isPathMatchingParams) {\r\n if (!activeFilters?.locations.includes(locationData.locationName)) {\r\n dispatch({\r\n type: SET_OCCASIONFILTER,\r\n payload: {\r\n type: \"locations\",\r\n value: locationData.locationName,\r\n checked: true,\r\n },\r\n });\r\n }\r\n }\r\n }, [match.params.location, locationData, dispatch]);\r\n\r\n if (loading) return
    loading...
    ;\r\n\r\n if (loading && !data.week)\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n if (error) return

    {error.message}

    ;\r\n const { week, manages } = data;\r\n const thisWeek = Number(moment().format(\"YYYY\") + moment().week());\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const yearWeek = Number(\r\n week.thisYear.toString() +\r\n (week.thisWeek < 10 ? \"0\" + week.thisWeek : week.thisWeek)\r\n );\r\n const now = moment();\r\n const currentOccasions = week.occasions\r\n .filter((o) => moment(o.at).isAfter(now))\r\n .map((o) => {\r\n return {\r\n ...o, //Add weekday to occasions\r\n weekday: moment(o.at).locale(locale).format(\"dddd\"),\r\n };\r\n });\r\n const firstOccasion = week.occasions && week.occasions[0];\r\n const locationById = data.locations.filter(\r\n (location) => location.id === params.location\r\n );\r\n const locationNameById = locationById[0] && locationById[0].name;\r\n\r\n if (\r\n params.location !== undefined &&\r\n locationData?.locationName === undefined\r\n ) {\r\n setLocationData({\r\n ...locationData,\r\n locationName: locationNameById,\r\n locationId: match.params.location,\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {language.week_schedule}\r\n \r\n thisWeek}\r\n />\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default WeekView;\r\n","import moment from \"moment\";\r\n\r\nexport const groupCourses = (courses) => {\r\n let groupedCourses = [];\r\n let locations = [];\r\n courses.forEach((c) => {\r\n const location = c.activity.location.name;\r\n if (!locations.includes(location)) {\r\n locations = [...locations, location];\r\n }\r\n });\r\n locations.forEach((l) => {\r\n const grouped = courses.filter((c) => c.activity.location.name === l);\r\n groupedCourses = [...groupedCourses, { location: l, courses: grouped }];\r\n });\r\n return groupedCourses;\r\n};\r\n\r\nexport const getFilteredCourses = (courses, filter) => {\r\n if (!courses) return [];\r\n const bookable = () => {\r\n if (filter.showOnlyBookable)\r\n return courses.filter(\r\n (c) => c.canReserve.reserve || c.canReserve.enqueue\r\n );\r\n return courses;\r\n };\r\n\r\n const startDates = () => {\r\n const courses = bookable();\r\n if (filter.startDates.length > 0) {\r\n return courses.filter((course) =>\r\n filter.startDates.includes(\r\n moment(course.firstOccasion).format(\"YYYYWW\")\r\n )\r\n );\r\n }\r\n return courses;\r\n };\r\n\r\n const locations = () => {\r\n const courses = startDates();\r\n if (filter.locations.length > 0) {\r\n return courses.filter((course) =>\r\n filter.locations.includes(course.activity.location.name)\r\n );\r\n }\r\n return courses;\r\n };\r\n\r\n const tags = () => {\r\n const courses = locations();\r\n if (filter.tags.length > 0) {\r\n return courses.filter((course) => {\r\n let included = false;\r\n course.activity.tags.forEach((tag) => {\r\n if (filter.tags.includes(tag)) {\r\n included = true;\r\n }\r\n });\r\n return included;\r\n });\r\n }\r\n return courses;\r\n };\r\n const filtered = tags();\r\n const sorted = filtered.sort(\r\n (a, b) => new Date(a.firstOccasion) - new Date(b.firstOccasion)\r\n );\r\n const grouped = groupCourses(sorted);\r\n return grouped;\r\n};\r\n\r\nexport const getAllFilters = (filter) => {\r\n let filters = [];\r\n const filterTypes = Object.keys(filter);\r\n if (filterTypes.length < 1) return filters;\r\n filterTypes.forEach((t) => {\r\n let typeFilter = filter[t];\r\n if (t === \"showOnlyBookable\") {\r\n if (typeFilter) {\r\n filters = [\r\n ...filters,\r\n { value: t, type: t, label: \"Visa endast bokningsbara\" },\r\n ];\r\n }\r\n return;\r\n }\r\n typeFilter.forEach((f) => {\r\n filters = [...filters, { value: f, type: t, label: f }];\r\n });\r\n });\r\n return filters;\r\n};\r\n\r\nexport const getWeeksFromCourses = (courses) => {\r\n if (!courses) return [];\r\n let returnWeeks = [];\r\n courses.map((c) => {\r\n returnWeeks = [...returnWeeks, moment(c.firstOccasion).format(\"YYYYWW\")];\r\n return returnWeeks;\r\n });\r\n return [...new Set(returnWeeks)].sort((a, b) => a - b);\r\n};\r\n\r\nexport const getTagsFromCourses = (courses) => {\r\n if (!courses) return [];\r\n let returnTags = [];\r\n courses.map((c) => {\r\n return c.activity.tags.map((t) => {\r\n if (returnTags.includes(t)) return false;\r\n return (returnTags = [...returnTags, t]);\r\n });\r\n });\r\n return returnTags.sort();\r\n};\r\n\r\nexport const getLocationsFromCourses = (courses) => {\r\n if (!courses) return [];\r\n let returnLocations = [];\r\n courses.map((c) => {\r\n if (returnLocations.includes(c.activity.location.name)) return false;\r\n return (returnLocations = [...returnLocations, c.activity.location.name]);\r\n });\r\n return returnLocations.sort();\r\n};\r\n","import React, { useState, useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport CardSection from \"../Common/cardSection\";\r\nimport { AppContext } from \"../Context\";\r\nimport {\r\n getLocationsFromCourses,\r\n getTagsFromCourses,\r\n getWeeksFromCourses,\r\n} from \"./util\";\r\nimport { SET_COURSEFILTER } from \"../Context\";\r\nimport { CloseButton } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n courseFilter: { height: theme.height },\r\n header: {\r\n // height: \"50px\",\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"0 16px\",\r\n },\r\n heading: {\r\n fontSize: \"1.25rem\",\r\n padding: \"0 .7rem\",\r\n marginTop: \"0.45rem\"\r\n },\r\n content: {\r\n height: \"calc(100% - 50px)\",\r\n overflow: \"auto\",\r\n background: theme.app.background[0],\r\n },\r\n bookable: {\r\n padding: \"16px\",\r\n background: theme.app.background[1],\r\n },\r\n label: {\r\n marginLeft: 0,\r\n },\r\n labelText: {\r\n fontSize: \"0.875rem\",\r\n color: theme.app.labelColor,\r\n },\r\n checkbox: {\r\n padding: \"6px\",\r\n },\r\n button: {\r\n color: theme.app.labelColor,\r\n borderRadius: \"50%\",\r\n cursor: \"pointer\",\r\n padding: \"4px\",\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.shortest,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.app.hoverBackground[1],\r\n },\r\n },\r\n small: {\r\n fontSize: \"0.75rem\",\r\n color: theme.app.secondaryColor,\r\n },\r\n}));\r\n\r\nconst CoursesFilter = (props) => {\r\n const { courses, close } = props;\r\n const classes = useStyles();\r\n const [activePanel, setActivePanel] = useState(\"tags\");\r\n const language = useSelector((state) => state.language);\r\n const context = useContext(AppContext);\r\n const { state, dispatch } = context;\r\n const { courseFilter } = state;\r\n const setCourseFilter = (type, value, checked) =>\r\n dispatch({ type: SET_COURSEFILTER, payload: { type, value, checked } });\r\n const togglePanel = (panel) =>\r\n setActivePanel(panel === activePanel ? \"\" : panel);\r\n const tags = getTagsFromCourses(courses);\r\n const locations = getLocationsFromCourses(courses);\r\n const weeks = getWeeksFromCourses(courses);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n

    {language.filter}

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n setCourseFilter(\"showOnlyBookable\", null, e.target.checked)\r\n }\r\n className={classes.checkbox}\r\n />\r\n }\r\n label={language.showBookableOnly}\r\n />\r\n
    \r\n
    \r\n {locations.length > 1 && (\r\n togglePanel(\"locations\")}\r\n >\r\n {locations.map((l, i) => (\r\n
    \r\n \r\n setCourseFilter(\r\n \"locations\",\r\n e.target.value,\r\n e.target.checked\r\n )\r\n }\r\n className={classes.checkbox}\r\n value={l}\r\n />\r\n }\r\n label={l}\r\n />\r\n
    \r\n ))}\r\n \r\n )}\r\n togglePanel(\"startDates\")}\r\n >\r\n {weeks.map((w, i) => {\r\n const getWeek = moment()\r\n .year(w.substring(0, 4))\r\n .week(w.substring(4, 6));\r\n const week = `${language.week} ${w.substring(4, 6)}`;\r\n const days = `${getWeek.startOf(\"week\").format(\"D/M\")} - ${getWeek\r\n .endOf(\"week\")\r\n .format(\"D/M\")}`;\r\n\r\n const Label = () => (\r\n
    \r\n {`${week} - `}\r\n {`(${days})`}\r\n
    \r\n );\r\n return (\r\n
    \r\n \r\n setCourseFilter(\r\n \"startDates\",\r\n e.target.value,\r\n e.target.checked\r\n )\r\n }\r\n className={classes.checkbox}\r\n value={w}\r\n />\r\n }\r\n label={
    \r\n );\r\n })}\r\n \r\n\r\n togglePanel(\"tags\")}\r\n >\r\n {tags.map((t, i) => (\r\n
    \r\n \r\n setCourseFilter(\r\n \"tags\",\r\n e.target.value,\r\n e.target.checked\r\n )\r\n }\r\n className={classes.checkbox}\r\n value={t}\r\n />\r\n }\r\n label={t}\r\n />\r\n
    \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CoursesFilter;\r\n","import React, { useContext, useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport gql from \"graphql-tag\";\r\nimport { MY_BOOKINGS } from \"../routes\";\r\nimport Progress from \"../Common/progress\";\r\nimport ActivityColor from \"../Common/activityColor\";\r\nimport BookButton from \"../occasion/bookButton\";\r\nimport SideInfo from \"../Common/sideInfo\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { Button } from \"@mantine/core\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport LocationIcon from \"@material-ui/icons/Place\";\r\nimport PaymentIcon from \"@material-ui/icons/Payment\";\r\nimport DatesIcon from \"@material-ui/icons/DateRange\";\r\nimport OccasionsIcon from \"@material-ui/icons/Event\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n listItem: {\r\n border: `1px solid ${theme.app.iconDisabledColor}`,\r\n borderBottom: \"none\",\r\n background: theme.app.background[1],\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto\",\r\n gridGap: \"8px\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n padding: \"0.5rem\",\r\n \"&:first-child\": {\r\n borderRadius: \"4px 4px 0 0\",\r\n },\r\n \"&:last-child\": {\r\n borderRadius: \"0 0 4px 4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: \"4px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"@media(max-width: 1300px)\": {\r\n \"&:first-child\": {\r\n borderRadius: 0,\r\n },\r\n \"&:last-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n \"&:only-child\": {\r\n borderRadius: 0,\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n \"@media(max-width: 600px)\": {\r\n \"&:first-child\": {\r\n marginTop: \"16px\",\r\n },\r\n gridTemplateColumns: \"1fr\",\r\n marginBottom: \"16px\",\r\n borderBottom: `1px solid ${theme.app.iconDisabledColor}`,\r\n },\r\n },\r\n content: { padding: \"8px\" },\r\n infoContainer: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"auto auto auto 1fr\",\r\n gridGap: \"16px\",\r\n alignItems: \"center\",\r\n margin: \"8px 0 0\",\r\n \"@media(max-width: 600px)\": {\r\n gridGap: \"8px\",\r\n },\r\n },\r\n title: {\r\n \"@media(max-width: 600px)\": {\r\n fontSize: \"1.1rem\",\r\n },\r\n },\r\n resource: {\r\n color: theme.app.labelColor,\r\n lineHeight: 1,\r\n fontSize: \"0.875rem\",\r\n },\r\n info: {},\r\n infoIcon: {\r\n fontSize: \"20px\",\r\n color: theme.app.labelColor,\r\n },\r\n infoItem: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginBottom: \"8px\",\r\n color: theme.app.labelColor,\r\n \"&:last-child\": {\r\n marginBottom: 0,\r\n },\r\n },\r\n infoText: {\r\n color: theme.app.labelColor,\r\n fontSize: \"0.8125rem\",\r\n fontWeight: 500,\r\n \"&:before\": {\r\n content: '\" \"',\r\n whiteSpace: \"pre\",\r\n },\r\n \"@media(max-width: 600px)\": {\r\n fontSize: \"0.75rem\",\r\n },\r\n },\r\n reason: {\r\n fontStyle: \"italic\",\r\n color: theme.app.dangerColor,\r\n lineHeight: 1.6,\r\n fontSize: \"0.875rem\",\r\n },\r\n actionContainer: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n padding: \"8px\",\r\n \"@media(max-width: 600px)\": {\r\n padding: \"4px 0\",\r\n // borderTop: `1px solid ${theme.app.iconDisabledColor}`,\r\n justifyContent: \"flex-end\",\r\n },\r\n },\r\n actionButton: {\r\n marginRight: \"8px\",\r\n color: theme.app.labelColor,\r\n \"@media(max-width: 600px)\": {\r\n marginRight: 0,\r\n border: \"none\",\r\n },\r\n },\r\n actionButtonText: {},\r\n}));\r\n\r\nconst BOOK_COURSE = gql`\r\n mutation reserveActivity($id: String!, $participantId: Guid) {\r\n reserveActivity(activityId: $id, participantId: $participantId) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst Course = React.memo(function Course(props) {\r\n const { course, manages } = props;\r\n const { activity } = course;\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n const context = useContext(AppContext);\r\n const { dispatch } = context;\r\n const { language, activePersonId } = useSelector((state) => ({\r\n language: state.language,\r\n activePersonId: state.activePersonId,\r\n }));\r\n const handleShowInfo = () => setOpen(true);\r\n const handleCloseInfo = () => setOpen(false);\r\n\r\n const handleMutationError = (error) =>\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.errorMsg,\r\n toastType: \"error\",\r\n });\r\n const handleMutationSuccess = ({ reserveActivity }) => {\r\n const { failed, errorMessage } = reserveActivity;\r\n if (failed) {\r\n return dispatch({\r\n type: OPEN_TOAST,\r\n toastText: errorMessage,\r\n toastType: \"error\",\r\n });\r\n }\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.bookingSucceed,\r\n toastType: \"success\",\r\n });\r\n };\r\n const [reserveActivity, { loading, error }] = useMutation(BOOK_COURSE, {\r\n variables: { id: course.id, participantId: activePersonId },\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n });\r\n\r\n if (!activity) {\r\n return

    Error

    ;\r\n }\r\n const occasion = (activity.occasions && activity.occasions[0]) || {};\r\n const blocked = !course.canReserve.reserve && !course.canReserve.enqueue;\r\n const reason =\r\n language.reason[course.canReserve.reason] || course.canReserve.reason;\r\n\r\n if (!occasion) {\r\n return

    Error

    ;\r\n }\r\n const price = activity.price;\r\n const booked = Math.round(\r\n (course.totalBooked / course.maxParticipants) * 100\r\n );\r\n\r\n const anyResource = activity.resourceAssignments.length > 0;\r\n const resource = anyResource && activity.resourceAssignments[0].resource;\r\n const firstOccasion = moment(course.firstOccasion).format(\"YYYY-MM-DD\");\r\n const lastOccasion = moment(course.lastOccasion).format(\"YYYY-MM-DD\");\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n {activity.name}\r\n \r\n {resource.name && (\r\n \r\n {resource.name}\r\n \r\n )}\r\n {blocked && (\r\n \r\n {reason}\r\n \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    {activity.location.name}
    \r\n
    \r\n \r\n \r\n
    \r\n {price.inclVat > 0 ? `${price.inclVat}:-` : `-`}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {`${firstOccasion} - ${lastOccasion}`}
    \r\n \r\n \r\n \r\n
    \r\n {`${activity.occasions && activity.occasions.length} ${\r\n language.occasions\r\n }`}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {language.showInfo}
    \r\n \r\n {!blocked && (\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default Course;\r\n","import React, { useContext } from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport Course from \"./course\";\r\nimport { getFilteredCourses, getAllFilters } from \"./util\";\r\nimport List from \"@material-ui/core/List\";\r\nimport { AppContext, SET_COURSEFILTER } from \"../Context\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n courseList: {\r\n width: \"1024px\",\r\n margin: \"16px auto\",\r\n \"@media(max-width: 1300px)\": {\r\n width: \"77%\",\r\n },\r\n \"@media(max-width: 1024px)\": {\r\n width: \"100%\",\r\n margin: 0,\r\n },\r\n },\r\n heading: {\r\n margin: \"4px 0\",\r\n \"@media(max-width: 667px)\": {\r\n fontSize: \"1.3rem\",\r\n },\r\n },\r\n list: { padding: 0 },\r\n filterContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: \"0.5rem\",\r\n marginTop: \"1rem\",\r\n marginBottom: \"1rem\",\r\n },\r\n chip: {\r\n margin: \"4px\",\r\n \"& svg\": {\r\n color: theme.app.badge.color,\r\n },\r\n },\r\n}));\r\n\r\nconst CoursesList = (props) => {\r\n const { manages, courses } = props;\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { state, dispatch } = context;\r\n const { courseFilter } = state;\r\n const { language } = useSelector((state) => ({\r\n language: state.language\r\n }));\r\n const filteredCourses = getFilteredCourses(courses, courseFilter);\r\n const filterChips = getAllFilters(courseFilter);\r\n const removeCourseFilter = (type, value, checked) =>\r\n dispatch({ type: SET_COURSEFILTER, payload: { type, value, checked } });\r\n return (\r\n
    \r\n
    \r\n {filterChips.map((f, i) => {\r\n return (\r\n <>\r\n removeCourseFilter(f.type, f.value, false)}\r\n onDelete={() => removeCourseFilter(f.type, f.value, false)}\r\n color=\"primary\"\r\n aria-label={`${language.removeFilter} ${f.label}`}\r\n />\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n {filteredCourses.map((g, i) => (\r\n
    \r\n \r\n {g.courses.map((course, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CoursesList;\r\n","import React, { useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport FilterIcon from \"@material-ui/icons/FilterList\";\r\nimport { SpinnerContainer } from \"../Common/UIComponents\";\r\nimport BusySpinner from \"../Common/busySpinner\";\r\nimport CoursesFilter from \"./coursesFilter\";\r\nimport CoursesList from \"./coursesList\";\r\nimport { UnstyledButton } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n courses: {\r\n background: theme.app.background[0],\r\n color: theme.app.color,\r\n },\r\n header: {\r\n background: theme.app.background[1],\r\n color: theme.app.labelColor,\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n height: \"80px\",\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr 1fr\",\r\n alignItems: \"center\",\r\n padding: \"0 16px\",\r\n \"@media(max-width: 600px)\": {\r\n height: \"64px\",\r\n },\r\n },\r\n headerText: {\r\n fontSize: \"1.35rem\",\r\n fontWeight: 500,\r\n },\r\n drawerPaper: {\r\n width: \"300px\",\r\n \"@media(max-width: 600px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n filterButtonContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n },\r\n filterButton: {\r\n color: theme.app.labelColor,\r\n padding: \"4px\",\r\n borderRadius: \"50%\",\r\n transition: theme.transitions.create([\"background-color\"], {\r\n duration: theme.transitions.duration.short,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n content: {\r\n // height: `${theme.height - 144}px`,\r\n overflow: \"auto\",\r\n \"@media(max-width: 600px)\": {\r\n // height: `${theme.height - 184}px`,\r\n overflowY: \"scroll\",\r\n \"-webkit-overflow-scrolling\": \"touch\",\r\n },\r\n },\r\n}));\r\n\r\nconst query = gql`\r\n query CourseQuery {\r\n courses {\r\n id\r\n isFull\r\n totalBooked\r\n totalEnqueued\r\n placesLeft\r\n placesLeftInQueue\r\n firstOccasion\r\n lastOccasion\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n maxParticipants\r\n maxQueueSlots\r\n activity {\r\n id\r\n name\r\n infoText\r\n tags\r\n color\r\n resourceAssignments {\r\n resource {\r\n name\r\n }\r\n role\r\n }\r\n location {\r\n id\r\n name\r\n }\r\n price {\r\n inclVat\r\n priceLevelId\r\n priceLevelName\r\n }\r\n occasions {\r\n id\r\n at\r\n duration\r\n }\r\n }\r\n }\r\n manages {\r\n id\r\n name\r\n email\r\n civicRegistrationNumber\r\n photo\r\n }\r\n }\r\n`;\r\n\r\nconst Courses = () => {\r\n const classes = useStyles();\r\n const { language, auth } = useSelector((state) => ({\r\n language: state.language,\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n }));\r\n const [filterOpen, setFilterOpen] = useState(false);\r\n const { loading, error, data, refetch } = useQuery(query);\r\n const openFilter = () => setFilterOpen(true);\r\n const closeFilter = () => setFilterOpen(false);\r\n\r\n if (loading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n if (error) return

    {error.message}

    ;\r\n const { courses, manages } = data && data;\r\n const firstCourse = courses && courses[0];\r\n if (\r\n (auth &&\r\n firstCourse &&\r\n firstCourse.canReserve.reason === \"NotAuthenticated\") ||\r\n !data.courses\r\n ) {\r\n refetch();\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n {language.courses}\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Courses;\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Markdown from \"react-markdown\";\r\nimport axios from \"axios\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { Button } from \"@mantine/core\";\r\nimport { Busy } from \"./UIComponents\";\r\nimport { UserManagerContext } from \"../Context/userManagerContext\";\r\nimport { handleError } from \"../AppCommon/util\";\r\nimport { STATE_CULTURE } from \"../Actions/stateActions\";\r\n\r\nlet source;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n marginTop: \"1rem\",\r\n paddingBottom: \"32px\",\r\n color: theme.app.secondaryColor,\r\n },\r\n buttonWrapper: {\r\n display: \"flex\",\r\n gap: \"1rem\",\r\n },\r\n}));\r\n\r\nconst Default = (props) => {\r\n const { isAuth } = props;\r\n const classes = useStyles();\r\n const [busy, setBusy] = useState(false);\r\n const [text, setText] = useState(\"\");\r\n const { userManager } = useContext(UserManagerContext);\r\n\r\n const { config, culture, language } = useSelector((state) => ({\r\n config: state.config,\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n }));\r\n\r\n const registerLink = `${config?.auth.split(\"auth\")[0]}members/registermember`;\r\n\r\n useEffect(() => {\r\n let CancelToken = axios.CancelToken;\r\n source = CancelToken.source();\r\n axios\r\n .get(`/ee-static/booking/Texts/default.${culture}.md`, {\r\n cancelToken: source.token,\r\n })\r\n .then((response) => {\r\n setText(response.data);\r\n })\r\n .catch((error) => {\r\n if (!axios.isCancel(error)) {\r\n console.log(error);\r\n }\r\n });\r\n return () => source.cancel(\"Component Is Unmounting\");\r\n }, [culture]);\r\n\r\n useEffect(() => {\r\n const handleLogin = () => {\r\n userManager.clearStaleState();\r\n userManager.signinRedirect().catch(handleError);\r\n };\r\n if (busy) {\r\n handleLogin();\r\n }\r\n }, [busy, userManager]);\r\n if (isAuth) return
    ;\r\n if (busy) return ;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n {language.register || \"Registrera\"}\r\n \r\n setBusy(true)}\r\n aria-label={language.login}\r\n variant=\"\"\r\n color=\"violet.9\"\r\n >\r\n {language.login || \"Login\"}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Default;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Occasion from \"../occasion\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: \"block\",\r\n height: \"100%\",\r\n },\r\n title: { color: theme.app.labelColor, padding: \"8px\" },\r\n}));\r\n\r\nconst Upcoming = (props) => {\r\n const { upcoming, manages, book } = props;\r\n const classes = useStyles();\r\n const language = useSelector((state) => state.language);\r\n\r\n return (\r\n
    \r\n \r\n {language.upcomingOccasions}\r\n \r\n
      \r\n {upcoming &&\r\n upcoming.map((occ, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Upcoming;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Course from \"../Courses/course\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: \"block\",\r\n height: \"100%\",\r\n },\r\n title: { color: theme.app.labelColor, padding: \"8px\" },\r\n listWrapper: {\r\n padding: \"0\",\r\n },\r\n}));\r\n\r\nconst UpcomingCourses = (props) => {\r\n const { upcoming, manages, book } = props;\r\n const classes = useStyles();\r\n const language = useSelector((state) => state.language);\r\n\r\n return (\r\n
    \r\n \r\n {language.upcomingCourses}\r\n \r\n
    \r\n
      \r\n {upcoming &&\r\n upcoming.map((x, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UpcomingCourses;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Occasion from \"../occasion\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n suggestions: {\r\n display: \"block\",\r\n height: \"100%\",\r\n },\r\n title: { color: theme.app.labelColor, padding: \"8px\" },\r\n}));\r\n\r\nconst Suggestions = (props) => {\r\n const { suggestions, manages, book } = props;\r\n const classes = useStyles();\r\n const language = useSelector((state) => state.language);\r\n return (\r\n
    \r\n \r\n {language.suggestions}\r\n \r\n
    \r\n {suggestions &&\r\n suggestions.map((occ, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Suggestions;\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Tab from \"@material-ui/core/Tab\";\r\nimport Tabs from \"@material-ui/core/Tabs\";\r\nimport Radio from \"@material-ui/core/Radio\";\r\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Upcoming from \"./upcoming\";\r\nimport UpcomingCourses from \"./upcomingCourses\";\r\nimport Suggestions from \"./suggestions\";\r\nimport Default from \"../Common/default\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actions: {\r\n background: theme.app.background[1],\r\n borderBottom: `1px solid ${theme.app.borderColor}`,\r\n // height: \"64px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n actionContainer: {\r\n margin: \"0 auto\",\r\n width: \"600px\",\r\n },\r\n viewContainer: {\r\n width: \"1300px\",\r\n margin: \"0 auto 64px\",\r\n },\r\n paper: {\r\n padding: \"1rem\",\r\n },\r\n tabs: {\r\n padding: \"0 8px\",\r\n },\r\n tabText: { fontSize: \"0.8125rem\" },\r\n group: {\r\n flexDirection: \"row\",\r\n padding: \"8px\",\r\n },\r\n radioButton: {\r\n padding: \"6px\",\r\n },\r\n label: {\r\n marginLeft: \"-8px\",\r\n marginRight: \"24px\",\r\n },\r\n labelText: {\r\n fontSize: \"0.875rem\",\r\n color: theme.app.labelColor,\r\n },\r\n buttonTextBig: {\r\n display: \"block\",\r\n },\r\n buttonTextSmall: {\r\n display: \"none\",\r\n },\r\n \"@media(max-width: 1200px)\": {\r\n viewContainer: {\r\n width: \"77%\",\r\n },\r\n actionContainer: {\r\n width: \"77%\",\r\n },\r\n },\r\n \"@media(min-width: 1200px)\": {\r\n viewContainer: {\r\n width: \"77%\",\r\n },\r\n actionContainer: {\r\n width: \"77%\",\r\n },\r\n },\r\n \"@media(max-width: 1024px)\": {\r\n viewContainer: {\r\n padding: \"0 1rem\",\r\n width: \"100%\",\r\n },\r\n actionContainer: {\r\n padding: \"0 1rem\",\r\n width: \"100%\",\r\n },\r\n },\r\n \"@media(max-width: 600px)\": {\r\n actionContainer: {\r\n justifyContent: \"center\",\r\n },\r\n paper: {\r\n padding: \"0px\",\r\n },\r\n buttonTextBig: {\r\n display: \"none\",\r\n },\r\n buttonTextSmall: {\r\n display: \"block\",\r\n },\r\n },\r\n}));\r\n\r\nconst RESERVE_OCCASION = gql`\r\n mutation reserveOccasion($id: String, $participantId: Guid) {\r\n reserveOccasion(occasionId: $id, participantId: $participantId) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst Views = (props) => {\r\n const {\r\n anySuggestions,\r\n anyUpcoming,\r\n anyCourses,\r\n upcoming,\r\n upcomingCourses,\r\n suggestions,\r\n manages,\r\n loading,\r\n } = props;\r\n const classes = useStyles();\r\n const { dispatch } = useContext(AppContext);\r\n const [tab, setTab] = useState(\"upcoming\");\r\n const [value, setValue] = useState(anyUpcoming ? \"pass\" : \"course\");\r\n const { language, auth } = useSelector((state) => ({\r\n language: state.language,\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n }));\r\n const handleSetValue = (value) => setValue(value);\r\n const handleMutationSuccess = ({ reserveOccasion }) => {\r\n const { failed, errorMessage } = reserveOccasion;\r\n if (failed) {\r\n return dispatch({\r\n type: OPEN_TOAST,\r\n toastText: errorMessage,\r\n toastType: \"error\",\r\n });\r\n }\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.bookingSucceed,\r\n toastType: \"success\",\r\n });\r\n };\r\n const handleMutationError = (error) => console.log(error);\r\n const [reserveOccasion] = useMutation(RESERVE_OCCASION, {\r\n onCompleted: handleMutationSuccess,\r\n onError: handleMutationError,\r\n });\r\n\r\n useEffect(() => {\r\n if (anyUpcoming) {\r\n handleSetValue(\"pass\");\r\n }\r\n if (anyCourses) {\r\n handleSetValue(\"course\");\r\n }\r\n }, [anySuggestions, anyUpcoming, anyCourses]);\r\n\r\n const handleBook = (id) =>\r\n reserveOccasion({\r\n variables: { id },\r\n });\r\n\r\n const showUpcomingRadiobuttons = anyCourses && anyUpcoming;\r\n if (loading) {\r\n return
    ;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {anySuggestions && (\r\n
    \r\n
    \r\n setTab(v)}\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n className={classes.tabs}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n {tab === \"upcoming\" && (\r\n
    \r\n {showUpcomingRadiobuttons && (\r\n
    \r\n setValue(e.target.value)}\r\n >\r\n }\r\n className={classes.label}\r\n classes={{ label: classes.labelText }}\r\n label={language.radio_courses}\r\n />\r\n }\r\n className={classes.label}\r\n classes={{ label: classes.labelText }}\r\n label={language.radio_occasions}\r\n />\r\n \r\n
    \r\n )}\r\n {anyUpcoming && value === \"pass\" && (\r\n \r\n )}\r\n {anyCourses && value === \"course\" && (\r\n \r\n )}\r\n
    \r\n )}\r\n {tab === \"suggestions\" && (\r\n
    \r\n {anySuggestions && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Views;\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport Markdown from \"react-markdown\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { AppContext } from \"../Context\";\r\nimport Views from \"./views\";\r\n\r\nconst query = gql`\r\n query home {\r\n suggestions {\r\n id\r\n at\r\n duration\r\n maxParticipants\r\n maxQueueSlots\r\n activity {\r\n id\r\n name\r\n infoText\r\n color\r\n tags\r\n location {\r\n id\r\n name\r\n }\r\n price {\r\n inclVat\r\n priceLevelId\r\n priceLevelName\r\n }\r\n }\r\n resourceAssignments {\r\n resource {\r\n id\r\n name\r\n }\r\n role\r\n }\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n freeSlots\r\n queue\r\n }\r\n upcoming {\r\n id\r\n at\r\n duration\r\n maxParticipants\r\n maxQueueSlots\r\n activity {\r\n id\r\n name\r\n infoText\r\n color\r\n tags\r\n location {\r\n id\r\n name\r\n }\r\n price {\r\n inclVat\r\n priceLevelId\r\n priceLevelName\r\n }\r\n resourceAssignments {\r\n resource {\r\n id\r\n name\r\n }\r\n role\r\n }\r\n }\r\n resourceAssignments {\r\n resource {\r\n id\r\n name\r\n }\r\n role\r\n }\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n freeSlots\r\n queue\r\n }\r\n upcomingCourses {\r\n id\r\n isFull\r\n totalBooked\r\n totalEnqueued\r\n placesLeft\r\n placesLeftInQueue\r\n firstOccasion\r\n lastOccasion\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n maxParticipants\r\n maxQueueSlots\r\n activity {\r\n id\r\n name\r\n infoText\r\n tags\r\n color\r\n resourceAssignments {\r\n resource {\r\n name\r\n }\r\n role\r\n }\r\n location {\r\n id\r\n name\r\n }\r\n price {\r\n inclVat\r\n priceLevelId\r\n priceLevelName\r\n }\r\n occasions {\r\n id\r\n at\r\n duration\r\n }\r\n }\r\n resourceAssignments {\r\n resource {\r\n id\r\n name\r\n }\r\n role\r\n }\r\n canReserve {\r\n reserve\r\n enqueue\r\n reason\r\n persons\r\n }\r\n placesLeft\r\n placesLeftInQueue\r\n }\r\n manages {\r\n id\r\n name\r\n email\r\n civicRegistrationNumber\r\n photo\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: \"block\",\r\n overflow: \"auto\",\r\n \"@media (max-width: 667px)\": {\r\n overflowY: \"scroll\",\r\n \"-webkit-overflow-scrolling\": \"touch\",\r\n },\r\n },\r\n content: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: theme.app.background[0],\r\n color: theme.app.color,\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr\",\r\n position: \"relative\",\r\n transition: \"all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms\",\r\n \"@media (max-width: 1024px)\": {\r\n padding: 0,\r\n },\r\n },\r\n landingText: {\r\n margin: \"0 auto\",\r\n width: \"77%\",\r\n padding: \"2rem 0 1rem 0\",\r\n \"& h2\": {\r\n fontSize: \"1.5rem !important\",\r\n },\r\n \"@media screen and (max-width: 1024px)\": {\r\n width: \"100%\",\r\n padding: \"2rem 1rem 1rem 1rem\",\r\n },\r\n },\r\n}));\r\n\r\nconst Home = (props) => {\r\n const classes = useStyles();\r\n const { state } = useContext(AppContext);\r\n const { landingText, headerText } = state;\r\n const auth = useSelector(\r\n (state) => state.oidc.user !== null && !state.oidc.user.expired\r\n );\r\n\r\n const { loading, error, data, refetch } = useQuery(query, {\r\n pollInterval: 60000,\r\n });\r\n if (error) return

    {error.message}

    ;\r\n if (loading) return
    loading
    ;\r\n const { suggestions, upcoming, manages, upcomingCourses, whoami } = data;\r\n const anyUpcoming = upcoming && upcoming.length > 0;\r\n const anySuggestions = suggestions && suggestions.length > 0;\r\n const anyCourses = upcomingCourses && upcomingCourses.length > 0;\r\n if (!anyUpcoming && auth) {\r\n window.setTimeout(() => refetch(), 500);\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {auth && (\r\n \r\n )}\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Default from \"./default\";\r\n\r\nconst RequireAuth = (props) => {\r\n const auth = useSelector(\r\n (state) => state.oidc.user !== null && !state.oidc.user.expired\r\n );\r\n if (auth) return <>{props.children};\r\n return ;\r\n};\r\n\r\nexport default RequireAuth;\r\n","import React from \"react\";\r\nimport { handleError } from \"../AppCommon/util\";\r\nimport { CallbackComponent } from \"redux-oidc\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nconst CallbackPage = (props) => {\r\n const successCallback = (user) => {\r\n console.log(\"Success callback\");\r\n props.history.push(\"/\");\r\n };\r\n const errorCallback = (err) => {\r\n console.log(\"Error callback\", err);\r\n handleError(err);\r\n };\r\n return (\r\n \r\n
    Redirecting...
    \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(CallbackPage);\r\n","import React from \"react\";\r\nimport { processSilentRenew } from \"redux-oidc\";\r\n\r\nconst component = () => {\r\n processSilentRenew();\r\n return Am I silent?;\r\n};\r\n\r\nexport default component;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { getListItems } from \"./util\";\r\nimport { Avatar, Box, Group, SegmentedControl, Stack } from \"@mantine/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n wrapper: {\r\n marginTop: \".8rem\",\r\n },\r\n textWrapper: {\r\n display: \"flex\",\r\n },\r\n list: {\r\n backgroundColor: theme.app.background[0],\r\n },\r\n listItemInactive: {\r\n \"&:hover\": {\r\n color: theme.app.labelColor,\r\n },\r\n },\r\n active: {\r\n backgroundColor: \"rgba(0,0,0,0.08)\",\r\n outline: `2px solid ${theme.app.primaryColors.main}`,\r\n borderRadius: \"5px\",\r\n cursor: \"default\",\r\n pointerEvents: \"none\",\r\n },\r\n select: {\r\n fontSize: \"1rem !important\",\r\n fontWeight: 500,\r\n },\r\n}));\r\n\r\nconst Managing = React.memo(function Managing(props) {\r\n const {\r\n active,\r\n bookingData,\r\n handleSelect,\r\n isNew,\r\n setIsNew,\r\n isOccasion,\r\n manages,\r\n } = props;\r\n const classes = useStyles();\r\n const language = useSelector((state) => state.language);\r\n const [users, setUsers] = useState([]);\r\n const [value, setValue] = useState(\"react\");\r\n const managingItems = getListItems(manages, bookingData, isNew, language);\r\n\r\n useEffect(() => {\r\n let user =\r\n managingItems &&\r\n managingItems.reduce((acc, curr) => {\r\n if (curr) {\r\n console.log(curr.photo);\r\n acc.push({\r\n value: curr.id,\r\n label: (\r\n \r\n \r\n \r\n \r\n {curr.primaryText}\r\n \r\n {curr.secondaryText}\r\n \r\n \r\n ),\r\n disabled: curr.disabled,\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n\r\n if (!isNew && !isOccasion) {\r\n user.push({\r\n value: \"0000\",\r\n label: (\r\n \r\n \r\n \r\n \r\n {language.otherParticipant}\r\n \r\n \r\n {language.otherParticipantSubtext}\r\n \r\n \r\n \r\n ),\r\n disabled: isNew,\r\n });\r\n }\r\n setUsers(user);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (active === \"0000\") setIsNew(true);\r\n if (active !== \"0000\") setIsNew(false);\r\n }, [value]);\r\n\r\n if (!manages || !users) return null;\r\n\r\n return (\r\n
    \r\n \r\n {\r\n setValue(e);\r\n handleSelect(e);\r\n }}\r\n data={users}\r\n orientation=\"vertical\"\r\n fullWidth\r\n radius=\"sm\"\r\n size=\"md\"\r\n color=\"violet.8\"\r\n mt={12}\r\n classNames={{ root: classes.list, label: classes.listItem }}\r\n />\r\n
    \r\n );\r\n});\r\n\r\nexport default Managing;\r\n","const validate = (values, requiredFields, language) => {\r\n const errors = {};\r\n\r\n if (requiredFields.includes(\"firstname\") && !values.firstName) {\r\n errors.firstName = language.form && language.form.FirstName_Required;\r\n }\r\n if (requiredFields.includes(\"firstname\") && values.firstName.length > 100) {\r\n errors.firstName = language.form && language.form.Invalid_Length;\r\n }\r\n\r\n if (requiredFields.includes(\"lastname\") && !values.lastName) {\r\n errors.lastName = language.form && language.form.LastName_Required;\r\n }\r\n if (requiredFields.includes(\"lastname\") && values.lastName.length > 100) {\r\n errors.lastName = language.form && language.form.Invalid_Length;\r\n }\r\n\r\n if (\r\n requiredFields.includes(\"civicRegistrationNumber\") &&\r\n !values.civicRegistrationNumber\r\n ) {\r\n errors.civicRegistrationNumber =\r\n language.form && language.form.CivicRegistration_Required;\r\n } else if (\r\n !/^(19|20)?[0-9]{6}[- ]?[0-9]{4}$/.test(\r\n values.civicRegistrationNumber.trim()\r\n )\r\n ) {\r\n errors.civicRegistrationNumber =\r\n language.form && language.form.CivicRegistration_Invalid;\r\n }\r\n\r\n return errors;\r\n};\r\n\r\nexport default validate;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\n\r\nconst useStyles = makeStyles({\r\n formcontrol: {\r\n marginTop: \"0\",\r\n marginBottom: \"16px\",\r\n },\r\n});\r\n\r\nconst TextInput = (props) => {\r\n const {\r\n field,\r\n form: { touched, errors },\r\n placeholder,\r\n min,\r\n type,\r\n max,\r\n required,\r\n disabled,\r\n autoFocus,\r\n label,\r\n inputProps,\r\n multiline,\r\n format,\r\n autoComplete,\r\n } = props;\r\n const classes = useStyles();\r\n const onChange = props.onChange\r\n ? (e) => props.onChange(e.target.value)\r\n : field.onChange;\r\n\r\n const value = props.format ? format(field.value) : field.value;\r\n\r\n return (\r\n 0\r\n }\r\n disabled={disabled}\r\n className={classes.formcontrol}\r\n >\r\n \r\n {label}\r\n \r\n \r\n {touched[field.name] && errors[field.name] && (\r\n {errors[field.name]}\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TextInput;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Form, Field } from \"formik\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport TextInput from \"../../Common/textInput\";\r\nimport { getVisible, getRequired } from \"./util\";\r\n\r\nconst useStyles = makeStyles({\r\n form: {\r\n marginTop: \"16px\",\r\n },\r\n row: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr 1fr\",\r\n gridGap: \"16px\",\r\n \"@media (max-width: 667px)\": {\r\n gridTemplateColumns: \"1fr\",\r\n },\r\n },\r\n});\r\n\r\nconst ResponsibleForm = () => {\r\n const classes = useStyles();\r\n const { config, language } = useSelector((state) => ({\r\n config: state.config,\r\n language: state.language,\r\n }));\r\n const { visibleFields, requiredFields } =\r\n config.fieldInfo.registerParticipant;\r\n const show = (field) => getVisible(visibleFields, field);\r\n const required = (field) => getRequired(requiredFields, field);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {show(\"civicRegistrationNumber\") && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ResponsibleForm;\r\n","export const getVisible = (visibleFields, field) => {\r\n if (visibleFields.includes(field)) return true;\r\n return false;\r\n};\r\n\r\nexport const getRequired = (requiredFields, field) => {\r\n if (requiredFields.includes(field)) return true;\r\n return false;\r\n};\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Formik } from \"formik\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport validate from \"./validate\";\r\nimport ParticipantForm from \"./form\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\n\r\nconst inititial = {\r\n firstName: \"\",\r\n lastName: \"\",\r\n civicRegistrationNumber: \"\",\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n container: {},\r\n actionContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n marginTop: \"16px\",\r\n \"& button\": {\r\n marginLeft: \"8px\",\r\n },\r\n },\r\n});\r\n\r\nconst Form = React.memo(function Form(props) {\r\n const { handleSubmit, id, close } = props;\r\n const classes = useStyles();\r\n const { language, config } = useSelector((state) => ({\r\n language: state.language,\r\n config: state.config,\r\n }));\r\n const { requiredFields } = config.fieldInfo.registerParticipant;\r\n return (\r\n \r\n console.log(values) || handleSubmit(values, actions)\r\n }\r\n validate={(values) => validate(values, requiredFields, language)}\r\n render={(props) => (\r\n
    \r\n \r\n
    \r\n \r\n \r\n {language.book} {props?.values?.firstName}\r\n \r\n
    \r\n
    \r\n )}\r\n />\r\n );\r\n});\r\n\r\nexport default Form;\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport gql from \"graphql-tag\";\r\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport \"moment/locale/sv\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { AppContext, OPEN_TOAST, CLOSE_BOOKINGSMODAL } from \"../Context\";\r\nimport { MY_BOOKINGS } from \"../routes\";\r\nimport Managing from \"../Common/manages\";\r\nimport Form from \"./ParticipantForm\";\r\nimport {\r\n STATE_ACTIVE_PERSON_ID,\r\n STATE_CULTURE,\r\n setActivePersonId,\r\n} from \"../Actions/stateActions\";\r\nimport { ModalContext } from \"../Context/ModalContext\";\r\nimport { Modal } from \"@mantine/core\";\r\nimport { Typography } from \"@material-ui/core\";\r\n\r\nconst query = gql`\r\n query bookingModalQuery {\r\n whoami {\r\n subject\r\n name\r\n isAuthenticated\r\n }\r\n manages {\r\n id\r\n name\r\n email\r\n civicRegistrationNumber\r\n photo\r\n }\r\n }\r\n`;\r\n\r\nconst BOOK_OCCASION = gql`\r\n mutation reserveOccasion($id: String, $participantId: Guid) {\r\n reserveOccasion(occasionId: $id, participantId: $participantId) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst BOOK_COURSE = gql`\r\n mutation reserveActivity($id: String!, $participantId: Guid) {\r\n reserveActivity(activityId: $id, participantId: $participantId) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst BOOK_COURSE_NEW = gql`\r\n mutation reserveActivity(\r\n $id: String\r\n $firstName: String\r\n $lastName: String\r\n $civicRegistrationNumber: String\r\n $participantIsForRegistration: Boolean\r\n ) {\r\n reserveActivity(\r\n activityId: $id\r\n participantFirstname: $firstName\r\n participantLastname: $lastName\r\n participantCivicRegistrationNumber: $civicRegistrationNumber\r\n participantIsForRegistration: $participantIsForRegistration\r\n ) {\r\n position\r\n failed\r\n errorMessage\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n modalWrapper: {\r\n background: theme.app.background[1],\r\n },\r\n heading: {\r\n marginTop: \"1.5rem\",\r\n fontSize: \"1.25rem !important\",\r\n textAlign: \"center\",\r\n fontWeight: 500,\r\n },\r\n time: {\r\n fontSize: \"1rem !important\",\r\n fontWeight: \"400 !important\",\r\n textAlign: \"center\",\r\n },\r\n content: {\r\n color: theme.app.labelColor,\r\n },\r\n closeButton: {\r\n color: theme.app.labelColor,\r\n },\r\n noPadding: {\r\n padding: 0,\r\n },\r\n}));\r\n\r\nconst getState = (state) => ({\r\n activePersonId: state.cookies[STATE_ACTIVE_PERSON_ID],\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n});\r\n\r\nconst BookingModal = () => {\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { openModal, setOpenModal } = useContext(ModalContext);\r\n const { rdxDispatch, dispatch, state } = context;\r\n const { culture, language, activePersonId } = useSelector((state) =>\r\n getState(state)\r\n );\r\n const closeBookingsModal = () => dispatch({ type: CLOSE_BOOKINGSMODAL });\r\n const setActive = (id) => rdxDispatch(setActivePersonId(id));\r\n\r\n const bookingData = state.bookingModal.bookingData;\r\n const open = state.bookingModal.open;\r\n const [isNew, setIsNew] = useState(false);\r\n const handleMutationError = (error) => {\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.errorMsg,\r\n toastType: \"error\",\r\n });\r\n closeBookingsModal();\r\n };\r\n const handleMutationSuccess = ({ reserveOccasion, reserveActivity }) => {\r\n const data = reserveOccasion || reserveActivity;\r\n const { failed, errorMessage } = data;\r\n if (failed) {\r\n return dispatch({\r\n type: OPEN_TOAST,\r\n toastText: errorMessage.includes(\"already exists\")\r\n ? language.reason.AlreadyExists\r\n : errorMessage,\r\n toastType: \"error\",\r\n });\r\n }\r\n\r\n if (bookingData?.activity?.price?.inclVat > 0) {\r\n setOpenModal(true);\r\n } else {\r\n dispatch({\r\n type: OPEN_TOAST,\r\n toastText: language.bookingSucceed,\r\n toastType: \"success\",\r\n });\r\n }\r\n closeBookingsModal();\r\n };\r\n const [bookCourseNew] = useMutation(BOOK_COURSE_NEW, {\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n onCompleted: handleMutationSuccess,\r\n onError: handleMutationError,\r\n });\r\n\r\n const [bookCourse, { loading: loadBooking }] = useMutation(BOOK_COURSE, {\r\n variables: { id: bookingData.id, participantId: activePersonId },\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n onCompleted: handleMutationSuccess,\r\n onError: handleMutationError,\r\n });\r\n\r\n const [bookOccasion] = useMutation(BOOK_OCCASION, {\r\n variables: { id: bookingData.id, participantId: activePersonId },\r\n refetchQueries: () => [{ query: MY_BOOKINGS }],\r\n onCompleted: handleMutationSuccess,\r\n onError: handleMutationError,\r\n });\r\n\r\n useEffect(() => {\r\n if (\r\n bookingData.canReserve &&\r\n !bookingData.canReserve.persons.includes(activePersonId)\r\n ) {\r\n rdxDispatch(setActivePersonId(undefined));\r\n }\r\n }, [bookingData, activePersonId, rdxDispatch]);\r\n const { data, loading, error } = useQuery(query);\r\n if (loading) return
    ;\r\n if (error) {\r\n console.log(error);\r\n return
    Error
    ;\r\n }\r\n const { manages } = data;\r\n const activePerson =\r\n manages && activePersonId && manages.find((m) => m.id === activePersonId);\r\n const isOccasion = bookingData.__typename === \"occasion\";\r\n\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const when = isOccasion\r\n ? moment(bookingData.at).locale(locale).format(\"LLL\")\r\n : `${moment(bookingData.firstOccasion).format(\"YYYY-MM-DD\")} - ${moment(\r\n bookingData.lastOccasion\r\n ).format(\"YYYY-MM-DD\")}`;\r\n const canBook = bookingData.canReserve && bookingData.canReserve.reserve;\r\n const canEnqueue = bookingData.canReserve && bookingData.canReserve.enqueue;\r\n\r\n let text = \"\";\r\n if ((canBook || canEnqueue) && language) {\r\n text = canBook ? (\r\n \r\n {language.book} {activePerson && activePerson.name.split(\" \")[0]}\r\n \r\n ) : canEnqueue ? (\r\n {language.enqueue}\r\n ) : (\r\n language.reason[bookingData.canReserve.reason] ||\r\n bookingData.canReserve.reason\r\n );\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n {bookingData.activity ? bookingData.activity.name : \"\"}\r\n \r\n \r\n {when}\r\n \r\n\r\n setActive(id)}\r\n isNew={isNew}\r\n isOccasion={isOccasion}\r\n setIsNew={setIsNew}\r\n manages={manages}\r\n />\r\n {isNew && !isOccasion && (\r\n bookCourseNew({ variables: v })}\r\n id={bookingData.id}\r\n close={() => setIsNew(false)}\r\n />\r\n )}\r\n \r\n {!isNew && (\r\n {`${language.abort}`}\r\n )}\r\n {!isNew && (\r\n \r\n {text || \"Boka\"}\r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default BookingModal;\r\n","import React, { useContext } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\r\nimport WarningIcon from \"@material-ui/icons/Warning\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { AppContext, CLOSE_TOAST } from \"../Context\";\r\n\r\nconst variantIcon = {\r\n success: CheckCircleIcon,\r\n warning: WarningIcon,\r\n error: ErrorIcon,\r\n info: InfoIcon,\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n success: {\r\n backgroundColor: theme.app.successColor,\r\n color: \"white\",\r\n },\r\n error: {\r\n backgroundColor: theme.app.dangerColor,\r\n color: \"white\",\r\n },\r\n info: {\r\n backgroundColor: theme.app.infoColor,\r\n color: \"white\",\r\n },\r\n warning: {\r\n backgroundColor: theme.app.warningColor,\r\n color: \"white\",\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: \"8px\",\r\n },\r\n message: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n}));\r\n\r\nfunction MySnackbarContent(props) {\r\n const { className, message, onClose, variant, ...other } = props;\r\n const classes = useStyles();\r\n const Icon = variantIcon[variant];\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n {...other}\r\n />\r\n );\r\n}\r\n\r\nconst Toast = (props) => {\r\n const context = useContext(AppContext);\r\n const { state, dispatch } = context;\r\n const { toastOpen, toastText, toastType } = state;\r\n\r\n return (\r\n dispatch({ type: CLOSE_TOAST })}\r\n style={{zIndex: 9999}}\r\n >\r\n {toastType ? (\r\n dispatch({ type: CLOSE_TOAST })}\r\n variant={toastType}\r\n message={toastText}\r\n />\r\n ) : (\r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Toast;\r\n","import React, { useContext } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport { AppContext, TOGGLE_SETTINGS } from \"../Context\";\r\nimport { setCookie } from \"../Actions/cookiesActions\";\r\nimport { THEME, STATE_CULTURE } from \"../Actions/stateActions\";\r\nimport { LANGUAGE_LOADED } from \"../Actions/actionTypes\";\r\nimport sv from \"../Images/sv-SE.svg\";\r\nimport en from \"../Images/en-US.svg\";\r\nimport { Modal, Button } from \"@mantine/core\";\r\nimport { FormControl, FormLabel, Radio, RadioGroup } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n modalWrapper: {\r\n background: theme.app.background[1],\r\n },\r\n settingsTitle: {\r\n fontSize: \"1.5rem !important\",\r\n marginTop: \"1rem\",\r\n },\r\n contentSection: {\r\n marginBottom: \"16px\",\r\n },\r\n contentHeading: {\r\n color: theme.app.labelColor,\r\n fontSize: \"1.125rem !important\",\r\n },\r\n button: { color: theme.app.labelColor },\r\n group: {\r\n flexDirection: \"row\",\r\n },\r\n label: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n flag: {\r\n width: \"23px\",\r\n height: \"23px\",\r\n marginRight: \"4px\",\r\n borderRadius: \"7px\",\r\n },\r\n labelText: { fontSize: \"0.8125rem\", color: theme.app.labelColor },\r\n content: {\r\n color: theme.app.labelColor,\r\n },\r\n closeButton: {\r\n color: theme.app.labelColor,\r\n },\r\n noPadding: {\r\n padding: 0,\r\n },\r\n formLabel: {\r\n color: theme.app.labelColor,\r\n },\r\n}));\r\n\r\nconst Settings = (props) => {\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const { theme, culture, language } = useSelector((state) => ({\r\n theme: state.cookies[THEME],\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language,\r\n }));\r\n const { state, dispatch, rdxDispatch } = context;\r\n const { settingsOpen } = state;\r\n const closeDialog = () => dispatch({ type: TOGGLE_SETTINGS });\r\n const setTheme = (theme) => rdxDispatch(setCookie(THEME, theme));\r\n const setCulture = (culture) => {\r\n rdxDispatch(setCookie(STATE_CULTURE, culture));\r\n fetch(process.env.PUBLIC_URL + `/language.${culture}.json`)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((json) => {\r\n rdxDispatch({\r\n type: LANGUAGE_LOADED,\r\n payload: json,\r\n });\r\n });\r\n };\r\n\r\n const SwedishLabel = () => (\r\n \r\n {language.swedishFlag}\r\n Svenska\r\n \r\n );\r\n const EnglishLabel = () => (\r\n \r\n {language.englishFlag}\r\n English\r\n \r\n );\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n {language.changeLanguage}\r\n \r\n setCulture(e.target.value)}\r\n >\r\n }\r\n label={}\r\n aria-label={language.swedish}\r\n />\r\n }\r\n label={}\r\n aria-label={language.english}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n {language.changeTheme}\r\n \r\n setTheme(e.target.value)}\r\n >\r\n }\r\n label={language.themeLight}\r\n aria-label={language.themeLight}\r\n />\r\n }\r\n label={language.themeDark}\r\n aria-label={language.themeDark}\r\n />\r\n }\r\n label={language.themeDarkest}\r\n aria-label={language.themeDarkest}\r\n />\r\n \r\n \r\n
    \r\n \r\n \r\n {language.close}\r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default Settings;\r\n","export const LANGUAGE_LOADED = \"@EE/LANGUAGE_LOADED\";\r\n","import red from \"@material-ui/core/colors/red\";\r\nimport green from \"@material-ui/core/colors/green\";\r\nimport blue from \"@material-ui/core/colors/blue\";\r\n\r\nconst dangerColor = red[700];\r\nconst dangerHoverColor = \"rgba(244, 67, 54, 0.2)\";\r\nconst warningColor = red[700];\r\nconst successColor = green[800];\r\nconst infoColor = blue[700];\r\n\r\n// Dark theme\r\nconst darkTheme = {\r\n themeType: \"dark\",\r\n primaryColors: {\r\n light: \"rgb(187, 222, 251)\",\r\n main: \"#B197FC\",\r\n dark: \"#9775FA\",\r\n },\r\n secondaryColors: {\r\n light: \"rgb(248, 187, 208)\",\r\n main: \"rgb(244, 143, 177)\",\r\n dark: \"rgb(240, 98, 146)\",\r\n },\r\n badge: {\r\n background: \"rgba(255,255,255,0.54)\",\r\n color: \"rgba(0,0,0,0.87)\",\r\n },\r\n background: [\r\n \"rgb(33, 33, 33)\",\r\n \"rgb(48, 48, 48)\",\r\n \"rgb(66, 66, 66)\",\r\n \"rgb(77, 77, 77)\",\r\n \"rgb(92, 92, 92)\",\r\n \"rgb(108, 108, 108)\",\r\n \"rgb(128, 128, 128)\",\r\n \"rgb(144, 144, 144)\",\r\n \"rgb(172, 172, 172)\",\r\n \"rgb(192, 192, 192)\",\r\n \"rgb(212, 212, 212)\",\r\n \"rgb(224, 224, 224)\",\r\n \"rgb(232, 232, 232)\",\r\n \"rgb(242, 242, 242)\",\r\n \"rgb(255, 255, 255)\",\r\n ],\r\n borderColor: \"rgba(255,255,255,0.12)\",\r\n labelColor: \"rgba(255,255,255,0.7)\",\r\n calendarSelectColor: \"magenta\",\r\n color: \"rgb(255,255,255)\",\r\n hoverBackground: [\r\n \"rgb(66, 66, 66)\",\r\n \"rgb(77, 77, 77)\",\r\n \"rgb(92, 92, 92)\",\r\n \"rgb(108, 108, 108)\",\r\n \"rgb(128, 128, 128)\",\r\n \"rgb(144, 144, 144)\",\r\n \"rgb(172, 172, 172)\",\r\n \"rgb(192, 192, 192)\",\r\n \"rgb(212, 212, 212)\",\r\n \"rgb(224, 224, 224)\",\r\n \"rgb(232, 232, 232)\",\r\n \"rgb(242, 242, 242)\",\r\n \"rgb(255, 255, 255)\",\r\n ],\r\n iconColor: \"rgba(255,255,255,0.5)\",\r\n iconDisabledColor: \"rgba(255,255,255,0.3)\",\r\n iconHoverColor: \"rgba(255,255,255,0.05)\",\r\n linkColor: \"rgba(255,255,255,0.54)\",\r\n secondaryColor: \"rgba(255,255,255,0.54)\",\r\n dangerColor: \"#ff6666\",\r\n dangerHoverColor,\r\n warningColor: \"#ff6666\",\r\n successColor: green[500],\r\n infoColor,\r\n progressTrailColor: \"rgb(33,33,33)\",\r\n tooltipBackground: \"rgb(33,33,33)\",\r\n tooltipColor: \"rgba(255,255,255, 0.7)\",\r\n tooltipSecondary: \"rgba(255,255,255,0.54)\",\r\n scrollbar: \"rgb(92,92, 92)\",\r\n};\r\n\r\n// Darkest theme\r\nconst darkestTheme = {\r\n themeType: \"dark\",\r\n primaryColors: {\r\n light: \"rgb(187, 222, 251)\",\r\n main: \"#9775FA\",\r\n dark: \"#9775FA\",\r\n },\r\n secondaryColors: {\r\n light: \"rgb(248, 187, 208)\",\r\n main: \"rgb(244, 143, 177)\",\r\n dark: \"rgb(240, 98, 146)\",\r\n },\r\n badge: {\r\n background: \"rgba(255,255,255,0.54)\",\r\n color: \"rgba(0,0,0,0.87)\",\r\n },\r\n background: [\r\n \"rgb(4, 5, 7)\",\r\n \"rgb(12, 18, 23)\",\r\n \"rgb(16, 24, 30)\",\r\n \"rgb(20, 30, 37)\",\r\n \"rgb(24, 36, 44)\",\r\n \"rgb(32, 47, 57)\",\r\n \"rgb(64, 92, 112)\",\r\n \"rgb(72, 103, 125)\",\r\n \"rgb(128, 159, 182)\",\r\n \"rgb(144, 171, 191)\",\r\n \"rgb(164, 186, 203)\",\r\n \"rgb(238, 242, 245)\",\r\n ],\r\n borderColor: \"rgba(255,255,255,0.12)\",\r\n labelColor: \"rgba(255,255,255,0.7)\",\r\n calendarSelectColor: \"magenta\",\r\n color: \"rgb(255,255,255)\",\r\n hoverBackground: [\r\n \"rgb(16, 24, 30)\",\r\n \"rgb(20, 30, 37)\",\r\n \"rgb(24, 36, 44)\",\r\n \"rgb(32, 47, 57)\",\r\n ],\r\n iconColor: \"rgba(255,255,255,0.5)\",\r\n iconDisabledColor: \"rgba(255,255,255,0.3)\",\r\n iconHoverColor: \"rgba(255,255,255,0.05)\",\r\n linkColor: \"rgba(255,255,255,0.54)\",\r\n secondaryColor: \"rgba(255,255,255,0.54)\",\r\n dangerColor: red[500],\r\n dangerHoverColor,\r\n warningColor: red[500],\r\n successColor: green[500],\r\n infoColor,\r\n progressTrailColor: \"rgb(4,5,7)\",\r\n tooltipBackground: \"rgb(4, 5, 7)\",\r\n tooltipColor: \"rgba(255,255,255, 0.7)\",\r\n tooltipSecondary: \"rgba(255,255,255,0.54)\",\r\n scrollbar: \"rgb(32, 47, 57)\",\r\n};\r\n\r\n// Light theme\r\nconst lightTheme = {\r\n themeType: \"light\",\r\n primaryColors: {\r\n light: \"rgb(66, 165, 245)\",\r\n main: \"#6741d9\",\r\n dark: \"#5F3DC4\",\r\n },\r\n secondaryColors: {\r\n light: \"rgb(244, 143, 177)\",\r\n main: \"#b91c1c\",\r\n dark: \"rgb(216, 27, 96)\",\r\n },\r\n badge: {\r\n background: \"rgba(0,0,0,0.84)\",\r\n color: \"rgba(255,255,255)\",\r\n },\r\n background: [\r\n \"rgb(245, 245, 245)\",\r\n \"rgb(255, 255, 255)\",\r\n \"rgb(255, 255, 255)\",\r\n ],\r\n borderColor: \"rgba(0,0,0,0.12)\",\r\n labelColor: \"rgba(0,0,0,0.87)\",\r\n calendarSelectColor: \"magenta\",\r\n color: \"rgb(0,0,0,0.87)\",\r\n hoverBackground: [\"rgb(192,192,192)\", \"rgb(176,176,176)\"],\r\n iconColor: \"rgb(0,0,0,0.84)\",\r\n iconDisabledColor: \"rgba(0,0,0,0.3)\",\r\n iconHoverColor: \"rgba(0,0,0,0.23)\",\r\n linkColor: \"rgb(0,0,0,0.84)\",\r\n secondaryColor: \"rgba(0,0,0,0,85)\",\r\n dangerColor,\r\n dangerHoverColor,\r\n warningColor,\r\n successColor,\r\n infoColor,\r\n progressTrailColor: \"rgb(245,245,245)\",\r\n tooltipBackground: \"rgb(224,224,224)\",\r\n tooltipColor: \"rgba(0,0,0,0.87)\",\r\n tooltipSecondary: \"rgba(0,0,0,0.84)\",\r\n scrollbar: \"rgb(192,192,192)\",\r\n tabColor: \"rgba(0,0,0,0.87)\",\r\n};\r\n\r\nconst getThemeVariation = (type) => {\r\n switch (type) {\r\n case \"dark\":\r\n return darkTheme;\r\n case \"darkest\":\r\n return darkestTheme;\r\n case \"light\":\r\n return lightTheme;\r\n default:\r\n throw new Error(\r\n `Wrong theme type: ${type}. Should be light, dark or darkest`\r\n );\r\n }\r\n};\r\n\r\nexport const getTheme = (type) => getThemeVariation(type || \"dark\");\r\n","import React, { useEffect } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport BottomNavigation from \"@material-ui/core/BottomNavigation\";\r\nimport BottomNavigationAction from \"@material-ui/core/BottomNavigationAction\";\r\nimport HomeIcon from \"@material-ui/icons/Home\";\r\nimport WeekscheduleIcon from \"@material-ui/icons/Event\";\r\nimport BookingsIcon from \"@material-ui/icons/AccountCircle\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport CoursesIcon from \"../Images/CoursesIcon\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n borderTop: `1px solid ${theme.app.borderColor}`,\r\n display: \"none\",\r\n position: \"fixed\",\r\n bottom: 0,\r\n height: \"4.375rem\",\r\n \"@media(max-width: 600px)\": {\r\n display: \"flex\",\r\n },\r\n \"& span\": {\r\n fontSize: \"14px\",\r\n fontWeight: \"500\",\r\n },\r\n },\r\n unpaid: {\r\n backgroundColor: theme.app.dangerColor,\r\n color: \"white\",\r\n },\r\n paid: {\r\n backgroundColor: theme.app.infoColor,\r\n color: \"white\",\r\n },\r\n button: {\r\n color: theme.app.labelColor,\r\n },\r\n}));\r\n\r\nconst BottomNav = (props) => {\r\n const { mybookings, location, history } = props;\r\n const { language, culture } = useSelector((state) => ({\r\n language: state.language,\r\n }));\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState(location.pathname);\r\n useEffect(() => {\r\n setValue(location.pathname);\r\n }, [location]);\r\n\r\n function handleChange(event, newValue) {\r\n // setValue(newValue);\r\n history.push(newValue);\r\n }\r\n\r\n const confirmed =\r\n mybookings && mybookings.filter((b) => b.isConfirmed).length;\r\n const anyUnpaid =\r\n mybookings && mybookings.some((b) => !b.isPaid && b.isConfirmed);\r\n\r\n return (\r\n \r\n }\r\n className={classes.button}\r\n />\r\n }\r\n className={classes.button}\r\n />\r\n }\r\n className={classes.button}\r\n />\r\n \r\n \r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default withRouter(BottomNav);\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { Button, Notification, SimpleGrid, Text } from \"@mantine/core\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport \"./unpaid.css\";\r\nimport PaymentCountdown from \"../Bookings/paymentCountdown\";\r\nimport moment from \"moment\";\r\nimport gql from \"graphql-tag\";\r\nimport _ from \"lodash\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport { uriWithCulture } from \"./util\";\r\n\r\nconst PAY_BOOKING = gql`\r\n mutation initiatePayment {\r\n initiatePayment {\r\n uri\r\n }\r\n }\r\n`;\r\n\r\n// const useStyles = makeStyles((theme) => ({\r\n// tooltip: {\r\n// \"@media(max-width: 600px)\": {\r\n// bottom: \"55px\",\r\n// },\r\n// },\r\n// unpaid: {\r\n// backgroundColor: theme.app.dangerColor,\r\n// color: \"white\",\r\n// },\r\n// button: {\r\n// color: \"rgba(255,255,255,0.7)\",\r\n// },\r\n// }));\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n wrapper: {\r\n \"&:Button\": {\r\n display: \"none\",\r\n },\r\n },\r\n tooltip: {\r\n \"@media screen and (max-width: 768px)\": {\r\n bottom: \"75px !important\",\r\n },\r\n },\r\n closeButton: {\r\n color: \"black !important\",\r\n },\r\n}));\r\n\r\nconst getState = (state) => ({\r\n auth: state.oidc.user !== null && !state.oidc.user.expired,\r\n language: state.language,\r\n});\r\n\r\nconst Unpaid = (props) => {\r\n const { mybookings, location, culture } = props;\r\n const classes = useStyles();\r\n const context = useContext(AppContext);\r\n const [open, setOpen] = useState(false);\r\n const { dispatch } = context;\r\n const { auth, language } = useSelector((state) => getState(state));\r\n const handleMutationSuccess = (data) => \r\n (window.location = uriWithCulture(data.initiatePayment.uri, culture));\r\n ;\r\n const handleMutationError = (error) =>\r\n dispatch({ type: OPEN_TOAST, toastText: error, toastType: \"error\" });\r\n const [initiatePayment] = useMutation(PAY_BOOKING, {\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n });\r\n\r\n let history = useHistory();\r\n const isOpen = auth\r\n ? location.pathname === \"/bookings\"\r\n ? false\r\n : open\r\n : false;\r\n\r\n useEffect(() => {\r\n const anyUnpaid =\r\n mybookings.filter((b) => b.isConfirmed && !b.isPaid).length > 0;\r\n if (anyUnpaid) {\r\n setOpen(true);\r\n }\r\n }, [mybookings]);\r\n\r\n const payableBookings =\r\n mybookings && mybookings.filter((b) => b.isConfirmed && !b.isPaid);\r\n const nextPayment = _.chain(payableBookings)\r\n .filter((x) => x.lastPaymentTime)\r\n .map((x) => moment(x.lastPaymentTime))\r\n .sort()\r\n .min()\r\n .value();\r\n\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n const unpaid = mybookings.filter((x) => x.isConfirmed && !x.isPaid).length;\r\n\r\n if (unpaid <= 0) return
    ;\r\n\r\n return (\r\n <>\r\n \r\n setOpen(false)}\r\n className={`${classes.wrapper} notificationWrapper`}\r\n classNames={{ closeButton: classes.closeButton }}\r\n style={{ fontSize: \"1rem\" }}\r\n >\r\n ({\r\n color: theme.colors.gray[9],\r\n })}\r\n >\r\n {unpaid < 2\r\n ? `${language.youHave} ${unpaid} ${language.unpaidBooking}`\r\n : `${language.youHave} ${unpaid} ${language.unpaidBookings}`}\r\n \r\n \r\n \r\n {\r\n history.push(\"/bookings\");\r\n }}\r\n >\r\n {language.showMyBookings}\r\n \r\n \r\n {language.toPayment}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(Unpaid);\r\n","import { useEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nexport default function SetBackUrl() {\r\n const { pathname } = useLocation();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (location !== undefined) {\r\n localStorage.setItem(\"goBackUrl\", window.location.href);\r\n }\r\n }, [pathname, location]);\r\n return null;\r\n};\r\n\r\n","import React, { useState, useContext } from \"react\";\r\nimport {\r\n SimpleGrid,\r\n Modal,\r\n Button,\r\n Title,\r\n Text,\r\n} from \"@mantine/core\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport gql from \"graphql-tag\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { AppContext, OPEN_TOAST } from \"../Context\";\r\nimport PaymentCountdown from \"./paymentCountdown\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { useDidUpdate } from \"@mantine/hooks\";\r\nimport { ModalContext } from \"../Context/ModalContext\";\r\nimport { uriWithCulture } from \"./util\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\n\r\nconst PAY_BOOKING = gql`\r\n mutation initiatePayment {\r\n initiatePayment {\r\n uri\r\n }\r\n }\r\n`;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n closeButton: {\r\n color: theme.app.labelColor,\r\n },\r\n}));\r\n\r\nconst NewBookingModal = (props) => {\r\n const classes = useStyles();\r\n const { mybookings, language, culture } = props;\r\n const [opened, setOpened] = useState(false);\r\n const context = useContext(AppContext);\r\n const { openModal, setOpenModal } = useContext(ModalContext);\r\n const { dispatch } = context;\r\n const locale = culture.substring(0, 2).toLowerCase();\r\n\r\n const handleMutationSuccess = (data) => \r\n (window.location = uriWithCulture(data.initiatePayment.uri, culture));\r\n\r\n\r\n const handleMutationError = (error) =>\r\n dispatch({ type: OPEN_TOAST, toastText: error, toastType: \"error\" });\r\n const [initiatePayment] = useMutation(PAY_BOOKING, {\r\n onError: handleMutationError,\r\n onCompleted: handleMutationSuccess,\r\n });\r\n\r\n let history = useHistory();\r\n const payableBookings =\r\n mybookings && mybookings.filter((b) => b.isConfirmed && !b.isPaid);\r\n const nextPayment = _.chain(payableBookings)\r\n .filter((x) => x.lastPaymentTime)\r\n .map((x) => moment(x.lastPaymentTime))\r\n .sort()\r\n .min()\r\n .value();\r\n\r\n useDidUpdate(() => {\r\n setOpened(openModal);\r\n }, [openModal]);\r\n\r\n return (\r\n <>\r\n {nextPayment ? (\r\n setOpenModal(false)}\r\n styles={{ header: { margin: 0 } }}\r\n padding=\"xl\"\r\n radius=\"md\"\r\n zIndex={1500}\r\n classNames={{ close: classes.closeButton }}\r\n >\r\n \r\n \r\n {language.bookingSucceed}\r\n \r\n \r\n {language.hasToPay}:\r\n \r\n \r\n \r\n \r\n {language.payNowOrSeeBookings}\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n history.push(\"/bookings\");\r\n }}\r\n >\r\n {language.showMyBookings}\r\n \r\n \r\n {language.toPayment}\r\n \r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default NewBookingModal;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { BrowserRouter, Switch, Route } from \"react-router-dom\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport gql from \"graphql-tag\";\r\nimport { createTheme } from \"@material-ui/core/styles\";\r\nimport { ThemeProvider } from \"@material-ui/styles\";\r\nimport AppContextProvider, { AppContext } from \"./Context\";\r\nimport Header from \"./Common/Header\";\r\nimport Menu from \"./Common/menu\";\r\nimport NewBookings from \"./Bookings\";\r\nimport History from \"./History\";\r\nimport WeekView from \"./WeekView\";\r\nimport Courses from \"./Courses\";\r\nimport Home from \"./Home\";\r\nimport RequireAuth from \"./Common/requireAuth\";\r\nimport CallbackPage from \"./Common/callback\";\r\nimport SilentRenew from \"./Common/silentRenew\";\r\nimport BookingModal from \"./occasion/bookingModal\";\r\nimport Toast from \"./Common/toast\";\r\nimport Settings from \"./Common/settings\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport UserManagerProvider from \"./Context/userManagerContext\";\r\nimport { getTheme } from \"./Common/theme\";\r\nimport BottomNav from \"./Common/bottomNav\";\r\nimport Unpaid from \"./Common/unpaid\";\r\nimport SetBackUrl from \"./Common/SetBackUrl\";\r\nimport { STATE_CULTURE } from \"./Actions/stateActions\";\r\nimport NewBookingModal from \"./Bookings/NewBookingModal\";\r\nimport Markdown from \"react-markdown\";\r\nimport { useMediaQuery } from \"@mantine/hooks\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n height: `${theme.height}px`,\r\n // overflow: \"hidden\",\r\n position: \"relative\",\r\n display: \"flex\",\r\n \"@media(max-width: 600px)\": {\r\n display: \"block\"\r\n }\r\n // \"& ::-webkit-scrollbar\": {\r\n // width: \"10px\",\r\n // },\r\n // \"& ::-webkit-scrollbar-track\": {\r\n // \"-webkit-box-shadow\": \"inset 0 0 6px rgba(0,0,0,0.3)\",\r\n // },\r\n // \"& ::-webkit-scrollbar-thumb\": {\r\n // backgroundColor: theme.app.scrollbar,\r\n // outline: `1px solid ${theme.app.borderColor}`,\r\n // },\r\n },\r\n workspaceContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n background: theme.app.background[0],\r\n width: \"100%\",\r\n position: \"relative\",\r\n paddingTop: \"64px\",\r\n overflowY: \"auto\",\r\n \"@media(max-width: 600px)\": {\r\n // height: \"calc(100% - 56px)\",\r\n }\r\n },\r\n footer: {\r\n width: \"100%\",\r\n alignSelf: \"end\",\r\n height: \"fit-content\",\r\n background: theme.app.background[1],\r\n color: theme.app.labelColor\r\n }\r\n}));\r\n\r\nexport const MY_BOOKINGS = gql`\r\n query myBookings($position: String) {\r\n mybookings(position: $position) {\r\n id\r\n status\r\n isQueue\r\n queueSlot\r\n isCancelled\r\n cancelledAt\r\n isConfirmed\r\n confirmedAt\r\n isPaid\r\n canCancel\r\n remainingPaymentInclVat\r\n lastPaymentTime\r\n activity {\r\n id\r\n name\r\n infoText\r\n color\r\n occasions {\r\n at\r\n }\r\n location {\r\n id\r\n name\r\n }\r\n }\r\n occasion {\r\n id\r\n at\r\n duration\r\n maxQueueSlots\r\n }\r\n participants {\r\n id\r\n name\r\n }\r\n responsible {\r\n id\r\n }\r\n }\r\n whoami {\r\n photo\r\n name\r\n }\r\n manages {\r\n id\r\n name\r\n email\r\n civicRegistrationNumber\r\n photo\r\n }\r\n }\r\n`;\r\n\r\nconst theme = (myTheme) =>\r\n createTheme({\r\n app: myTheme,\r\n height: myTheme.height,\r\n palette: {\r\n type: myTheme.themeType,\r\n primary: {\r\n light: myTheme.primaryColors.light,\r\n main: myTheme.primaryColors.main,\r\n dark: myTheme.primaryColors.dark\r\n },\r\n secondary: {\r\n light: myTheme.secondaryColors.light,\r\n main: myTheme.secondaryColors.main,\r\n dark: myTheme.secondaryColors.dark\r\n },\r\n background: {\r\n paper: myTheme.background[1],\r\n default: myTheme.background[0]\r\n }\r\n }\r\n });\r\n\r\nconst Workspace = ({ classes, mybookings, whoami, footerText }) => {\r\n const mobile = useMediaQuery(\"(max-width: 768px)\");\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst Content = () => {\r\n const classes = useStyles();\r\n const auth = useSelector(\r\n (state) => state.oidc.user !== null && !state.oidc.user.expired\r\n );\r\n const { culture, language } = useSelector((state) => ({\r\n culture: state.cookies[STATE_CULTURE],\r\n language: state.language\r\n }));\r\n\r\n const { state } = useContext(AppContext);\r\n const { footerText } = state;\r\n\r\n const { data, loading, refetch } = useQuery(MY_BOOKINGS, {\r\n pollInterval: 60000\r\n });\r\n if (loading) return
    loading
    ;\r\n if ((!data || !data.mybookings || data.whoami.name === \"NA\") && auth) {\r\n refetch();\r\n }\r\n\r\n const mybookings = data.mybookings;\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst Routes = (props) => {\r\n const { userManager } = props;\r\n const [prevHeight, setPrevHeight] = useState(window.innerHeight);\r\n const selectedTheme = useSelector((state) => state.cookies.theme);\r\n const myTheme = getTheme(selectedTheme);\r\n window.addEventListener(\"resize\", () => {\r\n if (window.innerHeight !== prevHeight) {\r\n setPrevHeight(window.innerHeight);\r\n }\r\n });\r\n\r\n const { language, culture } = useSelector((state) => ({\r\n language: state.language,\r\n culture: state.cookies[STATE_CULTURE]\r\n }));\r\n\r\n // Set HTML language\r\n useEffect(() => {\r\n document.documentElement.lang = culture.split(\"-\")[0];\r\n }, [culture]);\r\n\r\n useEffect(() => {\r\n document.title = `${language?.sideTitle ?? document.title}`;\r\n }, [language]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n }\r\n />\r\n \r\n } />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Routes;\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst BusyContainer = (props) => {\r\n const isBusy = useSelector(\r\n (state) => state.busy.isBusy && state.busy.isWrite\r\n );\r\n\r\n return
    {props.children}
    ;\r\n};\r\n\r\nexport default BusyContainer;\r\n","import React, { useState } from \"react\";\r\nimport Routes from \"./routes\";\r\nimport { Provider } from \"react-redux\";\r\nimport { OidcProvider } from \"redux-oidc\";\r\nimport BusyContainer from \"./busyContainer\";\r\nimport { ApolloProvider } from \"@apollo/react-hooks\";\r\nimport { ModalContext } from \"./Context/ModalContext\";\r\n\r\nconst App = ({ config }) => {\r\n const { store, client, userManager } = config;\r\n const [openModal, setOpenModal] = useState(null);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const loadLanguage = (culture, dispatch) => {\r\n fetch(process.env.PUBLIC_URL + `/language.${culture}.json`)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((json) => {\r\n dispatch({\r\n type: types.LANGUAGE_LOADED,\r\n payload: json,\r\n });\r\n });\r\n};\r\n","export const busyReducer = (state = { isBusy: false }, action) => {\r\n switch (action.type) {\r\n case \"APOLLO_QUERY_INIT\":\r\n return {\r\n isBusy: true,\r\n isError: false,\r\n isWrite: false,\r\n message: \"Laddar...\",\r\n };\r\n case \"APOLLO_QUERY_RESULT\":\r\n case \"APOLLO_QUERY_RESULT_CLIENT\":\r\n return {\r\n isBusy: false,\r\n isError: false,\r\n isWrite: false,\r\n message: \"\",\r\n };\r\n case \"APOLLO_QUERY_ERROR\":\r\n return {\r\n isBusy: false,\r\n isError: true,\r\n isWrite: false,\r\n message: action.error.toString(),\r\n };\r\n case \"APOLLO_MUTATION_INIT\":\r\n return {\r\n isBusy: true,\r\n isError: false,\r\n isWrite: true,\r\n message: \"Laddar...\",\r\n };\r\n case \"APOLLO_MUTATION_RESULT\":\r\n return {\r\n isBusy: false,\r\n isError: false,\r\n isWrite: false,\r\n message: \"\",\r\n };\r\n case \"APOLLO_MUTATION_ERROR\":\r\n return {\r\n isBusy: false,\r\n isError: true,\r\n isWrite: false,\r\n message: action.error.toString(),\r\n };\r\n\r\n default:\r\n break;\r\n }\r\n\r\n if (action.readyState) {\r\n switch (action.readyState) {\r\n case \"failure\":\r\n return {\r\n isBusy: false,\r\n isError: true,\r\n isWrite: false,\r\n message: action.error.toString(),\r\n };\r\n case \"request\":\r\n return {\r\n isBusy: true,\r\n isError: false,\r\n isWrite: action.$isWrite,\r\n message: action.$isWrite ? \"Arbetar...\" : \"Laddar...\",\r\n };\r\n case \"success\":\r\n return {\r\n isBusy: false,\r\n isError: false,\r\n isWrite: false,\r\n message: \"\",\r\n };\r\n default:\r\n return state;\r\n }\r\n }\r\n\r\n return state;\r\n};\r\n","export default {\r\n culture: \"sv-SE\",\r\n theme: \"dark\",\r\n};\r\n","import Cookies from \"browser-cookies\";\r\nimport InitialState from \"./initialState\";\r\nimport {\r\n STATE_CULTURE,\r\n STATE_ACTIVE_PERSON_ID,\r\n THEME,\r\n} from \"../Actions/stateActions\";\r\n\r\nexport const cookiesReducer = (keys, config) => (state, action) => {\r\n state = state || getInitialState(keys, config);\r\n\r\n switch (action.type) {\r\n case \"@EE/EXPIRE_COOKIE\": {\r\n const c = {};\r\n c[action.key] = null;\r\n\r\n return Object.assign({}, state, c);\r\n }\r\n case \"@EE/SET_COOKIE\": {\r\n const c = {};\r\n c[action.key] = action.value;\r\n\r\n return Object.assign({}, state, c);\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nfunction getInitialState(keys, config) {\r\n const state = {};\r\n //Check if culture and theme is in cookie\r\n if (Cookies.get(STATE_CULTURE) == null) {\r\n Cookies.set(STATE_CULTURE, InitialState.culture, {\r\n samesite: \"lax\",\r\n });\r\n }\r\n if (Cookies.get(THEME) == null) {\r\n const defaultTheme = config.theme || InitialState.theme;\r\n Cookies.set(THEME, defaultTheme, { samesite: \"lax\" });\r\n }\r\n\r\n //Always clear activePersonId\r\n Cookies.erase(STATE_ACTIVE_PERSON_ID);\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n state[key] = Cookies.get(key);\r\n }\r\n\r\n return state;\r\n}\r\n","export const configReducer = (state = {}, action) => {\r\n switch (action.type) {\r\n case \"CONFIGURATION_LOADED\":\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import * as types from \"../Actions/actionTypes\";\r\n\r\nexport const languageReducer = (state = {}, action) => {\r\n switch (action.type) {\r\n case types.LANGUAGE_LOADED:\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import Cookies from \"browser-cookies\";\r\n\r\nexport const cookiesMiddleware = (store) => (next) => (action) => {\r\n if (action.type === \"@EE/SET_COOKIE\") {\r\n Cookies.set(action.key, action.value || \"\", { samesite: \"lax\" });\r\n } else if (action.type === \"@EE/EXPIRE_COOKIE\") {\r\n Cookies.erase(action.key);\r\n }\r\n\r\n return next(action);\r\n};\r\n","const checkStatus = (response) => {\r\n return new Promise((resolve, reject) => {\r\n if (response.status >= 200 && response.status < 400) {\r\n resolve(response);\r\n } else {\r\n response.text().then((msg) => {\r\n var error = new Error(`${response.statusText}: ${msg}`);\r\n error.response = response;\r\n reject(error);\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst ajax = (url, auth, method, payload) => {\r\n var headers = new Headers();\r\n var isAuthenticated = auth.user !== null && !auth.user.expired;\r\n\r\n if (isAuthenticated) {\r\n headers.append(\"Authorization\", \"Bearer \" + auth.user.access_token);\r\n }\r\n\r\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\r\n\r\n var p = {\r\n method: method,\r\n headers: headers,\r\n body: JSON.stringify(payload),\r\n };\r\n\r\n return fetch(url, p).then(checkStatus);\r\n};\r\n\r\nexport const get = (url, auth) => {\r\n console.log(\"GET \" + url);\r\n return ajax(url, auth, \"GET\").then((response) => {\r\n if (response.status === 204 || response.status === 304) return null;\r\n\r\n return response.json();\r\n });\r\n};\r\n\r\nconst del = (url, auth) => {\r\n console.log(\"DELETE \" + url);\r\n return ajax(url, auth, \"DELETE\").then((response) => response.json());\r\n};\r\n\r\nconst post = (url, auth, payload) => {\r\n console.log(\"POST \" + url, payload);\r\n return ajax(url, auth, \"POST\", payload).then((response) => response.json());\r\n};\r\n\r\nconst put = (url, auth, payload) => {\r\n console.log(\"PUT \" + url, payload);\r\n return ajax(url, auth, \"PUT\", payload).then((response) => response.json());\r\n};\r\n\r\nexport const httpMiddleware =\r\n (apiUri) =>\r\n ({ dispatch, getState }) =>\r\n (next) =>\r\n (action) => {\r\n if (action.url && action.method) {\r\n const auth = getState().oidc;\r\n const url = apiUri + action.url;\r\n const promise = (function () {\r\n switch (action.method) {\r\n case \"GET\":\r\n return get(url, auth);\r\n case \"POST\":\r\n return post(url, auth, action.payload);\r\n case \"PUT\":\r\n return put(url, auth, action.payload);\r\n case \"DELETE\":\r\n return del(url, auth);\r\n default:\r\n throw new Error(\"Unsupported method \" + action.method);\r\n }\r\n })();\r\n\r\n if (action.then) {\r\n promise.then((result) => {\r\n dispatch(action.then(result));\r\n });\r\n }\r\n\r\n dispatch({\r\n type: action.type,\r\n promise,\r\n $isWrite: action.method !== \"GET\",\r\n });\r\n } else {\r\n next(action);\r\n }\r\n };\r\n\r\nexport const httpDevMiddleware =\r\n ({ dispatch }) =>\r\n (next) =>\r\n (action) => {\r\n if (action.url && action.method) {\r\n // const title = `${action.method}: ${action.url}. \\r\\n`;\r\n // const data = action.payload ? JSON.stringify(action.payload) : '';\r\n\r\n const promise = new Promise((resolve, reject) =>\r\n setTimeout(() => {\r\n resolve({});\r\n }, 1000)\r\n );\r\n\r\n if (action.then) {\r\n promise.then(() => dispatch(action.then({})));\r\n }\r\n\r\n dispatch({\r\n type: action.type,\r\n promise,\r\n $isWrite: action.method !== \"GET\",\r\n });\r\n } else {\r\n next(action);\r\n }\r\n };\r\n","import { handleError } from \"../AppCommon/util\";\r\n\r\nexport const promiseMiddleware = () => (next) => (action) => {\r\n const { promise, ...rest } = action;\r\n\r\n if (!promise) {\r\n return next(action);\r\n }\r\n next({ ...rest, readyState: \"request\" });\r\n\r\n return promise.then(\r\n (result) => {\r\n next({ ...rest, result, readyState: \"success\" });\r\n },\r\n (error) => {\r\n handleError(error);\r\n next({ ...rest, error, readyState: \"failure\" });\r\n }\r\n );\r\n};\r\n","export const thunkMiddleware =\r\n ({ dispatch, getState }) =>\r\n (next) =>\r\n (action) => {\r\n if (typeof action === \"function\") {\r\n return action(dispatch, getState);\r\n } else {\r\n return next(action);\r\n }\r\n };\r\n","import { createStore, combineReducers, applyMiddleware, compose } from \"redux\";\r\nimport { reducer as oidcReducer } from \"redux-oidc\";\r\nimport createOidcMiddleware, { createUserManager } from \"redux-oidc\";\r\nimport {\r\n ApolloClient,\r\n ApolloLink,\r\n InMemoryCache,\r\n HttpLink,\r\n} from \"apollo-boost\";\r\nimport { authConfig } from \"./AppCommon/auth\";\r\nimport { loadLanguage } from \"./Actions/languageActions\";\r\nimport { keys, STATE_CULTURE } from \"./Actions/stateActions\";\r\nimport { busyReducer } from \"./Reducers/busyReducer\";\r\nimport { cookiesReducer } from \"./Reducers/cookiesReducer\";\r\nimport { configReducer } from \"./Reducers/configReducer\";\r\nimport { languageReducer } from \"./Reducers/languageReducer\";\r\nimport { cookiesMiddleware } from \"./Middlewares/cookiesMiddleware\";\r\nimport {\r\n httpMiddleware,\r\n httpDevMiddleware,\r\n} from \"./Middlewares/httpMiddleware\";\r\nimport { promiseMiddleware } from \"./Middlewares/promiseMiddleware\";\r\nimport { thunkMiddleware } from \"./Middlewares/thunkMiddleware\";\r\n\r\nconst init = (config) => {\r\n const isDev = process.env.NODE_ENV === \"development\";\r\n const tokenManagerConfig = authConfig(config.auth, config.self);\r\n console.log(\"config.auth\", tokenManagerConfig);\r\n const userManager = createUserManager(tokenManagerConfig);\r\n const oidcMiddleware = createOidcMiddleware(userManager);\r\n\r\n const reducers = combineReducers({\r\n busy: busyReducer,\r\n config: configReducer,\r\n oidc: oidcReducer,\r\n cookies: cookiesReducer(keys(), config),\r\n language: languageReducer,\r\n });\r\n\r\n const initialState = {\r\n config,\r\n };\r\n\r\n const middleware = applyMiddleware(\r\n promiseMiddleware,\r\n thunkMiddleware,\r\n oidcMiddleware,\r\n cookiesMiddleware,\r\n isDev ? httpDevMiddleware : httpMiddleware(config.api)\r\n );\r\n\r\n const devTool = window.__REDUX_DEVTOOLS_EXTENSION__\r\n ? window.__REDUX_DEVTOOLS_EXTENSION__()\r\n : (f) => f;\r\n const enhancers = compose(middleware, devTool);\r\n const store = createStore(reducers, initialState, enhancers);\r\n console.log(config.graphql);\r\n const httpLink = new HttpLink({ uri: config.graphql });\r\n const authLink = new ApolloLink((operation, forward) => {\r\n const { oidc } = store.getState();\r\n const token = oidc.user && oidc.user.access_token;\r\n\r\n // Use the setContext method to set the HTTP headers.\r\n operation.setContext({\r\n headers: {\r\n authorization: token ? `Bearer ${token}` : \"\",\r\n },\r\n });\r\n\r\n return forward(operation);\r\n });\r\n\r\n const client = new ApolloClient({\r\n link: authLink.concat(httpLink), // Chain it with the HttpLink\r\n cache: new InMemoryCache(),\r\n });\r\n console.log(authLink.concat(httpLink));\r\n userManager.events.addUserLoaded((user) => {\r\n console.log(\"UserLoaded\", user);\r\n });\r\n\r\n userManager.events.addUserUnloaded(() => {\r\n console.log(\"UserUnloaded\");\r\n });\r\n\r\n //TODO: Event reload configuration?\r\n store.dispatch({ type: \"CONFIGURATION_LOADED\", payload: config });\r\n\r\n var culture = store.getState().cookies[STATE_CULTURE];\r\n loadLanguage(culture, store.dispatch);\r\n\r\n return {\r\n store,\r\n client,\r\n userManager,\r\n };\r\n};\r\n\r\nexport default init;\r\n","export function authConfig(authority, self) {\r\n return {\r\n client_id: \"entryevent-browser-pkce\",\r\n redirect_uri: `${self}/callback`,\r\n response_type: \"code\",\r\n scope: \"openid profile email entryevent\",\r\n authority: authority,\r\n post_logout_redirect_uri: `${self}`,\r\n silent_redirect_uri: `${self}/silent_renew`,\r\n automatic_silent_renew: true,\r\n filterProtocolClaims: false,\r\n loadUserInfo: true,\r\n };\r\n}\r\n\r\nexport function apolloMiddleware(getState) {\r\n return {\r\n applyMiddleware: (req, next) => {\r\n const { oidc } = getState();\r\n //console.log(oidc);\r\n if (oidc.user && !oidc.user.expired) {\r\n if (!req.options.headers) {\r\n req.options.headers = {}; // Create the header object if needed.\r\n }\r\n\r\n const token = oidc.user.access_token;\r\n\r\n req.options.headers[\"Authorization\"] = \"Bearer \" + token;\r\n\r\n //console.log(\"Apollo req, auth\", req);\r\n } else {\r\n //console.log(\"Apollo req, NOT auth\", req);\r\n }\r\n next();\r\n },\r\n };\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./app.css\";\r\nimport App from \"./app\";\r\nimport init from \"./infrastructure\";\r\n\r\nconst getJson = (f) => {\r\n return fetch(f).then((x) => x.json());\r\n};\r\n\r\nconst merge = (o, rest) => {\r\n var next = rest.pop();\r\n if (!next) return o;\r\n\r\n const merged = {\r\n ...o,\r\n ...next,\r\n };\r\n\r\n return merge(merged, rest);\r\n};\r\n\r\nconst configUri = process.env.PUBLIC_URL + \"/config.json\";\r\nconst styleUri = \"/ee-static/booking/style.json\";\r\nconst files = [configUri, styleUri].map((f) => getJson(f));\r\n\r\nPromise.all(files)\r\n .then((response) => merge({}, response))\r\n .then((cfg) => {\r\n console.log(\"Merged config\", cfg);\r\n fetch(`${cfg.api}/version`)\r\n .then((response) => response.json())\r\n .then((v) => {\r\n const root = document.getElementById(\"root\");\r\n const required = parseInt(cfg.requiredApiVersion.replace(/\\./g, \"\"));\r\n\r\n console.log(\"version\", v);\r\n console.log(\"required\", required);\r\n\r\n if (v.version < required) {\r\n ReactDOM.render(\r\n

    \r\n Api version {cfg.requiredApiVersion} is required, but was{\" \"}\r\n {v.description}\r\n

    ,\r\n root\r\n );\r\n } else {\r\n const intitialized = init(cfg);\r\n ReactDOM.render(, root);\r\n }\r\n });\r\n });\r\n"],"sourceRoot":""}