1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4850],{8028:e=>{e.exports={shipPopup:"styles_shipPopup__iVHul",shipLabel:"styles_shipLabel__3YW7t",shipInfo:"styles_shipInfo__Lk4Qd",infoRow:"styles_infoRow__sdpMk",infoLabel:"styles_infoLabel__BgUkZ",infoValue:"styles_infoValue__jKa99",estimatedBadge:"styles_estimatedBadge__lMn_H",trackButtonContainer:"styles_trackButtonContainer__ILXQL"}},8879:e=>{e.exports={customMarker:"styles_customMarker__w2RVM",customCircleMarker:"styles_customCircleMarker__y6eNX",portPopup:"styles_portPopup__cHiic",portInfo:"styles_portInfo__9cSSb",coordinates:"styles_coordinates__Kffty",popupContent:"styles_popupContent__1q2h_"}},16701:(e,t,r)=>{"use strict";r.d(t,{A:()=>p,G7:()=>S,G9:()=>g,Gu:()=>l,HX:()=>d,KQ:()=>f,Km:()=>w,RT:()=>A,S2:()=>y,TE:()=>o,Vr:()=>x,ZN:()=>i,_v:()=>c,co:()=>_,f6:()=>Y,gd:()=>m,ji:()=>v,lI:()=>u,li:()=>h,nV:()=>N,np:()=>E,pE:()=>k,sH:()=>R,td:()=>b});var a=r(97923),n=r(39012),s=r(83996);let c=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.VOYAGES;case s.tY.frFR:return n.nA.VOYAGES;case s.tY.svSE:return n.yx.VOYAGES;case s.tY.daDK:return n.qk.VOYAGES;case s.tY.nbNO:return n.SY.VOYAGES;default:return n.yv.VOYAGES}},i=e=>{switch(e){case s.tY.enUS:return"pre-and-post-programs";case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"vor-und-nachprogramme";case s.tY.svSE:return"foerlaeng-din-resa";case s.tY.daDK:return"forlaeng-din-rejse";case s.tY.nbNO:return"forleng-din-reise";default:return"programmes"}},o=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"landausfluege";case s.tY.svSE:return"utflykter";case s.tY.daDK:return"udflugter";case s.tY.nbNO:return"utflukter";default:return"excursions"}},l=(e,t)=>e===a.Mr.Excursion?o(t):i(t),u=e=>{switch(e){case s.tY.svSE:return"tillval";case s.tY.daDK:return"tilkob";case s.tY.nbNO:return"ekstra";default:return"extras"}},d=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"planen";case s.tY.frFR:return"planifier";case s.tY.svSE:return"planera";case s.tY.daDK:return"planlaeg";case s.tY.nbNO:return"planlegg";default:return"plan"}},p=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"entdecken";case s.tY.frFR:return"parcourir";case s.tY.svSE:return"utforska";case s.tY.daDK:return"udforsk";case s.tY.nbNO:return"utforsk";default:return"browse"}},m=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"zusammenfassung";case s.tY.frFR:return"recapitulatif";case s.tY.svSE:return"sammanfattning";case s.tY.daDK:return"opsummering";case s.tY.nbNO:return"oppsummering";default:return"review"}},h=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.OFFERS;case s.tY.frFR:return n.nA.OFFERS;case s.tY.svSE:return n.yx.OFFERS;case s.tY.daDK:return n.qk.OFFERS;case s.tY.nbNO:return n.SY.OFFERS;default:return n.yv.OFFERS}},f=e=>{switch(e){case s.tY.svSE:return n.yx.PORTS;case s.tY.nbNO:return n.SY.PORTS;case s.tY.daDK:return n.qk.PORTS;case s.tY.deCH:case s.tY.deDE:case s.tY.deAT:return n.oR.PORTS;case s.tY.frFR:return n.nA.PORTS;default:return n.yv.PORTS}},Y=e=>{switch(e){case s.tY.deCH:case s.tY.deDE:case s.tY.deAT:return"von-hafen-zu-hafen";case s.tY.daDK:case s.tY.nbNO:return"havn-til-havn";case s.tY.svSE:return"hamn-till-hamn";case s.tY.frFR:return"de-port-en-port";default:return"port-to-port"}},g=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.HELP_CENTER;case s.tY.frFR:return n.nA.HELP_CENTER;case s.tY.svSE:return n.yx.HELP_CENTER;case s.tY.daDK:return n.qk.HELP_CENTER;case s.tY.nbNO:return n.SY.HELP_CENTER;default:return n.yv.HELP_CENTER}},E=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.SHIPS;case s.tY.frFR:return n.nA.SHIPS;case s.tY.svSE:return n.yx.SHIPS;case s.tY.daDK:return n.qk.SHIPS;case s.tY.nbNO:return n.SY.SHIPS;default:return n.yv.SHIPS}},v=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.BROCHURES;case s.tY.frFR:return n.nA.BROCHURES;case s.tY.svSE:return n.yx.BROCHURES;case s.tY.daDK:return n.qk.BROCHURES;case s.tY.nbNO:return n.SY.BROCHURES;default:return n.yv.BROCHURES}},S=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"persoenliche-daten";case s.tY.frFR:return"contact";case s.tY.svSE:return"personuppgifter";case s.tY.daDK:return"personlige-oplysninger";case s.tY.nbNO:default:return"personalia"}},R=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"bestellen";case s.tY.frFR:return"commande";case s.tY.svSE:return"bestallning";case s.tY.daDK:case s.tY.nbNO:return"bestilling";default:return"order"}},x=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"bestaetigung";case s.tY.svSE:case s.tY.daDK:return"bekraftelse";case s.tY.nbNO:return"bekreftelse";default:return"confirmation"}},N=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"buchung";case s.tY.frFR:return"reservation";case s.tY.nbNO:return"bestilling";case s.tY.svSE:return"bokning";default:return"booking"}},b=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"k
1abine";case s.tY.frFR:return"cabine";case s.tY.nbNO:return"lugar";case s.tY.svSE:return"hytt";case s.tY.daDK:return"kahyt";default:return"cabin"}},w=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:case s.tY.nbNO:case s.tY.daDK:return"check-out";case s.tY.frFR:return"verifier";case s.tY.svSE:return"utcheckning";default:return"checkout"}},k=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"klassische-postschiffroute";case s.tY.frFR:return"express-cotier";case s.tY.nbNO:return"originale-kystreisen";case s.tY.svSE:return"klassiska-kustresan";case s.tY.daDK:return"originale-kystrejse";default:return"coastal"}},A=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return"reiseverlauf";case s.tY.svSE:return"resplan";case s.tY.daDK:return"rejseplan";case s.tY.nbNO:return"reiserute";case s.tY.frFR:return"itineraire";default:return"itinerary"}},_=e=>{switch(e){case s.tY.daDK:case s.tY.nbNO:case s.tY.svSE:case s.tY.frFR:default:return"agents"}},y=e=>{switch(e){case s.tY.deDE:case s.tY.deAT:case s.tY.deCH:return n.oR.HELP_CENTER_NEW;case s.tY.frFR:return n.nA.HELP_CENTER_NEW;case s.tY.svSE:return n.yx.HELP_CENTER_NEW;case s.tY.daDK:return n.qk.HELP_CENTER_NEW;case s.tY.nbNO:return n.SY.HELP_CENTER_NEW;default:return n.yv.HELP_CENTER_NEW}}},34850:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>K});var a=r(95155);r(30050);var n=r(12115),s=r(37736),c=r(33418),i=r(86315),o=r(10514),l=r(16701);let u=(e,t,r)=>{let a=new Date(e.msgtime),n=((r?new Date(r):new Date).getTime()-a.getTime())/36e5,s=e.speedOverGround*n;if(s<1e-4)return[e.latitude,e.longitude];let c=e.courseOverGround*Math.PI/180,i=s*Math.cos(c)/60,o=s*Math.sin(c)/(60*Math.cos(e.latitude*Math.PI/180)),l=e.latitude+i,u=e.longitude+o;if(t&&t.length>0){let e=1/0,r=null;t.forEach(t=>{t.coordinates.forEach(t=>{let[a,n]=Array.isArray(t)?t:[t.lat,t.lng],s=Math.sqrt(((l-a)*60)**2+((u-n)*60*Math.cos(a*Math.PI/180))**2);s<e&&(e=s,r=[a,n])})}),r&&e<5&&(l=.8*l+.2*r[0],u=.8*u+.2*r[1])}return[l,u]},d={DEFAULT_ZOOM:6,NORWAY_CENTER:[60.4720234,8.4689454],NORWAY_BOUNDS:[[71.18811,4.99208],[57.80968,31.15636]],TILE_LAYER_URL:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"};var p=r(27036),m=r(45687);let h=()=>(0,a.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"13.2",height:"29.1",viewBox:"0 0 13.2 29.1",xmlSpace:"preserve",children:[(0,a.jsx)("path",{fill:"#FFF",d:"M6.6.6C4.8.6.5 12 .5 12v14.2c0 1.3 1 2.3 2.3 2.3h3.8V.6z"}),(0,a.jsx)("path",{fill:"#D72324",d:"M6.6.6v28s2.2-.4 3-.1V4.9C8.7 2.6 7.5.6 6.7.6z"}),(0,a.jsx)("path",{fill:"#19191A",d:"M12.7 26.3V12.1s-1.4-3.9-3-7.1v23.5a2.2 2.2 0 0 0 3-2.1z"}),(0,a.jsx)("path",{fill:"none",stroke:"#19191A",strokeMiterlimit:"10",d:"M12.7 12S8.4.5 6.6.5C4.8.5.5 12 .5 12V26.3c0 1.3 1 2.3 2.3 2.3h7.7c1.3 0 2.2-1 2.2-2.3V12z"}),(0,a.jsx)("path",{fill:"#19191A",d:"M3 14.3h2v2H3zM3 17.6h2v2H3zM3 20.8h2v2H3z"})]}),f=e=>{let{size:t}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 ".concat(t," ").concat(t),children:(0,a.jsx)("circle",{cx:t/2,cy:t/2,r:t/2-1,fill:"#D72324",stroke:"#19191A",strokeWidth:"2"})})};var Y=r(85551);let g=e=>{let{position:t="bottomleft"}=e,r=(0,Y.ko)();return(0,n.useEffect)(()=>{let e=p.control.attribution({position:t}),a=new Date().getFullYear();return e.addAttribution("Hurtigruten © ".concat(a,' • <a href="https://www.barentswatch.no" target="_blank" rel="noopener noreferrer">BarentsWatch</a>')),e.addAttribution('© <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap</a> contributors'),e.setPrefix(""),e.addTo(r),()=>{r.removeControl(e)}},[r,t]),null},E=e=>{let{bounds:t}=e,r=(0,Y.ko)();return(0,n.useEffect)(()=>{r.fitBounds(t)},[r,t]),null};var v=r(12669),S=r(57934),R=r(28045);let x=e=>{let{position:t="bottomleft"}=e,r=(0,S.W)(R.GB,e=>e.coastalMap),s=(0,Y.ko)();return(0,n.useEffect)(()=>{let e=new p.Control({position:t});return e.onAdd=()=>{let e=p.DomUtil.create("div","map-legend");return e.setAttribute("role","contentinfo"),e.setAttribute("aria-label","Map legend"),(0,v.createRoot)(e).render((0,a.jsxs)("div",{className:"map-legend-content",children:[(0,a.jsxs)("div",{className:"map-legend-item",children:[(0,a.jsx)("span",{className:"map-legend-icon","aria-hidden":"true",style:{transform:"rotate(90deg) scale(1.3)"},children:(0,a.jsx)(h,{})}),(0,a.jsx)("span",{className:"map-legend-label",children:r(e=>e.shipLegend)})]}),(0,a.jsxs)("div",{className:"map-legend-item",children:[(0,a.jsx)("span",{className:"map-legend-icon","aria-hidden":"true",children:(0,a.jsx)(f,{size:18})}),(0,a.jsx)("span",{className:"map-legend-label",children:r(e=>
1e.dockLegend)})]})]})),e},e.addTo(s),()=>{s.removeControl(e)}},[s,t,r]),null};var N=r(78395),b=r(80369);let w=e=>{let t=e.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-");return t.startsWith("ms-")?t:"ms-".concat(t)};var k=r(8879),A=r.n(k);let _=e=>{let{ports:t,markerSize:r,locale:n,portsUri:s}=e;return(null==t?void 0:t.length)?(0,a.jsx)(a.Fragment,{children:t.map(e=>{let t=e.stop_name.toLowerCase().trim().replace(/ae/g,"ae").replace(/o/g,"o").replace(/a/g,"a").replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-"),c="/".concat(n,"/").concat(s,"/").concat(t);return(0,a.jsx)(N.p,{position:[e.lat,e.lon],icon:((e,t)=>(0,p.divIcon)({className:"",html:'<div class="'.concat(t,'" style="width:').concat(e,"px; height:").concat(e,'px"></div>'),iconSize:[e,e+8],iconAnchor:[e/2,e+8],popupAnchor:[0,-e-8]}))(r,A().customCircleMarker),children:(0,a.jsx)(b.z,{className:A().portPopup,children:(0,a.jsxs)("div",{className:A().portInfo,children:[(0,a.jsx)("a",{href:c,children:e.stop_name}),(0,a.jsxs)("div",{className:A().coordinates,children:["Lat: ",e.lat,", Lon: ",e.lon]})]})})},e.stop_id)})}):null};var y=r(10260),C=r(55801),j=function(e){return e[e.UnderWayUsingEngine=0]="UnderWayUsingEngine",e[e.AtAnchor=1]="AtAnchor",e[e.NotUnderCommand=2]="NotUnderCommand",e[e.Re
1strictedManeuverability=3]="RestrictedManeuverability",e[e.ConstrainedByDraught=4]="ConstrainedByDraught",e[e.Moored=5]="Moored",e[e.Aground=6]="Aground",e[e.EngagedInFishing=7]="EngagedInFishing",e[e.UnderWaySailing=8]="UnderWaySailing",e[e.ReservedForHSC=9]="ReservedForHSC",e[e.ReservedForWIG=10]="ReservedForWIG",e[e.Reserved11=11]="Reserved11",e[e.Reserved12=12]="Reserved12",e[e.Reserved13=13]="Reserved13",e[e.AISSARTActive=14]="AISSARTActive",e[e.NotDefined=15]="NotDefined",e}({}),T=r(83421),D=r(78952),O=r(37280),H=r(8028),F=r.n(H);let P=e=>{let{ships:t,routes:r,currentTime:s,markerSize:c,locale:i,shipsUri:o,historicalTracks:l={},loadingTracks:d={},onFetchTrack:g,onClearTrack:E,openPopupForMmsi:v}=e,x=(0,n.useRef)(new Map),[k,A]=(0,n.useState)(new Set),_=(0,S.W)(R.GB,e=>e.coastalMap),H=(0,Y.ko)();return((0,n.useEffect)(()=>{if(v){var e;null==(e=x.current.get(v))||e.openPopup()}},[v]),null==t?void 0:t.length)?(0,a.jsxs)(a.Fragment,{children:[t.map(e=>{let t=u(e,r,s),n=Math.round((s-new Date(e.msgtime).getTime())/6e4),Y=n>1,v=w(e.name),S="/".concat(i,"/").concat(o,"/").concat(v),R=!!l[e.mmsi],C=!!d[e.mmsi],P=e.navigationalStatus===j.AtAnchor||e.navigationalStatus===j.Moored,L=k.has(e.mmsi),M="MS POLARLYS"===e.name?"POLARLYS":e.name;return(0,a.jsxs)(N.p,{position:t,icon:P?(e=>(0,p.divIcon)({className:"",html:'<div style="width:'.concat(e,"px; height:").concat(e,'px;">\n ').concat((0,m.qV)((0,a.jsx)(f,{size:e})),"\n </div>"),iconSize:[e,e],iconAnchor:[e/2,e/2],popupAnchor:[0,-e/2]}))(c):((e,t)=>(0,p.divIcon)({className:"",html:'<div style="transform: rotate('.concat(t,"deg) scaleX(").concat(t>180&&t<360?-1:1,"); width:").concat(e,"px; height:").concat(e,'px;">\n ').concat((0,m.qV)((0,a.jsx)(h,{})),"\n </div>"),iconSize:[e,e],iconAnchor:[e/2,e/2],popupAnchor:[0,-e]}))(c,e.courseOverGround),ref:t=>{t&&x.current.set(e.mmsi,t)},eventHandlers:{click:()=>{H.panTo(t)}},children:[!L&&(0,a.jsx)(y.m,{direction:"top",offset:[0,-10],permanent:!0,interactive:!0,className:F().shipLabel,eventHandlers:{click:()=>{let r=x.current.get(e.mmsi);r&&(r.openPopup(),H.panTo(t))}},children:M}),(0,a.jsx)(b.z,{className:F().shipPopup,autoPan:!1,eventHandlers:{add:()=>{A(t=>new Set(t).add(e.mmsi))},remove:()=>{A(t=>{let r=new Set(t);return r.delete(e.mmsi),r})}},children:(0,a.jsxs)("div",{className:F().shipInfo,children:[(0,a.jsx)("a",{href:S,children:M}),(0,a.jsxs)("div",{className:F().infoRow,children:[(0,a.jsx)("span",{className:F().infoLabel,children:_(e=>e.shipIdentifier)}),(0,a.jsx)("span",{className:F().infoValue,children:e.imoNumber})]}),(0,a.jsxs)("div",{className:F().infoRow,children:[(0,a.jsx)("span",{className:F().infoLabel,children:_(e=>e.nextPort)}),(0,a.jsx)("span",{className:F().infoValue,children:e.destination})]}),(0,a.jsxs)("div",{className:F().infoRow,children:[(0,a.jsx)("span",{className:F().infoLabel,children:_(e=>e.eta)}),(0,a.jsx)("span",{className:F().infoValue,children:((e,t)=>{if(!e||8!==e.length)return e;let r=parseInt(e.substring(0,2),10),a=parseInt(e.substring(2,4),10),n=e.substring(4,6),s=e.substring(6,8),c=new Date(new Date().getFullYear(),r-1,a),i=(0,D.nv)(t),o=(0,T.default)(c,"MMM dd",{locale:i});return"".concat(o,", ").concat(n,":").concat(s)})(e.eta,i)})]}),(0,a.jsxs)("div",{className:F().infoRow,children:[(0,a.jsx)("span",{className:F().infoLabel,children:_(e=>e.speed)}),(0,a.jsxs)("span",{className:F().infoValue,children:[e.speedOverGround," kn"]})]}),(0,a.jsxs)("div",{className:F().infoRow,children:[(0,a.jsx)("span",{className:F().infoLabel,children:_(e=>e.direction)}),(0,a.jsxs)("span",{className:F().infoValue,children:[e.courseOverGround,"\xb0"]})]}),Y&&(0,a.jsx)("div",{className:F().estimatedBadge,children:_(e=>e.lastUpdateEstimateDescription,{minutesElapsed:n.toString()})}),g&&E&&(0,a.jsx)("div",{className:F().trackButtonContainer,children:R?(0,a.jsx)(O.Button,{variant:"secondary",onClick:()=>E(e.mmsi),children:_(e=>e.hideTrack)}):(0,a.jsx)(O.Button,{variant:"primary",onClick:()=>g(e.mmsi),isLoading:C,isDisabled:C,children:_(e=>e.track)})})]})})]},e.mmsi)}),Object.entries(l).map(e=>{let[t,r]=e;return r&&0!==r.length?(0,a.jsx)(C.R,{positions:r,smoothFactor:1,pathOptions:{color:"#2772cc",weight:3,opacity:.7,lineJoin:"round",lineCap:"round"}},"track-".concat(t)):null})]}):null},L=e=>{let{routes:t,color:r="#2772cc"}=e;return(null==t?void 0:t.length)?(0,a.jsx)(a.Fragment,{children:t.map((e,t)=>(0,a.jsx)(C.R,{positions:e.coordinates,color:r},"".concat(e.from,"-").concat(e.to,"-").concat(t)))}):null},M=e=>{let{ships:t,routes:r,currentTime:a,shipSlugFromUrl:s,onShipFound:c}=e,i=(0,Y.ko)(),o=(0,n.useRef)(!1);return(0,n.useEffect)(()=>
1{if(!(null==t?void 0:t.length)||!s||o.current)return;let e=t.find(e=>w(e.name)===s);if(e){let t=u(e,r,a);i.flyTo(t,Math.max(i.getZoom(),14),{duration:1.5,easeLinearity:.25}),c&&setTimeout(()=>{c(e.mmsi)},1600),o.current=!0}},[t,r,a,i,s,c]),null};var I=r(83246),U=r.n(I);let W=e=>{let{zoom:t=d.DEFAULT_ZOOM,routes:r,mmsiArray:p,ports:m,liveUpdates:h=!1,shipSlug:f}=e,Y=(0,o.Y)(),v=(0,l.np)(Y),S=(0,l.KQ)(Y),[R,N]=(0,n.useState)(),{ships:b,currentTime:w,trackData:k,loadingTrack:A,handleFetchTrack:y,handleClearTrack:C}=(e=>{let{mmsiArray:t,liveUpdates:r,routes:a}=e,{ships:s,currentTime:c}=(e=>{let{mmsiArray:t,liveUpdates:r,updateInterval:a=15e3}=e,[s,c]=(0,n.useState)([]),[i,o]=(0,n.useState)(()=>Date.now()),[l,u]=(0,n.useState)(!1),[d,p]=(0,n.useState)(null),m=(0,n.useCallback)(async()=>{if(t&&0!==t.length){u(!0),p(null);try{let e=await fetch("/nellie-coastal-v2/api/barents-watch/ais",{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Failed to fetch AIS data");let t=await e.json();c(t)}catch(e){p(e instanceof Error?e:Error("Unknown error")),console.error("Error fetching AIS data:",e)}finally{u(!1)}}},[t]);return(0,n.useEffect)(()=>{if(!t||0===t.length)return void c([]);if(m(),r){let e=setInterval(()=>{m()},a);return()=>{clearInterval(e)}}},[t,r,a,m]),(0,n.useEffect)(()=>{if(!r||0===s.length)return;let e=setInterval(()=>{o(Date.now())},1e3);return()=>{clearInterval(e)}},[r,s.length]),{ships:s,currentTime:i,isLoading:l,error:d}})({mmsiArray:t,liveUpdates:r}),{trackData:i,loadingTrack:o,errorTrack:l,fetchHistoricalTrack:d,clearTrack:p,appendLivePosition:m}=(()=>{let[e,t]=(0,n.useState)({}),[r,a]=(0,n.useState)({}),[s,c]=(0,n.useState)({}),i=(0,n.useCallback)(async n=>{if(!r[n]&&!e[n]){a(e=>({...e,[n]:!0})),c(e=>({...e,[n]:null}));try{let e=await fetch("/nellie-coastal-v2/api/barents-watch/ais/tracks?mmsi=".concat(n),{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Failed to fetch historical track data");let r=(await e.json()).sort((e,t)=>new Date(e.msgtime).getTime()-new Date(t.msgtime).getTime()).map(e=>[e.latitude,e.longitude]);t(e=>({...e,[n]:r}))}catch(t){let e=t instanceof Error?t.message:"Unknown error";c(t=>({...t,[n]:e}))}finally{a(e=>({...e,[n]:!1}))}}},[r,e]);return{trackData:e,loadingTrack:r,errorTrack:s,fetchHistoricalTrack:i,clearTrack:(0,n.useCallback)(e=>{t(t=>{let r={...t};return delete r[e],r}),c(t=>{let r={...t};return delete r[e],r})},[]),appendLivePosition:(0,n.useCallback)((e,r)=>{t(t=>{if(!t[e])return t;let a=t[e],n=a[a.length-1];if(Array.isArray(n)&&Array.isArray(r)){let[e,a]=n,[s,c]=r;if(1e-4>Math.abs(e-s)&&1e-4>Math.abs(a-c))return t}return{...t,[e]:[...a,r]}})},[])}})();return(e=>{let{ships:t,routes:r,currentTime:a,liveUpdates:s,trackData:c,appendLivePosition:i}=e;(0,n.useEffect)(()=>{s&&(null==t?void 0:t.length)&&t.forEach(e=>{if(c[e.mmsi]){let t=u(e,r,a);i(e.mmsi,t)}})},[t,s,c,r,a,i])})({ships:s,routes:a,currentTime:c,liveUpdates:r,trackData:i,appendLivePosition:m}),{ships:s,currentTime:c,trackData:i,loadingTrack:o,errorTrack:l,handleFetchTrack:(0,n.useCallback)(e=>{d(e)},[d]),handleClearTrack:p}})({mmsiArray:p,liveUpdates:h,routes:r}),j=(e=>e>=14?22:e>=10?20:18)(t);return(0,a.jsx)("div",{className:U().mapWrapper,children:(0,a.jsxs)(s.W,{center:d.NORWAY_CENTER,zoom:t,minZoom:5,scrollWheelZoom:!0,style:{height:"100%",width:"100%"},attributionControl:!1,zoomControl:!1,children:[(0,a.jsx)(c.e,{url:d.TILE_LAYER_URL}),(0,a.jsx)(i.p,{position:"bottomright"}),(0,a.jsx)(_,{ports:m,markerSize:j,locale:Y,portsUri:S}),(0,a.jsx)(P,{ships:b,routes:r,currentTime:w,markerSize:j,locale:Y,shipsUri:v,historicalTracks:k,loadingTracks:A,onFetchTrack:y,onClearTrack:C,openPopupForMmsi:R}),(0,a.jsx)(L,{routes:r}),(0,a.jsx)(M,{ships:b,routes:r,currentTime:w,shipSlugFromUrl:f,onShipFound:N}),(0,a.jsx)(E,{bounds:d.NORWAY_BOUNDS}),(0,a.jsx)(g,{}),(0,a.jsx)(x,{position:"bottomleft"})]})})},K=W;W.displayName="OpenMap"},83246:e=>{e.exports={mapWrapper:"styles_mapWrapper__7_2wf"}},97923:(e,t,r)=>{"use strict";r.d(t,{Cr:()=>n,DE:()=>s,Mr:()=>a,RJ:()=>o,Sy:()=>c,er:()=>i});var a=function(e){return e.Excursion="Excursion",e.PreProgramme="Pre-programme",e.PostProgramme="Post-programme",e.PrePostProgramme="Pre-Post-programme",e}({}),n=function(e){return e.Level1="Level 1: Easy - suitable for most people",e.Level2="Level 2: Moderate - some mobility needed",e.Level3="Level 3: Active - good mobility needed",e.Level4="Level 4: Challenging - good mobility and fitness needed",e}({}),s=function(e){return e.Winter="winter",e.Summer="summer",e.Autumn="autumn",e.Spring="spring",e}({}),c=function(e){return e.AllSeasons="all-seasons",e.Spring="spring",e.Summer="summer",e.Autumn="autumn",e.Winter="winter",e}({});let i={spring:/spring/i,summer:/summer/i,autumn:/autumn/i,winter:/winter/i};var o=function(e){return e.Excursions="excursions",e.Programmes="programmes",e.Packages="packages",e.ExcursionInformation="excursion-information",e}({})}}]);
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.