{"version":3,"file":"C176G36B.js","sources":["../../../../src/composables/useLoadCMSPage.ts"],"sourcesContent":["import type {\n Agreements_Agreement_Entry,\n Events_Event_Entry,\n Offers_Offer_Entry,\n OfficeMarket_Office_Entry,\n Pages_Page_Entry,\n Persons_Person_Entry,\n Posts_Post_Entry,\n Roomplanning_Reference_Entry,\n Services_Service_Entry,\n} from '~~/src/gql/schema';\nimport { cmsPageData } from '../injectionSymbols';\nimport type { Result } from '../server/api/[site]/pageContent/[...uri].get';\nimport { useAreaStore } from '../stores/useArea';\nimport { useNav } from '../stores/useNav';\nimport { useCachedGet } from './dataFetching/genericFetchers';\nimport type { BasePageData } from '../server/transformers/page/basePage';\nimport { handleLoadingError } from '~/utils/handleLoadingError';\n\nexport type SubPage =\n | Posts_Post_Entry\n | Events_Event_Entry\n | Services_Service_Entry\n | Agreements_Agreement_Entry\n | Roomplanning_Reference_Entry\n | OfficeMarket_Office_Entry\n | Offers_Offer_Entry\n | Persons_Person_Entry;\n\nexport type CMSPage = Pages_Page_Entry | SubPage;\n\nexport type UnionCMSPage = Pages_Page_Entry &\n Partial<\n Posts_Post_Entry &\n Events_Event_Entry &\n Services_Service_Entry &\n Agreements_Agreement_Entry &\n Roomplanning_Reference_Entry &\n OfficeMarket_Office_Entry &\n Offers_Offer_Entry &\n Persons_Person_Entry\n >;\n\nasync function load(\n isLoading: Ref,\n pageData: Ref,\n uri: string,\n err: Ref,\n): Promise | null> {\n isLoading.value = true;\n const site = useSiteIdent();\n try {\n const { data, error } = await useCachedGet(\n `/api/${site}/pageContent/${uri ? uri : 'startpage'}`,\n );\n\n if (error.value || (!data.value.redirect && !data.value.pageData)) {\n // eslint-disable-next-line no-console\n console.error('ERR: CMS Page load failed \\n', error.value);\n err.value = true;\n return [{ path: '/404' }, { redirectCode: 404 }];\n }\n const redirect = data.value.redirect;\n\n if (redirect) {\n return [{ path: redirect }, { redirectCode: 301, external: true }];\n }\n\n if (data.value.pageData) {\n pageData.value = data.value.pageData;\n isLoading.value = false;\n } else {\n return [{ path: '/404' }, { redirectCode: 404 }];\n }\n } catch (e) {\n handleLoadingError(e);\n err.value = true;\n }\n return null;\n}\n\nexport default async function useLoadCMSPage(initialRoute: string) {\n const pageData = ref(null);\n const isLoading = ref(true);\n const error = ref(false);\n const router = useRouter();\n const navStore = useNav();\n const areaStore = useAreaStore();\n const pageUri = initialRoute.replace('/', '');\n\n provide(cmsPageData, pageData);\n\n const redirect = await load(isLoading, pageData, pageUri, error);\n\n /**\n * This prevents the navigation from jumping around when a user navigates in quick succession\n */\n if (\n !redirect &&\n pageData.value &&\n (pageUri == router.currentRoute.value.path.replace('/', '') ||\n import.meta.server)\n ) {\n navStore.mainNav_setActiveItemById(pageData.value.linkedNavItemId);\n areaStore.setActiveAreaById(getAreaId(pageData.value));\n }\n\n return { pageData, isLoading, redirect, error } as {\n pageData: Ref;\n isLoading: Ref;\n redirect: Parameters | null;\n error: Ref;\n };\n}\n\nexport function usePageData() {\n return inject>(cmsPageData);\n}\n\nfunction getAreaId(page: BasePageData) {\n if (!page) return null;\n if (page.area && page.area.id) {\n return page.area.id;\n } else {\n return null;\n }\n}\n"],"names":["load","isLoading","pageData","uri","err","site","useSiteIdent","data","error","useCachedGet","redirect","e","handleLoadingError","useLoadCMSPage","initialRoute","ref","router","useRouter","navStore","useNav","areaStore","useAreaStore","pageUri","provide","cmsPageData","getAreaId","usePageData","inject","page"],"mappings":"mGA2CA,eAAeA,EACbC,EACAC,EACAC,EACAC,EAC+C,CAC/CH,EAAU,MAAQ,GAClB,MAAMI,EAAOC,IACT,GAAA,CACF,KAAM,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAI,MAAMC,EAC5B,QAAQJ,CAAI,gBAAgBF,GAAY,WAAW,EAAA,EAGjD,GAAAK,EAAM,OAAU,CAACD,EAAK,MAAM,UAAY,CAACA,EAAK,MAAM,SAE9C,eAAA,MAAM;AAAA,EAAgCC,EAAM,KAAK,EACzDJ,EAAI,MAAQ,GACL,CAAC,CAAE,KAAM,MAAA,EAAU,CAAE,aAAc,IAAK,EAE3C,MAAAM,EAAWH,EAAK,MAAM,SAE5B,GAAIG,EACK,MAAA,CAAC,CAAE,KAAMA,GAAY,CAAE,aAAc,IAAK,SAAU,EAAA,CAAM,EAG/D,GAAAH,EAAK,MAAM,SACJL,EAAA,MAAQK,EAAK,MAAM,SAC5BN,EAAU,MAAQ,OAEX,OAAA,CAAC,CAAE,KAAM,MAAA,EAAU,CAAE,aAAc,IAAK,QAE1CU,EAAG,CACVC,EAAmBD,CAAC,EACpBP,EAAI,MAAQ,EACd,CACO,OAAA,IACT,CAEA,eAA8BS,EAAeC,EAAsB,CAC3D,MAAAZ,EAAWa,EAAyB,IAAI,EACxCd,EAAYc,EAAI,EAAI,EACpBP,EAAQO,EAAI,EAAK,EACjBC,EAASC,IACTC,EAAWC,IACXC,EAAYC,IACZC,EAAUR,EAAa,QAAQ,IAAK,EAAE,EAE5CS,EAAQC,EAAatB,CAAQ,EAE7B,MAAMQ,EAAW,MAAMV,EAAKC,EAAWC,EAAUoB,EAASd,CAAK,EAK/D,MACE,CAACE,GACDR,EAAS,OACRoB,GAAWN,EAAO,aAAa,MAAM,KAAK,QAAQ,IAAK,EAAE,IAGjDE,EAAA,0BAA0BhB,EAAS,MAAM,eAAe,EACjEkB,EAAU,kBAAkBK,EAAUvB,EAAS,KAAK,CAAC,GAGhD,CAAE,SAAAA,EAAU,UAAAD,EAAW,SAAAS,EAAU,MAAAF,CAAM,CAMhD,CAEO,SAASkB,GAAgC,CAC9C,OAAOC,EAAeH,CAAW,CACnC,CAEA,SAASC,EAAUG,EAAoB,CACrC,OAAKA,GACDA,EAAK,MAAQA,EAAK,KAAK,GAClBA,EAAK,KAAK,GAFD,IAMpB"}