@entur-partner/app-shell 3.0.12 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.cjs.development.js","sources":["../src/authReducer.tsx","../src/Auth.tsx","../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx"],"sourcesContent":["import { User } from '@entur-partner/micro-frontend';\n\nexport type AuthStatus =\n | 'AUTHENTICATING'\n | 'AUTHENTICATED'\n | 'NOT_AUTHENTICATED'\n | 'ERROR';\n\nexport type AuthState =\n | {\n status: AuthStatus;\n user?: User;\n error?: Error;\n }\n | {\n status: 'AUTHENTICATED';\n user: User;\n }\n | {\n status: 'ERROR';\n error: Error;\n };\n\ntype AuthEvent =\n | {\n type: 'AUTHENTICATED';\n data: {\n user: User;\n };\n }\n | {\n type: 'LOGOUT';\n }\n | {\n type: 'ERROR';\n error: Error;\n }\n | {\n type: 'NOT_AUTHENTICATED';\n };\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\nexport function authReducer(state: AuthState, event: AuthEvent): AuthState {\n switch (event.type) {\n case 'AUTHENTICATED':\n return {\n status: 'AUTHENTICATED',\n user: event.data.user,\n };\n case 'LOGOUT':\n return initialState;\n case 'ERROR':\n return {\n error: event.error,\n status: 'ERROR',\n };\n case 'NOT_AUTHENTICATED':\n return {\n ...state,\n status: 'NOT_AUTHENTICATED',\n };\n default:\n return state;\n }\n}\n","import React, { FC, useState, useEffect, useContext, useReducer } from 'react';\nimport createAuth0Client, {\n Auth0ClientOptions,\n Auth0Client,\n GetTokenSilentlyOptions,\n} from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { authReducer, AuthState, AuthStatus } from './authReducer';\nimport { Auth0User, DecorateUserFn } from './UserTypes';\n\nconst POST_LOGIN_ROUTE_KEY = '@entur-partner:post-login-route';\nconst LOGIN_LAST_RETRY = '@entur-partner:last-login-retry';\n\nconst redirect = (pathname = '/') =>\n window.history.replaceState({}, document.title, pathname); // TODO: replace with react-router history\n\ninterface AuthContextType {\n status: AuthStatus;\n user?: User;\n error?: Error;\n logout: () => void;\n login: (redirectUri?: string) => void;\n getToken: () => Promise<string>;\n auth0Client?: Auth0Client;\n}\n\nexport const Auth0Context = React.createContext<AuthContextType | undefined>(\n undefined\n);\n\nexport const useAuth = () => {\n const auth = useContext(Auth0Context);\n assertIsDefined(\n auth,\n 'A `<Auth0Provider>` component needs to be higher up in the component hierarchy.'\n );\n return auth;\n};\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\ninterface AuthProviderProps extends Auth0ClientOptions {\n decorateUser: DecorateUserFn;\n}\nexport const AuthProvider: FC<AuthProviderProps> = ({\n children,\n decorateUser,\n ...initOptions\n}) => {\n const [state, dispatch] = useReducer(authReducer, initialState);\n const [auth0Client, setAuth0] = useState<Auth0Client | undefined>();\n\n useEffect(() => {\n const initAuth0 = async () => {\n const client = await createAuth0Client(initOptions);\n setAuth0(client);\n\n if (window.location.search.includes('code=')) {\n await client.handleRedirectCallback();\n const route = localStorage.getItem(POST_LOGIN_ROUTE_KEY);\n localStorage.removeItem(POST_LOGIN_ROUTE_KEY);\n const postLoginRoute = route || '/';\n redirect(postLoginRoute);\n }\n\n const isAuthenticated = await client.isAuthenticated();\n\n if (isAuthenticated) {\n const auth0User = (await client.getUser()) as Auth0User;\n const token = await client.getTokenSilently();\n const user = await decorateUser(auth0User, token);\n\n dispatch({ type: 'AUTHENTICATED', data: { user } });\n } else {\n dispatch({ type: 'NOT_AUTHENTICATED' });\n }\n };\n\n initAuth0().catch(async (error) => {\n try {\n const lastRetryEpochSeconds = parseInt(\n localStorage.getItem(LOGIN_LAST_RETRY) ?? '0'\n );\n const nowEpochSeconds = Math.floor(Date.now() / 1000);\n const timeSinceLastRetry = nowEpochSeconds - lastRetryEpochSeconds;\n const minimumTimeForRetry = 120;\n\n // Has there been more than x seconds since last retry?\n if (timeSinceLastRetry >= minimumTimeForRetry) {\n localStorage.setItem(LOGIN_LAST_RETRY, nowEpochSeconds.toString());\n redirect('/');\n await initAuth0();\n } else {\n throw error;\n }\n } catch {\n dispatch({ type: 'ERROR', error });\n }\n });\n // eslint-disable-next-line\n }, []);\n\n const logout = () => {\n assertIsDefined(auth0Client);\n const { protocol, hostname, port } = window.location;\n auth0Client.logout({\n returnTo: `${protocol}//${hostname}:${port}`,\n });\n };\n\n const login = async (redirectUri = window.location.origin) => {\n assertIsDefined(auth0Client);\n\n const { location } = window;\n localStorage.setItem(\n POST_LOGIN_ROUTE_KEY,\n `${location.pathname}${location.search}`\n );\n auth0Client.loginWithRedirect({\n redirect_uri: redirectUri,\n });\n };\n\n const getToken = async (options?: GetTokenSilentlyOptions) => {\n assertIsDefined(auth0Client);\n return auth0Client.getTokenSilently(options);\n };\n\n return (\n <Auth0Context.Provider\n value={{\n ...state,\n auth0Client,\n logout,\n getToken,\n login,\n }}\n >\n {children}\n </Auth0Context.Provider>\n );\n};\n","import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect } from 'react';\nimport { Loader } from '@entur/loader';\nimport { BannerAlertBox } from '@entur/alert';\nimport { space } from '@entur/tokens';\nimport { Paragraph, Link, CodeText } from '@entur/typography';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Environment } from '@entur-partner/common';\n\nimport { AuthProvider, useAuth } from './Auth';\nimport { DecorateUserFn } from './UserTypes';\nimport { EnvironmentBanner } from './EnvironmentBanner';\n\nexport interface AppShellValues {\n logout: () => void;\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n redirectUri?: string;\n children: (options: AppShellValues) => ReactNode;\n}\n\nconst Login: FC<{ redirectUri?: string }> = ({ redirectUri }) => {\n const { login } = useAuth();\n useEffect(() => {\n login(redirectUri);\n }, [login, redirectUri]);\n return null;\n};\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, redirectUri }) => {\n const { status, user, error, logout, getToken } = useAuth();\n\n switch (status) {\n case 'NOT_AUTHENTICATED':\n return <Login redirectUri={redirectUri} />;\n case 'AUTHENTICATED':\n assertIsDefined(user);\n return (\n <>\n {children({\n user,\n logout,\n getToken,\n })}\n </>\n );\n case 'AUTHENTICATING':\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n case 'ERROR':\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the\n problem persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to\n get it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n default:\n return null;\n }\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n redirectUri,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <AuthProvider\n audience={audience}\n domain={domain}\n client_id={clientId}\n decorateUser={decorateUser}\n >\n <Authenticate redirectUri={redirectUri}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </AuthProvider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["initialState","status","authReducer","state","event","type","user","data","error","POST_LOGIN_ROUTE_KEY","LOGIN_LAST_RETRY","redirect","pathname","window","history","replaceState","document","title","Auth0Context","React","createContext","undefined","useAuth","auth","useContext","assertIsDefined","AuthProvider","children","decorateUser","initOptions","_excluded","useReducer","dispatch","useState","auth0Client","setAuth0","useEffect","initAuth0","createAuth0Client","client","location","search","includes","handleRedirectCallback","route","localStorage","getItem","removeItem","postLoginRoute","isAuthenticated","getUser","auth0User","getTokenSilently","token","lastRetryEpochSeconds","parseInt","nowEpochSeconds","Math","floor","Date","now","timeSinceLastRetry","minimumTimeForRetry","setItem","toString","logout","protocol","hostname","port","returnTo","login","redirectUri","origin","loginWithRedirect","redirect_uri","getToken","options","createElement","Provider","value","EnvironmentBanner","environment","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","Login","Authenticate","Fragment","Loader","marginTop","space","extraLarge9","process","console","BannerAlertBox","variant","maxWidth","margin","Paragraph","Link","href","CodeText","AppShell","audience","domain","clientId","client_id","params","Environment","Production","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","ex","preventDefault","defaultPrevented","button","MenuContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useMenu","useMFNavigation","MenuProvider","groups","setGroups","navFuncs","setNavFuncs","useCallback","newItems","prevState","navigation","prev","ORGANISATION_STORAGE_KEY","organisationStorage","get","set","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","OrganisationsError","message","Error","OrganisationSelector","getOrganisations","onChange","organisations","setOrganisations","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}
1
+ {"version":3,"file":"app-shell.cjs.development.js","sources":["../src/authReducer.tsx","../src/Auth.tsx","../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx"],"sourcesContent":["import { User } from '@entur-partner/micro-frontend';\n\nexport type AuthStatus =\n | 'AUTHENTICATING'\n | 'AUTHENTICATED'\n | 'NOT_AUTHENTICATED'\n | 'ERROR';\n\nexport type AuthState =\n | {\n status: AuthStatus;\n user?: User;\n error?: Error;\n }\n | {\n status: 'AUTHENTICATED';\n user: User;\n }\n | {\n status: 'ERROR';\n error: Error;\n };\n\ntype AuthEvent =\n | {\n type: 'AUTHENTICATED';\n data: {\n user: User;\n };\n }\n | {\n type: 'LOGOUT';\n }\n | {\n type: 'ERROR';\n error: Error;\n }\n | {\n type: 'NOT_AUTHENTICATED';\n };\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\nexport function authReducer(state: AuthState, event: AuthEvent): AuthState {\n switch (event.type) {\n case 'AUTHENTICATED':\n return {\n status: 'AUTHENTICATED',\n user: event.data.user,\n };\n case 'LOGOUT':\n return initialState;\n case 'ERROR':\n return {\n error: event.error,\n status: 'ERROR',\n };\n case 'NOT_AUTHENTICATED':\n return {\n ...state,\n status: 'NOT_AUTHENTICATED',\n };\n default:\n return state;\n }\n}\n","import React, { FC, useState, useEffect, useContext, useReducer } from 'react';\nimport createAuth0Client, {\n Auth0ClientOptions,\n Auth0Client,\n GetTokenSilentlyOptions,\n} from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { authReducer, AuthState, AuthStatus } from './authReducer';\nimport { Auth0User, DecorateUserFn } from './UserTypes';\n\nconst POST_LOGIN_ROUTE_KEY = '@entur-partner:post-login-route';\nconst LOGIN_LAST_RETRY = '@entur-partner:last-login-retry';\n\nconst redirect = (pathname = '/') =>\n window.history.replaceState({}, document.title, pathname); // TODO: replace with react-router history\n\ninterface AuthContextType {\n status: AuthStatus;\n user?: User;\n error?: Error;\n logout: () => void;\n login: (redirectUri?: string) => void;\n getToken: () => Promise<string>;\n auth0Client?: Auth0Client;\n}\n\nexport const Auth0Context = React.createContext<AuthContextType | undefined>(\n undefined\n);\n\nexport const useAuth = () => {\n const auth = useContext(Auth0Context);\n assertIsDefined(\n auth,\n 'A `<Auth0Provider>` component needs to be higher up in the component hierarchy.'\n );\n return auth;\n};\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\ninterface AuthProviderProps extends Auth0ClientOptions {\n decorateUser: DecorateUserFn;\n}\nexport const AuthProvider: FC<AuthProviderProps> = ({\n children,\n decorateUser,\n ...initOptions\n}) => {\n const [state, dispatch] = useReducer(authReducer, initialState);\n const [auth0Client, setAuth0] = useState<Auth0Client | undefined>();\n\n useEffect(() => {\n const initAuth0 = async () => {\n const client = await createAuth0Client(initOptions);\n setAuth0(client);\n\n if (window.location.search.includes('code=')) {\n await client.handleRedirectCallback();\n const route = localStorage.getItem(POST_LOGIN_ROUTE_KEY);\n localStorage.removeItem(POST_LOGIN_ROUTE_KEY);\n const postLoginRoute = route || '/';\n redirect(postLoginRoute);\n }\n\n const isAuthenticated = await client.isAuthenticated();\n\n if (isAuthenticated) {\n const auth0User = (await client.getUser()) as Auth0User;\n const token = await client.getTokenSilently();\n const user = await decorateUser(auth0User, token);\n\n dispatch({ type: 'AUTHENTICATED', data: { user } });\n } else {\n dispatch({ type: 'NOT_AUTHENTICATED' });\n }\n };\n\n initAuth0().catch(async (error) => {\n try {\n const lastRetryEpochSeconds = parseInt(\n localStorage.getItem(LOGIN_LAST_RETRY) ?? '0'\n );\n const nowEpochSeconds = Math.floor(Date.now() / 1000);\n const timeSinceLastRetry = nowEpochSeconds - lastRetryEpochSeconds;\n const minimumTimeForRetry = 120;\n\n // Has there been more than x seconds since last retry?\n if (timeSinceLastRetry >= minimumTimeForRetry) {\n localStorage.setItem(LOGIN_LAST_RETRY, nowEpochSeconds.toString());\n redirect('/');\n await initAuth0();\n } else {\n throw error;\n }\n } catch {\n dispatch({ type: 'ERROR', error });\n }\n });\n // eslint-disable-next-line\n }, []);\n\n const logout = () => {\n assertIsDefined(auth0Client);\n const { protocol, hostname, port } = window.location;\n auth0Client.logout({\n returnTo: `${protocol}//${hostname}:${port}`,\n });\n };\n\n const login = async (redirectUri = window.location.origin) => {\n assertIsDefined(auth0Client);\n\n const { location } = window;\n localStorage.setItem(\n POST_LOGIN_ROUTE_KEY,\n `${location.pathname}${location.search}`\n );\n auth0Client.loginWithRedirect({\n redirect_uri: redirectUri,\n });\n };\n\n const getToken = async (options?: GetTokenSilentlyOptions) => {\n assertIsDefined(auth0Client);\n return auth0Client.getTokenSilently(options);\n };\n\n return (\n <Auth0Context.Provider\n value={{\n ...state,\n auth0Client,\n logout,\n getToken,\n login,\n }}\n >\n {children}\n </Auth0Context.Provider>\n );\n};\n","import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect } from 'react';\nimport { Loader } from '@entur/loader';\nimport { BannerAlertBox } from '@entur/alert';\nimport { space } from '@entur/tokens';\nimport { Paragraph, Link, CodeText } from '@entur/typography';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Environment } from '@entur-partner/common';\n\nimport { AuthProvider, useAuth } from './Auth';\nimport { DecorateUserFn } from './UserTypes';\nimport { EnvironmentBanner } from './EnvironmentBanner';\n\nexport interface AppShellValues {\n logout: () => void;\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n redirectUri?: string;\n children: (options: AppShellValues) => ReactNode;\n}\n\nconst Login: FC<{ redirectUri?: string }> = ({ redirectUri }) => {\n const { login } = useAuth();\n useEffect(() => {\n login(redirectUri);\n }, [login, redirectUri]);\n return null;\n};\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, redirectUri }) => {\n const { status, user, error, logout, getToken } = useAuth();\n\n switch (status) {\n case 'NOT_AUTHENTICATED':\n return <Login redirectUri={redirectUri} />;\n case 'AUTHENTICATED':\n assertIsDefined(user);\n return (\n <>\n {children({\n user,\n logout,\n getToken,\n })}\n </>\n );\n case 'AUTHENTICATING':\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n case 'ERROR':\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the\n problem persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to\n get it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n default:\n return null;\n }\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n redirectUri,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <AuthProvider\n audience={audience}\n domain={domain}\n client_id={clientId}\n decorateUser={decorateUser}\n >\n <Authenticate redirectUri={redirectUri}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </AuthProvider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["initialState","status","authReducer","state","event","type","user","data","error","_extends","POST_LOGIN_ROUTE_KEY","LOGIN_LAST_RETRY","redirect","pathname","window","history","replaceState","document","title","Auth0Context","React","createContext","undefined","useAuth","auth","useContext","assertIsDefined","AuthProvider","_ref","children","decorateUser","initOptions","_objectWithoutPropertiesLoose","_excluded","_useReducer","useReducer","dispatch","_useState","useState","auth0Client","setAuth0","useEffect","initAuth0","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","client","route","postLoginRoute","isAuthenticated","auth0User","token","wrap","_callee$","_context","prev","next","createAuth0Client","sent","location","search","includes","handleRedirectCallback","localStorage","getItem","removeItem","getUser","getTokenSilently","stop","apply","arguments","_ref3","_callee2","_localStorage$getItem","lastRetryEpochSeconds","nowEpochSeconds","timeSinceLastRetry","minimumTimeForRetry","_callee2$","_context2","parseInt","Math","floor","Date","now","setItem","toString","t0","_x","logout","_window$location","protocol","hostname","port","returnTo","login","_ref4","_callee3","redirectUri","_window","_callee3$","_context3","origin","loginWithRedirect","redirect_uri","_x2","getToken","_ref5","_callee4","options","_callee4$","_context4","abrupt","_x3","createElement","Provider","value","EnvironmentBanner","environment","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","Login","_useAuth","Authenticate","_useAuth2","Fragment","Loader","marginTop","space","extraLarge9","process","console","BannerAlertBox","variant","maxWidth","margin","Paragraph","Link","href","CodeText","AppShell","audience","domain","clientId","client_id","params","Environment","Production","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","ex","preventDefault","defaultPrevented","button","MenuContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","set","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_inheritsLoose","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","onChange","organisations","setOrganisations","_useLanguage","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.cjs.production.min.js","sources":["../src/authReducer.tsx","../src/Auth.tsx","../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/MicroFrontendLink.tsx","../src/OrganisationSelector.tsx"],"sourcesContent":["import { User } from '@entur-partner/micro-frontend';\n\nexport type AuthStatus =\n | 'AUTHENTICATING'\n | 'AUTHENTICATED'\n | 'NOT_AUTHENTICATED'\n | 'ERROR';\n\nexport type AuthState =\n | {\n status: AuthStatus;\n user?: User;\n error?: Error;\n }\n | {\n status: 'AUTHENTICATED';\n user: User;\n }\n | {\n status: 'ERROR';\n error: Error;\n };\n\ntype AuthEvent =\n | {\n type: 'AUTHENTICATED';\n data: {\n user: User;\n };\n }\n | {\n type: 'LOGOUT';\n }\n | {\n type: 'ERROR';\n error: Error;\n }\n | {\n type: 'NOT_AUTHENTICATED';\n };\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\nexport function authReducer(state: AuthState, event: AuthEvent): AuthState {\n switch (event.type) {\n case 'AUTHENTICATED':\n return {\n status: 'AUTHENTICATED',\n user: event.data.user,\n };\n case 'LOGOUT':\n return initialState;\n case 'ERROR':\n return {\n error: event.error,\n status: 'ERROR',\n };\n case 'NOT_AUTHENTICATED':\n return {\n ...state,\n status: 'NOT_AUTHENTICATED',\n };\n default:\n return state;\n }\n}\n","import React, { FC, useState, useEffect, useContext, useReducer } from 'react';\nimport createAuth0Client, {\n Auth0ClientOptions,\n Auth0Client,\n GetTokenSilentlyOptions,\n} from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { authReducer, AuthState, AuthStatus } from './authReducer';\nimport { Auth0User, DecorateUserFn } from './UserTypes';\n\nconst POST_LOGIN_ROUTE_KEY = '@entur-partner:post-login-route';\nconst LOGIN_LAST_RETRY = '@entur-partner:last-login-retry';\n\nconst redirect = (pathname = '/') =>\n window.history.replaceState({}, document.title, pathname); // TODO: replace with react-router history\n\ninterface AuthContextType {\n status: AuthStatus;\n user?: User;\n error?: Error;\n logout: () => void;\n login: (redirectUri?: string) => void;\n getToken: () => Promise<string>;\n auth0Client?: Auth0Client;\n}\n\nexport const Auth0Context = React.createContext<AuthContextType | undefined>(\n undefined\n);\n\nexport const useAuth = () => {\n const auth = useContext(Auth0Context);\n assertIsDefined(\n auth,\n 'A `<Auth0Provider>` component needs to be higher up in the component hierarchy.'\n );\n return auth;\n};\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\ninterface AuthProviderProps extends Auth0ClientOptions {\n decorateUser: DecorateUserFn;\n}\nexport const AuthProvider: FC<AuthProviderProps> = ({\n children,\n decorateUser,\n ...initOptions\n}) => {\n const [state, dispatch] = useReducer(authReducer, initialState);\n const [auth0Client, setAuth0] = useState<Auth0Client | undefined>();\n\n useEffect(() => {\n const initAuth0 = async () => {\n const client = await createAuth0Client(initOptions);\n setAuth0(client);\n\n if (window.location.search.includes('code=')) {\n await client.handleRedirectCallback();\n const route = localStorage.getItem(POST_LOGIN_ROUTE_KEY);\n localStorage.removeItem(POST_LOGIN_ROUTE_KEY);\n const postLoginRoute = route || '/';\n redirect(postLoginRoute);\n }\n\n const isAuthenticated = await client.isAuthenticated();\n\n if (isAuthenticated) {\n const auth0User = (await client.getUser()) as Auth0User;\n const token = await client.getTokenSilently();\n const user = await decorateUser(auth0User, token);\n\n dispatch({ type: 'AUTHENTICATED', data: { user } });\n } else {\n dispatch({ type: 'NOT_AUTHENTICATED' });\n }\n };\n\n initAuth0().catch(async (error) => {\n try {\n const lastRetryEpochSeconds = parseInt(\n localStorage.getItem(LOGIN_LAST_RETRY) ?? '0'\n );\n const nowEpochSeconds = Math.floor(Date.now() / 1000);\n const timeSinceLastRetry = nowEpochSeconds - lastRetryEpochSeconds;\n const minimumTimeForRetry = 120;\n\n // Has there been more than x seconds since last retry?\n if (timeSinceLastRetry >= minimumTimeForRetry) {\n localStorage.setItem(LOGIN_LAST_RETRY, nowEpochSeconds.toString());\n redirect('/');\n await initAuth0();\n } else {\n throw error;\n }\n } catch {\n dispatch({ type: 'ERROR', error });\n }\n });\n // eslint-disable-next-line\n }, []);\n\n const logout = () => {\n assertIsDefined(auth0Client);\n const { protocol, hostname, port } = window.location;\n auth0Client.logout({\n returnTo: `${protocol}//${hostname}:${port}`,\n });\n };\n\n const login = async (redirectUri = window.location.origin) => {\n assertIsDefined(auth0Client);\n\n const { location } = window;\n localStorage.setItem(\n POST_LOGIN_ROUTE_KEY,\n `${location.pathname}${location.search}`\n );\n auth0Client.loginWithRedirect({\n redirect_uri: redirectUri,\n });\n };\n\n const getToken = async (options?: GetTokenSilentlyOptions) => {\n assertIsDefined(auth0Client);\n return auth0Client.getTokenSilently(options);\n };\n\n return (\n <Auth0Context.Provider\n value={{\n ...state,\n auth0Client,\n logout,\n getToken,\n login,\n }}\n >\n {children}\n </Auth0Context.Provider>\n );\n};\n","import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect } from 'react';\nimport { Loader } from '@entur/loader';\nimport { BannerAlertBox } from '@entur/alert';\nimport { space } from '@entur/tokens';\nimport { Paragraph, Link, CodeText } from '@entur/typography';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Environment } from '@entur-partner/common';\n\nimport { AuthProvider, useAuth } from './Auth';\nimport { DecorateUserFn } from './UserTypes';\nimport { EnvironmentBanner } from './EnvironmentBanner';\n\nexport interface AppShellValues {\n logout: () => void;\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n redirectUri?: string;\n children: (options: AppShellValues) => ReactNode;\n}\n\nconst Login: FC<{ redirectUri?: string }> = ({ redirectUri }) => {\n const { login } = useAuth();\n useEffect(() => {\n login(redirectUri);\n }, [login, redirectUri]);\n return null;\n};\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, redirectUri }) => {\n const { status, user, error, logout, getToken } = useAuth();\n\n switch (status) {\n case 'NOT_AUTHENTICATED':\n return <Login redirectUri={redirectUri} />;\n case 'AUTHENTICATED':\n assertIsDefined(user);\n return (\n <>\n {children({\n user,\n logout,\n getToken,\n })}\n </>\n );\n case 'AUTHENTICATING':\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n case 'ERROR':\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the\n problem persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to\n get it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n default:\n return null;\n }\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n redirectUri,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <AuthProvider\n audience={audience}\n domain={domain}\n client_id={clientId}\n decorateUser={decorateUser}\n >\n <Authenticate redirectUri={redirectUri}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </AuthProvider>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["initialState","status","authReducer","state","event","type","user","data","error","_extends","redirect","pathname","window","history","replaceState","document","title","Auth0Context","React","createContext","undefined","useAuth","auth","useContext","assertIsDefined","AuthProvider","_ref","children","decorateUser","initOptions","_objectWithoutPropertiesLoose","_excluded","_useReducer","useReducer","dispatch","_useState","useState","auth0Client","setAuth0","useEffect","initAuth0","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","client","route","auth0User","token","wrap","_context","prev","next","createAuth0Client","sent","location","search","includes","handleRedirectCallback","localStorage","getItem","removeItem","isAuthenticated","getUser","getTokenSilently","stop","apply","this","arguments","_ref3","_localStorage$getItem","lastRetryEpochSeconds","nowEpochSeconds","_context2","parseInt","Math","floor","Date","now","setItem","toString","t0","_callee2","_x","login","_ref4","redirectUri","_window","_context3","origin","loginWithRedirect","redirect_uri","_callee3","_x2","getToken","_ref5","options","_context4","abrupt","_callee4","_x3","createElement","Provider","value","logout","returnTo","protocol","hostname","port","EnvironmentBanner","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","environment","Login","Authenticate","_useAuth2","Fragment","Loader","marginTop","space","extraLarge9","BannerAlertBox","variant","maxWidth","margin","Paragraph","Link","href","CodeText","MenuContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenu","organisationStorage","get","set","languageStorage","OrganisationContext","LanguageContext","useLanguage","context","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","audience","domain","client_id","clientId","params","Environment","Production","activeLanguage","setLanguage","useLanguageState","language","_useLanguageState","groups","setGroups","navFuncs","_useState2","setNavFuncs","useCallback","newItems","path","prevState","_extends2","_groups$path","navigation","_extends3","navigate","onClick","target","rest","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","organisationId","setOrganisationId","useOrganisationState","Number","_useOrganisationState","getOrganisations","onChange","organisations","setOrganisations","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}
1
+ {"version":3,"file":"app-shell.cjs.production.min.js","sources":["../src/authReducer.tsx","../src/Auth.tsx","../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/MicroFrontendLink.tsx","../src/OrganisationSelector.tsx"],"sourcesContent":["import { User } from '@entur-partner/micro-frontend';\n\nexport type AuthStatus =\n | 'AUTHENTICATING'\n | 'AUTHENTICATED'\n | 'NOT_AUTHENTICATED'\n | 'ERROR';\n\nexport type AuthState =\n | {\n status: AuthStatus;\n user?: User;\n error?: Error;\n }\n | {\n status: 'AUTHENTICATED';\n user: User;\n }\n | {\n status: 'ERROR';\n error: Error;\n };\n\ntype AuthEvent =\n | {\n type: 'AUTHENTICATED';\n data: {\n user: User;\n };\n }\n | {\n type: 'LOGOUT';\n }\n | {\n type: 'ERROR';\n error: Error;\n }\n | {\n type: 'NOT_AUTHENTICATED';\n };\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\nexport function authReducer(state: AuthState, event: AuthEvent): AuthState {\n switch (event.type) {\n case 'AUTHENTICATED':\n return {\n status: 'AUTHENTICATED',\n user: event.data.user,\n };\n case 'LOGOUT':\n return initialState;\n case 'ERROR':\n return {\n error: event.error,\n status: 'ERROR',\n };\n case 'NOT_AUTHENTICATED':\n return {\n ...state,\n status: 'NOT_AUTHENTICATED',\n };\n default:\n return state;\n }\n}\n","import React, { FC, useState, useEffect, useContext, useReducer } from 'react';\nimport createAuth0Client, {\n Auth0ClientOptions,\n Auth0Client,\n GetTokenSilentlyOptions,\n} from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { authReducer, AuthState, AuthStatus } from './authReducer';\nimport { Auth0User, DecorateUserFn } from './UserTypes';\n\nconst POST_LOGIN_ROUTE_KEY = '@entur-partner:post-login-route';\nconst LOGIN_LAST_RETRY = '@entur-partner:last-login-retry';\n\nconst redirect = (pathname = '/') =>\n window.history.replaceState({}, document.title, pathname); // TODO: replace with react-router history\n\ninterface AuthContextType {\n status: AuthStatus;\n user?: User;\n error?: Error;\n logout: () => void;\n login: (redirectUri?: string) => void;\n getToken: () => Promise<string>;\n auth0Client?: Auth0Client;\n}\n\nexport const Auth0Context = React.createContext<AuthContextType | undefined>(\n undefined\n);\n\nexport const useAuth = () => {\n const auth = useContext(Auth0Context);\n assertIsDefined(\n auth,\n 'A `<Auth0Provider>` component needs to be higher up in the component hierarchy.'\n );\n return auth;\n};\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\ninterface AuthProviderProps extends Auth0ClientOptions {\n decorateUser: DecorateUserFn;\n}\nexport const AuthProvider: FC<AuthProviderProps> = ({\n children,\n decorateUser,\n ...initOptions\n}) => {\n const [state, dispatch] = useReducer(authReducer, initialState);\n const [auth0Client, setAuth0] = useState<Auth0Client | undefined>();\n\n useEffect(() => {\n const initAuth0 = async () => {\n const client = await createAuth0Client(initOptions);\n setAuth0(client);\n\n if (window.location.search.includes('code=')) {\n await client.handleRedirectCallback();\n const route = localStorage.getItem(POST_LOGIN_ROUTE_KEY);\n localStorage.removeItem(POST_LOGIN_ROUTE_KEY);\n const postLoginRoute = route || '/';\n redirect(postLoginRoute);\n }\n\n const isAuthenticated = await client.isAuthenticated();\n\n if (isAuthenticated) {\n const auth0User = (await client.getUser()) as Auth0User;\n const token = await client.getTokenSilently();\n const user = await decorateUser(auth0User, token);\n\n dispatch({ type: 'AUTHENTICATED', data: { user } });\n } else {\n dispatch({ type: 'NOT_AUTHENTICATED' });\n }\n };\n\n initAuth0().catch(async (error) => {\n try {\n const lastRetryEpochSeconds = parseInt(\n localStorage.getItem(LOGIN_LAST_RETRY) ?? '0'\n );\n const nowEpochSeconds = Math.floor(Date.now() / 1000);\n const timeSinceLastRetry = nowEpochSeconds - lastRetryEpochSeconds;\n const minimumTimeForRetry = 120;\n\n // Has there been more than x seconds since last retry?\n if (timeSinceLastRetry >= minimumTimeForRetry) {\n localStorage.setItem(LOGIN_LAST_RETRY, nowEpochSeconds.toString());\n redirect('/');\n await initAuth0();\n } else {\n throw error;\n }\n } catch {\n dispatch({ type: 'ERROR', error });\n }\n });\n // eslint-disable-next-line\n }, []);\n\n const logout = () => {\n assertIsDefined(auth0Client);\n const { protocol, hostname, port } = window.location;\n auth0Client.logout({\n returnTo: `${protocol}//${hostname}:${port}`,\n });\n };\n\n const login = async (redirectUri = window.location.origin) => {\n assertIsDefined(auth0Client);\n\n const { location } = window;\n localStorage.setItem(\n POST_LOGIN_ROUTE_KEY,\n `${location.pathname}${location.search}`\n );\n auth0Client.loginWithRedirect({\n redirect_uri: redirectUri,\n });\n };\n\n const getToken = async (options?: GetTokenSilentlyOptions) => {\n assertIsDefined(auth0Client);\n return auth0Client.getTokenSilently(options);\n };\n\n return (\n <Auth0Context.Provider\n value={{\n ...state,\n auth0Client,\n logout,\n getToken,\n login,\n }}\n >\n {children}\n </Auth0Context.Provider>\n );\n};\n","import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect } from 'react';\nimport { Loader } from '@entur/loader';\nimport { BannerAlertBox } from '@entur/alert';\nimport { space } from '@entur/tokens';\nimport { Paragraph, Link, CodeText } from '@entur/typography';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Environment } from '@entur-partner/common';\n\nimport { AuthProvider, useAuth } from './Auth';\nimport { DecorateUserFn } from './UserTypes';\nimport { EnvironmentBanner } from './EnvironmentBanner';\n\nexport interface AppShellValues {\n logout: () => void;\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n redirectUri?: string;\n children: (options: AppShellValues) => ReactNode;\n}\n\nconst Login: FC<{ redirectUri?: string }> = ({ redirectUri }) => {\n const { login } = useAuth();\n useEffect(() => {\n login(redirectUri);\n }, [login, redirectUri]);\n return null;\n};\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, redirectUri }) => {\n const { status, user, error, logout, getToken } = useAuth();\n\n switch (status) {\n case 'NOT_AUTHENTICATED':\n return <Login redirectUri={redirectUri} />;\n case 'AUTHENTICATED':\n assertIsDefined(user);\n return (\n <>\n {children({\n user,\n logout,\n getToken,\n })}\n </>\n );\n case 'AUTHENTICATING':\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n case 'ERROR':\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the\n problem persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to\n get it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n default:\n return null;\n }\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n redirectUri,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <AuthProvider\n audience={audience}\n domain={domain}\n client_id={clientId}\n decorateUser={decorateUser}\n >\n <Authenticate redirectUri={redirectUri}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </AuthProvider>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["initialState","status","authReducer","state","event","type","user","data","error","_extends","redirect","pathname","window","history","replaceState","document","title","Auth0Context","React","createContext","undefined","useAuth","auth","useContext","assertIsDefined","AuthProvider","_ref","children","decorateUser","initOptions","_objectWithoutPropertiesLoose","_excluded","_useReducer","useReducer","dispatch","_useState","useState","auth0Client","setAuth0","useEffect","initAuth0","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","client","route","auth0User","token","wrap","_context","prev","next","createAuth0Client","sent","location","search","includes","handleRedirectCallback","localStorage","getItem","removeItem","isAuthenticated","getUser","getTokenSilently","stop","apply","this","arguments","_ref3","_callee2","_localStorage$getItem","lastRetryEpochSeconds","nowEpochSeconds","_context2","parseInt","Math","floor","Date","now","setItem","toString","t0","_x","login","_ref4","_callee3","redirectUri","_window","_context3","origin","loginWithRedirect","redirect_uri","_x2","getToken","_ref5","_callee4","options","_context4","abrupt","_x3","createElement","Provider","value","logout","_window$location","returnTo","protocol","hostname","port","EnvironmentBanner","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","environment","Login","Authenticate","_useAuth2","Fragment","Loader","marginTop","space","extraLarge9","BannerAlertBox","variant","maxWidth","margin","Paragraph","Link","href","CodeText","MenuContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenu","organisationStorage","get","set","languageStorage","OrganisationContext","LanguageContext","useLanguage","context","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","audience","domain","client_id","clientId","params","Environment","Production","activeLanguage","setLanguage","_useLanguageState","language","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","path","prevState","_extends2","_groups$path","navigation","_extends3","navigate","onClick","target","rest","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","organisationId","setOrganisationId","_useOrganisationState","Number","getOrganisations","onChange","organisations","setOrganisations","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}