1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9093],{35603:()=>{},89093:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>z});var n=r(95155),a=r(12115),l=r(55027);function i(e,t){return Object.freeze({...e,...t})}let s=(0,a.createContext)(null);function o(){let e=(0,a.use)(s);if(null==e)throw Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return e}let u=(0,a.forwardRef)(function({bounds:e,boundsOptions:t,center:r,children:n,className:i,id:o,placeholder:u,style:c,whenReady:d,zoom:p,...f},m){let[h]=(0,a.useState)({className:i,id:o,style:c}),[v,b]=(0,a.useState)(null),g=(0,a.useRef)(void 0);(0,a.useImperativeHandle)(m,()=>v?.map??null,[v]);let x=(0,a.useCallback)(n=>{if(null!==n&&!g.current){let a=new l.Map(n,f);g.current=a,null!=r&&null!=p?a.setView(r,p):null!=e&&a.fitBounds(e,t),null!=d&&a.whenReady(d),b(Object.freeze({__version:1,map:a}))}},[]);(0,a.useEffect)(()=>()=>{v?.map.remove()},[v]);let y=v?a.createElement(s,{value:v},n):u??null;return a.createElement("div",{...h,ref:x},y)});var c=r(47650);function d(e,t){let r=(0,a.useRef)(t);(0,a.useEffect)(function(){t!==r.current&&null!=e.attributionControl&&(null!=r.current&&e.attributionControl.removeAttribution(r.current),null!=t&&e.attributionControl.addAttribution(t)),r.current=t},[e,t])}function p(e,t){let r=(0,a.useRef)(void 0);(0,a.useEffect)(function(){return null!=t&&e.instance.on(t),r.current=t,function(){null!=r.current&&e.instance.off(r.current),r.current=null}},[e,t])}function f(e,t){let r=e.pane??t.pane;return r?{...e,pane:r}:e}function m(e,t,r){return Object.freeze({instance:e,context:t,container:r})}function h(e,t){return null==t?function(t,r){let n=(0,a.useRef)(void 0);return n.current||(n.current=e(t,r)),n}:function(r,n){let l=(0,a.useRef)(void 0);l.current||(l.current=e(r,n));let i=(0,a.useRef)(r),{instance:s}=l.current;return(0,a.useEffect)(function(){i.current!==r&&(t(s,r,i.current),i.current=r)},[s,r,t]),l}}function v(e,t){(0,a.useEffect)(function(){return(t.layerContainer??t.map).addLayer(e.instance),function(){t.layerContainer?.removeLayer(e.instance),t.map.removeLayer(e.instance)}},[t,e])}function b(e,t){var r,n;return r=h(e,t),n=function(e){let t=o(),n=r(f(e,t),t);p(n.current,e.eventHandlers),v(n.current,t);var l=n.current;let i=(0,a.useRef)(void 0);return(0,a.useEffect)(function(){if(e.pathOptions!==i.current){let t=e.pathOptions??{};l.instance.setStyle(t),i.current=t}},[l,e]),n},(0,a.forwardRef)(function(e,t){let{instance:r,context:l}=n(e).current;(0,a.useImperativeHandle)(t,()=>r);let{children:i}=e;return null==i?null:a.createElement(s,{value:l},i)})}let g=function(e,t){var r,n;return r=h(e,t),n=function(e){let t=o(),n=r(f(e,t),t);return d(t.map,e.attribution),p(n.current,e.eventHandlers),v(n.current,t),n},(0,a.forwardRef)(function(e,t){let{instance:r}=n(e).current;return(0,a.useImperativeHandle)(t,()=>r),null})}(function({url:e,...t},r){return m(new l.TileLayer(e,f(t,r)),r)},function(e,t,r){let{opacity:n,zIndex:a}=t;null!=n&&n!==r.opacity&&e.setOpacity(n),null!=a&&a!==r.zIndex&&e.setZIndex(a);let{url:l}=t;null!=l&&l!==r.url&&e.setUrl(l)}),x=b(function({data:e,...t},r){let n=new l.GeoJSON(e,t);return m(n,i(r,{overlayContainer:n}))},function(e,t,r){t.style!==r.style&&(null==t.style?e.resetStyle():e.setStyle(t.style))}),y=b(function({center:e,children:t,...r},n){let a=new l.CircleMarker(e,r);return m(a,i(n,{overlayContainer:a}))},function(e,t,r){t.center!==r.center&&e.setLatLng(t.center),null!=t.radius&&t.radius!==r.radius&&e.setRadius(t.radius)}),w=function(e,t){var r,n;return r=h(e),n=function(e,n){let a=o(),l=r(f(e,a),a);return d(a.map,e.attribution),p(l.current,e.eventHandlers),t(l.current,a,e,n),l},(0,a.forwardRef)(function(e,t){let[r,l]=(0,a.useState)(!1),{instance:i}=n(e,l).current;(0,a.useImperativeHandle)(t,()=>i),(0,a.useEffect)(function(){r&&i.update()},[i,r,e.children]);let s=i._contentNode;return s?(0,c.createPortal)(e.children,s):null})}(function(e,t){return m(new l.Tooltip(e,t.overlayContainer),t)},function(e,t,{position:r},n){(0,a.useEffect)(function(){let a=t.overlayContainer;if(null==a)return;let{instance:l}=e,i=e=>
1{e.tooltip===l&&(null!=r&&l.setLatLng(r),l.update(),n(!0))},s=e=>{e.tooltip===l&&n(!1)};return a.on({tooltipopen:i,tooltipclose:s}),a.bindTooltip(l),function(){a.off({tooltipopen:i,tooltipclose:s}),null!=a._map&&a.unbindTooltip()}},[e,t,n,r])});r(35603);var j=r(93499);let N=new Set(["belgium","bulgaria","croatia","czechia","denmark","estonia","germany","hungary","ireland","italy","latvia","lithuania","poland","slovakia","spain","sweden"]);function k(e){return"eu"===e||N.has(e)}var S=r(46185);let E=[22,11],C={ARG:"argentina",AUS:"australia",BEL:"belgium",BGR:"bulgaria",BLR:"belarus",HRV:"croatia",CZE:"czechia",DEU:"germany",DNK:"denmark",ESP:"spain",EST:"estonia",GBR:"united-kingdom",HUN:"hungary",IRL:"ireland",ITA:"italy",KGZ:"kyrgyzstan",LTU:"lithuania",LVA:"latvia",MDA:"moldova",MKD:"north-macedonia",PHL:"philippines",POL:"poland",QAT:"qatar",RUS:"russia",SRB:"serbia",SVK:"slovakia",SWE:"sweden",UKR:"ukraine",USA:"united-states"},R={argentina:"argentina",australia:"australia",belarus:"belarus",belgium:"belgium",bulgaria:"bulgaria",croatia:"croatia","czech republic":"czechia",denmark:"denmark",estonia:"estonia",germany:"germany",hungary:"hungary",ireland:"ireland",italy:"italy",kyrgyzstan:"kyrgyzstan",latvia:"latvia",lithuania:"lithuania",moldova:"moldova","north macedonia":"north-macedonia",philippines:"philippines",poland:"poland",qatar:"qatar","republic of serbia":"serbia",russia:"russia",serbia:"serbia",slovakia:"slovakia",spain:"spain",sweden:"sweden",ukraine:"ukraine","united kingdom":"united-kingdom","united states of america":"united-states"};function I(e,t){return!!e&&(e===t||"eu"===t&&k(e))}function T(e){let{activeCountry:t,countryShapes:r}=e,n=o().map,i=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{if(!i.current){i.current=!0;return}if(!r)return void n.flyTo(t.coordinates,3,{animate:!0,duration:.9});let e=r.features.find(e=>{var r;return(null==(r=e.properties)?void 0:r.mapId)===t.id});if(e){let t=(0,l.geoJSON)(e).getBounds();if(t.isValid())return void n.flyToBounds(t,{animate:!0,duration:.9,maxZoom:3,padding:[96,96]})}if("eu"===t.id){let e=r.features.filter(e=>{var t,r;return k(null!=(r=null==(t=e.properties)?void 0:t.mapId)?r:"")});if(e.length>0){let t=(0,l.geoJSON)({type:"FeatureCollection",features:e}).getBounds();if(t.isValid())return void n.flyToBounds(t,{animate:!0,duration:.9,maxZoom:3,padding:[96,96]})}}n.flyTo(t.coordinates,3,{animate:!0,duration:.9})},[t,r,n]),null}function L(e){let{alt:t,resolvedSrc:r,priority:l}=e,[i,s]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{s(!1)},[r]),void 0===r)?(0,n.jsx)("div",{className:"absolute inset-0 animate-pulse bg-gradient-to-br from-slate-100 via-slate-50 to-blue-50"}):null===r||i?(0,n.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-slate-200 via-slate-100 to-blue-100"}):(0,n.jsx)("img",{src:r,alt:t,className:"absolute inset-0 h-full w-full object-cover",loading:l?"eager":"lazy",decoding:"async",referrerPolicy:"no-referrer",onError:()=>s(!0)})}function O(e){let{item:t,countryName:r,imageSrc:a,imagePriority:l}=e;return(0,n.jsx)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"group block",children:(0,n.jsxs)(S.Zp,{className:"overflow-hidden border-slate-200 bg-white shadow-md transition-all duration-300 hover:-translate-y-1 hover:shadow-xl",children:[(0,n.jsxs)("div",{className:"relative aspect-[16/10] overflow-hidden",children:[(0,n.jsx)(L,{alt:t.title,resolvedSrc:a,priority:l}),(0,n.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent"}),(0,n.jsxs)("div",{className:"absolute inset-0 flex flex-col justify-between p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,n.jsx)("span",{className:"inline-flex items-center rounded-full bg-white/90 px-3 py-1 text-xs font-medium uppercase tracking-[0.12em] text-slate-800 backdrop-blur-sm",children:t.mediaType}),(0,n.jsx)("span",{className:"inline-flex items-center rounded-full border border-white/40 bg-white/90 px-3 py-1 text-xs font-medium text-slate-800 backdrop-blur-sm",children:r})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"mb-1.5 text-sm font-medium !text-white opacity-90 drop-shadow-md",children:t.publication}),(0,n.jsx)("h3",{className:"line-clamp-2 text-lg font-semibold leading-snug !text-white drop-shadow-md",children:t.title})]})]})]}),(0,n.jsxs)(S.Wu,{className:"pt-4 pb-4",children:[(0,n.jsxs)("div",{className:"mb-3 flex flex-wrap gap-2 text-xs",children:[(0,n.jsx)("span",{className:"rounded-full bg-slate-100 px-2.5 py-1 text-slate-700",children:function(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat("en",{month:"short",day:"numeric",year:"numeric"}).format(t)}(t.date)}),t.author?(0,n.jsx)("span",{className:"rounded-full bg-slate-100 px-2.5 py-1 text-slate-700",children:t.author}):null]}),(0,n.jsxs)("span",{className:"inline-flex items-center gap-2 text-sm font-medium text-blue-600 transition-colors group-hover:text-blue-700",children:["Read coverage",(0,n.jsx)(j.A,{className:"h-4 w-4 transition-transform group-hover:translate-x-0.5"})]})]})]})})}function z(){let[e,t]=(0,a.useState)("loading"),[r,l]=(0,a.useState)([]),[i,s]=(0,a.useState)(""),[o,c]=(0,a.useState)({}),[d,p]=(0,a.useState)(null),f=(0,a.useMemo)(()=>(function(e,t){if(!e)return null;let r=new Set(t.map(e=>e.id)),n=e.features.map(e=>(function(e){let t=function(e){var t,r;if(null==(t=e.properties)?void 0:t.mapId)return e.properties.mapId;let n=null==(r=e.properties)?void 0:r.name;if(n){let e=R[n.trim().toLowerCase()];if(e)return e}let a="string"==typeof e.id?e.id.toUpperCase():void 0;if(a&&C[a])return C[a]}(e);return t?{...e,properties:{...e.properties,mapId:t}}:e})(e)).filter(e=>{var t;let n=null==(t=e.properties)?void 0:t.mapId;return!!(n&&r.has(n))}),a=new Set(n.map(e=>{var t;return null==(t=e.properties)?void 0:t.mapId}).filter(e=>!!e));return{...e,features:n.filter(e=>{var t;let r=null==(t=e.properties)?void 0:t.mapId;return!!(r&&a.has(r))})}})(d,r),[d,r]),m=(0,a.useMemo)(()=>{var e;return new Set(null!=(e=null==f?void 0:f.features.map(e=>{var t;return null==(t=e.properties)?void 0:t.mapId}).filter(e=>!!e))?e:[])},[f]),h=(0,a.useMemo)(()=>r.filter(e=>!m.has(e.id)),[r,m]),v=(0,a.useMemo)(()=>new Set(r.map(e=>e.id)),[r]),b=(0,a.useMemo)(()=>{var e;return null!=(e=r.find(e=>e.id===i))?e:r[0]},[i,r]),j=(0,a.useMemo)(()=>r.reduce((e,t)=>
1(e[t.id]=t.items.length,e),{}),[r]);return((0,a.useEffect)(()=>{let e=!1;return fetch("/api/public/media-coverage").then(e=>{if(!e.ok)throw Error("Failed to load media coverage.");return e.json()}).then(r=>{if(e)return;let n=Array.isArray(r.data)?r.data:[];l(n),t("ready"),s(e=>{var t,r;return 0===n.length?"":n.some(t=>t.id===e)?e:null!=(r=null==(t=n[0])?void 0:t.id)?r:""})}).catch(()=>{e||(l([]),s(""),t("error"))}),()=>{e=!0}},[]),(0,a.useEffect)(()=>{let e=!1;return fetch("/data/media-coverage-countries.geo.json").then(e=>e.json()).then(t=>{e||p(t)}).catch(()=>{e||p(null)}),()=>{e=!0}},[]),(0,a.useEffect)(()=>{var e,t;!i||r.some(e=>e.id===i)||s(null!=(t=null==(e=r[0])?void 0:e.id)?t:"")},[i,r]),(0,a.useEffect)(()=>{if(!b)return;let e=b.items.filter(e=>!e.ogImage).map(e=>e.url);if(0===e.length)return void c({});let t=!1;return c({}),fetch("/api/og-image",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({urls:e})}).then(e=>e.json()).then(e=>{var r;t||c(null!=(r=e.images)?r:{})}).catch(()=>{t||c({})}),()=>{t=!0}},[b]),"loading"===e)?(0,n.jsx)(S.Zp,{className:"border-slate-200 bg-white",children:(0,n.jsx)(S.Wu,{className:"pt-5",children:(0,n.jsx)("p",{className:"text-base text-slate-600",children:"Loading media coverageâ¦"})})}):"error"===e?(0,n.jsx)(S.Zp,{className:"border-slate-200 bg-white",children:(0,n.jsx)(S.Wu,{className:"pt-5",children:(0,n.jsx)("p",{className:"text-base text-slate-600",children:"Media coverage could not be loaded. Please try again later."})})}):b&&0!==r.length?(0,n.jsxs)("div",{className:"space-y-8",children:[(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsx)("div",{className:"overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-lg",children:(0,n.jsxs)(u,{center:E,zoom:1.75,minZoom:1.5,maxZoom:6,zoomSnap:.25,zoomDelta:.5,scrollWheelZoom:!1,style:{height:"560px",width:"100%"},children:[(0,n.jsx)(g,{attribution:'\xa9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors \xa9 <a href="https://carto.com/attributions">CARTO</a>',url:"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",detectRetina:!0}),(0,n.jsx)(T,{activeCountry:b,countryShapes:f}),f?(0,n.jsx)(x,{data:f,style:e=>{var t,r;return{fillColor:(r=I(null==e||null==(t=e.properties)?void 0:t.mapId,b.id))?"#2563eb":"#93c5fd",color:r?"#1d4ed8":"#60a5fa",weight:r?2.5:1.5,opacity:1,fillOpacity:r?.5:.22}},onEachFeature:(e,t)=>{var n,a,l,i,o,u;let c=null==(n=e.properties)?void 0:n.mapId;if(!c||!v.has(c))return;let d=null!=(i=j[c])?i:0,p=null!=(u=null!=(o=null==(a=r.find(e=>e.id===c))?void 0:a.name)?o:null==(l=e.properties)?void 0:l.name)?u:"Country";t.on({click:()=>s(c)}),t.bindTooltip('<div class="min-w-[160px]"><p class="mb-1 font-medium text-slate-800">'.concat(p,'</p><p class="text-sm text-slate-600">').concat(d," media piece").concat(1===d?"":"s","</p></div>"),{direction:"top",sticky:!0})}},b.id):null,h.map(e=>{var t;let r=I(e.id,b.id),a=null!=(t=j[e.id])?t:0;return(0,n.jsx)(y,{center:e.coordinates,radius:r?10:8,pathOptions:{fillColor:r?"#2563eb":"#ffffff",color:r?"#1d4ed8":"#2563eb",weight:r?3:2,opacity:1,fillOpacity:r?.95:.9},eventHandlers:{click:()=>s(e.id)},children:(0,n.jsx)(w,{direction:"top",offset:[0,-10],sticky:!0,children:(0,n.jsxs)("div",{className:"min-w-[160px]",children:[(0,n.jsx)("p",{className:"mb-1 font-medium text-slate-800",children:e.name}),(0,n.jsxs)("p",{className:"text-sm text-slate-600",children:[a," media piece",1===a?"":"s"]})]})})},"fallback-country-".concat(e.id))})]})}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2",children:r.map(e=>{let t=e.id===b.id;return(0,n.jsxs)("button",{type:"button",onClick:()=>s(e.id),className:"rounded-full border px-4 py-2 text-sm font-medium transition-colors ".concat(t?"border-blue-600 bg-blue-600 !text-white shadow-sm":"border-slate-200 bg-white text-slate-700 hover:border-slate-300 hover:bg-slate-50"),children:[e.name," (",e.items.length,")"]},e.id)})})]}),(0,n.jsx)("div",{className:"grid gap-6 md:grid-cols-2 xl:grid-cols-3",children:b.items.map((e,t)=>{var r;return(0,n.jsx)("div",{id:"coverage-card-".concat(e.id),children:(0,n.jsx)(O,{item:e,countryName:b.name,imageSrc:null!=(r=e.ogImage)?r:o[e.url],imagePriority:t<3})},e.id)})})]}):(0,n.jsx)(S.Zp,{className:"border-slate-200 bg-white",children:(0,n.jsx)(S.Wu,{className:"pt-5",children:(0,n.jsxs)("p",{className:"text-base text-slate-600",children:["No published media coverage yet. Add rows in the spreadsheet and set ",(0,n.jsx)("strong",{children:"Website publication"})," ","(e.g. ",(0,n.jsx)("strong",{children:"x"}),") for rows that should appear here."]})})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.