@entur-partner/app-shell 4.0.1 → 5.0.1-alpha.0

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","_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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,IAAMA,cAAY,GAAc;AAC9BC,EAAAA,MAAM,EAAE,gBAAA;CACT,CAAA;AAEe,SAAAC,WAAWA,CAACC,KAAgB,EAAEC,KAAgB,EAAA;EAC5D,QAAQA,KAAK,CAACC,IAAI;AAChB,IAAA,KAAK,eAAe;MAClB,OAAO;AACLJ,QAAAA,MAAM,EAAE,eAAe;AACvBK,QAAAA,IAAI,EAAEF,KAAK,CAACG,IAAI,CAACD,IAAAA;OAClB,CAAA;AACH,IAAA,KAAK,QAAQ;AACX,MAAA,OAAON,cAAY,CAAA;AACrB,IAAA,KAAK,OAAO;MACV,OAAO;QACLQ,KAAK,EAAEJ,KAAK,CAACI,KAAK;AAClBP,QAAAA,MAAM,EAAE,OAAA;OACT,CAAA;AACH,IAAA,KAAK,mBAAmB;MACtB,OAAAQ,QAAA,KACKN,KAAK,EAAA;AACRF,QAAAA,MAAM,EAAE,mBAAA;AAAmB,OAAA,CAAA,CAAA;AAE/B,IAAA;AACE,MAAA,OAAOE,KAAK,CAAA;AACf,GAAA;AACH;;;ACvDA,IAAMO,oBAAoB,GAAG,iCAAiC,CAAA;AAC9D,IAAMC,gBAAgB,GAAG,iCAAiC,CAAA;AAE1D,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,QAAQ,EAAA;AAAA,EAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,EAAA;AAARA,IAAAA,QAAQ,GAAG,GAAG,CAAA;AAAA,GAAA;AAAA,EAAA,OAC9BC,MAAM,CAACC,OAAO,CAACC,YAAY,CAAC,EAAE,EAAEC,QAAQ,CAACC,KAAK,EAAEL,QAAQ,CAAC,CAAA;AAAA,CAAA,CAAC;AAYrD,IAAMM,YAAY,gBAAGC,yBAAK,CAACC,aAAa,CAC7CC,SAAS,CACV,CAAA;AAEM,IAAMC,OAAO,GAAG,SAAVA,OAAOA,GAAQ;AAC1B,EAAA,IAAMC,IAAI,GAAGC,gBAAU,CAACN,YAAY,CAAC,CAAA;AACrCO,EAAAA,oBAAe,CACbF,IAAI,EACJ,iFAAiF,CAClF,CAAA;AACD,EAAA,OAAOA,IAAI,CAAA;AACb,CAAC,CAAA;AAED,IAAMxB,YAAY,GAAc;AAC9BC,EAAAA,MAAM,EAAE,gBAAA;CACT,CAAA;AAKM,IAAM0B,YAAY,GAA0B,SAAtCA,YAAYA,CAAAC,IAAA,EAIpB;AAAA,EAAA,IAHHC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,YAAY,GAAAF,IAAA,CAAZE,YAAY;AACTC,IAAAA,WAAW,GAAAC,6BAAA,CAAAJ,IAAA,EAAAK,WAAA,CAAA,CAAA;AAEd,EAAA,IAAAC,WAAA,GAA0BC,gBAAU,CAACjC,WAAW,EAAEF,YAAY,CAAC;AAAxDG,IAAAA,KAAK,GAAA+B,WAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,QAAQ,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AACtB,EAAA,IAAAG,SAAA,GAAgCC,cAAQ,EAA2B;AAA5DC,IAAAA,WAAW,GAAAF,SAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,QAAQ,GAAAH,SAAA,CAAA,CAAA,CAAA,CAAA;AAE5BI,EAAAA,eAAS,CAAC,YAAK;AACb,IAAA,IAAMC,SAAS,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAAC,OAAA,GAAA;AAAA,QAAA,IAAAC,MAAA,EAAAC,KAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,SAAA,EAAAC,KAAA,EAAA/C,IAAA,CAAA;AAAA,QAAA,OAAAuC,mBAAA,EAAA,CAAAS,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OACKC,qCAAiB,CAAC5B,WAAW,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAA7CiB,MAAM,GAAAQ,QAAA,CAAAI,IAAA,CAAA;cACZpB,QAAQ,CAACQ,MAAM,CAAC,CAAA;cAAC,IAEblC,CAAAA,MAAM,CAAC+C,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAAC,OAAO,CAAC,EAAA;AAAAP,gBAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACpCV,MAAM,CAACgB,sBAAsB,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;AAC/Bf,cAAAA,KAAK,GAAGgB,YAAY,CAACC,OAAO,CAACxD,oBAAoB,CAAC,CAAA;AACxDuD,cAAAA,YAAY,CAACE,UAAU,CAACzD,oBAAoB,CAAC,CAAA;cACvCwC,cAAc,GAAGD,KAAK,IAAI,GAAG,CAAA;cACnCrC,QAAQ,CAACsC,cAAc,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA;AAAAM,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,OAGGV,MAAM,CAACG,eAAe,EAAE,CAAA;AAAA,YAAA,KAAA,EAAA;cAAhDA,eAAe,GAAAK,QAAA,CAAAI,IAAA,CAAA;AAAA,cAAA,IAAA,CAEjBT,eAAe,EAAA;AAAAK,gBAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,OACQV,MAAM,CAACoB,OAAO,EAAE,CAAA;AAAA,YAAA,KAAA,EAAA;cAAnChB,SAAS,GAAAI,QAAA,CAAAI,IAAA,CAAA;AAAAJ,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,OACKV,MAAM,CAACqB,gBAAgB,EAAE,CAAA;AAAA,YAAA,KAAA,EAAA;cAAvChB,KAAK,GAAAG,QAAA,CAAAI,IAAA,CAAA;AAAAJ,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,OACQ5B,YAAY,CAACsB,SAAS,EAAEC,KAAK,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA;cAA3C/C,IAAI,GAAAkD,QAAA,CAAAI,IAAA,CAAA;AAEVxB,cAAAA,QAAQ,CAAC;AAAE/B,gBAAAA,IAAI,EAAE,eAAe;AAAEE,gBAAAA,IAAI,EAAE;AAAED,kBAAAA,IAAI,EAAJA,IAAAA;AAAM,iBAAA;AAAA,eAAE,CAAC,CAAA;AAACkD,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,EAAA;AAEpDtB,cAAAA,QAAQ,CAAC;AAAE/B,gBAAAA,IAAI,EAAE,mBAAA;AAAmB,eAAE,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAmD,QAAA,CAAAc,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAvB,OAAA,CAAA,CAAA;OAE3C,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAvBKL,SAASA,GAAA;AAAA,QAAA,OAAAC,KAAA,CAAA4B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAuBd,EAAA,CAAA;IAED9B,SAAS,EAAE,CAAM,OAAA,CAAA,eAAA,YAAA;MAAA,IAAA+B,KAAA,GAAA7B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAA4B,QAAAA,CAAOlE,KAAK,EAAA;QAAA,IAAAmE,qBAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,kBAAA,EAAAC,mBAAA,CAAA;AAAA,QAAA,OAAAlC,mBAAA,EAAA,CAAAS,IAAA,CAAA,SAAA0B,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxB,IAAA,GAAAwB,SAAA,CAAAvB,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAuB,cAAAA,SAAA,CAAAxB,IAAA,GAAA,CAAA,CAAA;AAEpBmB,cAAAA,qBAAqB,GAAGM,QAAQ,CAAAP,CAAAA,qBAAA,GACpCV,YAAY,CAACC,OAAO,CAACvD,gBAAgB,CAAC,KAAA,IAAA,GAAAgE,qBAAA,GAAI,GAAG,CAC9C,CAAA;AACKE,cAAAA,eAAe,GAAGM,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;cAC/CR,kBAAkB,GAAGD,eAAe,GAAGD,qBAAqB,CAAA;cAC5DG,mBAAmB,GAAG,GAAG,CAE/B;cAAA,IACID,EAAAA,kBAAkB,IAAIC,mBAAmB,CAAA,EAAA;AAAAE,gBAAAA,SAAA,CAAAvB,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAC3CO,YAAY,CAACsB,OAAO,CAAC5E,gBAAgB,EAAEkE,eAAe,CAACW,QAAQ,EAAE,CAAC,CAAA;cAClE5E,QAAQ,CAAC,GAAG,CAAC,CAAA;AAACqE,cAAAA,SAAA,CAAAvB,IAAA,GAAA,EAAA,CAAA;cAAA,OACRhB,SAAS,EAAE,CAAA;AAAA,YAAA,KAAA,EAAA;AAAAuC,cAAAA,SAAA,CAAAvB,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,EAAA;AAAA,cAAA,MAEXlD,KAAK,CAAA;AAAA,YAAA,KAAA,EAAA;AAAAyE,cAAAA,SAAA,CAAAvB,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,EAAA;AAAAuB,cAAAA,SAAA,CAAAxB,IAAA,GAAA,EAAA,CAAA;cAAAwB,SAAA,CAAAQ,EAAA,GAAAR,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAGb7C,cAAAA,QAAQ,CAAC;AAAE/B,gBAAAA,IAAI,EAAE,OAAO;AAAEG,gBAAAA,KAAK,EAALA,KAAAA;AAAO,eAAA,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAyE,SAAA,CAAAX,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAI,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;OAEtC,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAgB,EAAA,EAAA;AAAA,QAAA,OAAAjB,KAAA,CAAAF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAAC,EAAA,CAAA,CAAA;AACF;GACD,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,IAAMmB,MAAM,GAAG,SAATA,MAAMA,GAAQ;IAClBjE,oBAAe,CAACa,WAAW,CAAC,CAAA;AAC5B,IAAA,IAAAqD,gBAAA,GAAqC9E,MAAM,CAAC+C,QAAQ;MAA5CgC,QAAQ,GAAAD,gBAAA,CAARC,QAAQ;MAAEC,QAAQ,GAAAF,gBAAA,CAARE,QAAQ;MAAEC,IAAI,GAAAH,gBAAA,CAAJG,IAAI,CAAA;IAChCxD,WAAW,CAACoD,MAAM,CAAC;AACjBK,MAAAA,QAAQ,EAAKH,QAAQ,GAAKC,IAAAA,GAAAA,QAAQ,GAAIC,GAAAA,GAAAA,IAAAA;AACvC,KAAA,CAAC,CAAA;GACH,CAAA;AAED,EAAA,IAAME,KAAK,gBAAA,YAAA;IAAA,IAAAC,KAAA,GAAAtD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAqD,QAAAA,CAAOC,WAAW,EAAA;MAAA,IAAAC,OAAA,EAAAxC,QAAA,CAAA;AAAA,MAAA,OAAAhB,mBAAA,EAAA,CAAAS,IAAA,CAAA,SAAAgD,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA9C,IAAA,GAAA8C,SAAA,CAAA7C,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAX0C,WAAW,KAAA,KAAA,CAAA,EAAA;AAAXA,cAAAA,WAAW,GAAGtF,MAAM,CAAC+C,QAAQ,CAAC2C,MAAM,CAAA;AAAA,aAAA;YACvD9E,oBAAe,CAACa,WAAW,CAAC,CAAA;AAAC8D,YAAAA,OAAA,GAERvF,MAAM,EAAnB+C,QAAQ,GAAAwC,OAAA,CAARxC,QAAQ,CAAA;AAChBI,YAAAA,YAAY,CAACsB,OAAO,CAClB7E,oBAAoB,EACjBmD,EAAAA,GAAAA,QAAQ,CAAChD,QAAQ,GAAGgD,QAAQ,CAACC,MAAQ,CACzC,CAAA;YACDvB,WAAW,CAACkE,iBAAiB,CAAC;AAC5BC,cAAAA,YAAY,EAAEN,WAAAA;AACf,aAAA,CAAC,CAAA;AAAC,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAG,SAAA,CAAAjC,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA6B,QAAA,CAAA,CAAA;KACJ,CAAA,CAAA,CAAA;IAAA,OAXKF,SAAAA,KAAKA,CAAAU,GAAA,EAAA;AAAA,MAAA,OAAAT,KAAA,CAAA3B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;GAWV,EAAA,CAAA;AAED,EAAA,IAAMoC,QAAQ,gBAAA,YAAA;IAAA,IAAAC,KAAA,GAAAjE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgE,QAAAA,CAAOC,OAAiC,EAAA;AAAA,MAAA,OAAAlE,mBAAA,EAAA,CAAAS,IAAA,CAAA,SAAA0D,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxD,IAAA,GAAAwD,SAAA,CAAAvD,IAAA;AAAA,UAAA,KAAA,CAAA;YACvDhC,oBAAe,CAACa,WAAW,CAAC,CAAA;YAAC,OAAA0E,SAAA,CAAAC,MAAA,CAAA,QAAA,EACtB3E,WAAW,CAAC8B,gBAAgB,CAAC0C,OAAO,CAAC,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAE,SAAA,CAAA3C,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAwC,QAAA,CAAA,CAAA;KAC7C,CAAA,CAAA,CAAA;IAAA,OAHKF,SAAAA,QAAQA,CAAAO,GAAA,EAAA;AAAA,MAAA,OAAAN,KAAA,CAAAtC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;GAGb,EAAA,CAAA;AAED,EAAA,OACEpD,yBAAC,CAAAgG,aAAA,CAAAjG,YAAY,CAACkG,QAAQ,EAAA;IACpBC,KAAK,EAAA7G,QAAA,CAAA,EAAA,EACAN,KAAK,EAAA;AACRoC,MAAAA,WAAW,EAAXA,WAAW;AACXoD,MAAAA,MAAM,EAANA,MAAM;AACNiB,MAAAA,QAAQ,EAARA,QAAQ;AACRX,MAAAA,KAAK,EAALA,KAAAA;AAAK,KAAA,CAAA;GAGN,EAAApE,QAAQ,CACa,CAAA;AAE5B,CAAC;;AC1IM,IAAM0F,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA3F,IAAA,EAA+C;AAAA,EAAA,IAAzC4F,WAAW,GAAA5F,IAAA,CAAX4F,WAAW,CAAA;AAC7C,EAAA,OACEpG,yBACE,CAAAgG,aAAA,CAAA,KAAA,EAAA;AAAAK,IAAAA,SAAS,EAAC,wBAAwB;AAClCC,IAAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAE,OAAO;AACjBC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,GAAG,EAAE,CAAC;AACNC,MAAAA,IAAI,EAAE,CAAC;AACPC,MAAAA,KAAK,EAAE,CAAC;AACRC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,MAAM,EAAE,MAAM;MACdC,eAAe,EAAEC,6BAAsB,CAACX,WAAW,CAAA;AACpD,KAAA;AAAA,GAAA,CACD,CAAA;AAEN,CAAC;;ACED,IAAMY,KAAK,GAAiC,SAAtCA,KAAKA,CAAAxG,IAAA,EAAqD;AAAA,EAAA,IAAjBwE,WAAW,GAAAxE,IAAA,CAAXwE,WAAW,CAAA;AACxD,EAAA,IAAAiC,QAAA,GAAkB9G,OAAO,EAAE;IAAnB0E,KAAK,GAAAoC,QAAA,CAALpC,KAAK,CAAA;AACbxD,EAAAA,eAAS,CAAC,YAAK;IACbwD,KAAK,CAACG,WAAW,CAAC,CAAA;AACpB,GAAC,EAAE,CAACH,KAAK,EAAEG,WAAW,CAAC,CAAC,CAAA;AACxB,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,IAAMkC,YAAY,GAA0B,SAAtCA,YAAYA,CAAA3F,KAAA,EAAwD;AAAA,EAAA,IAA3Bd,QAAQ,GAAAc,KAAA,CAARd,QAAQ;IAAEuE,WAAW,GAAAzD,KAAA,CAAXyD,WAAW,CAAA;AAClE,EAAA,IAAAmC,SAAA,GAAkDhH,OAAO,EAAE;IAAnDtB,MAAM,GAAAsI,SAAA,CAANtI,MAAM;IAAEK,IAAI,GAAAiI,SAAA,CAAJjI,IAAI;IAAEE,KAAK,GAAA+H,SAAA,CAAL/H,KAAK;IAAEmF,MAAM,GAAA4C,SAAA,CAAN5C,MAAM;IAAEiB,QAAQ,GAAA2B,SAAA,CAAR3B,QAAQ,CAAA;AAE7C,EAAA,QAAQ3G,MAAM;AACZ,IAAA,KAAK,mBAAmB;AACtB,MAAA,OAAOmB,wCAACgH,KAAK,EAAA;AAAChC,QAAAA,WAAW,EAAEA,WAAAA;QAAe,CAAA;AAC5C,IAAA,KAAK,eAAe;MAClB1E,oBAAe,CAACpB,IAAI,CAAC,CAAA;MACrB,OACEc,yBACG,CAAAgG,aAAA,CAAAhG,yBAAA,CAAAoH,QAAA,EAAA,IAAA,EAAA3G,QAAQ,CAAC;AACRvB,QAAAA,IAAI,EAAJA,IAAI;AACJqF,QAAAA,MAAM,EAANA,MAAM;AACNiB,QAAAA,QAAQ,EAARA,QAAAA;OACD,CAAC,CACD,CAAA;AAEP,IAAA,KAAK,gBAAgB;AACnB,MAAA,OACExF,yBAAA,CAAAgG,aAAA,CAACqB,aAAM,EAAA;AAACf,QAAAA,KAAK,EAAE;UAAEgB,SAAS,EAAEC,YAAK,CAACC,WAAAA;AAAa,SAAA;OAAA,EAAA,gBAAA,CAAyB,CAAA;AAE5E,IAAA,KAAK,OAAO;AACVC,MAAyCC,OAAO,CAACtI,KAAK,CAACA,KAAK,CAAC,CAAA;AAC7D,MAAA,OACEY,wCAAC2H,oBAAc,EAAA;AACbC,QAAAA,OAAO,EAAC,OAAO;AACf9H,QAAAA,KAAK,EAAC,uBAAuB;AAC7BwG,QAAAA,KAAK,EAAE;AAAEuB,UAAAA,QAAQ,EAAE,OAAO;AAAEC,UAAAA,MAAM,EAAE,QAAA;AAAU,SAAA;AAAA,OAAA,EAE9C9H,yBAAA,CAAAgG,aAAA,CAAC+B,oBAAS,EAAA,IAAA,uGAE4B,GAAG,EACvC/H,yBAAA,CAAAgG,aAAA,CAACgC,eAAI,EAAA;AAACC,QAAAA,IAAI,EAAC,0BAAA;AAAmD,OAAA,EAAA,mBAAA,CAAA,EAEpD,sBAAA,CAAA,EACZjI,yBAAA,CAAAgG,aAAA,CAAC+B,oBAAS,EAAA,IAAA,kCACoB/H,yBAAC,CAAAgG,aAAA,CAAAkC,mBAAQ,EAAE,IAAA,EAAA9I,KAAK,IAALA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEgF,QAAQ,EAAE,CAAY,CAC1D,CACG,CAAA;AAErB,IAAA;AACE,MAAA,OAAO,IAAI,CAAA;AACd,GAAA;AACH,CAAC,CAAA;IAYY+D,QAAQ,GAAG,SAAXA,QAAQA,CAAA9E,KAAA,EAQD;AAAA,EAAA,IAPlB5C,QAAQ,GAAA4C,KAAA,CAAR5C,QAAQ;IACR2H,QAAQ,GAAA/E,KAAA,CAAR+E,QAAQ;IACRC,MAAM,GAAAhF,KAAA,CAANgF,MAAM;IACNC,QAAQ,GAAAjF,KAAA,CAARiF,QAAQ;IACRtD,WAAW,GAAA3B,KAAA,CAAX2B,WAAW;IACXtE,YAAY,GAAA2C,KAAA,CAAZ3C,YAAY;IACZ0F,WAAW,GAAA/C,KAAA,CAAX+C,WAAW,CAAA;AAEX,EAAA,OACEpG,yBAAC,CAAAgG,aAAA,CAAAzF,YAAY;AACX6H,IAAAA,QAAQ,EAAEA,QAAQ;AAClBC,IAAAA,MAAM,EAAEA,MAAM;AACdE,IAAAA,SAAS,EAAED,QAAQ;AACnB5H,IAAAA,YAAY,EAAEA,YAAAA;AAAY,GAAA,EAE1BV,yBAAC,CAAAgG,aAAA,CAAAkB,YAAY,EAAC;AAAAlC,IAAAA,WAAW,EAAEA,WAAAA;GACxB,EAAA,UAACwD,MAAM,EAAA;IAAA,OACNxI,yBAAA,CAAAgG,aAAA,CAAAhG,yBAAA,CAAAoH,QAAA,EAAA,IAAA,EACGhB,WAAW,IAAIA,WAAW,KAAKqC,kBAAW,CAACC,UAAU,IACpD1I,yBAAA,CAAAgG,aAAA,CAACG,iBAAiB,EAAC;AAAAC,MAAAA,WAAW,EAAEA,WAAAA;MACjC,EACA3F,QAAQ,CAAC+H,MAAM,CAAC,CAChB,CAAA;AAAA,GACJ,CACY,CACF,CAAA;AAEnB;;;AC5GA,SAASG,eAAeA,CAAC3J,KAAiB,EAAA;AACxC,EAAA,OAAO,CAAC,EAAEA,KAAK,CAAC4J,OAAO,IAAI5J,KAAK,CAAC6J,MAAM,IAAI7J,KAAK,CAAC8J,OAAO,IAAI9J,KAAK,CAAC+J,QAAQ,CAAC,CAAA;AAC7E,CAAA;IAEaC,iBAAiB,GAAkB,SAAnCA,iBAAiBA,CAAAxI,IAAA,EAMzB;AAAA,EAAA,IALHyI,QAAQ,GAAAzI,IAAA,CAARyI,QAAQ;IACRxI,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRyI,QAAO,GAAA1I,IAAA,CAAP0I,OAAO;IACPC,MAAM,GAAA3I,IAAA,CAAN2I,MAAM;AACHC,IAAAA,IAAI,GAAAxI,6BAAA,CAAAJ,IAAA,EAAAK,WAAA,CAAA,CAAA;AAEP,EAAA,OACEb,yBACE,CAAAgG,aAAA,CAAA,GAAA,EAAA3G,QAAA,CAAA;AAAA6J,IAAAA,OAAO,EAAE,SAAAA,OAAClK,CAAAA,KAAK,EAAI;MACjB,IAAI;AACF,QAAA,IAAIkK,QAAO,EAAEA,QAAO,CAAClK,KAAK,CAAC,CAAA;OAC5B,CAAC,OAAOqK,EAAE,EAAE;QACXrK,KAAK,CAACsK,cAAc,EAAE,CAAA;AACtB,QAAA,MAAMD,EAAE,CAAA;AACT,OAAA;MAED,IACE,CAACrK,KAAK,CAACuK,gBAAgB;AAAI;MAC3BvK,KAAK,CAACwK,MAAM,KAAK,CAAC;AAAI;AACrB,MAAA,CAACL,MAAM,IAAIA,MAAM,KAAK,OAAO,CAAC;AAAI;AACnC,MAAA,CAACR,eAAe,CAAC3J,KAAK,CAAC;QACvB;QACAA,KAAK,CAACsK,cAAc,EAAE,CAAA;AACtBL,QAAAA,QAAQ,EAAE,CAAA;AACX,OAAA;KACF;AACDE,IAAAA,MAAM,EAAEA,MAAAA;GACJC,EAAAA,IAAI,CAEP3I,EAAAA,QAAQ,CACP,CAAA;AAER;;AC/BO,IAAMgJ,WAAW,gBAAGzJ,yBAAK,CAACC,aAAa,CAAkB;AAC9DyJ,EAAAA,QAAQ,EAAE,SAAAA,QAAA,GAAK,EAAG;EAClBC,eAAe,EAAE,SAAAA,eAAA,GAAA;AAAA,IAAA,OAAM,EAAE,CAAA;AAAA,GAAA;EACzBC,aAAa,EAAE,SAAAA,aAAA,GAAA;AAAA,IAAA,OAAM1J,SAAS,CAAA;AAAA,GAAA;AAC9B2J,EAAAA,aAAa,EAAE,SAAAA,aAAA,GAAK,EAAE;AACvB,CAAA,CAAC,CAAA;IAEWC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAAY,EAAI;AAChD,EAAA,IAAMC,OAAO,GAAG3J,gBAAU,CAACoJ,WAAW,CAAC,CAAA;AACvC,EAAA,OAAOO,OAAO,CAACL,eAAe,CAACI,IAAI,CAAC,CAAA;AACtC,EAAC;IAEYE,OAAO,GAAG,SAAVA,OAAOA,GAAQ;EAC1B,OAAO5J,gBAAU,CAACoJ,WAAW,CAAC,CAAA;AAChC,EAAC;IAEYS,eAAe,GAAG,SAAlBA,eAAeA,CAAIH,IAAY,EAAI;AAC9C,EAAA,IAAAI,QAAA,GAA0BF,OAAO,EAAE;IAA3BL,aAAa,GAAAO,QAAA,CAAbP,aAAa,CAAA;EACrB,OAAOA,aAAa,CAACG,IAAI,CAAC,CAAA;AAC5B,EAAC;IAMYK,YAAY,GAA0B,SAAtCA,YAAYA,CAAA5J,IAAA,EAA2C;AAAA,EAAA,IAAdC,QAAQ,GAAAD,IAAA,CAARC,QAAQ,CAAA;AAC5D,EAAA,IAAAQ,SAAA,GAA4BC,cAAQ,CAAa,EAAE,CAAC;AAA7CmJ,IAAAA,MAAM,GAAApJ,SAAA,CAAA,CAAA,CAAA;AAAEqJ,IAAAA,SAAS,GAAArJ,SAAA,CAAA,CAAA,CAAA,CAAA;AACxB,EAAA,IAAAsJ,UAAA,GAAgCrJ,cAAQ,CACtC,EAAE,CACH;AAFMsJ,IAAAA,QAAQ,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EAI5B,IAAMb,QAAQ,GAAGgB,iBAAW,CAC1B,UAACC,QAAoB,EAAEZ,IAAY,EAAI;IACrCO,SAAS,CAAC,UAACM,SAAS,EAAA;AAAA,MAAA,IAAAC,SAAA,CAAA;AAAA,MAAA,OAAAxL,QAAA,CAAA,EAAA,EACfuL,SAAS,GAAAC,SAAA,GAAA,EAAA,EAAAA,SAAA,CACXd,IAAI,CAAA,GAAGY,QAAQ,EAAAE,SAAA,EAAA,CAAA;AAAA,KAChB,CAAC,CAAA;AACL,GAAC,EACD,CAACP,SAAS,CAAC,CACZ,CAAA;AAED,EAAA,IAAMV,aAAa,GAAG,SAAhBA,aAAaA,CAAIG,IAAY,EAAA;IAAA,OAAKS,QAAQ,CAACT,IAAI,CAAC,CAAA;AAAA,GAAA,CAAA;AACtD,EAAA,IAAMF,aAAa,GAAG,SAAhBA,aAAaA,CAAIE,IAAY,EAAEe,UAA8B,EAAA;IAAA,OACjEL,WAAW,CAAC,UAACpI,IAAI,EAAA;AAAA,MAAA,IAAA0I,SAAA,CAAA;AAAA,MAAA,OAAA1L,QAAA,CAAA,EAAA,EAAWgD,IAAI,GAAA0I,SAAA,GAAA,EAAA,EAAAA,SAAA,CAAGhB,IAAI,CAAA,GAAGe,UAAU,EAAAC,SAAA,EAAA,CAAA;AAAA,KAAG,CAAC,CAAA;AAAA,GAAA,CAAA;AAE1D,EAAA,OACE/K,yBAAC,CAAAgG,aAAA,CAAAyD,WAAW,CAACxD,QAAQ,EAAA;AACnBC,IAAAA,KAAK,EAAE;AACLwD,MAAAA,QAAQ,EAARA,QAAQ;MACRC,eAAe,EAAE,SAAAA,eAAAA,CAACI,IAAI,EAAA;AAAA,QAAA,IAAAiB,YAAA,CAAA;QAAA,OAAAA,CAAAA,YAAA,GAAKX,MAAM,CAACN,IAAI,CAAC,KAAA,IAAA,GAAAiB,YAAA,GAAI,EAAE,CAAA;AAAA,OAAA;AAC7CpB,MAAAA,aAAa,EAAbA,aAAa;AACbC,MAAAA,aAAa,EAAbA,aAAAA;;GAGD,EAAApJ,QAAQ,CACY,CAAA;AAE3B;;ACvEO,IAAMwK,wBAAwB,GAAG,iBAAiB,CAAA;AAElD,IAAMC,mBAAmB,GAAG;EACjCC,GAAG,EAAE,SAAAA,GAAA,GAAA;AAAA,IAAA,OAAMtI,YAAY,CAACC,OAAO,CAACmI,wBAAwB,CAAC,CAAA;AAAA,GAAA;EACzDG,GAAG,EAAE,SAAAA,GAAAA,CAAClF,KAAa,EAAA;AAAA,IAAA,OAAKrD,YAAY,CAACsB,OAAO,CAAC8G,wBAAwB,EAAE/E,KAAK,CAAC,CAAA;AAAA,GAAA;EAC9E;AAEM,IAAMmF,oBAAoB,GAAG,YAAY,CAAA;AAEzC,IAAMC,eAAe,GAAG;EAC7BH,GAAG,EAAE,SAAAA,GAAA,GAAA;AAAA,IAAA,OAAMtI,YAAY,CAACC,OAAO,CAACuI,oBAAoB,CAAC,CAAA;AAAA,GAAA;EACrDD,GAAG,EAAE,SAAAA,GAAAA,CAAClF,KAAa,EAAA;AAAA,IAAA,OAAKrD,YAAY,CAACsB,OAAO,CAACkH,oBAAoB,EAAEnF,KAAK,CAAC,CAAA;AAAA,GAAA;;;ACO3E,IAAMqF,mBAAmB,gBAAGvL,yBAAK,CAACC,aAAa,CAE7CC,SAAS,CAAC,CAAA;IAECsL,eAAe,GAAG,SAAlBA,eAAeA,GAAQ;AAClC,EAAA,IAAMxB,OAAO,GAAG3J,gBAAU,CAACkL,mBAAmB,CAAC,CAAA;EAC/CjL,oBAAe,CAAC0J,OAAO,CAAC,CAAA;AACxB,EAAA,OAAOA,OAAO,CAAA;AAChB,EAAC;IAEYyB,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAQ;AACpC,EAAA,IAAMzB,OAAO,GAAG3J,gBAAU,CAACkL,mBAAmB,CAAC,CAAA;EAC/CjL,oBAAe,CAAC0J,OAAO,CAAC,CAAA;EACxB,OAAOA,OAAO,CAAC0B,cAAc,CAAA;AAC/B,EAAC;AAED,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CACxBC,qBAA6B,EACiB;EAC9C,IAAA3K,SAAA,GAA4CC,cAAQ,CAClD2K,MAAM,CAACD,qBAAqB,CAAC,CAC9B;AAFMF,IAAAA,cAAc,GAAAzK,SAAA,CAAA,CAAA,CAAA;AAAE6K,IAAAA,iBAAiB,GAAA7K,SAAA,CAAA,CAAA,CAAA,CAAA;AAIxCI,EAAAA,eAAS,CAAC,YAAK;IACb6J,mBAAmB,CAACE,GAAG,CAACM,cAAc,CAACtH,QAAQ,EAAE,CAAC,CAAA;AACpD,GAAC,EAAE,CAACsH,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,OAAO,CAACA,cAAc,EAAEI,iBAAiB,CAAC,CAAA;AAC5C,CAAC,CAAA;IAOYC,oBAAoB,GAAkC,SAAtDA,oBAAoBA,CAAAvL,IAAA,EAG5B;AAAA,EAAA,IAFHC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRiL,cAAc,GAAAlL,IAAA,CAAdkL,cAAc,CAAA;AAEd,EAAA,IAAAM,qBAAA,GAAmCL,oBAAoB,CAACD,cAAc,CAAC;AAAhEO,IAAAA,KAAK,GAAAD,qBAAA,CAAA,CAAA,CAAA;AAAEF,IAAAA,iBAAiB,GAAAE,qBAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,EAAA,OACEhM,yBAAC,CAAAgG,aAAA,CAAAuF,mBAAmB,CAACtF,QAAQ,EAAA;AAC3BC,IAAAA,KAAK,EAAE;AAAEwF,MAAAA,cAAc,EAAEO,KAAK;AAAEH,MAAAA,iBAAiB,EAAjBA,iBAAAA;AAAiB,KAAA;KAEhDrL,QAAQ,CACoB,CAAA;AAEnC;;AC/CA,IAAMyL,eAAe,gBAAGlM,yBAAK,CAACC,aAAa,CACzCC,SAAS,CACV,CAAA;AAED,IAAMiM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,QAAgB,EAC8B;AAC9C,EAAA,IAAAnL,SAAA,GAAsCC,cAAQ,CAACkL,QAAQ,CAAC;AAAjDC,IAAAA,cAAc,GAAApL,SAAA,CAAA,CAAA,CAAA;AAAEqL,IAAAA,WAAW,GAAArL,SAAA,CAAA,CAAA,CAAA,CAAA;AAElCI,EAAAA,eAAS,CAAC,YAAK;AACbiK,IAAAA,eAAe,CAACF,GAAG,CAACiB,cAAc,CAAC,CAAA;AACrC,GAAC,EAAE,CAACA,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,OAAO,CAACA,cAAc,EAAEC,WAAW,CAAC,CAAA;AACtC,CAAC,CAAA;IAEYC,WAAW,GAAG,SAAdA,WAAWA,GAAQ;AAC9B,EAAA,IAAMvC,OAAO,GAAG3J,gBAAU,CAAC6L,eAAe,CAAC,CAAA;EAC3C5L,oBAAe,CAAC0J,OAAO,CAAC,CAAA;AACxB,EAAA,OAAOA,OAAO,CAAA;AAChB,EAAC;IAOYwC,gBAAgB,GAA8B,SAA9CA,gBAAgBA,CAAAhM,IAAA,EAGxB;AAAA,EAAA,IAFHC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACR2L,QAAQ,GAAA5L,IAAA,CAAR4L,QAAQ,CAAA;AAER,EAAA,IAAAK,iBAAA,GAAsCN,gBAAgB,CAACC,QAAQ,CAAC;AAAzDC,IAAAA,cAAc,GAAAI,iBAAA,CAAA,CAAA,CAAA;AAAEH,IAAAA,WAAW,GAAAG,iBAAA,CAAA,CAAA,CAAA,CAAA;AAClC,EAAA,OACEzM,yBAAC,CAAAgG,aAAA,CAAAkG,eAAe,CAACjG,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAE;AAAEkG,MAAAA,QAAQ,EAAEC,cAAc;AAAEC,MAAAA,WAAW,EAAXA,WAAAA;AAAW,KAAA;KACrE7L,QAAQ,CACgB,CAAA;AAE/B;;ACvDaiM,IAAAA,kBAAmB,0BAAAC,MAAA,EAAA;EAAAC,cAAA,CAAAF,kBAAA,EAAAC,MAAA,CAAA,CAAA;AAAA,EAAA,SAAAD,kBAAA,GAAA;AAAA,IAAA,IAAAG,KAAA,CAAA;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAA1J,SAAA,CAAA2J,MAAA,EAAAC,IAAA,GAAAC,IAAAA,KAAA,CAAAH,IAAA,GAAAI,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA,EAAA,EAAA;AAAAF,MAAAA,IAAA,CAAAE,IAAA,CAAA9J,GAAAA,SAAA,CAAA8J,IAAA,CAAA,CAAA;AAAA,KAAA;IAAAL,KAAA,GAAAF,MAAA,CAAAQ,IAAA,CAAAhK,KAAA,CAAAwJ,MAAA,EAAA,CAAA,IAAA,CAAA,CAAAS,MAAA,CAAAJ,IAAA,CAAA,CAAA,IAAA,IAAA,CAAA;IAAAH,KAAA,CAC9BQ,OAAO,GAAG,+BAA+B,CAAA;AAAA,IAAA,OAAAR,KAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAAAH,kBAAA,CAAA;AAAA,CAAAY,eAAAA,gBAAA,CADHC,KAAK,CAAA;;;ICuBhCC,oBAAoB,GAAkC,SAAtDA,oBAAoBA,CAAAhN,IAAA,EAM5B;AAAA,EAAA,IALHgF,QAAQ,GAAAhF,IAAA,CAARgF,QAAQ;IACRiI,gBAAgB,GAAAjN,IAAA,CAAhBiN,gBAAgB;IAChBvH,KAAK,GAAA1F,IAAA,CAAL0F,KAAK;IACLwH,QAAQ,GAAAlN,IAAA,CAARkN,QAAQ;AACLtE,IAAAA,IAAI,GAAAxI,6BAAA,CAAAJ,IAAA,EAAAK,SAAA,CAAA,CAAA;AAEP,EAAA,IAAAI,SAAA,GAA0CC,cAAQ,CAAiB,EAAE,CAAC;AAA/DyM,IAAAA,aAAa,GAAA1M,SAAA,CAAA,CAAA,CAAA;AAAE2M,IAAAA,gBAAgB,GAAA3M,SAAA,CAAA,CAAA,CAAA,CAAA;AACtC,EAAA,IAAA4M,YAAA,GAAqBtB,WAAW,EAAE;IAA1BH,QAAQ,GAAAyB,YAAA,CAARzB,QAAQ,CAAA;AAEhB,EAAA,IAAA7B,UAAA,GAA4BrJ,cAAQ,CAClC,SAAS,CACV;AAFMrC,IAAAA,MAAM,GAAA0L,UAAA,CAAA,CAAA,CAAA;AAAEuD,IAAAA,SAAS,GAAAvD,UAAA,CAAA,CAAA,CAAA,CAAA;AAIxBlJ,EAAAA,eAAS,CAAC,YAAK;AACb,IAAA,IAAM0M,kBAAkB,gBAAA,YAAA;MAAA,IAAAxM,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAAC,OAAA,GAAA;QAAA,IAAAM,KAAA,EAAA0L,aAAA,CAAA;AAAA,QAAA,OAAAlM,mBAAA,EAAA,CAAAS,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OACLkD,QAAQ,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;cAAxBvD,KAAK,GAAAG,QAAA,CAAAI,IAAA,CAAA;cAAA,IAEP,EAAA,OAAOiL,gBAAgB,KAAK,QAAQ,CAAA,EAAA;AAAArL,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OAChB0L,KAAK,CAACP,gBAAgB,EAAE;AAC5CQ,gBAAAA,OAAO,EAAE;AACPC,kBAAAA,aAAa,cAAYjM,KAAO;AAChCkM,kBAAAA,MAAM,EAAE,kBAAA;AACT,iBAAA;AACF,eAAA,CAAC,CAACC,IAAI,CAAC,UAACC,QAAQ,EAAA;AAAA,gBAAA,OAAKA,QAAQ,CAACC,IAAI,EAAE,CAAA;eAAC,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cALtCX,aAAa,GAAAvL,QAAA,CAAAI,IAAA,CAAA;AAAAJ,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;cAAA,OAOSmL,gBAAgB,CAACxL,KAAK,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA;cAA7C0L,aAAa,GAAAvL,QAAA,CAAAI,IAAA,CAAA;AAAA,YAAA,KAAA,EAAA;cAEfoL,gBAAgB,CAACD,aAAa,CAAC,CAAA;cAC/BG,SAAS,CAAC,SAAS,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA1L,QAAA,CAAAc,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAvB,OAAA,CAAA,CAAA;OACtB,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAfKoM,kBAAkBA,GAAA;AAAA,QAAA,OAAAxM,KAAA,CAAA4B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAevB,EAAA,CAAA;AAED2K,IAAAA,kBAAkB,EAAE,CAAA,OAAA,CAAM,CAAC,UAAC3O,KAAK,EAAI;AACnC,MAA4C;AAC1CsI,QAAAA,OAAO,CAACtI,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,OAAA;MACD0O,SAAS,CAAC,OAAO,CAAC,CAAA;AACpB,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACL,gBAAgB,EAAEjI,QAAQ,CAAC,CAAC,CAAA;AAEhC,EAAA,QAAQ3G,MAAM;AACZ,IAAA,KAAK,SAAS;AACZ,MAAA,OACEmB,yBAAA,CAAAgG,aAAA,CAAA,KAAA,EAAA;AAAKK,QAAAA,SAAS,EAAC,cAAA;AAAc,OAAA,EAC3BrG,yBAAA,CAAAgG,aAAA,CAACuI,wBAAiB,EAAA;AAACjI,QAAAA,KAAK,EAAE;AAAEO,UAAAA,MAAM,EAAE,QAAA;AAAU,SAAA;AAAA,OAAA,CAAI,CAC9C,CAAA;AAEV,IAAA,KAAK,SAAS;AACZ,MAAA,OACE7G,yBAAA,CAAAgG,aAAA,CAACwI,2BAAoB,EAAAnP,QAAA,CAAA;AACnBoP,QAAAA,KAAK,EAAErC,QAAQ,KAAK,IAAI,GAAG,cAAc,GAAG,cAAc;AAC1DsC,QAAAA,sBAAsB,EAAExI,KAAK;AAC7ByH,QAAAA,aAAa,EAAEA,aAAa;AAC5BD,QAAAA,QAAQ,EAAEA,QAAAA;OACNtE,EAAAA,IAAI,CAAA,CACR,CAAA;AAEN,IAAA,KAAK,OAAO;MACV,MAAM,IAAIsD,kBAAkB,EAAE,CAAA;AAChC,IAAA;AACE,MAAA,OAAO,IAAI,CAAA;AACd,GAAA;AACH;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"app-shell.cjs.development.js","sources":["../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 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, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (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 problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\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 decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\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":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","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","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAA+C;AAAA,EAAA,IAAzCC,WAAW,GAAAD,IAAA,CAAXC,WAAW,CAAA;AAC7C,EAAA,OACEC,yBACE,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAAC,IAAAA,SAAS,EAAC,wBAAwB;AAClCC,IAAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAE,OAAO;AACjBC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,GAAG,EAAE,CAAC;AACNC,MAAAA,IAAI,EAAE,CAAC;AACPC,MAAAA,KAAK,EAAE,CAAC;AACRC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,MAAM,EAAE,MAAM;MACdC,eAAe,EAAEC,6BAAsB,CAACb,WAAW,CAAA;AACpD,KAAA;AAAA,GAAA,CACD,CAAA;AAEN,CAAC;;ACLD,SAASc,UAAUA,CAACC,MAAuC,EAAA;AACzD,EAAA,IAAAC,gBAAA,GAAqCC,MAAM,CAACC,QAAQ;IAA5CC,QAAQ,GAAAH,gBAAA,CAARG,QAAQ;IAAEC,QAAQ,GAAAJ,gBAAA,CAARI,QAAQ;IAAEC,IAAI,GAAAL,gBAAA,CAAJK,IAAI,CAAA;AAChC,EAAA,OAAON,MAAM,CAAC;AACZO,IAAAA,YAAY,EAAE;AAAEC,MAAAA,QAAQ,EAAKJ,QAAQ,GAAKC,IAAAA,GAAAA,QAAQ,GAAIC,GAAAA,GAAAA,IAAAA;AAAQ,KAAA;AAC/D,GAAA,CAAC,CAAA;AACJ,CAAA;AAaA,IAAMG,YAAY,GAA0B,SAAtCA,YAAYA,CAAAzB,IAAA,EAAyD;AAAA,EAAA,IAA5B0B,QAAQ,GAAA1B,IAAA,CAAR0B,QAAQ;IAAEC,YAAY,GAAA3B,IAAA,CAAZ2B,YAAY,CAAA;AACnE,EAAA,IAAAC,SAAA,GAAoDC,cAAQ,CAE1DC,SAAS,CAAC;AAFLC,IAAAA,kBAAkB,GAAAH,SAAA,CAAA,CAAA,CAAA;AAAEI,IAAAA,qBAAqB,GAAAJ,SAAA,CAAA,CAAA,CAAA,CAAA;AAGhD,EAAA,IAAAK,QAAA,GAQIC,mBAAQ,EAAE;IAPZC,IAAI,GAAAF,QAAA,CAAJE,IAAI;IACJC,sBAAsB,GAAAH,QAAA,CAAtBG,sBAAsB;IACtBC,iBAAiB,GAAAJ,QAAA,CAAjBI,iBAAiB;IACjBrB,OAAM,GAAAiB,QAAA,CAANjB,MAAM;IACNsB,SAAS,GAAAL,QAAA,CAATK,SAAS;IACTC,eAAe,GAAAN,QAAA,CAAfM,eAAe;IACfC,KAAK,GAAAP,QAAA,CAALO,KAAK,CAAA;AAGPC,EAAAA,eAAS,CAAC,YAAK;AACb,IAAA,IAAMC,aAAa,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAAC,OAAA,GAAA;QAAA,IAAAC,KAAA,EAAAC,aAAA,CAAA;AAAA,QAAA,OAAAJ,mBAAA,EAAA,CAAAK,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OAEElB,sBAAsB,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;cAAtCY,KAAK,GAAAI,QAAA,CAAAG,IAAA,CAAA;AAAAH,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OACiB3B,YAAY,CAACQ,IAAY,EAAEa,KAAK,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAAvDC,aAAa,GAAAG,QAAA,CAAAG,IAAA,CAAA;cACnBvB,qBAAqB,CAACiB,aAAa,CAAC,CAAA;AAACG,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,EAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;cAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;cAErCK,OAAO,CAACjB,KAAK,CAAC,2BAA2B,EAAAY,QAAA,CAAAI,EAAO,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAJ,QAAA,CAAAM,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAX,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;OAErD,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SARKL,aAAaA,GAAA;AAAA,QAAA,OAAAC,KAAA,CAAAgB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAQlB,EAAA,CAAA;AAED,IAAA,IAAIrB,eAAe,EAAE;AACnBG,MAAAA,aAAa,EAAE,CAAA;AAChB,KAAA;GACF,EAAE,CAACf,YAAY,EAAES,sBAAsB,EAAEG,eAAe,EAAEJ,IAAI,CAAC,CAAC,CAAA;AAEjE,EAAA,IAAI,CAACG,SAAS,IAAI,CAACC,eAAe,EAAE;AAClCF,IAAAA,iBAAiB,EAAE,CAAA;AACnB,IAAA,OACEnC,yBAAA,CAAAC,aAAA,CAAC0D,aAAM,EAAA;AAACxD,MAAAA,KAAK,EAAE;QAAEyD,SAAS,EAAEC,YAAK,CAACC,WAAAA;AAAa,OAAA;KAAA,EAAA,2BAAA,CAEtC,CAAA;AAEZ,GAAA;AAED,EAAA,IAAI1B,SAAS,IAAI,CAACP,kBAAkB,EAAE;AACpC,IAAA,OACE7B,yBAAA,CAAAC,aAAA,CAAC0D,aAAM,EAAA;AAACxD,MAAAA,KAAK,EAAE;QAAEyD,SAAS,EAAEC,YAAK,CAACC,WAAAA;AAAa,OAAA;KAAA,EAAA,gBAAA,CAAyB,CAAA;AAE3E,GAAA;AAED,EAAA,IAAIxB,KAAK,EAAE;AACTyB,IAAyCR,OAAO,CAACjB,KAAK,CAACA,KAAK,CAAC,CAAA;AAC7D,IAAA,OACEtC,wCAACgE,oBAAc,EAAA;AACbC,MAAAA,OAAO,EAAC,OAAO;AACfC,MAAAA,KAAK,EAAC,uBAAuB;AAC7B/D,MAAAA,KAAK,EAAE;AAAEgE,QAAAA,QAAQ,EAAE,OAAO;AAAEC,QAAAA,MAAM,EAAE,QAAA;AAAU,OAAA;AAAA,KAAA,EAE9CpE,yBAAA,CAAAC,aAAA,CAACoE,oBAAS,EAAA,IAAA,uGAEoB,GAAG,EAC/BrE,yBAAA,CAAAC,aAAA,CAACqE,eAAI,EAAA;AAACC,MAAAA,IAAI,EAAC,0BAAA;AAAmD,KAAA,EAAA,mBAAA,CAAA,EAEpD,sBAAA,CAAA,EACZvE,yBAAA,CAAAC,aAAA,CAACoE,oBAAS,EAAA,IAAA,kCACoBrE,yBAAC,CAAAC,aAAA,CAAAuE,mBAAQ,EAAE,IAAA,EAAAlC,KAAK,IAALA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEmC,QAAQ,EAAE,CAAY,CAC1D,CACG,CAAA;AAEpB,GAAA;EACDC,oBAAe,CAAC7C,kBAAkB,CAAC,CAAA;EACnC,OACE7B,yBACG,CAAAC,aAAA,CAAAD,yBAAA,CAAA2E,QAAA,EAAA,IAAA,EAAAnD,QAAQ,CAAC;AACRS,IAAAA,IAAI,EAAEJ,kBAAkB;IACxBf,MAAM,EAAE,SAAAA,MAAA,GAAA;MAAA,OAAMD,UAAU,CAACC,OAAM,CAAC,CAAA;AAAA,KAAA;AAChC8D,IAAAA,QAAQ,EAAE1C,sBAAAA;GACX,CAAC,CACD,CAAA;AAEP,CAAC,CAAA;IAYY2C,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,KAAA,EAOD;AAAA,EAAA,IANlBtD,QAAQ,GAAAsD,KAAA,CAARtD,QAAQ;IACRuD,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IACRC,MAAM,GAAAF,KAAA,CAANE,MAAM;IACNC,QAAQ,GAAAH,KAAA,CAARG,QAAQ;IACRxD,YAAY,GAAAqD,KAAA,CAAZrD,YAAY;IACZ1B,WAAW,GAAA+E,KAAA,CAAX/E,WAAW,CAAA;AAEX,EAAA,OACEC,yBAAA,CAAAC,aAAA,CAACiF,wBAAa,EAAA;AACZF,IAAAA,MAAM,EAAEA,MAAM;AACdC,IAAAA,QAAQ,EAAEA,QAAQ;AAClBE,IAAAA,mBAAmB,EAAE;AACnBC,MAAAA,YAAY,EAAEpE,MAAM,CAACC,QAAQ,CAACoE,MAAM;AACpCN,MAAAA,QAAQ,EAAEA,QAAAA;AACX,KAAA;AAAA,GAAA,EAED/E,yBAAC,CAAAC,aAAA,CAAAsB,YAAY,EAAC;AAAAE,IAAAA,YAAY,EAAEA,YAAAA;GACzB,EAAA,UAAC6D,MAAM,EAAA;IAAA,OACNtF,yBAAA,CAAAC,aAAA,CAAAD,yBAAA,CAAA2E,QAAA,EAAA,IAAA,EACG5E,WAAW,IAAIA,WAAW,KAAKwF,kBAAW,CAACC,UAAU,IACpDxF,yBAAA,CAAAC,aAAA,CAACJ,iBAAiB,EAAC;AAAAE,MAAAA,WAAW,EAAEA,WAAAA;MACjC,EACAyB,QAAQ,CAAC8D,MAAM,CAAC,CAChB,CAAA;AAAA,GACJ,CACY,CACD,CAAA;AAEpB;;;AChJA,SAASG,eAAeA,CAACC,KAAiB,EAAA;AACxC,EAAA,OAAO,CAAC,EAAEA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACE,MAAM,IAAIF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACI,QAAQ,CAAC,CAAA;AAC7E,CAAA;IAEaC,iBAAiB,GAAkB,SAAnCA,iBAAiBA,CAAAjG,IAAA,EAMzB;AAAA,EAAA,IALHkG,QAAQ,GAAAlG,IAAA,CAARkG,QAAQ;IACRxE,QAAQ,GAAA1B,IAAA,CAAR0B,QAAQ;IACRyE,QAAO,GAAAnG,IAAA,CAAPmG,OAAO;IACPC,MAAM,GAAApG,IAAA,CAANoG,MAAM;AACHC,IAAAA,IAAI,GAAAC,6BAAA,CAAAtG,IAAA,EAAAuG,WAAA,CAAA,CAAA;AAEP,EAAA,OACErG,yBACE,CAAAC,aAAA,CAAA,GAAA,EAAAqG,QAAA,CAAA;AAAAL,IAAAA,OAAO,EAAE,SAAAA,OAACP,CAAAA,KAAK,EAAI;MACjB,IAAI;AACF,QAAA,IAAIO,QAAO,EAAEA,QAAO,CAACP,KAAK,CAAC,CAAA;OAC5B,CAAC,OAAOa,EAAE,EAAE;QACXb,KAAK,CAACc,cAAc,EAAE,CAAA;AACtB,QAAA,MAAMD,EAAE,CAAA;AACT,OAAA;MAED,IACE,CAACb,KAAK,CAACe,gBAAgB;AAAI;MAC3Bf,KAAK,CAACgB,MAAM,KAAK,CAAC;AAAI;AACrB,MAAA,CAACR,MAAM,IAAIA,MAAM,KAAK,OAAO,CAAC;AAAI;AACnC,MAAA,CAACT,eAAe,CAACC,KAAK,CAAC;QACvB;QACAA,KAAK,CAACc,cAAc,EAAE,CAAA;AACtBR,QAAAA,QAAQ,EAAE,CAAA;AACX,OAAA;KACF;AACDE,IAAAA,MAAM,EAAEA,MAAAA;GACJC,EAAAA,IAAI,CAEP3E,EAAAA,QAAQ,CACP,CAAA;AAER;;AC/BO,IAAMmF,WAAW,gBAAG3G,yBAAK,CAAC4G,aAAa,CAAkB;AAC9DC,EAAAA,QAAQ,EAAE,SAAAA,QAAA,GAAK,EAAG;EAClBC,eAAe,EAAE,SAAAA,eAAA,GAAA;AAAA,IAAA,OAAM,EAAE,CAAA;AAAA,GAAA;EACzBC,aAAa,EAAE,SAAAA,aAAA,GAAA;AAAA,IAAA,OAAMnF,SAAS,CAAA;AAAA,GAAA;AAC9BoF,EAAAA,aAAa,EAAE,SAAAA,aAAA,GAAK,EAAE;AACvB,CAAA,CAAC,CAAA;IAEWC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAAY,EAAI;AAChD,EAAA,IAAMC,OAAO,GAAGC,gBAAU,CAACT,WAAW,CAAC,CAAA;AACvC,EAAA,OAAOQ,OAAO,CAACL,eAAe,CAACI,IAAI,CAAC,CAAA;AACtC,EAAC;IAEYG,OAAO,GAAG,SAAVA,OAAOA,GAAQ;EAC1B,OAAOD,gBAAU,CAACT,WAAW,CAAC,CAAA;AAChC,EAAC;IAEYW,eAAe,GAAG,SAAlBA,eAAeA,CAAIJ,IAAY,EAAI;AAC9C,EAAA,IAAAK,QAAA,GAA0BF,OAAO,EAAE;IAA3BN,aAAa,GAAAQ,QAAA,CAAbR,aAAa,CAAA;EACrB,OAAOA,aAAa,CAACG,IAAI,CAAC,CAAA;AAC5B,EAAC;IAMYM,YAAY,GAA0B,SAAtCA,YAAYA,CAAA1H,IAAA,EAA2C;AAAA,EAAA,IAAd0B,QAAQ,GAAA1B,IAAA,CAAR0B,QAAQ,CAAA;AAC5D,EAAA,IAAAE,SAAA,GAA4BC,cAAQ,CAAa,EAAE,CAAC;AAA7C8F,IAAAA,MAAM,GAAA/F,SAAA,CAAA,CAAA,CAAA;AAAEgG,IAAAA,SAAS,GAAAhG,SAAA,CAAA,CAAA,CAAA,CAAA;AACxB,EAAA,IAAAiG,UAAA,GAAgChG,cAAQ,CACtC,EAAE,CACH;AAFMiG,IAAAA,QAAQ,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EAI5B,IAAMd,QAAQ,GAAGiB,iBAAW,CAC1B,UAACC,QAAoB,EAAEb,IAAY,EAAI;IACrCQ,SAAS,CAAC,UAACM,SAAS,EAAA;AAAA,MAAA,IAAAC,SAAA,CAAA;AAAA,MAAA,OAAA3B,QAAA,CAAA,EAAA,EACf0B,SAAS,GAAAC,SAAA,GAAA,EAAA,EAAAA,SAAA,CACXf,IAAI,CAAA,GAAGa,QAAQ,EAAAE,SAAA,EAAA,CAAA;AAAA,KAChB,CAAC,CAAA;AACL,GAAC,EACD,CAACP,SAAS,CAAC,CACZ,CAAA;AAED,EAAA,IAAMX,aAAa,GAAG,SAAhBA,aAAaA,CAAIG,IAAY,EAAA;IAAA,OAAKU,QAAQ,CAACV,IAAI,CAAC,CAAA;AAAA,GAAA,CAAA;AACtD,EAAA,IAAMF,aAAa,GAAG,SAAhBA,aAAaA,CAAIE,IAAY,EAAEgB,UAA8B,EAAA;IAAA,OACjEL,WAAW,CAAC,UAAC1E,IAAI,EAAA;AAAA,MAAA,IAAAgF,SAAA,CAAA;AAAA,MAAA,OAAA7B,QAAA,CAAA,EAAA,EAAWnD,IAAI,GAAAgF,SAAA,GAAA,EAAA,EAAAA,SAAA,CAAGjB,IAAI,CAAA,GAAGgB,UAAU,EAAAC,SAAA,EAAA,CAAA;AAAA,KAAG,CAAC,CAAA;AAAA,GAAA,CAAA;AAE1D,EAAA,OACEnI,yBAAC,CAAAC,aAAA,CAAA0G,WAAW,CAACyB,QAAQ,EAAA;AACnBC,IAAAA,KAAK,EAAE;AACLxB,MAAAA,QAAQ,EAARA,QAAQ;MACRC,eAAe,EAAE,SAAAA,eAAAA,CAACI,IAAI,EAAA;AAAA,QAAA,IAAAoB,YAAA,CAAA;QAAA,OAAAA,CAAAA,YAAA,GAAKb,MAAM,CAACP,IAAI,CAAC,KAAA,IAAA,GAAAoB,YAAA,GAAI,EAAE,CAAA;AAAA,OAAA;AAC7CvB,MAAAA,aAAa,EAAbA,aAAa;AACbC,MAAAA,aAAa,EAAbA,aAAAA;;GAGD,EAAAxF,QAAQ,CACY,CAAA;AAE3B;;ACvEO,IAAM+G,wBAAwB,GAAG,iBAAiB,CAAA;AAElD,IAAMC,mBAAmB,GAAG;EACjCC,GAAG,EAAE,SAAAA,GAAA,GAAA;AAAA,IAAA,OAAMC,YAAY,CAACC,OAAO,CAACJ,wBAAwB,CAAC,CAAA;AAAA,GAAA;EACzDK,GAAG,EAAE,SAAAA,GAAAA,CAACP,KAAa,EAAA;AAAA,IAAA,OAAKK,YAAY,CAACG,OAAO,CAACN,wBAAwB,EAAEF,KAAK,CAAC,CAAA;AAAA,GAAA;EAC9E;AAEM,IAAMS,oBAAoB,GAAG,YAAY,CAAA;AAEzC,IAAMC,eAAe,GAAG;EAC7BN,GAAG,EAAE,SAAAA,GAAA,GAAA;AAAA,IAAA,OAAMC,YAAY,CAACC,OAAO,CAACG,oBAAoB,CAAC,CAAA;AAAA,GAAA;EACrDF,GAAG,EAAE,SAAAA,GAAAA,CAACP,KAAa,EAAA;AAAA,IAAA,OAAKK,YAAY,CAACG,OAAO,CAACC,oBAAoB,EAAET,KAAK,CAAC,CAAA;AAAA,GAAA;;;ACO3E,IAAMW,mBAAmB,gBAAGhJ,yBAAK,CAAC4G,aAAa,CAE7ChF,SAAS,CAAC,CAAA;IAECqH,eAAe,GAAG,SAAlBA,eAAeA,GAAQ;AAClC,EAAA,IAAM9B,OAAO,GAAGC,gBAAU,CAAC4B,mBAAmB,CAAC,CAAA;EAC/CtE,oBAAe,CAACyC,OAAO,CAAC,CAAA;AACxB,EAAA,OAAOA,OAAO,CAAA;AAChB,EAAC;IAEY+B,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAQ;AACpC,EAAA,IAAM/B,OAAO,GAAGC,gBAAU,CAAC4B,mBAAmB,CAAC,CAAA;EAC/CtE,oBAAe,CAACyC,OAAO,CAAC,CAAA;EACxB,OAAOA,OAAO,CAACgC,cAAc,CAAA;AAC/B,EAAC;AAED,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CACxBC,qBAA6B,EACiB;EAC9C,IAAA3H,SAAA,GAA4CC,cAAQ,CAClD2H,MAAM,CAACD,qBAAqB,CAAC,CAC9B;AAFMF,IAAAA,cAAc,GAAAzH,SAAA,CAAA,CAAA,CAAA;AAAE6H,IAAAA,iBAAiB,GAAA7H,SAAA,CAAA,CAAA,CAAA,CAAA;AAIxCa,EAAAA,eAAS,CAAC,YAAK;IACbiG,mBAAmB,CAACI,GAAG,CAACO,cAAc,CAAC1E,QAAQ,EAAE,CAAC,CAAA;AACpD,GAAC,EAAE,CAAC0E,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,OAAO,CAACA,cAAc,EAAEI,iBAAiB,CAAC,CAAA;AAC5C,CAAC,CAAA;IAOYC,oBAAoB,GAAkC,SAAtDA,oBAAoBA,CAAA1J,IAAA,EAG5B;AAAA,EAAA,IAFH0B,QAAQ,GAAA1B,IAAA,CAAR0B,QAAQ;IACR2H,cAAc,GAAArJ,IAAA,CAAdqJ,cAAc,CAAA;AAEd,EAAA,IAAAM,qBAAA,GAAmCL,oBAAoB,CAACD,cAAc,CAAC;AAAhEO,IAAAA,KAAK,GAAAD,qBAAA,CAAA,CAAA,CAAA;AAAEF,IAAAA,iBAAiB,GAAAE,qBAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,EAAA,OACEzJ,yBAAC,CAAAC,aAAA,CAAA+I,mBAAmB,CAACZ,QAAQ,EAAA;AAC3BC,IAAAA,KAAK,EAAE;AAAEc,MAAAA,cAAc,EAAEO,KAAK;AAAEH,MAAAA,iBAAiB,EAAjBA,iBAAAA;AAAiB,KAAA;KAEhD/H,QAAQ,CACoB,CAAA;AAEnC;;AC/CA,IAAMmI,eAAe,gBAAG3J,yBAAK,CAAC4G,aAAa,CACzChF,SAAS,CACV,CAAA;AAED,IAAMgI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,QAAgB,EAC8B;AAC9C,EAAA,IAAAnI,SAAA,GAAsCC,cAAQ,CAACkI,QAAQ,CAAC;AAAjDC,IAAAA,cAAc,GAAApI,SAAA,CAAA,CAAA,CAAA;AAAEqI,IAAAA,WAAW,GAAArI,SAAA,CAAA,CAAA,CAAA,CAAA;AAElCa,EAAAA,eAAS,CAAC,YAAK;AACbwG,IAAAA,eAAe,CAACH,GAAG,CAACkB,cAAc,CAAC,CAAA;AACrC,GAAC,EAAE,CAACA,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,OAAO,CAACA,cAAc,EAAEC,WAAW,CAAC,CAAA;AACtC,CAAC,CAAA;IAEYC,WAAW,GAAG,SAAdA,WAAWA,GAAQ;AAC9B,EAAA,IAAM7C,OAAO,GAAGC,gBAAU,CAACuC,eAAe,CAAC,CAAA;EAC3CjF,oBAAe,CAACyC,OAAO,CAAC,CAAA;AACxB,EAAA,OAAOA,OAAO,CAAA;AAChB,EAAC;IAOY8C,gBAAgB,GAA8B,SAA9CA,gBAAgBA,CAAAnK,IAAA,EAGxB;AAAA,EAAA,IAFH0B,QAAQ,GAAA1B,IAAA,CAAR0B,QAAQ;IACRqI,QAAQ,GAAA/J,IAAA,CAAR+J,QAAQ,CAAA;AAER,EAAA,IAAAK,iBAAA,GAAsCN,gBAAgB,CAACC,QAAQ,CAAC;AAAzDC,IAAAA,cAAc,GAAAI,iBAAA,CAAA,CAAA,CAAA;AAAEH,IAAAA,WAAW,GAAAG,iBAAA,CAAA,CAAA,CAAA,CAAA;AAClC,EAAA,OACElK,yBAAC,CAAAC,aAAA,CAAA0J,eAAe,CAACvB,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAE;AAAEwB,MAAAA,QAAQ,EAAEC,cAAc;AAAEC,MAAAA,WAAW,EAAXA,WAAAA;AAAW,KAAA;KACrEvI,QAAQ,CACgB,CAAA;AAE/B;;ACvDa2I,IAAAA,kBAAmB,0BAAAC,MAAA,EAAA;AAAA,EAAA,SAAAD,kBAAA,GAAA;AAAA,IAAA,IAAAE,KAAA,CAAA;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAA5G,SAAA,CAAA6G,MAAA,EAAAC,IAAA,GAAAC,IAAAA,KAAA,CAAAH,IAAA,GAAAI,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA,EAAA,EAAA;AAAAF,MAAAA,IAAA,CAAAE,IAAA,CAAAhH,GAAAA,SAAA,CAAAgH,IAAA,CAAA,CAAA;AAAA,KAAA;IAAAL,KAAA,GAAAD,MAAA,CAAAO,IAAA,CAAAlH,KAAA,CAAA2G,MAAA,EAAA,CAAA,IAAA,CAAA,CAAAQ,MAAA,CAAAJ,IAAA,CAAA,CAAA,IAAA,IAAA,CAAA;IAAAH,KAAA,CAC9BQ,OAAO,GAAG,+BAA+B,CAAA;AAAA,IAAA,OAAAR,KAAA,CAAA;AAAA,GAAA;EAAAS,cAAA,CAAAX,kBAAA,EAAAC,MAAA,CAAA,CAAA;AAAA,EAAA,OAAAD,kBAAA,CAAA;AAAA,CAAAY,eAAAA,gBAAA,CADHC,KAAK,CAAA;;;ICuBhCC,oBAAoB,GAAkC,SAAtDA,oBAAoBA,CAAAnL,IAAA,EAM5B;AAAA,EAAA,IALH8E,QAAQ,GAAA9E,IAAA,CAAR8E,QAAQ;IACRsG,gBAAgB,GAAApL,IAAA,CAAhBoL,gBAAgB;IAChB7C,KAAK,GAAAvI,IAAA,CAALuI,KAAK;IACL8C,QAAQ,GAAArL,IAAA,CAARqL,QAAQ;AACLhF,IAAAA,IAAI,GAAAC,6BAAA,CAAAtG,IAAA,EAAAuG,SAAA,CAAA,CAAA;AAEP,EAAA,IAAA3E,SAAA,GAA0CC,cAAQ,CAAiB,EAAE,CAAC;AAA/DyJ,IAAAA,aAAa,GAAA1J,SAAA,CAAA,CAAA,CAAA;AAAE2J,IAAAA,gBAAgB,GAAA3J,SAAA,CAAA,CAAA,CAAA,CAAA;AACtC,EAAA,IAAA4J,YAAA,GAAqBtB,WAAW,EAAE;IAA1BH,QAAQ,GAAAyB,YAAA,CAARzB,QAAQ,CAAA;AAEhB,EAAA,IAAAlC,UAAA,GAA4BhG,cAAQ,CAClC,SAAS,CACV;AAFM4J,IAAAA,MAAM,GAAA5D,UAAA,CAAA,CAAA,CAAA;AAAE6D,IAAAA,SAAS,GAAA7D,UAAA,CAAA,CAAA,CAAA,CAAA;AAIxBpF,EAAAA,eAAS,CAAC,YAAK;AACb,IAAA,IAAMkJ,kBAAkB,gBAAA,YAAA;MAAA,IAAAhJ,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAAC,OAAA,GAAA;QAAA,IAAAC,KAAA,EAAAsI,aAAA,CAAA;AAAA,QAAA,OAAAzI,mBAAA,EAAA,CAAAK,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OACLwB,QAAQ,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;cAAxB9B,KAAK,GAAAI,QAAA,CAAAG,IAAA,CAAA;cAAA,IAEP,EAAA,OAAO6H,gBAAgB,KAAK,QAAQ,CAAA,EAAA;AAAAhI,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OAChBsI,KAAK,CAACR,gBAAgB,EAAE;AAC5CS,gBAAAA,OAAO,EAAE;AACPC,kBAAAA,aAAa,cAAY9I,KAAO;AAChC+I,kBAAAA,MAAM,EAAE,kBAAA;AACT,iBAAA;AACF,eAAA,CAAC,CAACC,IAAI,CAAC,UAACC,QAAQ,EAAA;AAAA,gBAAA,OAAKA,QAAQ,CAACC,IAAI,EAAE,CAAA;eAAC,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cALtCZ,aAAa,GAAAlI,QAAA,CAAAG,IAAA,CAAA;AAAAH,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;cAAA,OAOS8H,gBAAgB,CAACpI,KAAK,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA;cAA7CsI,aAAa,GAAAlI,QAAA,CAAAG,IAAA,CAAA;AAAA,YAAA,KAAA,EAAA;cAEfgI,gBAAgB,CAACD,aAAa,CAAC,CAAA;cAC/BI,SAAS,CAAC,SAAS,CAAC,CAAA;AAAC,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAtI,QAAA,CAAAM,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAX,OAAA,CAAA,CAAA;OACtB,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAfK4I,kBAAkBA,GAAA;AAAA,QAAA,OAAAhJ,KAAA,CAAAgB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAevB,EAAA,CAAA;AAED+H,IAAAA,kBAAkB,EAAE,CAAA,OAAA,CAAM,CAAC,UAACnJ,KAAK,EAAI;AACnC,MAA4C;AAC1CiB,QAAAA,OAAO,CAACjB,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,OAAA;MACDkJ,SAAS,CAAC,OAAO,CAAC,CAAA;AACpB,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACN,gBAAgB,EAAEtG,QAAQ,CAAC,CAAC,CAAA;AAEhC,EAAA,QAAQ2G,MAAM;AACZ,IAAA,KAAK,SAAS;AACZ,MAAA,OACEvL,yBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,QAAAA,SAAS,EAAC,cAAA;AAAc,OAAA,EAC3BF,yBAAA,CAAAC,aAAA,CAACgM,wBAAiB,EAAA;AAAC9L,QAAAA,KAAK,EAAE;AAAEO,UAAAA,MAAM,EAAE,QAAA;AAAU,SAAA;AAAA,OAAA,CAAI,CAC9C,CAAA;AAEV,IAAA,KAAK,SAAS;AACZ,MAAA,OACEV,yBAAA,CAAAC,aAAA,CAACiM,2BAAoB,EAAA5F,QAAA,CAAA;AACnB6F,QAAAA,KAAK,EAAEtC,QAAQ,KAAK,IAAI,GAAG,cAAc,GAAG,cAAc;AAC1DuC,QAAAA,sBAAsB,EAAE/D,KAAK;AAC7B+C,QAAAA,aAAa,EAAEA,aAAa;AAC5BD,QAAAA,QAAQ,EAAEA,QAAAA;OACNhF,EAAAA,IAAI,CAAA,CACR,CAAA;AAEN,IAAA,KAAK,OAAO;MACV,MAAM,IAAIgE,kBAAkB,EAAE,CAAA;AAChC,IAAA;AACE,MAAA,OAAO,IAAI,CAAA;AACd,GAAA;AACH;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@entur/loader"),r=require("@entur/alert"),n=require("@entur/tokens"),o=require("@entur/typography"),a=require("@entur-partner/util"),i=require("@entur-partner/common"),u=require("@auth0/auth0-spa-js");function c(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=c(t),l=c(u);function f(){f=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",a=n.asyncIterator||"@@asyncIterator",i=n.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=Object.create((e&&e.prototype instanceof h?e:h).prototype),a=new I(n||[]);return o._invoke=function(t,e,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var u=E(i,r);if(u){if(u===l)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=s(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),o}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l={};function h(){}function p(){}function d(){}var g={};u(g,o,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(T([])));y&&y!==e&&r.call(y,o)&&(g=y);var m=d.prototype=h.prototype=Object.create(g);function w(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(o,a,i,u){var c=s(t[o],t,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,i,u)}),(function(t){n("throw",t,i,u)})):e.resolve(f).then((function(t){l.value=t,i(l)}),(function(t){return n("throw",t,i,u)}))}u(c.arg)}var o;this._invoke=function(t,r){function a(){return new e((function(e,o){n(t,r,e,o)}))}return o=o?o.then(a,a):a()}}function E(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=s(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,l;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,a=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return a.next=a}}return{next:S}}function S(){return{value:void 0,done:!0}}return p.prototype=d,u(m,"constructor",d),u(d,"constructor",p),p.displayName=u(d,i,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,i,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},w(x.prototype),u(x.prototype,a,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new x(c(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},w(m),u(m,i,"Generator"),u(m,o,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=T,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return i.type="throw",i.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(u&&c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,l):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),l},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}function h(t,e,r,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function p(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function i(t){h(a,n,o,i,u,"next",t)}function u(t){h(a,n,o,i,u,"throw",t)}i(void 0)}))}}function d(){return d=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},d.apply(this,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function y(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function m(t,e,r){return m=y()?Reflect.construct.bind():function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&v(o,r.prototype),o},m.apply(null,arguments)}function w(t){var e="function"==typeof Map?new Map:void 0;return w=function(t){if(null===t||-1===Function.toString.call(t).indexOf("[native code]"))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return m(t,arguments,g(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),v(r,t)},w(t)}function x(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)e.indexOf(r=a[n])>=0||(o[r]=t[r]);return o}var E={status:"AUTHENTICATING"};function b(t,e){switch(e.type){case"AUTHENTICATED":return{status:"AUTHENTICATED",user:e.data.user};case"LOGOUT":return E;case"ERROR":return{error:e.error,status:"ERROR"};case"NOT_AUTHENTICATED":return d({},t,{status:"NOT_AUTHENTICATED"});default:return t}}var O=["children","decorateUser"],I=function(t){return void 0===t&&(t="/"),window.history.replaceState({},document.title,t)},T=s.default.createContext(void 0),S=function(){var e=t.useContext(T);return a.assertIsDefined(e,"A `<Auth0Provider>` component needs to be higher up in the component hierarchy."),e},k={status:"AUTHENTICATING"},L=function(e){var r=e.children,n=e.decorateUser,o=x(e,O),i=t.useReducer(b,k),u=i[0],c=i[1],h=t.useState(),g=h[0],v=h[1];t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e,r,a,i;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.default(o);case 2:if(v(e=t.sent),!window.location.search.includes("code=")){t.next=11;break}return t.next=7,e.handleRedirectCallback();case 7:r=localStorage.getItem("@entur-partner:post-login-route"),localStorage.removeItem("@entur-partner:post-login-route"),I(r||"/");case 11:return t.next=13,e.isAuthenticated();case 13:if(!t.sent){t.next=27;break}return t.next=17,e.getUser();case 17:return a=t.sent,t.next=20,e.getTokenSilently();case 20:return i=t.sent,t.next=23,n(a,i);case 23:c({type:"AUTHENTICATED",data:{user:t.sent}}),t.next=28;break;case 27:c({type:"NOT_AUTHENTICATED"});case 28:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();t().catch(function(){var e=p(f().mark((function e(r){var n,o,a;return f().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,o=parseInt(null!=(n=localStorage.getItem("@entur-partner:last-login-retry"))?n:"0"),!((a=Math.floor(Date.now()/1e3))-o>=120)){e.next=12;break}return localStorage.setItem("@entur-partner:last-login-retry",a.toString()),I("/"),e.next=10,t();case 10:e.next=13;break;case 12:throw r;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),c({type:"ERROR",error:r});case 18:case"end":return e.stop()}}),e,null,[[0,15]])})));return function(t){return e.apply(this,arguments)}}())}),[]);var y=function(){var t=p(f().mark((function t(e){var r,n;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:void 0===e&&(e=window.location.origin),a.assertIsDefined(g),r=window,n=r.location,localStorage.setItem("@entur-partner:post-login-route",""+n.pathname+n.search),g.loginWithRedirect({redirect_uri:e});case 5:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),m=function(){var t=p(f().mark((function t(e){return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a.assertIsDefined(g),t.abrupt("return",g.getTokenSilently(e));case 2:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();return s.default.createElement(T.Provider,{value:d({},u,{auth0Client:g,logout:function(){a.assertIsDefined(g);var t=window.location;g.logout({returnTo:t.protocol+"//"+t.hostname+":"+t.port})},getToken:m,login:y})},r)},A=function(t){return s.default.createElement("div",{className:"epp-environment-banner",style:{position:"fixed",zIndex:9999,top:0,left:0,right:0,width:"100vw",height:"16px",backgroundColor:i.getColorForEnvironment(t.environment)}})},C=function(e){var r=e.redirectUri,n=S().login;return t.useEffect((function(){n(r)}),[n,r]),null},N=function(t){var i=t.children,u=t.redirectUri,c=S(),l=c.user,f=c.error,h=c.logout,p=c.getToken;switch(c.status){case"NOT_AUTHENTICATED":return s.default.createElement(C,{redirectUri:u});case"AUTHENTICATED":return a.assertIsDefined(l),s.default.createElement(s.default.Fragment,null,i({user:l,logout:h,getToken:p}));case"AUTHENTICATING":return s.default.createElement(e.Loader,{style:{marginTop:n.space.extraLarge9}},"Authenticating");case"ERROR":return s.default.createElement(r.BannerAlertBox,{variant:"error",title:"Authentication failed",style:{maxWidth:"600px",margin:"0 auto"}},s.default.createElement(o.Paragraph,null,"Something went wrong while trying to authenticate you. If the problem persists you should contact"," ",s.default.createElement(o.Link,{href:"mailto:support@entur.org"},"support@entur.org")," to get it resolved."),s.default.createElement(o.Paragraph,null,"Authentication failed with: ",s.default.createElement(o.CodeText,null,null==f?void 0:f.toString())));default:return null}},P=["navigate","children","onClick","target"],_=s.default.createContext({addItems:function(){},getItemsForPath:function(){return[]},getMFNavigate:function(){},setMFNavigate:function(){}}),j=function(){return t.useContext(_)},R={get:function(){return localStorage.getItem("EP::activeOrgId")},set:function(t){return localStorage.setItem("EP::activeOrgId",t)}},U={get:function(){return localStorage.getItem("EP::locale")},set:function(t){return localStorage.setItem("EP::locale",t)}},D=s.default.createContext(void 0),F=s.default.createContext(void 0),G=function(){var e=t.useContext(F);return a.assertIsDefined(e),e},M=function(t){var e,r;function n(){for(var e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(e=t.call.apply(t,[this].concat(n))||this).message="Failed fetching organisations",e}return r=t,(e=n).prototype=Object.create(r.prototype),e.prototype.constructor=e,v(e,r),n}(w(Error)),H=["getToken","getOrganisations","value","onChange"];exports.AppShell=function(t){var e=t.children,r=t.environment;return s.default.createElement(L,{audience:t.audience,domain:t.domain,client_id:t.clientId,decorateUser:t.decorateUser},s.default.createElement(N,{redirectUri:t.redirectUri},(function(t){return s.default.createElement(s.default.Fragment,null,r&&r!==i.Environment.Production&&s.default.createElement(A,{environment:r}),e(t))})))},exports.LanguageProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(e.language))[1],t.useEffect((function(){U.set(n)}),[n=r[0]]),[n,o]);return s.default.createElement(F.Provider,{value:{language:i[0],setLanguage:i[1]}},a)},exports.MenuProvider=function(e){var r=e.children,n=t.useState({}),o=n[0],a=n[1],i=t.useState({}),u=i[0],c=i[1],l=t.useCallback((function(t,e){a((function(r){var n;return d({},r,((n={})[e]=t,n))}))}),[a]);return s.default.createElement(_.Provider,{value:{addItems:l,getItemsForPath:function(t){var e;return null!=(e=o[t])?e:[]},getMFNavigate:function(t){return u[t]},setMFNavigate:function(t,e){return c((function(r){var n;return d({},r,((n={})[t]=e,n))}))}}},r)},exports.MicroFrontendLink=function(t){var e=t.navigate,r=t.children,n=t.onClick,o=t.target,a=x(t,P);return s.default.createElement("a",d({onClick:function(t){try{n&&n(t)}catch(e){throw t.preventDefault(),e}t.defaultPrevented||0!==t.button||o&&"_self"!==o||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||(t.preventDefault(),e())},target:o},a),r)},exports.OrganisationProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(Number(e.organisationId)))[1],t.useEffect((function(){R.set(n.toString())}),[n=r[0]]),[n,o]);return s.default.createElement(D.Provider,{value:{organisationId:i[0],setOrganisationId:i[1]}},a)},exports.OrganisationSelector=function(r){var n=r.getToken,o=r.getOrganisations,a=r.value,u=r.onChange,c=x(r,H),l=t.useState([]),h=l[0],g=l[1],v=G().language,y=t.useState("LOADING"),m=y[0],w=y[1];switch(t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e,r;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n();case 2:if(e=t.sent,"string"!=typeof o){t.next=9;break}return t.next=6,fetch(o,{headers:{Authorization:"Bearer "+e,Accept:"application/json"}}).then((function(t){return t.json()}));case 6:r=t.sent,t.next=12;break;case 9:return t.next=11,o(e);case 11:r=t.sent;case 12:g(r),w("SUCCESS");case 14:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();t().catch((function(t){w("ERROR")}))}),[o,n]),m){case"LOADING":return s.default.createElement("div",{className:"eds-contrast"},s.default.createElement(e.SkeletonRectangle,{style:{height:"2.4rem"}}));case"SUCCESS":return s.default.createElement(i.OrganisationDropDown,d({label:"nb"===v?"Organisasjon":"Organisation",selectedOrganisationId:a,organisations:h,onChange:u},c));case"ERROR":throw new M;default:return null}},exports.OrganisationsError=M,exports.languageStorage=U,exports.organisationStorage=R,exports.useLanguage=G,exports.useMFNavigation=function(t){return(0,j().getMFNavigate)(t)},exports.useMenu=j,exports.useMenuGroupItems=function(e){return t.useContext(_).getItemsForPath(e)},exports.useOrganisation=function(){var e=t.useContext(D);return a.assertIsDefined(e),e},exports.useOrganisationId=function(){var e=t.useContext(D);return a.assertIsDefined(e),e.organisationId};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@entur/alert"),r=require("@entur/typography"),n=require("@entur/loader"),o=require("@entur/tokens"),a=require("@auth0/auth0-react"),i=require("@entur-partner/common"),u=require("@entur-partner/util");function c(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var l=c(t);function s(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(s=function(){return!!t})()}function f(){f=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var a=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new C(n||[]);return o(a,"_invoke",{value:I(t,r,i)}),a}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var p="suspendedStart",d="suspendedYield",g="executing",v="completed",y={};function m(){}function x(){}function w(){}var E={};l(E,i,(function(){return this}));var b=Object.getPrototypeOf,O=b&&b(b(F([])));O&&O!==r&&n.call(O,i)&&(E=O);var L=w.prototype=m.prototype=Object.create(E);function P(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function r(o,a,i,u){var c=h(t[o],t,a);if("throw"!==c.type){var l=c.arg,s=l.value;return s&&"object"==typeof s&&n.call(s,"__await")?e.resolve(s.__await).then((function(t){r("next",t,i,u)}),(function(t){r("throw",t,i,u)})):e.resolve(s).then((function(t){l.value=t,i(l)}),(function(t){return r("throw",t,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function I(e,r,n){var o=p;return function(a,i){if(o===g)throw Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=j(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=g;var l=h(e,r,n);if("normal"===l.type){if(o=n.done?v:d,l.arg===y)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=v,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=h(o,e.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,y;var i=a.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function F(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return x.prototype=w,o(L,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:x,configurable:!0}),x.displayName=l(w,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===x||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,c,"GeneratorFunction")),t.prototype=Object.create(L),t},e.awrap=function(t){return{__await:t}},P(S.prototype),l(S.prototype,u,(function(){return this})),e.AsyncIterator=S,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new S(s(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},P(L),l(L,c,"Generator"),l(L,i,(function(){return this})),l(L,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=F,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return u.type="throw",u.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(c&&l){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:F(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}function h(t,e,r,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function p(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function i(t){h(a,n,o,i,u,"next",t)}function u(t){h(a,n,o,i,u,"throw",t)}i(void 0)}))}}function d(){return d=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},d.apply(this,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(s())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&v(o,r.prototype),o}(t,arguments,g(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),v(r,t)},y(t)}function m(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)e.indexOf(r=a[n])>=0||(o[r]=t[r]);return o}var x=function(t){return l.default.createElement("div",{className:"epp-environment-banner",style:{position:"fixed",zIndex:9999,top:0,left:0,right:0,width:"100vw",height:"16px",backgroundColor:i.getColorForEnvironment(t.environment)}})},w=function(i){var c=i.children,s=i.decorateUser,h=t.useState(void 0),d=h[0],g=h[1],v=a.useAuth0(),y=v.user,m=v.getAccessTokenSilently,x=v.loginWithRedirect,w=v.logout,E=v.isLoading,b=v.isAuthenticated,O=v.error;return t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,m();case 3:return e=t.sent,t.next=6,s(y,e);case 6:g(t.sent),t.next=13;break;case 10:t.prev=10,t.t0=t.catch(0),console.error("Error fetching user data:",t.t0);case 13:case"end":return t.stop()}}),t,null,[[0,10]])})));return function(){return t.apply(this,arguments)}}();b&&t()}),[s,m,b,y]),E||b?E||!d?l.default.createElement(n.Loader,{style:{marginTop:o.space.extraLarge9}},"Authenticating"):O?l.default.createElement(e.BannerAlertBox,{variant:"error",title:"Authentication failed",style:{maxWidth:"600px",margin:"0 auto"}},l.default.createElement(r.Paragraph,null,"Something went wrong while trying to authenticate you. If the problem persists you should contact"," ",l.default.createElement(r.Link,{href:"mailto:support@entur.org"},"support@entur.org")," to get it resolved."),l.default.createElement(r.Paragraph,null,"Authentication failed with: ",l.default.createElement(r.CodeText,null,null==O?void 0:O.toString()))):(u.assertIsDefined(d),l.default.createElement(l.default.Fragment,null,c({user:d,logout:function(){return t=window.location,w({logoutParams:{returnTo:t.protocol+"//"+t.hostname+":"+t.port}});var t},getToken:m}))):(x(),l.default.createElement(n.Loader,{style:{marginTop:o.space.extraLarge9}},"Redirecting to login page"))},E=["navigate","children","onClick","target"],b=l.default.createContext({addItems:function(){},getItemsForPath:function(){return[]},getMFNavigate:function(){},setMFNavigate:function(){}}),O=function(){return t.useContext(b)},L="EP::activeOrgId",P={get:function(){return localStorage.getItem(L)},set:function(t){return localStorage.setItem(L,t)}},S="EP::locale",I={get:function(){return localStorage.getItem(S)},set:function(t){return localStorage.setItem(S,t)}},j=l.default.createContext(void 0),k=l.default.createContext(void 0),_=function(){var e=t.useContext(k);return u.assertIsDefined(e),e},C=function(t){function e(){for(var e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(e=t.call.apply(t,[this].concat(n))||this).message="Failed fetching organisations",e}var r,n;return n=t,(r=e).prototype=Object.create(n.prototype),r.prototype.constructor=r,v(r,n),e}(y(Error)),F=["getToken","getOrganisations","value","onChange"];exports.AppShell=function(t){var e=t.children,r=t.environment;return l.default.createElement(a.Auth0Provider,{domain:t.domain,clientId:t.clientId,authorizationParams:{redirect_uri:window.location.origin,audience:t.audience}},l.default.createElement(w,{decorateUser:t.decorateUser},(function(t){return l.default.createElement(l.default.Fragment,null,r&&r!==i.Environment.Production&&l.default.createElement(x,{environment:r}),e(t))})))},exports.LanguageProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(e.language))[1],t.useEffect((function(){I.set(n)}),[n=r[0]]),[n,o]);return l.default.createElement(k.Provider,{value:{language:i[0],setLanguage:i[1]}},a)},exports.MenuProvider=function(e){var r=e.children,n=t.useState({}),o=n[0],a=n[1],i=t.useState({}),u=i[0],c=i[1],s=t.useCallback((function(t,e){a((function(r){var n;return d({},r,((n={})[e]=t,n))}))}),[a]);return l.default.createElement(b.Provider,{value:{addItems:s,getItemsForPath:function(t){var e;return null!=(e=o[t])?e:[]},getMFNavigate:function(t){return u[t]},setMFNavigate:function(t,e){return c((function(r){var n;return d({},r,((n={})[t]=e,n))}))}}},r)},exports.MicroFrontendLink=function(t){var e=t.navigate,r=t.children,n=t.onClick,o=t.target,a=m(t,E);return l.default.createElement("a",d({onClick:function(t){try{n&&n(t)}catch(e){throw t.preventDefault(),e}t.defaultPrevented||0!==t.button||o&&"_self"!==o||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||(t.preventDefault(),e())},target:o},a),r)},exports.OrganisationProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(Number(e.organisationId)))[1],t.useEffect((function(){P.set(n.toString())}),[n=r[0]]),[n,o]);return l.default.createElement(j.Provider,{value:{organisationId:i[0],setOrganisationId:i[1]}},a)},exports.OrganisationSelector=function(e){var r=e.getToken,o=e.getOrganisations,a=e.value,u=e.onChange,c=m(e,F),s=t.useState([]),h=s[0],g=s[1],v=_().language,y=t.useState("LOADING"),x=y[0],w=y[1];switch(t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e,n;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r();case 2:if(e=t.sent,"string"!=typeof o){t.next=9;break}return t.next=6,fetch(o,{headers:{Authorization:"Bearer "+e,Accept:"application/json"}}).then((function(t){return t.json()}));case 6:n=t.sent,t.next=12;break;case 9:return t.next=11,o(e);case 11:n=t.sent;case 12:g(n),w("SUCCESS");case 14:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();t().catch((function(t){w("ERROR")}))}),[o,r]),x){case"LOADING":return l.default.createElement("div",{className:"eds-contrast"},l.default.createElement(n.SkeletonRectangle,{style:{height:"2.4rem"}}));case"SUCCESS":return l.default.createElement(i.OrganisationDropDown,d({label:"nb"===v?"Organisasjon":"Organisation",selectedOrganisationId:a,organisations:h,onChange:u},c));case"ERROR":throw new C;default:return null}},exports.OrganisationsError=C,exports.languageStorage=I,exports.organisationStorage=P,exports.useLanguage=_,exports.useMFNavigation=function(t){return(0,O().getMFNavigate)(t)},exports.useMenu=O,exports.useMenuGroupItems=function(e){return t.useContext(b).getItemsForPath(e)},exports.useOrganisation=function(){var e=t.useContext(j);return u.assertIsDefined(e),e},exports.useOrganisationId=function(){var e=t.useContext(j);return u.assertIsDefined(e),e.organisationId};
2
2
  //# sourceMappingURL=app-shell.cjs.production.min.js.map
@@ -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","_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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"}
1
+ {"version":3,"file":"app-shell.cjs.production.min.js","sources":["../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 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, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (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 problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\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 decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\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":["EnvironmentBanner","_ref","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","environment","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","logout","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","wrap","_context","prev","next","sent","t0","console","stop","apply","this","arguments","Loader","marginTop","space","extraLarge9","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","_window$location","window","location","logoutParams","returnTo","protocol","hostname","port","getToken","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenu","useContext","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","value","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","LanguageContext","useLanguage","context","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","_ref3","Auth0Provider","domain","clientId","authorizationParams","redirect_uri","origin","audience","params","Environment","Production","activeLanguage","setLanguage","_useLanguageState","language","Provider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","path","prevState","_extends2","_extends","_groups$path","navigation","_extends3","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","event","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","organisationId","setOrganisationId","_useOrganisationState","Number","getOrganisations","onChange","organisations","setOrganisations","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}