{ "version": 3, "sources": ["../javascripts/models/content-page.ts", "../javascripts/selectors/content-page.ts", "../javascripts/actions/contentpage.ts"], "sourcesContent": ["import type { ContentPage, ContentPageParsed, PageContentReference } from '../@types/ContentPage';\n\nconst createUrl = (childOf: PageContentReference | null, slug: string) => {\n const parts = [slug];\n if (childOf) {\n parts.unshift(childOf.slug);\n }\n\n return `/${parts.join('/')}`;\n};\n\nclass SearchLandingPage {\n static onlyLandingPage = (document: ContentPageParsed | null) =>\n !!document && document?.pageType?.indexOf('Landing page') >= 0;\n\n static onlyContentPageWithSearch = (document: ContentPageParsed | null) =>\n !!document && document?.pageType.indexOf('Content with search') >= 0;\n\n static onlyGuaranteePackageLandingPage = (document: ContentPageParsed | null) =>\n !!document && document?.pageType.indexOf('Guarantee package landing page') >= 0;\n\n static parse = ({\n id,\n bottomContent,\n childOf,\n content,\n contentAlignment,\n content_type,\n createdAt,\n disableNavigation,\n featured,\n featuredMedia,\n pageType,\n relatedSearch,\n searchHits,\n slug,\n shouldHideAds,\n smallFeaturedMedia,\n sortOrder,\n targetAudience,\n theme,\n thumbnail,\n title,\n umbrellaSearchTag,\n updatedAt,\n uspList,\n logo,\n }: ContentPage): ContentPageParsed => {\n const _featuredMedia = featuredMedia ? featuredMedia.file.url : null;\n const _smallFeaturedMedia = smallFeaturedMedia ? smallFeaturedMedia.file.url : null;\n const _thumbnail = thumbnail ? thumbnail.file.url : null;\n const _logo = logo ? logo.file.url : null;\n\n return {\n url: createUrl(childOf, slug),\n bottomContent,\n childOf,\n content,\n contentAlignment,\n content_type,\n createdAt,\n disableNavigation,\n featured,\n featuredMedia: _featuredMedia,\n id,\n pageType,\n relatedSearch,\n searchHits,\n slug,\n shouldHideAds,\n smallFeaturedMedia: _smallFeaturedMedia,\n sortOrder,\n targetAudience,\n theme,\n thumbnail: _thumbnail,\n title,\n umbrellaSearchTag,\n updatedAt,\n uspList,\n logo: _logo,\n };\n };\n}\n\nexport default SearchLandingPage;\n", "import { createSelector } from '@reduxjs/toolkit';\nimport SearchLandingPage from '../models/content-page';\n\nimport type { ContentPage, ContentPageNavigationItem } from '../@types/ContentPage';\nimport type { RootState } from '../reducers';\n\nimport QueryFilter, { queryString } from '../helpers/query-filter';\n\nconst emptyDocumentList: ContentPage[] = [];\n\nexport const getContentPage = createSelector(\n (state: RootState) =>\n state.contentpages.documentList ? state.contentpages.documentList.documents : emptyDocumentList,\n (state: RootState, slug: string) =>\n state.contentpages.single\n ? state.contentpages.single.documents\n .filter((page) => page.content_type === 'contentPage')\n .find((d) => d.slug === slug)\n : null,\n (state: RootState) => state.routing.path,\n (_: RootState, slug: string) => slug,\n (state: RootState) => state.contentpages.navigation,\n (pages, page, path, slug, navItems) => {\n if (page) {\n return page;\n }\n if (!navItems) {\n return pages.find((p) => p.slug === slug);\n }\n const navItem = navItems.find((item) => item.url === path);\n return navItem ? pages.find((p) => p.id === navItem.id) : null;\n },\n);\n\nexport const getLandingPage = createSelector(\n (state: RootState) => state.contentpages.documentList,\n (state: RootState) => state.contentpages.single,\n (_: RootState, slug: string) => slug,\n (documentList, documentListSingles, slug) => {\n if (documentListSingles && documentListSingles.documents) {\n const singlesMatch = (documentListSingles.documents || []).find((d) => d.slug === slug);\n\n if (singlesMatch) return SearchLandingPage.parse(singlesMatch);\n }\n\n if (documentList && documentList.documents) {\n const match = (documentList.documents || []).find((p) => p.slug === slug);\n\n if (match) return SearchLandingPage.parse(match);\n }\n\n return null;\n },\n);\n\nexport const isLandingPage = createSelector(\n getLandingPage,\n (contentPage) =>\n SearchLandingPage.onlyLandingPage(contentPage) ||\n SearchLandingPage.onlyContentPageWithSearch(contentPage),\n);\n\nexport const isGuaranteePackageLandingPage = createSelector(getLandingPage, (contentPage) =>\n SearchLandingPage.onlyGuaranteePackageLandingPage(contentPage),\n);\n\nexport const getShouldHideAds = createSelector(getLandingPage, (contentPage) => {\n if (!contentPage) {\n return true;\n }\n\n return contentPage.shouldHideAds;\n});\n\nexport const getLandingPageQueryFilter = createSelector(\n (state: RootState) => state.contentpages.documentList,\n (state: RootState, slug: string) =>\n state.contentpages.single\n ? state.contentpages.single.documents.find((d) => d.slug === slug)\n : null,\n (_: RootState, slug: string) => slug,\n (pages, page, slug) => {\n if (!page) {\n page = pages && pages.documents ? pages.documents.find((p) => p.slug === slug) : null;\n }\n\n if (page && page.relatedSearch) {\n const qf = queryString('qf', page.relatedSearch);\n const queryFilter = QueryFilter.fromRepresentation(qf);\n\n return queryFilter.toString();\n }\n\n return null;\n },\n);\n\nexport const getContentPageNavigation = createSelector(\n (state: RootState) => state.routing.path,\n (state: RootState) => state.contentpages.navigation,\n (path, items): ContentPageNavigationItem[] | null => {\n if (!items) {\n return null;\n }\n return items.map((x) => ({\n ...x,\n isActive: path === x.url,\n }));\n },\n);\n", "import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\n\nimport type { ContentPage, ContentPageNavigationItem } from '../@types/ContentPage';\nimport type { ElasticSearchResponse } from '../@types/ElasticSearchResponse';\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport { buildGetRequest } from '../Http/requestTemplates';\nimport requestCache from '../utils/request-cache';\n\nexport const REQ_CONTENTPAGE_LIST = 'REQ/CONTENTPAGE_LIST';\nexport const RCV_CONTENTPAGE_LIST = 'RCV/CONTENTPAGE_LIST';\ntype REQ_CONTENTPAGE_LIST_TYPE = BaseAction;\ntype RCV_CONTENTPAGE_LIST_TYPE = BaseAction & {\n response: ElasticSearchResponse;\n};\n\nexport const REQ_CONTENTPAGE = 'REQ/CONTENTPAGE';\nexport const RCV_CONTENTPAGE = 'RCV/CONTENTPAGE';\ntype REQ_CONTENTPAGE_TYPE = BaseAction;\ntype RCV_CONTENTPAGE_TYPE = BaseAction & {\n response: ElasticSearchResponse;\n};\n\nexport const REQ_CONTENTPAGE_NAVIGATION = 'REQ/CONTENTPAGE_NAVIGATION';\nexport const RCV_CONTENTPAGE_NAVIGATION = 'RCV/CONTENTPAGE_NAVIGATION';\ntype REQ_CONTENTPAGE_NAVIGATION_TYPE = BaseAction;\ntype RCV_CONTENTPAGE_NAVIGATION_TYPE = BaseAction & {\n response: ContentPageNavigationItem[];\n};\n\nexport const REQUEST_FAILED = 'CONTENTPAGE/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action: typeof REQ_CONTENTPAGE_LIST | typeof REQ_CONTENTPAGE | typeof REQ_CONTENTPAGE_NAVIGATION;\n};\n\nexport type CONTENT_PAGE_ACTION =\n | REQ_CONTENTPAGE_LIST_TYPE\n | RCV_CONTENTPAGE_LIST_TYPE\n | REQ_CONTENTPAGE_TYPE\n | RCV_CONTENTPAGE_TYPE\n | REQ_CONTENTPAGE_NAVIGATION_TYPE\n | RCV_CONTENTPAGE_NAVIGATION_TYPE\n | REQUEST_FAILED_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\nexport const featured = () => async (dispatch: Dispatch) => {\n if (requestCache.isPending(REQ_CONTENTPAGE_LIST)) {\n return;\n }\n requestCache.isPending(REQ_CONTENTPAGE_LIST, true);\n\n try {\n dispatch({ type: REQ_CONTENTPAGE_LIST });\n\n const response = await http.json>(\n '/api/contentpages?featured=true',\n buildGetRequest(),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CONTENTPAGE_LIST,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CONTENTPAGE_LIST });\n }\n requestCache.isPending(REQ_CONTENTPAGE_LIST, false);\n};\n\nexport const get = (slug: string) => async (dispatch: Dispatch) => {\n const cacheKey = `${REQ_CONTENTPAGE}/${slug}`;\n if (requestCache.isPending(cacheKey)) {\n return;\n }\n requestCache.isPending(cacheKey, true);\n\n try {\n dispatch({ type: REQ_CONTENTPAGE });\n\n const response = await http.json>(\n `/api/contentpages/${slug}`,\n buildGetRequest(),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CONTENTPAGE,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CONTENTPAGE });\n }\n requestCache.isPending(cacheKey, false);\n};\n\nexport const navigation = () => async (dispatch: Dispatch) => {\n const cacheKey = `${REQ_CONTENTPAGE_NAVIGATION}/navigation`;\n if (requestCache.isPending(cacheKey)) {\n return;\n }\n requestCache.isPending(cacheKey, true);\n\n try {\n dispatch({ type: REQ_CONTENTPAGE_NAVIGATION });\n\n const response = await http.json(\n '/api/contentpages/navigation',\n buildGetRequest(),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CONTENTPAGE_NAVIGATION,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CONTENTPAGE_NAVIGATION });\n }\n requestCache.isPending(cacheKey, false);\n};\n"], "mappings": "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", "names": ["createUrl", "childOf", "slug", "parts", "SearchLandingPage", "document", "id", "bottomContent", "content", "contentAlignment", "content_type", "createdAt", "disableNavigation", "featured", "featuredMedia", "pageType", "relatedSearch", "searchHits", "shouldHideAds", "smallFeaturedMedia", "sortOrder", "targetAudience", "theme", "thumbnail", "title", "umbrellaSearchTag", "updatedAt", "uspList", "logo", "_featuredMedia", "_smallFeaturedMedia", "_thumbnail", "_logo", "content_page_default", "emptyDocumentList", "getContentPage", "createSelector", "state", "slug", "page", "d", "_", "pages", "path", "navItems", "p", "navItem", "item", "getLandingPage", "documentList", "documentListSingles", "singlesMatch", "content_page_default", "match", "isLandingPage", "contentPage", "isGuaranteePackageLandingPage", "getShouldHideAds", "getLandingPageQueryFilter", "qf", "queryString", "query_filter_default", "getContentPageNavigation", "items", "x", "REQ_CONTENTPAGE_LIST", "RCV_CONTENTPAGE_LIST", "REQ_CONTENTPAGE", "RCV_CONTENTPAGE", "REQ_CONTENTPAGE_NAVIGATION", "RCV_CONTENTPAGE_NAVIGATION", "REQUEST_FAILED", "get", "slug", "dispatch", "cacheKey", "REQ_CONTENTPAGE", "request_cache_default", "response", "json", "buildGetRequest", "validateResponse", "RCV_CONTENTPAGE", "REQUEST_FAILED", "navigation", "REQ_CONTENTPAGE_NAVIGATION", "RCV_CONTENTPAGE_NAVIGATION"] }