{"version":3,"sources":["assets/hh-bg.jpg","assets/logo-delfsland.svg","components/HeadMeta.js","components/Icons.js","components/AccessibilityButton.js","views/Home.js","helpers/colorCluster.js","components/ClusterResult.js","api.js","hooks/useReducer.js","components/IconButton.js","components/DevFilterITem.js","hooks/useViewport.js","hooks/useIsMobile.js","components/ThemeFilter.js","components/ThemeFilterModal.js","components/LogoDelfsland.js","components/SkipLink.js","components/WaterwerkLogoDark.js","components/Header.js","views/ClusterIndex.js","components/Logo.js","helpers/imageParse.js","components/ContextPopper.js","helpers/wordList.js","hooks/useParesedDispositionContent.js","components/DispositionCard.js","components/AreaFilter.js","components/SearchFilter.js","components/DispositionPagination.js","components/CloseButton.js","components/AreaModal.js","components/DispositionCardModal.js","components/DispositionModal.js","views/DispositionIndex.js","components/SliderPagination.js","components/Slider.js","components/DispositionSlider.js","assets/kader.png","assets/play-icon.svg","assets/close-icon.svg","components/VideoTranscript.js","components/VideoModal.js","hooks/useFocusOnFirstElement.js","views/ThemeDetail.js","components/AccessibilityDetail.js","App.js","reportWebVitals.js","fonts/TheMixC5-5_Plain.woff2","fonts/TheMixC5-5iPlainItalic.woff2","fonts/TheMixC5-6_SemiBold.woff2","fonts/TheMixC5-7_Bold.woff2","index.js"],"names":["HeadMeta","pageTitle","Helmet","AreaIcon","id","Kust","width","height","viewBox","fill","xmlns","clipPath","d","Stad","Glas","Gras","Organisatie","Filter","Arrow","ArrowLeft","title","fillColor","ArrowRight","className","BookIcon","AccessibilityIcon","stroke","style","cx","cy","r","ThemeFilterMobileIcon","strokeWidth","x","y","transform","PlusIcon","areaOpen","AccessibilityButton","href","target","variant","iconStroke","animationData","require","Home","backgroundImage","bgImage","backgroundRepeat","backgroundPosition","backgroundSize","src","LogoDelfsland","alt","display","alignItems","textAlign","loop","play","rendererSettings","preserveAspectRatio","role","to","justifyContent","marginBottom","colorByCluster","cluster","ClusterResult","inhoud","image","link","vars","variants","filter","length","getImage","hoofdafbeelding","process","getFacets","a","axios","get","then","data","getDispositionFacets","query","areas","map","join","trim","getThemes","filters","developments","cancelToken","getTheme","getDisposition","Promise","all","dispositionResponse","themeResponse","status","Error","disposition","themeItems","matchingTheme","find","theme","maatregelen","some","themeDisposition","maatregel","themeTitle","themeId","color","console","error","getDispositions","selectedAreas","trimmedQuery","maatregelData","themeData","maatregelItems","updatedDispositions","push","filteredDispositions","isMatchingQuery","toLowerCase","includes","toelichting","isMatchingArea","selectedArea","gebied","value","message","getThesaurus","YouTubeGetID","url","parts","replace","split","undefined","fetchYouTubeData","videoId","API_KEY","fetch","response","ok","statusText","json","items","sendData","snippet","getAccessibilityData","RefContext","createContext","useRefProvider","useContext","RefProvider","children","videoTriggerRef","useRef","videoModalFirstElRef","themesFilterTriggerRef","themesFilterFirstElRef","dynamicRefs","sendRefs","setRef","key","current","React","createRef","focusRef","focus","Provider","updateClusterOrdering","c","order","initialState","globalThemes","videoModal","videoData","videoIsOpen","areaFilterOpen","clusters","themeFilterOpen","developmentsOverlayOpen","dispositionSearch","dispositionColors","reducer","state","action","type","payload","sort","t1","toUpperCase","t2","reduce","acc","elem","forEach","b","label","area","active","development","StateContext","DispatchContext","Reducer","useReducer","dispatch","useEffect","facets","f","name","values","useState","useDispatch","IconButton","forwardRef","ref","ariaLabel","ariaExpanded","glow","onClick","DevFilterItem","callback","checked","onChange","e","htmlFor","getCurrentBreakpoint","largeBreakpoint","breakpoint","ViewportContext","Viewport","window","innerWidth","setWidth","setBreakpoint","handleWindowResize","addEventListener","removeEventListener","useIsMobile","mobileBreakpoint","isMobile","setIsMobile","handleResize","ThemeFilter","navigate","useNavigate","useReactState","currentDevelopments","setCurrentDevelopments","handleOpenDevelopmentsOverlay","handleCloseDevFilterClick","handleDevFilterClick","old","item","search","index","gridTemplateColumns","dev","gridColumn","Math","floor","gridRow","FilterItem","handleClick","ThemeFilterModal","useSearchParams","searchParams","setSearchParams","document","body","classList","toggle","modalElement","getElementById","scrollTop","handleClosePanel","delete","handleClusterClick","handleDevelopmentClick","onKeyDown","event","shiftKey","activeElement","preventDefault","stopPropagation","returnFocus","onFocusReturn","LogoDelfslandComponent","SkipLink","targetId","WaterwerkLogoDark","Header","tabIndex","ClusterIndex","themes","setThemes","pathname","useLocation","useGlobalState","source","CancelToken","filteredClusters","filteredDevelopments","token","xs","catch","log","cancel","result","Logo","props","im","imageWidth","ContextPopper","matchedTextWord","visible","setVisibility","content","setContent","referenceRef","popperRef","usePopper","placement","modifiers","enabled","options","offset","styles","attributes","update","handleDocumentClick","contains","thesaurusData","explanation","popper","zIndex","parseTerm","updatedContent","part","startsWith","term","pattern","RegExp","match","replaceTerm","node","parent","attribs","wordListParser","ReactHtmlParser","useParsedDispositionContent","fetchContent","parsedContent","DispositionCard","ancestors","hideTheme","periodeStart","periodeEind","year","slice","contentOpen","setContentOpen","setAreaOpen","useReducerState","isDispositionModalOpen","top","dateTime","i","AreaFilter","count","SearchFilter","handleSearchFilter","func","timer","timeout","args","clearTimeout","setTimeout","apply","debounce","processSearchFilter","placeholder","onInput","DispositionPagination","maximum","request","page","CloseButton","closeButtonRef","AreaModal","handlers","useSwipeable","onSwiped","preventDefaultTouchmoveEvent","trackMouse","handleCloseModal","DispositionCardModal","isModal","popupRef","closeModal","DispositionModal","loaded","setLoaded","setDisposition","dispositionModalOpen","fetchDisposition","dispositionData","modalEl","getPageValue","queryParams","URLSearchParams","has","isNaN","parseInt","getMaxPages","rest","DispositionIndex","dispositions","setDispositions","setPage","maxPages","setMaxPages","filteredAreas","fetchDispositions","ds","startIndex","endIndex","renderDispositionCards","newPage","scrollTo","behavior","SliderPagination","currentSlide","maxSlides","gotoSlide","next","prev","Array","_","getMaxSlides","size","amount","Slider","setCurrentSlide","setMaxSlides","newMaxSlides","onSwipedLeft","handleNextSlide","onSwipedRight","handlePreviousSlide","left","slide","DispositionSlide","slider","DispositionSlider","dispositionIds","VideoTranscript","transcriptData","setTranscriptData","videoTranscript","transcriptsData","youtubeId","transcript","loadTranscript","VideoModal","location","youTubeData","setYoutubeData","video","videoModalLastElRef","videoModalRef","fetchYoutubeData","getYoutubeData","toString","player","getInternalPlayer","pauseVideo","disabled","isPlaying","CloseIcon","opts","playerVars","autoplay","disablekb","cc_load_policy","hl","onReady","videoTitle","getVideoData","iframe","getIframe","setAttribute","position","useFocusOnFirstElement","trigger","firstFocusableElement","querySelector","renameList","new","optionallyRename","ThemaDetail","useParams","setTheme","setTitle","afb1","setAfb1","afb2","setAfb2","afb3","setAfb3","setVideoId","youtubeData","docs","setDocumenten","links","setLinks","setToelichting","ambitie","setAmbitie","doel","setDoel","clustertekst","setClustertekst","triggerFocus","setTriggerFocus","fetchData","documenten","interneLinks","externeLinks","afbeelding2","afbeelding3","videoURL","retrievedHoofdafbeelding","concat","getThemeIdByTitle","t","handleLinkClick","dangerouslySetInnerHTML","__html","grondslag","ontwikkelingLangeTermijn","ontwikkeling","kader","set","handleVideoButton","PlayIcon","rel","dwarsverbanden","AccessibilityDetail","setData","loading","setLoading","setError","tekst","App","path","element","ThemeDetail","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render"],"mappings":"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","file":"static/js/main.f0009bf9.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/hh-bg.290fee89.jpg\";","export default __webpack_public_path__ + \"static/media/logo-delfsland.c44ad14e.svg\";","import {Helmet} from \"react-helmet\";\r\n\r\nexport const HeadMeta = ({pageTitle}) => {\r\n return (\r\n \r\n {pageTitle}\r\n \r\n )\r\n}\r\n\r\nexport default HeadMeta;","export const AreaIcon = ({ id }) => {\r\n switch (id) {\r\n case \"Kust\":\r\n return ;\r\n\r\n case \"Stad\":\r\n return ;\r\n\r\n case \"Glas\":\r\n return ;\r\n\r\n case \"Gras\":\r\n return ;\r\n\r\n default:\r\n return ;\r\n }\r\n};\r\n\r\nconst Kust = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Stad = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Glas = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Gras = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Organisatie = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const Filter = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const Arrow = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const ArrowLeft = ({title, fillColor = \"currentColor\"}) => (\r\n \r\n {title && {title}}\r\n \r\n \r\n);\r\n\r\nexport const ArrowRight = ({ className, title }) => (\r\n \r\n {title}\r\n \r\n \r\n);\r\n\r\nexport const BookIcon = ({ className }) => (\r\n \r\n Open PDF bestand\r\n Deze knop opent het PDF-bestand genaamd 'hhd-2223-wbp6-hoofdlijnen-toegankelijk-wcag'.\r\n \r\n \r\n);\r\n\r\nexport const AccessibilityIcon = ({ className, stroke }) => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const ThemeFilterMobileIcon = ({ className }) => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const PlusIcon = ({ className, areaOpen, title }) => (\r\n \r\n {areaOpen ? `Verberg gebied van maatregel: ${title}` : `Toon gebied van maatregel: ${title}`}\r\n \r\n {!areaOpen && (\r\n \r\n )}\r\n \r\n \r\n);\r\n\r\n\r\n\r\n","import {AccessibilityIcon} from \"./Icons\";\r\n\r\nconst AccessibilityButton = ({href, target = \"_self\", variant = 'light', iconStroke = \"#213165\"}) => {\r\n return (\r\n \r\n \r\n Toegankelijkheid\r\n \r\n )\r\n}\r\nexport default AccessibilityButton;","import Lottie from \"react-lottie-player/dist/LottiePlayerLight\";\r\nimport { Link } from \"react-router-dom\";\r\nimport bgImage from \"../assets/hh-bg.jpg\";\r\nimport LogoDelfsland from \"../assets/logo-delfsland.svg\";\r\nimport HeadMeta from \"../components/HeadMeta\";\r\nimport { BookIcon} from \"../components/Icons\";\r\nimport AccessibilityButton from \"../components/AccessibilityButton\";\r\n\r\nconst animationData = require(\"../assets/logo-animation.json\");\r\n\r\nfunction Home() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"Logo\r\n
\r\n
\r\n \r\n \r\n WBP6 op hoofdlijnen\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Waterwerk logo\r\n
\r\n
\r\n

\r\n het 6de waterbeheer­programma\r\n
\r\n 2022 - 2027\r\n

\r\n
\r\n
\r\n
\r\n \r\n thema’s\r\n \r\n
\r\n
\r\n \r\n maatregelen\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default Home;\r\n","export const colorByCluster = (cluster) => {\r\n switch (cluster) {\r\n case \"overkoepelende thema’s\":\r\n return \"purple\";\r\n case \"waterveiligheid\":\r\n return \"red\";\r\n case \"organisatie & bestuur\":\r\n return \"yellow\";\r\n case \"waterkwaliteit\":\r\n return \"green\";\r\n case \"waterketen\":\r\n return \"brown\";\r\n default:\r\n return \"blue\";\r\n }\r\n};\r\n","import { Link } from \"react-router-dom\";\r\n\r\nimport { colorByCluster } from \"../helpers/colorCluster\";\r\n\r\nconst getImage = ({ link, variants }) => {\r\n const vars = variants.filter(({ width }) => width === 640);\r\n return vars.length > 0 ? vars[0].link : link;\r\n};\r\n\r\nfunction ClusterResult({ title, id, inhoud }) {\r\n const image = getImage(inhoud.hoofdafbeelding);\r\n const { cluster } = inhoud;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n

{title}

\r\n
Lees meer
\r\n
\r\n

Cluster:

\r\n
{cluster}
\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default ClusterResult;\r\n","import axios from \"axios\";\r\n\r\nexport const getAreas = async () => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_HOST}meta/Wbp6Gebied`)\r\n .then(({ data }) => data);\r\n};\r\n\r\nexport const getFacets = async () => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_HOST}content/wbp6/facet/thema`)\r\n .then(({ data }) => {\r\n return data;\r\n });\r\n};\r\n\r\nexport const getDispositionFacets = async (query = \"\", areas = []) => {\r\n return await axios\r\n .get(\r\n `${process.env.REACT_APP_HOST}content/wbp6/facet/maatregel?limit=300${\r\n areas.length > 0\r\n ? \"?\" + areas.map(({ id }) => \"facet=\" + id).join(\"&\")\r\n : \"\"\r\n }${\r\n query.trim() !== \"\"\r\n ? (areas.length > 0 ? \"&\" : \"?\") + `text=${query}`\r\n : \"\"\r\n }`\r\n )\r\n .then(({ data }) => {\r\n return data;\r\n });\r\n};\r\n\r\nexport const getDevelopments = async () => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_HOST}meta/Wbp6OntwikkelingLangeTermijn`)\r\n .then(({ data }) => data);\r\n};\r\n\r\nexport const getThemes = async (\r\n filters = [],\r\n developments = [],\r\n cancelToken = null\r\n) => {\r\n return await axios\r\n .get(\r\n `${process.env.REACT_APP_HOST}content/wbp6/list/thema${\r\n filters.length === 0\r\n ? \"\"\r\n : \"?\" + filters.map(({ id }) => \"facet=\" + id).join(\"&\")\r\n }${\r\n developments.length === 0\r\n ? \"\"\r\n : (filters.length === 0 ? \"?\" : \"&\") +\r\n developments.map(({ id }) => \"facet=\" + id).join(\"&\")\r\n }`,\r\n { cancelToken }\r\n )\r\n .then(({ data }) => {\r\n return data;\r\n });\r\n};\r\n\r\nexport const getTheme = async (id) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_HOST}content/wbp6/${id}/thema`)\r\n .then(({ data }) => {\r\n return data;\r\n });\r\n};\r\n\r\nexport const getDisposition = async (id) => {\r\n if (!id) {\r\n return null;\r\n }\r\n\r\n try {\r\n const [dispositionResponse, themeResponse] = await Promise.all([\r\n axios.get(`${process.env.REACT_APP_HOST}content/wbp6/${id}/maatregel?limit=300`),\r\n axios.get(`${process.env.REACT_APP_HOST}content/wbp6/list/thema`) // Fetch theme data\r\n ]);\r\n\r\n if (dispositionResponse.status === 404 || themeResponse.status === 404) {\r\n throw new Error(\"Resource not found: 404 error\");\r\n }\r\n\r\n const disposition = dispositionResponse.data;\r\n const themeItems = themeResponse.data;\r\n\r\n const matchingTheme = themeItems.find(theme =>\r\n theme.maatregelen.some(themeDisposition => themeDisposition.maatregel.id === disposition.id)\r\n );\r\n\r\n if (matchingTheme) {\r\n return {\r\n ...disposition,\r\n themeTitle: matchingTheme.title,\r\n themeId: matchingTheme.id,\r\n color: matchingTheme.inhoud.cluster || \"\"\r\n };\r\n } else {\r\n throw new Error(\"Matching theme not found for disposition\");\r\n }\r\n } catch (error) {\r\n console.error('Error fetching disposition and theme:', error);\r\n return null;\r\n }\r\n};\r\n\r\nexport const getDispositions = async (query = \"\", selectedAreas = []) => {\r\n const trimmedQuery = query.trim();\r\n\r\n try {\r\n const [maatregelData, themeData] = await Promise.all([\r\n axios.get(`${process.env.REACT_APP_HOST}content/wbp6/list/maatregel?limit=300`),\r\n axios.get(`${process.env.REACT_APP_HOST}content/wbp6/list/thema`)\r\n ]);\r\n\r\n if (maatregelData.status === 404 || themeData.status === 404) {\r\n throw new Error(\"Resource not found: 404 error\");\r\n }\r\n\r\n const maatregelItems = maatregelData.data;\r\n const themeItems = themeData.data;\r\n\r\n const updatedDispositions = [];\r\n\r\n for (const theme of themeItems) {\r\n for (const themeDisposition of theme.maatregelen) {\r\n for (const disposition of maatregelItems) {\r\n if (themeDisposition.maatregel.id === disposition.id) {\r\n updatedDispositions.push({\r\n ...themeDisposition.maatregel,\r\n disposition,\r\n themeTitle: theme.title\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n const filteredDispositions = updatedDispositions.filter((disposition) => {\r\n const isMatchingQuery = (\r\n disposition.disposition.title.toLowerCase().includes(trimmedQuery.toLowerCase()) ||\r\n disposition.themeTitle.toLowerCase().includes(trimmedQuery.toLowerCase()) ||\r\n disposition.disposition.inhoud.toelichting.toLowerCase().includes(trimmedQuery.toLowerCase())\r\n );\r\n\r\n const isMatchingArea = selectedAreas.length === 0 || selectedAreas.some((selectedArea) => {\r\n return disposition.disposition.inhoud.gebied.includes(selectedArea.value);\r\n });\r\n\r\n return isMatchingQuery && isMatchingArea;\r\n });\r\n\r\n\r\n return filteredDispositions;\r\n } catch (error) {\r\n console.error(\"Error in getDispositions:\", error.message);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const getThesaurus = async () => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_HOST}meta/thesaurus`)\r\n .then(({ data }) => {\r\n return data[0]?.all;\r\n });\r\n}\r\n// Helper function to extract YouTube video ID from URL\r\nexport function YouTubeGetID(url) {\r\n if (!url || typeof url !== 'string') {\r\n console.error(\"Invalid URL provided\");\r\n return null;\r\n }\r\n\r\n let ID = \"\";\r\n const parts = url\r\n .replace(/(>|<)/gi, \"\")\r\n .split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\r\n\r\n if (parts[2] !== undefined) {\r\n ID = parts[2].split(/[^0-9a-z_-]/i)[0];\r\n } else {\r\n console.error(\"Could not extract YouTube video ID from URL\");\r\n return null;\r\n }\r\n return ID;\r\n}\r\n\r\nexport const fetchYouTubeData = async (videoId) => {\r\n const API_KEY = \"AIzaSyDncIess6YPfy8SFdT0MtjSGhbEkAoR0z8\";\r\n\r\n if (!videoId) {\r\n console.error(\"Invalid YouTube ID\");\r\n return null;\r\n }\r\n\r\n try {\r\n const response = await fetch(`https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${API_KEY}&part=snippet`);\r\n\r\n if (!response.ok) {\r\n throw new Error(`Error fetching video data: ${response.statusText}`);\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // Check if the video data is available\r\n if (data.items && data.items.length > 0) {\r\n const sendData = data.items[0].snippet;\r\n sendData['youtube_id'] = videoId;\r\n return sendData; // Return the snippet of the first video found\r\n } else {\r\n throw new Error(\"No video data found\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error during fetchYouTubeData:\", error.message);\r\n return null; // Return null in case of an error\r\n }\r\n};\r\n\r\n\r\nexport const getAccessibilityData = async () => {\r\n\r\n try {\r\n const response = await axios.get(`${process.env.REACT_APP_HOST}content/wbp6/toegankelijkheidsverklaring/artikel`);\r\n return response.data;\r\n } catch (error) {\r\n throw new Error(error.message);\r\n }\r\n}\r\n","import React, {useContext, useReducer, createContext, useEffect, useRef} from \"react\";\r\nimport { getDispositionFacets, getFacets, getThemes } from \"../api\";\r\nimport { colorByCluster } from \"../helpers/colorCluster\";\r\n\r\nconst RefContext = createContext(null);\r\n\r\nexport const useRefProvider = () => useContext(RefContext);\r\n\r\nconst RefProvider = ({ children }) => {\r\n // video refs\r\n const videoTriggerRef = useRef(null);\r\n const videoModalFirstElRef = useRef(null);\r\n\r\n // themes filter refs\r\n const themesFilterTriggerRef = useRef(null);\r\n const themesFilterFirstElRef = useRef(null);\r\n\r\n // Dynamic refs object\r\n const dynamicRefs = useRef({});\r\n\r\n // Function to get or create a ref for a given key\r\n const setRef = (key) => {\r\n if (!dynamicRefs.current[key]) {\r\n dynamicRefs.current[key] = React.createRef();\r\n }\r\n return dynamicRefs.current[key];\r\n };\r\n\r\n // Function to focus a specific ref by its key\r\n const focusRef = (key) => {\r\n if (dynamicRefs.current[key] && dynamicRefs.current[key].current) {\r\n dynamicRefs.current[key].current.focus();\r\n }\r\n };\r\n\r\n const sendRefs = {\r\n videoTriggerRef,\r\n videoModalFirstElRef,\r\n themesFilterTriggerRef,\r\n themesFilterFirstElRef,\r\n setRef,\r\n focusRef,\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst updateClusterOrdering = (c) => {\r\n let order = 0;\r\n\r\n switch (c.value) {\r\n case \"waterketen\":\r\n order = 4;\r\n break;\r\n case \"waterveiligheid\":\r\n order = 1;\r\n break;\r\n case \"waterkwaliteit\":\r\n order = 2;\r\n break;\r\n case \"waterkwantiteit\":\r\n order = 3;\r\n break;\r\n case \"organisatie & bestuur\":\r\n order = 5;\r\n break;\r\n case \"overkoepelende thema’s\":\r\n order = 6;\r\n break;\r\n default:\r\n break;\r\n }\r\n return { ...c, order };\r\n};\r\n\r\nconst initialState = {\r\n globalThemes: [],\r\n videoModal: null,\r\n videoData: null,\r\n videoIsOpen: false,\r\n areas: [],\r\n areaFilterOpen: false,\r\n clusters: [],\r\n developments: [],\r\n themeFilterOpen: false,\r\n developmentsOverlayOpen: false,\r\n dispositionSearch: \"\",\r\n dispositionColors: {},\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case \"set_global_themes\":\r\n return {\r\n ...state,\r\n globalThemes: action.payload.sort((x, y) => {\r\n const t1 = x.title.toUpperCase();\r\n const t2 = y.title.toUpperCase();\r\n return t1 < t2 ? -1 : t1 > t2 ? 1 : 0;\r\n }),\r\n dispositionColors: action.payload.reduce((acc, elem) => {\r\n const { inhoud = {}, maatregelen = [], title = \"\" } = elem;\r\n const color = colorByCluster(inhoud.cluster);\r\n maatregelen.forEach(({ maatregel }) => {\r\n acc[maatregel.id] = { color, title };\r\n });\r\n return acc;\r\n }, {}),\r\n };\r\n case \"set_all_areas\":\r\n return {\r\n ...state,\r\n areas: action.payload\r\n .sort((a, b) => (a.label < b.label ? -1 : a.label > b.label ? 1 : 0))\r\n .map((area) => {\r\n return { ...area, active: false };\r\n }),\r\n };\r\n case \"set_area\":\r\n return {\r\n ...state,\r\n areas: state.areas.map((area) => {\r\n if (area.value === action.payload.id) {\r\n return { ...area, active: action.payload.state };\r\n } else {\r\n return area;\r\n }\r\n }),\r\n };\r\n case \"open_area_filter\":\r\n return { ...state, areaFilterOpen: true };\r\n case \"close_area_filter\":\r\n return { ...state, areaFilterOpen: false };\r\n case \"deactivate_all_filters\":\r\n return {\r\n ...state,\r\n areas: state.areas.map((area) => {\r\n return { ...area, active: false };\r\n }),\r\n };\r\n case \"set_all_clusters\":\r\n return {\r\n ...state,\r\n clusters: action.payload\r\n .map(updateClusterOrdering)\r\n .map((c) => {\r\n return { ...c, active: false };\r\n })\r\n .sort((a, b) =>\r\n a.order < b.order ? -1 : a.order === b.order ? 0 : 1\r\n ),\r\n };\r\n case \"reset_all_clusters\":\r\n return {\r\n ...state,\r\n clusters: state.clusters.map((c) => {\r\n return { ...c, active: false };\r\n }),\r\n };\r\n case \"set_cluster\":\r\n return {\r\n ...state,\r\n clusters: state.clusters.map((cluster) => {\r\n if (cluster.value === action.payload.id) {\r\n return { ...cluster, active: action.payload.state };\r\n } else {\r\n return cluster;\r\n }\r\n }),\r\n };\r\n case \"set_all_developments\":\r\n return {\r\n ...state,\r\n developments: action.payload\r\n .sort((a, b) => (a.label < b.label ? -1 : a.label > b.label ? 1 : 0))\r\n .map((development) => {\r\n return { ...development, active: false };\r\n }),\r\n };\r\n case \"set_development\":\r\n return {\r\n ...state,\r\n developments: state.developments.map((development) => {\r\n if (development.value === action.payload.id) {\r\n return { ...development, active: action.payload.state };\r\n } else {\r\n return development;\r\n }\r\n }),\r\n };\r\n case \"set_developments\":\r\n return {\r\n ...state,\r\n developments: action.payload,\r\n };\r\n case \"reset_development\":\r\n return {\r\n ...state,\r\n developments: state.developments.map((development) => {\r\n return { ...development, active: false };\r\n }),\r\n };\r\n case \"open_developments_overlay\":\r\n return {\r\n ...state,\r\n developmentsOverlayOpen: true,\r\n };\r\n case \"close_developments_overlay\":\r\n return {\r\n ...state,\r\n developmentsOverlayOpen: false,\r\n };\r\n case \"update_disposition_search\":\r\n return {\r\n ...state,\r\n dispositionSearch: action.payload,\r\n };\r\n case \"clear_disposition_search\":\r\n return {\r\n ...state,\r\n dispositionSearch: \"\",\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst StateContext = createContext();\r\nconst DispatchContext = createContext();\r\n\r\nconst Reducer = ({ children }) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n // initial global data load\r\n useEffect(() => {\r\n getFacets().then((r) => {\r\n r.facets.forEach((f) => {\r\n if (f.name === \"Cluster\") {\r\n dispatch({ type: \"set_all_clusters\", payload: f.values });\r\n } else if (f.name === \"Ontwikkeling lange termijn\") {\r\n dispatch({ type: \"set_all_developments\", payload: f.values });\r\n }\r\n });\r\n });\r\n\r\n getDispositionFacets().then((r) => {\r\n r.facets.forEach((f) => {\r\n if (f.name === \"Gebied\") {\r\n dispatch({ type: \"set_all_areas\", payload: f.values });\r\n }\r\n });\r\n });\r\n\r\n getThemes().then((payload) =>\r\n dispatch({ type: \"set_global_themes\", payload })\r\n );\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Reducer;\r\n\r\nexport const useState = () => useContext(StateContext);\r\nexport const useDispatch = () => useContext(DispatchContext);\r\n","import React, {forwardRef} from 'react';\r\n\r\nconst IconButton = forwardRef(({ children, ariaLabel, ariaExpanded = false, className = \"\", glow = false, onClick = () => null }, ref) => {\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nexport default IconButton;\r\n","const DevFilterItem = ({ label, active, value, callback }) => {\r\n return (\r\n
\r\n {\r\n callback(value, e.target.checked);\r\n }}\r\n />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DevFilterItem;\r\n","import React, { useContext, createContext, useState, useEffect } from \"react\";\r\n\r\nfunction getCurrentBreakpoint(width) {\r\n if (width >= largeBreakpoint) {\r\n return \"xl\";\r\n } else if (width >= breakpoint) {\r\n return \"l\";\r\n } else {\r\n return \"s\";\r\n }\r\n}\r\n\r\nconst ViewportContext = createContext();\r\n\r\nconst Viewport = ({ children }) => {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n const [breakpoint, setBreakpoint] = useState(getCurrentBreakpoint(width));\r\n\r\n const handleWindowResize = () => {\r\n setWidth(window.innerWidth);\r\n setBreakpoint(getCurrentBreakpoint(window.innerWidth));\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n return () => window.removeEventListener(\"resize\", handleWindowResize);\r\n }, []);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const breakpoint = 900;\r\nexport const largeBreakpoint = 1200;\r\n\r\nexport const useViewport = () => {\r\n const { width } = useContext(ViewportContext);\r\n return width;\r\n};\r\n\r\nexport const useBreakpoint = () => {\r\n const { breakpoint } = useContext(ViewportContext);\r\n return breakpoint;\r\n};\r\n\r\nexport default Viewport;\r\n","import { useState, useEffect } from 'react';\r\nimport { breakpoint } from \"./useViewport\";\r\n\r\n// Custom hook to check if the device is mobile\r\nconst useIsMobile = (mobileBreakpoint = breakpoint) => {\r\n const [isMobile, setIsMobile] = useState(window.innerWidth < mobileBreakpoint);\r\n\r\n useEffect(() => {\r\n // Update isMobile state on resize\r\n const handleResize = () => {\r\n setIsMobile(window.innerWidth < mobileBreakpoint);\r\n };\r\n\r\n // Add event listener\r\n window.addEventListener('resize', handleResize);\r\n\r\n // Clean up event listener on component unmount\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, [mobileBreakpoint]);\r\n\r\n return isMobile;\r\n};\r\n\r\nexport default useIsMobile;\r\n","import { useEffect, useState as useReactState } from \"react\";\r\nimport {useState, useDispatch, useRefProvider} from \"../hooks/useReducer\";\r\nimport IconButton from \"./IconButton\";\r\nimport { Filter, Arrow } from \"./Icons\";\r\nimport DevFilterItem from \"./DevFilterITem\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\nimport {useNavigate} from \"react-router-dom\";\r\n\r\nconst ThemeFilter = ({ children }) => {\r\n const navigate = useNavigate();\r\n const { clusters, developments, developmentsOverlayOpen, themeFilterOpen } = useState();\r\n const dispatch = useDispatch();\r\n const { themesFilterTriggerRef, themesFilterFirstElRef } = useRefProvider();\r\n const isMobile = useIsMobile()\r\n const [currentDevelopments, setCurrentDevelopments] =\r\n useReactState(developments);\r\n\r\n useEffect(() => {\r\n if (!developmentsOverlayOpen) {\r\n setCurrentDevelopments(developments);\r\n }\r\n }, [developments]);\r\n\r\n const handleOpenPanelClick = () => {\r\n if (themesFilterFirstElRef.current) {\r\n themesFilterFirstElRef.current.focus();\r\n }\r\n navigate({\r\n search: '?open-filters=true',\r\n });\r\n };\r\n\r\n const handleClusterClick = (id, state) => {\r\n dispatch({ type: \"set_cluster\", payload: { id, state } });\r\n };\r\n\r\n const handleOpenDevelopmentsOverlay = () => {\r\n if (developmentsOverlayOpen) {\r\n handleCloseDevFilterClick();\r\n } else {\r\n dispatch({ type: \"open_developments_overlay\" });\r\n }\r\n };\r\n\r\n const handleDevFilterClick = (id, state) => {\r\n setCurrentDevelopments((old) => {\r\n return old.map((item) => {\r\n if (item.value === id) {\r\n item.active = state;\r\n }\r\n return item;\r\n });\r\n });\r\n };\r\n\r\n const handleCloseDevFilterClick = () => {\r\n dispatch({ type: \"close_developments_overlay\" });\r\n dispatch({ type: \"set_developments\", payload: currentDevelopments });\r\n };\r\n\r\n return (\r\n
\r\n {isMobile &&
\r\n
\r\n
\r\n
\r\n
{children}
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
}\r\n {!isMobile &&
\r\n
\r\n
\r\n
\r\n
    \r\n {clusters.map((cluster, index) => (\r\n
  • \r\n {\r\n handleClusterClick(cluster.value, e.target.checked);\r\n }}\r\n />\r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
}\r\n {!isMobile &&
\r\n
\r\n
\r\n
\r\n \r\n Ontwikkelingen lange termijn\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n {currentDevelopments.map((dev, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n Toon resultaten\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ThemeFilter;\r\n","import { useEffect } from \"react\";\r\nimport {useState, useDispatch, useRefProvider} from \"../hooks/useReducer\";\r\nimport FocusLock from \"react-focus-lock\";\r\nimport {useSearchParams} from \"react-router-dom\";\r\nimport {ThemeFilterMobileIcon} from \"./Icons\";\r\n\r\nconst FilterItem = ({ handleClick, label, value, active, index }) => (\r\n
  • \r\n {\r\n handleClick(value, e.target.checked);\r\n }}\r\n />\r\n \r\n
  • \r\n);\r\n\r\nconst ThemeFilterModal = () => {\r\n const { clusters, developments } = useState();\r\n const dispatch = useDispatch();\r\n const [searchParams, setSearchParams] = useSearchParams();\r\n const themeFilterOpen = searchParams.get('open-filters') ? true : false;\r\n const { themesFilterTriggerRef, themesFilterFirstElRef } = useRefProvider();\r\n\r\n useEffect(() => {\r\n document.body.classList.toggle(\"modal-open\", themeFilterOpen);\r\n if (!themeFilterOpen) {\r\n const modalElement = document.getElementById(\"modal-theme-filter\");\r\n if (modalElement) {\r\n modalElement.scrollTop = 0;\r\n }\r\n }\r\n }, [themeFilterOpen]);\r\n\r\n const handleClosePanel = () => {\r\n searchParams.delete('open-filters');\r\n setSearchParams(searchParams);\r\n };\r\n const handleOnKeyDown = (event) => {\r\n const { key, shiftKey } = event;\r\n if (key === \"Escape\") {\r\n handleClosePanel();\r\n }\r\n if (shiftKey) {\r\n if (document.activeElement === themesFilterFirstElRef.current) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n const handleClusterClick = (id, state) => {\r\n dispatch({ type: \"set_cluster\", payload: { id, state } });\r\n };\r\n\r\n const handleDevelopmentClick = (id, state) => {\r\n dispatch({ type: \"set_development\", payload: { id, state } });\r\n };\r\n\r\n const handleClearAll = () => {\r\n dispatch({ type: \"reset_development\" });\r\n dispatch({ type: \"reset_all_clusters\" });\r\n };\r\n\r\n return (\r\n \r\n e.stopPropagation()}\r\n >\r\n {themeFilterOpen && ( {\r\n themesFilterTriggerRef.current?.focus()\r\n }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Filtering

    \r\n \r\n wis alle filters\r\n \r\n
    \r\n {clusters.length > 0 && (\r\n
    \r\n

    \r\n Clusters\r\n

    \r\n
      \r\n {clusters.map((cluster, index) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n {developments.length > 0 && (\r\n
    \r\n

    \r\n Ontwikkelingen lange termijn\r\n

    \r\n
      \r\n {developments.map((development, index) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    )}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ThemeFilterModal;\r\n","import {Link} from \"react-router-dom\";\r\nimport LogoDelfsland from \"../assets/logo-delfsland.svg\";\r\nimport {useRefProvider} from \"../hooks/useReducer\";\r\n\r\nexport function LogoDelfslandComponent() {\r\n const {setRef} = useRefProvider();\r\n return (\r\n \r\n \"Logo\r\n \r\n )\r\n}\r\nexport default LogoDelfslandComponent;\r\n","import {useRefProvider} from \"../hooks/useReducer\";\r\n\r\nexport function SkipLink({ targetId }) {\r\n const { setRef } = useRefProvider();\r\n return (\r\n Skip naar de hoofdinhoud\r\n )\r\n}\r\nexport default SkipLink;\r\n","import React from \"react\";\r\n\r\nfunction WaterwerkLogoDark() {\r\n return \r\n Logo Waterwerk, ga naar de homepage van Waterwerk WBP6\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport default WaterwerkLogoDark;\r\n","import React from 'react';\r\nimport LogoDelfslandComponent from \"../components/LogoDelfsland\";\r\nimport SkipLink from \"../components/SkipLink\";\r\nimport WaterwerkLogoDark from \"../components/WaterwerkLogoDark\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst Header = () => (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport default Header;\r\n","import { useLocation } from \"react-router-dom\";\r\nimport ClusterResult from \"../components/ClusterResult\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport ThemeFilter from \"../components/ThemeFilter\";\r\nimport {useDispatch, useState as useGlobalState} from \"../hooks/useReducer\";\r\nimport { getThemes } from \"../api\";\r\nimport { CancelToken } from \"axios\";\r\nimport ThemeFilterModal from \"../components/ThemeFilterModal\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\nimport HeadMeta from \"../components/HeadMeta\";\r\nimport Header from \"../components/Header\";\r\n\r\nfunction ClusterIndex() {\r\n const [themes, setThemes] = useState([]);\r\n const { pathname } = useLocation();\r\n const { clusters, developments, globalThemes } = useGlobalState();\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n\r\n useEffect(() => {\r\n setThemes(globalThemes);\r\n }, [globalThemes]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch({ type: \"reset_all_clusters\" });\r\n dispatch({ type: \"reset_development\" });\r\n };\r\n }, [pathname, dispatch]);\r\n\r\n useEffect(() => {\r\n const source = CancelToken.source();\r\n const filteredClusters = clusters.filter(({ active }) => active);\r\n const filteredDevelopments = developments.filter(({ active }) => active);\r\n\r\n if (filteredClusters.length === 0 && filteredDevelopments.length === 0) {\r\n setThemes(globalThemes);\r\n } else {\r\n getThemes(\r\n clusters.filter(({ active }) => active),\r\n developments.filter(({ active }) => active),\r\n source.token\r\n )\r\n .then((xs) =>\r\n setThemes(\r\n xs.sort((x, y) => {\r\n const t1 = x.title.toUpperCase();\r\n const t2 = y.title.toUpperCase();\r\n return t1 < t2 ? -1 : t1 > t2 ? 1 : 0;\r\n })\r\n )\r\n )\r\n .catch((e) => console.log(e));\r\n }\r\n\r\n return () => source.cancel(\"\");\r\n }, [globalThemes, clusters, developments, themes]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n

    {themes.length} gevonden resultaten

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {themes.length} gevonden resultaten

    \r\n
    \r\n {themes.map((result) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isMobile && }\r\n
    \r\n );\r\n}\r\n\r\nexport default ClusterIndex;\r\n","\r\nfunction Logo(props) {\r\n return \r\n Logo Waterwerk, ga naar de homepage van Waterwerk WBP6\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport default Logo;\r\n","// Tries to get image variant with given width. Fallsback to full image.\r\nexport const getImage = (im, imageWidth = 640) => {\r\n if (im === undefined) {\r\n return \"\";\r\n }\r\n const { link, variants } = im;\r\n const vars = variants.filter(({ width }) => width === imageWidth);\r\n return vars.length > 0 ? vars[0].link : link;\r\n};\r\n","import { useState, useRef, useEffect } from \"react\";\r\nimport { usePopper } from \"react-popper\";\r\nimport {getThesaurus} from \"../api\";\r\n\r\nconst ContextPopper = ({ title, matchedTextWord }) => {\r\n const [visible, setVisibility] = useState(false);\r\n const [content, setContent] = useState(\"\");\r\n\r\n const referenceRef = useRef(null);\r\n const popperRef = useRef(null);\r\n\r\n const { styles, attributes, update } = usePopper(\r\n referenceRef.current,\r\n popperRef.current,\r\n {\r\n placement: \"bottom\",\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n enabled: true,\r\n options: {\r\n offset: [0, 0],\r\n },\r\n },\r\n ],\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n // listen for clicks and close dropdown on body\r\n document.addEventListener(\"mousedown\", handleDocumentClick);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleDocumentClick);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n getThesaurus()\r\n .then((thesaurusData) => {\r\n for(const item of thesaurusData) {\r\n if (title === item?.name) {\r\n setContent(item?.explanation);\r\n break;\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n });\r\n\r\n }, [title]);\r\n\r\n function handleDocumentClick(event) {\r\n if (\r\n referenceRef.current &&\r\n !referenceRef.current.contains(event.target) &&\r\n popperRef.current &&\r\n !popperRef.current.contains(event.target)\r\n ) {\r\n setVisibility(false);\r\n }\r\n }\r\n function handleDropdownOpenClick(event) {\r\n if (!visible) {\r\n setVisibility(true);\r\n update();\r\n }\r\n }\r\n\r\n function handleKeyDown(event) {\r\n const { key } = event;\r\n if (key === \"Enter\" || key === \" \") {\r\n event.preventDefault();\r\n setVisibility(!visible);\r\n update();\r\n }\r\n if (key === \"Escape\" || key === \"Tab\") {\r\n setVisibility(false);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {matchedTextWord}\r\n \r\n \r\n \r\n {title}\r\n {content}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContextPopper;","import ReactHtmlParser from \"react-html-parser\";\r\nimport ContextPopper from \"../components/ContextPopper\";\r\n\r\nconst replaceTerm = (content, { name }) => {\r\n const pattern = new RegExp(`\\\\b${name}\\\\b`, 'ig');\r\n const replace = content.replace(pattern, (match) => {\r\n const replace = `${name}`;\r\n return replace;\r\n });\r\n return replace;\r\n};\r\n\r\nconst parseTerm = (content, thesaurusData) => {\r\n // Split the content by tags to avoid replacing inside them\r\n const regex = /(]*>.*?<\\/a>)/gi;\r\n const parts = content.split(regex);\r\n\r\n // Iterate through parts and replace terms outside tags\r\n const updatedContent = parts.map((part) => {\r\n if (part.startsWith(' tags\r\n } else {\r\n thesaurusData.forEach((term) => {\r\n part = replaceTerm(part, term);\r\n });\r\n return part;\r\n }\r\n });\r\n\r\n return updatedContent.join('');\r\n};\r\n\r\nconst transform = (node, index) => {\r\n if (node.type === \"tag\" && node.name === \"contextpopper\") {\r\n const { 'data-matched-text-word': matchedTextWord } = node.children[0].parent.attribs;\r\n return ;\r\n }\r\n};\r\n\r\nconst wordListParser = (content, thesaurusData) => {\r\n if (content === undefined || thesaurusData === undefined) {\r\n return ReactHtmlParser(\"\");\r\n }\r\n\r\n return ReactHtmlParser(parseTerm(content, thesaurusData), {\r\n transform: transform,\r\n });\r\n};\r\n\r\nexport default wordListParser;","import { useState, useEffect } from \"react\";\r\nimport wordListParser from \"../helpers/wordList\";\r\nimport { getThesaurus } from \"../api\";\r\n\r\nconst useParsedDispositionContent = (toelichting) => {\r\n const [content, setContent] = useState(null);\r\n\r\n useEffect(() => {\r\n const fetchContent = async () => {\r\n if (!toelichting) return;\r\n\r\n try {\r\n const thesaurusData = await getThesaurus();\r\n const parsedContent = wordListParser(toelichting, thesaurusData);\r\n setContent(parsedContent);\r\n } catch (error) {\r\n console.error(\"Error fetching thesaurus or parsing content:\", error);\r\n }\r\n };\r\n\r\n fetchContent();\r\n }, [toelichting]);\r\n\r\n return content;\r\n};\r\n\r\nexport default useParsedDispositionContent;\r\n","import {useState} from \"react\";\r\nimport { useRefProvider, useState as useReducerState} from \"../hooks/useReducer\";\r\nimport {getImage} from \"../helpers/imageParse\";\r\nimport {AreaIcon, PlusIcon} from \"./Icons\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\nimport {useNavigate, useSearchParams} from \"react-router-dom\";\r\nimport useParsedDispositionContent from \"../hooks/useParesedDispositionContent\";\r\n\r\nconst DispositionCard = (props) => {\r\n const navigate = useNavigate();\r\n const [searchParams] = useSearchParams();\r\n const {\r\n ancestors,\r\n hideTheme = false,\r\n id,\r\n inhoud = {},\r\n themeTitle,\r\n title\r\n } = props;\r\n\r\n const label = ancestors?.[0]?.label;\r\n const {\r\n toelichting,\r\n gebied = [],\r\n hoofdafbeelding,\r\n periodeStart = \"\",\r\n periodeEind = \"\",\r\n } = inhoud;\r\n const year = periodeStart.slice(0, 4) + \" - \" + periodeEind.slice(0, 4);\r\n const image = getImage(hoofdafbeelding);\r\n const [contentOpen, setContentOpen] = useState(false);\r\n const [areaOpen, setAreaOpen] = useState(false);\r\n const { setRef, focusRef } = useRefProvider();\r\n const {areas, dispositionColors} = useReducerState();\r\n const isDispositionModalOpen = searchParams.get('dispositionId') ? true : false;\r\n let color = props.color;\r\n if (id && dispositionColors[id]) {\r\n color = dispositionColors[id].color;\r\n }\r\n const isMobile = useIsMobile();\r\n const content = useParsedDispositionContent(toelichting);\r\n\r\n const handleContentClick = () => {\r\n if (!contentOpen) {\r\n setAreaOpen(false);\r\n }\r\n setContentOpen((old) => !old);\r\n };\r\n\r\n const handleAreaClick = () => {\r\n if (!areaOpen) {\r\n setContentOpen(false);\r\n }\r\n setAreaOpen((old) => !old);\r\n };\r\n\r\n const handleMobileClick = () => {\r\n if (isDispositionModalOpen) {\r\n return;\r\n }\r\n navigate({\r\n search: `?dispositionId=${id}`,\r\n });\r\n focusRef(`popup-modal`);\r\n };\r\n\r\n return (\r\n
      \r\n
    • \r\n {!hideTheme && `Thema: ${themeTitle}`}\r\n { isMobile && \r\n \r\n }\r\n
    • \r\n
    • \r\n {`Cluster: ${label}`}\r\n
    • \r\n\r\n
    • \r\n {`Maatregel: ${title}`}\r\n
    • \r\n
    • \r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n
    • \r\n\r\n
    • \r\n \r\n
    • \r\n\r\n
    • \r\n \r\n \r\n \r\n Gebied: \r\n \r\n Gebied details\r\n
        \r\n {areas.map((a, i) => (\r\n \r\n \r\n {a.label}\r\n \r\n ))}\r\n
      \r\n \r\n
    • \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default DispositionCard;\r\n","import {useState, useDispatch, useRefProvider} from \"../hooks/useReducer\";\r\nimport { AreaIcon, Filter } from \"./Icons\";\r\nimport IconButton from \"./IconButton\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\n\r\nconst AreaFilter = ({ count }) => {\r\n const navigate = useNavigate();\r\n const { areas } = useState();\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { setRef, focusRef } = useRefProvider();\r\n const handleFilterButtonClick = (id, state) => {\r\n navigate(\"/maatregelen\");\r\n dispatch({ type: \"set_area\", payload: { id, state } });\r\n };\r\n\r\n const handleOpenFilterPanelClick = () => {\r\n navigate({\r\n search: '?open-filters=true',\r\n });\r\n focusRef(`areaFirstEl`);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n { isMobile &&\r\n
    \r\n

    {count} gevonden resultaten

    \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n

    Gebied:

    \r\n
      \r\n {areas.map(({ value, label, active }, index) => (\r\n
    • \r\n handleFilterButtonClick(value, !active)}\r\n >\r\n \r\n \r\n \r\n {label}\r\n \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AreaFilter;\r\n","import React from \"react\";\r\nimport { useDispatch } from \"../hooks/useReducer\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nfunction debounce(func, timeout = 300) {\r\n let timer;\r\n return (...args) => {\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n func.apply(this, args);\r\n }, timeout);\r\n };\r\n}\r\n\r\nconst SearchFilter = () => {\r\n const dispatch = useDispatch();\r\n const navigate = useNavigate();\r\n\r\n function processSearchFilter(e) {\r\n navigate(\"/maatregelen\");\r\n dispatch({\r\n type: \"update_disposition_search\",\r\n payload: e.target.value.trim(),\r\n });\r\n }\r\n\r\n const handleSearchFilter = debounce((e) => processSearchFilter(e));\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n Zoeken:\r\n handleSearchFilter(e)}\r\n />\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SearchFilter;\r\n","import IconButton from \"./IconButton\";\r\nimport { ArrowLeft, ArrowRight } from \"./Icons\";\r\n\r\nconst DispositionPagination = ({\r\n current,\r\n maximum,\r\n request = (page) => null,\r\n}) => {\r\n const handleNext = () => {\r\n if (current < maximum - 1) {\r\n request(current + 1);\r\n }\r\n };\r\n\r\n const handlePrevious = () => {\r\n if (current > 0) {\r\n request(current - 1);\r\n }\r\n };\r\n\r\n if (maximum <= 1) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {current + 1}\r\n {\" / \"}\r\n {maximum}\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default DispositionPagination;\r\n","const CloseButton = ({ onClick, ariaLabel = \"Close\", className = \"\", closeButtonRef }) => (\r\n \r\n \r\n Sluit filters\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CloseButton;\r\n","import FocusLock from \"react-focus-lock\";\r\nimport { useEffect } from \"react\";\r\nimport { useState, useDispatch, useRefProvider } from \"../hooks/useReducer\";\r\nimport { AreaIcon } from \"./Icons\";\r\nimport IconButton from \"./IconButton\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport { useNavigate, useSearchParams } from \"react-router-dom\";\r\nimport CloseButton from \"./CloseButton\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\n\r\nconst AreaModal = () => {\r\n const navigate = useNavigate();\r\n const [searchParams, setSearchParams] = useSearchParams();\r\n const areaFilterOpen = searchParams.get('open-filters') ? true : false;\r\n const { areas } = useState();\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { setRef, focusRef } = useRefProvider();\r\n\r\n useEffect(() => {\r\n document.body.classList.toggle(\"modal-open\", areaFilterOpen);\r\n if (!areaFilterOpen) {\r\n const modalElement = document.getElementById(\"modal-area\");\r\n if (modalElement) {\r\n modalElement.scrollTop = 0;\r\n }\r\n }\r\n }, [areaFilterOpen]);\r\n\r\n const handlers = useSwipeable({\r\n onSwiped: () => dispatch({ type: \"close_area_filter\" }),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true,\r\n });\r\n\r\n const handleCloseModal = () => {\r\n searchParams.delete('open-filters');\r\n setSearchParams(searchParams);\r\n };\r\n\r\n const handleFilterButtonClick = (id, state) => {\r\n navigate(\"/maatregelen\");\r\n dispatch({ type: \"set_area\", payload: { id, state } });\r\n };\r\n\r\n const handleResetFilters = () => {\r\n dispatch({ type: \"deactivate_all_filters\" });\r\n };\r\n\r\n const handleOnKeyDownAreaModal = (event) => {\r\n const { key } = event;\r\n if (key === \"Escape\") {\r\n handleCloseModal();\r\n }\r\n };\r\n\r\n return (\r\n areaFilterOpen && (\r\n {\r\n focusRef(\"areaTrigger\");\r\n }}\r\n >\r\n \r\n e.stopPropagation()}\r\n {...handlers}\r\n >\r\n {isMobile && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Gebieden

    \r\n \r\n reset alle filters\r\n \r\n
    \r\n
      \r\n {areas.map(({ value, label, active }, index) => (\r\n
    • \r\n {\r\n e.stopPropagation();\r\n handleFilterButtonClick(value, !active);\r\n }}\r\n aria-current={active ? true : false}\r\n >\r\n \r\n \r\n \r\n {label}\r\n \r\n
    • \r\n ))}\r\n
    \r\n \r\n SLUITEN\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default AreaModal;\r\n","import {useState, useRef} from \"react\";\r\nimport {useRefProvider, useState as useReducerState} from \"../hooks/useReducer\";\r\nimport {getImage} from \"../helpers/imageParse\";\r\nimport {AreaIcon, PlusIcon} from \"./Icons\";\r\nimport {useNavigate, useSearchParams} from \"react-router-dom\";\r\nimport FocusLock from \"react-focus-lock\";\r\nimport useParsedDispositionContent from \"../hooks/useParesedDispositionContent\";\r\n\r\nconst DispositionCardModal = (props) => {\r\n const navigate = useNavigate();\r\n const [searchParams, setSearchParams] = useSearchParams();\r\n const {\r\n ancestors,\r\n id,\r\n inhoud = {},\r\n isModal = false,\r\n themeTitle,\r\n title\r\n } = props;\r\n\r\n const label = ancestors?.[0]?.label;\r\n const {\r\n toelichting,\r\n gebied = [],\r\n hoofdafbeelding,\r\n periodeStart = \"\",\r\n periodeEind = \"\",\r\n } = inhoud;\r\n const year = periodeStart.slice(0, 4) + \" - \" + periodeEind.slice(0, 4);\r\n const image = getImage(hoofdafbeelding);\r\n const { setRef, focusRef } = useRefProvider();\r\n const {areas, dispositionColors} = useReducerState();\r\n const [contentOpen, setContentOpen] = useState(false);\r\n const [areaOpen, setAreaOpen] = useState(false);\r\n const content = useParsedDispositionContent(toelichting);\r\n const isDispositionModalOpen = searchParams.get('dispositionId') ? true : false;\r\n const popupRef = useRef(null);\r\n let color = props.color;\r\n if (id && dispositionColors[id]) {\r\n color = dispositionColors[id].color;\r\n }\r\n\r\n const handleContentClick = () => {\r\n if (!contentOpen) {\r\n setAreaOpen(false);\r\n }\r\n setContentOpen((old) => !old);\r\n };\r\n\r\n const handleAreaClick = () => {\r\n if (!areaOpen) {\r\n setContentOpen(false);\r\n }\r\n setAreaOpen((old) => !old);\r\n };\r\n\r\n const closeModal = () => {\r\n focusRef(`${id}-no-modal`);\r\n\r\n searchParams.delete('dispositionId');\r\n searchParams.delete('themeTitle');\r\n setSearchParams(searchParams);\r\n }\r\n const openModal = () => {\r\n navigate({\r\n search: `?dispositionId=${id}`,\r\n });\r\n focusRef(`popup-modal`);\r\n }\r\n\r\n const handleMobileClick = () => {\r\n if (isDispositionModalOpen) {\r\n closeModal();\r\n } else {\r\n openModal();\r\n }\r\n };\r\n const handleOnKeyDown = (event) => {\r\n const { key } = event;\r\n if (!isDispositionModalOpen) {\r\n return;\r\n }\r\n if (key === \"Escape\") {\r\n closeModal();\r\n }\r\n }\r\n const handleParentModalEl = (event) => {\r\n if (event.key === \"Escape\") {\r\n closeModal();\r\n }\r\n };\r\n\r\n if (!id) {\r\n return null;\r\n }\r\n\r\n return (\r\n {\r\n focusRef(`${id}-no-modal`);\r\n }}\r\n >\r\n \r\n
  • \r\n {`Thema: ${themeTitle}`}\r\n \r\n \r\n \r\n
  • \r\n
  • \r\n {`Cluster: ${label}`}\r\n
  • \r\n\r\n
  • \r\n {`Maatregel: ${title}`}\r\n
  • \r\n\r\n
  • \r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n\r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n \r\n \r\n Gebied: \r\n \r\n Gebied details\r\n
      \r\n {areas.map((a, i) => (\r\n \r\n \r\n {a.label}\r\n \r\n ))}\r\n
    \r\n \r\n
  • \r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DispositionCardModal;\r\n","import { useEffect, useState } from \"react\";\r\nimport { getDisposition } from \"../api\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport DispositionCardModal from \"./DispositionCardModal\";\r\nimport { colorByCluster } from \"../helpers/colorCluster\";\r\n\r\nconst DispositionModal = () => {\r\n const [searchParams] = useSearchParams();\r\n const id = searchParams.get('dispositionId') || \"\";\r\n const [loaded, setLoaded] = useState(false);\r\n const [disposition, setDisposition] = useState(null);\r\n const dispositionModalOpen = id ? true : false;\r\n\r\n useEffect(() => {\r\n const fetchDisposition = async () => {\r\n if (!id) {\r\n setDisposition(null);\r\n return;\r\n }\r\n\r\n const dispositionData = await getDisposition(id);\r\n if (dispositionData) {\r\n setDisposition({ ...dispositionData });\r\n }\r\n };\r\n\r\n fetchDisposition();\r\n }, [id]);\r\n const color = disposition && disposition.color ? colorByCluster(disposition.color) : \"\";\r\n\r\n\r\n useEffect(() => {\r\n document.body.classList.toggle(\"modal-open\", dispositionModalOpen);\r\n setLoaded(dispositionModalOpen);\r\n if (!dispositionModalOpen) {\r\n const modalEl = document.getElementById(\"modal-disposition\");\r\n if (modalEl) {\r\n modalEl.scrollTop = 0;\r\n }\r\n }\r\n }, [dispositionModalOpen]);\r\n\r\n if (!id) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DispositionModal;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Link, useLocation, useNavigate } from \"react-router-dom\";\r\nimport Logo from \"../components/Logo\";\r\nimport DispositionCard from \"../components/DispositionCard\";\r\nimport AreaFilter from \"../components/AreaFilter\";\r\nimport SearchFilter from \"../components/SearchFilter\";\r\nimport { getDispositions } from \"../api\";\r\nimport {useRefProvider, useState as useGlobalState} from \"../hooks/useReducer\";\r\nimport DispositionPagination from \"../components/DispositionPagination\";\r\nimport { useDispatch } from \"../hooks/useReducer\";\r\nimport AreaModal from \"../components/AreaModal\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\nimport DispositionModal from \"../components/DispositionModal\";\r\nimport LogoDelfslandComponent from \"../components/LogoDelfsland\";\r\nimport SkipLink from \"../components/SkipLink\";\r\nimport HeadMeta from \"../components/HeadMeta\";\r\n\r\nfunction getPageValue(value) {\r\n let queryParams = new URLSearchParams(value);\r\n const result = queryParams.has(\"page\")\r\n ? isNaN(parseInt(queryParams.get(\"page\")))\r\n ? 0\r\n : parseInt(queryParams.get(\"page\"))\r\n : 0;\r\n return result;\r\n}\r\n\r\nfunction getMaxPages(count) {\r\n const rest = count % 6;\r\n return (count - rest) / 6 + (rest === 0 ? 0 : 1);\r\n}\r\n\r\nfunction DispositionIndex() {\r\n const [dispositions, setDispositions] = useState({\r\n count: 0,\r\n items: [],\r\n });\r\n const { dispositionSearch, areas } = useGlobalState();\r\n const { search, pathname } = useLocation();\r\n const [page, setPage] = useState(getPageValue(search));\r\n const [maxPages, setMaxPages] = useState(getMaxPages(0));\r\n const navigate = useNavigate();\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { focusRef } = useRefProvider();\r\n\r\n useEffect(() => {\r\n setPage(getPageValue(search));\r\n }, [search]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch({ type: \"deactivate_all_filters\" });\r\n };\r\n }, [pathname, dispatch]);\r\n\r\n useEffect(() => {\r\n const filteredAreas = areas.filter(({ active }) => active);\r\n\r\n const fetchDispositions = async () => {\r\n try {\r\n const ds = await getDispositions(dispositionSearch, filteredAreas);\r\n setDispositions({ count: ds.length, items: ds });\r\n setMaxPages(getMaxPages(ds.length));\r\n } catch (error) {\r\n console.error(\"Error fetching dispositions:\", error);\r\n }\r\n };\r\n\r\n fetchDispositions();\r\n }, [dispositionSearch, areas]);\r\n\r\n const handlePageLink = (newPage) => {\r\n navigate(`/maatregelen?page=${newPage}`);\r\n window.scrollTo({ top: 0, behavior: \"instant\" });\r\n // focus skip-link when next/prev page\r\n focusRef(\"skip-link\");\r\n };\r\n\r\n const renderDispositionCards = () => {\r\n const startIndex = page * 6;\r\n const endIndex = startIndex + 6;\r\n\r\n return dispositions.items\r\n .slice(startIndex, endIndex)\r\n .map((disposition) => (\r\n \r\n \r\n \r\n ));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {dispositions.count} gevonden resultaten

    \r\n
    \r\n \r\n
    \r\n
      \r\n {renderDispositionCards()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isMobile && }\r\n {isMobile && }\r\n
    \r\n );\r\n}\r\n\r\nexport default DispositionIndex;\r\n","import { ArrowLeft, ArrowRight } from \"./Icons\";\r\n\r\nconst SliderPagination = ({\r\n currentSlide,\r\n maxSlides,\r\n gotoSlide,\r\n next,\r\n prev,\r\n color = \"blue\",\r\n}) => {\r\n if (maxSlides === 0) {\r\n return <>;\r\n }\r\n return (\r\n
    \r\n \r\n
      \r\n {Array.apply(null, { length: maxSlides + 1 }).map((_, i) => {\r\n return (\r\n
    • \r\n gotoSlide(i)}\r\n aria-label={`Toon slide ${i + 1} met maatregelen`}\r\n // id={`knop-${i}`}\r\n className={`slider-pagination__dot-button ${\r\n i === currentSlide\r\n ? \"slider-pagination__dot-button--active\"\r\n : \"\"\r\n }`}\r\n // aria-controls={`slide-${i}`}\r\n aria-current={i === currentSlide ? true : false}\r\n >\r\n
    • \r\n\r\n );\r\n })}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SliderPagination;\r\n","import { useState, useEffect } from \"react\";\r\nimport { useBreakpoint } from \"../hooks/useViewport\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport SliderPagination from \"./SliderPagination\";\r\n\r\nconst getMaxSlides = (size, breakpoint) => {\r\n const amount = breakpoint === \"xl\" ? 3 : breakpoint === \"l\" ? 2 : 1;\r\n const rest = size % amount;\r\n const result = size === 0 ? 0 : (size - rest) / amount - (rest === 0 ? 1 : 0);\r\n return result;\r\n};\r\n\r\nconst Slider = ({ children, color }) => {\r\n const [currentSlide, setCurrentSlide] = useState(0);\r\n const breakpoint = useBreakpoint();\r\n const [maxSlides, setMaxSlides] = useState(() => {\r\n return getMaxSlides(children.length, breakpoint);\r\n });\r\n\r\n useEffect(() => {\r\n const newMaxSlides = getMaxSlides(children.length, breakpoint);\r\n setMaxSlides(newMaxSlides);\r\n if (currentSlide >= newMaxSlides) {\r\n setCurrentSlide(newMaxSlides);\r\n }\r\n }, [breakpoint, children.length, currentSlide]);\r\n\r\n const handlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n handleNextSlide();\r\n },\r\n onSwipedRight: () => {\r\n handlePreviousSlide();\r\n },\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true,\r\n });\r\n\r\n const handlePreviousSlide = () => {\r\n if (currentSlide > 0) {\r\n setCurrentSlide(currentSlide - 1);\r\n }\r\n };\r\n\r\n const handleNextSlide = () => {\r\n if (currentSlide < maxSlides) {\r\n setCurrentSlide(currentSlide + 1);\r\n }\r\n };\r\n\r\n const handleGoto = (slide) => {\r\n setCurrentSlide(slide);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {children.map((c, index) => {\r\n return (\r\n
    \r\n {c}\r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default Slider;\r\n","import { useState, useEffect } from \"react\";\r\nimport { getDisposition } from \"../api\";\r\nimport DispositionCard from \"./DispositionCard\";\r\nimport Slider from \"./Slider\";\r\nimport DispositionModal from \"./DispositionModal\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\n\r\nconst DispositionSlide = ({ id, color, themeTitle }) => {\r\n const [disposition, setDisposition] = useState(null);\r\n\r\n useEffect(() => {\r\n getDisposition(id).then(setDisposition);\r\n }, [id]);\r\n\r\n return (\r\n <>\r\n {disposition !== null && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst DispositionSlider = ({ dispositionIds = [], color = \"blue\", themeTitle = \"\" }) => {\r\n const isMobile = useIsMobile();\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Wat zijn de maatregelen?

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {dispositionIds.map((id, index) => (\r\n \r\n ))}\r\n \r\n {isMobile && }\r\n
    \r\n );\r\n};\r\n\r\nexport default DispositionSlider;\r\n","export default __webpack_public_path__ + \"static/media/kader.7f08d887.png\";","export default __webpack_public_path__ + \"static/media/play-icon.59f186eb.svg\";","export default __webpack_public_path__ + \"static/media/close-icon.d6ae5151.svg\";","import React, { useEffect, useState } from 'react';\r\nimport transcriptsData from '../assets/transcripts.json'; // Adjust path if necessary\r\n\r\nexport function VideoTranscript({ videoId }) {\r\n const [transcriptData, setTranscriptData] = useState(null);\r\n\r\n useEffect(() => {\r\n const loadTranscript = () => {\r\n const videoTranscript = transcriptsData.find(item => item.youtubeId === videoId);\r\n setTranscriptData(videoTranscript || { title: 'Transcript not found', transcript: '' });\r\n };\r\n loadTranscript();\r\n }, [videoId]);\r\n\r\n return (\r\n
    \r\n {transcriptData && (\r\n <>\r\n {transcriptData.title &&

    {`Video Transcript en Beschrijving voor \"${transcriptData.title}\"`}

    }\r\n

    {transcriptData.transcript}

    \r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default VideoTranscript;\r\n","import {useEffect, useRef, useState} from \"react\";\r\nimport { useRefProvider } from \"../hooks/useReducer\";\r\nimport YouTube from \"react-youtube\";\r\nimport CloseIcon from \"../assets/close-icon.svg\";\r\nimport VideoTranscript from \"./VideoTranscript\";\r\nimport {fetchYouTubeData} from \"../api\";\r\nimport {useLocation, useNavigate} from \"react-router-dom\";\r\nimport FocusLock from \"react-focus-lock\";\r\n\r\nconst VideoModal = ({youtubeId}) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const searchParams = new URLSearchParams(location.search);\r\n const videoId = searchParams.get(\"videoID\");\r\n const videoIsOpen = videoId ? true : false;\r\n const [youTubeData, setYoutubeData] = useState(null);\r\n const video = useRef();\r\n const videoModalLastElRef = useRef();\r\n const videoModalRef = useRef();\r\n const {videoTriggerRef, videoModalFirstElRef} = useRefProvider();\r\n\r\n useEffect(() => {\r\n const fetchYoutubeData = async () => {\r\n try {\r\n const getYoutubeData = await fetchYouTubeData(youtubeId);\r\n setYoutubeData(getYoutubeData);\r\n } catch (err) {\r\n console.error(\"Failed to fetch YouTube data:\", err);\r\n }\r\n };\r\n fetchYoutubeData();\r\n }, [youtubeId]);\r\n\r\n useEffect(() => {\r\n if (videoModalFirstElRef.current) {\r\n videoModalFirstElRef.current.focus();\r\n }\r\n const timer = setTimeout(() => {\r\n if (videoModalFirstElRef.current) {\r\n videoModalFirstElRef.current.focus();\r\n }\r\n }, 100);\r\n return () => clearTimeout(timer);\r\n }, [videoId, videoModalFirstElRef]);\r\n\r\n const closeModal = () => {\r\n searchParams.delete(\"videoID\");\r\n navigate({\r\n pathname: location.pathname,\r\n search: searchParams.toString(),\r\n });\r\n const player = video?.current?.getInternalPlayer();\r\n if (player) {\r\n player.pauseVideo();\r\n }\r\n\r\n if (videoTriggerRef?.current) {\r\n videoTriggerRef.current.focus();\r\n }\r\n };\r\n\r\n const onPlayerReady = (event) => {\r\n const player = event.target;\r\n const videoTitle = player?.getVideoData()?.title;\r\n const iframe = event?.target?.getIframe();\r\n if (!iframe) {\r\n return;\r\n }\r\n // Set iframe attributes\r\n iframe.setAttribute(\"title\", `Video '${videoTitle}'`);\r\n iframe.setAttribute(\"tabIndex\", \"0\");\r\n iframe.setAttribute(\"aria-describedby\", \"video-transcript\");\r\n };\r\n\r\n const handleOnKeyDown = (event) => {\r\n const {key} = event;\r\n const player = video?.current.getInternalPlayer();\r\n player.isPlaying = player.isPlaying || false;\r\n if (key === \"Escape\") {\r\n closeModal();\r\n }\r\n }\r\n\r\n if (!youTubeData) {\r\n return null;\r\n }\r\n\r\n const opts = {\r\n playerVars: {\r\n autoplay: 0,\r\n disablekb: 1,\r\n playerVars: {\r\n cc_load_policy: 1, // This will force captions on\r\n hl: 'nl', // Sets the language for the captions (change as needed)\r\n },\r\n },\r\n };\r\n\r\n return (\r\n {\r\n if (videoTriggerRef?.current) {\r\n videoTriggerRef.current.focus();\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {youTubeData.title && {youTubeData.title}}\r\n
    \r\n {videoId && (\r\n \r\n )}\r\n
    \r\n\r\n {/* Accessibility video transcript section */}\r\n {videoId && }\r\n\r\n {/* Hidden button for accessibility */}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VideoModal;\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst useFocusOnFirstElement = (trigger) => {\r\n const location = useLocation();\r\n useEffect(() => {\r\n if (!trigger) return;\r\n const firstFocusableElement = document.querySelector(\r\n 'a, button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n if (firstFocusableElement) {\r\n firstFocusableElement.focus();\r\n }\r\n }, [location]);\r\n};\r\n\r\nexport default useFocusOnFirstElement;\r\n","import React, {useState, useEffect, useRef} from \"react\";\r\nimport { useParams } from \"react-router\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport {fetchYouTubeData, getTheme, YouTubeGetID} from \"../api\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport DispositionSlider from \"../components/DispositionSlider\";\r\nimport { ArrowRight, ArrowLeft } from \"../components/Icons\";\r\nimport { getImage } from \"../helpers/imageParse\";\r\nimport { useState as useGlobalState, useDispatch, useRefProvider } from \"../hooks/useReducer\";\r\nimport { colorByCluster } from \"../helpers/colorCluster\";\r\nimport kader from \"../assets/kader.png\";\r\nimport PlayIcon from \"../assets/play-icon.svg\";\r\nimport ReactHtmlParser from \"react-html-parser\";\r\nimport wordListParser from \"../helpers/wordList\";\r\nimport {getThesaurus} from \"../api\";\r\nimport WaterwerkLogoDark from \"../components/WaterwerkLogoDark\";\r\nimport VideoModal from \"../components/VideoModal\";\r\nimport LogoDelfslandComponent from \"../components/LogoDelfsland\";\r\nimport SkipLink from \"../components/SkipLink\";\r\nimport useIsMobile from \"../hooks/useIsMobile\";\r\nimport HeadMeta from \"../components/HeadMeta\";\r\nimport useFocusOnFirstElement from \"../hooks/useFocusOnFirstElement\";\r\n\r\nconst renameList = [\r\n {\r\n old: \"Richtlijn Overstromingsrisico’s (Ror)\",\r\n new: \"Overstromingsrisico’s\",\r\n },\r\n {\r\n old: \"Richting een circulaire waterketen\",\r\n new: \"Transitie waterketen\",\r\n },\r\n {\r\n old: \"Transporteren, zuiveren en slib verwerken\",\r\n new: \"Transporteren en zuiveren van afvalwater\",\r\n },\r\n {\r\n old: \"Waterkwaliteit\",\r\n new: \"Waterkwaliteit, pijler 1: KRW\",\r\n },\r\n {\r\n old: \"Overig Water\",\r\n new: \"Waterkwaliteit, pijler 2: Overig water\",\r\n },\r\n {\r\n old: \"Overige water\",\r\n new: \"Waterkwaliteit, pijler 2: Overig water\",\r\n },\r\n {\r\n old: \"Zoetwatervoorziening en coördinatie droogte\",\r\n new: \"Zoetwatervoorziening en droogte\",\r\n },\r\n {\r\n old: \"Personeel & organisatie\",\r\n new: \"Personeel en organisatie\",\r\n },\r\n {\r\n old: \"Regulering & toezicht\",\r\n new: \"Regulering en toezicht\",\r\n },\r\n];\r\n\r\nconst optionallyRename = (title) => {\r\n for (let i = 0; i < renameList.length; i++) {\r\n if (renameList[i].old === title) {\r\n return renameList[i].new;\r\n }\r\n }\r\n return title;\r\n};\r\n\r\nconst ThemaDetail = () => {\r\n const navigate = useNavigate();\r\n\r\n const { id } = useParams();\r\n const [theme, setTheme] = useState(null);\r\n const [title, setTitle] = useState(\"\");\r\n\r\n const { clusters, globalThemes } = useGlobalState();\r\n const dispatch = useDispatch();\r\n const [afb1, setAfb1] = useState(null);\r\n const [afb2, setAfb2] = useState(null);\r\n const [afb3, setAfb3] = useState(null);\r\n const [videoId, setVideoId] = useState(null);\r\n const [youtubeData, setYoutubeData] = useState(null);\r\n const [docs, setDocumenten] = useState([]);\r\n const [links, setLinks] = useState([]);\r\n const [toelichting, setToelichting] = useState(ReactHtmlParser(\"\"));\r\n const [ambitie, setAmbitie] = useState(ReactHtmlParser(\"\"));\r\n const [doel, setDoel] = useState(ReactHtmlParser(\"\"));\r\n const [clustertekst, setClustertekst] = useState(ReactHtmlParser(\"\"));\r\n const { pathname } = useLocation();\r\n const { videoTriggerRef } = useRefProvider();\r\n const isMobile = useIsMobile();\r\n const [triggerFocus, setTriggerFocus] = useState(false);\r\n\r\n\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [pathname]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const r = await getTheme(id);\r\n setTheme(r);\r\n const {\r\n inhoud = {},\r\n documenten = [],\r\n interneLinks = [],\r\n externeLinks = [],\r\n } = r;\r\n\r\n const {\r\n hoofdafbeelding = null,\r\n afbeelding2 = null,\r\n afbeelding3 = null,\r\n videoURL = null,\r\n toelichting = \"\",\r\n ambitie = \"\",\r\n doel = \"\",\r\n clustertekst = \"\",\r\n } = inhoud;\r\n\r\n const retrievedHoofdafbeelding =\r\n hoofdafbeelding === null ? null : getImage(hoofdafbeelding);\r\n setAfb1(retrievedHoofdafbeelding);\r\n setAfb2(\r\n afbeelding2 === null\r\n ? retrievedHoofdafbeelding\r\n : getImage(afbeelding2)\r\n );\r\n setAfb3(\r\n afbeelding3 === null\r\n ? retrievedHoofdafbeelding\r\n : getImage(afbeelding3)\r\n );\r\n setDocumenten(documenten);\r\n setLinks(interneLinks.concat(externeLinks));\r\n setTitle(r.title);\r\n\r\n try {\r\n const thesaurusData = await getThesaurus();\r\n setToelichting(wordListParser(toelichting, thesaurusData));\r\n setAmbitie(wordListParser(ambitie, thesaurusData));\r\n setDoel(wordListParser(doel, thesaurusData));\r\n setClustertekst(wordListParser(clustertekst, thesaurusData));\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n if (videoURL) {\r\n const videoId = YouTubeGetID(videoURL);\r\n const videoData = await fetchYouTubeData(videoId);\r\n setVideoId(videoId)\r\n setYoutubeData(videoData);\r\n }\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n fetchData();\r\n }, [\r\n id,\r\n theme?.inhoud?.toelichting,\r\n theme?.inhoud?.ambitie,\r\n theme?.inhoud?.doel,\r\n theme?.inhoud?.clustertekst,\r\n ]);\r\n\r\n\r\n const handleClusterClick = (c) => {\r\n dispatch({ type: \"reset_all_clusters\" });\r\n dispatch({ type: \"reset_development\" });\r\n dispatch({ type: \"set_cluster\", payload: { id: c.value, state: true } });\r\n navigate(\"/themas\");\r\n };\r\n\r\n const location = useLocation();\r\n const searchParams = new URLSearchParams(location.search);\r\n const videoIdParam = searchParams.get(\"videoID\");\r\n const videoIsOpen = videoIdParam ? true : false;\r\n\r\n const handleVideoButton = (id) => {\r\n searchParams.set(\"videoID\", id);\r\n navigate(`${location.pathname}?${searchParams.toString()}`);\r\n };\r\n\r\n const getThemeIdByTitle = (t) => {\r\n let result = \"\";\r\n const title = optionallyRename(t);\r\n globalThemes.forEach(({ label, id }) => {\r\n if (label === title) {\r\n result = \"/\" + id;\r\n }\r\n });\r\n return result;\r\n };\r\n\r\n useFocusOnFirstElement(triggerFocus);\r\n const handleLinkClick = () => {\r\n setTriggerFocus(true);\r\n setTimeout(() => { // Reset the trigger to false after a short delay\r\n setTriggerFocus(false);\r\n }, 100);\r\n };\r\n\r\n if (theme === null) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {!isMobile && \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {false}\r\n {(\r\n <>\r\n
    \r\n \r\n \r\n \r\n maatregel.id\r\n )}\r\n themeTitle={theme?.title}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n

    Dwarsverbanden

    \r\n
      \r\n {theme.inhoud.dwarsverbanden.map((d, i) => (\r\n
    • \r\n \r\n {optionallyRename(d)}\r\n \r\n \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Cluster\r\n \r\n {!!theme?.inhoud?.cluster &&\r\n theme?.inhoud?.cluster}\r\n \r\n

    \r\n
    \r\n {!!theme?.inhoud?.clustertekst\r\n ? clustertekst\r\n : \"\"}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Clusters

    \r\n
      \r\n {clusters.map((c, i) => (\r\n
    • \r\n handleClusterClick(c)}\r\n >\r\n {c.label}\r\n \r\n \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n {videoId && }\r\n \r\n);\r\n};\r\n\r\nexport default ThemaDetail;\r\n","import React, {useState, useEffect} from \"react\";\r\nimport Header from \"./Header\";\r\nimport {getAccessibilityData} from \"../api\";\r\nimport AccessibilityButton from \"./AccessibilityButton\";\r\nimport HeadMeta from \"./HeadMeta\";\r\n\r\nfunction AccessibilityDetail() {\r\n const [data, setData] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(null);\r\n const {title, inhoud} = data || {};\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const data = await getAccessibilityData();\r\n setData(data);\r\n } catch (error) {\r\n setError(error.message);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n fetchData();\r\n }, []);\r\n\r\n if (loading) return
    Loading...
    ;\r\n if (error) return
    Error: {error}
    ;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {title &&

    {title}

    }\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AccessibilityDetail;\r\n","import \"./App.scss\";\r\nimport { Routes, Route } from \"react-router-dom\";\r\nimport Home from \"./views/Home\";\r\nimport ClusterIndex from \"./views/ClusterIndex\";\r\nimport DispositionIndex from \"./views/DispositionIndex\";\r\nimport GlobalReducer from \"./hooks/useReducer\";\r\nimport Viewport from \"./hooks/useViewport\";\r\nimport ThemeDetail from \"./views/ThemeDetail\";\r\nimport AccessibilityDetail from \"./components/AccessibilityDetail\";\r\n\r\nfunction App() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","export default __webpack_public_path__ + \"static/media/TheMixC5-5_Plain.9b071dca.woff2\";","export default __webpack_public_path__ + \"static/media/TheMixC5-5iPlainItalic.0cb6d1a3.woff2\";","export default __webpack_public_path__ + \"static/media/TheMixC5-6_SemiBold.7557b729.woff2\";","export default __webpack_public_path__ + \"static/media/TheMixC5-7_Bold.3208fc49.woff2\";","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport \"./fonts/TheMixC5-5_Plain.woff2\";\r\nimport \"./fonts/TheMixC5-5iPlainItalic.woff2\";\r\nimport \"./fonts/TheMixC5-6_SemiBold.woff2\";\r\nimport \"./fonts/TheMixC5-7_Bold.woff2\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}