{"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":""}