{"version":3,"file":"assets/js/chunks/ROUTE_SEO_DEPARTMENT.2dc361a83e4638a148b9.js","mappings":"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","sources":["webpack://web-pwa/./src/store/seo/seo-zone.actions.js","webpack://web-pwa/./src/domain/seo/zones/DepartmentMetaManager.jsx","webpack://web-pwa/./src/routes/SEO/department.route.js","webpack://web-pwa/./src/domain/seo/department.page.jsx","webpack://web-pwa/./src/domain/seo/zones/DepartmentMapImage.jsx"],"sourcesContent":["import {\n  fetchDepartmentDescription,\n  fetchLayerDepartmentDescription,\n  fetchLayerRegionDescription,\n  fetchRegionDescription\n} from '../../dataSource/seo/seo.request'\nimport { selectFirstAddress, selectZone } from '../address/address.selectors'\n\nimport PermanentRedirectError from '../../domain/error/PermanentRedirectError'\nimport { generateFullRoute } from '../../domain/router/routeUtils'\nimport { loadDescription } from '../address/addressSlice'\n\nexport const redirectLayerRegionRouteIfTownUpperCased = (regionCode, region, routeName) => {\n  if (region.toLowerCase() !== region)\n    throw new PermanentRedirectError(\n      generateFullRoute(routeName, {\n        regionCode,\n        region: region.toLowerCase()\n      })\n    )\n}\n\nexport const redirectLayerDepartmentRouteIfTownUpperCased = (departmentCode, department, routeName) => {\n  if (department.toLowerCase() !== department)\n    throw new PermanentRedirectError(\n      generateFullRoute(routeName, {\n        departmentCode,\n        department: department.toLowerCase()\n      })\n    )\n}\n\nexport const searchDepartmentDescription = () => (dispatch, getState) => {\n  const address = selectFirstAddress(getState())\n  const { countryCode, departmentCode } = address\n  return fetchDepartmentDescription({ countryCode, zoneCode: departmentCode })\n    .then(({ description }) => {\n      if (description) {\n        dispatch(loadDescription(description))\n      }\n    })\n    .catch(e => console.warn(`searchDepartmentDescription: no zone description for ${countryCode}-${departmentCode}`))\n}\n\nexport const searchRegionDescription = () => (dispatch, getState) => {\n  const address = selectFirstAddress(getState())\n  const { countryCode, regionCode } = address\n  return fetchRegionDescription({ countryCode, zoneCode: regionCode })\n    .then(({ description }) => {\n      if (description) {\n        dispatch(loadDescription(description))\n      }\n    })\n    .catch(e => console.warn(`searchRegionDescription: no zone description for ${countryCode}-${regionCode}`))\n}\n\nexport const searchLayerZoneDescription = layer => (dispatch, getState) => {\n  const { countryCode, code, isDepartment } = selectZone(getState())\n  const fetchMethod = isDepartment ? fetchLayerDepartmentDescription : fetchLayerRegionDescription\n  return fetchMethod({ countryCode, zoneCode: code, layer }).then(({ description }) => {\n    if (description) {\n      dispatch(loadDescription(description))\n    }\n  })\n}\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_SEO_DEPARTMENT } from '../../../routes'\nimport { selectFirstAddress } from '../../../store/address/address.selectors'\nimport { selectLocale } from '../../../store/navigation/navigation.selectors'\nimport { slugify } from '../../../utils/string'\nimport { localeLanguageIsDutch } from '../../i18n'\nimport { useT } from '../../i18n/T'\nimport { generateFullRoute } from '../../router/routeUtils'\nimport MetaTags from '../../seo/MetaTags'\n\nconst DepartmentMetaManager = () => {\n  const address = useSelector(selectFirstAddress)\n  const locale = useSelector(selectLocale)\n\n  const title = useT('zones.page.meta.title', [address.departmentLabel, address.departmentLabel])\n  const description = useT('zones.page.meta.description', [\n    address.departmentLabel,\n    address.departmentLabel,\n    address.departmentLabel\n  ])\n\n  const slugifiedPath = slugify(`${address.departmentCode}-${address.departmentLabel}`)\n\n  const canonical =\n    localeLanguageIsDutch(locale) && address?.departmentCode\n      ? generateFullRoute(ROUTE_SEO_DEPARTMENT, {\n          departmentCode: address.departmentCode,\n          department: slugify(address.departmentLabel?.toLowerCase())\n        })\n      : null\n\n  return (\n    <MetaTags\n      title={title}\n      description={description}\n      image={`/front-services/map/departement/${slugifiedPath}`}\n      canonical={canonical}\n    />\n  )\n}\n\nexport default DepartmentMetaManager\n","import { ROUTE_SEO_DEPARTMENT } from '..'\nimport PermanentRedirectError from '../../domain/error/PermanentRedirectError'\nimport { bboxArrayToBboxArrays } from '../../domain/map/conversion'\nimport { generateFullRoute } from '../../domain/router/routeUtils'\nimport { renderPage } from '../../domain/seo/department.page'\nimport { searchArea } from '../../store/address/address.actions'\nimport { selectFirstAddress } from '../../store/address/address.selectors'\nimport { mapUpdated } from '../../store/map/mapSlice'\nimport { geocodeForwardCtx } from '../../store/search/search.service.constants'\nimport { setSearchTerms } from '../../store/search/searchSlice'\nimport { searchDepartmentCities } from '../../store/seo/seo-address.actions'\nimport { searchDepartmentDescription } from '../../store/seo/seo-zone.actions'\nimport { slugify } from '../../utils/string'\nimport { technicalErrorCatcher } from '../routeErrors.utils'\nimport { handleRouteLoading } from '../routeService'\n\nexport const onRouteEnter = ({ params, store: { dispatch, getState }, avoidRefetchingPageData }) => {\n  if (avoidRefetchingPageData) {\n    return searchDepartmentDescription()(dispatch, getState)\n  }\n\n  const { departmentCode, department } = params\n  const location = `${departmentCode}-${department}`\n\n  return searchArea(location, geocodeForwardCtx.filter.county)(dispatch, getState)\n    .then(() => {\n      const firstAddress = selectFirstAddress(getState())\n\n      if (firstAddress.departmentCode !== departmentCode || slugify(firstAddress.departmentLabel) !== department)\n        throw new PermanentRedirectError(\n          generateFullRoute(ROUTE_SEO_DEPARTMENT, {\n            departmentCode: firstAddress.departmentCode,\n            department: slugify(firstAddress.departmentLabel)\n          })\n        )\n\n      return Promise.all([\n        dispatch(setSearchTerms(location)),\n        __SERVER__ && searchDepartmentCities()(dispatch, getState),\n        searchDepartmentDescription()(dispatch, getState),\n        dispatch(mapUpdated({ bbox: bboxArrayToBboxArrays(firstAddress.bbox) }))\n      ])\n    })\n    .catch(technicalErrorCatcher)\n}\n\nexport default handleRouteLoading({ onRouteEnter, renderPage })\n","import React from 'react'\nimport AddressSearchDialogContent from '../../routes/address/AddressSearchDialogContent'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport AddressHeaderForm from '../address/AddressHeaderForm'\nimport Page from '../genericComponents/Page'\nimport Header from '../header/Header'\nimport Main from '../main/Main'\nimport Map from '../map/Map'\nimport PushNotificationPopup from '../PushNotification/PushNotificationPopup'\nimport SearchDialog from '../search/SearchDialog'\nimport AddressSuggestContent from '../suggest/AddressSuggestContent'\nimport DepartmentMapImage from './zones/DepartmentMapImage'\nimport DepartmentMetaManager from './zones/DepartmentMetaManager'\nimport { DepartmentTitle } from './zones/ZoneContent'\nimport ZoneMainContent from './zones/ZoneMainContent'\n\nexport const renderPage = () => {\n  const { AddressPage, withToaster } = PAGE_CLASSES\n\n  return (\n    <Page cssClasses={[AddressPage, withToaster]} key=\"Page\">\n      <DepartmentMetaManager />\n      <Map key=\"Map\" staticMap={<DepartmentMapImage />} />\n      <Header key=\"Header\" transparent>\n        <AddressHeaderForm key=\"AddressHeaderForm\" transparent />\n      </Header>\n      <SearchDialog key=\"SearchDialog\" suggestContent={<AddressSuggestContent />}>\n        <AddressSearchDialogContent />\n      </SearchDialog>\n      <PushNotificationPopup />\n      <Main key=\"Main\" withoutSubHeader>\n        <ZoneMainContent titleContent={<DepartmentTitle />} />\n      </Main>\n    </Page>\n  )\n}\n","\n  export default function () {\n    return null\n  }\n  "],"names":["searchDepartmentDescription","dispatch","getState","address","selectFirstAddress","countryCode","departmentCode","fetchDepartmentDescription","zoneCode","then","_ref","description","loadDescription","catch","e","console","warn","searchRegionDescription","regionCode","fetchRegionDescription","_ref2","searchLayerZoneDescription","layer","code","isDepartment","selectZone","fetchLayerDepartmentDescription","fetchLayerRegionDescription","_ref3","DepartmentMetaManager","_address$departmentLa","useSelector","locale","selectLocale","title","useT","departmentLabel","slugifiedPath","slugify","canonical","localeLanguageIsDutch","generateFullRoute","ROUTE_SEO_DEPARTMENT","department","toLowerCase","React","MetaTags","image","onRouteEnter","params","store","avoidRefetchingPageData","location","searchArea","geocodeForwardCtx","filter","county","firstAddress","PermanentRedirectError","Promise","all","setSearchTerms","__SERVER__","mapUpdated","bbox","bboxArrayToBboxArrays","technicalErrorCatcher","handleRouteLoading","renderPage","AddressPage","withToaster","PAGE_CLASSES","Page","cssClasses","key","Map","staticMap","DepartmentMapImage","Header","transparent","AddressHeaderForm","SearchDialog","suggestContent","AddressSuggestContent","AddressSearchDialogContent","PushNotificationPopup","Main","withoutSubHeader","ZoneMainContent","titleContent","DepartmentTitle"],"sourceRoot":""}