{"version":3,"sources":["auth/selectors.ts","routes/guards/UserIsNotAuthenticated.ts","util/generateLoginUrl.ts","util/constants.ts","auth/api/authenticate.ts","auth/helpers.ts","auth/api/logout.ts","auth/sagas/logout.ts","util/callApi.ts","util/setState.ts","util/asForm.tsx","state/initialState.ts","state/index.ts","requests/reducers.ts","util/runSaga.ts","auth/sagas/authenticate.ts","auth/components/AuthCallback.tsx","auth/routes.tsx","cards/api/confirmCard.ts","cards/sagas/confirmCard.ts","cards/components/CardCallback.ts","routes/guards/UserIsAuthenticated.ts","cards/routes.tsx","organization/selectors.ts","forms/components/InputField.tsx","forms/components/TextareaField.tsx","forms/helpers.ts","requests/selectors.ts","requests/sagas/clearApiError.ts","app/components/Toast.tsx","forms/components/HslButton.tsx","auth/wrappers/SelectorWrapper.ts","organization/api/updateOrganization.ts","organization/sagas/updateOrganization.ts","organization/components/OrganizationForm.tsx","organization/api/fetchOrganization.ts","organization/sagas/fetchOrganization.ts","organization/api/requestApiKey.ts","organization/sagas/requestApiKey.ts","organization/api/revokeApiKey.ts","organization/sagas/revokeApiKey.ts","static/icons/close.svg","organization/components/ApiKeyRow.tsx","organization/components/RequestApiKeyModal.tsx","organization/components/ApiKeyList.tsx","app/components/NavMenu.tsx","app/components/MobileMenu.tsx","auth/wrappers/UserIsLoggedIn.ts","auth/wrappers/HasOrganizationSelected.ts","static/icons/login.svg","app/components/Navbar.tsx","static/images/main-logo.png","app/components/LoaderOverlay.tsx","organization/api/removeUser.ts","organization/sagas/removeUser.ts","organization/components/ConfirmRemoveUserModal.tsx","organization/components/UserList.tsx","credit/components/EmailFieldArray.tsx","organization/api/inviteUsers.ts","organization/sagas/inviteUsers.ts","organization/components/InviteUsersModal.tsx","organization/api/revokeInvitation.ts","organization/sagas/revokeInvitation.ts","organization/components/ConfirmRevokeInvitationModal.tsx","organization/components/InvitesList.tsx","organization/components/OrganizationPage.tsx","static/media/HSL_OpenMaaS-rajapinnan_tietosuojaseloste_20190730.pdf","static/media/HSL_OpenMaaS_API_privacy_statement_20190730.pdf","static/media/HSLOpenMaaSAuthorisation_EN.pdf","static/media/HSL_test_users_for_ Sandbox.pdf","static/media/Muistilista HSL OpenMaaS -rajapintasopimusta tekeville_14.1.2021.pdf","static/media/Checklist for New HSL OpenMaaS Users_14Jan2021.pdf","static/media/HSL_jatkuva_saasto_tilaus_14.1.2021.pdf","static/media/HSL_auto_renewing_subscriptions_14.1.2021.pdf","static/media/HSL_OpenMaaS_Change__cancellation_and_refund_terms_of_tickets_14.1.2021.pdf","static/media/HSL_OpenMaaS_Lippujen_muutos-_ja_peruutusehdot_14.1.2021.pdf","static/media/HSL_TARMO_2021.pdf","docs/constants.ts","organization/components/OrganizationSignupForm.tsx","organization/components/OrganizationSignup.tsx","auth/api/organizationSignup.ts","credit/api/createCreditAccount.ts","organization/components/Organizations.tsx","organization/api/fetchCreditAccounts.ts","organization/sagas/fetchCreditAccounts.ts","app/components/Table.tsx","organization/components/Filtering.tsx","organization/components/OrganizationsAdmin.tsx","organization/api/acceptInvite.ts","organization/sagas/acceptInvite.ts","organization/components/AcceptInvitePage.tsx","organization/routes.tsx","app/components/Footer.tsx","dashboard/components/Dashboard.tsx","dashboard/routes.tsx","user/selectors.ts","user/components/UserForm.tsx","user/api/fetchUser.ts","user/sagas/fetchUser.ts","user/components/UserPage.tsx","user/routes.tsx","docs/components/InfoPage.tsx","docs/components/WhatsNewPage.tsx","docs/components/ApiDoc.tsx","docs/routes.tsx","orders/selectors.ts","static/icons/caret.svg","orders/components/OrderRow.tsx","orders/api/fetchOrders.ts","orders/sagas/fetchOrders.ts","orders/api/fetchExcel.ts","orders/sagas/fetchExcel.ts","orders/components/DateRangePicker.tsx","app/components/Modal.tsx","orders/components/DatePickerModal.tsx","orders/components/OrdersPage.tsx","orders/routes.tsx","credit/selectors.ts","credit/api/updateCreditAccount.ts","credit/sagas/updateCreditAccount.ts","static/icons/redbell.svg","credit/components/CreditAlertForm.tsx","static/icons/send-money.svg","credit/components/IncrementCreditBox.tsx","credit/api/adminUpdateCreditAccount.ts","credit/api/updateOrganizationPayment.ts","credit/sagas/adminUpdateCreditAccount.ts","credit/sagas/updateReferenceCode.ts","forms/components/ToggleSwitch.tsx","credit/components/AdminCreditBox.tsx","util/rfCodeGenerator.ts","credit/api/fetchCreditAccount.ts","credit/sagas/fetchCreditAccount.ts","credit/components/IncrementsBox.tsx","credit/components/CreditSection.tsx","payment/components/PaymentInfoPage.tsx","payment/routes.tsx","app/components/NotFound.tsx","app/components/AccordionItem.tsx","lander/components/ContentBlock.tsx","static/images/hero.jpg","static/icons/pricing.svg","static/icons/mobile.svg","static/icons/tickets.svg","static/icons/laptop.svg","static/icons/twitter.svg","static/icons/faq.svg","lander/components/LanderPage.tsx","routes/index.tsx","root/components/Root.tsx","index.tsx"],"names":["selectLoggedIn","state","auth","loggedIn","selectUserId","userId","selectIsAdmin","isAdmin","userIsNotAuthenticated","connectedRouterRedirect","redirectPath","wrapperDisplayName","allowRedirectBack","authenticatedSelector","generateLoginUrl","customState","redirectUri","arguments","length","undefined","localStorage","getItem","randomBytes","toString","setItem","queryParams","stringify","response_type","scope","client_id","openIdConnectClientId","redirect_uri","authCallbackUrl","concat","openIdConnectUrl","REACT_APP_OPENID_CONNECT_URL","REACT_APP_API_BASE_URL","apiBaseUrl","REACT_APP_PAYMENT_PATH","paymentPath","REACT_APP_CREDIT_PATH","creditPath","REACT_APP_ORDERS_PATH","ordersPath","REACT_APP_AUTH_PATH","authPath","REACT_APP_OPENID_CONNECT_CLIENT_ID","REACT_APP_PUBLIC_URL","publicUrl","REACT_APP_ADMIN_MODE","adminMode","process","authBaseUrl","paymentBaseUrl","creditBaseUrl","signupUrl","async","authenticate","authCode","authorization_code","grant_type","data","axios","post","admin","withCredentials","getAuthStateFromStorage","setAuthStateToStorage","_ref","String","removeItem","logout","put","callApi","callLogout","err","setState","generateRequestId","Math","floor","random","requestKey","fn","_len","args","Array","_key","call","key","failureType","includes","type","payload","result","omitKey","e","response","status","error","path","reducer","select","updatedState","update","formName","mapStateToProps","customStateToProps","options","WrappedComponent","compose","connect","stateProps","fieldValues","get","form","submitErrors","getFormSubmitErrors","formStateToProps","Function","Object","assign","initialize","mergeProps","dispatchProps","ownProps","initWithValues","reduxForm","props","_jsx","initialState","transactions","orders","refundedOrders","totalSum","totalSumVat","totalAmount","displayNames","creditAccounts","organizations","apiKeys","cards","requests","asyncError","user","mainReducer","combineReducers","formReducer","action","omit","statusCode","message","statusText","sagaMiddleware","createSagaMiddleware","store","createStore","applyMiddleware","preventThrow","Promise","reject","runSaga","_len2","_key2","run","toPromise","callAuthenticate","AuthCallback","React","Component","constructor","componentDidMount","query","parse","this","location","search","code","history","replace","render","Loader","active","children","Auth","UserIsNotAuthenticated","Route","component","Redirect","to","confirmCard","extId","id","card","callConfirmCard","CardCallback","match","params","userIsAuthenticated","ConfirmCard","selectOrganization","selectActiveOrgId","selectOrganizations","values","selectCreditAccounts","selectApiKeys","organizationId","filter","InputField","input","placeholder","label","meta","disabled","_jsxs","Container","htmlFor","HslInput","touched","Message","warning","styled","div","_templateObject","_taggedTemplateLiteral","_templateObject2","textarea","emailFilter","minLength","min","value","minLength1","minLength2","minLength4","max","required","validateEmail","test","isFetching","requestsState","find","request","keys","selectApiErrorMessage","defaultClose","clearApiError","_ref2","global","onClose","TransitionablePortal","open","Grid","container","Column","mobile","tablet","computer","Header","Segment","HslButton","wide","inverse","half","color","HslButtonRed","HslButtonGrey","HslButtonBlueInverse","HslButtonBlue","HslButtonBase","Button","_templateObject3","_templateObject4","_templateObject5","SelectorWrapper","Success","Failure","FailureComponent","isValidElement","SuccessComponent","wrapperParams","connectedAuthWrapper","updateOrganization","orgId","body","organizationName","name","userIds","rest","trackRequest","updatedOrg","updatedBody","details","callUpdateOrganization","org","contractApiOptions","text","OrganizationDetails","Row","Field","TextareaField","ContractApis","Dropdown","multiple","selection","onChange","event","OrganizationForm","submitEdit","sandboxApiKey","users","pendingInvites","customerServiceEmail","csE","customerServicePhone","csP","reqBody","contractApis","SubmissionError","general","handleSubmit","invalid","submitting","submitFailed","submitSucceeded","onSubmit","validate","SubmitButtonRow","loading","Toast","asForm","fetchOrganizations","URL","normalizedResponse","reduce","aggregate","normalizedApiKeys","aggr","apiKeyObject","fetchOrganization","callFetchOrganization","requestApiKey","sandbox","apiKey","dataToPersist","callRequestApiKey","revokeApiKey","apiKeyId","callRevokeApiKey","ApiKeyRow","modalOpen","handleOpen","handleClose","handleRevoke","types","_Fragment","StyledRow","verticalAlign","textAlign","isRevoking","inline","size","RevokeLink","alt","src","CloseSvg","onClick","Modal","basic","ModalContainer","Content","ModalContent","Strong","ModalActions","selectApiKey","strong","Actions","img","_templateObject6","RequestApiKeyModal","newKeyLabel","newApiKey","handleRequest","clearTextApiKey","changeNewKeyLabel","target","sandboxString","primary","isRequesting","submitMsg","ApiKeyList","revoke","initState","requestSandbox","_this$props$apiKeys","style","centered","map","i","allowedProdApiKey","defaultProps","_organization$contrac","organization","NavMenu","NavMenuList","Child","index","NavMenuItem","ul","li","MobileMenu","menuOpen","menuHeight","List","UserIsLoggedIn","authState","loginUrl","getMenuHeight","scrollHeight","document","window","innerHeight","LoggedInAndOrganizationSelected","Element","HasOrganizationSelected","Navbar","toggleMenu","prevState","_logout","updateWindowDimensions","menuItems","NavLink","logInOrLogOut","LoginIcon","LoginSvg","href","HeaderWrap","stretched","LogoWrapper","Logo","HslH1Navbar","only","IconWrap","StyledIcon","header","Icon","_templateObject7","LoaderOverlay","Dimmer","inverted","removeUser","callRemoveUser","ConfirmRemoveUserModal","email","StyledForm","ContentContainer","ActionsContainer","UserList","userToRemove","setUserToRemove","unsetUserToRemove","UsersRow","UserRow","UserRowNameCol","UserRowEmailCol","ownId","TriggerLink","EmailFieldArray","fields","RecipientsHeader","push","field","EmailInputContainer","EmailInput","EmailInputSuffix","remove","inviteUsers","invitees","callInviteUser","forEach","invite","_organization$pending","InviteUsersModal","initializeAsEmpty","handleInvite","callInviteUsers","axiosError","FieldArray","initialValues","callRevokeInvitation","ConfirmRevokeInvitationModal","revokeEmailInvitation","revokeInvitation","getDisplayExpirationText","validTo","fromDate","Date","daysDiff","getTime","daysLeft","trunc","emailToUninvite","setEmailToUninvite","unsetEmailToUninvite","invites","InvitesTitleRow","InviteRow","InviteRowNameCol","OrganizationPage","enableReinitialize","GrayBlock","Invites","pricesUrl","CustomLabel","SignupForm","submit","columns","authorisationsUiIntsructionsEN","rel","portalPrivacyPolicyEN","portalPrivacyPolicyFI","className","useLabel","OrganizationSignup","termsAccepted","organizationSignup","alertThreshold","alertAddresses","createCreditAccount","OrganizationSignupForm","withRouter","Organizations","super","selectAsActive","searchSpace","keyword","resultOrganizations","regexp","RegExp","organizationEmail","organizationPhone","appName","keywordActive","stackable","TitleRow","width","OrganizationBox","reverse","CreateNewLink","fetchCreditAccount","allCredits","fetchCreditAccounts","callFetchCreditAccounts","tableData","sortColumn","sortDirection","searchKeyword","applyTransformers","newData","item","found","col","_item$col$accessor","accessor","sortOrganizationToTable","toLowerCase","sortBy","hslCustomerId","Number","referenceCode","sort","org1","org2","createdAt","_organization$created","createdBy","updatedAt","valueOf","_organization$updated","updatedBy","newState","column","Error","CustomTable","onRowClick","tableBodyProps","dispatch","useReducer","useEffect","handleRowClick","Table","sortable","celled","fixed","selectable","tableHeaderCellProps","HeaderCell","sorted","Body","d","TableRow","_ref3","Cell","Footer","colSpan","INCOMING_FILTERS","FILTERING_STATUS","PAYMENT_METHOD","PRODUCTION_ACCESS","useHistory","filters","filteringStatus","checked","selectedPaymentMethod","productionAccess","production","Filtering","Checkbox","Form","enabled","radio","selected","Main","main","useSelector","isLoading","formatDisplayAdminOrganizations","creditAccount","ca","displayOrganization","createdAtDisplay","format","locale","fi","updatedAtDisplay","getFilters","enabledParam","URLSearchParams","selectedPaymentMethodParam","productionAccessParam","filterOrganizations","filtered","toLocaleLowerCase","_organization$payment","_filters$selectedPaym","paymentMethod","_organization$product","console","log","acceptInvite","inviteToken","token","callAcceptInvite","AcceptInvitePage","inviteFailed","inviteSuccess","toastTTL","interval","setInterval","_error$response","errorMessage","componentWillUnmount","clearInterval","loaderMessage","loggingIn","acceptingInvite","FailedMessage","isLoggedIn","Orgs","OrganizationsAdmin","Org","CreateOrg","exact","FooterWrap","FooterBlock","footer","Dashboard","Dash","selectUser","fetchUser","callFetchUser","UserPage","preventDefault","uname","username","UserForm","User","InfoPage","ShowTestUsers","hasPermission","Item","InfoLinkA","testUsersEN","Helmet","content","ListContainerGrid","divided","relaxed","checklistFI","cancellingTermsFI","autoRenewingFI","tarmo","checklistEN","autoRenewingEN","cancellationAndRefundEN","ApiDocCell","InfoLink","download","Link","a","WhatsNewPage","changelogEntries","entry","ChangelogEntry","ChangelogDate","date","ChangelogTitle","title","ChangelogDescription","description","split","part","startsWith","endsWith","slice","p","h3","ApiDoc","apiDoc","RedocStandalone","specUrl","hideDownloadButton","ticketApiDoc","supersaverApiDoc","creditApiDoc","userApiDoc","selectOrderUnits","selectRefundedOrderUnits","selectOrderUnit","day","selectRefundedOrderUnit","selectTotalSum","selectTotalSumVat","selectTotalAmount","selectDisplayNames","_ref4","OrderRow","toggle","orderUnit","isRefund","amount","sumWithVat","sumVat","toFixed","vat","sum","ordered","tickets","TotalsRow","ColumnContent","Attributes","CaretIcon","CaretSvg","ByTicketTypeHeading","grey","ticketType","zones","customerTypeId","orderType","parseTicketTypeKey","displayName","ticketTypeAmount","ticketTypeVatPercent","ticketPriceWithVat","priceWithVat","ticketTypeTotalVat","priceWithoutVat","ByTicketTypeRow","ColumnContentOpen","ticketTypeKey","parseBooleans","fetchOrders","startDate","endDate","qs","reportFormat","callFetchOrders","fetchExcel","responseType","callFetchExcel","formatDate","fromOrTo","mutableDate","setHours","setMinutes","setSeconds","setMilliseconds","DateRangePicker","now","yesterday","setDate","getDate","from","initialFrom","initialTo","handleFromDayClick","handleToDayClick","applyRange","toISOString","resetRange","fromMonth","getFullYear","getMonth","toMonth","modifiers","disabledStyle","DateRangePickerWrapper","DatePickerWrapper","DatePickerHeader","DayPicker","numberOfMonths","month","selectedDays","disabledDays","after","onDayClick","before","ButtonsContainer","HslButtonCustom","fluid","onBackdropClick","onContainerClick","stopPropagation","trigger","Backdrop","DatePickerModal","triggerContent","OrdersPage","_this","twelveAM","fetchData","saga","addDefaultQParams","dateRange","formattedDateRange","getPrintableDates","includeYear","startDateOrTwelveAm","endDateOrNow","printableStartDate","printableEndDate","fetchAndSaveExcel","blob","newBlob","Blob","navigator","msSaveOrOpenBlob","objectURL","createObjectURL","link","createElement","click","setTimeout","revokeObjectURL","UNSAFE_componentWillReceiveProps","nextProps","orderUnits","refundedOrderUnits","ordersHeader","refundsHeader","BaseContainer","TotalsGrid","DatePickerColumn","ButtonColumn","isFetchingExcel","ReceiptInfo","Orders","selectCreditAccount","selectRecipients","updateCreditAccount","updatedFields","fieldsToUpdate","updatedAccount","callUpdateCreditAccount","staleAccount","credit","CreditAlertForm","onSubmitAlertAddresses","updateFields","onSubmitReportingAddress","reportEmail","addressMap","KpiContainer","KpiContentDivider","BellIcon","RedbellSvg","KpiContent","KpiThresholdValue","toLocaleString","address","KpiEditLink","AlertAddressesForm","AlertThresholdContainer","ThresholdInputField","step","EurSuffix","ReportEmailForm","_templateObject8","_templateObject9","span","_templateObject10","_templateObject11","_templateObject12","SendMoneySvg","adminUpdateCreditAccount","updateOrganizationPayment","allowNegativeCredit","Boolean","callUpdateOrganizationPayment","callAdminUpdateCreditAccount","revertedPaymentMethod","updateReferenceCode","newCode","change","ToggleSwitch","onLabel","offLabel","requiredIfNotAllowNegative","allValues","ButtonContainer","handleUpdateReferenceCode","customerId","generate","pretty","callFetchCreditAccount","IncrementsBox","teaserIncrements","increments","IncrementsContainer","IncrementRow","marginBottom","entryDate","parseISO","currency","ModalIncrementRow","AdminSection","GridColumn","AdminCreditBox","CreditSection","isFetchingData","CreditSumContainer","Intl","NumberFormat","timestamp","IncrementCreditBox","PaymentInfoPage","Payment","NotFound","AccordionItem","subtitle","Head","Caret","Subtitle","ContentBlock","icon","headingText","LanderPage","charSet","HeroContainer","HeroInfoContainer","HeroButtonContainer","HeroButtonAnchor","HeroButton","HeroImageContainer","HeroImage","visibility","HeroJpg","GreyBg","TextContainer","QuadrantContainer","PricingSvg","QuadrantTextUnorderedList","TicketsSvg","LaptopSvg","QuadrantText","MobileSvg","QuadrantTextOrderedList","TwitterSvg","ContractTextColumn","ContractTextContainer","FaqSvg","AccordionItemFirst","_templateObject13","_templateObject14","_templateObject15","ol","_templateObject16","_templateObject17","Lander","routes","paymentRoutes","authRoutes","ordersRoutes","organizationRoutes","cardRoutes","dashboardRoutes","userRoutes","docsRoutes","Switch","Root","Provider","Router","rootRoutes","defaults","headers","common","Accept","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.294ee5db.chunk.js","sourcesContent":["import { StoreState } from '../state/types';\n\nexport function selectLoggedIn(state: StoreState): boolean {\n return state.auth.loggedIn;\n}\n\nexport function selectUserId(state: StoreState): string | null {\n return state.auth.userId;\n}\n\nexport function selectIsAdmin(state: StoreState): boolean {\n return state.auth.isAdmin;\n}\n","import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect';\nimport { selectLoggedIn } from '../../auth/selectors';\nimport { StoreState } from '../../state/types';\n\nconst userIsNotAuthenticated = connectedRouterRedirect({\n redirectPath: '/organizations',\n wrapperDisplayName: 'UserIsNotAuthenticated',\n allowRedirectBack: false,\n authenticatedSelector: (state: StoreState) => !selectLoggedIn(state),\n});\n\nexport default userIsNotAuthenticated;\n","/* eslint-disable import/no-cycle */\nimport { stringify } from 'query-string';\nimport { randomBytes } from 'crypto';\nimport { openIdConnectClientId, openIdConnectUrl, authCallbackUrl } from './constants';\n\ntype Params = {\n customState?: string;\n redirectUri?: string;\n};\n\nexport default function generateLoginUrl({\n customState,\n redirectUri,\n}: Params = {}): string {\n let state = customState || localStorage.getItem('state');\n\n if (!state) {\n state = randomBytes(16).toString('hex');\n localStorage.setItem('state', state);\n }\n\n const queryParams = stringify({\n response_type: 'code',\n scope: 'openid',\n client_id: openIdConnectClientId,\n state,\n redirect_uri: redirectUri || authCallbackUrl,\n });\n return `${openIdConnectUrl}/openid/auth?${queryParams}`;\n}\n","/* eslint-disable import/no-cycle */\nimport generateLoginUrl from './generateLoginUrl';\n\nexport const {\n REACT_APP_OPENID_CONNECT_URL: openIdConnectUrl,\n REACT_APP_API_BASE_URL: apiBaseUrl,\n REACT_APP_PAYMENT_PATH: paymentPath,\n REACT_APP_CREDIT_PATH: creditPath,\n REACT_APP_ORDERS_PATH: ordersPath,\n REACT_APP_AUTH_PATH: authPath,\n REACT_APP_OPENID_CONNECT_CLIENT_ID: openIdConnectClientId,\n REACT_APP_PUBLIC_URL: publicUrl,\n REACT_APP_ADMIN_MODE: adminMode,\n} = process.env;\n\nexport const authBaseUrl = `${apiBaseUrl}/${authPath}`;\nexport const paymentBaseUrl = `${apiBaseUrl}/${paymentPath}`;\nexport const ordersBaseUrl = `${apiBaseUrl}/${ordersPath}`;\nexport const creditBaseUrl = `${apiBaseUrl}/${creditPath}`;\nexport const authCallbackUrl = `${publicUrl}/callback`;\nexport const signupUrl = `${generateLoginUrl()}&nur`;\n","import axios from 'axios';\nimport { stringify } from 'query-string';\nimport { authCallbackUrl, authBaseUrl, adminMode } from '../../util/constants';\n\nexport default async function authenticate(authCode: string, redirect_uri: string = authCallbackUrl): Promise {\n const queryParams = stringify({\n authorization_code: authCode,\n grant_type: 'authorization_code',\n redirect_uri,\n });\n const {\n data,\n } = await axios.post(`${authBaseUrl}/login?${queryParams}`, {\n admin: !!adminMode,\n }, {\n withCredentials: true,\n });\n return data.userId;\n}\n","import { AuthNamespaceState } from './types';\n\nexport const getAuthStateFromStorage = (): AuthNamespaceState => {\n const loggedIn = localStorage.getItem('loggedIn');\n const isAdmin = localStorage.getItem('isAdmin');\n const userId = localStorage.getItem('userId');\n\n return {\n loggedIn: loggedIn === 'true',\n isAdmin: isAdmin === 'true',\n userId: userId !== ''\n ? userId\n : null,\n };\n};\n\nexport const setAuthStateToStorage = ({ loggedIn, isAdmin, userId }: AuthNamespaceState) => {\n localStorage.setItem('loggedIn', String(loggedIn));\n localStorage.setItem('isAdmin', String(isAdmin));\n if (userId) {\n localStorage.setItem('userId', userId);\n } else {\n localStorage.removeItem('userId');\n }\n};\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default async function logout(): Promise {\n await axios.put(`${authBaseUrl}/logout`, undefined, {\n withCredentials: true,\n });\n}\n","/* eslint-disable import/no-cycle */\nimport { AuthNamespaceState } from '../types';\nimport { callApi, setState } from '../../util';\nimport { setAuthStateToStorage } from '../helpers';\nimport callLogout from '../api/logout';\n\nexport default function* logout(): Generator {\n try {\n yield callApi('logout', callLogout);\n } catch (err) { // catch here otherwise it gets stuck and not logged out if the request fails\n }\n\n localStorage.removeItem('activeOrganization');\n setAuthStateToStorage({\n loggedIn: false,\n isAdmin: false,\n userId: '',\n });\n yield setState('auth', (): AuthNamespaceState => ({\n loggedIn: false,\n isAdmin: false,\n userId: null,\n }));\n}\n","/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable import/no-cycle */\n/* eslint-disable func-names */\nimport {\n call,\n CallEffect,\n put,\n SagaReturnType,\n} from 'redux-saga/effects';\nimport logout from '../auth/sagas/logout';\n\nconst generateRequestId: () => number = () => Math.floor(Math.random() * 10000000 + 1);\n\n/**\n *\n * @param {*} requestKey A key to identify the request in Redux. Append '::SILENT' to leave no async errors in case of failure.\n * @param {*} fn\n * @param {...any} args\n */\nexport default function callApi any>(\n requestKey: string,\n fn: Fn,\n ...args: Parameters): CallEffect> {\n // @ts-ignore\n return call(function* () {\n const key = generateRequestId();\n // Action type to make the request fail silently, leaving no async errors in Redux.\n const failureType: string = requestKey.includes('::SILENT') ? 'REQUEST/FAILURE::SILENT' : 'REQUEST/FAILURE';\n\n try {\n yield put({\n type: 'REQUEST/START',\n payload: {\n requestKey,\n key,\n },\n });\n const result: Fn = yield call(fn, ...args);\n yield put({\n type: 'REQUEST/SUCCESS',\n payload: {\n omitKey: key,\n },\n });\n return result;\n } catch (e: any) {\n if (e.response && e.response.status === 401) {\n yield call(logout);\n }\n\n // console.dir(e);\n yield put({\n type: failureType,\n payload: {\n omitKey: key,\n error: e,\n },\n });\n throw e;\n }\n });\n}\n","/* eslint-disable func-names */\nimport { update } from 'lodash';\nimport { select, put, call } from 'redux-saga/effects';\nimport { StoreState } from '../state/types';\n\ntype SetStateType = (path: Array | string | number, reducer: (state: any) => any) => any;\n\nconst setState: SetStateType = (path, reducer) => {\n const effect = call(function* () {\n const state: StoreState = yield select();\n // Assign a new state object by spreading for immutability.\n const updatedState: StoreState = update({ ...state }, path, reducer);\n yield put({\n type: 'GENERIC/SET_STATE',\n payload: updatedState,\n });\n });\n return effect;\n};\n\nexport default setState;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { compose } from 'redux';\nimport { reduxForm, getFormSubmitErrors, initialize } from 'redux-form';\nimport { connect } from 'react-redux';\nimport get from 'lodash/get';\nimport { StoreState } from '../state/types';\n\ntype Props = {\n fieldValues: Record;\n submitErrors: Record;\n initWithValues: () => void;\n};\n\ntype Options = {\n mapStateToProps?: (state: StoreState) => {};\n [key: string]: unknown;\n}; // @todo this makes the form element re-render any time a value changes. let's see if we can avoid that\n\nexport default ((formName: string, {\n mapStateToProps: customStateToProps,\n ...options\n}: Options = {}) => (WrappedComponent: any) => {\n const ComposedComponent = (props: Props) => ;\n\n const formStateToProps = (state: StoreState) => {\n const fieldValues = get(state.form[formName], 'values') || {};\n return {\n fieldValues,\n submitErrors: getFormSubmitErrors(formName)(state),\n };\n };\n\n const mergeProps = (stateProps: { fieldValues: any; }, dispatchProps: { initialize: (arg0: string, arg1: any) => any; }, ownProps: any) => ({\n initWithValues: () => dispatchProps.initialize(formName, stateProps.fieldValues),\n ...stateProps,\n ...ownProps,\n });\n\n const finalStateToProps = (state: StoreState) => {\n let stateProps = formStateToProps(state);\n\n if (customStateToProps instanceof Function) {\n stateProps = Object.assign(stateProps, customStateToProps(state));\n }\n\n return stateProps;\n };\n\n return compose(connect(finalStateToProps, {\n initialize,\n }, mergeProps), reduxForm({\n form: formName,\n ...options,\n }))(ComposedComponent);\n});\n","import type { StoreState } from './types';\nimport { getAuthStateFromStorage } from '../auth/helpers';\n\nexport const initialState: StoreState = {\n transactions: {\n orders: {},\n refundedOrders: {},\n totalSum: 0,\n totalSumVat: 0,\n totalAmount: 0,\n displayNames: {},\n },\n auth: getAuthStateFromStorage(),\n creditAccounts: {},\n organizations: {},\n apiKeys: {},\n cards: {},\n requests: {},\n asyncError: {},\n form: {},\n user: {},\n};\n","import createSagaMiddleware from 'redux-saga';\nimport {\n combineReducers,\n applyMiddleware,\n createStore,\n // compose,\n} from 'redux';\nimport { reducer as formReducer } from 'redux-form';\nimport { asyncErrorReducer, requestReducer } from '../requests/reducers';\nimport { initialState } from './initialState';\nimport type { StoreState, Action } from './types';\n\n/**\n * Reducers\n *\n */\n\nconst mainReducer: (...args: Array) => any = combineReducers({\n transactions: (state = initialState.transactions) => state,\n auth: (state = initialState.auth) => state,\n organizations: (state = initialState.organizations) => state,\n creditAccounts: (state = initialState.creditAccounts) => state,\n apiKeys: (state = initialState.apiKeys) => state,\n cards: (state = initialState.cards) => state,\n form: formReducer,\n requests: requestReducer,\n asyncError: asyncErrorReducer,\n user: (state = initialState.user) => state,\n});\n\nconst rootReducer = (state: StoreState = initialState, action: Action) => {\n switch (action.type) {\n case 'GENERIC/SET_STATE':\n return action.payload;\n\n case 'LOGOUT':\n return initialState;\n\n default:\n return mainReducer(state, action);\n }\n};\n\n/**\n * Store\n *\n */\nexport const sagaMiddleware = createSagaMiddleware();\n// @ts-ignore\nexport const store = createStore(rootReducer, applyMiddleware(sagaMiddleware));\n","import omit from 'lodash/omit';\nimport { initialState } from '../state/initialState';\nimport type {\n RequestAction, ErrorRequestAction, RequestNameSpaceState, AsyncErrorState,\n} from './types';\n\nexport const requestReducer = (state: RequestNameSpaceState = initialState.requests, action: RequestAction) => {\n switch (action.type) {\n case 'REQUEST/FAILURE':\n case 'REQUEST/FAILURE::SILENT':\n case 'REQUEST/SUCCESS':\n return omit(state, action.payload.omitKey || []);\n\n case 'REQUEST/START':\n return {\n ...state,\n [action.payload.key]: {\n requestKey: action.payload.requestKey,\n },\n };\n\n default:\n return state;\n }\n};\nexport const asyncErrorReducer = (state: AsyncErrorState = initialState.asyncError, action: ErrorRequestAction) => {\n switch (action.type) {\n case 'REQUEST/FAILURE': {\n const { error } = action.payload;\n\n if (!error.response) {\n return {\n statusCode: 400,\n message: 'Network error',\n };\n }\n\n const {\n response,\n } = error;\n return {\n statusCode: response.status,\n message: response.data.message || response.statusText,\n };\n }\n case 'ERROR/CLEAR':\n return initialState.asyncError;\n\n default:\n return state;\n }\n};\n","import { call } from 'redux-saga/effects';\nimport { sagaMiddleware } from '../state';\n\nfunction* preventThrow(fn: (arg0: any, arg1?: any, arg2?: any) => any, ...args: Array) {\n try {\n // @ts-ignore\n return yield call(fn, ...args);\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\nexport default function runSaga(fn: (arg0: any, arg1?: any, arg2?: any) => any, ...args: Array): Promise {\n // @ts-ignore\n return sagaMiddleware.run(preventThrow, fn, ...args).toPromise();\n}\n","import callAuthenticate from '../api/authenticate';\nimport { AuthNamespaceState } from '../types';\nimport { callApi, setState } from '../../util';\nimport { setAuthStateToStorage } from '../helpers';\nimport { adminMode } from '../../util/constants';\n\nexport default function* authenticate(authCode: string, redirectUri?: string) {\n const userId: string = yield callApi('authenticate', callAuthenticate, authCode, redirectUri);\n setAuthStateToStorage({\n loggedIn: true,\n isAdmin: !!adminMode,\n userId,\n });\n yield setState('auth', (): AuthNamespaceState => ({\n loggedIn: true,\n isAdmin: !!adminMode,\n userId,\n }));\n}\n","import React from 'react';\nimport { parse } from 'query-string';\nimport { Loader } from 'semantic-ui-react';\nimport authenticate from '../sagas/authenticate';\nimport { runSaga } from '../../util';\n\nclass AuthCallback extends React.Component<{\n location: Location;\n history: History & {\n replace: (...args: Array) => any;\n };\n}, {}> {\n componentDidMount = async () => {\n const query: {\n code?: string;\n } = parse(this.props.location.search);\n\n try {\n if (query.code) {\n await runSaga(authenticate, query.code);\n }\n } finally {\n this.props.history.replace('/');\n }\n };\n\n render() {\n return Signing in...;\n }\n}\n\nexport default AuthCallback;\n","import { Route, Redirect } from 'react-router-dom';\nimport UserIsNotAuthenticated from '../routes/guards/UserIsNotAuthenticated';\nimport AuthCallback from './components/AuthCallback';\n\n// @ts-ignore\nconst Auth = UserIsNotAuthenticated(AuthCallback);\n\nexport default [\n ,\n } />,\n];\n","import axios from 'axios';\nimport { paymentBaseUrl } from '../../util/constants';\n\nexport default async function confirmCard(extId: string): Promise {\n const {\n data,\n } = await axios.post(`${paymentBaseUrl}/ConfirmStoreCard?extId=${extId}`);\n return data;\n}\n","import { callApi, setState } from '../../util';\nimport callConfirmCard from '../api/confirmCard';\nimport { Card, CardsNameSpaceState } from '../types';\n\nexport default function* confirmCard(id: string) {\n const card: Card = yield callApi(`card/confirm/${id}`, callConfirmCard, id);\n yield setState('cards', (cards: CardsNameSpaceState): CardsNameSpaceState => ({\n ...cards,\n [card.id]: card,\n }));\n}\n","import React from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { runSaga } from '../../util';\nimport confirmCard from '../sagas/confirmCard';\n\ntype Props = {\n match: {\n params: {\n id: string;\n }\n }\n};\n\nclass CardCallback extends React.Component {\n componentDidMount() {\n if (this.props.match.params.id) {\n runSaga(confirmCard, this.props.match.params.id);\n }\n this.props.history.replace('/organization');\n }\n\n render() {\n return null;\n }\n}\n\nexport default CardCallback;\n","import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect';\nimport { StoreState } from '../../state/types';\nimport { selectLoggedIn } from '../../auth/selectors';\n\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/',\n wrapperDisplayName: 'UserIsAuthenticated',\n allowRedirectBack: false,\n authenticatedSelector: (state: StoreState) => !!selectLoggedIn(state),\n});\n\nexport default userIsAuthenticated;\n","import { Route } from 'react-router-dom';\nimport CardCallback from './components/CardCallback';\nimport userIsAuthenticated from '../routes/guards/UserIsAuthenticated';\n\n// @ts-ignore\nconst ConfirmCard = userIsAuthenticated(CardCallback);\n\nexport default [];\n","import { filter } from 'lodash';\nimport { CreditAccount } from '../credit/types';\nimport { Selector } from '../state/types';\nimport type { Organization, ApiKey } from './types';\n\nexport const selectOrganization: Selector = (state, id) => {\n if (!id) return undefined;\n return state.organizations[id];\n};\n\nexport const selectSandboxApiKey: Selector = (state, id) => {\n const organization = selectOrganization(state, id) || {};\n // @ts-ignore\n return organization.sandboxApiKey && organization.sandboxApiKey.apiKey;\n};\n\nexport const selectActiveOrgId = (): string => localStorage.getItem('activeOrganization') || '';\n\n// @ts-ignore\nexport const selectOrganizations: Selector | []> = (state) => Object.values(state.organizations);\n\n// @ts-ignore\nexport const selectCreditAccounts: Selector | []> = (state) => Object.values(state.creditAccounts);\n\n// @ts-ignore\nexport const selectApiKeys: Selector | [], string | null | undefined> = (state, organizationId) => filter(state.apiKeys, {\n organizationId,\n});\n\nexport const selectApiKey: Selector = (state, id) => state.apiKeys[id];\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Message } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { Meta } from '../types';\n\ntype Props = {\n id: string;\n input: Record;\n type?: string;\n placeholder?: string;\n className?: StyleSheet;\n label?: string;\n meta?: Meta;\n disabled?: boolean;\n value?: string;\n};\n\nconst InputField = ({\n input,\n placeholder,\n type,\n id,\n label,\n meta,\n disabled,\n}: Props) => (\n \n {label && id && }\n\n \n\n {meta?.touched && ((meta.error && {meta.error}) || (meta.warning && {meta.warning}))}\n \n);\n\nexport default InputField;\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst HslInput = styled.input`\n border-radius: 4px !important;\n border: 1px solid #666;\n padding: 12px 0 18px 12px;\n display: block;\n margin: 1.4rem 0 !important;\n font-family: var(--font-header-book) !important;\n color: var(--hsl-input) !important;\n width: 100%;\n height: 50px;\n &:disabled {\n color: #666 !important;\n background-color: unset;\n }\n`;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Message } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { Meta } from '../types';\n\ntype Props = {\n id: string;\n input: Record;\n placeholder?: string;\n className?: StyleSheet;\n label?: string;\n meta?: Meta;\n disabled?: boolean;\n value?: string;\n};\n\nconst InputField = ({\n input,\n placeholder,\n id,\n label,\n meta,\n disabled,\n}: Props) => (\n \n {label && id && }\n\n \n\n {meta?.touched && ((meta.error && {meta.error}) || (meta.warning && {meta.warning}))}\n \n);\n\nexport default InputField;\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst HslInput = styled.textarea`\n border-radius: 4px !important;\n border: 1px solid #666;\n padding: 12px 0 18px 12px;\n display: block;\n margin: 1.4rem 0 !important;\n font-family: var(--font-header-book) !important;\n color: var(--hsl-input) !important;\n width: 100%;\n height: 200px;\n &:disabled {\n color: #666 !important;\n background-color: unset;\n }\n`;\n","const emailFilter = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$/i;\nexport const minLength = (min: number) => (value: string) => (value && value.length < min ? `Value must be at least ${min} characters.` : undefined);\nexport const maxLength = (max: number) => (value: string) => (value && value.length > max ? `Value cannot be more than ${max} characters.` : undefined);\n// @ts-ignore\nexport const shouldMatch = (twinFieldId: string, twinFieldLabel?: string) => (value?: string, allValues: Record) => {\n if (value !== allValues[twinFieldId]) {\n return `Should match ${twinFieldLabel || twinFieldId}.`;\n }\n return undefined;\n};\nexport const minLength1 = minLength(1);\nexport const minLength2 = minLength(2);\nexport const minLength4 = minLength(4);\nexport const maxLength15 = maxLength(15);\nexport const required = (value: string | number | boolean) => (value ? undefined : 'Required field');\nexport const validateEmail = (value: string) => (value && !emailFilter.test(value) ? 'Invalid email address' : undefined);\n","import find from 'lodash/find';\nimport type { StoreState } from '../state/types';\nimport type { RequestNameSpaceState } from './types';\n\nexport const isFetching = (state: StoreState, requestKey?: string): boolean => {\n const requestsState: RequestNameSpaceState = state.requests;\n return requestKey ? !!find(requestsState, (request) => requestKey === request?.requestKey) : !!Object.keys(requestsState).length;\n};\nexport const selectApiErrorMessage = (state: StoreState): void | string => {\n const { asyncError } = state;\n return asyncError.message;\n};\n","import { put } from 'redux-saga/effects';\n/**\n * TODO: Having this as a saga is a bit overkill...\n */\n\n// eslint-disable-next-line func-names\nexport default function* () {\n yield put({\n type: 'ERROR/CLEAR',\n });\n}\n","import {\n TransitionablePortal, Segment, Header, Grid,\n} from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport { selectApiErrorMessage } from '../../requests/selectors';\nimport { runSaga } from '../../util';\nimport clearApiError from '../../requests/sagas/clearApiError';\nimport type { StoreState } from '../../state/types';\n\nconst defaultClose = () => runSaga(clearApiError);\n\ntype Props = {\n message?: string | null;\n onClose?: (...args: Array) => any;\n error?: boolean;\n};\n\nconst Toast = ({\n message,\n error,\n onClose,\n}: Props) => (\n \n \n \n \n
{`${error ? 'Error: ' : ''}${message || ''}`}
\n
\n
\n
\n
\n);\n\nexport default connect((state: StoreState, {\n message,\n global,\n}: {\n message?: string | null | undefined;\n global?: true;\n}): any => ({\n message: global ? selectApiErrorMessage(state) : message,\n}))(Toast);\n\nconst Container = styled(Segment)`\n position: fixed !important;\n background-color: ${(props: Props) => (props.error ? '#ffe7d1 !important' : '#f1fbee !important')};\n z-index: 1000;\n left: 0;\n bottom: 0;\n width: 100vw;\n top: auto !important;\n padding: 2rem!important;\n`;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport styled from 'styled-components';\nimport { Button } from 'semantic-ui-react';\n\ntype Props = {\n wide?: boolean | string;\n half?: boolean | string;\n inverse?: boolean;\n};\n\nconst HslButton = ({\n wide = false,\n inverse = false,\n half = false,\n ...props\n}: Props & Record) => {\n if (props.color === 'red') {\n return ;\n }\n if (props.color === 'grey') {\n return ;\n }\n if (inverse) {\n return ;\n }\n return ;\n};\n\nexport default HslButton;\n\nconst HslButtonBase = styled(Button)`\n background: #007ac9 !important;\n color: var(--white) !important;\n font-family: var(--font-header) !important;\n border-radius: 25px !important;\n text-shadow: 0 0 2px #555 !important;\n border: 0 none !important;\n font-size: 18px !important;\n line-height: 46px !important;\n font-weight: 500;\n height: 50px !important;\n margin: 0 10px 10px 0 !important;\n padding: 0 25px !important;\n width: ${(props: Props) => (props.wide === 'true' ? '280.6px' : (props.half === 'true' ? '50%' : '179.5px'))};\n`;\n\nconst HslButtonBlue = styled(HslButtonBase)`\n background: #007ac9 !important;\n &:hover,\n &:focus {\n color: var(--white) !important;\n background: #0074bf !important;\n background: linear-gradient(to bottom, #0093f2, #0074bf), #0074bf !important;\n }\n`;\n\nconst HslButtonBlueInverse = styled(HslButtonBase)`\n background: white !important;\n border: 2px solid #007ac9 !important;\n text-shadow: none !important;\n color: #007ac9 !important;\n &:hover,\n &:focus {\n background: #eeeeee !important;\n background: linear-gradient(to bottom, #ffffff, #eeeeee), #eeeeee !important;\n }\n`;\n\nconst HslButtonRed = styled(HslButtonBase)`\n background: #db2827 !important;\n &:hover,\n &:focus {\n background: #db2827 !important;\n background: linear-gradient(to bottom, #f30928, #db2827), #db2827 !important;\n }\n`;\n\nconst HslButtonGrey = styled(HslButtonBase)`\n background: #babbbc !important;\n &:hover,\n &:focus {\n background: #babbbc !important;\n background: linear-gradient(to bottom, rgb(229, 230, 231), #babbbc), #babbbc !important;\n }\n`;\n","import React from 'react';\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper';\n\ntype ComponentOrElement = React.ReactNode;\n\nconst SelectorWrapper = (authenticatedSelector: (...args: Array) => any, Success: ComponentOrElement, Failure?: ComponentOrElement) => {\n const FailureComponent = React.isValidElement(Failure) ? () => Failure : Failure;\n const SuccessComponent = React.isValidElement(Success) ? () => Success : Success;\n\n if (Failure) {\n const wrapperParams = {\n authenticatedSelector,\n wrapperDisplayName: 'SelectorWrapper',\n FailureComponent,\n };\n\n // @ts-ignore\n return connectedAuthWrapper(wrapperParams)(SuccessComponent);\n }\n\n const wrapperParams = {\n authenticatedSelector,\n wrapperDisplayName: 'SelectorWrapper',\n };\n\n // @ts-ignore\n return connectedAuthWrapper(wrapperParams)(SuccessComponent);\n};\n\nexport default SelectorWrapper;\n","import axios from 'axios';\nimport type { UpdateOrganizationBody, RawOrganization, Organization } from '../types';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default async function updateOrganization(orgId: string, body: UpdateOrganizationBody): Promise> {\n const {\n data: {\n organizationId: id,\n organizationName: name,\n // @ts-ignore\n userIds,\n apiKeys,\n ...rest\n },\n }: {\n data: RawOrganization;\n } = await axios.put(`${authBaseUrl}/updateOrganization/?organizationId=${orgId}`, body, {\n withCredentials: true,\n });\n return {\n // @ts-ignore\n id,\n // @ts-ignore\n name,\n ...rest,\n };\n}\n","import { call } from 'redux-saga/effects';\nimport { callApi, setState } from '../../util';\nimport callUpdateOrganization from '../api/updateOrganization';\nimport { Organization, UpdateOrganizationBody } from '../types';\n/**\n *\n * @param {*} orgId\n * @param {*} body\n * @param {*} trackRequest Flag for explicitly tracking the request. Needed when not invoked via redux form's submit.\n */\n\nexport default function* updateOrganization(orgId: string, body: UpdateOrganizationBody, trackRequest?: boolean) {\n let updatedOrg: Record | {} = {};\n const updatedBody = {\n ...body,\n details: body.details === null ? '' : body.details,\n };\n\n if (!trackRequest) {\n updatedOrg = yield call(callUpdateOrganization, orgId, updatedBody);\n } else {\n updatedOrg = yield callApi('organization/update', callUpdateOrganization, orgId, updatedBody);\n }\n\n yield setState(['organizations', orgId], (org) => ({\n ...org,\n ...updatedOrg,\n }));\n}\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React, { Component, SyntheticEvent } from 'react';\nimport type { InjectedFormProps, WrappedFieldProps } from 'redux-form';\nimport { Field, SubmissionError } from 'redux-form';\nimport { Grid, Dropdown, DropdownProps } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport InputField from '../../forms/components/InputField';\nimport TextareaField from '../../forms/components/TextareaField';\nimport {\n required, minLength1, minLength4, minLength2, validateEmail,\n} from '../../forms/helpers';\nimport Toast from '../../app/components/Toast';\nimport { asForm, runSaga } from '../../util';\nimport HslButton from '../../forms/components/HslButton';\nimport { selectIsAdmin } from '../../auth/selectors';\nimport SelectorWrapper from '../../auth/wrappers/SelectorWrapper';\nimport updateOrganization from '../sagas/updateOrganization';\nimport { selectActiveOrgId } from '../selectors';\nimport type { Organization } from '../types';\n\nconst contractApiOptions = [{\n key: 'public',\n text: 'Public OpenMaaS API',\n value: 'public',\n}, {\n key: 'partner',\n text: 'Partner API',\n value: 'partner',\n}];\n\nconst renderMultiSelectDropdown = (props: WrappedFieldProps) => {\n const onChange = (event: SyntheticEvent, data: DropdownProps) => props.input.onChange(data.value);\n\n // @ts-ignore\n return ;\n};\n\nconst OrganizationDetails = SelectorWrapper(selectIsAdmin, (\n \n \n \n \n \n));\n\nconst ContractApis = SelectorWrapper(selectIsAdmin, (\n \n \n

Contract APIs

\n \n
\n
\n));\n\ntype Props = {\n submitErrors: any;\n initWithValues: () => any;\n fieldValues: any;\n};\n\nclass OrganizationForm extends Component {\n submitEdit = async ({\n id,\n name,\n sandboxApiKey,\n users,\n pendingInvites,\n customerServiceEmail: csE,\n customerServicePhone: csP,\n ...body\n }: Organization) => {\n const reqBody = {\n ...body,\n customerServiceEmail: csE || '',\n customerServicePhone: csP || '',\n contractApis: this.props.fieldValues.contractApis,\n };\n // console.log(reqBody.contractApis);\n\n // delete reqBody.contractApis\n try {\n await runSaga(updateOrganization, selectActiveOrgId(), reqBody);\n } catch (e) {\n throw new SubmissionError({\n general: 'Submission failed!',\n });\n }\n };\n\n render() {\n const {\n handleSubmit,\n invalid,\n submitting,\n submitErrors,\n initWithValues,\n submitFailed,\n submitSucceeded,\n } = this.props;\n return /* @ts-ignore */(\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Submit\n \n \n \n \n \n \n );\n }\n}\n\nexport default asForm('organizationForm')(OrganizationForm);\n\nconst SubmitButtonRow = styled(Grid.Row)`\n margin-bottom: 20px;\n`;\n","import axios from 'axios';\nimport type { ApiKeysNameSpaceState, OrganizationsNameSpaceState, OrganizationsResponse } from '../types';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default async function fetchOrganizations(id?: string): Promise {\n const URL = id ? `${authBaseUrl}/organizations?organizationId=${id}` : `${authBaseUrl}/organizations`;\n const {\n data,\n }: {\n data: {\n organizations: OrganizationsResponse;\n };\n } = await axios.get(URL, {\n withCredentials: true,\n });\n // API keys and organizations will probably come from separate endpoints in the future\n const normalizedResponse: {\n organizations: OrganizationsNameSpaceState;\n apiKeys: ApiKeysNameSpaceState;\n } = data.organizations.reduce((aggregate, {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n organizationId: id,\n organizationName: name,\n apiKeys,\n ...rest\n }) => {\n const normalizedApiKeys: ApiKeysNameSpaceState = apiKeys.reduce((aggr, apiKeyObject) => {\n if (apiKeyObject.status === 'revoked') {\n return aggr;\n }\n\n return {\n ...aggr,\n [apiKeyObject.id]: {\n // @ts-ignore\n organizationId: id,\n ...apiKeyObject,\n },\n };\n }, {});\n return {\n organizations: {\n ...aggregate.organizations,\n [id]: {\n id,\n name,\n ...rest,\n },\n },\n apiKeys: {\n ...aggregate.apiKeys,\n ...normalizedApiKeys,\n },\n };\n }, {\n organizations: {},\n apiKeys: {},\n });\n return normalizedResponse;\n}\n","import callFetchOrganization from '../api/fetchOrganization';\nimport { setState, callApi } from '../../util';\n\nexport default function* fetchOrganization(id?: string) {\n const {\n organizations,\n apiKeys,\n } = yield callApi('organization/get', callFetchOrganization, id);\n yield setState('organizations', (state) => ({\n ...state,\n ...organizations,\n }));\n yield setState('apiKeys', (state) => ({\n ...state,\n ...apiKeys,\n }));\n}\n","import axios from 'axios';\nimport type { ApiKey } from '../types';\nimport { authBaseUrl } from '../../util/constants';\n\ntype R = {\n data: ApiKey;\n};\n\nexport default async function requestApiKey(organizationId: string, label: string, sandbox: boolean): Promise> {\n const {\n data,\n }: R = await axios.post(`${authBaseUrl}/requestApiKey`, {\n organizationId,\n label,\n sandbox,\n }, {\n withCredentials: true,\n });\n return {\n ...data,\n // @ts-ignore\n organizationId,\n };\n}\n","import { callApi, setState } from '../../util';\nimport callRequestApiKey from '../api/requestApiKey';\nimport { ApiKeysNameSpaceState, ApiKey } from '../types';\n\nexport default function* requestApiKey(orgId: string, label: string, sandbox: boolean) {\n // Don't persist the cleartext API key value\n const {\n apiKey,\n ...dataToPersist\n }: ApiKey = yield callApi('apiKey/request', callRequestApiKey, orgId, label, sandbox);\n yield setState('apiKeys', (state: ApiKeysNameSpaceState) => ({\n ...state,\n [dataToPersist.id]: dataToPersist,\n }));\n return apiKey;\n}\n","import axios from 'axios';\nimport { adminMode, authBaseUrl } from '../../util/constants';\n\nexport default async function revokeApiKey(apiKeyId: string, orgId: string): Promise {\n await axios.put(`${authBaseUrl}/revokeApiKey?organizationId=${orgId}&apiKey=${apiKeyId}`, {\n admin: !!adminMode,\n }, {\n withCredentials: true,\n });\n}\n","import { omit } from 'lodash';\nimport callRevokeApiKey from '../api/revokeApiKey';\nimport { callApi, setState } from '../../util';\nimport { ApiKeysNameSpaceState } from '../types';\n\nexport default function* revokeApiKey(apiKeyId: string, orgId: string) {\n yield callApi(`apiKey/revoke/${apiKeyId}`, callRevokeApiKey, apiKeyId, orgId);\n yield setState('apiKeys', (state: ApiKeysNameSpaceState) => omit(state, apiKeyId));\n}\n","export default __webpack_public_path__ + \"static/media/close.8e67f931.svg\";","import React, { Component } from 'react';\nimport { Modal, Grid, Loader } from 'semantic-ui-react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport type { StoreState } from '../../state/types';\nimport HslButton from '../../forms/components/HslButton';\nimport type { ApiKey } from '../types';\nimport { selectApiKey } from '../selectors';\nimport { isFetching } from '../../requests/selectors';\nimport CloseSvg from '../../static/icons/close.svg';\n\ntype Props = {\n apiKeyId: string;\n apiKey?: ApiKey | null;\n handleRevoke: (...args: Array) => any;\n isRevoking?: boolean;\n};\n\nclass ApiKeyRow extends Component {\n state = {\n modalOpen: false,\n };\n\n handleOpen = () => this.setState({\n modalOpen: true,\n });\n\n handleClose = () => this.setState({\n modalOpen: false,\n });\n\n handleRevoke = async () => {\n this.handleClose();\n await this.props.handleRevoke();\n };\n\n render() {\n if (!this.props.apiKey) return null;\n const {\n id,\n types,\n label,\n } = this.props.apiKey;\n return (\n <>\n \n\n \n {id}\n \n\n \n {label}\n \n\n \n {types ? types.includes('sandbox') ? 'Sandbox' : 'Production' : ''}\n \n\n \n {this.props.isRevoking ? : }\n\n \n\n \n\n \n\n \n \n

You are about to revoke an API key.

\n \n Revoking an API Key is final. Once revoked, it cannot be restored.\n
\n
\n You are about to revoke the following API Key:\n
\n
\n ID:\n {' '}\n {this.props.apiKeyId}\n
\n Label:\n {' '}\n {this.props.apiKey.label}\n\n
\n\n
\n
\n\n \n\n \n Cancel\n \n\n \n Revoke\n \n\n \n
\n
\n \n );\n }\n}\n\nexport default connect((state: StoreState, {\n apiKeyId,\n}: {\n apiKeyId: string;\n}) => {\n const apiKey = selectApiKey(state, apiKeyId) || null;\n return {\n apiKey,\n isRevoking: isFetching(state, `apiKey/revoke/${apiKeyId}`),\n };\n})(ApiKeyRow);\n\nconst StyledRow = styled(Grid.Row)`\n border-top: 1px solid #dadada;\n min-height: 55px;\n`;\n\nconst Strong = styled.strong`\n font-family: Lato, sans-serif;\n`;\n\nconst ModalContainer = styled.div`\n margin: auto;\n background: white;\n border-radius: 12px !important;\n color: black;\n padding: 50px;\n max-width: 550px;\n font-size: 13pt;\n\n & p {\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ModalContent = styled.div`\n padding: 30px 0 20px;\n`;\n\nconst ModalActions = styled(Modal.Actions)`\n display: flex;\n padding-top: 30px;\n text-align: center;\n`;\n\nconst RevokeLink = styled.img`\n cursor: pointer;\n`;\n","import React, { Component } from 'react';\nimport { Modal } from 'semantic-ui-react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport type { StoreState } from '../../state/types';\nimport HslButton from '../../forms/components/HslButton';\nimport InputField from '../../forms/components/InputField';\nimport { selectActiveOrgId } from '../selectors';\nimport requestApiKey from '../sagas/requestApiKey';\nimport { runSaga } from '../../util';\nimport { isFetching } from '../../requests/selectors';\n\ntype Props = {\n sandbox?: boolean;\n organizationId?: string | null;\n isRequesting?: boolean;\n};\n\nclass RequestApiKeyModal extends Component {\n state = {\n modalOpen: false,\n newKeyLabel: '',\n newApiKey: undefined,\n };\n\n handleOpen = () => this.setState({\n modalOpen: true,\n });\n\n handleClose = () => this.setState({\n modalOpen: false,\n newApiKey: undefined,\n newKeyLabel: '',\n });\n\n handleRequest = async () => {\n // eslint-disable-next-line react/no-access-state-in-setstate\n const clearTextApiKey = await runSaga(requestApiKey, this.props.organizationId, this.state.newKeyLabel, this.props.sandbox);\n this.setState({\n newApiKey: clearTextApiKey,\n newKeyLabel: '',\n });\n };\n\n changeNewKeyLabel = (e: Record) => {\n this.setState({\n newKeyLabel: e.target.value || '',\n });\n };\n\n render() {\n const {\n newApiKey,\n newKeyLabel,\n } = this.state;\n const sandboxString = this.props.sandbox ? 'Sandbox ' : '';\n return (\n <>\n\n \n {this.props.sandbox ? 'Request Sandbox API Key' : 'Request API Key'}\n \n\n \n\n \n \n

\n {newApiKey ? `Your new ${sandboxString}API Key` : `Request a new ${sandboxString}API Key`}\n

\n \n {newApiKey ? 'Here\\'s your new API Key. Keep it secret. Keep it safe. After closing this dialog, nobody will be able to retrieve it.' : 'An API Key works like a password and grants your organisation access to the HSL Sales API.'}\n
\n
\n \n {newApiKey ? newKeyLabel : 'Define a human readable label for your API key.'}\n \n\n {newApiKey ? {newApiKey} : (\n \n )}\n\n
\n\n
\n
\n\n \n\n \n {newApiKey ? 'Close' : 'Cancel'}\n \n\n \n {this.props.sandbox ? 'Generate Sandbox API Key' : 'Generate API Key'}\n \n\n \n
\n
\n \n );\n }\n}\n\nexport default connect((state: StoreState) => {\n const organizationId = selectActiveOrgId();\n return {\n organizationId,\n isRequesting: isFetching(state, 'apiKey/request'),\n };\n})(RequestApiKeyModal);\n\nconst Strong = styled.strong`\n font-family: Lato, sans-serif;\n`;\n\nconst ModalContainer = styled.div`\n margin: auto;\n background: white;\n border-radius: 12px !important;\n color: black;\n padding: 50px;\n max-width: 550px;\n font-size: 13pt;\n\n & p {\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ModalContent = styled.div`\n padding: 30px 0 20px;\n`;\n\nconst ModalActions = styled(Modal.Actions)`\n display: flex;\n padding-top: 30px;\n text-align: center;\n`;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid, Segment } from 'semantic-ui-react';\nimport { selectApiKeys, selectActiveOrgId, selectOrganization } from '../selectors';\nimport { isFetching } from '../../requests/selectors';\nimport type { ApiKey } from '../types';\nimport { runSaga } from '../../util';\nimport requestApiKey from '../sagas/requestApiKey';\nimport revokeApiKey from '../sagas/revokeApiKey';\nimport Toast from '../../app/components/Toast';\nimport ApiKeyRow from './ApiKeyRow';\nimport RequestApiKeyModal from './RequestApiKeyModal';\nimport type { StoreState } from '../../state/types';\n\ntype Props = {\n allowedProdApiKey?: boolean | null;\n organizationId?: string | null;\n isRequesting?: boolean;\n isRevoking?: (apiKey: string) => boolean;\n apiKeys?: ApiKey[];\n contractApis?: string[] | null;\n isFetching?: boolean;\n};\nconst initialState = {\n newKeyLabel: '',\n submitMsg: undefined,\n submitFailed: false,\n};\n\nclass ApiKeyList extends Component {\n static defaultProps = {\n apiKeys: [],\n };\n\n state = initialState;\n\n revoke = (apiKey: ApiKey) => async () => {\n try {\n await runSaga(revokeApiKey, apiKey.id, this.props.organizationId);\n this.setState({\n submitMsg: `API Key: ${apiKey.label} revoked`,\n });\n } catch (e) {\n this.setState({\n submitFailed: true,\n submitMsg: `Revoking API Key: ${apiKey.label} failed`,\n });\n }\n };\n\n initState = () => this.setState(initialState);\n\n requestSandbox = () => {\n runSaga(requestApiKey, this.props.organizationId, true);\n };\n\n render() {\n if (this.props.isFetching) {\n return (\n \n

\n Loading...\n

\n
\n );\n }\n\n return (\n \n \n \n

API Keys

\n
\n
\n \n\n \n

ID

\n
\n\n \n

Label

\n
\n\n \n

Environment

\n
\n\n \n\n
\n\n {this.props.apiKeys?.map((apiKey, i) => )}\n\n \n {this.props.allowedProdApiKey && }\n \n\n \n \n \n\n \n
\n );\n }\n}\n\nexport default compose(connect((state: StoreState): Props => {\n const organizationId = selectActiveOrgId();\n const organization = selectOrganization(state, organizationId);\n const allowedProdApiKey: boolean | null | undefined = organization?.contractApis?.includes('public');\n return {\n allowedProdApiKey,\n organizationId,\n isRequesting: isFetching(state, 'apiKey/request'),\n apiKeys: selectApiKeys(state, selectActiveOrgId()),\n isRevoking: (id) => isFetching(state, `apiKey/revoke/${id}`),\n };\n}))(ApiKeyList);\n","import React from 'react';\nimport styled from 'styled-components';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst NavMenu = ({\n children,\n}: Props) => (\n \n { /* @ts-ignore */ }\n {children.map((Child, index) => )}\n \n);\n\nexport default NavMenu;\n\nconst NavMenuList = styled.ul`\n display: none;\n align-items: center;\n justify-content: flex-end;\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0;\n @media (min-width: 992px) {\n display: flex;\n }\n`;\n\nconst NavMenuItem = styled.li`\n display: flex;\n align-items: center;\n margin: 15px 22px;\n padding: 0;\n\n & > div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n & a {\n cursor: pointer;\n font-family: GothamRounded-Medium;\n margin: 0;\n padding: 0 0 2px;\n color: var(--white);\n font-size: 18px;\n\n &:hover,\n &:focus,\n &:active {\n color: var(--white);\n }\n }\n\n & > a {\n border-bottom: 2px solid var(--hsl-blue);\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n border-bottom: 2px solid var(--white);\n }\n }\n\n @media (max-width: 991px) {\n & > a {\n &.active {\n background-color: var(--hsl-darkblue);\n }\n }\n }\n\n @media (min-width: 992px) {\n margin: 15px;\n\n & a {\n font-size: 16px;\n }\n\n & img {\n width: 18px;\n }\n }\n\n @media (min-width: 1200px) {\n margin: 15px;\n\n & a {\n font-size: 16px;\n }\n\n & img {\n height: 32px;\n width: 28px;\n }\n }\n\n @media (min-width: 1700px) {\n margin: 15px 22px;\n\n & a {\n font-size: 18px;\n }\n\n & img {\n height: 32px;\n width: 28px;\n }\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\ntype Props = {\n menuOpen: boolean;\n menuHeight: number;\n children: React.ReactNode;\n};\n\nconst MobileMenu = ({\n menuOpen,\n menuHeight,\n children,\n}: Props) => (\n \n { /* @ts-ignore */ }\n {children.map((Child, index) =>
  • )}\n
    \n);\n\nexport default MobileMenu;\n\nconst List = styled.ul`\n visibility: ${(props: Props) => (props.menuOpen ? 'visible' : 'hidden')};\n height: ${(props: Props) => (props.menuOpen ? props.menuHeight : 0)},\n transition: 'all .15s ease-in-out'\n position: absolute;\n z-index: 9 !important;\n top: 0;\n left: 0;\n width: 100vw;\n background-color: var(--hsl-blue);\n margin: 0;\n padding: 140px 30px 0;\n\n & > li {\n opacity: ${(props: Props) => (props.menuOpen ? 1 : 0)};\n display: flex;\n align-items: center;\n list-style: none;\n border-bottom: 2px solid rgba(0, 98, 161, 1);\n transition: all 0.15s ease-in-out;\n\n & a {\n cursor: pointer;\n font-family: var(--font-header-book) !important;\n font-size: 16px !important;\n line-height: 18px !important;\n color: var(--white);\n display: block;\n width: 100%;\n margin: 0;\n padding: 30px;\n }\n\n & img {\n display: none;\n }\n }\n\n & > li:first-of-type {\n border-top: 2px solid rgba(0, 98, 161, 1);\n }\n\n @media (min-width: 992px) {\n display: none !important;\n }\n`;\n","import React from 'react';\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper';\nimport { selectLoggedIn } from '../selectors';\nimport { StoreState } from '../../state/types';\n\ntype ComponentOrElement = React.Component | React.ReactElement, any>;\n\nconst UserIsLoggedIn = (Success: ComponentOrElement, Failure?: ComponentOrElement) => {\n const FailureComponent = React.isValidElement(Failure) ? () => Failure : Failure;\n const SuccessComponent = React.isValidElement(Success) ? () => Success : Success;\n\n if (Failure) {\n const wrapperParams = {\n authenticatedSelector: (state: StoreState) => !!selectLoggedIn(state),\n wrapperDisplayName: 'UserIsLoggedIn',\n FailureComponent,\n };\n // @ts-ignore\n return connectedAuthWrapper(wrapperParams)(SuccessComponent);\n }\n\n const wrapperParams = {\n authenticatedSelector: (state: StoreState) => !!selectLoggedIn(state),\n wrapperDisplayName: 'UserIsLoggedIn',\n };\n // @ts-ignore\n return connectedAuthWrapper(wrapperParams)(SuccessComponent);\n};\n\nexport default UserIsLoggedIn;\n","import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper';\nimport { selectActiveOrgId } from '../../organization/selectors';\n\nexport default connectedAuthWrapper({\n authenticatedSelector: () => {\n const orgId = selectActiveOrgId();\n return !!orgId && orgId !== '';\n },\n wrapperDisplayName: 'HasOrganizationSelected',\n});\n","export default __webpack_public_path__ + \"static/media/login.5c295d0f.svg\";","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Icon, Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport NavMenu from './NavMenu';\nimport MobileMenu from './MobileMenu';\nimport { generateLoginUrl, runSaga } from '../../util';\nimport UserIsLoggedIn from '../../auth/wrappers/UserIsLoggedIn';\nimport HasOrganizationSelected from '../../auth/wrappers/HasOrganizationSelected';\nimport logout from '../../auth/sagas/logout';\nimport MainLogoPng from '../../static/images/main-logo.png';\nimport LoginSvg from '../../static/icons/login.svg';\nimport { getAuthStateFromStorage } from '../../auth/helpers';\n\n// TODO: This is a temporary solution to get the isAdmin flag\nfunction isAdmin() {\n const authState = getAuthStateFromStorage();\n if (authState) {\n return authState.isAdmin;\n }\n return false;\n}\n\n/* type Props = {\n logout: (...args: Array) => any;\n}; */\n\ntype State = {\n menuOpen: boolean;\n menuHeight: number;\n};\n\nconst loginUrl: string = generateLoginUrl();\n\nconst getMenuHeight = () => {\n const scrollHeight = document.body ? document.body.scrollHeight : 0;\n return Math.max(scrollHeight, window.innerHeight);\n};\n\nconst LoggedInAndOrganizationSelected = (Element: React.ReactElement, any>) => HasOrganizationSelected(UserIsLoggedIn(Element));\n\nclass Navbar extends React.Component<{}, State> {\n state = {\n menuOpen: false,\n menuHeight: getMenuHeight(),\n };\n\n toggleMenu = () => {\n this.setState((prevState) => ({\n menuOpen: !prevState.menuOpen,\n menuHeight: getMenuHeight(),\n }));\n };\n\n _logout = () => runSaga(logout);\n\n updateWindowDimensions() {\n this.setState({\n menuHeight: getMenuHeight(),\n });\n }\n\n render() {\n const {\n menuOpen,\n menuHeight,\n } = this.state;\n const menuItems = [\n LoggedInAndOrganizationSelected(Organizations),\n LoggedInAndOrganizationSelected(Organization Profile),\n LoggedInAndOrganizationSelected(Payment),\n LoggedInAndOrganizationSelected(Orders),\n LoggedInAndOrganizationSelected(User Profile),\n LoggedInAndOrganizationSelected(Information),\n ];\n const logInOrLogOut = UserIsLoggedIn(\n <>\n \n Log out\n ,\n <>\n \n Login\n ,\n );\n\n return (\n
    \n \n {[...menuItems, logInOrLogOut]}\n \n \n \n \n \n \n \n \n \n \n HSL OpenMaaS\n
    \n Developer Portal\n
    \n
    \n
    \n \n \n {menuItems}\n \n \n \n \n {[logInOrLogOut]}\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Navbar;\n\ninterface HeaderWrapProps {\n isAdmin?: boolean;\n}\n\nconst HeaderWrap = styled.header`\n display: flex;\n align-items: stretch;\n flex-direction: column;\n justify-content: center;\n height: 140px;\n position: relative;\n overflow: hidden;\n z-index: 10 !important;\n background-color: ${(props) => {\n const bgColor = props.isAdmin ? 'var(--black)' : 'var(--hsl-blue)';\n return bgColor;\n }};\n margin-bottom: 50px;\n padding: 0 10px;\n @media (min-width: 768px) {\n padding: 0 20px;\n }\n`;\n\nconst IconWrap = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n`;\n\nconst StyledIcon = styled(Icon)`\n cursor: pointer;\n color: var(--white);\n @media (min-width: 992px) {\n display: none !important;\n }\n`;\n\nconst HslH1Navbar = styled.div`\n margin: 2px 0 0 15px !important;\n display: inline-block !important;\n color: var(--white) !important;\n font-family: var(--font-header-light) !important;\n font-size: 14px !important;\n line-height: 16px !important;\n font-weight: normal !important;\n font-style: normal !important;\n font-stretch: normal !important;\n @media (min-width: 768px) {\n font-size: 18px !important;\n line-height: 20px !important;\n }\n @media (min-width: 992px) {\n font-size: 18px !important;\n line-height: 20px !important;\n }\n @media (min-width: 1200px) {\n margin: 3px 0 0 30px !important;\n }\n @media (min-width: 1500px) {\n font-size: 28px !important;\n line-height: 30px !important;\n }\n`;\n\nconst LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst Logo = styled.img`\n max-width: 90px !important;\n flex-grow: unset !important;\n @media (min-width: 768px) {\n max-width: 110px !important;\n }\n @media (min-width: 992px) {\n max-width: 110px !important;\n }\n @media (min-width: 1200px) {\n max-width: 160px !important;\n }\n`;\n\nconst LoginIcon = styled.img`\n margin-right: 10px;\n`;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARcAAABsCAYAAABAQfZiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFNTkyQTRBRjY3MjI2ODExOEE2REEyQTYxQTA3QzE1RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRDQ2REFCNzlERDAxMUUyQUVDMUNERUM4QkRGQTc3MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRDQ2REFCNjlERDAxMUUyQUVDMUNERUM4QkRGQTc3MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RDJBNUNFOEQ5NjIwNjgxMTgwODNCRTZGMzEyM0I3QTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTU5MkE0QUY2NzIyNjgxMThBNkRBMkE2MUEwN0MxNUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4V+LV/AAAXZUlEQVR42uxdAWgWV7Y+NRII5BEQAimWFB9ZsqT4yMOS4mJRLBEXS8QloliUiJISUZRXFJeKRam0KJWK0mBQDBWlolQaDJWVykqXyoaGSmWlslJpaHjyAmHlyZMXXsibb/8zON7/zMydf2Z+5585Hxw0888//8yde797zrnnnvPS3NwcKRQKRdKYp02gUCjSwPwcPctyR3ocaeW/JxwZceSWvuZAbHKk15G7jhxz5InxeZ0jux1Z5shfHDnhyKw2myIML+XALFrkyDkmFwkgl62OPNTXXQYQxreevwcd2WGc0+/Iac/f7zlyXJtOkXezqN2R7wKIxdVocE6bvu4yrA75Wzq2UptNkXdyqXfkmiMtFue28Ln1+srLTJ6gv0nbTFFEcnnfRxuZYJG0nN36yhUKJZcwraXfODbjyNuOvMqylo958R8+s7NCoVBy+Se6BXMIKx2jnr9H+JhpHnXra1colFz8sMz4G0ujQ8J50rGl+toVCiUXP7Qbf98j2c+CYw+MY4v0tSsyiE5HljjSrOTyYmG+gMmAcydDvquoXTQ58okj3zvyd0cuO7I44d/AUvw1vj5CGvZT/BU0LOd/6sgPjsyx/MDP8V/89//x34gxQqDjghi/V8/3jfv/mZ9nddovp1YjdM0I0SAnbV2EcxW1gxYefAs9x7B6iChtBE1eTOA3Djly0Lg+zOoNjqxw5HHE62ERAiuWHRbn1rEms4S/h8UJ+BSHqeRPjELA3/B1vNr7Gir5JPep5vI8TFNniQ9p1AkzmUbq5gMnDWLxztKnY870rplyMOCzQxGuhcH8Z76vjgrvB8+1zpGvHPmRSdQG+w1i8WIvpeiDrFVyuWP8jY60zEf9bDKO3dVxWfNo4IHmh8YIg88PvSGfb7C8zmI2eZYn+PyLmWS+ofAg0t6Yn2fCLAIjb+YBXecZyFcduU7lMSdxMMI2a52hwq4wzjvo892ksZBt2MXc8R85cpN002RaaLYwb1ti/kZrAtdvYwJoSqkdVjLJ/I78N5M2p9xOqZILXvJRKgWokWCu9PFgg213PqH7nuDB641ZwcwwQKXNd8T/N7WZ2ySvKsVRnY+SHDtzkDWsdx0ZUz6oOSThmztH6S8gdHH/u561BkzCLPrch1hMdsR5X7PKmgRO+Njh+1mLOSl8fiTBjvcJq7vdIeQDW3uNjtXCYZOPqZ4GOrPYAHE1lz5uRFvAdMBy2FuOTMX87VE2cXqMQf9RgCk1mkCbgRwvk/1SHsykC468TuWOaEV+MWB5HhYYbvB4QP9tZxdDe4TfmspiA8Qll4MBjbWU5JgDHPvCkVUUP+kQlhx/JHnVwIsHfG4SGstXFJx2YEKw15u4rbbomCsEWi20FiTl2hHiKoDGu40nUD8zbZrS8SO+ULMIJGFGu15x5DfsZ/g3R1720RZWkv8yn632gLX/byyIBWhj7SGuebLXh1gQIYxNk/9CpU2Tb1DJz+RFL2sxivzDZmUojFhc7fwPjvyW5LidxzxhTeWNXCS17bChjTziQScF6uyn6KH4UBc/c+RXKsUMRLE13UjLX5gkosZBYDaSYhvOsskzSs9SRI5xW5jmkSasKgZs3vPVCNeD5v2OI69RKfBtiMfUawmZ+pkjlwYfVU/CMSrfoYygIJv8KjgPfh2kY/wb27JBS3vTAffhksRRJig4mbsiaC1m2DecytsdeSqcf1841qTjrhCw0VArWY26x6TyLo+nySw3QhxymYioDh4QvrM5hAQ+YhK4YGHDjrGK+ArLHgp2oDbw7/+VpS+gU9QJ9zpBwaHTkmb3SMddIWDjS+zJeyPEIZcxYcbeHcDICKIbNI4toPJwaPhFvmbzBaZTUJzAE1YR/539HOf5nh6zVgH/z1sWKii0l3NMZEcFc22poHWcouDAwG2CRqVbD4qBaYtzECrRq+Qi46lg73UyIfjhhs8MDwJ5nwnFZscm1MMdrKFARbwTcC6C7eAUg6MVcS5Bzq8FbP78zATn3oe06nUp4Do7qXw/xyXSkhxFgc0WE0xWlz2mfmPeGiHuUjQG6zpDW/mQiUcqPyENbJzfRuHb2KElXGHt5y8VmnEwzeBo3cAvNGjT1mqWh8J9z5B/pC++84mgJg/qmKsqFpL/hj0bxNn4OMZ9xCY1g7tIcZInQsgIT6C1DdQtiikn52R87UiXcW7HXHT84sheR5oTuFdTOh0548j/RLyn/3WkzrhWkyMf+Zz/WQr3noR8JLS1ec4145xrGbjv1rlsIOgeL8e89q+OnHakx5HGGG31j5DfuZDWe0pib9F7bDYs95n577NjdZKi7Qwd4dk+zT0TMKe2s2O2j7UZm2XEep5txj1+o3U+qi2e/4+qSBQO+7j/V2ruQPPqZ3nCWvsw1dBm2CTIBerfeirtoenw8anYhjJPsYN2kKq7zDbNZtxx7hDwmYQF3PVbXNeN83msY61wgDmNFcszCVyrkSc/CDbffuDjv8yNQ9ckBWz7rjT7F+zMjVSK6D1AL3b9/jo9K1FyjOw8/3529xuk+4mKDARYvpvwNeEn/BOVwjMy7QROMlkUZmdEEa6KoLphORdRhlguztpqihvHghWpLRS8ImUS7T4m2wkdX4XHEE8ySTtoEViKNJ8tWX3wNDLRQV1bQaWQ+MNMNFLDwl+xi7LvFcfKF+Jn1gaQ3xPWeLYzGR0jXXZWPK/FIhZra4RJygbtrMVkUoNJM83lONuGK1g9lLSWWgK0EDOuBwSCQD1sWPw9P+eMjiWFAPSLYSYZd+IdT+C6WEw5msUHrkb2f8TAmLktpik4CC2rgKPZzB/TTylmUFdUDPjt4my3QJT2gpTubdwz+S7kPoUFBCQeq6RsyTYmq0xtL6kGuaDBzOXdsyRv9ss6YPI9MJ6njzvJUx3PmQI0449jfP8CRUuEFocEB1kaeLysYcKx9ae4lQEyFahZjez/OwVTYqhGO+ysYOJh60KvjmVFAsAEhfgurDDBdwcfja1PcnnWHiZtcsEMb+4Tuk61vTwr+VUGdFwoUpjIhqmUdO2K5VgrFLn0U/ku6VM1/tKnhJeN2INOHQ+KlEgGIR5hYQ0LsnbjaZIL7Ecz7cADqoHIQgsM+hCpQkE8oSL9CHb4IxYFNbbaY1xvxsI8ytwqZZrkskFg0yHKR/wHdmWb2+qRTKpRx5USC5VyO4NQ4JhdwkSDRPJIk1ppEfswzWQ6aw2RJrmYjtynJMe75EV7aaTgzHqKYgA1vCTnKkjlIJNM1AUA+C3D0rHez1pDpLUUvZTKc2lczCK7xgCido8a2soAad6WomNdyOcwjy4zGUCTHyH/BQ64FrAcftLidyt1N7TFNOkxphGz87Ba5DJg6aeoZTxhgvE+K6Ill1FlyawU+YCt2QOS+YRlggnmgfE5Fglskrq7S9iVoIvsk9QHAdt8tpDH8ZwGuSDuY4Nx7DYlE+qcRdNoQCBWJZfi4jZFz4DXyrKywt+8SMEVL6oBmILY54Sl8386l+dZPngPPUtcg5k5qBBZv8DeeTUV7nJn8qKX0i8+rsgusGm1mvl7YJZ8kJFnbyfP9hg/cnH3zCBRNZJmo4TpaRbUD/qVP4ODqkX4nheIC7mU4840KKjFfcJ5K9l2xtLkPxyZY0H7fkHVCTUvEuKuSs5UeH2YBUi3cacKz4h7RAzMZIrtEBVtQeQCk+YnJpKgioj47BAPjg95UPVQeZ3kIcr3TuErVJ7A2xs8uI3JGMuTblWAJkMzRJtjL8uPVIB6NgngEYXv5YqbS2cixueIScHu5x0pajEYU6hqEZYGttopTab8yOV9nkWjhBLX8/dgb+0VWHMo5x0dnXxYYO9NTChnyK6eNbCYtcSvqPJ4iCLArQQRZCrEzb18MWTWt8m6CK32X6mUPjXJlVLkh3FLCIdhXxW1l2nve/GSy2rWQCoFHDpmqY5RKkY2Nik48HOq3EHXw99X+OM9H9MDjs0tCWgMWCre5aN1Iy3rkQgDDvf6Mpswt2KSynY2u+5afuc2fydthy9Ms7Xedn8JJQBYhf9ZMGmmeFa+yv9HQ2F5rIvV/TANBykvbxSks3uLqAXNuO7K2X1uv0VMJpKmgpc1kuI9o1zufkPVf9U4ByHsa4wJ4+2MtDnazA1aa+J2hZaQZGVLaJO7ud9PMLHE3R+H2KhlPBlDFpCcP+YO95MxHkd3Y/xmC7eTaZYnoa2M8/09T+hcY2SZUM/k+5BaQfWOHAqoh/JTRmv1pCU9IfVhzjnS4vNdtPPnwnf+pHWLVGpVXLNIKgmynoJLn2IWxhKYX02eU1QsjJK/1x7q9VbyzxQ2xaq8WdN6pfpeFLUKl1wWCMRhq1oOkey5v1Wwtpz1cfJdiUC0ppOyjjKc3V2hsCGXKcGWXWfxfex9+JL/NbGhgO0pOXC7yX71rc3HQalQ1Cy53KDy1Q7EXQTt3oRD6q/kn15vW8FUemmzJrHz7FsKr+C4xnCuug7Wae2milrEfE8nvmJoG9BGsHsTm6ngIb/P5k8XE0vYbNzC2s+lgrTlQEhbYNUFe46GqeRdh+e/kz9D0J0UPDesXTQQTdxnn1D6RfUa+bdm+LfCAkM7qTwLYxRgrN2L2TbVTn05LpELgKTAcOwuFlT1thgDrgjk0mxpBi5jsQF8XseUP3xRz5pzu8cMX5vib31Lz1KZIm/PKp9z4b/8hpJLewrCvMUT002y82V2s7ui2snLQIZvutq2N4juMb+cqQobYJ9AJMtJXonKG6TNmkMx/CV4B38g9beEEbU3dWQPpZdHtssgCwzehQHugCTzKUP7gS8P+/j+TKV4tIEQrehDejFZETvIkzBtnjBbooLgxxE6NsKsX+dZdjCiuZAH+G3W3EOlGsFR0y9gObpaG99qGQ0+pkta5pekoUhYlPJz4/qfOfIdlQe9ksfN8aLwSDKLvBoMYlcQ6YjIRDeKsMFz4w9ZRUPaSm9sh1sX2qutbObr5XUWljZrnvXYzG/yTNdHJR9Ug891ECfzAeUz702RUYnvxKbaYxebheuFCWwPT3qtEU178/w7FM2PNeq1XuaHqOYHKmhMaC8nDdbfRPndwCgVfTM1uBv0bBvEEqPzwGF+m7RiY17xgDX7SjRi1+G/hCcnUytyFwp+ZxDYJJvVUTDAGpEXKyjGHq00EnSfFwZKXstudFB5bEvYZk1oJleYbIdYA1RiUZAwSY1zf0IdaOyu3ioMdkzemdzkmga54OHNSNUllEyezqxB8ied0nGhSAnDVPLjTQrja13Wbjat0iJFcOw2UnnGuftUnF3gihcD9LGNwvG9RSEXqHNjxjGpSFoto4/KVydUa1FUA3DgmmEfS7M2vtIsimZqLw0k55bNi0nklhpRKKoBKTg1U66HeSk//HROTSM4cc3gQPiZHmufV1QJY8Kx1izdYJrk8lSYybGNoDsHL3ancExNIkU1IcWN1WXpBuelfP08OnbdOk5eIHjwrvZ3RRUhRQ3PZukG0yYXeLZvGscwMBfW8EvtF2YIrQ+tqDakbQaZSoY/rwq/MSiobrUaVFcv3Dv2UlzRvq6oMnoFrWWsaORylcpzx27Lmn1oCSynNwvkOat9XVFFQPPvM45hC0mmEotVg1ykwmgLqTYrC5r+ohnKf9E3Rfa0Z4T7mzFWx7N2o/NTZFYMRKRu7AwYqFdr6KUixHqpQJzYOObuEr9EmpbyReIapVM6uCkjzwetGelnVwpaS+bGUtLkAlJBoa1NFmZPNzPwqazZigbqWMs6KHzWwKSzhG3go1Ta/4F8OJM61quOxTl9rgU8pg5ReRQushdszOJNJ0ku8Eecjsjym1nG2XeBQLSs7BBuYe2qn+zLe0BV3cnPtIPs6gkr8g13AoqCDv4ewh4Qdbuc5GT38GWi+mUmSyYnRS79TCxxTI4zPPOfZaJ5+ILapJtJpYcqdzo3sfqKTnJAx1ehgcDR71O4LjJABhXaywW5oD7yZz6fuZUDxpmJN1Hw/geofHtZ0Hgn+N9qqJ19TCo2ychn+blAgJ38HWnT2PtsHmkcTHXwdkqDDfl6P83A883yeMAEnHl/ZVxyaWSNw5zhMaB2CQ3whOw3V61meciDEw2atLO0i82YXvJPPykBwYGrDNUXxAl/k7lUjU4Jh5vmxE0fd1MyEV501UuMo0tMLDWzfy0uuWBmXii84LdIriIg+VNG2BTxG9yL2Fw6xD4MLP3GcQA3MhEMkF2Wdvc5mg1b13yus/wsX9Lz5UNgKyPt55s69gsJTIhRgix7BS14jGqwRE8ccmmg8mhVNOTvyb88iWRybKRn6RiCzBKcs40FjX2K7IpTuejg628mO6fzTSYydAwUh/Nm+moOICKo5t/R87umlzGBaiKp4gFa/LsRtZSvjWMfsmuhpvpPnCC6lQLDHqbgJdgNgk/mKZMSgoB+w+Q0YmHOYBn7P1mr8dtqXs+/iYJWf2MTKIhYoHLCz/Nb1r7cKn4PBaJqCbjGFuF4n44zhQVg+hwxjsHtcIEyllIhTXIxKwdiEA4HnL+GynOgXPdpXBRne5VKtZCC/CyuA/gXNkdW8/FW9n/86sgXFF7lEJrQdkdeplJZhvuCFmO+7J0B1xsXvtOl40ZhiQ8ELaWZ+3J9EcjF1Foekb+zCQ1zRjgeREZwzO3jAb/Fws+yjtXJX1j2B5gvwBP2k6Dswxv0rNaQhBuCqbc3xGdz2/i7VceMwhKYqN8RrABEiH9aBHIxk9W0+JgcHWyWtAgaik0BMPhUzjMBhJGAzSC+x9rJK6yt2N7DKcHk+jKAYMy9H1o+RBEFmMzWU7lPcaBWTOw45DIumArnPIOqlWd3BBC1C8S0q4LfdM2XV1irsQ20m2H/yQpHXmO/StQlveNUXjkPK1moerfbOA6n9Gbj2EMdL4qIuM393ATiyhbnmVxGBe0Fpsl/U6lYNkwTOFulJWZoDg9i/PY0+2P2WJ4PbQerUrdiamrrBQ2knlVVPDc2zsHx9oNgNo7qWFFUgBNUvgzdwFpzU17JBTP/YZ/PFgXYkrt4sMcF4mtsK81BlexN4DehuWwhefkbGhuc1psEk2iaNMeuonJsF7TmNp7IckkuxNqDbTkNDLC3ExxkRwXmhhMYK01SPMCnFC0K1w+Ie1lF9tHCrnPukY4RRUyt2bQUMJntzyu5EM/kfyQ5G7nbMPBXoNZtUvuE4Bw2Y2YweBEFO8IkdkvQdDYn9Pu4NmJywhJFuUF113V8KBLQmqVgPATYZbKiRlK7oj/mgYY4k+V8DMtod3lgJb1S0kfl+5kO0LN9JTOsSv5knLeZksscN80v+zCbQggqbPZ8Nsrm3xMdF4qEgO0vWI72xli5AXavU8ZSLySZz2WaH74aOUzMottYiRk2jj1gk63Pc2wp+0OSHPCTbB4e076vqALeo/KsiG6A3ZuUoXzO82qwccHUUqSv1KhXLb6rUNQSoJVvpPKgzqXCpKvkEhHNVL4a4xe9KwXILdL+mQuY0atPyX/DbFyYMUrSfjOvxhx0n0kA5s87woQ6k+AzTsfV8GuRXKLsrZj10XwUtQ/kxxn0DKo9lF4U9D2P2TvLponfwPOmBAHZpZWJECuiWz33gViY0ZjXu+Rpz11xTaz5NdippNnJr4KjdFyz8+cHyFN8hAdY2kmUECl7nAdckIaEe3mDze/7lK4P5DwTwkKKHwE+y+bWPm7L2O1Zi+TylFXPNsPelNBtobYq8mUepYkosUr3qnRPM5Ts1pLEVpzm1WiHMnccYwm8XTB/+oWGU3JRKKqAWiWXiwKRYCmuxfM3qhGYzttL+soViupgfo3e9w22Z73aClIfIDPdHTaZGgX1UbPwKxSquQTC3QApoVMgFuAIadoDhULJxVJ72Wd5rpSXVFG+kiGtbMxoMymKRi4AYg8QTDQdMHhAKmspQ2HRGcL1kL+lYze12RQ2eGlubi4Pz4HUCwh9xpI0MnTBH4NVoWHSgvBh2MQCXxU2oJrBYXCOI9PeSiaWE0rUiiKRi0KhULNIoVAouSgUCkWF+H8BBgAJaNCt74FjvAAAAABJRU5ErkJggg==\"","import { Loader, Dimmer } from 'semantic-ui-react';\nimport styled from 'styled-components';\n\ntype Props = {\n message?: string;\n active?: boolean;\n};\n\nconst LoaderOverlay = ({\n message,\n active,\n}: Props) => (active ? (\n \n \n {message || ''}\n \n \n) : null);\n\nexport default LoaderOverlay;\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2;\n`;\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default function removeUser(body: {\n userId: string;\n organizationId: string;\n}) {\n return axios.put(`${authBaseUrl}/removeUser`, body, {\n withCredentials: true,\n });\n}\n","import { Organization } from '../types';\nimport callRemoveUser from '../api/removeUser';\nimport { callApi, setState } from '../../util';\nimport { selectActiveOrgId } from '../selectors';\n\nexport default function* removeUser(user: {\n id: string;\n}) {\n const body = {\n organizationId: selectActiveOrgId(),\n userId: user.id,\n };\n yield callApi('user/remove::SILENT', callRemoveUser, body);\n yield setState(['organizations', body.organizationId], (organization: Organization) => {\n // Remove the user\n const users = organization.users.filter(({\n id,\n }) => id !== user.id);\n return {\n ...organization,\n users,\n };\n });\n}\n","import React, { Component } from 'react';\nimport { Modal } from 'semantic-ui-react';\nimport type { InjectedFormProps } from 'redux-form';\nimport styled from 'styled-components';\nimport Toast from '../../app/components/Toast';\nimport { runSaga, asForm } from '../../util';\nimport HslButton from '../../forms/components/HslButton';\nimport { isFetching } from '../../requests/selectors';\nimport removeUser from '../sagas/removeUser';\n\ntype Props = {\n user: {\n email: string;\n name: string;\n id: string;\n };\n handleClose: () => any;\n submitErrors: any;\n};\n\ntype State = {\n modalOpen: boolean;\n};\n\nclass ConfirmRemoveUserModal extends Component {\n removeUser = async () => {\n await runSaga(removeUser, this.props.user);\n this.props.handleClose();\n };\n\n render() {\n const {\n user: {\n name,\n email,\n } = {},\n submitting,\n handleSubmit,\n submitFailed,\n submitSucceeded,\n submitErrors,\n initialize,\n } = this.props;\n return (\n
    \n \n \n\n \n

    Confirm user removal

    \n

    \n You are about to remove\n {name}\n {' '}\n (\n {email}\n ) from the organization. Are you sure you want to proceed?\n

    \n
    \n
    \n\n \n\n \n Cancel\n \n\n \n Remove User\n \n\n \n\n
    \n
    \n \n
    \n );\n }\n}\n\nexport default asForm('uninviteForm', {\n mapStateToProps: (state) => ({\n submitting: isFetching(state, 'user/remove'),\n }),\n})(ConfirmRemoveUserModal);\n\nconst StyledForm = styled.form`\n margin: auto;\n background: white;\n border-radius: 12px !important;\n color: black;\n padding: 50px;\n max-width: 550px;\n font-size: 13pt;\n\n & p {\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ActionsContainer = styled(Modal.Actions)`\n padding-top: 30px;\n text-align: center;\n`;\n\nconst ContentContainer = styled(Modal.Content)`\n padding-bottom: 25px;\n & > h2 {\n margin-bottom: 27px;\n }\n`;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { selectOrganization, selectActiveOrgId } from '../selectors';\nimport type { Organization, OrganizationUser } from '../types';\nimport ConfirmRemoveUserModal from './ConfirmRemoveUserModal';\nimport { selectUserId } from '../../auth/selectors';\nimport type { StoreState } from '../../state/types';\nimport CloseSvg from '../../static/icons/close.svg';\n\ntype Props = {\n ownId?: string;\n organization?: Organization | null;\n};\ntype State = {\n userToRemove: OrganizationUser | null | undefined;\n};\n\nclass UserList extends Component {\n state = {\n userToRemove: undefined,\n };\n\n setUserToRemove = (userToRemove: OrganizationUser) => () => this.setState({\n userToRemove,\n });\n\n unsetUserToRemove = () => this.setState({\n userToRemove: undefined,\n });\n\n render() {\n const users = this.props.organization && this.props.organization.users;\n return (\n \n \n \n

    Users

    \n
    \n
    \n {users && users.map((user, i) => (\n \n \n

    {user.name}

    \n
    \n \n

    {user.email}

    \n
    \n \n {user.id !== this.props.ownId && }\n \n
    \n ))}\n { /* @ts-ignore */}\n \n
    \n );\n }\n}\n\nexport default compose(connect((state: StoreState): any => {\n const ownId = selectUserId(state);\n return {\n organization: selectOrganization(state, selectActiveOrgId() || ''),\n ownId,\n };\n}))(UserList);\n\nconst UsersRow = styled(Grid.Row)`\n margin-top: 20px;\n`;\n\nconst UserRow = styled(Grid.Row)`\n border-top: 1px solid #dadada;\n`;\n\nconst UserRowNameCol = styled(Grid.Column)`\n text-align: start;\n`;\n\nconst UserRowEmailCol = styled(Grid.Column)`\n text-align: end !important;\n`;\n\nconst TriggerLink = styled.img`\n cursor: pointer;\n`;\n","import { WrappedFieldArrayProps, Field } from 'redux-form';\nimport styled from 'styled-components';\nimport InputField from '../../forms/components/InputField';\nimport { required, minLength4, validateEmail } from '../../forms/helpers';\nimport CloseSvg from '../../static/icons/close.svg';\n\nconst EmailFieldArray = ({\n fields,\n}: WrappedFieldArrayProps): React.ReactElement, any> => (\n
    \n \n

    fields.push('')}>\n Recipient(s)\n

    \n fields.push('')}>\n Add new\n \n
    \n {fields.map((field: any, i: any) => (\n \n { /* @ts-ignore */ }\n \n fields.remove(i)} alt=\"close\" />\n \n ))}\n
    \n);\n\nexport default EmailFieldArray;\n\nconst RecipientsHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 30px 0 20px;\n\n & > a {\n cursor: pointer;\n }\n\n & > p {\n margin: 0;\n }\n`;\n\nconst EmailInputContainer = styled.div`\n position: relative;\n display: flex;\n align-items: baseline;\n width: 100%;\n margin-right: 10px;\n`;\n\nconst EmailInputSuffix = styled.img`\n cursor: pointer;\n position: absolute;\n right: 0;\n margin-right: 15px;\n margin-top: 35px;\n`;\n\nconst EmailInput = styled(Field)`\n margin-top: 0 !important;\n`;\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\nimport { PendingInvite } from '../types';\n\nexport default async function inviteUsers(invitees: string[], organizationId: string | null): Promise {\n const { data: pendingInvites }: { data: PendingInvite[] } = await axios.post(`${authBaseUrl}/sendInviteEmails`, {\n invitees,\n organizationId,\n }, {\n withCredentials: true,\n });\n\n return pendingInvites;\n}\n","import { Organization, PendingInvite } from '../types';\nimport callInviteUser from '../api/inviteUsers';\nimport { callApi, setState } from '../../util';\nimport { selectActiveOrgId } from '../selectors';\n\nexport default function* inviteUsers(invitees: string[]) {\n const organizationId = selectActiveOrgId();\n const pendingInvites: PendingInvite[] = yield callApi('user/inviteusers', callInviteUser, invitees, organizationId);\n yield setState(['organizations', organizationId], (org: Organization) => {\n const organization = { ...org };\n\n pendingInvites.forEach((invite: PendingInvite) => {\n organization.pendingInvites?.push(invite);\n });\n\n return organization;\n });\n}\n","import React, { Component } from 'react';\nimport type { InjectedFormProps } from 'redux-form';\nimport { FieldArray, SubmissionError } from 'redux-form';\nimport { Modal } from 'semantic-ui-react';\nimport { AxiosError } from 'axios';\nimport styled from 'styled-components';\nimport Toast from '../../app/components/Toast';\nimport { asForm, runSaga } from '../../util';\nimport HslButton from '../../forms/components/HslButton';\nimport EmailFieldArray from '../../credit/components/EmailFieldArray';\nimport callInviteUsers from '../sagas/inviteUsers';\nimport { isFetching } from '../../requests/selectors';\n\ntype Props = {\n submitErrors: any;\n initWithValues: () => any;\n};\n\nclass InviteUsersModal extends Component {\n state = {\n modalOpen: false,\n };\n\n initializeAsEmpty = () => this.props.initialize({\n invitees: [''],\n });\n\n handleInvite = async ({\n invitees,\n }: {\n invitees: string[];\n }) => {\n try {\n await runSaga(callInviteUsers, invitees);\n this.handleClose();\n this.initializeAsEmpty();\n } catch (e) {\n const axiosError = e as AxiosError;\n if (axiosError.response && axiosError.response.status === 409 && axiosError.response.data) {\n throw new SubmissionError({\n general: axiosError.response.data,\n });\n } else {\n throw new SubmissionError({\n general: 'Failed inviting users.',\n });\n }\n }\n };\n\n handleOpen = () => this.setState({\n modalOpen: true,\n });\n\n handleClose = () => this.setState({\n modalOpen: false,\n });\n\n render() {\n const {\n invalid,\n submitting,\n submitErrors,\n initWithValues,\n submitFailed,\n submitSucceeded,\n handleSubmit,\n } = this.props;\n\n return (\n
    \n \n Invite users\n \n \n\n { /* @ts-ignore */}\n \n\n \n

    Invite users

    \n\n { /* @ts-ignore */}\n \n\n
    \n
    \n\n \n\n \n Cancel\n \n\n \n Send\n \n\n \n
    \n\n
    \n \n\n
    \n );\n }\n}\n\nexport default asForm('userInviteForm', {\n mapStateToProps: (state) => ({\n submitting: isFetching(state, 'user/inviteusers'),\n initialValues: {\n invitees: [''],\n },\n }),\n})(InviteUsersModal);\n\nconst StyledForm = styled.form`\n margin: auto;\n background: white;\n border-radius: 12px !important;\n color: black;import runSaga from './../../util/runSaga';\n\n padding: 50px;\n max-width: 550px;\n font-size: 13pt;\n\n & p {\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ActionsContainer = styled(Modal.Actions)`\n padding-top: 30px;\n text-align: center;\n`;\n\nconst TriggerLink = styled(HslButton)`\n cursor: pointer;\n`;\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default function removeUser(body: {\n email: string;\n organizationId: string;\n}) {\n return axios.put(`${authBaseUrl}/revokeInvitation`, body, {\n withCredentials: true,\n });\n}\n","import { Organization } from '../types';\nimport callRevokeInvitation from '../api/revokeInvitation';\nimport { callApi, setState } from '../../util';\nimport { selectActiveOrgId } from '../selectors';\n\nexport default function* removeUser(email: string) {\n const body = {\n organizationId: selectActiveOrgId(),\n email,\n };\n yield callApi('user/revokeinvitation', callRevokeInvitation, body);\n yield setState(['organizations', body.organizationId], (org: Organization) => {\n const organization = { ...org };\n organization.pendingInvites = organization.pendingInvites?.filter((invite) => invite.email !== body.email);\n return organization;\n });\n}\n","import React, { Component } from 'react';\nimport { Modal } from 'semantic-ui-react';\nimport type { InjectedFormProps } from 'redux-form';\nimport styled from 'styled-components';\nimport Toast from '../../app/components/Toast';\nimport { runSaga, asForm } from '../../util';\nimport HslButton from '../../forms/components/HslButton';\nimport { isFetching } from '../../requests/selectors';\nimport revokeInvitation from '../sagas/revokeInvitation';\n\ntype Props = {\n email: string;\n handleClose: () => any;\n submitErrors: any;\n};\n\ntype State = {\n modalOpen: boolean;\n};\n\nclass ConfirmRevokeInvitationModal extends Component {\n revokeEmailInvitation = async () => {\n await runSaga(revokeInvitation, this.props.email);\n this.props.handleClose();\n };\n\n render() {\n const {\n email = {},\n submitting,\n handleSubmit,\n submitFailed,\n submitSucceeded,\n submitErrors,\n initialize,\n } = this.props;\n return (\n
    \n \n \n\n \n

    Confirm revoke invitation

    \n

    \n You are about to revoke the invitation for\n {email}\n {' '}\n from the organization. Are you sure you want to proceed?\n

    \n
    \n
    \n\n \n\n \n Cancel\n \n\n \n Revoke\n \n\n \n\n
    \n
    \n \n
    \n );\n }\n}\n\nexport default asForm('uninviteForm', {\n mapStateToProps: (state) => ({\n submitting: isFetching(state, 'user/revokeinvitation'),\n }),\n})(ConfirmRevokeInvitationModal);\n\nconst StyledForm = styled.form`\n margin: auto;\n background: white;\n border-radius: 12px !important;\n color: black;\n padding: 50px;\n max-width: 550px;\n font-size: 13pt;\n\n & p {\n margin-top: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ActionsContainer = styled(Modal.Actions)`\n padding-top: 30px;\n text-align: center;\n`;\n\nconst ContentContainer = styled(Modal.Content)`\n padding-bottom: 25px;\n & > h2 {\n margin-bottom: 27px;\n }\n`;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { selectOrganization, selectActiveOrgId } from '../selectors';\nimport type { Organization } from '../types';\nimport InviteUsersModal from './InviteUsersModal';\nimport ConfirmRevokeInvitationModal from './ConfirmRevokeInvitationModal';\nimport { selectUserId } from '../../auth/selectors';\nimport type { StoreState } from '../../state/types';\nimport CloseSvg from '../../static/icons/close.svg';\n\ntype Props = {\n organization?: Organization | null;\n};\ntype State = {\n emailToUninvite: string | null | undefined;\n};\n\nconst getDisplayExpirationText = (validTo: Date): string => {\n const fromDate = new Date();\n const toDate = new Date(validTo);\n const diff = toDate.getTime() - fromDate.getTime();\n const daysDiff = diff / (1000 * 60 * 60 * 24);\n const daysLeft = Math.trunc(daysDiff);\n\n if (daysDiff <= 0) return 'Expired';\n if (daysLeft === 1) return 'Expires in 1 day';\n return `Expires in ${daysLeft} days`;\n};\n\nclass UserList extends Component {\n state = {\n emailToUninvite: undefined,\n };\n\n setEmailToUninvite = (emailToUninvite: string) => () => this.setState({\n emailToUninvite,\n });\n\n unsetEmailToUninvite = () => this.setState({\n emailToUninvite: undefined,\n });\n\n render() {\n const invites = this.props.organization && this.props.organization.pendingInvites;\n return (\n \n \n \n

    Pending invitations

    \n
    \n
    \n {invites?.length === 0 &&

    No invitations

    }\n {invites && invites.map((invite, i) => (\n \n \n

    {invite.email}

    \n
    \n \n

    {getDisplayExpirationText(invite.validTo)}

    \n
    \n \n {invite.email && }\n \n
    \n ))}\n \n { /* @ts-ignore */}\n \n \n\n { /* @ts-ignore */}\n \n
    \n );\n }\n}\n\nexport default compose(connect((state: StoreState): any => {\n const ownId = selectUserId(state);\n return {\n organization: selectOrganization(state, selectActiveOrgId() || ''),\n ownId,\n };\n}))(UserList);\n\nconst InviteRow = styled(Grid.Row)`\n border-top: 1px solid #dadada;\n`;\n\nconst InviteRowNameCol = styled(Grid.Column)`\n text-align: start;\n`;\n\nconst UserRowEmailCol = styled(Grid.Column)`\n text-align: end !important;\n`;\n\nconst InvitesTitleRow = styled(Grid.Row)`\n margin-bottom: 0px;\n margin-top: 20px;\n`;\n\nconst TriggerLink = styled.img`\n cursor: pointer;\n`;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { selectOrganization, selectActiveOrgId } from '../selectors';\nimport OrganizationForm from './OrganizationForm';\nimport { runSaga } from '../../util';\nimport fetchOrganization from '../sagas/fetchOrganization';\nimport type { Organization } from '../types';\nimport { isFetching } from '../../requests/selectors';\nimport ApiKeyList from './ApiKeyList';\nimport Navbar from '../../app/components/Navbar';\nimport LoaderOverlay from '../../app/components/LoaderOverlay';\nimport UserList from './UserList';\nimport Invites from './InvitesList';\nimport type { StoreState } from '../../state/types';\n\ntype Props = {\n organization: Organization | null | undefined;\n isFetching: boolean;\n};\n\nclass OrganizationPage extends Component {\n componentDidMount() {\n if (!this.props.organization) {\n runSaga(fetchOrganization, selectActiveOrgId());\n }\n }\n\n render() {\n return (\n
    \n \n \n \n \n \n \n

    Organization Information

    \n { /* @ts-ignore */}\n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default compose(connect((state: StoreState): any => ({\n organization: selectOrganization(state, selectActiveOrgId() || ''),\n isFetching: isFetching(state, 'organization/get'),\n})))(OrganizationPage);\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst GrayBlock = styled.div`\n background-color: #f8f8f8;\n padding-bottom: 20px;\n padding-top: 13px;\n margin-bottom: 35px;\n`;\n","export default __webpack_public_path__ + \"static/media/HSL_OpenMaaS-rajapinnan_tietosuojaseloste_20190730.9efa2949.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_OpenMaaS_API_privacy_statement_20190730.a2ed71ba.pdf\";","export default __webpack_public_path__ + \"static/media/HSLOpenMaaSAuthorisation_EN.731274ba.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_test_users_for_ Sandbox.a48ffd55.pdf\";","export default __webpack_public_path__ + \"static/media/Muistilista HSL OpenMaaS -rajapintasopimusta tekeville_14.1.2021.f5992379.pdf\";","export default __webpack_public_path__ + \"static/media/Checklist for New HSL OpenMaaS Users_14Jan2021.1a550bb4.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_jatkuva_saasto_tilaus_14.1.2021.473ec69d.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_auto_renewing_subscriptions_14.1.2021.dcf482ca.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_OpenMaaS_Change__cancellation_and_refund_terms_of_tickets_14.1.2021.c36f0530.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_OpenMaaS_Lippujen_muutos-_ja_peruutusehdot_14.1.2021.8b20eb62.pdf\";","export default __webpack_public_path__ + \"static/media/HSL_TARMO_2021.04cf8c74.pdf\";","export { default as portalPrivacyPolicyFI } from '../static/media/HSL_OpenMaaS-rajapinnan_tietosuojaseloste_20190730.pdf';\nexport { default as portalPrivacyPolicyEN } from '../static/media/HSL_OpenMaaS_API_privacy_statement_20190730.pdf';\nexport { default as authorisationsUiIntsructionsEN } from '../static/media/HSLOpenMaaSAuthorisation_EN.pdf';\nexport { default as testUsersEN } from '../static/media/HSL_test_users_for_ Sandbox.pdf';\nexport { default as checklistFI } from '../static/media/Muistilista HSL OpenMaaS -rajapintasopimusta tekeville_14.1.2021.pdf';\nexport { default as checklistEN } from '../static/media/Checklist for New HSL OpenMaaS Users_14Jan2021.pdf';\nexport { default as autoRenewingFI } from '../static/media/HSL_jatkuva_saasto_tilaus_14.1.2021.pdf';\nexport { default as autoRenewingEN } from '../static/media/HSL_auto_renewing_subscriptions_14.1.2021.pdf';\nexport { default as cancellationAndRefundEN } from '../static/media/HSL_OpenMaaS_Change__cancellation_and_refund_terms_of_tickets_14.1.2021.pdf';\nexport { default as cancellingTermsFI } from '../static/media/HSL_OpenMaaS_Lippujen_muutos-_ja_peruutusehdot_14.1.2021.pdf';\nexport { default as tarmo } from '../static/media/HSL_TARMO_2021.pdf';\nexport const pricesUrl = 'https://sales-api.hsl.fi/api/ticket/v4/get/prices';\n","import React from 'react';\nimport type { InjectedFormProps } from 'redux-form';\nimport { Field } from 'redux-form';\nimport { Grid } from 'semantic-ui-react';\nimport InputField from '../../forms/components/InputField';\nimport {\n required, minLength1, minLength2, minLength4, validateEmail,\n} from '../../forms/helpers';\nimport Toast from '../../app/components/Toast';\nimport HslButton from '../../forms/components/HslButton';\nimport { authorisationsUiIntsructionsEN, portalPrivacyPolicyFI, portalPrivacyPolicyEN } from '../../docs/constants';\nimport type { SignupFormFields } from '../../forms/types';\n\ntype CustomLabelProps = {\n children: any;\n};\n\nconst CustomLabel = ({\n children,\n// eslint-disable-next-line jsx-a11y/label-has-associated-control\n}: CustomLabelProps) => ;\n\ntype Props = {\n submitErrors: any;\n submit: (data: SignupFormFields) => Promise;\n initWithValues: () => any;\n};\n\nconst SignupForm = ({\n handleSubmit,\n submit,\n submitErrors,\n initWithValues,\n submitting,\n invalid,\n}: InjectedFormProps & Props) => (\n <>\n { /* @ts-ignore */ }\n
    \n\n \n \n \n Organization name *1)}\n type=\"text\"\n id=\"organizationName\"\n name=\"organizationName\"\n component={InputField}\n validate={[required, minLength2]}\n />\n \n \n App or Service name2)}\n type=\"text\"\n id=\"appName\"\n name=\"appName\"\n component={InputField}\n validate={[required, minLength1]}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

    \n 1\n {' '}\n This field is displayed in HSL Authorisations UI to your app users, so please pick a name your users will recognize.\n {' '}\n Read more.\n

    \n

    \n 2\n {' '}\n This field is displayed in tickets\n {' '}\n \"bought from service ***\"\n .\n

    \n
    \n
    \n \n \n

    In English

    \n HSL OpenMaaS privacy policy\n
    \n \n

    Suomeksi

    \n HSL OpenMaaS tietosuojaseloste\n
    \n
    \n \n \n {\n /* */\n }\n \n \n \n \n \n Create\n \n \n
    \n\n
    \n \n \n);\n\nexport default SignupForm;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { SubmissionError } from 'redux-form';\nimport { withRouter } from 'react-router-dom';\nimport { Grid } from 'semantic-ui-react';\nimport { compose } from 'redux';\nimport Navbar from '../../app/components/Navbar';\nimport OrganizationSignupForm from './OrganizationSignupForm';\nimport type { SignupFormFields } from '../../forms/types';\nimport { organizationSignup } from '../../auth/api/organizationSignup';\nimport createCreditAccount from '../../credit/api/createCreditAccount';\nimport { asForm } from '../../util';\n\ntype Props = {\n history: {\n replace: (...args: Array) => any;\n };\n};\n\nclass OrganizationSignup extends React.Component {\n submit = async ({\n customerServiceEmail: csE,\n customerServicePhone: csP,\n ...rest\n }: SignupFormFields) => {\n const reqBody = {\n customerServiceEmail: csE || '',\n customerServicePhone: csP || '',\n ...rest,\n };\n\n try {\n const {\n organizationId,\n } = await organizationSignup(reqBody);\n await createCreditAccount(organizationId);\n localStorage.setItem('activeOrganization', organizationId);\n this.props.history.replace('/organization');\n } catch (e) {\n throw new SubmissionError({\n general: 'Submission failed. Check that all entered values are valid.',\n });\n }\n };\n\n render() {\n return (\n <>\n \n
    \n \n\n \n \n

    Create New Organization

    \n
    \n
    \n\n
    \n\n { /* @ts-ignore */}\n \n
    \n \n );\n }\n}\n\nexport default compose(withRouter, asForm('signup'))(OrganizationSignup);\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\nimport { SignupFormFields } from '../../forms/types';\n\nexport const organizationSignup = async (body: SignupFormFields) => {\n const {\n termsAccepted,\n customerServiceEmail,\n customerServicePhone,\n ...rest\n } = body;\n const reqBody: Record = rest;\n\n if (customerServiceEmail) {\n reqBody.customerServiceEmail = customerServiceEmail;\n }\n\n if (customerServicePhone) {\n reqBody.customerServicePhone = customerServicePhone;\n }\n\n const response = await axios.post(`${authBaseUrl}/signup`, body, {\n withCredentials: true,\n });\n return response.data;\n};\n","import axios from 'axios';\nimport { creditBaseUrl } from '../../util/constants';\n\nexport default function createCreditAccount(organizationId: string): any {\n return axios.post(`${creditBaseUrl}/createCreditAccount`, {\n organizationId,\n alertThreshold: 0,\n alertAddresses: [],\n }, {\n withCredentials: true,\n });\n}\n","/* eslint-disable no-mixed-operators */\nimport React, { Component } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { selectOrganizations } from '../selectors';\nimport { runSaga } from '../../util';\nimport fetchOrganizations from '../sagas/fetchOrganization';\nimport type { Organization } from '../types';\nimport { isFetching } from '../../requests/selectors';\nimport Navbar from '../../app/components/Navbar';\nimport LoaderOverlay from '../../app/components/LoaderOverlay';\nimport InputField from '../../forms/components/InputField';\nimport type { StoreState } from '../../state/types';\n\ntype Props = {\n organizations: Organization[];\n history: {\n replace: (...args: Array) => any;\n };\n isFetching: boolean;\n};\n\ntype State = {\n organizations: Organization[];\n keywordActive: boolean;\n};\n\nclass Organizations extends Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n organizations: [],\n keywordActive: false,\n };\n }\n\n componentDidMount() {\n runSaga(fetchOrganizations);\n this.setState({\n organizations: this.props.organizations,\n });\n }\n\n selectAsActive = (id: string) => () => {\n localStorage.setItem('activeOrganization', id);\n this.props.history.replace('/organization');\n };\n\n searchSpace = (event: React.ChangeEvent) => {\n const keyword = event.target.value;\n let resultOrganizations = this.props.organizations;\n const regexp = new RegExp(keyword, 'i');\n\n if (keyword.length > 0) {\n resultOrganizations = this.props.organizations.filter((organization) => {\n if (\n organization.name.match(regexp)\n || organization.customerServiceEmail\n && organization.customerServiceEmail.match(regexp)\n || organization.organizationEmail\n && organization.organizationEmail.match(regexp)\n || organization.organizationPhone\n && organization.organizationPhone.match(regexp)\n || organization.appName\n && organization.appName.match(regexp)\n || organization.customerServicePhone\n && organization.customerServicePhone.match(regexp)\n ) {\n return organization;\n }\n\n return null;\n });\n }\n\n this.setState({\n organizations: resultOrganizations,\n keywordActive: keyword.length > 0,\n });\n };\n\n render() {\n let { organizations } = this.props;\n\n // if keyword is in use. Otherwise we show all as default\n if (this.state.keywordActive === true) {\n organizations = this.state.organizations;\n }\n\n return (\n <>\n \n \n
    \n \n\n \n \n

    Select Organization

    \n \n

    Newest first

    \n
    \n
    \n\n {organizations && organizations.length > 0 && organizations.map(({\n name,\n id,\n }, i) => (\n \n \n

    {name}

    \n
    \n
    \n )).reverse()}\n\n \n

    Create New

    \n
    \n\n
    \n
    \n \n );\n }\n}\n\nexport default compose(connect((state: StoreState): any => ({\n organizations: selectOrganizations(state),\n isFetching: isFetching(state, 'organization/get'),\n})))(Organizations);\n\nconst TitleRow = styled(Grid.Row)`\n align-items: center !important;\n margin-bottom: 30px;\n`;\n\nconst OrganizationBox = styled.div`\n height: 200px;\n background-color: rgb(245, 245, 245);\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 1px 1px 3px -1px #bfbebe;\n cursor: pointer;\n\n &:hover {\n background-color: rgb(226, 226, 226);\n }\n`;\n\nconst CreateNewLink = styled(NavLink)`\n color: #fff;\n height: 200px;\n background-color: #007ac9;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 1px 1px 3px -1px #bfbebe;\n cursor: pointer;\n\n &:hover {\n background-color: #0093f2;\n }\n`;\n","import axios from 'axios';\nimport { CreditAccount } from '../../credit/types';\nimport { creditBaseUrl } from '../../util/constants';\n\nexport default async function fetchCreditAccount(): Promise {\n const fakeId = '123456789012345678901234'; // Since we admin, it does not matter\n const allCredits = `${creditBaseUrl}/GetCreditAccount?organizationId=${fakeId}&all=true`;\n const { data: creditAccounts } : { data: CreditAccount[] } = await axios.get(allCredits, {\n withCredentials: true,\n });\n return creditAccounts;\n}\n","import callFetchCreditAccounts from '../api/fetchCreditAccounts';\nimport { setState, callApi } from '../../util';\n\nexport default function* fetchCreditAccounts() {\n const {\n creditAccounts,\n } = yield callApi('creditAccounts/get', callFetchCreditAccounts);\n\n yield setState('creditAccounts', (state) => ({\n ...state,\n ...creditAccounts,\n }));\n}\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable no-restricted-syntax */\nimport { sortBy } from 'lodash';\nimport React, { FC, useEffect } from 'react';\nimport {\n Table,\n TableBodyProps,\n TableHeaderCellProps,\n} from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport InputField from '../../forms/components/InputField';\nimport { AdminOrganization } from '../../organization/types';\n\ntype TableDataRequired = {\n id: string;\n};\n\ntype TableDataDynamic = Partial>;\n\ntype TableData = TableDataRequired & TableDataDynamic;\n\ntype TableColumn = TableHeaderCellProps & {\n id: string,\n header: string,\n accessor: string,\n};\n\ntype Props = TableBodyProps & {\n columns: TableColumn[],\n data: TableData[],\n onRowClick?: (id: string) => unknown,\n};\n\nconst initState = (tableData?: TableData[]) => ({\n tableData,\n sortColumn: null,\n sortDirection: null,\n searchKeyword: '',\n});\n\n// TODO: asof this ties organizations to this table component\nconst sortOrganizationToTable = (organizations: AdminOrganization[], sortColumn: string) => {\n let newData;\n switch (sortColumn.toLowerCase()) {\n case 'name':\n newData = sortBy(organizations, [(organization: AdminOrganization) => organization.name.toLowerCase()]);\n break;\n case 'id'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => organization.id.toLowerCase()]);\n break;\n case 'hslcustomerid'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => (organization.hslCustomerId ? Number(organization.hslCustomerId) : 0)]); // TIP: set 0 to 999999 if you want empty as last\n break;\n case 'referencecode'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => (organization.referenceCode ? Number(organization.referenceCode) : 0)]);\n break;\n case 'createdatDisplay'.toLowerCase():\n newData = organizations.sort((org1, org2) => new Date(org2.createdAt as string).getTime() - new Date(org1.createdAt as string).getTime());\n break;\n case 'createdby'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => organization.createdBy?.toLowerCase()]);\n break;\n case 'updatedatDisplay'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => (organization.updatedAt ? new Date(organization.updatedAt).valueOf() : 0)]);\n break;\n case 'updatedby'.toLowerCase():\n newData = sortBy(organizations, [(organization: AdminOrganization) => organization.updatedBy?.toLowerCase()]);\n break;\n default:\n newData = sortBy(organizations, [sortColumn]);\n break;\n }\n return newData;\n};\n\nconst applyTransformers = (state: any, data: TableData[], columns: TableColumn[]) => {\n let newData = data;\n if (state.searchKeyword) {\n const regexp = new RegExp(state.searchKeyword, 'i');\n newData = newData.filter((item: any) => {\n let found = false;\n for (const col of columns) {\n if (item[col.accessor]?.match(regexp)) {\n found = true;\n }\n }\n return found ? item : null;\n });\n }\n if (state.sortColumn) {\n newData = sortOrganizationToTable(newData as AdminOrganization[], state.sortColumn); // sortBy(newData, [state.sortColumn]);\n if (state.sortDirection === 'descending') {\n newData = newData.reverse();\n }\n }\n return newData;\n};\n\nconst reducer = (state: any, action: any) => {\n switch (action.type) {\n case 'DATA_CHANGE':\n return initState(action.data);\n case 'CHANGE_SORT': {\n const newState = {\n ...state,\n sortColumn: action.column,\n sortDirection: (state.sortDirection === 'ascending') ? 'descending' : 'ascending',\n };\n return {\n ...newState,\n tableData: applyTransformers(newState, state.tableData, action.columns),\n };\n }\n case 'CHANGE_SEARCH': {\n const newState = {\n ...state,\n searchKeyword: action.search,\n };\n return {\n ...newState,\n tableData: applyTransformers(newState, action.data, action.columns),\n };\n }\n default:\n throw new Error();\n }\n};\n\nexport const CustomTable: FC = ({\n data, columns, onRowClick, ...tableBodyProps\n}) => {\n const [state, dispatch] = React.useReducer(reducer, data, initState);\n const {\n sortColumn,\n sortDirection,\n tableData,\n } = state;\n\n useEffect(() => {\n dispatch({ type: 'DATA_CHANGE', data });\n }, [dispatch, data]);\n\n const handleRowClick = (id: string) => () => {\n if (onRowClick) onRowClick(id);\n };\n\n return (\n <>\n
    \n ) => dispatch({\n type: 'CHANGE_SEARCH',\n data,\n columns,\n search: e.target.value,\n }),\n }}\n placeholder=\"Free text search\"\n />\n
    \n\n \n\n \n \n {columns.map(({ id, header, ...tableHeaderCellProps }) => (\n dispatch({ type: 'CHANGE_SORT', columns, column: id })}\n {...tableHeaderCellProps}\n >\n { header }\n \n ))}\n \n \n\n \n {tableData.map((d: TableData) => (\n \n {columns.map(({ id, accessor }) => (\n {d[accessor]}\n ))}\n \n ))}\n \n\n \n \n Showing {tableData.length} of {data.length} organizations\n \n \n\n
    \n \n );\n};\n\nexport default CustomTable;\n\nconst TableRow = styled(Table.Row)`\n &:hover {\n cursor: pointer;\n }\n`;\n","import React, { FC, useEffect } from 'react';\nimport {\n Checkbox,\n Form,\n Grid,\n} from 'semantic-ui-react';\nimport { useHistory } from 'react-router-dom';\nimport { Filters } from '../types';\n\ntype Props = {\n filters: Filters,\n};\n\nconst INCOMING_FILTERS = 'INCOMING_FILTERS';\nconst FILTERING_STATUS = 'FILTERING_STATUS';\nconst PAYMENT_METHOD = 'PAYMENT_METHOD';\nconst PRODUCTION_ACCESS = 'PRODUCTION_ACCESS';\n\nexport const reducer = (state: any, action: any) => {\n const history = useHistory();\n\n switch (action.type) {\n case INCOMING_FILTERS: {\n return {\n ...action.filters,\n };\n }\n case FILTERING_STATUS: {\n if (action.filteringStatus.checked === false) {\n history.push('/organizations?filter=false&paymentMethod=all&productionAccess=false');\n } else if (action.filteringStatus.checked === true) {\n history.push('/organizations?filter=true&paymentMethod=all&productionAccess=false');\n }\n return {\n ...state,\n };\n }\n case PAYMENT_METHOD: {\n switch (action.selectedPaymentMethod) {\n case 'all':\n history.push(`/organizations?filter=true&paymentMethod=all&productionAccess=${state.productionAccess}`);\n break;\n case 'invoice':\n history.push(`/organizations?filter=true&paymentMethod=invoice&productionAccess=${state.productionAccess}`);\n break;\n case 'wallet':\n history.push(`/organizations?filter=true&paymentMethod=wallet&productionAccess=${state.productionAccess}`);\n break;\n default:\n throw new Error('Filtering: invalid paymentMethod');\n }\n\n return {\n ...state,\n };\n }\n case PRODUCTION_ACCESS: {\n if (action.production.checked === false) {\n history.push(`/organizations?filter=true&paymentMethod=${state.selectedPaymentMethod}&productionAccess=false`);\n } else if (action.production.checked === true) {\n history.push(`/organizations?filter=true&paymentMethod=${state.selectedPaymentMethod}&productionAccess=true`);\n }\n\n return {\n ...state,\n };\n }\n default:\n return state;\n }\n};\n\nexport const Filtering: FC = ({ filters }) => {\n const [state, dispatch] = React.useReducer(reducer, filters);\n\n useEffect(() => {\n dispatch({ type: INCOMING_FILTERS, filters });\n }, [dispatch, filters]);\n\n return (\n
    \n \n \n \n Enable filtering}\n onChange={(e, filteringStatus) => dispatch({ type: FILTERING_STATUS, filteringStatus })}\n />\n \n \n
    \n \n Payment Method\n \n \n dispatch({ type: PAYMENT_METHOD, selectedPaymentMethod: selected.value })}\n />\n \n \n dispatch({ type: PAYMENT_METHOD, selectedPaymentMethod: selected.value })}\n />\n \n \n dispatch({ type: PAYMENT_METHOD, selectedPaymentMethod: selected.value })}\n />\n \n
    \n
    \n \n Production access only}\n checked={state.productionAccess}\n onChange={(e, production) => dispatch({ type: PRODUCTION_ACCESS, production })}\n />\n \n
    \n
    \n
    \n );\n};\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { format } from 'date-fns';\nimport { fi } from 'date-fns/locale';\nimport { Grid, SemanticWIDTHS } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { selectOrganizations, selectCreditAccounts } from '../selectors';\nimport { runSaga } from '../../util';\nimport fetchOrganizations from '../sagas/fetchOrganization';\nimport fetchCreditAccounts from '../sagas/fetchCreditAccounts';\nimport { isFetching } from '../../requests/selectors';\nimport Navbar from '../../app/components/Navbar';\nimport LoaderOverlay from '../../app/components/LoaderOverlay';\nimport Table from '../../app/components/Table';\nimport type { StoreState } from '../../state/types';\nimport HslButton from '../../forms/components/HslButton';\nimport { Filtering } from './Filtering';\nimport { AdminOrganization, Filters } from '../types';\nimport { CreditAccount } from '../../credit/types';\n\nconst getFilters = (): Filters => {\n const enabledParam = new URLSearchParams(window.location.search).get('filter');\n const selectedPaymentMethodParam = new URLSearchParams(window.location.search).get('paymentMethod');\n const productionAccessParam = new URLSearchParams(window.location.search).get('productionAccess');\n\n if (!enabledParam || !selectedPaymentMethodParam || !productionAccessParam) {\n return {\n enabled: false,\n selectedPaymentMethod: 'all',\n productionAccess: false,\n };\n }\n\n return {\n enabled: enabledParam === 'true',\n selectedPaymentMethod: selectedPaymentMethodParam as string,\n productionAccess: productionAccessParam === 'true',\n };\n};\n\nconst formatDisplayAdminOrganizations = (organizations: AdminOrganization[], creditAccounts: CreditAccount[]) : AdminOrganization[] => {\n const normalized = organizations.map((organization) => {\n const creditAccount = creditAccounts.find((ca) => ca.organizationId === organization.id);\n const displayOrganization = { ...organization };\n displayOrganization.productionAccess = organization.contractApis?.includes('public') ? 'X' : '' || '';\n displayOrganization.createdAtDisplay = organization.createdAt ? format(new Date(organization.createdAt), 'Pp', { locale: fi }) : '';\n displayOrganization.updatedAtDisplay = organization.updatedAt ? format(new Date(organization.updatedAt), 'Pp', { locale: fi }) : '';\n displayOrganization.hslCustomerId = creditAccount?.hslCustomerId as string | undefined;\n displayOrganization.referenceCode = creditAccount?.referenceCode;\n return displayOrganization;\n });\n\n return normalized as AdminOrganization[];\n};\n\nconst filterOrganizations = (filters: Filters, organizations: AdminOrganization[]): AdminOrganization[] => {\n let filtered = [...organizations];\n\n if (filters.selectedPaymentMethod.toLocaleLowerCase() !== 'all') {\n filtered = filtered.filter((organization) => organization.paymentMethod?.toLocaleLowerCase() === filters.selectedPaymentMethod?.toLocaleLowerCase());\n }\n if (filters.productionAccess) filtered = filtered.filter((organization) => organization.productionAccess?.toLocaleLowerCase() === 'x');\n\n return filtered;\n};\n\nconst Organizations = () => {\n const history = useHistory();\n let organizations = useSelector(selectOrganizations) as AdminOrganization[];\n const creditAccounts = useSelector(selectCreditAccounts);\n let isLoading = useSelector((state: StoreState) => isFetching(state, 'organization/get'));\n isLoading = useSelector((state: StoreState) => isFetching(state, 'creditAccounts/get'));\n\n useEffect(() => {\n runSaga(fetchCreditAccounts);\n }, []);\n useEffect(() => {\n runSaga(fetchOrganizations);\n }, []);\n\n organizations = formatDisplayAdminOrganizations(organizations, creditAccounts);\n\n const filters = getFilters();\n if (filters && filters.enabled) {\n organizations = filterOrganizations(filters, organizations);\n }\n\n organizations = organizations.sort((org1, org2) => new Date(org2.createdAt as string).getTime() - new Date(org1.createdAt as string).getTime());\n\n organizations.forEach((org) => { console.log(`${org.createdAt} - ${org.createdAtDisplay}`); });\n\n const selectAsActive = (id: string) => {\n localStorage.setItem('activeOrganization', id);\n history.push('/organization');\n };\n\n const nameWidth: SemanticWIDTHS = 3;\n const idWidth: SemanticWIDTHS = 4;\n const customerNumberWidth: SemanticWIDTHS = 3;\n const referenceCodeWidth: SemanticWIDTHS = 4;\n const paymentMethodWidth: SemanticWIDTHS = 2;\n const productionAccessWidth: SemanticWIDTHS = 2;\n const createdAtWidth: SemanticWIDTHS = 2;\n const createdByWidth: SemanticWIDTHS = 2;\n const updatedAtWidth: SemanticWIDTHS = 2;\n const updatedByWidth: SemanticWIDTHS = 2;\n const columns = [\n {\n id: 'name',\n header: 'Name',\n accessor: 'name',\n width: nameWidth,\n },\n {\n id: 'id',\n header: 'Organization ID',\n accessor: 'id',\n width: idWidth,\n },\n {\n id: 'hslCustomerId',\n header: 'Customer number',\n accessor: 'hslCustomerId',\n width: customerNumberWidth,\n },\n {\n id: 'referenceCode',\n header: 'Reference code',\n accessor: 'referenceCode',\n width: referenceCodeWidth,\n },\n {\n id: 'productionAccess',\n header: 'Production access',\n accessor: 'productionAccess',\n width: productionAccessWidth,\n },\n {\n id: 'paymentMethod',\n header: 'Payment method',\n accessor: 'paymentMethod',\n width: paymentMethodWidth,\n },\n {\n id: 'createdAtDisplay',\n header: 'Created at',\n accessor: 'createdAtDisplay',\n width: createdAtWidth,\n },\n {\n id: 'createdBy',\n header: 'Created by',\n accessor: 'createdBy',\n width: createdByWidth,\n },\n {\n id: 'updatedAtDisplay',\n header: 'Updated at',\n accessor: 'updatedAtDisplay',\n width: updatedAtWidth,\n },\n {\n id: 'updatedBy',\n header: 'Updated by',\n accessor: 'updatedBy',\n width: updatedByWidth,\n },\n ];\n\n return (\n <>\n \n \n
    \n \n\n \n \n

    Organizations

    \n
    \n \n Create new\n \n
    \n\n \n \n \n \n \n \n\n
    \n
    \n \n );\n};\n\nconst Main = styled.main`\n padding-left: 2rem;\n padding-right: 2rem;\n`;\n\nexport default Organizations;\n","import axios from 'axios';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default function acceptInvite(inviteToken: string) {\n return axios.put(`${authBaseUrl}/acceptInvite`, {\n inviteToken,\n }, {\n withCredentials: true,\n });\n}\n","import callAcceptInvite from '../api/acceptInvite';\nimport { callApi } from '../../util';\n\nexport default function* acceptInvite(token: string) {\n yield callApi('organization/acceptInvite::SILENT', callAcceptInvite, token);\n}\n","import React, { Component } from 'react';\nimport { AxiosError } from 'axios';\nimport { compose } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { parse } from 'query-string';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport LoaderOverlay from '../../app/components/LoaderOverlay';\nimport acceptInvite from '../sagas/acceptInvite';\nimport { publicUrl } from '../../util/constants';\nimport Toast from '../../app/components/Toast';\nimport { generateLoginUrl, runSaga } from '../../util';\nimport { isFetching } from '../../requests/selectors';\nimport authenticate from '../../auth/sagas/authenticate';\nimport { selectLoggedIn } from '../../auth/selectors';\nimport type { StoreState } from '../../state/types';\n\ntype Props = {\n isLoggedIn: boolean;\n loggingIn: boolean;\n isFetching?: boolean;\n acceptingInvite: boolean;\n location?: any;\n history?: any;\n};\n\ntype State = {\n inviteFailed: string;\n inviteSuccess: boolean;\n toastTTL: number;\n};\n\nclass AcceptInvitePage extends Component {\n state = {\n inviteFailed: '',\n inviteSuccess: false,\n toastTTL: 4,\n };\n\n interval: NodeJS.Timer | undefined;\n\n async componentDidMount() {\n const query = parse(this.props.location.search);\n\n if (!query.state) {\n this.props.history.push('/');\n }\n\n try {\n if (query.code) {\n await runSaga(authenticate, query.code, `${publicUrl}/invitation`);\n }\n await runSaga(acceptInvite, query.state);\n this.setState({\n inviteSuccess: true,\n });\n this.interval = setInterval(() => (this.state.toastTTL\n ? this.setState((prevState: { toastTTL: number; }) => ({ toastTTL: prevState.toastTTL - 1 }))\n : this.props.history.push('/')), 1000);\n } catch (e) {\n const error = e as AxiosError;\n let errorMessage = error?.response?.data;\n\n switch (errorMessage) {\n case 'NO_INVITATION_PENDING':\n errorMessage = 'No invitation found for the email address.';\n break;\n case 'INVITE_TOKEN_INVALID':\n errorMessage = 'Invalid token for the invitation.';\n break;\n case 'INVITE_TOKEN_EXPIRED':\n errorMessage = 'Invitation has expired.';\n break;\n default:\n window.location.href = generateLoginUrl({\n customState: query.state as string || '',\n redirectUri: `${publicUrl}/invitation`,\n });\n break;\n }\n this.setState({\n inviteFailed: errorMessage,\n });\n }\n }\n\n componentWillUnmount() {\n if (this.interval) clearInterval(this.interval);\n }\n\n render() {\n let loaderMessage;\n const {\n loggingIn,\n acceptingInvite,\n } = this.props;\n\n if (loggingIn) {\n loaderMessage = 'Authenticating...';\n }\n\n if (acceptingInvite) {\n loaderMessage = 'Accepting invitation...';\n }\n\n return (\n
    \n { this.state.inviteFailed &&

    {this.state.inviteFailed}

    }\n\n
    \n \n { this.state.inviteSuccess && }\n
    \n
    \n );\n }\n}\n\nexport default compose(withRouter, connect((state: StoreState): Props => ({\n isLoggedIn: selectLoggedIn(state),\n acceptingInvite: isFetching(state, 'organization/acceptInvite::SILENT'),\n loggingIn: isFetching(state, 'authenticate'),\n})))(AcceptInvitePage);\n\nconst FailedMessage = styled.div`\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n`;\n","import { Route } from 'react-router-dom';\nimport userIsAuthenticated from '../routes/guards/UserIsAuthenticated';\nimport OrganizationPage from './components/OrganizationPage';\nimport OrganizationSignup from './components/OrganizationSignup';\nimport Organizations from './components/Organizations';\nimport OrganizationsAdmin from './components/OrganizationsAdmin';\nimport AcceptInvitePage from './components/AcceptInvitePage';\nimport { adminMode } from '../util/constants';\n\n// @ts-ignore\nconst Orgs = adminMode ? userIsAuthenticated(OrganizationsAdmin) : userIsAuthenticated(Organizations);\n// @ts-ignore\nconst Org = userIsAuthenticated(OrganizationPage);\n// @ts-ignore\nconst CreateOrg = userIsAuthenticated(OrganizationSignup);\n\nexport default [\n ,\n // @ts-ignore\n ,\n ,\n ,\n];\n","import { Grid } from 'semantic-ui-react';\nimport styled from 'styled-components';\nimport { portalPrivacyPolicyFI, portalPrivacyPolicyEN } from '../../docs/constants';\n\nconst Footer = () => (\n \n \n \n \n

    Contact information

    \n \n
    \n

    Risto Laine

    \n

    Commercial

    \n

    risto.k.laine@hsl.fi

    \n
    \n
    \n

    Katja Nyman

    \n

    Technical

    \n

    katja.nyman@hsl.fi

    \n
    \n
    \n
    \n \n

    Terms of Service

    \n \n \n \n
    \n
    \n
    \n
    \n);\n\nexport default Footer;\n\nconst FooterWrap = styled.footer`\n background: var(--hsl-footer-background);\n margin-top: 30px;\n padding: 40px 0 10px;\n\n & p,\n & h4 {\n font-family: var(--font-header-light);\n color: var(--black);\n }\n\n & p {\n font-size: 18px !important;\n margin: 0 0 3px !important;\n }\n\n & h4 {\n font-size: 18px;\n margin: 0 0 30px;\n }\n`;\n\nconst FooterBlock = styled.div`\n & div {\n width: 100%;\n margin: 0 0 30px;\n }\n @media (min-width: 768px) {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n }\n`;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Grid, Button } from 'semantic-ui-react';\nimport Navbar from '../../app/components/Navbar';\nimport Footer from '../../app/components/Footer';\n\nclass Dashboard extends Component {\n logout = () => this.props.logout();\n\n render() {\n return (\n
    \n \n\n \n \n \n

    Welcome to Dashboard!

    \n \n
    \n
    \n
    \n\n
    \n
    \n );\n }\n}\n\nexport default connect(undefined, (dispatch) => ({\n logout: () => dispatch({\n type: 'LOGOUT',\n }),\n}))(Dashboard);\n","import { Route } from 'react-router-dom';\nimport userIsAuthenticated from '../routes/guards/UserIsAuthenticated';\nimport Dashboard from './components/Dashboard';\n\n// @ts-ignore\nconst Dash = userIsAuthenticated(Dashboard);\n\nexport default [];\n","import type { StoreState } from '../state/types';\nimport type { User } from './types';\n\nexport const selectUser = (state: StoreState): User | undefined => {\n if (!state?.user) return undefined;\n return (Object.keys(state.user).length ? state.user as User : undefined);\n};\n","import type { InjectedFormProps } from 'redux-form';\nimport { Field } from 'redux-form';\nimport { Grid } from 'semantic-ui-react';\nimport InputField from '../../forms/components/InputField';\nimport { required, minLength4 } from '../../forms/helpers';\nimport { asForm } from '../../util';\nimport Toast from '../../app/components/Toast';\n\ntype Props = {\n onSubmit: (values: any) => any;\n submitErrors: any;\n initWithValues: () => any;\n};\n\nconst UserForm = ({\n handleSubmit,\n submitFailed,\n onSubmit,\n submitErrors,\n initWithValues,\n submitSucceeded,\n}: InjectedFormProps & Props) => (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n);\n\nexport default asForm('userForm')(UserForm);\n","import axios from 'axios';\nimport type { UserResponse } from '../types';\nimport { authBaseUrl } from '../../util/constants';\n\nexport default async function fetchUser(): Promise {\n const URL = `${authBaseUrl}/user`;\n const {\n data,\n }: {\n data: {\n user: UserResponse;\n };\n } = await axios.get(URL, {\n withCredentials: true,\n });\n return data;\n}\n","import 'redux-saga';\nimport callFetchUser from '../api/fetchUser';\nimport { setState, callApi } from '../../util';\n\nexport default function* fetchUser() {\n // @ts-ignore\n const user = yield callApi('user/get', callFetchUser);\n yield setState('user', (state) => ({\n ...state,\n ...user,\n }));\n}\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Grid } from 'semantic-ui-react';\nimport { selectUser } from '../selectors';\nimport UserForm from './UserForm';\nimport { runSaga } from '../../util';\nimport fetchUser from '../sagas/fetchUser';\nimport type { User } from '../types';\nimport { isFetching } from '../../requests/selectors';\nimport Navbar from '../../app/components/Navbar';\nimport { openIdConnectUrl } from '../../util/constants';\nimport LoaderOverlay from '../../app/components/LoaderOverlay';\nimport type { StoreState } from '../../state/types';\n\ntype Props = {\n user: User | null | undefined;\n isFetching: boolean;\n};\n\nclass UserPage extends Component {\n componentDidMount() {\n if (!this.props.user) {\n runSaga(fetchUser);\n }\n }\n\n submitEdit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n };\n\n render() {\n const uname = this.props.user && (this.props.user.username || '');\n return (\n
    \n \n \n
    \n \n \n \n

    User Information

    \n { /* @ts-ignore */}\n \n
    \n
    \n \n \n Change Password\n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default compose(connect((state: StoreState): any => ({\n user: selectUser(state),\n isFetching: isFetching(state, 'user/get'),\n})))(UserPage);\n","import { Route } from 'react-router-dom';\nimport UserPage from './components/UserPage';\nimport userIsAuthenticated from '../routes/guards/UserIsAuthenticated';\n\n// @ts-ignore\nconst User = userIsAuthenticated(UserPage);\n\nexport default [];\n","import { Link } from 'react-router-dom';\nimport { Grid, List } from 'semantic-ui-react';\nimport { Helmet } from 'react-helmet';\nimport styled from 'styled-components';\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper';\nimport Navbar from '../../app/components/Navbar';\nimport {\n portalPrivacyPolicyFI,\n portalPrivacyPolicyEN,\n authorisationsUiIntsructionsEN,\n pricesUrl,\n autoRenewingFI,\n autoRenewingEN,\n cancellationAndRefundEN,\n checklistFI,\n checklistEN,\n cancellingTermsFI,\n testUsersEN,\n tarmo,\n} from '../constants';\nimport Footer from '../../app/components/Footer';\nimport { selectLoggedIn } from '../../auth/selectors';\nimport type { StoreState } from '../../state/types';\n\nconst InfoPage = () => {\n const hasPermission = connectedAuthWrapper({\n authenticatedSelector: (state: StoreState) => !!selectLoggedIn(state),\n wrapperDisplayName: 'UserHasAccessToTestUsers',\n });\n const ShowTestUsers = hasPermission(() => (\n \n Test users for Sandbox environment (PDF)\n \n ));\n return (\n \n \n HSL - OpenMaaS Documentation\n \n \n\n \n
    \n \n
    \n \n \n

    Suomeksi

    \n
    \n \n HSL OpenMaaS -tietosuojaseloste (PDF)\n \n \n Muistilista rajapintasopimusta tekeville (PDF)\n \n \n Lippujen peruutusehdot (PDF)\n \n \n Jatkuva säästötilaus (PDF)\n \n \n Tariffi- ja myyntiohje (PDF)\n \n
    \n \n \n

    In English

    \n
    \n \n HSL OpenMaaS privacy statement (PDF)\n \n \n HSL Authorisations UI instructions (PDF)\n \n \n Checklist for new OpenMaaS API users (PDF)\n \n \n Auto-renewing saver subscription (PDF)\n \n \n Ticket change, cancellation and refund terms (PDF)\n \n { /* @ts-ignore */}\n \n
    \n \n \n

    Public API documentation

    \n
    \n \n \n Ticket API v4.1\n Download\n \n \n \n \n Credit API v1\n Download\n \n \n \n \n User API v1\n Download\n \n \n \n \n Supersaver API v1\n Download\n \n \n
    \n \n \n

    Pricing

    \n
    \n \n HSL OpenMaaS Pricelist (JSON)\n \n
    \n
    \n
    \n
    \n