{"version":3,"sources":["components/molecules/municipality-select/index.ts","components/molecules/political-candidate/index.ts","components/molecules/navigation/index.ts","services/SearchService.ts","services/AdService.ts","services/LatestNewsService.ts","services/LocalNewsService.ts","services/DisqusService.ts","services/NORTVTrackingService.ts","services/CMP.ts","services/ElectoralResultService.js","components/organisms/hero/index.ts","components/organisms/search/index.ts","components/organisms/inline-search/index.ts","components/organisms/electoral-result/index.js","components/organisms/brussel-stemt/index.ts","index.ts","components/atoms/embed/config.ts","components/atoms/embed/EmbedBlocker.tsx","components/atoms/embed/EmbedBlockerContainer.tsx","components/atoms/embed/Embed.tsx","components/atoms/embed/index.tsx","components/atoms/toast/index.tsx","components/molecules/comments/index.ts","components/molecules/video/Clevercast.ts","components/molecules/video/index.ts","components/molecules/popup/index.ts","components/molecules/share/index.ts","components/organisms/header/index.ts","components/organisms/ads/index.ts","components/organisms/gallery/index.ts","components/organisms/event-search/filters/SearchFilter.tsx","components/organisms/event-search/filters/RadioFilterOption.tsx","components/organisms/event-search/constants/dates.ts","components/organisms/event-search/filters/DateFilter.tsx","components/organisms/event-search/filters/RadioFilter.jsx","components/organisms/event-search/filters/RadioFilterIndicator.tsx","components/organisms/event-search/filters/Filters.tsx","components/organisms/event-search/EventSearch.tsx","components/organisms/event-search/EventSearchTeaser.tsx","components/organisms/event-search/EventSearchPager.tsx","components/organisms/event-search/services/FiltersConverterService.ts","components/organisms/event-search/services/EventSearchService.ts","components/organisms/event-search/EventSearchOverview.jsx","components/organisms/event-search/index.tsx","components/organisms/feedback/index.tsx","components/organisms/timeline/TimelineItem.tsx","components/organisms/timeline/TimelineDay.tsx","components/organisms/timeline/Timeline.tsx","components/organisms/timeline/index.tsx","components/atoms/link/Link.tsx","components/molecules/section-title/SectionTitle.tsx","components/organisms/local-news/LocalNewsDropdown.tsx","components/organisms/local-news/LocalNewsBlock.tsx","components/organisms/local-news/index.tsx","components/organisms/electoral-header/ElectoralHeader.tsx","components/organisms/electoral-header/index.tsx","components/organisms/electoral-list/index.js","utils/SideloadTeasers.ts","utils/api.ts","consts/config.ts","consts/ads.ts","consts/date.ts","utils/DateFormat.ts","components/molecules/teaser/TeaserRating.tsx","components/molecules/teaser/Teaser.tsx"],"names":["select","document","querySelector","addEventListener","event","window","location","href","target","value","Array","from","querySelectorAll","forEach","politicalCandidate","politicalCandidateHeader","politicalCandidateInfo","preventDefault","classList","toggle","onResize","navigation","navigationList","scrollWidth","clientWidth","Math","ceil","scrollLeft","onScroll","scrollRight","scrollBy","left","behavior","SearchServiceClass","_createClass","_classCallCheck","search","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","facets","date","page","params","response","json","wrap","_context","prev","next","URLSearchParams","append","concat","d","m","y","facet","encodeURIComponent","toString","fetch","decodeURIComponent","method","credentials","sent","abrupt","stop","_x","_x2","_x3","_x4","apply","arguments","SearchService","AdServiceInstance","_this","kaching","loadKaching","Promise","resolve","reject","today","Date","kachingCacheIdentifier","getFullYear","getMonth","getDate","getHours","loadjs","KACHING_SCRIPT_URL","numRetries","success","KaChing","error","depsNotFound","console","log","getVideoURL","kachingTimeoutDelay","kachingTimeout","videoURL","getVideoUrl","e","detail","format","url","clearTimeout","setTimeout","t0","init","_callee2","_context2","reset","type","map","_ref3","adSlot","i","prefix","setAttribute","defineSlot","KACHING_CONFIG","AdService","LatestNewsService","getLatestNews","_args","length","undefined","getFrontDomain","getLatestNewsByDay","_ref2","timestamp","day","LocalNewsService","LOCALSTORAGE_KEY","getLocations","drupalSettings","municipalities","DisqusService","load","NORTV_EVENTS","isAdmin","includes","NORTVTrackingService","_class","udata","pageData","contentData","myTMS","rmpPlayers","trackPageView","trackContentView","trackArticleTagClick","trackWebformSubmission","push","_objectSpread","event_name","content","trackInteraction","name","details","interaction_name","interaction_details1","trackFormSubmit","form_name","tag","dataset","nortvTag","webforms","pageTitle","form","submitButton","innerText","trackClevercastVideo","player","_window$myTMS","_window$myTMS$rmpPlay","CustomConsentType","FUNCTIONAL","SOCIAL","getConsentData","__cmp","getCustomPurposeConsent","id","customPurposeConsents","Boolean","ElectoralResultService","formatElectoralBarGraphResults","results","formattedResults","parties","partiesPerCanton","partiesFromFlanders","partiesFromBrussels","nl","fr","isMultiLanguage","hasCantons","activeCanton","canton","complete","pollingStationCounted","pollingStationTotal","formatElectoralPieChart2019Results","seats","firstNlParty","firstFrParty","_nl$parties","_fr$parties","_slicedToArray","cantons","total","fetchElectoralResults","_callee3","dataUrl","_context3","getElectoralBarGraph2019Results","_ref4","_callee4","_context4","getElectoralPieChart2019Results","_ref5","_callee5","_context5","_x5","getElectoralResults","_ref6","_callee6","_context6","_x6","heroParallaxImgs","scrollHandler","pageYOffset","image","positionFactor","style","transform","requestAnimationFrame","inlineSearch","inputField","getElementById","electoralBarGraphContainer","electoralPieChartContainer","electoralBarGraph2019Container","electoralPieChart2019Container","electoralBarGraph2024Container","electoralPieChart2024Container","brusselStemtContainer","_brusselStemtContaine","title","intro","then","renderBrusselStemt","dynamicDate","dateText","textContent","formatDate","email","get","emailInput","editIntervalDay","checked","button","toggleError","show","errorMessage","HTMLElement","display","handleSubmit","_button$closest","emailValue","closest","getAttribute","match","separator","baseUrl","split","newUrl","key","embedConfig","initConsent","handleOnClick","addListener","message","EmbedBlocker","onButtonClick","_jsx","className","children","_jsxs","onClick","EmbedBlockerContainer","_useState","useState","_useState2","consent","setConsent","useEffect","Embed","embed","instgrm","Embeds","process","parse","replace","domNode","script","createElement","src","attribs","async","head","appendChild","embedCode","htmlEmbed","ReactDOM","createRoot","render","toast","root","Toaster","commentsContainer","openButton","add","Clevercast","container","play","pause","loadSuccess","getCommUrl","_this$container$datas","itemId","options","playerConfig","clevercastLoaded","config","CLEVERCAST","ACCOUNT_ID","t1","t2","autoplay","autoload","captions_default","captions_default_show","chromecast","account_id","item_id","comm_url","comm_url_prefetch","responsive","RMP","data","duration","_duration$split","_duration$split2","minutes","seconds","padStart","durationElement","remove","_this$player","_this$player2","this","initContainers","clevercastContainers","clevercastContainer","video","youtubeEmbeds","consentStatus","consentData","onConsentStatusReady","_window$__cmp","consentExists","youtubeEmbed","links","link","indexOf","substring","onclick","open","BASE_URL","openPopupFromLink","popup","radio","close","appIframe","isNaN","height","setInterval","_appIframe$contentWin","contentWindow","getElementsByTagName","_appIframe$contentWin2","iframeBody","scrollHeight","parseInt","parent","postMessage","copy","navigator","clipboard","writeText","fontSize","ariaProps","role","lastScrollTop","header","hamburger","overlayMenu","overlayMenuClose","disableBodyScroll","enableBodyScroll","scrollTop","documentElement","top","offsetHeight","galleries","gallery","pageDots","flkty","Flickity","freeScroll","contain","imagesLoaded","prevNextButtons","wrapAround","cellAlign","groupCells","layout","img","imgSlideParent","width","getBoundingClientRect","reloadCells","resize","onload","onresize","on","io","IntersectionObserver","entries","entry","isIntersecting","unobserve","observe","initGallery","SearchFilter","Field","input","htmlFor","placeholder","autoComplete","viewBox","xlinkHref","RadioFilterOption","option","years","currentYear","result","generateYears","months","label","days","val","index","DateFilter","values","component","date_ranges","onChange","year","month","RadioFilter","expandable","expandableLimit","expandableMoreText","expandableLessText","highlighted","expanded","setExpanded","fmlDunnoLength","processedOptions","slice","showCustomDate","defaultProps","Infinity","RadioFilterIndicator","filter","selectedOptionsString","selectedOptionsAsString","join","first","second","Filters","filters","setValues","t","Form","onSubmit","initialValues","finalFormValues","Object","keys","_Fragment","submit","filterComponent","FormSpy","subscription","dirty","formSpyValues","EventSearch","loading","sidebar","sidebarOpen","setSidebarOpen","xmlns","fill","EventSearchTeaser","eventLabel","eventImage","isMust","isSelect","agendaFallbackImage","Teaser","dateString","category","EventSearchPager","pageCount","activePage","changePage","ReactPaginate","containerClassName","breakClassName","pageClassName","pageLinkClassName","activeClassName","initialPage","forcePage","disableInitialCallback","pageRangeDisplayed","marginPagesDisplayed","onPageChange","selected","scrollTo","FiltersConverterService","converters","radioConverter","string","find","xxx","stringify","slugs","filterOption","textConverter","filterConverters","parts","filterKey","object","part","slug","valueAsString","EventSearchService","parameters","headers","body","JSON","events","pagination","currentPage","totalItems","totalPages","pages","EventSearchOverview","_React$Component","_inherits","_super","_createSuper","props","call","componentDidMount","componentDidUpdate","prevProps","hasUpdatedFilters","pathname","hasUpdatedPage","hash","timeout","getFilterValues","getPage","setState","t3","t4","t5","t6","t7","t8","t9","filtersString","basePath","setFilterValues","history","setPage","showResults","toggleFilterPageSidebar","_this$state","state","React","Fragment","agendaPath","labels","topics","Component","EventSearchOverviewWithRouter","BrowserRouter","Route","path","eventSearchOverviewContainer","Feedback","default","rootEl","i18n","TimelineItem","item","timelineTeaserRef","useRef","setFormattedDate","useLayoutEffect","updateDate","_timelineTeaserRef$cu","dynamicDateElement","current","newFormattedDate","intervalId","clearInterval","dangerouslySetInnerHTML","__html","html","ref","TimelineDay","allowPolling","_React$useState","_React$useState2","items","setItems","_React$useState3","_React$useState4","newItems","setNewItems","loadDay","checkForUpdates","interval","showUpdates","updates","buttonText","renderShowUpdates","formatTimelineDate","Timeline","endOfToday","getTime","endOfYesterday","setDays","prevState","lastDay","lastDayPlusOne","subDays","_toConsumableArray","Link","text","theme","cn","SectionTitle","LocalNewsDropdown","setLocation","locations","useMemo","sort","a","b","_a$text","localeCompare","LocalNewsBlock","settings","localNewsBlockRef","setLoading","_useState3","_useState4","_useState5","_useState6","teasers","setTeasers","moreNewsLink","updateLocalNews","_yield$LatestNewsServ","dropdownPrefix","newLocation","teaser","topic","localNewsSettings","dropdownText","localNewsContainer","ElectoralHeader","_topic$subOptions2","_topic$subOptions3","currentUrl","_topic$subOptions","subOption","setTopic","styles","control","baseStyles","isFocused","borderRadius","padding","borderColor","boxShadow","menuList","base","color","menu","zIndex","indicatorSeparator","textWrap","Select","makeAChoice","isSearchable","selectedOption","selectedTopic","backgroundColor","whiteSpace","overflow","maxMenuHeight","makeAChoice2","defaultValue","electoralSelect","_electoralSelect$data","electoralSelectTopics","electoralSelectCopy","electoralSelectCurrent","ElectoralList","wrapper","active","toggleElectoralPartiesLang","lang","electoralListLists","langPartiesAll","selectedLangParties","el","parentElement","currentLang","initLangToggle","langToggle","electoralPartiesNL","electoralPartiesFr","langToggleBtns","langToggleBtn","firstLangToggleBtn","addEvent","party","bind","electoralListWrapper","electoralListParties","electoralListParty","sideloadByUrl","status","sideloadTeasers","ajaxTeaser","ajax","sideload","teaserHtml","outerHTML","_window$frontDomain","frontDomain","CURRENT_SITE","pageInfo","site","adunit","_drupalSettings$pageI","platform","targeting","article_id","currentPath","article_taglist","_drupalSettings$pageI2","tags","page_type","_drupalSettings$pageI3","adPageType","author","_drupalSettings$pageI4","endYear","generateYearsFrom","now","parsedDate","diffInMinutes","differenceInMinutes","hours","locale","nlBE","fullDate","isToday","isYesterday","formattedDate","RatingStar","TeaserRating","rating","Number","alt"],"mappings":"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","file":"js/global.2cde0f6f.chunk.js","sourcesContent":["(() => {\n  const select: HTMLSelectElement | null = document.querySelector(\n    \"[data-municipality-select]\"\n  );\n\n  select?.addEventListener(\"change\", (event: any) => {\n    window.location.href = event.target.value;\n  });\n})();\n","(() => {\n  const politicalCandidates: HTMLDivElement[] = Array.from(\n    document.querySelectorAll(\"[data-political-candidate]\")\n  );\n\n  politicalCandidates.forEach((politicalCandidate) => {\n    const politicalCandidateHeader: HTMLAnchorElement | undefined =\n      politicalCandidate.querySelector(\n        \"[data-political-candidate-header]\"\n      ) as HTMLAnchorElement;\n\n    const politicalCandidateInfo: HTMLDivElement | undefined =\n      politicalCandidate.querySelector(\n        \"[data-political-candidate-info]\"\n      ) as HTMLDivElement;\n\n    if (politicalCandidateHeader && politicalCandidateInfo) {\n      politicalCandidateHeader.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n\n        politicalCandidate.classList.toggle(\"show-info\");\n      });\n    }\n  });\n})();\n","const onResize = () => {\n  const navigation = document.querySelector(\".navigation-secondary\");\n  const navigationList = document.querySelector(\".navigation-secondary__list\");\n\n  if (!navigationList || !navigation) {\n    return;\n  }\n\n  navigation.classList.toggle(\n    \"is-scrollable\",\n    navigationList.scrollWidth > navigationList.clientWidth\n  );\n\n  navigation.classList.toggle(\n    \"show-right\",\n    Math.ceil(navigationList.scrollLeft) <\n      navigationList.scrollWidth - navigationList.clientWidth\n  );\n};\n\nconst onScroll = () => {\n  const navigation = document.querySelector(\".navigation-secondary\");\n  const navigationList = document.querySelector(\".navigation-secondary__list\");\n\n  if (!navigationList || !navigation) {\n    return;\n  }\n\n  navigation.classList.toggle(\"show-left\", navigationList.scrollLeft > 0);\n  navigation.classList.toggle(\n    \"show-right\",\n    Math.ceil(navigationList.scrollLeft) <\n      navigationList.scrollWidth - navigationList.clientWidth\n  );\n};\n\nwindow.addEventListener(\"resize\", onResize);\nonResize();\n\nconst navigationList = document.querySelector(\".navigation-secondary__list\");\n\nif (navigationList) {\n  navigationList.addEventListener(\"scroll\", onScroll);\n  onScroll();\n}\n\nconst scrollLeft = document.querySelector(\".scroll-left\");\nconst scrollRight = document.querySelector(\".scroll-right\");\n\nif (scrollLeft && scrollRight) {\n  scrollLeft.addEventListener(\"click\", () => {\n    if (navigationList) {\n      navigationList.scrollBy({\n        left: -50,\n        behavior: \"smooth\",\n      });\n    }\n  });\n\n  scrollRight.addEventListener(\"click\", () => {\n    if (navigationList) {\n      navigationList.scrollBy({\n        left: 50,\n        behavior: \"smooth\",\n      });\n    }\n  });\n}\n","class SearchServiceClass {\n  search = async (\n    query: string,\n    facets: string[],\n    date: {\n      d: string;\n      m: string;\n      y: string;\n    },\n    page: number\n  ) => {\n    const params = new URLSearchParams();\n\n    if (query) {\n      params.append(\"q\", query);\n    }\n\n    if (date && (\"d\" in date || \"m\" in date || \"y\" in date)) {\n      params.append(\n        \"date\",\n        `${\"d\" in date ? date.d : \"\"}|${\"m\" in date ? date.m : \"\"}|${\n          \"y\" in date ? date.y : \"\"\n        }`\n      );\n    }\n\n    facets.forEach((facet) =>\n      params.append(\"facets[]\", encodeURIComponent(facet))\n    );\n\n    if (page) {\n      params.append(\"page\", page.toString());\n    }\n\n    const response = await fetch(\n      `/search/json?${decodeURIComponent(params.toString())}`,\n      {\n        method: \"GET\",\n        credentials: \"same-origin\",\n      }\n    );\n\n    const json = await response.json();\n\n    return json;\n  };\n}\n\nconst SearchService = new SearchServiceClass();\nexport { SearchService };\n","import loadjs from \"loadjs\";\n\nimport { KACHING_CONFIG, KACHING_SCRIPT_URL } from \"consts\";\n\nclass AdServiceInstance {\n  kaching: any = null;\n\n  loadKaching = () =>\n    new Promise((resolve, reject) => {\n      const today = new Date();\n      const kachingCacheIdentifier = `${today.getFullYear()}${\n        today.getMonth() + 1\n      }${today.getDate()}${today.getHours()}`;\n\n      loadjs(`${KACHING_SCRIPT_URL}?${kachingCacheIdentifier}`, {\n        numRetries: 3,\n        success: () => {\n          this.kaching = new window.KaChing();\n          window.kaching = this.kaching;\n          resolve(this.kaching);\n        },\n        error: (depsNotFound) => {\n          console.log(depsNotFound);\n        },\n      });\n    });\n\n  getVideoURL = () =>\n    new Promise(async (resolve, reject) => {\n      const kachingTimeoutDelay = 2000;\n      let kachingTimeout: ReturnType<typeof setTimeout> | null = null;\n\n      try {\n        if (!this.kaching) {\n          await this.loadKaching();\n        }\n\n        if (this.kaching) {\n          let videoURL: string | null = await this.kaching.getVideoUrl();\n\n          if (videoURL === null) {\n            document.addEventListener(\"KaChing.render.init\", (e: any) => {\n              if (e.detail && e.detail.format === \"video\") {\n                videoURL = e.detail.url;\n                clearTimeout(kachingTimeout!);\n                resolve(videoURL);\n              }\n            });\n\n            if (kachingTimeout) {\n              clearTimeout(kachingTimeout);\n              kachingTimeout = null;\n            }\n\n            kachingTimeout = setTimeout(() => {\n              reject();\n            }, kachingTimeoutDelay);\n          } else {\n            resolve(videoURL);\n          }\n        }\n      } catch (e) {\n        console.log(\"❌ Ads error\", e);\n        reject(e);\n      }\n    });\n\n  init = async () => {\n    if (!this.kaching) {\n      await this.loadKaching();\n    } else {\n      await this.kaching.reset();\n    }\n\n    const slots = [\n      {\n        type: \"large_leaderboard\",\n      },\n      {\n        type: \"rectangle\",\n      },\n      {\n        type: \"medium_rectangle\",\n      },\n      {\n        type: \"billboard_leaderboard\",\n      },\n    ];\n\n    slots.map(({ type }) => {\n      const adSlots: HTMLDivElement[] = Array.from(\n        document.querySelectorAll(`.ad--ad_${type}`)\n      );\n\n      adSlots.forEach((adSlot, i) => {\n        const prefix = type === \"billboard_leaderboard\" ? \"b\" : \"t\";\n        adSlot.setAttribute(\"id\", `ad_${type}-${prefix}${i + 1}`);\n        this.kaching.defineSlot(type, `${prefix}${i + 1}`);\n      });\n\n      return null;\n    });\n\n    await this.kaching.init(KACHING_CONFIG);\n  };\n}\n\nconst AdService = new AdServiceInstance();\nexport { AdService };\n","import { format } from \"date-fns\";\n\nimport { getFrontDomain } from \"utils\";\n\nexport class LatestNewsService {\n  static getLatestNews = async (location = \"\") => {\n    let url = `${getFrontDomain()}/api/news/latest`;\n\n    if (location) {\n      url += `/${location}`;\n    }\n\n    const response = await fetch(url, {\n      method: \"GET\",\n      credentials: \"same-origin\",\n    });\n\n    return response.json();\n  };\n\n  static getLatestNewsByDay = async (timestamp: number) => {\n    const day = format(new Date(timestamp), \"dd-MM-yyyy\");\n\n    const response = await fetch(`${getFrontDomain()}/api/news/daily/${day}`, {\n      method: \"GET\",\n      credentials: \"same-origin\",\n    });\n\n    return response.json();\n  };\n}\n","export class LocalNewsService {\n  static LOCALSTORAGE_KEY = \"bruzzlocalnewslocation\";\n\n  static getLocations = () => {\n    if (window.drupalSettings && window.drupalSettings.municipalities) {\n      return window.drupalSettings.municipalities;\n    }\n\n    return [];\n  };\n}\n","import loadjs from \"loadjs\";\n\nexport class DisqusService {\n  static load = () => {\n    loadjs(\"https://brusselnieuws.disqus.com/embed.js\", () => {\n      // Loaded\n    });\n  };\n}\n","const NORTV_EVENTS = {\n  PAGE_NAVIGATION: \"page navigation\",\n  CONTENT_VIEW: \"content view\",\n  INTERACTION: \"interaction\",\n  FORM_SUBMIT: \"form submit\",\n  CLICK_TAG: \"click: artikel label\",\n};\n\nconst isAdmin =\n  window.location.href &&\n  (window.location.href.includes(\"admin.bruzz.be\") ||\n    window.location.href.includes(\"admin-development.bruzz.be\") ||\n    window.location.href.includes(\"admin-staging.bruzz.be\"));\n\nclass NORTVTrackingService {\n  static init = () => {\n    if (isAdmin) return;\n\n    // universal data layer\n    window.udata = window.udata || [];\n    window.pageData = window.pageData || {};\n    window.contentData = window.contentData || [];\n\n    // clevercast video tracking\n    window.myTMS = window.myTMS || {};\n    window.myTMS.rmpPlayers = window.myTMS.rmpPlayers || [];\n\n    NORTVTrackingService.trackPageView();\n    NORTVTrackingService.trackContentView();\n    NORTVTrackingService.trackArticleTagClick();\n    NORTVTrackingService.trackWebformSubmission();\n  };\n\n  static trackPageView = () => {\n    if (isAdmin) return;\n    window.udata.push({\n      event_name: NORTV_EVENTS.PAGE_NAVIGATION,\n      ...window.pageData,\n    });\n  };\n\n  static trackContentView = () => {\n    if (!window.contentData.length || isAdmin) return;\n\n    window.udata.push({\n      event_name: NORTV_EVENTS.CONTENT_VIEW,\n      content: window.contentData,\n    });\n  };\n\n  static trackInteraction = (name?: string, details?: string) => {\n    if (isAdmin) return;\n\n    window.udata.push({\n      event_name: NORTV_EVENTS.INTERACTION,\n      interaction_name: name,\n      interaction_details1: details,\n    });\n  };\n\n  static trackFormSubmit = (name?: string) => {\n    if (isAdmin) return;\n\n    window.udata.push({\n      event_name: NORTV_EVENTS.FORM_SUBMIT,\n      form_name: name,\n    });\n  };\n\n  static trackArticleTagClick = () => {\n    if (isAdmin) return;\n\n    const tags: NodeListOf<HTMLAnchorElement> =\n      document.querySelectorAll(\"[data-nortv-tag]\");\n    tags.forEach((tag) => {\n      tag.addEventListener(\"click\", () => {\n        NORTVTrackingService.trackInteraction(\n          NORTV_EVENTS.CLICK_TAG,\n          tag.dataset.nortvTag\n        );\n      });\n    });\n  };\n\n  static trackWebformSubmission = () => {\n    if (isAdmin) return;\n\n    const webforms = document.querySelectorAll(\"[data-nortv-form]\");\n    const pageTitle = document.querySelector(\"h1\");\n\n    webforms.forEach((form) => {\n      const submitButton = form.querySelector(\".webform-button--submit\");\n\n      if (!submitButton) return;\n\n      submitButton.addEventListener(\"click\", () => {\n        NORTVTrackingService.trackFormSubmit(pageTitle?.innerText);\n      });\n    });\n  };\n\n  static trackClevercastVideo = (player: any) => {\n    window.myTMS?.rmpPlayers?.push(player);\n  };\n}\n\nexport { NORTVTrackingService };\n","const PresetType = {\n  PEBBLE: \"PEBBLE\",\n  ADHESE: \"ADHESE\",\n};\n\nconst PresetPurposes = {\n  PEBBLE: [2, 3, 4, 7, 9],\n  ADHESE: [2, 3, 4, 7, 9],\n};\n\nconst CustomConsentType = {\n  FUNCTIONAL: 1,\n  SOCIAL: 2,\n};\n\nconst init = () => {\n  window.__cmp = window.__cmp || (() => {});\n};\n\n/* eslint-disable-next-line */\n// @ts-ignore\nconst getConsentData = () => __cmp(\"noncompliant_getTCData\");\n\nconst getConsentString = () => {\n  if (getConsentData()) {\n    const { tcString } = getConsentData();\n\n    if (tcString) {\n      return tcString;\n    }\n  }\n\n  // CMP: default true if consentmanager changes syntax\n  return \"\";\n};\n\nconst getPurposeConsent = (id: string) => {\n  if (getConsentData()) {\n    const { purpose } = getConsentData();\n\n    if (purpose) {\n      const { consents } = purpose;\n\n      if (consents) {\n        return Boolean(consents[id]);\n      }\n    }\n  }\n\n  // CMP: default true if consentmanager changes syntax\n  return true;\n};\n\nconst getCustomPurposeConsent = (id: number) => {\n  if (getConsentData()) {\n    const { customPurposeConsents } = getConsentData();\n\n    if (customPurposeConsents) {\n      return Boolean(customPurposeConsents[id]);\n    }\n  }\n\n  // CMP: default true if consentmanager changes syntax\n  return true;\n};\n\nconst getPresetConsent = (preset: any) => {\n  /* eslint-disable-next-line */\n  // @ts-ignore\n  const presetPurposes = PresetPurposes[preset];\n\n  return presetPurposes.reduce(\n    (acc: string, value: string) => acc && getPurposeConsent(value),\n    getPurposeConsent(presetPurposes[0]) // init value\n  );\n};\n\ninit();\n\nexport {\n  getConsentString,\n  getPurposeConsent,\n  CustomConsentType,\n  getCustomPurposeConsent,\n  PresetType,\n  getPresetConsent,\n};\n","export class ElectoralResultService {\n  static formatElectoralBarGraphResults = async (results) => {\n    let formattedResults = results;\n\n    const {\n      parties,\n      partiesPerCanton,\n      partiesFromFlanders,\n      partiesFromBrussels,\n    } = results;\n\n    if (parties) {\n      const { nl, fr } = parties;\n\n      if (nl && fr) {\n        formattedResults.isMultiLanguage = true;\n      }\n    }\n\n    if (partiesPerCanton) {\n      formattedResults.hasCantons = true;\n    }\n\n    if (partiesFromFlanders && partiesFromBrussels) {\n      formattedResults = partiesFromBrussels;\n      formattedResults.hasCantons = true;\n      formattedResults.activeCanton = \"Vlaams Parlement (heel Vlaanderen)\";\n\n      formattedResults.partiesPerCanton = [\n        {\n          canton: \"Vlaams Parlement (heel Vlaanderen)\",\n          complete: partiesFromFlanders.parties[0].complete,\n          pollingStationCounted:\n            partiesFromFlanders.parties[0].pollingStationCounted,\n          pollingStationTotal:\n            partiesFromFlanders.parties[0].pollingStationTotal,\n          parties: partiesFromFlanders.parties,\n        },\n        {\n          canton: \"Vlaams Parlement (de Brusselaars)\",\n          complete: partiesFromBrussels.parties[0].complete,\n          pollingStationCounted:\n            partiesFromBrussels.parties[0].pollingStationCounted,\n          pollingStationTotal:\n            partiesFromBrussels.parties[0].pollingStationTotal,\n          parties: partiesFromBrussels.parties,\n        },\n      ];\n    }\n\n    return formattedResults;\n  };\n\n  static formatElectoralPieChart2019Results = async (results) => {\n    const formattedResults = results;\n\n    const { nl, fr, seats } = results;\n\n    if (nl && fr) {\n      let firstNlParty;\n      let firstFrParty;\n\n      if (nl.parties && nl.parties.length > 0) {\n        [firstNlParty] = nl.parties;\n      }\n\n      if (fr.parties && fr.parties.length > 0) {\n        [firstFrParty] = fr.parties;\n      }\n\n      formattedResults.hasCantons = true;\n\n      formattedResults.cantons = [\n        {\n          canton: \"Nederlandse taalgroep (VGC)\",\n          complete: firstNlParty ? firstNlParty.complete : false,\n          pollingStationCounted: firstNlParty\n            ? firstNlParty.pollingStationCounted\n            : 0,\n          pollingStationTotal: firstNlParty\n            ? firstNlParty.pollingStationTotal\n            : 0,\n          parties: nl.parties,\n        },\n        {\n          canton: \"Franse taalgroep (Cocof)\",\n          complete: firstFrParty ? firstFrParty.complete : false,\n          pollingStationCounted: firstFrParty\n            ? firstFrParty.pollingStationCounted\n            : 0,\n          pollingStationTotal: firstFrParty\n            ? firstFrParty.pollingStationTotal\n            : 0,\n          parties: fr.parties,\n        },\n      ];\n    }\n\n    if (seats) {\n      formattedResults.total = {\n        parties: seats,\n      };\n    }\n\n    return formattedResults;\n  };\n\n  static fetchElectoralResults = async (dataUrl) => {\n    try {\n      const response = await fetch(dataUrl, {\n        method: \"GET\",\n        credentials: \"same-origin\",\n      });\n\n      return response.json();\n    } catch (error) {\n      return error;\n    }\n  };\n\n  static getElectoralBarGraph2019Results = async (dataUrl) => {\n    const results = await ElectoralResultService.fetchElectoralResults(dataUrl);\n    return ElectoralResultService.formatElectoralBarGraphResults(results);\n  };\n\n  static getElectoralPieChart2019Results = async (dataUrl) => {\n    const results = await ElectoralResultService.fetchElectoralResults(dataUrl);\n    return ElectoralResultService.formatElectoralPieChart2019Results(results);\n  };\n\n  static getElectoralResults = async (dataUrl) => {\n    const results = await ElectoralResultService.fetchElectoralResults(dataUrl);\n    return results;\n  };\n}\n","(() => {\n  const heroParallaxImgs: NodeListOf<HTMLDivElement> | null =\n    document.querySelectorAll(\"[data-hero-parallax]\");\n\n  const intensity = 0.1;\n\n  const setTranslate = (positionFactor: number, el: HTMLElement) => {\n    const translateEl = el;\n    translateEl.style.transform = `translate3d(0, ${positionFactor}px, 0)`;\n  };\n\n  const scrollHandler = () => {\n    const { pageYOffset } = window;\n\n    heroParallaxImgs.forEach((image) => {\n      setTranslate(pageYOffset * intensity, image);\n    });\n  };\n\n  const onScroll = () => {\n    window.requestAnimationFrame(scrollHandler);\n  };\n\n  const initParallax = () => {\n    window.addEventListener(\"scroll\", onScroll);\n    onScroll();\n  };\n\n  if (heroParallaxImgs) {\n    initParallax();\n  }\n})();\n","import(\"./app\");\n","(() => {\n  const inlineSearch: HTMLFormElement | null = document.querySelector(\n    \"[data-inline-search]\"\n  );\n\n  if (inlineSearch) {\n    inlineSearch.addEventListener(\"submit\", (event) => {\n      event.preventDefault();\n\n      const inputField: HTMLInputElement | null = document.getElementById(\n        \"query\"\n      ) as HTMLInputElement;\n\n      if (inputField) {\n        window.location.href = `agenda/search:${inputField.value}`;\n      }\n    });\n  }\n})();\n","(() => {\n  const electoralBarGraphContainer = document.querySelector(\n    \"#electoral-bar-graph-container\"\n  );\n  const electoralPieChartContainer = document.querySelector(\n    \"#electoral-pie-chart-container\"\n  );\n  const electoralBarGraph2019Container = document.querySelector(\n    \"#electoral-bar-graph-2019-container\"\n  );\n  const electoralPieChart2019Container = document.querySelector(\n    \"#electoral-pie-chart-2019-container\"\n  );\n  const electoralBarGraph2024Container = document.querySelector(\n    \"#electoral-bar-graph-2024-container\"\n  );\n  const electoralPieChart2024Container = document.querySelector(\n    \"#electoral-pie-chart-2024-container\"\n  );\n\n  if (electoralBarGraphContainer) {\n    import(\"./ElectoralBarGraph/ElectoralBarGraph\");\n  }\n\n  if (electoralPieChartContainer) {\n    import(\"./ElectoralPieChart/ElectoralPieChart\");\n  }\n\n  if (electoralBarGraph2019Container) {\n    import(\"./ElectoralBarGraph2019/ElectoralBarGraph2019\");\n  }\n\n  if (electoralPieChart2019Container) {\n    import(\"./ElectoralPieChart2019/ElectoralPieChart2019\");\n  }\n\n  if (electoralBarGraph2024Container) {\n    import(\"./ElectoralBarGraph2024/ElectoralBarGraph2024\");\n  }\n\n  if (electoralPieChart2024Container) {\n    import(\"./ElectoralPieChart2024/ElectoralPieChart2024\");\n  }\n})();\n","(() => {\n  const brusselStemtContainer: HTMLDivElement | null = document.querySelector(\n    \".js-brussel-stemt-container\"\n  );\n\n  if (brusselStemtContainer) {\n    const { title, intro } = brusselStemtContainer.dataset;\n\n    import(\"./app\").then(({ renderBrusselStemt }) => {\n      renderBrusselStemt(brusselStemtContainer, title, intro);\n    });\n  }\n})();\n","import { NORTVTrackingService } from \"services\";\nimport { formatDate } from \"utils\";\n\n(() => {\n  const dynamicDates: HTMLElement[] = Array.from(\n    document.querySelectorAll(\"[data-dynamic-date]\")\n  );\n\n  dynamicDates.forEach((dynamicDate) => {\n    const dateText = dynamicDate.dataset.dynamicDate || \"\";\n\n    dynamicDate.textContent = formatDate(dateText);\n  });\n\n  NORTVTrackingService.init();\n})();\n\n(() => {\n  const urlParams = new URLSearchParams(window.location.search);\n  const email = urlParams.get(\"email\");\n\n  if (email) {\n    const emailInput = document.getElementById(\n      \"edit-email\"\n    ) as HTMLInputElement;\n    if (emailInput) {\n      emailInput.value = decodeURIComponent(email);\n    }\n  }\n\n  const editIntervalDay = document.getElementById(\n    \"edit-interval-day\"\n  ) as HTMLInputElement;\n  if (editIntervalDay) {\n    editIntervalDay.checked = true;\n  }\n})();\n\n(() => {\n  const emailInput = document.getElementById(\n    \"newsletter-email-cta\"\n  ) as HTMLInputElement;\n  const button = document.getElementById(\n    \"newsletter-email-button\"\n  ) as HTMLButtonElement;\n\n  if (emailInput && button) {\n    const validateEmail = (email: string) => {\n      return email.match(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/);\n    };\n\n    const toggleError = (show: boolean) => {\n      const errorMessage = document.querySelector(\n        \".newsletter-email-error-message\"\n      );\n\n      if (errorMessage instanceof HTMLElement) {\n        errorMessage.style.display = show ? \"block\" : \"none\";\n      }\n    };\n\n    const handleSubmit = (e: Event) => {\n      e.preventDefault();\n      const emailValue = emailInput.value;\n      const url = button.closest(\"a\")?.getAttribute(\"href\");\n\n      if (!validateEmail(emailValue)) {\n        toggleError(true);\n        return;\n      }\n\n      toggleError(false);\n\n      if (url) {\n        const separator = url.includes(\"?\") ? \"&\" : \"?\";\n        const baseUrl = url.split(\"?\")[0];\n        const newUrl = `${baseUrl}${separator}email=${encodeURIComponent(\n          emailValue\n        )}`;\n        window.location.href = newUrl;\n      }\n    };\n\n    button.addEventListener(\"click\", handleSubmit);\n    emailInput.addEventListener(\"keypress\", (e) => {\n      if (e.key === \"Enter\") {\n        handleSubmit(e);\n      }\n    });\n  }\n})();\n","export const embedConfig = {\n  initConsent: true,\n  handleOnClick: () => {\n    window.__cmp(\"showScreen\", null, null);\n  },\n  addListener: true,\n  message:\n    \"Hier staat een bericht dat wij overnamen van sociale media, dat cookies wilt gebruiken waarvoor je geen toestemming hebt gegeven. Klik hier om die toestemming alsnog te geven en dit bericht te lezen.\",\n};\n","import { FC } from \"react\";\n\nimport { embedConfig } from \"./config\";\n\ninterface Props {\n  onButtonClick: () => void;\n}\n\nexport const EmbedBlocker: FC<Props> = ({ onButtonClick }) => (\n  <div className=\"embed-blocker\">\n    <div className=\"embed-blocker__content\">\n      <div className=\"embed-blocker__message\">{embedConfig.message}</div>\n      <button\n        type=\"button\"\n        className=\"btn btn--primary\"\n        onClick={onButtonClick}\n      >\n        <span className=\"btn__bg\" />\n        <span className=\"btn__text\">Cookies aanpassen</span>\n      </button>\n    </div>\n  </div>\n);\n","import { useState, useEffect, FC } from \"react\";\n\nimport { CustomConsentType, getCustomPurposeConsent } from \"services\";\n\nimport { embedConfig } from \"./config\";\n\nimport { EmbedBlocker } from \"./EmbedBlocker\";\n\ninterface Props {\n  children: React.ReactNode;\n}\n\nexport const EmbedBlockerContainer: FC<Props> = ({ children }) => {\n  const [consent, setConsent] = useState(embedConfig.initConsent);\n\n  useEffect(() => {\n    if (!embedConfig.addListener) {\n      return;\n    }\n\n    window.__cmp(\n      \"addEventListener\",\n      [\n        \"consent\",\n        () => {\n          setConsent(getCustomPurposeConsent(CustomConsentType.SOCIAL));\n        },\n        false,\n      ],\n      null\n    );\n  }, []);\n\n  return consent ? (\n    children\n  ) : (\n    <EmbedBlocker onButtonClick={embedConfig.handleOnClick} />\n  );\n};\n","import { FC, useEffect } from \"react\";\nimport parse from \"html-react-parser\";\n\ninterface Props {\n  embed: string;\n}\n\nexport const Embed: FC<Props> = ({ embed }) => {\n  useEffect(() => {\n    if (window.instgrm) {\n      window.instgrm.Embeds.process();\n    }\n  }, []);\n\n  return (\n    <div>\n      {parse(embed, {\n        replace(domNode) {\n          if (domNode.type === \"script\") {\n            const script = document.createElement(\"script\");\n            script.src = domNode.attribs.src;\n            script.async = true;\n            document.head.appendChild(script);\n          }\n        },\n      })}\n    </div>\n  );\n};\n","import ReactDOM from \"react-dom/client\";\n\nimport { EmbedBlockerContainer } from \"./EmbedBlockerContainer\";\nimport { Embed } from \"./Embed\";\n\n(() => {\n  const embeds: HTMLDivElement[] = Array.from(\n    document.querySelectorAll(\"[data-html-embed]\")\n  );\n\n  embeds.forEach((embed) => {\n    const embedCode = decodeURIComponent(embed.dataset.htmlEmbed || \"\");\n    const root = ReactDOM.createRoot(embed);\n\n    root.render(\n      <EmbedBlockerContainer>\n        <Embed embed={embedCode} />\n      </EmbedBlockerContainer>\n    );\n  });\n})();\n","import ReactDOM from \"react-dom/client\";\nimport { Toaster } from \"react-hot-toast\";\n\n(() => {\n  const toast = document.querySelector(\".js-hot-toast\");\n\n  if (!toast) {\n    return;\n  }\n\n  const root = ReactDOM.createRoot(toast);\n\n  if (root) {\n    root.render(<Toaster />);\n  }\n})();\n","import { DisqusService } from \"services\";\n\nconst commentsContainer: HTMLElement | null =\n  document.querySelector(\"[data-comments]\");\n\nif (commentsContainer) {\n  const openButton: HTMLElement | null = commentsContainer.querySelector(\n    \"[data-comments-open]\"\n  );\n\n  if (commentsContainer && openButton) {\n    const disqusContainer: HTMLElement | null =\n      commentsContainer.querySelector(\"[data-disqus]\");\n\n    if (disqusContainer) {\n      openButton.addEventListener(\"click\", () => {\n        DisqusService.load();\n        commentsContainer.classList.add(\"is-active\");\n      });\n    }\n  }\n}\n","import loadjs from \"loadjs\";\nimport { config } from \"consts\";\n\nimport { KachingOptions, KachingPlayerConfig } from \"@types\";\nimport { AdService, NORTVTrackingService } from \"services\";\n\nexport class Clevercast {\n  private container: HTMLElement | null = null;\n  private player: any = null;\n  private play: () => void = () => {};\n  private pause: () => void = () => {};\n\n  constructor(container: HTMLElement) {\n    this.container = container;\n    this.init();\n  }\n\n  init = () => {\n    loadjs(\"https://player.clevercast.com/js/api.min.js\", {\n      numRetries: 3,\n      success: this.loadSuccess,\n      error: (depsNotFound: any) => {\n        console.log(depsNotFound);\n      },\n    });\n  };\n\n  getCommUrl = () =>\n    new Promise<string>(async (resolve, reject) => {\n      try {\n        const url = (await AdService.getVideoURL()) as string;\n\n        resolve(url);\n      } catch (e) {\n        resolve(\"\");\n      }\n    });\n\n  loadSuccess = async () => {\n    if (this.container && !this.container.dataset?.clevercastLoaded) {\n      this.container.dataset.clevercastLoaded = \"true\";\n\n      const { id } = this.container;\n      const { itemId } = this.container.dataset;\n\n      const options: KachingOptions = {\n        autoplay: false,\n        autoload: \"off\",\n        captions_default: \"nl\",\n        captions_default_show: true,\n        chromecast: true,\n        account_id: config.CLEVERCAST.ACCOUNT_ID,\n        item_id: itemId,\n        comm_url: await this.getCommUrl(),\n        comm_url_prefetch: false,\n      };\n\n      const playerConfig: KachingPlayerConfig = {\n        id,\n        responsive: true,\n        options,\n      };\n\n      this.player = new (window as any).RMP(playerConfig);\n      NORTVTrackingService.trackClevercastVideo(this.player);\n\n      this.player.addEventListener(\"structureddata\", (data: any) => {\n        // Clevercast returns duration in PT1M20S format, we need to convert it to MM:SS\n        let duration: string = data.duration\n          .replace(\"PT\", \"\")\n          .replace(\"M\", \":\")\n          .replace(\"S\", \"\");\n\n        if (!duration.includes(\":\")) {\n          duration = `0:${duration}`;\n        }\n\n        const [minutes, seconds] = duration.split(\":\");\n        duration = `${minutes}:${seconds.padStart(2, \"0\")}`;\n\n        const durationElement = document.createElement(\"div\");\n        durationElement.classList.add(\"teaser__duration\");\n        durationElement.textContent = duration;\n\n        this.player.container.appendChild(durationElement);\n      });\n\n      this.player.addEventListener(\"play\", () => {\n        const durationElement =\n          this.player.container.querySelector(\".teaser__duration\");\n        if (durationElement) {\n          durationElement.remove();\n        }\n      });\n    }\n\n    this.play = () => {\n      this.player?.play();\n    };\n\n    this.pause = () => {\n      this.player?.pause();\n    };\n  };\n}\n","import { Clevercast } from \"./Clevercast\";\n\nconst initContainers = () => {\n  const clevercastContainers: NodeListOf<HTMLDivElement> =\n    document.querySelectorAll(\"[data-clevercast-video]\");\n\n  Array.from(clevercastContainers).forEach(async (clevercastContainer) => {\n    new Clevercast(clevercastContainer);\n  });\n};\n\nconst init = () => {\n  const consentStatus = window.__cmp(\"consentStatus\");\n\n  const onConsentStatusReady = () => {\n    const { consentExists, consentData } = window.__cmp(\"consentStatus\");\n\n    if (consentExists && consentData) {\n      initContainers();\n    } else {\n      initContainers();\n\n      window.__cmp(\n        \"addEventListener\",\n        [\"consent\", onConsentStatusReady, false],\n        null\n      );\n    }\n  };\n\n  if (consentStatus?.consentData !== \"\") {\n    initContainers();\n  } else {\n    initContainers();\n\n    window.__cmp(\n      \"addEventListener\",\n      [\"settings\", onConsentStatusReady, false],\n      null\n    );\n  }\n};\n\n(() => {\n  const video = document.querySelector(\"[data-video]\");\n  const youtubeEmbeds = document.querySelectorAll(\".wm-embed-youtube\");\n\n  if (video) {\n    init();\n  }\n\n  if (youtubeEmbeds) {\n    youtubeEmbeds.forEach((youtubeEmbed) => {\n      // Add tracking attribute to youtube embeds.\n      youtubeEmbed.setAttribute(\"data-tms-video-percent\", \"0,25,50,75,100\");\n    });\n  }\n})();\n\nexport { init as initClevercastContainers };\n","import { BASE_URL } from \"consts\";\n\n(() => {\n  const links: HTMLAnchorElement[] = Array.from(\n    document.querySelectorAll(`a[href*='bruzz.be/live/popup']`)\n  );\n\n  const openPopupFromLink = (type: string) => (event: any) => {\n    event.preventDefault();\n\n    return window.open(\n      `${BASE_URL}/live/popup#${type}`,\n      \"popup\",\n      \"width=440,height=710\"\n    );\n  };\n\n  links.map((link) => {\n    const type =\n      link.href.indexOf(\"#\") !== -1\n        ? link.href.substring(link.href.indexOf(\"#\") + 1)\n        : \"listen\";\n\n    if (type) {\n      return (link.onclick = openPopupFromLink(type));\n    }\n\n    return null;\n  });\n\n  const openPopup = (type?: string, radio?: string) => {\n    window.close();\n    window.open(\n      `${BASE_URL}/live/popup/#/${radio}${type ? `/${type}` : type}`,\n      \"popup\",\n      \"width=440,height=710\"\n    );\n  };\n\n  const popupTriggers: HTMLDivElement[] = Array.from(\n    document.querySelectorAll(\"[data-popup]\")\n  );\n\n  popupTriggers.forEach((popup) => {\n    popup.addEventListener(\"click\", () => {\n      openPopup(popup.dataset.type, popup.dataset.radio || \"bruzz\");\n    });\n  });\n\n  const appIframe: HTMLIFrameElement | null = document.getElementById(\n    \"liveFrame\"\n  ) as HTMLIFrameElement;\n\n  if (appIframe) {\n    const receiveMessage = (event: any) => {\n      if (!isNaN(event.data)) {\n        appIframe.height = event.data;\n        appIframe.style.height = `${event.data}px`;\n      }\n    };\n\n    window.addEventListener(\"message\", receiveMessage, false);\n    window.setInterval(() => {\n      if (\n        appIframe.contentWindow?.document.getElementsByTagName(\"body\")\n          .length !== 0\n      ) {\n        const iframeBody =\n          appIframe.contentWindow?.document.getElementsByTagName(\"body\")[0];\n\n        if (iframeBody) {\n          if (iframeBody.scrollHeight !== parseInt(appIframe.height)) {\n            window.parent.postMessage(iframeBody.scrollHeight, \"*\");\n          }\n        }\n      }\n    }, 800);\n  }\n})();\n","import toast from \"react-hot-toast\";\n\n(() => {\n  const linkShare =\n    document.querySelectorAll<HTMLAnchorElement>(\".js-link-share\");\n\n  linkShare.forEach((link) => {\n    link.addEventListener(\"click\", (e) => {\n      e.preventDefault();\n\n      const { copy } = link.dataset;\n\n      navigator.clipboard.writeText(window.location.href).then(() => {\n        toast.success(copy as string, {\n          duration: 2000,\n          style: {\n            fontSize: \"1.2rem\",\n          },\n          ariaProps: {\n            role: \"status\",\n            \"aria-live\": \"polite\",\n          },\n        });\n      });\n    });\n  });\n})();\n","import { disableBodyScroll, enableBodyScroll } from \"body-scroll-lock\";\n\n(() => {\n  let lastScrollTop: number;\n\n  const header: HTMLElement | null = document.querySelector(\"[data-header]\");\n  const hamburger: HTMLButtonElement | null =\n    document.querySelector(\"[data-hamburger]\");\n  const overlayMenu: HTMLDivElement | null = document.querySelector(\n    \"[data-overlay-menu]\"\n  );\n  const overlayMenuClose: HTMLDivElement | null = document.querySelector(\n    \"[data-overlay-close]\"\n  );\n\n  if (header && hamburger && overlayMenu && overlayMenuClose) {\n    const onOverlayOpen = () => {\n      hamburger.setAttribute(\"aria-expanded\", \"true\");\n      overlayMenu.classList.add(\"is-open\");\n      disableBodyScroll(overlayMenu);\n    };\n\n    const onOverlayClose = () => {\n      hamburger.setAttribute(\"aria-expanded\", \"false\");\n      overlayMenu.classList.remove(\"is-open\");\n      enableBodyScroll(overlayMenu);\n    };\n\n    hamburger.addEventListener(\"click\", onOverlayOpen);\n    overlayMenuClose.addEventListener(\"click\", onOverlayClose);\n  }\n\n  const onScroll = () => {\n    if (header) {\n      const scrollTop =\n        window.pageYOffset || document.documentElement.scrollTop;\n\n      if (scrollTop > lastScrollTop && scrollTop > 50) {\n        header.style.top = header.offsetHeight * -1 + \"px\";\n      } else {\n        header.style.top = \"0\";\n      }\n\n      lastScrollTop = scrollTop;\n    }\n  };\n\n  if (header) {\n    window.addEventListener(\"scroll\", onScroll);\n  }\n})();\n","import { AdService } from \"services\";\n\n(() => {\n  AdService.init();\n})();\n","import \"flickity-imagesloaded\";\nimport Flickity from \"flickity\";\nimport \"flickity/css/flickity.css\";\n\n(() => {\n  const galleries: HTMLDivElement[] = Array.from(\n    document.querySelectorAll(\"[data-gallery]\")\n  );\n\n  const initGallery = (gallery: HTMLElement) => {\n    const { pageDots } = gallery.dataset;\n\n    const flkty = new Flickity(gallery, {\n      freeScroll: false,\n      contain: true,\n      imagesLoaded: true,\n      prevNextButtons: true,\n      pageDots: Boolean(pageDots),\n      wrapAround: false,\n      cellAlign: \"left\",\n      groupCells: true,\n    });\n\n    const layout = () => {\n      const imgs: HTMLImageElement[] = Array.from(\n        gallery.querySelectorAll(\"img\")\n      );\n\n      imgs.forEach((img) => {\n        const imgSlideParent: HTMLDivElement | null =\n          img.closest(\".gallery__slide\");\n\n        if (imgSlideParent) {\n          imgSlideParent.style.width = `${img.getBoundingClientRect().width}px`;\n        }\n      });\n\n      flkty.reloadCells();\n      flkty.resize();\n    };\n\n    window.onload = () => {\n      layout();\n    };\n\n    window.onresize = () => {\n      layout();\n    };\n\n    flkty.on(\"settle\", () => {\n      layout();\n    });\n\n    const io = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting === true) {\n          layout();\n\n          io.unobserve(gallery);\n        }\n      });\n    });\n\n    io.observe(gallery);\n  };\n\n  galleries.forEach((gallery) => initGallery(gallery));\n})();\n","import { FC } from \"react\";\n\nimport { Field } from \"react-final-form\";\n\ninterface Props {\n  name: string;\n}\n\nexport const SearchFilter: FC<Props> = ({ name }) => (\n  <fieldset className=\"search-filter\">\n    <Field name={name} type=\"search\" key={name}>\n      {({ input }) => (\n        <label htmlFor={input.name}>\n          <input\n            id={input.name}\n            className=\"search-filter__input\"\n            placeholder=\"zoek een event of locatie\"\n            autoComplete=\"off\"\n            type=\"input\"\n            {...input}\n          />\n          <button type=\"submit\" className=\"search-filter__button\">\n            <svg viewBox=\"0 0 24 24\">\n              <use xlinkHref=\"#icon-search\" />\n            </svg>\n          </button>\n        </label>\n      )}\n    </Field>\n  </fieldset>\n);\n","import { FC } from \"react\";\n\nimport { Field } from \"react-final-form\";\n\ninterface Props {\n  name: string;\n  option: {\n    key: string;\n    title: string;\n  };\n}\n\nexport const RadioFilterOption: FC<Props> = ({ name, option }) => (\n  <Field name={name} value={option.key} type=\"radio\">\n    {({ input }) => {\n      return (\n        <div className=\"search-checkbox\">\n          <label\n            className=\"search-checkbox__container\"\n            htmlFor={`${input.name}-${input.value}`}\n          >\n            <input\n              id={`${input.name}-${input.value}`}\n              className=\"search-checkbox__input\"\n              type=\"radio\"\n              {...input}\n            />\n            <span className=\"search-checkbox__label\">{option.title}</span>\n          </label>\n        </div>\n      );\n    }}\n  </Field>\n);\n","const generateYears = () => {\n  const currentYear = new Date().getFullYear();\n  const result = [];\n\n  for (let i = 0; i < 3; i += 1) {\n    result.push(currentYear + i);\n  }\n\n  return result;\n};\n\nconst years = generateYears();\n\nconst months: { label: string; value: string }[] = [\n  {\n    label: \"Januari\",\n    value: \"1\",\n  },\n  {\n    label: \"Februari\",\n    value: \"2\",\n  },\n  {\n    label: \"Maart\",\n    value: \"3\",\n  },\n  {\n    label: \"April\",\n    value: \"4\",\n  },\n  {\n    label: \"Mei\",\n    value: \"5\",\n  },\n  {\n    label: \"Juni\",\n    value: \"6\",\n  },\n  {\n    label: \"Juli\",\n    value: \"7\",\n  },\n  {\n    label: \"Augustus\",\n    value: \"8\",\n  },\n  {\n    label: \"September\",\n    value: \"9\",\n  },\n  {\n    label: \"Oktober\",\n    value: \"10\",\n  },\n  {\n    label: \"November\",\n    value: \"11\",\n  },\n  {\n    label: \"December\",\n    value: \"12\",\n  },\n];\n\nconst days = Array.from(new Array(31), (val, index) => index + 1);\n\nexport { days, months, years };\n","import { FC } from \"react\";\n\nimport { Field } from \"react-final-form\";\n\nimport { days, months, years } from \"../constants/dates\";\n\ninterface Props {\n  values?: any;\n  label: string;\n  show: boolean;\n}\n\nexport const DateFilter: FC<Props> = ({ values, label, show }) => (\n  <div className={`event-date-filter${show ? \" is-visible\" : \"\"}`}>\n    <div className=\"event-date-filter__year\">\n      <label className=\"event-date-filter__label\">{label}</label>\n      <Field name=\"year\" component=\"select\">\n        {({ input }) => {\n          if (values.date_ranges && values.date_ranges !== \"custom\") {\n            /* eslint-disable-next-line */\n            // @ts-ignore\n            input.onChange();\n          }\n\n          return (\n            <select className=\"event-date-filter__select\" {...input}>\n              <option aria-label=\"Kies een jaar\" />\n              {years.map((year) => (\n                <option key={year} value={year}>\n                  {year}\n                </option>\n              ))}\n            </select>\n          );\n        }}\n      </Field>\n    </div>\n    <div className=\"event-date-filter__month\">\n      <label className=\"event-date-filter__label\">\n        met de maand\n        <Field name=\"month\" component=\"select\">\n          {({ input }) => {\n            if (values.date_ranges && values.date_ranges !== \"custom\") {\n              /* eslint-disable-next-line */\n              // @ts-ignore\n              input.onChange();\n            }\n\n            return (\n              <select className=\"event-date-filter__select\" {...input}>\n                <option aria-label=\"Kies een maand\" />\n                {months.map((month) => (\n                  <option key={month.label} value={month.value}>\n                    {month.label}\n                  </option>\n                ))}\n              </select>\n            );\n          }}\n        </Field>\n      </label>\n    </div>\n    <div className=\"event-date-filter__day\">\n      <label className=\"event-date-filter__label\">\n        en dag\n        <Field name=\"day\" component=\"select\">\n          {({ input }) => {\n            if (values.date_ranges && values.date_ranges !== \"custom\") {\n              /* eslint-disable-next-line */\n              // @ts-ignore\n              input.onChange();\n            }\n\n            return (\n              <select className=\"event-date-filter__select\" {...input}>\n                <option aria-label=\"Kies een dag\" />\n                {days.map((day) => (\n                  <option key={day} value={day}>\n                    {day}\n                  </option>\n                ))}\n              </select>\n            );\n          }}\n        </Field>\n      </label>\n    </div>\n  </div>\n);\n","import { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { RadioFilterOption } from \"./RadioFilterOption\";\nimport { DateFilter } from \"./DateFilter\";\n\nconst RadioFilter = ({\n  values,\n  label,\n  name,\n  options,\n  expandable,\n  expandableLimit,\n  expandableMoreText,\n  expandableLessText,\n  highlighted,\n}) => {\n  const [expanded, setExpanded] = useState(false);\n\n  const fmlDunnoLength = options.length;\n  const processedOptions = expanded\n    ? options\n    : options.slice(0, expandableLimit);\n\n  const showCustomDate =\n    name === \"date_ranges\" && values.date_ranges === \"custom\";\n\n  return (\n    <fieldset\n      className={`radio-filter${highlighted ? \" is-highlighted\" : \"\"}`}\n    >\n      <h4 className=\"radio-filter__title\">{label}</h4>\n      <div className=\"radio-filter__options\">\n        {processedOptions.map((option) => (\n          <RadioFilterOption name={name} option={option} key={option.key} />\n        ))}\n      </div>\n      <DateFilter label=\"Ik zoek naar\" values={values} show={showCustomDate} />\n      {expandable && fmlDunnoLength > expandableLimit && (\n        <button\n          className=\"radio-filter__expand\"\n          onClick={() => setExpanded(!expanded)}\n          type=\"button\"\n        >\n          {expanded ? expandableLessText : expandableMoreText}\n        </button>\n      )}\n    </fieldset>\n  );\n};\n\nRadioFilter.propTypes = {\n  values: PropTypes.shape({}),\n  label: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      key: PropTypes.string.isRequired,\n      title: PropTypes.string.isRequired,\n    })\n  ).isRequired,\n  expandable: PropTypes.bool,\n  expandableLimit: PropTypes.number,\n  expandableMoreText: PropTypes.string,\n  expandableLessText: PropTypes.string,\n  highlighted: PropTypes.bool,\n};\n\nRadioFilter.defaultProps = {\n  values: {},\n  expandable: false,\n  expandableLimit: Infinity,\n  expandableMoreText: \"\",\n  expandableLessText: \"\",\n  highlighted: false,\n};\n\nexport default RadioFilter;\n","import { FC } from \"react\";\n\nimport { Field } from \"react-final-form\";\n\ninterface Props {\n  filter: {\n    key: string;\n    title: string;\n    type: string;\n    options: any[];\n  };\n  value: string;\n}\n\nexport const RadioFilterIndicator: FC<Props> = ({ filter, value }) => {\n  if (!value || value === \"\" || filter.type === \"date\") {\n    return null;\n  }\n\n  let selectedOptionsString = \"\";\n\n  if (filter.type === \"radios\") {\n    const selectedOptionsAsString = filter.options\n      .filter((option) => value === option.key)\n      .map((option) => option.title);\n\n    if (selectedOptionsAsString.length <= 2) {\n      selectedOptionsString = selectedOptionsAsString.join(\" en \");\n    }\n\n    if (selectedOptionsAsString.length > 2) {\n      const first = selectedOptionsAsString.slice(0, -1);\n      const second = selectedOptionsAsString.slice(\n        selectedOptionsAsString.length - 1\n      );\n\n      selectedOptionsString = `${first.join(\", \")} en ${second[0]}`;\n    }\n  } else {\n    selectedOptionsString = value;\n  }\n\n  return (\n    <Field name={filter.key}>\n      {({ input }) => (\n        <button\n          className=\"btn-facet\"\n          onClick={() => {\n            /* eslint-disable-next-line */\n            // @ts-ignore\n            input.onChange();\n          }}\n          type=\"button\"\n        >\n          {filter.title}: <strong>{selectedOptionsString}</strong>\n        </button>\n      )}\n    </Field>\n  );\n};\n","import { Form, FormSpy } from \"react-final-form\";\n\nimport { SearchFilter } from \"./SearchFilter\";\nimport RadioFilter from \"./RadioFilter\";\nimport { RadioFilterIndicator } from \"./RadioFilterIndicator\";\nimport { FC } from \"react\";\n\ninterface Props {\n  filters: any;\n  values: any;\n  setValues: (values: any) => void;\n  showResults: (values: any) => void;\n}\n\nexport const Filters: FC<Props> = ({ filters, values, setValues }) => {\n  let t: any = null;\n\n  return (\n    <Form onSubmit={setValues} initialValues={values}>\n      {({ values: finalFormValues, handleSubmit, form }) => (\n        <form className=\"event-search-filters\" onSubmit={handleSubmit}>\n          {Object.keys(values).length > 0 && (\n            <>\n              <div className=\"event-search-filters__indicators\">\n                <div className=\"event-search-filters__indicators-inner\">\n                  {filters.map((filter: any) => (\n                    <RadioFilterIndicator\n                      filter={filter}\n                      value={values[filter.key]}\n                      key={filter.key}\n                    />\n                  ))}\n                </div>\n                <div className=\"event-search-filters__reset\">\n                  <button\n                    type=\"button\"\n                    className=\"search-toggle\"\n                    onClick={() => {\n                      form.reset({});\n                      form.submit();\n                    }}\n                  >\n                    Wis alle filters\n                  </button>\n                </div>\n              </div>\n            </>\n          )}\n          <div className=\"event-search-filters__group\">\n            {filters.map((filter: any, index: number) => {\n              let filterComponent = null;\n\n              switch (filter.type) {\n                case \"text\":\n                  filterComponent = <SearchFilter name={filter.key} />;\n                  break;\n                case \"radios\":\n                  filterComponent = (\n                    <RadioFilter\n                      values={finalFormValues}\n                      name={filter.key}\n                      label={filter.title}\n                      options={filter.options}\n                      expandable={filter.expandable}\n                      expandableLimit={filter.expandableLimit}\n                      expandableMoreText={filter.expandableMoreText}\n                      expandableLessText={filter.expandableLessText}\n                      highlighted={index === 1}\n                      key={filter.key}\n                    />\n                  );\n                  break;\n                default:\n                  return false;\n              }\n\n              return filterComponent;\n            })}\n          </div>\n          <FormSpy subscription={{ values: true, dirty: true }}>\n            {({ values: formSpyValues, dirty }) => {\n              if (dirty) {\n                if (typeof formSpyValues.search !== \"undefined\") {\n                  if (formSpyValues.search.length > 2) {\n                    clearTimeout(t);\n\n                    t = setTimeout(() => {\n                      form.submit();\n                      form.reset();\n                    }, 500);\n                  }\n                } else {\n                  form.submit();\n                  form.reset();\n                }\n              }\n\n              return null;\n            }}\n          </FormSpy>\n        </form>\n      )}\n    </Form>\n  );\n};\n","import React, { FC, useState } from \"react\";\n\ninterface Props {\n  loading: boolean;\n  sidebar: React.ReactElement;\n  content: React.ReactElement;\n}\n\nexport const EventSearch: FC<Props> = ({ loading, sidebar, content }) => {\n  const [sidebarOpen, setSidebarOpen] = useState(false);\n\n  return (\n    <div className=\"event-search\">\n      <div className={`event-search__sidebar${sidebarOpen ? \" is-open\" : \"\"}`}>\n        <button\n          className=\"event-search__sidebar-toggle btn btn--primary\"\n          type=\"button\"\n          onClick={() => setSidebarOpen(!sidebarOpen)}\n        >\n          <span className=\"btn__bg\" />\n          <span className=\"btn__text\">Open filters</span>\n          <span className=\"btn__icon\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"#ffffff\"\n              width=\"18\"\n              height=\"18\"\n              viewBox=\"0 0 16 16\"\n            >\n              <path d=\"M.728 1.72a.667.667 0 0 1 .605-.387h13.333a.667.667 0 0 1 .51 1.097L10 8.55V14a.667.667 0 0 1-.965.596l-2.667-1.333A.667.667 0 0 1 6 12.666V8.55L.824 2.43a.667.667 0 0 1-.096-.71Zm2.042.946 4.406 5.21c.101.12.157.273.157.43v3.948l1.334.667V8.306c0-.157.055-.31.157-.43l4.406-5.21H2.77Z\" />\n            </svg>\n          </span>\n        </button>\n        <div className=\"event-search__sidebar-content\">{sidebar}</div>\n      </div>\n      <div className={`event-search__content ${loading ? \"is-loading\" : \"\"}`}>\n        {content}\n      </div>\n    </div>\n  );\n};\n","import { FC } from \"react\";\n\nimport { Teaser } from \"components/molecules/teaser/Teaser\";\n\ninterface Props {\n  event: {\n    title: string;\n    date: string;\n    category: string;\n    location: string;\n    url: string;\n    image: string;\n    isMust: boolean;\n    isSelect: boolean;\n    languages: string[];\n    languageUrls: {\n      [key: string]: string;\n    };\n    key: string;\n  };\n}\n\nexport const EventSearchTeaser: FC<Props> = ({ event }) => {\n  let eventLabel = null;\n  let eventImage = event.image;\n\n  if (event.isMust) {\n    eventLabel = \"Must\";\n  } else if (event.isSelect) {\n    eventLabel = \"Bruzz select\";\n  }\n\n  if (eventImage === null || eventImage === \"\") {\n    const { agendaFallbackImage } = window.drupalSettings;\n    eventImage = agendaFallbackImage;\n  }\n\n  return (\n    <Teaser\n      title={event.title}\n      image={eventImage}\n      dateString={event.date}\n      label={eventLabel || \"\"}\n      url={event.url}\n      category={event.category}\n      location={event.location}\n    />\n  );\n\n  /* return (\n    <div\n      className=\"event-search-teaser card is-list is-highlight-md has-label is-image-fixed-height\"\n      key={event.key}\n    >\n      <a href={event.url} className=\"card__image\">\n        <img\n          className=\"card__image-img lozad\"\n          src={eventImage}\n          alt={event.title}\n        />\n        <div className=\"card-text-overlay\">\n          <div className=\"card-text-overlay__bg\" />\n          <div className=\"card-text-overlay__overlay\" />\n          <div className=\"card-text-overlay__text\">{event.date}</div>\n        </div>\n      </a>\n      <div className=\"card__content\">\n        {eventLabel && <span className=\"card__label label\">{eventLabel}</span>}\n        {event.date && (\n          <div className=\"card-text-overlay-mobile\">{event.date}</div>\n        )}\n        <h3 className=\"card__title\">\n          <a href={event.url} className=\"card__title-link\">\n            {event.title}\n          </a>\n        </h3>\n        <div className=\"card__meta\">\n          {event.category && (\n            <div className=\"card__main main-tag\">{event.category}</div>\n          )}\n          {event.location && (\n            <span className=\"card__location\">\n              <svg viewBox=\"0 0 16 19\">\n                <use xlinkHref=\"#location\" />\n              </svg>\n              {event.location}\n            </span>\n          )}\n          {event.languages && event.languages.length > 0 && (\n            <div className=\"card__languages\">\n              <svg viewBox=\"0 0 16 16\">\n                <use xlinkHref=\"#globe\" />\n              </svg>\n\n              <span className=\"card__languages-title\">Ook in:</span>\n              {event.languages.map((eventLanguage: any) => {\n                if (event.languageUrls && event.languageUrls[eventLanguage]) {\n                  return (\n                    <a\n                      href={event.languageUrls[eventLanguage]}\n                      className=\"card__languages-lang\"\n                      key={event.languageUrls[eventLanguage]}\n                    >\n                      {eventLanguage}\n                    </a>\n                  );\n                }\n\n                return (\n                  <span className=\"card__languages-lang\">{eventLanguage}</span>\n                );\n              })}\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  ); */\n};\n","import { FC } from \"react\";\nimport ReactPaginate from \"react-paginate\";\n\ninterface Props {\n  pageCount: number;\n  activePage: number;\n  changePage: (page: number) => void;\n}\n\nexport const EventSearchPager: FC<Props> = ({ pageCount, activePage, changePage }) => {\n  const handleChangePage = (event: any) => {\n    const page = event.selected + 1;\n\n    changePage(page);\n    window.scrollTo(0, 0);\n  };\n\n  return (\n    <div className=\"search__pager\">\n      <ReactPaginate\n        containerClassName=\"react-pager\"\n        breakClassName=\"pager__item\"\n        pageClassName=\"react-pager__page\"\n        pageLinkClassName=\"react-pager__link\"\n        activeClassName=\"is-active\"\n        pageCount={pageCount}\n        initialPage={activePage - 1}\n        forcePage={activePage - 1}\n        disableInitialCallback\n        pageRangeDisplayed={3}\n        marginPagesDisplayed={2}\n        onPageChange={handleChangePage}\n      />\n    </div>\n  );\n};\n","class FiltersConverterService {\n  static converters = {\n    radioConverter: {\n      parse: (string: string, filter: any) => {\n        const option = filter.options.find((xxx: any) => xxx.key === string);\n\n        return option.key;\n      },\n      stringify: (option: string, filter: any) => {\n        const slugs = [];\n\n        const filterOption = filter.options.find(\n          (xxx: any) => xxx.key === option\n        );\n\n        if (filterOption) {\n          slugs.push(filterOption.key);\n        }\n\n        return slugs.join(\",\");\n      },\n    },\n    textConverter: {\n      parse: (string: string) => string,\n      stringify: (string: string) => string,\n    },\n  };\n\n  static stringify = (values: any, filters: any, filterConverters: any) => {\n    const parts: string[] = [];\n\n    Object.keys(values).forEach((key) => {\n      const filter = filters.find((xxx: any) => xxx.key === key);\n\n      const { key: filterKey } = filter;\n\n      const value = filterConverters[key].stringify(values[key], filter);\n\n      if (filterKey && value) {\n        parts.push(`${filterKey}:${value}`);\n      }\n    });\n\n    return parts.join(\"/\") || \"\";\n  };\n\n  static parse = (string: string, filters: any, filterConverters: any) => {\n    const parts = string.split(\"/\");\n    const object: any = {};\n\n    parts.forEach((part) => {\n      const slug = part.split(\":\")[0];\n      const valueAsString = part.split(\":\")[1];\n\n      if (slug && valueAsString) {\n        const filter = filters.find((xxx: any) => xxx.key === slug);\n\n        const { key } = filter;\n        const value = filterConverters[key].parse(valueAsString, filter);\n\n        object[key] = value;\n      }\n    }, {});\n\n    return object;\n  };\n}\n\nexport default FiltersConverterService;\n","class EventSearchService {\n  static search = async (values: any, page = 0) => {\n    const parameters: any = {\n      page,\n    };\n\n    Object.keys(values).forEach((key) => {\n      if (\n        key === \"search\" ||\n        key === \"day\" ||\n        key === \"month\" ||\n        key === \"year\"\n      ) {\n        parameters[key] = values[key];\n      } else {\n        parameters[key] = [values[key]];\n      }\n    });\n\n    const response = await fetch(\"/api/publiq/search\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify(parameters),\n    });\n\n    const json = await response.json();\n\n    return {\n      results: json.events,\n      pagination: {\n        currentPage: json.page,\n        total: json.totalItems,\n        totalPages: json.pages,\n      },\n    };\n  };\n}\n\nexport default EventSearchService;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { BrowserRouter, Route } from \"react-router-dom\";\n\nimport { Filters } from \"./filters/Filters\";\nimport { EventSearch } from \"./EventSearch\";\nimport { EventSearchTeaser } from \"./EventSearchTeaser\";\nimport { EventSearchPager } from \"./EventSearchPager\";\n\nimport FiltersConverterService from \"./services/FiltersConverterService\";\nimport EventSearchService from \"./services/EventSearchService\";\n\nclass EventSearchOverview extends React.Component {\n  constructor(props) {\n    super(props);\n\n    const { agendaPath } = window;\n\n    this.state = {\n      loading: false,\n      results: [],\n      pagination: {\n        currentPage: 0,\n        total: 0,\n        totalPages: 0,\n      },\n    };\n\n    this.basePath = agendaPath || \"/uitagenda\";\n    this.filters = window.filters;\n    this.filterConverters = {\n      search: FiltersConverterService.converters.textConverter,\n      labels: FiltersConverterService.converters.radioConverter,\n      date_ranges: FiltersConverterService.converters.radioConverter,\n      day: FiltersConverterService.converters.textConverter,\n      month: FiltersConverterService.converters.textConverter,\n      year: FiltersConverterService.converters.textConverter,\n      topics: FiltersConverterService.converters.radioConverter,\n    };\n  }\n\n  componentDidMount = () => {\n    this.search().then();\n  };\n\n  componentDidUpdate = (prevProps) => {\n    /* eslint-disable */\n    const hasUpdatedFilters =\n      this.props.location.pathname !== prevProps.location.pathname;\n    const hasUpdatedPage = this.props.location.hash !== prevProps.location.hash;\n\n    if (hasUpdatedFilters || hasUpdatedPage) {\n      this.search().then();\n    }\n    /* eslint-enable */\n  };\n\n  search = async () => {\n    const values = this.getFilterValues();\n    const page = this.getPage();\n\n    const timeout = setTimeout(() => {\n      this.setState({ loading: true });\n    }, 400);\n\n    this.setState(\n      {\n        ...(await EventSearchService.search(values, page)),\n        loading: false,\n      },\n      () => {\n        window.clearTimeout(timeout);\n      }\n    );\n  };\n\n  getFilterValues = () => {\n    const {\n      location: { pathname },\n    } = this.props;\n\n    const filtersString = pathname.replace(this.basePath, \"\");\n\n    return FiltersConverterService.parse(\n      filtersString,\n      this.filters,\n      this.filterConverters\n    );\n  };\n\n  setFilterValues = (values) => {\n    const { history } = this.props;\n\n    history.push(\n      `${this.basePath}/${FiltersConverterService.stringify(\n        values,\n        this.filters,\n        this.filterConverters\n      )}`\n    );\n  };\n\n  getPage = () => {\n    const hash = window.location.hash.replace(\"#\", \"\");\n\n    return isNaN(+hash) ? 0 : +hash; // eslint-disable-line\n  };\n\n  setPage = (page) => {\n    window.location.hash = page - 1;\n  };\n\n  showResults = () => {\n    if (window.toggleFilterPageSidebar) {\n      window.toggleFilterPageSidebar();\n    }\n  };\n\n  render = () => {\n    const { loading, results, pagination } = this.state;\n\n    const sidebar = (\n      <Filters\n        filters={this.filters}\n        values={this.getFilterValues()}\n        setValues={this.setFilterValues}\n        showResults={this.showResults}\n      />\n    );\n\n    const content = (\n      <>\n        <div className=\"event-search-topbar\">\n          <div className=\"event-search-topbar__results\">\n            <strong>{pagination.total}</strong>{\" \"}\n            {pagination.total === 1 ? \"resultaat\" : \"resultaten\"}\n          </div>\n        </div>\n        <div className=\"event-list\">\n          {results.map((event) => (\n            <React.Fragment key={event.url}>\n              <EventSearchTeaser event={event} />\n            </React.Fragment>\n          ))}\n        </div>\n        {pagination.totalPages > 1 && (\n          <EventSearchPager\n            pageCount={pagination.totalPages}\n            activePage={pagination.currentPage + 1}\n            changePage={this.setPage}\n          />\n        )}\n      </>\n    );\n\n    return (\n      <EventSearch loading={loading} sidebar={sidebar} content={content} />\n    );\n  };\n}\n\nconst EventSearchOverviewWithRouter = () => (\n  <BrowserRouter>\n    <Route path=\"/\" component={EventSearchOverview} />\n  </BrowserRouter>\n);\n\nEventSearchOverview.propTypes = {\n  location: PropTypes.objectOf(PropTypes.any).isRequired,\n  history: PropTypes.shape({}).isRequired,\n};\n\nexport default EventSearchOverviewWithRouter;\n","import ReactDOM from \"react-dom/client\";\n\nimport EventSearchOverview from \"./EventSearchOverview\";\n\n(() => {\n  const eventSearchOverviewContainer = document.querySelector(\n    \"[data-events-search-container]\"\n  );\n\n  if (eventSearchOverviewContainer) {\n    const root = ReactDOM.createRoot(eventSearchOverviewContainer);\n\n    root.render(<EventSearchOverview />);\n  }\n})();\n","import ReactDOM from \"react-dom/client\";\n\n(() => {\n  import(\"./Feedback\").then(({ default: Feedback }) => {\n    const rootEl: HTMLDivElement | null = document.querySelector(\"#feedback\");\n\n    if (rootEl) {\n      const root = ReactDOM.createRoot(rootEl);\n\n      root.render(<Feedback i18n={JSON.parse(rootEl.dataset.i18n || \"\")} />);\n    }\n  });\n})();\n","import { FC, useLayoutEffect, useRef, useState } from \"react\";\nimport { formatDate } from \"utils\";\n\ninterface Props {\n  item: {\n    created: string;\n    html: string;\n  };\n}\n\nexport const TimelineItem: FC<Props> = ({ item }) => {\n  const timelineTeaserRef = useRef<HTMLDivElement>(null);\n  const [, setFormattedDate] = useState<string>(\"\");\n\n  useLayoutEffect(() => {\n    const updateDate = () => {\n      const dynamicDateElement: HTMLDivElement | null | undefined = timelineTeaserRef.current?.querySelector(\"[data-dynamic-date]\");\n      if (dynamicDateElement) {\n        const date = dynamicDateElement.dataset.dynamicDate;\n        const newFormattedDate = formatDate(date || \"\");\n        \n        console.log(\"test\")\n        // Update state to trigger re-render\n        setFormattedDate(newFormattedDate);\n        // Also update the textContent for the dynamic date element\n        dynamicDateElement.textContent = newFormattedDate;\n      }\n    };\n\n    updateDate();\n\n    const intervalId = setInterval(() => {\n      updateDate();\n    }, 60000);\n\n    return () => {\n      clearInterval(intervalId);\n    };\n  }, []);\n\n  return (\n    <div\n      className=\"timeline-item__teaser\"\n      dangerouslySetInnerHTML={{ __html: item.html }}\n      ref={timelineTeaserRef}\n    />\n  );\n};\n","import React, { FC, useEffect } from \"react\";\n\nimport { LatestNewsService } from \"services\";\nimport { formatTimelineDate } from \"utils\";\n\nimport { TimelineItem } from \"./TimelineItem\";\n\ninterface Props {\n  day: number;\n  allowPolling: boolean;\n}\n\nexport const TimelineDay: FC<Props> = ({ day, allowPolling }) => {\n  const [items, setItems] = React.useState([]);\n  const [newItems, setNewItems] = React.useState([]);\n\n  useEffect(() => {\n    const loadDay = async () => {\n      const items = await LatestNewsService.getLatestNewsByDay(day);\n\n      setItems(items);\n    };\n\n    loadDay();\n  }, [day]);\n\n  useEffect(() => {\n    const checkForUpdates = async () => {\n      const newItems = await LatestNewsService.getLatestNewsByDay(day);\n\n      setNewItems(newItems);\n    };\n\n    if (allowPolling) {\n      const interval = setInterval(() => {\n        checkForUpdates();\n      }, 10 * 1000);\n\n      return () => clearInterval(interval);\n    }\n  }, [day, allowPolling]);\n\n  useEffect(() => {\n    if (newItems.length > 0) {\n      setItems(newItems);\n    }\n  }, [newItems]);\n\n  const showUpdates = () => {\n    setItems(newItems);\n  };\n\n  const renderShowUpdates = () => {\n    const updates = newItems.length - items.length;\n\n    if (updates <= 0) {\n      return null;\n    }\n\n    const buttonText =\n      updates === 1 ? (\n        <span className=\"btn__text\">\n          Toon <span>1 nieuwe update</span>\n        </span>\n      ) : (\n        <span className=\"btn__text\">\n          Toon de <span>{updates} nieuwe updates</span>\n        </span>\n      );\n\n    return (\n      <button\n        className=\"btn btn--reload is-outline is-small is-spaced\"\n        type=\"button\"\n        onClick={showUpdates}\n      >\n        <svg className=\"btn__icon is-prefix\" width=\"18px\" height=\"20px\">\n          <use xlinkHref=\"#reload\" width=\"18px\" height=\"20px\" />\n        </svg>\n        {buttonText}\n      </button>\n    );\n  };\n\n  return (\n    <div className=\"timeline-day\">\n      {renderShowUpdates()}\n      <h2 className=\"heading-3\">{formatTimelineDate(day)}</h2>\n      {items.length === 0 && (\n        <p className=\"timeline__empty\">Er is nog geen nieuws voor deze dag.</p>\n      )}\n      {items.map((item) => (\n        <TimelineItem item={item} />\n      ))}\n    </div>\n  );\n};\n","import { FC, useState } from \"react\";\nimport { endOfToday, endOfYesterday, subDays } from \"date-fns\";\n\nimport { TimelineDay } from \"./TimelineDay\";\n\nexport const Timeline: FC = () => {\n  const [days, setDays] = useState([\n    endOfToday().getTime(),\n    endOfYesterday().getTime(),\n  ]);\n\n  const showNextDay = () => {\n    setDays((prevState) => {\n      const lastDay = prevState[prevState.length - 1];\n      const lastDayPlusOne = subDays(lastDay, 1);\n\n      return [...prevState, lastDayPlusOne.getTime()];\n    });\n  };\n\n  return (\n    <div className=\"timeline\">\n      {days.map((day, index) => (\n        <>\n          <TimelineDay\n            day={day}\n            allowPolling={index === 0}\n            key={`${day}-${index}`}\n          />\n          {index === 0 && (\n            <div className=\"block block--ad no-padding\">\n              <div className=\"ad ad--ad_large_leaderboard\"></div>\n            </div>\n          )}\n        </>\n      ))}\n      <div className=\"timeline__btn\">\n        <button\n          className=\"btn btn--primary\"\n          type=\"button\"\n          onClick={showNextDay}\n        >\n          <div className=\"btn__bg\" />\n          <div className=\"btn__inner\">\n            <span className=\"btn__text\">Meer laden</span>\n          </div>\n        </button>\n      </div>\n    </div>\n  );\n};\n","import ReactDOM from \"react-dom/client\";\n\nimport { Timeline } from \"./Timeline\";\n\n(() => {\n  const rootEl = document.querySelector(\"[data-timeline-container]\");\n\n  if (rootEl) {\n    const root = ReactDOM.createRoot(rootEl);\n\n    root.render(<Timeline />);\n  }\n})();\n","import { FC } from \"react\";\nimport cn from \"clsx\";\n\nimport { BruzzThemes } from \"@types\";\n\ninterface Props {\n  link: string;\n  text: string;\n  theme?: BruzzThemes;\n}\n\nexport const Link: FC<Props> = ({ link, text, theme }) => {\n  return (\n    <a href={link} className={cn(\"link\", link ? `link--${theme}` : \"\")}>\n      <span className=\"link__line\">{text}</span>\n    </a>\n  );\n};\n","import { FC } from \"react\";\n\nimport { Link } from \"components/atoms/link/Link\";\n\ninterface Props {\n  title: string;\n  link: {\n    url: string;\n    text: string;\n  };\n}\n\nexport const SectionTitle: FC<Props> = ({ title, link }) => {\n  return (\n    <div className=\"section-title\">\n      <div className=\"section-title__inner\">\n        <div className=\"section-title__top\">\n          <div className=\"section-title__title-wrapper\">\n            <h3 className=\"section-title__title\">{title}</h3>\n          </div>\n          <div className=\"section-title__link\">\n            <Link link={link.url} text={link.text} />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { FC, useMemo } from \"react\";\n\nimport { LocalNewsLocation } from \"@types\";\nimport { LocalNewsService } from \"services\";\n\ninterface Props {\n  label: string;\n  setLocation: (location: LocalNewsLocation) => void;\n  location?: LocalNewsLocation;\n}\n\nexport const LocalNewsDropdown: FC<Props> = ({\n  label,\n  setLocation,\n  location,\n}) => {\n  const locations: LocalNewsLocation[] = useMemo(\n    () => LocalNewsService.getLocations(),\n    []\n  );\n\n  const handleChangeLocation = (event: any) => {\n    const id = event.target.value;\n    const location = LocalNewsService.getLocations().find(\n      (item: LocalNewsLocation) => item.id === id\n    );\n\n    setLocation(location);\n  };\n\n  return (\n    <div className=\"form-item\">\n      <label htmlFor=\"municipality\">{label}</label>\n      <select\n        id=\"municipality\"\n        name=\"municipality\"\n        value={location?.id}\n        className=\"form-text\"\n        onChange={handleChangeLocation}\n      >\n        <option value=\"\">Kies een gemeente</option>\n        {locations\n          ?.sort((a, b) => a.text?.localeCompare(b.text))\n          .map((option) => (\n            <option value={option.id} key={option.id}>\n              {option.text}\n            </option>\n          ))}\n      </select>\n    </div>\n  );\n};\n","import { useEffect, useState, useRef, FC } from \"react\";\n\nimport { LatestNewsService } from \"services\";\nimport { LocalNewsLocation } from \"@types\";\n\nimport { Teaser } from \"components/molecules/teaser/Teaser\";\nimport { SectionTitle } from \"components/molecules/section-title/SectionTitle\";\nimport { Link } from \"components/atoms/link/Link\";\n\nimport { LocalNewsDropdown } from \"./LocalNewsDropdown\";\n\ninterface Props {\n  settings: {\n    title: string;\n    dropdownPrefix: string;\n    dropdownText: string;\n  };\n}\n\nexport const LocalNewsBlock: FC<Props> = ({ settings }) => {\n  const localNewsBlockRef = useRef(null);\n\n  const [loading, setLoading] = useState(false);\n  const [location, setLocation] = useState<LocalNewsLocation>();\n  const [teasers, setTeasers] = useState([]);\n\n  const moreNewsLink = location && location.url ? location.url : \"/gemeente\";\n\n  useEffect(() => {\n    const updateLocalNews = async () => {\n      setLoading(true);\n      setTeasers([]);\n\n      try {\n        const { items } = await LatestNewsService.getLatestNews(location?.id);\n\n        setLoading(false);\n        setTeasers(items.slice(0, 4));\n      } catch (error) {\n        console.log(error);\n      }\n    };\n\n    updateLocalNews();\n  }, [location]);\n\n  return (\n    <div className=\"local-news-block\" ref={localNewsBlockRef}>\n      <div className=\"teaser-section teaser-section--feed\">\n        <div className=\"teaser-section__inner\">\n          <SectionTitle\n            title={settings.title}\n            link={{\n              url: moreNewsLink,\n              text: \"Meer nieuws\",\n            }}\n          />\n          {loading && <div className=\"throbber\" />}\n          {!loading && (\n            <div className=\"local-news-block__content\">\n              <div className=\"local-news-block__header\">\n                <LocalNewsDropdown\n                  label={settings.dropdownPrefix}\n                  location={location}\n                  setLocation={(newLocation) => setLocation(newLocation)}\n                />\n              </div>\n              {teasers.length > 0 && (\n                <ul className=\"teaser-section__items\">\n                  {teasers.map((teaser: any) => (\n                    <li key={teaser.id}>\n                      <Teaser\n                        label={teaser.label}\n                        url={teaser.url}\n                        title={teaser.title}\n                        image={teaser.image}\n                        topic={teaser.topic}\n                        date={teaser.timestamp}\n                      />\n                    </li>\n                  ))}\n                </ul>\n              )}\n            </div>\n          )}\n          <div className=\"teaser-section__mobile-link\">\n            <Link link={moreNewsLink} text=\"Meer nieuws\" />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import ReactDOM from \"react-dom/client\";\n\nimport { LocalNewsBlock } from \"./LocalNewsBlock\";\n\n(() => {\n  const localNewsSettings = {\n    title: \"Nieuws uit jouw gemeente\",\n    dropdownPrefix: \"Kies een gemeente\",\n    dropdownText: \"Kies een gemeente\",\n  };\n\n  const localNewsBlockContainers: NodeListOf<HTMLDivElement> =\n    document.querySelectorAll(\"[data-local-news-block]\");\n\n  localNewsBlockContainers.forEach((localNewsContainer) => {\n    const root = ReactDOM.createRoot(localNewsContainer);\n\n    root.render(<LocalNewsBlock settings={localNewsSettings} />);\n  });\n})();\n","import { FC, useState } from \"react\";\nimport Select, { StylesConfig } from \"react-select\";\n\ninterface ITopic {\n  label: string;\n  url: string | null;\n  \"sub-options\"?: ITopic[];\n}\n\ninterface Props {\n  topics: ITopic[];\n  copy: {\n    title: string;\n    makeAChoice: string;\n    makeAChoice2: string;\n  };\n  currentUrl: string;\n}\n\nexport const ElectoralHeader: FC<Props> = ({ topics, copy, currentUrl }) => {\n  const [topic, setTopic] = useState<ITopic | undefined>(\n    currentUrl\n      ? (topics.find(\n          (topic) =>\n            topic.url === currentUrl ||\n            topic[\"sub-options\"]?.find(\n              (subOption) => subOption.url === currentUrl\n            )\n        ) as ITopic)\n      : undefined\n  );\n\n  const styles: StylesConfig = {\n    control: (baseStyles, { isFocused }) => ({\n      ...baseStyles,\n      borderRadius: 0,\n      padding: \"0.5rem\",\n      height: \"54px\",\n      borderColor: isFocused ? \"black\" : \"#828282\",\n      boxShadow: isFocused ? \"0 0 0px 1px black\" : \"none\",\n      \"&:hover\": {\n        borderColor: isFocused ? \"black\" : \"#828282\",\n      },\n    }),\n    menuList: (base) => ({\n      ...base,\n      color: \"black\",\n    }),\n    menu: (base) => ({\n      ...base,\n      zIndex: 100,\n    }),\n    option: (styles) => ({\n      ...styles,\n      padding: \"1rem\",\n      color: \"black !important\",\n    }),\n    indicatorSeparator: (styles) => ({\n      ...styles,\n      display: \"none\",\n    }),\n    container: (styles) => ({\n      ...styles,\n      width: \"50%\",\n      \"@media only screen and (max-width: 768px)\": {\n        ...styles,\n        width: \"100%\",\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      textWrap: \"nowrap\",\n    }),\n  };\n\n  return (\n    <div className=\"electoral-header__select-wrapper\">\n      <Select\n        options={topics}\n        placeholder={copy.makeAChoice}\n        isSearchable={false}\n        value={topic}\n        onChange={(selectedOption) => {\n          const selectedTopic = selectedOption as ITopic;\n\n          if (selectedTopic?.url) {\n            window.location.href = selectedTopic.url;\n          } else {\n            setTopic(selectedTopic);\n          }\n        }}\n        styles={\n          {\n            ...styles,\n            option: (styles, { data }) => ({\n              ...styles,\n              color: \"black\",\n              backgroundColor: (data as ITopic)?.url ? \"#FEEBF9\" : \"#D9F7F5\",\n              \":hover\": {\n                backgroundColor: (data as ITopic)?.url ? \"#FDBCEB\" : \"#80E4DF\",\n              },\n            }),\n            placeholder: (styles) => ({\n              ...styles,\n              whiteSpace: \"nowrap\",\n              overflow: \"hidden\",\n            }),\n          } as StylesConfig\n        }\n        maxMenuHeight={500}\n      />\n      {topic && !!topic[\"sub-options\"]?.length && (\n        <Select\n          placeholder={copy.makeAChoice2}\n          options={topic[\"sub-options\"]}\n          defaultValue={topic[\"sub-options\"]?.find(\n            (subOption) => subOption.url === currentUrl\n          )}\n          styles={\n            {\n              ...styles,\n              option: (styles) => ({\n                ...styles,\n                color: \"black\",\n                backgroundColor: \"white\",\n                \":hover\": {\n                  backgroundColor: \"#80E4DF\",\n                },\n              }),\n            } as StylesConfig\n          }\n          onChange={(selectedOption) => {\n            window.location.href = (selectedOption as ITopic).url!;\n          }}\n        />\n      )}\n    </div>\n  );\n};\n","import { render } from \"react-dom\";\nimport { ElectoralHeader } from \"./ElectoralHeader\";\n\n(() => {\n  const electoralSelect: HTMLSelectElement | undefined = document.querySelector(\n    \"[data-electoral-select]\"\n  ) as HTMLSelectElement;\n\n  if (!electoralSelect) return;\n\n  const {\n    electoralSelectTopics: topics,\n    electoralSelectCopy: copy,\n    electoralSelectCurrent: currentUrl,\n  } = electoralSelect.dataset;\n\n  if (electoralSelect && topics && copy && currentUrl) {\n    render(\n      <ElectoralHeader\n        topics={JSON.parse(topics)}\n        copy={JSON.parse(copy)}\n        currentUrl={JSON.parse(currentUrl)}\n      />,\n      electoralSelect\n    );\n  }\n})();\n","class ElectoralList {\n  active = null;\n\n  constructor(wrapper) {\n    this.currentLang = \"nl\";\n    this.wrapper = wrapper;\n\n    this.initLangToggle();\n    this.addEvent.bind(this);\n  }\n\n  toggleElectoralPartiesLang = (lang) => {\n    const electoralListLists = this.wrapper.querySelectorAll(\n      \".electoral-list__list\"\n    );\n\n    const langPartiesAll = this.wrapper.querySelectorAll(\"[data-party-lang]\");\n    const selectedLangParties = this.wrapper.querySelectorAll(\n      `[data-party-lang-${lang}]`\n    );\n\n    [...langPartiesAll].forEach((el) => {\n      const langParty = el;\n      langParty.parentElement.style.display = \"none\";\n    });\n\n    [...selectedLangParties].forEach((el) => {\n      const selectedLangParty = el;\n      selectedLangParty.parentElement.style.display = \"flex\";\n    });\n\n    [...electoralListLists].forEach((el) => {\n      const electoralListList = el;\n      electoralListList.classList.remove(\"show-people\");\n    });\n\n    this.currentLang = lang;\n  };\n\n  initLangToggle = () => {\n    const langToggle = this.wrapper.querySelector(\"[data-electoral-list-lang]\");\n\n    const electoralPartiesNL = this.wrapper.querySelectorAll(\n      \"[data-party-lang-nl]\"\n    );\n\n    const electoralPartiesFr = this.wrapper.querySelectorAll(\n      \"[data-party-lang-fr]\"\n    );\n\n    if (\n      langToggle &&\n      !!electoralPartiesNL.length &&\n      !!electoralPartiesFr.length\n    ) {\n      const langToggleBtns = this.wrapper.querySelectorAll(\n        \"[data-electoral-list-lang-btn]\"\n      );\n\n      langToggle.style.display = \"block\";\n      this.toggleElectoralPartiesLang(this.currentLang);\n\n      [...langToggleBtns].forEach((langToggleBtn) => {\n        const { lang } = langToggleBtn.dataset;\n\n        if (lang === this.currentLang) {\n          langToggleBtn.classList.add(\"is-active\");\n        }\n\n        langToggleBtn.addEventListener(\"click\", (event) => {\n          event.preventDefault();\n\n          if (lang !== this.currentLang) {\n            this.toggleElectoralPartiesLang(lang);\n\n            [...langToggleBtns].forEach((el) => {\n              el.classList.remove(\"is-active\");\n            });\n\n            langToggleBtn.classList.add(\"is-active\");\n          }\n        });\n      });\n    } else if (\n      electoralPartiesNL.length === 0 &&\n      electoralPartiesFr.length === 0\n    ) {\n      const langToggleBtns = this.wrapper.querySelectorAll(\n        \"[data-electoral-list-lang-btn]\"\n      );\n      const firstLangToggleBtn = langToggleBtns[0];\n\n      if (firstLangToggleBtn) {\n        firstLangToggleBtn.parentElement.parentElement.style.display = \"none\";\n      }\n    }\n  };\n\n  addEvent = (party) => {\n    if (this.active) this.active.classList.remove(\"is-active\");\n\n    if (this.active !== party) {\n      this.active = party;\n      party.classList.add(\"is-active\");\n    } else {\n      this.active = null;\n      party.classList.remove(\"is-active\");\n    }\n  };\n}\n\n(() => {\n  const electoralListWrappers = document.querySelectorAll(\n    \".electoral-list-wrapper\"\n  );\n\n  electoralListWrappers.forEach((electoralListWrapper) => {\n    const electoralList = electoralListWrapper.querySelector(\n      \"[data-electoral-list]\"\n    );\n\n    const electoralListParties = electoralList.querySelectorAll(\n      \"[data-electoral-list-party]\"\n    );\n\n    // Show people when clicking on party image.\n    [...electoralListParties].forEach((electoralListParty) => {\n      electoralListParty.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n\n        electoralListParty.parentElement.classList.toggle(\"show-people\");\n      });\n    });\n\n    new ElectoralList(electoralListWrapper);\n  });\n})();\n","import { formatDate } from \"./DateFormat\";\n\n(() => {\n  const sideloadByUrl = async (url: string) => {\n    const response = await fetch(url, {\n      method: \"GET\",\n    });\n\n    if (response.status !== 200) {\n      return \"\";\n    }\n\n    return response.text();\n  };\n\n  const sideloadTeasers =\n    document.querySelectorAll<HTMLDivElement>(\"[data-wm-js-ajax]\");\n\n  const teasers: { [k: string]: HTMLDivElement[] } = {};\n\n  Array.from(sideloadTeasers).forEach((ajaxTeaser) => {\n    const ajax = ajaxTeaser.dataset[\"wmJsAjax\"];\n\n    if (!ajax) return;\n\n    if (!(ajax in teasers)) {\n      teasers[ajax] = [];\n    }\n\n    teasers[ajax] = [...teasers[ajax], ajaxTeaser];\n  });\n\n  Object.keys(teasers).forEach((url) => {\n    const sideload = async () => {\n      const teaserHtml = await sideloadByUrl(url);\n\n      teasers[url].forEach((el) => {\n        el.outerHTML = teaserHtml;\n      });\n    };\n\n    sideload().then(() => {\n      const dynamicDateElements = document.querySelectorAll<HTMLDivElement>(\n        \"[data-dynamic-date]\"\n      );\n\n      dynamicDateElements.forEach((dynamicDate) => {\n        const { dynamicDate: date } = dynamicDate.dataset;\n        dynamicDate.textContent = formatDate(date || \"\");\n      });\n    });\n  });\n})();\n","export const getFrontDomain = () =>\n  window.frontDomain?.replace(/\\/+$/, \"\") || \"\";\n","export const BASE_URL = ((env = process.env.REACT_APP_APP_ENV) => {\n  switch (env) {\n    case \"dev\":\n    case \"development\": {\n      return \"https://development.bruzz.be\";\n    }\n    case \"stag\":\n    case \"staging\": {\n      return \"https://staging.bruzz.be\";\n    }\n    case \"prod\":\n    case \"production\":\n    default: {\n      return \"https://www.bruzz.be\";\n    }\n  }\n})();\n\nexport const config = {\n  CURRENT_SITE:\n    window.drupalSettings && window.drupalSettings.pageInfo\n      ? window.drupalSettings.pageInfo.site\n      : \"bruzz\",\n  CLEVERCAST: {\n    ACCOUNT_ID: \"WXv1JD\",\n  },\n};\n","const { drupalSettings } = window;\n\nexport const KACHING_SCRIPT_URL = ((env = process.env.REACT_APP_APP_ENV) => {\n  switch (env) {\n    case \"local\":\n    case \"dev\":\n    case \"development\": {\n      return \"https://previewshared.mediahuis.be/ka-ching/bruzz/ka-ching.umd.dev.js\";\n    }\n    case \"stag\":\n    case \"staging\":\n    case \"prod\":\n    case \"production\":\n    default: {\n      return \"https://shared.mediahuis.be/ka-ching/bruzz/ka-ching.umd.js\";\n    }\n  }\n})();\n\nexport const KACHING_CONFIG = {\n  video: true,\n  adunit: `bruzz/${drupalSettings.pageInfo?.type}`,\n  platform: \"www\",\n  targeting: {\n    article_id: drupalSettings.path.currentPath.replace(\"node/\", \"\"),\n    article_taglist: drupalSettings.pageInfo?.tags,\n    /**\n     * There are only three options for `page_type`:\n     * - homepage = \"home\"\n     * - overview page = \"overview\"\n     * - article page = \"detail\"\n     */\n    page_type: drupalSettings.pageInfo?.adPageType,\n    lang: \"nl\",\n    author: drupalSettings.pageInfo?.author,\n  },\n};\n","const generateYearsFrom = (endYear: number) => {\n  let currentYear = new Date().getFullYear();\n  const result = [];\n\n  while (currentYear >= endYear) {\n    result.push(currentYear);\n    currentYear -= 1;\n  }\n\n  return result;\n};\n\nconst years = generateYearsFrom(2004);\n\nconst months = [\n  {\n    label: \"Januari\",\n    value: \"1\",\n  },\n  {\n    label: \"Februari\",\n    value: \"2\",\n  },\n  {\n    label: \"Maart\",\n    value: \"3\",\n  },\n  {\n    label: \"April\",\n    value: \"4\",\n  },\n  {\n    label: \"Mei\",\n    value: \"5\",\n  },\n  {\n    label: \"Juni\",\n    value: \"6\",\n  },\n  {\n    label: \"Juli\",\n    value: \"7\",\n  },\n  {\n    label: \"Augustus\",\n    value: \"8\",\n  },\n  {\n    label: \"September\",\n    value: \"9\",\n  },\n  {\n    label: \"Oktober\",\n    value: \"10\",\n  },\n  {\n    label: \"November\",\n    value: \"11\",\n  },\n  {\n    label: \"December\",\n    value: \"12\",\n  },\n];\n\nconst days = Array.from(new Array(31), (val, index) => index + 1);\n\nexport { days, months, years };\n","import { differenceInMinutes, format, isToday, isYesterday } from \"date-fns\";\nimport { nlBE } from \"date-fns/locale\";\n\nexport const formatDate = (date: string) => {\n  const now = new Date();\n  const parsedDate = new Date(parseInt(date) * 1000);\n  let formattedDate = \"\";\n\n  const diffInMinutes = differenceInMinutes(now, parsedDate);\n\n  const hours = format(parsedDate || now, \"HH\", {\n    locale: nlBE,\n  });\n  const minutes = format(parsedDate || now, \"mm\", {\n    locale: nlBE,\n  });\n\n  const fullDate = format(parsedDate || now, \"dd/MM/yyyy\", {\n    locale: nlBE,\n  });\n\n  if (diffInMinutes <= 15) {\n    formattedDate = \"Net binnen\";\n  } else if (diffInMinutes <= 60) {\n    formattedDate = `${hours}.${minutes}u`;\n  } else if (isToday(parsedDate)) {\n    formattedDate = `Vandaag ${hours}.${minutes}u`;\n  } else if (isYesterday(parsedDate)) {\n    formattedDate = `Gisteren ${hours}.${minutes}u`;\n  } else {\n    formattedDate = `${fullDate} ${hours}.${minutes}u`;\n  }\n\n  return formattedDate;\n};\n\nexport const formatTimelineDate = (date: number) => {\n  let formattedDate = format(new Date(date), \"dd/MM/yyyy\", {\n    locale: nlBE,\n  });\n\n  if (isToday(date)) {\n    formattedDate = \"Vandaag\";\n  } else if (isYesterday(date)) {\n    formattedDate = \"Gisteren \";\n  }\n\n  return formattedDate;\n};\n","import { FC } from \"react\";\n\nconst RatingStar = () => (\n  <span className=\"teaser__star\">\n    <svg\n      width=\"10\"\n      height=\"10\"\n      viewBox=\"0 0 10 10\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fill=\"currentColor\"\n        d=\"m5 0 1.176 3.382 3.58.073-2.854 2.163L7.94 9.045 5 7 2.061 9.045l1.037-3.427L.245 3.455l3.58-.073L5 0Z\"\n      />\n    </svg>\n  </span>\n);\n\ninterface Props {\n  rating: number;\n}\n\nexport const TeaserRating: FC<Props> = ({ rating }) => {\n  const SCORE = 5;\n\n  const renderStars = () => {\n    const numberOfStarsArray = Array(...Array(Number(rating)));\n\n    return numberOfStarsArray.map((item, index) => <RatingStar key={index} />);\n  };\n\n  const renderEmptyStars = () => {\n    const numberOfStarsArray = Array(...Array(Number(SCORE - rating)));\n\n    return numberOfStarsArray.map((item, index) => <RatingStar key={index} />);\n  };\n\n  return (\n    <div className=\"label__rating\">\n      {renderStars()}\n      {renderEmptyStars()}\n    </div>\n  );\n};\n","import { FC } from \"react\";\n\nimport { formatDate } from \"utils\";\n\nimport { TeaserRating } from \"./TeaserRating\";\n\ninterface Props {\n  url: string;\n  image: string;\n  label: string;\n  topic?: string;\n  category?: string;\n  location?: string;\n  title: string;\n  body?: string[];\n  date?: number;\n  dateString?: string;\n  type?: string;\n  rating?: number;\n}\n\nexport const Teaser: FC<Props> = ({\n  url,\n  image,\n  label,\n  topic,\n  category,\n  location,\n  title,\n  body,\n  date,\n  dateString,\n  type,\n  rating,\n}) => {\n  const formattedDate = date ? formatDate(date.toString()) : null;\n\n  return (\n    <a\n      href={url}\n      className=\"teaser teaser--variant-horizontal teaser--type-article\"\n    >\n      <div className=\"teaser__media\">\n        <img src={image} width=\"693\" height=\"544\" alt=\"\" loading=\"lazy\" />\n        {rating && (\n          <div className=\"label label--small label--absolute label--no-shadow\">\n            <div className=\"label__bg\" />\n            <div className=\"label__inner\">\n              <TeaserRating rating={rating} />\n            </div>\n          </div>\n        )}\n        {type === \"video\" && (\n          <div className=\"teaser__play\">\n            <svg\n              width=\"40\"\n              height=\"41\"\n              viewBox=\"0 0 40 41\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M15 29.332L29 20.332L15 11.332V29.332ZM20 40.332C17.2333 40.332 14.6333 39.807 12.2 38.757C9.76667 37.707 7.65 36.282 5.85 34.482C4.05 32.682 2.625 30.5654 1.575 28.132C0.525 25.6987 0 23.0987 0 20.332C0 17.5654 0.525 14.9654 1.575 12.532C2.625 10.0987 4.05 7.98203 5.85 6.18203C7.65 4.38203 9.76667 2.95703 12.2 1.90703C14.6333 0.857031 17.2333 0.332031 20 0.332031C22.7667 0.332031 25.3667 0.857031 27.8 1.90703C30.2333 2.95703 32.35 4.38203 34.15 6.18203C35.95 7.98203 37.375 10.0987 38.425 12.532C39.475 14.9654 40 17.5654 40 20.332C40 23.0987 39.475 25.6987 38.425 28.132C37.375 30.5654 35.95 32.682 34.15 34.482C32.35 36.282 30.2333 37.707 27.8 38.757C25.3667 39.807 22.7667 40.332 20 40.332ZM20 36.332C24.4667 36.332 28.25 34.782 31.35 31.682C34.45 28.582 36 24.7987 36 20.332C36 15.8654 34.45 12.082 31.35 8.98203C28.25 5.88203 24.4667 4.33203 20 4.33203C15.5333 4.33203 11.75 5.88203 8.65 8.98203C5.55 12.082 4 15.8654 4 20.332C4 24.7987 5.55 28.582 8.65 31.682C11.75 34.782 15.5333 36.332 20 36.332Z\"\n                fill=\"white\"\n              />\n            </svg>\n          </div>\n        )}\n      </div>\n      <div className=\"teaser__content\">\n        {label && (\n          <div className=\"label label--small\">\n            <div className=\"label__bg\" />\n            <div className=\"label__inner\">{label}</div>\n          </div>\n        )}\n        <h3 className=\"teaser__title\">{title}</h3>\n        {body && body[0] && (\n          <div\n            className=\"teaser__description\"\n            dangerouslySetInnerHTML={{ __html: body[0] }}\n          />\n        )}\n        <div className=\"meta\">\n          {label && (\n            <div className=\"meta__item\">\n              <span>{label}</span>\n            </div>\n          )}\n          {category && (\n            <div className=\"meta__item\">\n              <span>{category}</span>\n            </div>\n          )}\n          {location && (\n            <div className=\"meta__item\">\n              <span>{location}</span>\n            </div>\n          )}\n          {topic && (\n            <div className=\"meta__item\">\n              <span>{topic}</span>\n            </div>\n          )}\n          {formattedDate && (\n            <div className=\"meta__item\">\n              <span>{formattedDate}</span>\n            </div>\n          )}\n          {dateString && (\n            <div className=\"meta__item\">\n              <span>{dateString}</span>\n            </div>\n          )}\n        </div>\n      </div>\n    </a>\n  );\n};\n"],"sourceRoot":""}