{"version":3,"sources":["util/common.ts","clients/apiClientSetup.ts","reportWebVitals.ts","store/globalReducer.ts","store/hooks.ts","components/common/AuthenticatedApp.tsx","store/hooks/useAuthenticatedApp.ts","store/hooks/useApiClient.ts","store/hooks/useAppTitle.ts","routes/Install/InstallViewer.tsx","components/common/user/SignOutButton .tsx","components/common/user/UserMenu.tsx","components/common/PageHeader.tsx","components/common/AppChrome.tsx","routes/LoggedOut.tsx","store/hooks/useControlClient.ts","routes/Notification/NotificationViewer.tsx","routes/Process/ProcessViewer.tsx","routes/RelatedContent/RelatedContentViewer.tsx","components/common/NotFound.tsx","routes/routes.ts","routes/Install/InstallSignin.tsx","appInsights.ts","RouteApp.tsx","store/store.ts","index.tsx"],"names":["getspHostUrl","_localStorage","_localStorage$getItem","urlBasedSpHostUrl","extractSpHostUrl","URLSearchParams","window","location","search","storedRootValue","localStorage","getItem","call","values","JSON","parse","decodeURI","split","join","error","console","log","urlSearchParams","possibleKeys","key","value","Array","from","entries","indexOf","toLowerCase","extractGetParameter","parameterNames","spHostUrl","_getspHostUrl","wpApiDefinition","getWpApi","initApplicationInsights","insightsKey","process","enableAutoRouteTracking","msalConfig","auth","clientId","authority","redirectUri","document","origin","postLogoutRedirectUri","concat","href","cache","storeAuthStateInCookie","cacheLocation","BrowserCacheLocation","LocalStorage","system","loggerOptions","loggerCallback","level","message","containsPii","LogLevel","Error","Info","info","Verbose","debug","Warning","warn","msalInstance","PublicClientApplication","getToken","async","activeAccount","getActiveAccount","accounts","getAllAccounts","length","authPayload","scopes","acquireTokenRedirect","silentAuthPayload","account","authResult","acquireTokenSilent","catch","InteractionRequiredAuthError","accessToken","reportWebVitals","onPerfEntry","Function","then","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","initialGlobalState","globalSlice","createSlice","name","initialState","reducers","setspHostUrl","state","action","payload","actions","globalSelector","global","globalReducer","reducer","useAppDispatch","useDispatch","useAppSelector","useSelector","AuthenticatedApp","useMsalAuthentication","InteractionType","Redirect","pathname","searchParams","useSearchParams","dispatch","getArgumentspHostUrl","useEffect","_spHostUrl$trim","loweredUrlspHostUrl","trim","loweredspHostUrl","useAuthenticatedApp","_jsx","children","AuthenticatedTemplate","Outlet","useApiClientBase","getApiClientBase","wp","WPClient","ApiClientBase","useAppTitle","title","oldTitle","InstallViewer","intl","useIntl","apiClient","formatMessage","id","defaultMessage","BaseApiProvider","client","InstallationControl","SignOutButton","instance","useMsal","IconButton","iconProps","iconName","styles","root","color","onClick","logoutRedirect","e","handleLogout","UserMenu","props","_accounts$","Stack","horizontal","_jsxs","SignedInUserMessage","username","styled","span","_templateObject","_taggedTemplateLiteral","Image","img","CompanyTitle","_templateObject2","Title","_templateObject3","HeaderStack","_templateObject4","WorkPointTheme","palette","blue","NonStyledLink","RouterLink","_templateObject5","PageHeader","to","src","alt","toUpperCase","Item","grow","shrink","disableShrink","AppContainer","div","Content","LoggedOut","Link","useControlClient","_extractGetParameter","ControlClient","Web","NotificationViewer","_urlParams$get","_urlParams$get2","useApiClient","store","configureNotificationStore","solutionUrl","urlParams","currentUICultureName","get","currentCultureName","timezoneGet","timezone","parseInt","Provider","NotificationPane","ProcessViewer","_getProperty","_getProperty2","element","params","businessModuleId","getProperty","entityIdParam","entityId","undefined","locale","runtimeContext","setRuntimeContext","useState","setError","getWP","userCulture","_process$env$REACT_AP","currentUICulture","CurrentUICulture","currentCulture","CurrentCulture","modernUIVersion","fullPage","WorkPointExpress","ClientType","Express","Embed","timeZone","TimeZoneInfo","date","Date","now","currentUser","dateAndTime","toLocaleDateString","toLocaleTimeString","_getProperty3","_getProperty4","processId","processInstanceId","processEventDetails","parameters","addProperty","items","decodeURIComponent","express","teamsActivity","Object","keys","forEach","findIndex","n","eventBus","runProcess","status","UnauthorizedError","logout","GenericError","_Fragment","Process","urlParameters","urlPropertyName","obj","objPropertyName","property","RelatedContentViewer","siteUrl","itemUrl","RelatedContent","relatedContent","ItemUrl","SiteUrl","NotFound","AppRoutes","InstallSignin","navigate","useNavigate","showUninstallMessage","setShowUninstallMessage","WPInstallationContainer","HeaderContainer","style","marginRight","ContentContainer","MessageBar","messageBarType","MessageBarType","success","isMultiline","onDismiss","dismissUninstallMessage","history","replaceState","dismissButtonAriaLabel","Headline","Description","PrimaryButton","text","width","alignSelf","marginTop","Text","InstallationTheme","neutralSecondary","reactPlugin","ReactPlugin","ApplicationInsights","config","instrumentationKey","extensions","loadAppInsights","withAITracking","RouteApp","subDomain","subDomainRoute","hostname","filter","p","ApiClientProvider","prevSpHostUrl","setPrevSpHostUrl","setApiClient","getApiClient","url","spClient","LambdaFetchClient","URL","pnPjsSetup","spConfig","aadTokenProviderFactory","getTokenProvider","pageContext","web","absoluteUrl","legacyPageContext","formDigestTimeoutSeconds","formDigestValue","spfxContext","userPrincipalName","graphConfig","ApiClient","connectSignalR","updateApiClient","set","ApiProvider","Routes","route","landingPage","Route","path","getLandingPageRoute","getRoutes","globalPersistConfig","version","storage","stateReconciler","autoMergeLevel2","throttle","appReducer","combineReducers","persistReducer","configureStore","middleware","getDefaultMiddleware","serializableCheck","ignoredActions","persistor","persistStore","initializeFileTypeIcons","initializeIcons","ReactDOM","render","React","StrictMode","IntlProvider","defaultLocale","MsalProvider","PersistGate","loading","ThemeProvider","theme","BrowserRouter","getElementById"],"mappings":"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","file":"static/js/main.0504d3e4.chunk.js","sourcesContent":["export const getspHostUrl = (): string | null => {\r\n const urlBasedSpHostUrl = extractSpHostUrl(new URLSearchParams(window.location.search))\r\n\r\n if (urlBasedSpHostUrl) return urlBasedSpHostUrl\r\n\r\n /**\r\n * Side loaded cache sphostUrl for auth purposes @todo: Improve this!\r\n * persist:global\r\n */\r\n const storedRootValue = localStorage?.getItem?.(\"persist:global\")\r\n\r\n if (storedRootValue) {\r\n try {\r\n let values = JSON.parse(storedRootValue)\r\n return decodeURI(values[\"spHostUrl\"].split('\"').join(\"\"))\r\n } catch (error) {\r\n console.log(\r\n \"Could not determine SP host url from cache in 'getspHostUrl' call. \",\r\n error\r\n )\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\n/**\r\n * Fetch SphostUrl arguemnent from URL.\r\n * Extra Sanity check for compatible URL.\r\n */\r\nexport const extractSpHostUrl = (urlSearchParams: URLSearchParams): string | null => {\r\n /**\r\n * Possible solution URL identifiers.\r\n */\r\n const possibleKeys = [\"sphosturl\", \"solutionurl\"]\r\n\r\n for (const [key, value] of Array.from(urlSearchParams.entries())) {\r\n if (\r\n possibleKeys.indexOf(key.toLowerCase()) !== -1 &&\r\n typeof value === \"string\" &&\r\n value !== \"\" &&\r\n value.toLowerCase().indexOf(\"https\") !== -1\r\n )\r\n return value\r\n }\r\n\r\n return null\r\n}\r\n\r\n/**\r\n * Extracts non-empty GET parameters from URL.\r\n */\r\nexport const extractGetParameter = (\r\n urlSearchParams: URLSearchParams,\r\n parameterNames: string[]\r\n): string | null => {\r\n for (const [key, value] of Array.from(urlSearchParams.entries())) {\r\n if (\r\n parameterNames.indexOf(key.toLowerCase()) !== -1 &&\r\n typeof value === \"string\" &&\r\n value !== \"\"\r\n )\r\n return value\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const isEnv = (envTarget: string): boolean =>\r\n process.env.REACT_APP_STAGE?.toLowerCase?.() === envTarget?.toLowerCase?.()\r\n\r\nexport const isDev = (): boolean => process.env.REACT_APP_STAGE?.toLowerCase?.() === \"development\"\r\n","import { ISPFXContext } from \"@pnp/sp\"\r\nimport { LambdaFetchClient } from \"@workpoint/components/lib/helpers/clientHelper\"\r\nimport { PublicClientApplication } from \"@azure/msal-browser/dist/app/PublicClientApplication\"\r\nimport { WPClient } from \"@workpoint/components/lib/models/WPClient\"\r\nimport { ApiClient, getWpApi } from \"@workpoint/components/lib/clients/ApiClient\"\r\nimport { initApplicationInsights } from \"@workpoint/components/lib/helpers/insights\"\r\nimport { getspHostUrl } from \"../util/common\"\r\nimport { LogLevel } from \"@azure/msal-common\"\r\nimport {\r\n BrowserCacheLocation,\r\n Configuration,\r\n InteractionRequiredAuthError,\r\n RedirectRequest,\r\n SilentRequest\r\n} from \"@azure/msal-browser\"\r\nimport { ApiClientBase } from \"@workpoint/components/lib/clients/ApiClientBase\"\r\n\r\nconst spHostUrl = getspHostUrl() ?? \"\"\r\nconst wpApiDefinition = getWpApi()\r\n\r\ninitApplicationInsights(\r\n wpApiDefinition.insightsKey,\r\n \"WorkPointEmbed\",\r\n process.env.REACT_APP_VERSION!,\r\n spHostUrl,\r\n {\r\n enableAutoRouteTracking: true\r\n }\r\n)\r\n\r\nexport const msalConfig: Configuration = {\r\n auth: {\r\n clientId: process.env.REACT_APP_CLIENT_ID as string,\r\n authority: \"https://login.microsoftonline.com/common\",\r\n redirectUri: document.location.origin,\r\n postLogoutRedirectUri: `${document.location.href}` // Parameters needed for switching accounts in process.\r\n },\r\n cache: {\r\n storeAuthStateInCookie: false,\r\n cacheLocation: BrowserCacheLocation.LocalStorage\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level: LogLevel, message: any, containsPii: boolean) => {\r\n if (containsPii) {\r\n return\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message)\r\n return\r\n case LogLevel.Info:\r\n console.info(message)\r\n return\r\n case LogLevel.Verbose:\r\n console.debug(message)\r\n return\r\n case LogLevel.Warning:\r\n console.warn(message)\r\n return\r\n default:\r\n return\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig)\r\n\r\nconst getToken = async (scopes: string[]): Promise => {\r\n const activeAccount = msalInstance.getActiveAccount() // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = msalInstance.getAllAccounts()\r\n\r\n if (!activeAccount && accounts.length === 0) {\r\n /*\r\n * User is not signed in. Throw error or wait for user to login.\r\n * Do not attempt to log a user in outside of the context of MsalProvider\r\n */\r\n\r\n const authPayload: RedirectRequest = {\r\n scopes\r\n }\r\n\r\n await msalInstance.acquireTokenRedirect(authPayload)\r\n\r\n return \"\"\r\n }\r\n\r\n const silentAuthPayload: SilentRequest = {\r\n scopes,\r\n account: activeAccount || accounts[0]\r\n }\r\n\r\n const authResult = await msalInstance.acquireTokenSilent(silentAuthPayload).catch((error) => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n msalInstance.acquireTokenRedirect({ scopes })\r\n return\r\n }\r\n return undefined\r\n })\r\n\r\n return authResult?.accessToken || \"\"\r\n}\r\n\r\nexport const getApiClientBase = () => {\r\n const wp = new WPClient(() => getToken(wpApiDefinition.scopes.split(\";\")))\r\n\r\n const apiClient = new ApiClientBase(wpApiDefinition, wp)\r\n\r\n return apiClient\r\n}\r\n\r\nexport const getApiClient = (url: string, locale?: string) => {\r\n const accounts = msalInstance.getAllAccounts()\r\n const spClient = new LambdaFetchClient(\r\n async () => await getToken([`https://${new URL(url).hostname}/.default`])\r\n )\r\n\r\n const wp = new WPClient(() => getToken(wpApiDefinition.scopes.split(\";\")))\r\n\r\n const pnPjsSetup = {\r\n spConfig: {\r\n aadTokenProviderFactory: {\r\n getTokenProvider: async () => ({\r\n getToken: async (resource: string) => {\r\n return await getToken([`https://${new URL(url).hostname}/.default`])\r\n }\r\n })\r\n },\r\n pageContext: {\r\n web: { absoluteUrl: \"\" },\r\n legacyPageContext: {\r\n formDigestTimeoutSeconds: 0,\r\n formDigestValue: \"\"\r\n }\r\n },\r\n spfxContext: {\r\n pageContext: {\r\n legacyPageContext: {\r\n userPrincipalName: accounts?.[0].username\r\n },\r\n web: {\r\n absoluteUrl: url\r\n }\r\n }\r\n }\r\n } as ISPFXContext,\r\n graphConfig: {\r\n aadTokenProviderFactory: {\r\n getTokenProvider: async () => ({\r\n getToken: async (resource: string) => {\r\n return await getToken(process.env.REACT_APP_GRAPH_SCOPES!.split(\";\"))\r\n }\r\n })\r\n },\r\n pageContext: {\r\n web: { absoluteUrl: \"\" },\r\n legacyPageContext: {\r\n formDigestTimeoutSeconds: 0,\r\n formDigestValue: \"\"\r\n }\r\n }\r\n } as ISPFXContext\r\n }\r\n\r\n const apiClient = new ApiClient(\r\n url,\r\n url,\r\n wpApiDefinition,\r\n wp,\r\n pnPjsSetup,\r\n spClient as any,\r\n locale,\r\n locale\r\n )\r\n\r\n apiClient.connectSignalR()\r\n\r\n return apiClient\r\n}\r\n\r\nexport const updateApiClient = (apiClient: ApiClient, url: string) => {\r\n const pnPjsSetup = {\r\n spConfig: {\r\n aadTokenProviderFactory: {\r\n getTokenProvider: async () => ({\r\n getToken: async (resource: string) => {\r\n return await getToken([`https://${new URL(url).hostname}/.default`])\r\n }\r\n })\r\n },\r\n pageContext: {\r\n web: { absoluteUrl: \"\" },\r\n legacyPageContext: {\r\n formDigestTimeoutSeconds: 0,\r\n formDigestValue: \"\"\r\n }\r\n }\r\n } as ISPFXContext,\r\n graphConfig: {\r\n aadTokenProviderFactory: {\r\n getTokenProvider: async () => ({\r\n getToken: async (resource: string) => {\r\n return await getToken(process.env.REACT_APP_GRAPH_SCOPES!.split(\";\"))\r\n }\r\n })\r\n },\r\n pageContext: {\r\n web: { absoluteUrl: \"\" },\r\n legacyPageContext: {\r\n formDigestTimeoutSeconds: 0,\r\n formDigestValue: \"\"\r\n }\r\n }\r\n } as ISPFXContext\r\n }\r\n\r\n apiClient.set(url, url, pnPjsSetup)\r\n\r\n return apiClient\r\n}\r\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { RootState } from \"./store\"\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\"\nimport { getspHostUrl } from \"../util/common\"\n\nexport interface IGlobalState {\n spHostUrl: string | null\n}\n\nexport const initialGlobalState: IGlobalState = {\n spHostUrl: getspHostUrl()\n}\n\nconst globalSlice = createSlice({\n name: \"global\",\n initialState: initialGlobalState,\n reducers: {\n setspHostUrl: (state, action: PayloadAction) => {\n state.spHostUrl = action.payload\n }\n }\n})\n\nexport const { setspHostUrl } = globalSlice.actions\n\nexport const globalSelector = (state: RootState) => state.global\nconst globalReducer = globalSlice.reducer\nexport default globalReducer\n","import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\"\nimport type { RootState, AppDispatch } from \"./store\"\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = () => useDispatch()\nexport const useAppSelector: TypedUseSelectorHook = useSelector\n","import { AuthenticatedTemplate } from \"@azure/msal-react\"\r\nimport { Outlet } from \"react-router-dom\"\r\nimport { useAuthenticatedApp } from \"../../store/hooks/useAuthenticatedApp\"\r\n\r\nfunction AuthenticatedApp(): JSX.Element {\r\n const { spHostUrl } = useAuthenticatedApp()\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default AuthenticatedApp\r\n","import { InteractionType } from \"@azure/msal-browser\"\r\nimport { useMsalAuthentication } from \"@azure/msal-react\"\r\nimport { useEffect } from \"react\"\r\nimport { useSearchParams } from \"react-router-dom\"\r\nimport { extractSpHostUrl } from \"../../util/common\"\r\nimport { globalSelector, setspHostUrl } from \"../globalReducer\"\r\nimport { useAppDispatch, useAppSelector } from \"../hooks\"\r\n\r\nexport function useAuthenticatedApp() {\r\n /**\r\n * Autologin of user.\r\n */\r\n useMsalAuthentication(InteractionType.Redirect, {\r\n scopes: [process.env.REACT_APP_WPAPI_SCOPES as string],\r\n redirectUri: document.location.origin + document.location.pathname\r\n })\r\n\r\n const [searchParams] = useSearchParams()\r\n const { spHostUrl } = useAppSelector(globalSelector)\r\n const dispatch = useAppDispatch()\r\n\r\n const getArgumentspHostUrl = extractSpHostUrl(searchParams)\r\n\r\n /**\r\n * Update spHostUrl if get param is other than already provided.\r\n * In a useEffect to avoid clashing with updates from the component state.\r\n */\r\n useEffect(() => {\r\n if (!!getArgumentspHostUrl) {\r\n const loweredUrlspHostUrl = getArgumentspHostUrl.trim().toLowerCase()\r\n const loweredspHostUrl = spHostUrl?.trim()?.toLowerCase()\r\n\r\n if (loweredUrlspHostUrl !== \"\" && loweredUrlspHostUrl !== loweredspHostUrl) {\r\n dispatch(setspHostUrl(getArgumentspHostUrl))\r\n }\r\n }\r\n }, [getArgumentspHostUrl, spHostUrl, dispatch])\r\n\r\n return { spHostUrl }\r\n}\r\n","import { getApiClientBase } from \"../../clients/apiClientSetup\"\r\nimport { ApiClientBase } from \"@workpoint/components/lib/clients/ApiClientBase\"\r\n\r\nexport function useApiClientBase(): ApiClientBase {\r\n return getApiClientBase()\r\n}\r\n","import { useEffect } from \"react\"\n\nexport const useAppTitle = (title: string) => {\n useEffect(() => {\n const oldTitle = document.title\n title && (document.title = title)\n return () => {\n document.title = oldTitle\n }\n }, [title])\n}\n","import { useIntl } from \"react-intl\"\r\nimport { BaseApiProvider } from \"@workpoint/components/lib/clients/BaseApiProvider\"\r\nimport { InstallationControl } from \"@workpoint/components/lib/components/installation/Installation\"\r\nimport { useApiClientBase } from \"../../store/hooks/useApiClient\"\r\nimport { useAppTitle } from \"../../store/hooks/useAppTitle\"\r\n\r\nexport const InstallViewer = () => {\r\n const intl = useIntl()\r\n\r\n const apiClient = useApiClientBase()\r\n\r\n useAppTitle(\r\n intl.formatMessage({\r\n id: \"workpoint-installation-title\",\r\n defaultMessage: \"WorkPoint Installation\"\r\n })\r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import { useMsal } from \"@azure/msal-react\"\nimport { IconButton } from \"@fluentui/react/lib/Button\"\nimport { useIntl } from \"react-intl\"\n\nfunction handleLogout(instance: any) {\n instance.logoutRedirect().catch((e: any) => {\n console.error(e)\n })\n}\n\n/**\n * Renders a button which, when selected, will redirect the page to the logout prompt\n */\nexport const SignOutButton = () => {\n const { instance } = useMsal()\n const intl = useIntl()\n\n return (\n handleLogout(instance)}\n title={intl.formatMessage({\n id: \"sign-out\",\n defaultMessage: \"Sign out\"\n })}\n />\n )\n}\n","import { AuthenticatedTemplate, useMsal } from \"@azure/msal-react\"\nimport { useIntl } from \"react-intl\"\nimport styled from \"styled-components\"\nimport { SignOutButton } from \"./SignOutButton \"\nimport { Stack } from \"@fluentui/react/lib/Stack\"\n\nexport const UserMenu: React.FC = (props) => {\n const { accounts } = useMsal()\n const intl = useIntl()\n return (\n \n \n
\n \n {intl.formatMessage(\n { id: \"hello-username\", defaultMessage: \"Hello {username}\" },\n { username: accounts?.[0]?.name }\n )}\n \n \n
\n
\n
\n )\n}\n\nconst SignedInUserMessage = styled.span`\n height: 32px;\n display: inline-block;\n vertical-align: middle;\n color: white;\n`\n","import styled from \"styled-components\"\nimport WorkPointTheme from \"@workpoint/components/lib/constants\"\nimport React from \"react\"\nimport { UserMenu } from \"./user/UserMenu\"\nimport { Link as RouterLink } from \"react-router-dom\"\nimport { Stack } from \"@fluentui/react/lib/Stack\"\n\nexport const pageHeaderHeight = 50\n\ninterface IPageHeaderProps {\n title: string\n}\n\nconst PageHeader: React.FC = (props) => {\n return (\n \n \n \"WorkPoint\n \n \n \n WORKPOINT\n {props.title.toUpperCase()}\n \n \n \n {\" \"}\n \n \n \n \n \n )\n}\n\nconst Image = styled.img`\n width: 24px;\n height: 24px;\n margin-left: 30px;\n margin-right: 12px;\n`\n\nconst CompanyTitle = styled.span`\n color: white;\n font-family: Calibri;\n font-size: 12px;\n color: rgba(255, 255, 255, 0.8);\n`\n\nconst Title = styled.span`\n color: white;\n font-family: Calibri;\n font-size: 16px;\n font-weight: bold;\n`\n\nconst HeaderStack = styled(Stack)`\n background-color: ${WorkPointTheme.palette.blue};\n height: ${pageHeaderHeight}px;\n display: flex;\n align-items: center;\n`\n\nconst NonStyledLink = styled(RouterLink)`\n text-decoration: none;\n`\n\nexport default PageHeader\n","import styled from \"styled-components\"\nimport { pageHeaderHeight } from \"./PageHeader\"\n\nexport const AppContainer = styled.div`\n box-sizing: border-box;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`\n\nexport const Container = styled.div`\n box-sizing: border-box;\n flex-direction: row;\n justify-content: center;\n flex-grow: 1;\n margin: 0 auto;\n width: 100%;\n position: relative;\n display: flex;\n overflow: hidden;\n`\n\nexport const Content = styled.div`\n box-sizing: border-box;\n padding-left: 40px;\n padding-top: 40px;\n max-width: 100%;\n width: 100%;\n overflow-y: auto;\n max-height: calc(100vh - ${pageHeaderHeight}px);\n`\n","import React from \"react\"\nimport { useIntl } from \"react-intl\"\nimport { Link } from \"react-router-dom\"\nimport { AppContainer, Content } from \"../components/common/AppChrome\"\nimport PageHeader from \"../components/common/PageHeader\"\n\nexport const LoggedOut: React.FC = () => {\n const intl = useIntl()\n return (\n \n \n \n

\n {intl.formatMessage({\n id: \"logged-out\",\n defaultMessage: \"You are logged out of the WorkPoint.\"\n })}\n

\n \n {intl.formatMessage({\n id: \"click-here-to-login\",\n defaultMessage: \"Click here to login.\"\n })}\n \n
\n
\n )\n}\n","import { useSearchParams } from \"react-router-dom\"\nimport { ControlClient } from \"@workpoint/components/lib/models/ControlClient\"\nimport { extractGetParameter } from \"../../util/common\"\n\nexport function useControlClient(): ControlClient {\n const [searchParams] = useSearchParams()\n const client = extractGetParameter(searchParams, [\"caller\"])?.toLowerCase() || ControlClient.Web\n\n return client as ControlClient\n}\n","import { useMsal } from \"@azure/msal-react\"\nimport React from \"react\"\nimport { useIntl } from \"react-intl\"\nimport { Provider } from \"react-redux\"\nimport NotificationPane from \"@workpoint/components/lib/components/notification/NotificationPane\"\nimport { configureNotificationStore } from \"@workpoint/components/lib/components/notification/store/store\"\nimport { useAppTitle } from \"../../store/hooks/useAppTitle\"\nimport { useControlClient } from \"../../store/hooks/useControlClient\"\nimport { useApiClient } from \"@workpoint/components/lib/clients/ApiProvider\"\n\nexport const NotificationViewer: React.FC = () => {\n const { accounts } = useMsal()\n const client = useControlClient()\n const intl = useIntl()\n\n const { apiClient } = useApiClient()\n\n const store = configureNotificationStore(\n apiClient,\n apiClient.solutionUrl,\n client,\n accounts?.[0]?.username\n )\n\n const urlParams = new URLSearchParams(window.location.search.toLowerCase())\n const currentUICultureName = urlParams.get(\"currentuiculturename\") ?? \"en\"\n const currentCultureName = urlParams.get(\"currentculturename\") ?? \"en\"\n const timezoneGet = urlParams.get(\"timezone\")\n\n let timezone = undefined\n if (timezoneGet) timezone = parseInt(timezoneGet)\n\n useAppTitle(\n intl.formatMessage({\n id: \"notification-title\",\n defaultMessage: \"Notifications\"\n })\n )\n\n return (\n \n \n \n )\n}\n","import React, { useEffect, useState } from \"react\"\r\nimport { useIntl } from \"react-intl\"\r\nimport { useApiClient } from \"@workpoint/components/lib/clients/ApiProvider\"\r\nimport { useAppTitle } from \"../../store/hooks/useAppTitle\"\r\nimport {\r\n ClientType,\r\n ISPUserCultureAndTime,\r\n RuntimeContext\r\n} from \"@workpoint/components/lib/models/ProcessInstance\"\r\nimport { Process } from \"@workpoint/components/lib/components/process/Process\"\r\nimport { eventBus, EventDetails, TeamsActivity } from \"@workpoint/components/lib/clients/EventBus\"\r\nimport { getspHostUrl } from \"../../util/common\"\r\nimport { UnauthorizedError } from \"@workpoint/components/lib/components/common/UnauthorizedError\"\r\nimport { GenericError } from \"@workpoint/components/lib/components/common/GenericError\"\r\nimport { useMsal } from \"@azure/msal-react\"\r\nimport { useControlClient } from \"../../store/hooks/useControlClient\"\r\nimport { ControlClient } from \"@workpoint/components/lib/models/ControlClient\"\r\n\r\nexport const ProcessViewer: React.FC = () => {\r\n const intl = useIntl()\r\n const { accounts, instance } = useMsal()\r\n\r\n const { apiClient } = useApiClient()\r\n const client = useControlClient()\r\n\r\n let element\r\n var params = new URLSearchParams(window.location.search)\r\n const solutionUrl = getspHostUrl() ?? \"\"\r\n const businessModuleId = getProperty(params, \"businessmoduleid\") ?? \"\"\r\n const entityIdParam = getProperty(params, \"entityid\") ?? \"\"\r\n const entityId = entityIdParam ? parseInt(entityIdParam) : undefined\r\n const locale = getProperty(params, \"locale\")\r\n const [runtimeContext, setRuntimeContext] = useState()\r\n const [error, setError] = useState()\r\n\r\n useAppTitle(\r\n intl.formatMessage({\r\n id: \"process-title\",\r\n defaultMessage: \"Process\"\r\n })\r\n )\r\n\r\n useEffect(() => {\r\n if (solutionUrl) {\r\n apiClient\r\n .getWP(`/Users/UserCultureAndTimeZoneInfo`)\r\n .then((userCulture: ISPUserCultureAndTime) => {\r\n setRuntimeContext({\r\n currentUICulture: locale ?? userCulture.CurrentUICulture,\r\n currentCulture: userCulture.CurrentCulture,\r\n solutionUrl,\r\n businessModuleId,\r\n entityId,\r\n modernUIVersion: process.env.REACT_APP_VERSION ?? \"\",\r\n fullPage: true,\r\n client:\r\n client === ControlClient.WorkPointExpress\r\n ? ClientType.Express\r\n : ClientType.Embed,\r\n timeZone: userCulture.TimeZoneInfo\r\n })\r\n })\r\n .catch((e: any) => {\r\n const date = new Date(Date.now())\r\n setError({\r\n ...e,\r\n currentUser: accounts?.[0].username,\r\n dateAndTime: `${date.toLocaleDateString(\r\n locale ?? \"en\"\r\n )} ${date.toLocaleTimeString(locale ?? \"en\")}`,\r\n message: e.message\r\n })\r\n })\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (runtimeContext) {\r\n const processId = getProperty(params, \"processid\") ?? undefined\r\n const processInstanceId = getProperty(params, \"processinstanceid\") ?? undefined\r\n if (processId || processInstanceId) {\r\n const processEventDetails = { parameters: {} } as EventDetails\r\n addProperty(params, \"processId\", processEventDetails)\r\n addProperty(params, \"processInstanceId\", processEventDetails)\r\n addProperty(params, \"businessModuleId\", processEventDetails)\r\n addProperty(params, \"entityId\", processEventDetails)\r\n addProperty(params, \"list\", processEventDetails)\r\n addProperty(params, \"folder\", processEventDetails)\r\n const items = getProperty(params, \"items\")\r\n if (items) {\r\n try {\r\n processEventDetails.items = JSON.parse(decodeURIComponent(items))\r\n } catch (error) {}\r\n }\r\n\r\n const express = getProperty(params, \"express\")\r\n if (express) {\r\n try {\r\n processEventDetails.express = JSON.parse(decodeURIComponent(express))\r\n } catch (error) {}\r\n }\r\n\r\n const teamsActivity = {} as TeamsActivity\r\n addProperty(params, \"conversationId\", teamsActivity)\r\n addProperty(params, \"conversationType\", teamsActivity)\r\n addProperty(params, \"tenantId\", teamsActivity)\r\n addProperty(params, \"teamId\", teamsActivity)\r\n addProperty(params, \"channelId\", teamsActivity)\r\n addProperty(params, \"messageId\", teamsActivity)\r\n addProperty(params, \"parentMessageId\", teamsActivity)\r\n if (Object.keys(teamsActivity).length > 0) {\r\n processEventDetails.teamsActivity = teamsActivity\r\n }\r\n\r\n addProperty(\r\n params,\r\n \"parambusinessmoduleid\",\r\n processEventDetails.parameters,\r\n \"BusinessModuleId\"\r\n )\r\n addProperty(params, \"BusinessModuleContentType\", processEventDetails.parameters)\r\n addProperty(params, \"EntitySiteList\", processEventDetails.parameters)\r\n addProperty(params, \"EntitySiteListContentType\", processEventDetails.parameters)\r\n addProperty(params, \"EntitySiteListFolder\", processEventDetails.parameters)\r\n params.forEach((value, key) => {\r\n if (\r\n [\r\n \"sphosturl\",\r\n \"businessmoduleid\",\r\n \"parambusinessmoduleid\",\r\n \"entityid\",\r\n \"locale\",\r\n \"processid\",\r\n \"list\",\r\n \"items\",\r\n \"businessmodulecontenttype\",\r\n \"entitysitelist\",\r\n \"entitysitelistcontenttype\",\r\n \"entitysitelistfolder\",\r\n \"folder\",\r\n \"processinstanceid\",\r\n \"conversationid\",\r\n \"conversationtype\",\r\n \"tenantid\",\r\n \"teamid\",\r\n \"channelid\",\r\n \"messageid\",\r\n \"parentmessageid\"\r\n ].findIndex((n) => n.toLowerCase() === key.toLowerCase()) < 0\r\n ) {\r\n processEventDetails.parameters![key] = value\r\n }\r\n })\r\n\r\n eventBus.runProcess(processEventDetails)\r\n }\r\n }\r\n }, [runtimeContext])\r\n\r\n if (error) {\r\n if (error.status === 401 || error.status === 403) {\r\n element = (\r\n {\r\n instance.logoutRedirect()\r\n }}\r\n />\r\n )\r\n } else {\r\n element = \r\n }\r\n } else {\r\n element = <>{runtimeContext && }\r\n }\r\n\r\n return element\r\n}\r\n\r\nconst getProperty = (urlParameters: URLSearchParams, urlPropertyName: string) => {\r\n for (const [key, value] of urlParameters) {\r\n if (key.toLowerCase() === urlPropertyName.toLowerCase()) {\r\n return value\r\n }\r\n }\r\n}\r\n\r\nconst addProperty = (\r\n urlParameters: URLSearchParams,\r\n urlPropertyName: string,\r\n obj: any,\r\n objPropertyName?: string\r\n) => {\r\n var property = getProperty(urlParameters, urlPropertyName)\r\n if (property) {\r\n obj[objPropertyName ?? urlPropertyName] = property\r\n }\r\n}\r\n","import { useControlClient } from \"../../store/hooks/useControlClient\"\nimport { RelatedContent } from \"@workpoint/components/lib/components/common/RelatedContent\"\nimport { useSearchParams } from \"react-router-dom\"\nimport { extractGetParameter } from \"../../util/common\"\nimport { useAppTitle } from \"../../store/hooks/useAppTitle\"\nimport { useIntl } from \"react-intl\"\n\nexport const RelatedContentViewer = () => {\n const [searchParams] = useSearchParams()\n const client = useControlClient()\n const intl = useIntl()\n const siteUrl = extractGetParameter(searchParams, [\"siteurl\"]) || \"\"\n const itemUrl = extractGetParameter(searchParams, [\"itemurl\"]) || \"\"\n\n useAppTitle(\n intl.formatMessage({\n id: \"related-content-title\",\n defaultMessage: \"Related content\"\n })\n )\n\n return (\n \n )\n}\n","import React from \"react\"\nimport { useIntl } from \"react-intl\"\nimport { AppContainer, Content } from \"./AppChrome\"\nimport PageHeader from \"./PageHeader\"\n\nexport const NotFound: React.FC = () => {\n const intl = useIntl()\n return (\n \n \n \n

\n {intl.formatMessage({\n id: \"not-found\",\n defaultMessage: \"Nothing could be found for the URL you requested\"\n })}\n

\n
\n
\n )\n}\n","export const AppRoutes = {\n LandingPage: \"/\",\n Installer: \"installer\",\n ProcessBuilder: \"process\",\n Notifications: \"notifications\",\n RelatedContent: \"relatedcontent\",\n LoggedOut: \"loggedout\"\n}\n","import * as React from \"react\"\nimport { useIntl } from \"react-intl\"\nimport styled from \"styled-components\"\nimport { InstallationTheme } from \"@workpoint/components/lib/components/installation/InstallationTheme\"\nimport { useNavigate, useSearchParams } from \"react-router-dom\"\nimport { AppRoutes } from \"../routes\"\nimport { extractGetParameter } from \"../../util/common\"\nimport { useState } from \"react\"\nimport { MessageBar, MessageBarType } from \"@fluentui/react/lib/MessageBar\"\nimport { IButtonStyles, PrimaryButton } from \"@fluentui/react/lib/Button\"\nimport { Text } from \"@fluentui/react/lib/Text\"\nimport { Stack } from \"@fluentui/react/lib/Stack\"\n\nexport const InstallSignin = () => {\n const intl = useIntl()\n const navigate = useNavigate()\n const [searchParams] = useSearchParams()\n\n const [showUninstallMessage, setShowUninstallMessage] = useState(\n !!extractGetParameter(searchParams, [\"workpoint365appuninstalled\"])\n )\n\n const dismissUninstallMessage = () => {\n setShowUninstallMessage(false)\n /**\n * Remove single-use uninstall message from URL\n */\n window.history.replaceState({}, \"\", window.location.origin + window.location.pathname)\n }\n\n const signinButton: Partial = {\n root: {\n width: \"max-content\",\n alignSelf: \"center\",\n marginTop: \"24px\"\n }\n }\n\n return (\n \n \n \n \n \n {showUninstallMessage && (\n \n WorkPoint Apps have been uninstalled\n \n )}\n \n {intl.formatMessage({\n defaultMessage: \"Welcome to WorkPoint\",\n id: \"install-welcome-title\"\n })}\n \n \n {intl.formatMessage({\n defaultMessage:\n \"Welcome to WorkPoint installation wizard, which will guide you through the installation of WorkPoint in a few easy steps. In order to use the wizard, you will have to sign in to your account.\",\n id: \"install-welcome-desc\"\n })}\n \n navigate(AppRoutes.Installer)}\n styles={signinButton}\n style={{ marginTop: \"24px\" }}\n />\n \n \n )\n}\n\nconst HeaderContainer = styled.div`\n grid-area: header;\n box-shadow: 1px 1px 3px lightgray;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 20px 0 10px;\n`\n\nconst WPInstallationContainer = styled.div`\n display: grid;\n grid-template-areas:\n \"header\"\n \"stepcontrols\";\n grid-template-rows: 60px calc(100% - 60px);\n grid-template-columns: 100%;\n height: 100vh;\n max-height: 100%;\n`\n\nconst ContentContainer = styled(Stack)`\n grid-area: stepcontrols;\n padding: 8px 30%;\n`\n\nconst Description = styled(Text)`\n font-family: Segoe UI;\n font-size: 18px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0px;\n text-align: left;\n color: ${InstallationTheme.palette.neutralSecondary};\n`\nconst Headline = styled(Text)`\n font-family: Segoe UI;\n font-size: 28px;\n font-weight: 600;\n line-height: 36px;\n letter-spacing: 0px;\n text-align: left;\n padding-top: 24px;\n color: ${InstallationTheme.palette.blue};\n`\n","import { ApplicationInsights } from \"@microsoft/applicationinsights-web\"\nimport { ReactPlugin } from \"@microsoft/applicationinsights-react-js\"\nexport const reactPlugin = new ReactPlugin()\nexport const appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: process.env.REACT_APP_APPINSIGHTS_INSTRUMENTATIONKEY,\n enableAutoRouteTracking: true,\n extensions: [reactPlugin]\n }\n})\nappInsights.loadAppInsights()\n","import { Route, Routes } from \"react-router-dom\"\r\nimport AuthenticatedApp from \"./components/common/AuthenticatedApp\"\r\nimport { InstallViewer } from \"./routes/Install/InstallViewer\"\r\nimport { LoggedOut } from \"./routes/LoggedOut\"\r\nimport { NotificationViewer } from \"./routes/Notification/NotificationViewer\"\r\nimport { ProcessViewer } from \"./routes/Process/ProcessViewer\"\r\nimport { RelatedContentViewer } from \"./routes/RelatedContent/RelatedContentViewer\"\r\nimport { NotFound } from \"./components/common/NotFound\"\r\nimport { InstallSignin } from \"./routes/Install/InstallSignin\"\r\nimport { AppRoutes } from \"./routes/routes\"\r\nimport { withAITracking } from \"@microsoft/applicationinsights-react-js\"\r\nimport { reactPlugin } from \"./appInsights\"\r\nimport { ApiProvider } from \"@workpoint/components/lib/clients/ApiProvider\"\r\nimport { useAppSelector } from \"./store/hooks\"\r\nimport { globalSelector } from \"./store/globalReducer\"\r\nimport { useEffect, useState } from \"react\"\r\nimport { getApiClient, updateApiClient } from \"./clients/apiClientSetup\"\r\nimport { ApiClient } from \"@workpoint/components/lib/clients/ApiClient\"\r\n\r\nconst RouteApp = () => {\r\n let subDomain = \"\"\r\n\r\n const urlParams = new URLSearchParams(window.location.search.toLowerCase())\r\n const locale = urlParams.get(\"locale\") || undefined\r\n\r\n try {\r\n const subDomainRoute = window.location.hostname\r\n .toLowerCase()\r\n .split(\".\")\r\n .filter((p) => p !== \"www\")\r\n\r\n if (subDomainRoute.length >= 3) {\r\n subDomain = subDomainRoute[0].split(\"-\")[0].toLowerCase()\r\n if (subDomain !== \"install\") {\r\n subDomain = \"\"\r\n }\r\n }\r\n } catch (error) {\r\n console.log(\r\n `Could not determine sub domain route, defaulting to using app routes delimited by \"/\". It threw the following error:`,\r\n error\r\n )\r\n }\r\n\r\n /**\r\n * Returns available routes for the chosen sub-domain.\r\n * @param route sub-domain route\r\n */\r\n const getRoutes = (route: string) => {\r\n switch (route) {\r\n case \"install\":\r\n return } />\r\n }\r\n }\r\n\r\n const getLandingPageRoute = (route: string) => {\r\n let landingPage\r\n switch (route) {\r\n case \"install\":\r\n landingPage = \r\n break\r\n default:\r\n landingPage = \r\n }\r\n\r\n return \r\n }\r\n\r\n const ApiClientProvider = ({ children }: { children: React.ReactNode }) => {\r\n const { spHostUrl } = useAppSelector(globalSelector)\r\n const [prevSpHostUrl, setPrevSpHostUrl] = useState(spHostUrl)\r\n const [apiClient, setApiClient] = useState(getApiClient(spHostUrl, locale))\r\n\r\n useEffect(() => {\r\n if (spHostUrl !== prevSpHostUrl) {\r\n setApiClient(updateApiClient(apiClient, spHostUrl))\r\n setPrevSpHostUrl(spHostUrl)\r\n }\r\n }, [spHostUrl])\r\n\r\n return {children}\r\n }\r\n\r\n return (\r\n \r\n {getLandingPageRoute(subDomain)}\r\n }>\r\n {getRoutes(subDomain)}\r\n {!subDomain && (\r\n <>\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n } />\r\n \r\n )}\r\n \r\n\r\n } />\r\n }>\r\n } />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default withAITracking(reactPlugin, RouteApp)\r\n","import { configureStore, ThunkAction, Action, combineReducers } from \"@reduxjs/toolkit\"\nimport { persistReducer, persistStore } from \"redux-persist\"\nimport autoMergeLevel2 from \"redux-persist/lib/stateReconciler/autoMergeLevel2\"\nimport storage from \"redux-persist/lib/storage\"\nimport { PersistConfig } from \"redux-persist/lib/types\"\nimport { RequestState } from \"../models/RequestState\"\nimport globalReducer from \"./globalReducer\"\n\nexport interface AsyncModelState {\n status: RequestState | undefined\n}\n\nconst globalPersistConfig: PersistConfig = {\n key: \"global\",\n version: 1,\n storage,\n stateReconciler: autoMergeLevel2,\n throttle: 500\n}\n\n/**\n * @todo: Handle expirations, possibly with transforms => https://github.com/rt2zz/redux-persist#transforms\n * @todo: Keys relevant for a solution or user should be reset when the solution or user changes!\n */\nconst appReducer = combineReducers({\n global: persistReducer(globalPersistConfig, globalReducer)\n})\n\n/**\n * For clearing app specific state (reset whole application on user / solution change), use this approach.\n * Wrap the appReducer in a rootReducer and listen for \"logout / change spHostUrl\" actions and clear relevant state.\n */\nexport const store = configureStore({\n reducer: appReducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [\"persist/PERSIST\"]\n }\n })\n})\n\nexport let persistor = persistStore(store)\n\nexport type AppDispatch = typeof store.dispatch\nexport type RootState = ReturnType\nexport type AppThunk = ThunkAction<\n ReturnType,\n RootState,\n unknown,\n Action\n>\n","import { MsalProvider } from \"@azure/msal-react\"\r\nimport React from \"react\"\r\nimport ReactDOM from \"react-dom\"\r\nimport { IntlProvider } from \"react-intl\"\r\nimport { Provider } from \"react-redux\"\r\nimport { BrowserRouter } from \"react-router-dom\"\r\nimport { PersistGate } from \"redux-persist/integration/react\"\r\nimport WorkPointTheme from \"@workpoint/components/lib/constants\"\r\nimport { msalInstance } from \"./clients/apiClientSetup\"\r\nimport \"./index.css\"\r\nimport reportWebVitals from \"./reportWebVitals\"\r\nimport RouteApp from \"./RouteApp\"\r\nimport { persistor, store } from \"./store/store\"\r\nimport { initializeFileTypeIcons } from \"@fluentui/react-file-type-icons\"\r\nimport { ThemeProvider } from \"@fluentui/react/lib/Theme\"\r\nimport { initializeIcons } from \"@fluentui/react/lib/Icons\"\r\n\r\ninitializeFileTypeIcons(/* optional base url */)\r\ninitializeIcons(/* optional base url */)\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n)\r\nreportWebVitals()\r\n"],"sourceRoot":""}