{"version":3,"file":"static/js/1988.3e38934a.chunk.js","mappings":"uJAOO,SAASA,EAAqBC,GACnC,MAAM,SAAEC,GAAaD,EACfE,GAAeC,EAAAA,EAAAA,OACf,SAAEC,GAAaC,EAAAA,GACrB,OAAOC,IAAAA,cAACF,EAAQ,CAACG,MAAOL,GAAeD,EACzC,C,8FCQA,MAAMO,EAAkC,CAAEC,cAAc,GAClDC,EAA8C,CAClDC,aAAa,EACbC,yBAAyB,GAapB,SAASC,EACdC,EACAC,EACAC,EACAC,EACAC,EAAoBR,GAEpB,MAAMS,GAAcC,EAAAA,EAAAA,eACdC,GAAUC,EAAAA,EAAAA,MACVC,GAAiBC,EAAAA,EAAAA,MACjBC,EAAkBN,GAAaO,WAAWD,gBAC1CE,EAAgB,CACpBhB,YAAaiB,SACVH,GACCP,GAAmBP,aACnBU,GAASQ,MAAMC,kBAGfC,GAASC,EAAAA,EAAAA,IAAcL,GACvBM,EAAQR,EACVX,EACAA,EAASoB,QAAQ,UAAW,kBAChC,IAAIC,EAASpB,EACTG,GAAmBN,0BACrBuB,EAAS,IACJpB,EACHqB,aAAcX,IAIlB,MAAMY,EAAUT,UACXL,GAAkBE,GAAoBE,GAAehB,eACrDK,GAAiBqB,cAAwCC,IAA7BtB,GAAiBqB,UAGlD,OAAOE,EAAAA,EAAAA,UAAa,IACfvB,EACHqB,QAASA,EACTG,QAASA,IACPT,EAAOE,EAAOE,EAAQlB,GAAcwB,OAAOC,IACzC,GAAgC,MAA5BA,GAAOC,UAAUC,OACnB,OAAOpC,EAET,MAAMkC,CAAK,IAEfG,SAAU,CAACZ,EAAOE,EAAQlB,GAC1B6B,MAAO,GAEX,C,4SC7EO,SAAS3C,IACd,MAAM,OAAE4C,IAAWC,EAAAA,EAAAA,0BACbvB,GAAkBwB,EAAAA,EAAAA,sBAClBC,GAAQC,EAAAA,EAAAA,aACX,gCACD,CAAEC,QAASL,GACX,CAAEV,SAAUZ,QACZa,EACA,CACE3B,aAAa,IAGjB,OAAO0C,EAAAA,EAAAA,UAAQ,KACN,CACLxB,KAAMqB,EAAMrB,KACZyB,UAAWJ,EAAMI,aAElB,CAACJ,EAAMrB,KAAMqB,EAAMI,WACxB,CAGO,MAAMjD,GAAgBkD,EAAAA,EAAAA,oBAC3BjB,GAKK,SAAShB,EAAiBkC,GAE/B,OADgBC,EAAAA,EAAAA,YAAWpD,IACT,CAAEwB,UAAMS,EAAWgB,WAAW,EAClD,C","sources":["webpack:///./src/logout/LogoutConfigProvider.tsx","webpack:///./src/logout/cms-api-hooks.ts","webpack:///./src/logout/useLogOutConfig.ts"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { logoutContext, useLogOutConfig } from './useLogOutConfig';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport function LogoutConfigProvider(props: Props) {\n const { children } = props;\n const logoutConfig = useLogOutConfig();\n const { Provider } = logoutContext;\n return <Provider value={logoutConfig}>{children}</Provider>;\n}\n","import { UseQueryOptions, useQuery } from '@tanstack/react-query';\nimport { useOktaAuth } from '@okta/okta-react';\nimport { useLogoutContext } from './useLogOutConfig';\nimport { ExtraHeaders } from '../query/useApiHeaders';\nimport { useApiGet } from '../query/api-hooks';\nimport { useIsTokenExpired } from '../auth/user-info.hooks';\n\ntype ObjectMap = {\n [key: string]: any;\n};\nexport type CmsExtraQueryOptions = {\n /**Set to `false` if you do not want api to fetch in logout mode.\n */\n isLogoutApi?: boolean;\n\n /**Set to `false` if you do not want to modify the UserLoggedIn query param.\n */\n modifyUserLoggedInParam?: boolean;\n};\n\nconst DEFAULT_404_RESPONSE: ObjectMap = { hasNoContent: true };\nconst DEFAULT_EXTRA_OPTIONS: CmsExtraQueryOptions = {\n isLogoutApi: true,\n modifyUserLoggedInParam: true,\n};\n\n/** Customized implementation of `useApiQuery` from mf_core/query to handle only CMS api calls for both login/logout.\n * @description This does not return queryResult's `isError`=`true` in case of API 404.\n * To custom handle 404 API errors use `data.hasNoContent` boolean value instead.\n * To use api for login only api send extraQueryOptions param as { isLogoutApi: false }\n * @param apiRoute api endpoint eg: `\"/cms/v1/resources\"`\n * @param queryParams `UserLoggedIn: boolean` gets addded as a query param for all queries\n * @param useQueryOptions react-query UseQueryOptions\n * @param extraHeaders Adds extra header as object type {[x: string]: string | undefined}\n * @param extraQueryOptions Default is { isLogoutApi: true, modifyUserLoggedInParam: true }\n */\nexport function useApiQueryForCms<TO = ObjectMap>(\n apiRoute: string,\n queryParams?: ObjectMap,\n useQueryOptions?: Partial<UseQueryOptions<TO>>,\n extraHeaders?: ExtraHeaders,\n extraQueryOptions = DEFAULT_EXTRA_OPTIONS\n) {\n const oktaContext = useOktaAuth();\n const cmsData = useLogoutContext();\n const isTokenExpired = useIsTokenExpired();\n const isAuthenticated = oktaContext?.authState?.isAuthenticated;\n const customOptions = {\n isLogoutApi: Boolean(\n !isAuthenticated &&\n extraQueryOptions?.isLogoutApi &&\n cmsData?.data?.isLogoutEnabled\n ),\n };\n const apiGet = useApiGet<TO>(customOptions);\n const route = isAuthenticated\n ? apiRoute\n : apiRoute.replace('/cms/v1', '/cms-noauth/v1');\n let params = queryParams;\n if (extraQueryOptions?.modifyUserLoggedInParam) {\n params = {\n ...queryParams,\n UserLoggedIn: isAuthenticated,\n };\n }\n\n const enabled = Boolean(\n ((!isTokenExpired && isAuthenticated) || customOptions?.isLogoutApi) &&\n (useQueryOptions?.enabled || useQueryOptions?.enabled === undefined)\n );\n\n return useQuery<TO>({\n ...useQueryOptions,\n enabled: enabled,\n queryFn: () =>\n apiGet(route, params, extraHeaders).catch((error) => {\n if (error?.response?.status === 404) {\n return DEFAULT_404_RESPONSE as unknown as TO;\n }\n throw error;\n }),\n queryKey: [route, params, extraHeaders],\n retry: 0,\n });\n}\n","import { useLocalizationContext } from '@im/react-localization';\nimport { createContext, useContext, useMemo } from 'react';\nimport { useIsAuthenticated } from '../auth';\nimport { useApiQuery } from '../query';\nimport { KenticoWidgetData } from './cms.widget.types';\n\n/** Query for loggedout homepage and configuration*/\nexport function useLogOutConfig() {\n const { locale } = useLocalizationContext();\n const isAuthenticated = useIsAuthenticated();\n const query = useApiQuery<LogoutHomePageConfigTO>(\n `/cms-noauth/v1/loggedout-home`,\n { culture: locale },\n { enabled: !isAuthenticated },\n undefined,\n {\n isLogoutApi: true,\n }\n );\n return useMemo(() => {\n return {\n data: query.data,\n isLoading: query.isLoading,\n } as ILogoutConfigContext;\n }, [query.data, query.isLoading]);\n}\n\n/** context for logout config */\nexport const logoutContext = createContext<ILogoutConfigContext | undefined>(\n undefined\n);\n\n/** `Hook` to access logoutContextData.\n */\nexport function useLogoutContext(contextData?: ILogoutConfigContext) {\n const context = useContext(logoutContext);\n return context ?? { data: undefined, isLoading: true };\n}\n\nexport type ILogoutConfigContext = {\n data: LogoutHomePageConfigTO | undefined;\n isLoading: boolean;\n};\n\nexport type LogoutHomePageConfigTO = {\n absoluteUrl: string;\n errors: any;\n isLogoutEnabled: boolean;\n isPageAvailable: boolean;\n pageBuilder: KenticoWidgetData;\n pageTitle: string;\n renderAsReactPage: boolean;\n seoDescription: string;\n seoImage: string;\n seoTitle: string;\n};\n"],"names":["LogoutConfigProvider","props","children","logoutConfig","useLogOutConfig","Provider","logoutContext","React","value","DEFAULT_404_RESPONSE","hasNoContent","DEFAULT_EXTRA_OPTIONS","isLogoutApi","modifyUserLoggedInParam","useApiQueryForCms","apiRoute","queryParams","useQueryOptions","extraHeaders","extraQueryOptions","oktaContext","useOktaAuth","cmsData","useLogoutContext","isTokenExpired","useIsTokenExpired","isAuthenticated","authState","customOptions","Boolean","data","isLogoutEnabled","apiGet","useApiGet","route","replace","params","UserLoggedIn","enabled","undefined","useQuery","queryFn","catch","error","response","status","queryKey","retry","locale","useLocalizationContext","useIsAuthenticated","query","useApiQuery","culture","useMemo","isLoading","createContext","contextData","useContext"],"sourceRoot":""}