PageSourceSearch

https://www.asturmet.com/_next/static/chunks/9999-0e414f04cd498f16.js

js asturmet.com collected 2026-10-02 04:20:32 UTC 23,417 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9999],{11571:(e,a,n)=>{n.d(a,{Gu:()=>s,ZR:()=>i,ad:()=>r,f8:()=>o});var t=n(71549);let l=new Set(["galicia","asturias","cantabria","pais-vasco"]);function i(e,a){var n;return"cantabrico"===e&&null!=(n=a)&&l.has(n)?e:a??"asturias"}function o(e,a){return e&&a.some(({id:a})=>a===e)?e:null}function r(e,a,n){let t=a??n;return e.find(({id:e})=>e===t)??e.find(({id:e})=>"asturias"===e)??e[0]}function s(e,a){if(!(0,t.jl)(a))throw Error("invalid_forecast_scope");let n=new URLSearchParams({scope:a});return`/pronostico/${e}?${n.toString()}`}},15589:(e,a,n)=>{n.d(a,{We:()=>l,vU:()=>m,vv:()=>h,TQ:()=>v,$n:()=>f,AY:()=>C,pz:()=>p,ZP:()=>b,$9:()=>_,bu:()=>g,Q4:()=>y,Xb:()=>d});let t=[{name:"Allande",slug:"allande",type:"municipio",lat:43.27,lng:-6.61},{name:"Aller",slug:"aller",type:"municipio",lat:43.17,lng:-5.58},{name:"Amieva",slug:"amieva",type:"municipio",lat:43.28,lng:-5.07},{name:"Avil\xe9s",slug:"avil\xe9s",type:"municipio",lat:43.55,lng:-5.92,popular:!0},{name:"Belmonte de Miranda",slug:"belmonte_de_miranda",type:"municipio",lat:43.28,lng:-6.22},{name:"Bimenes",slug:"bimenes",type:"municipio",lat:43.36,lng:-5.55},{name:"Boal",slug:"boal",type:"municipio",lat:43.42,lng:-6.82},{name:"Cabrales",slug:"cabrales",type:"municipio",lat:43.32,lng:-4.85},{name:"Cabranes",slug:"cabranes",type:"municipio",lat:43.41,lng:-5.41},{name:"Candamo",slug:"candamo",type:"municipio",lat:43.46,lng:-6.04},{name:"Cangas de On\xeds",slug:"cangas_de_on\xeds",type:"municipio",lat:43.35,lng:-5.13,popular:!0},{name:"Cangas del Narcea",slug:"cangas_del_narcea",type:"municipio",lat:43.18,lng:-6.55,popular:!0},{name:"Caravia",slug:"caravia",type:"municipio",lat:43.46,lng:-5.18},{name:"Carre\xf1o",slug:"carre\xf1o",type:"municipio",lat:43.59,lng:-5.76},{name:"Caso",slug:"caso",type:"municipio",lat:43.18,lng:-5.33},{name:"Castrill\xf3n",slug:"castrill\xf3n",type:"municipio",lat:43.56,lng:-5.98},{name:"Castropol",slug:"castropol",type:"municipio",lat:43.53,lng:-7.03},{name:"Coa\xf1a",slug:"coa\xf1a",type:"municipio",lat:43.51,lng:-6.75},{name:"Colunga",slug:"colunga",type:"municipio",lat:43.48,lng:-5.27},{name:"Corvera de Asturias",slug:"corvera_de_asturias",type:"municipio",lat:43.53,lng:-5.88},{name:"Cudillero",slug:"cudillero",type:"municipio",lat:43.56,lng:-6.15},{name:"Dega\xf1a",slug:"dega\xf1a",type:"municipio",lat:42.94,lng:-6.57},{name:"El Franco",slug:"el_franco",type:"municipio",lat:43.5,lng:-6.83},{name:"Gij\xf3n",slug:"gij\xf3n",type:"municipio",lat:43.54,lng:-5.66,popular:!0},{name:"Goz\xf3n",slug:"goz\xf3n",type:"municipio",lat:43.61,lng:-5.79},{name:"Grado",slug:"grado",type:"municipio",lat:43.39,lng:-6.07},{name:"Grandas de Salime",slug:"grandas_de_salime",type:"municipio",lat:43.22,lng:-6.88},{name:"Ibias",slug:"ibias",type:"municipio",lat:43.03,lng:-6.87},{name:"Illano",slug:"illano",type:"municipio",lat:43.33,lng:-6.82},{name:"Illas",slug:"illas",type:"municipio",lat:43.5,lng:-5.97},{name:"Langreo",slug:"langreo",type:"municipio",lat:43.3,lng:-5.68,popular:!0},{name:"Las Regueras",slug:"las_regueras",type:"municipio",lat:43.41,lng:-5.97},{name:"Laviana",slug:"laviana",type:"municipio",lat:43.25,lng:-5.56},{name:"Lena",slug:"lena",type:"municipio",lat:43.16,lng:-5.83,popular:!0},{name:"Llanera",slug:"llanera",type:"municipio",lat:43.44,lng:-5.85},{name:"Llanes",slug:"llanes",type:"municipio",lat:43.42,lng:-4.75,popular:!0},{name:"Mieres",slug:"mieres",type:"municipio",lat:43.25,lng:-5.77,popular:!0},{name:"Morc\xedn",slug:"morc\xedn",type:"municipio",lat:43.29,lng:-5.88},{name:"Muros de Nal\xf3n",slug:"muros_de_nal\xf3n",type:"municipio",lat:43.54,lng:-6.1},{name:"Nava",slug:"nava",type:"municipio",lat:43.35,lng:-5.5},{name:"Navia",slug:"navia",type:"municipio",lat:43.54,lng:-6.72,popular:!0},{name:"Nore\xf1a",slug:"nore\xf1a",type:"municipio",lat:43.39,lng:-5.71},{name:"On\xeds",slug:"on\xeds",type:"municipio",lat:43.34,lng:-4.97},{name:"Oviedo",slug:"oviedo",type:"municipio",lat:43.36,lng:-5.85,popular:!0},{name:"Parres",slug:"parres",type:"municipio",lat:43.38,lng:-5.18},{name:"Pe\xf1amellera Alta",slug:"pe\xf1amellera_alta",type:"municipio",lat:43.32,lng:-4.72},{name:"Pe\xf1amellera Baja",slug:"pe\xf1amellera_baja",type:"municipio",lat:43.34,lng:-4.58},{name:"Pesoz",slug:"pesoz",type:"municipio",lat:43.27,lng:-6.86},{name:"Picos de Europa",slug:"picos_de_europa",type:"municipio",lat:43.19,lng:-4.84},{name:"Pilo\xf1a",slug:"pilo\xf1a",type:"municipio",lat:43.35,lng:-5.36},{name:"Ponga",slug:"ponga",type:"municipio",lat:43.22,lng:-5.16},{name:"Pravia",slug:"pravia",type:"municipio",lat:43.49,lng:-6.11},{name:"Proaza",slug:"proaza",type:"municipio",lat:43.25,lng:-6.02},{name:"Quir\xf3s",slug:"quir\xf3s",type:"municipio",lat:43.16,lng:-5.97},{name:"Ribadedeva",slug:"ribadedeva",type:"municipio",lat:43.38,lng:-4.56},{name:"Ribadesella",slug:"ribadesella",type:"municipio",lat:43.46,lng:-5.06,popular:!0},{name:"Ribera de Arriba",slug:"ribera_de_arriba",type:"municipio",lat:43.31,lng:-5.88},{name:"Riosa",slug:"riosa",type:"municipio",lat:43.23,lng:-5.88},{name:"Salas",slug:"salas",type:"municipio",lat:43.4,lng:-6.25},{name:"San Mart\xedn de Oscos",slug:"san_mart\xedn_de_oscos",type:"municipio",lat:43.26,lng:-6.88},{name:"San Mart\xedn del Rey Aurelio",slug:"san_mart\xedn_del_rey_aurelio",type:"municipio",lat:43.28,lng:-5.61},{name:"San Tirso de Abres",slug:"san_tirso_de_abres",type:"municipio",lat:43.4,lng:-7.14},{name:"Santa Eulalia de Oscos",slug:"santa_eulalia_de_oscos",type:"municipio",lat:43.25,lng:-7.02},{name:"Santo Adriano",slug:"santo_adriano",type:"municipio",lat:43.28,lng:-5.98},{name:"Sariego",slug:"sariego",type:"municipio",lat:43.4,lng:-5.56},{name:"Siero",slug:"siero",type:"municipio",lat:43.39,lng:-5.66},{name:"Sobrescobio",slug:"sobrescobio",type:"municipio",lat:43.2,lng:-5.47},{name:"Somiedo",slug:"somiedo",type:"municipio",lat:43.09,lng:-6.25},{name:"Soto del Barco",slug:"soto_del_barco",type:"municipio",lat:43.53,lng:-6.07},{name:"Tapia de Casariego",slug:"tapia_de_casariego",type:"municipio",lat:43.57,lng:-6.94}
1,{name:"Taramundi",slug:"taramundi",type:"municipio",lat:43.36,lng:-7.11},{name:"Teverga",slug:"teverga",type:"municipio",lat:43.16,lng:-6.1},{name:"Tineo",slug:"tineo",type:"municipio",lat:43.33,lng:-6.41},{name:"Vald\xe9s",slug:"vald\xe9s",type:"municipio",lat:43.54,lng:-6.53,popular:!0},{name:"Vegadeo",slug:"vegadeo",type:"municipio",lat:43.46,lng:-7.05},{name:"Villanueva de Oscos",slug:"villanueva_de_oscos",type:"municipio",lat:43.3,lng:-6.98},{name:"Villaviciosa",slug:"villaviciosa",type:"municipio",lat:43.48,lng:-5.44,popular:!0},{name:"Villay\xf3n",slug:"villay\xf3n",type:"municipio",lat:43.44,lng:-6.71},{name:"Yernes y Tameza",slug:"yernes_y_tameza",type:"municipio",lat:43.26,lng:-6.1},{name:"Refugio de Bra\xf1agallones",slug:"refugio_de_bra\xf1agallones",type:"montana",lat:43.109,lng:-5.305},{name:"Refugio Jou de los Cabrones",slug:"refugio_jou_de_los_cabrones",type:"montana",lat:43.2,lng:-4.848},{name:"Refugio de Meic\xedn",slug:"refugio_de_meicin",type:"montana",lat:43.018,lng:-5.928},{name:"Refugio de Uriellu",slug:"refugio_de_uriellu",type:"montana",lat:43.218,lng:-4.817},{name:"Refugio Vega de Ario",slug:"refugio_vega_de_ario",type:"montana",lat:43.25,lng:-4.95},{name:"Refugio Vegarredonda",slug:"refugio_vegarredonda",type:"montana",lat:43.243,lng:-4.933},{name:"Refugio de Vegaba\xf1o",slug:"refugio_de_vegaba\xf1o",type:"montana",lat:43.15,lng:-4.933},{name:"Caset\xf3n de Andara",slug:"caset\xf3n_de_andara",type:"montana",lat:43.217,lng:-4.7},{name:"Estaci\xf3n de Esqu\xed de San Isidro (1507 m)",slug:"estaci\xf3n_de_esqu\xed_de_san_isidro_(1507_m)",type:"montana",lat:43.056,lng:-5.378},{name:"Estaci\xf3n de Esqu\xed de San Isidro (1732 m)",slug:"estaci\xf3n_de_esqu\xed_de_san_isidro_(1732_m)",type:"montana",lat:43.05,lng:-5.38},{name:"Estaci\xf3n de Esqu\xed de San Isidro (2000 m)",slug:"estaci\xf3n_de_esqu\xed_de_san_isidro_(2000_m)",type:"montana",lat:43.045,lng:-5.382},{name:"Estaci\xf3n de Esqu\xed de Valgrande Pajares (1450 m) Bra\xf1ill\xedn",slug:"estaci\xf3n_de_esqu\xed_de_valgrande_pajares_(1450_m)_bra\xf1ill\xedn",type:"montana",lat:42.993,lng:-5.788},{name:"Estaci\xf3n invernal y de monta\xf1a Valgrande-Pajares",slug:"estaci\xf3n_invernal_y_de_monta\xf1a_valgrande-pajares",type:"montana",lat:42.992,lng:-5.788},{name:"Estaci\xf3n de Esqu\xed de Valgrande Pajares (1860 m)",slug:"estaci\xf3n_de_esqu\xed_de_valgrande_pajares_(1860_m)",type:"montana",lat:42.985,lng:-5.79},{name:"Estaci\xf3n de esqu\xed de Fuentes de Invierno (1500 m)",slug:"estaci\xf3n_de_esqu\xed_de_fuentes_de_invierno_(1500_m)",type:"montana",lat:43.065,lng:-5.39},{name:"Estaci\xf3n de esqu\xed de Fuentes de Invierno (1950 m)",slug:"estaci\xf3n_de_esqu\xed_de_fuentes_de_invierno_(1950_m)",type:"montana",lat:43.06,lng:-5.39},{name:"Estaci\xf3n de Esqu\xed de Leitariegos (1500 m)",slug:"estaci\xf3n_de_esqu\xed_de_leitariegos_(1500_m)",type:"montana",lat:42.995,lng:-6.375},{name:"Estaci\xf3n de Esqu\xed de Leitariegos (1800 m)",slug:"estaci\xf3n_de_esqu\xed_de_leitariegos_(1800_m)",type:"montana",lat:42.991,lng:-6.375},{name:"Lagos de Covadonga",slug:"lagos_de_covadonga",type:"montana",lat:43.275,lng:-5.05},{name:"Covadonga",slug:"covadonga",type:"montana",lat:43.31,lng:-5.054},{name:"Alto de la Farrapona",slug:"alto_de_la_farrapona",type:"montana",lat:43.047,lng:-6.082},{name:"Collado de Pand\xe9bano",slug:"collado_de_pand\xe9bano",type:"montana",lat:43.238,lng:-4.792},{name:"Collada Llomena",slug:"collada_llomena",type:"montana",lat:43.22,lng:-5.11},{name:"Lagos de Saliencia",slug:"lagos_de_saliencia",type:"montana",lat:43.055,lng:-6.096},{name:"Valle de Lago",slug:"valle_de_lago",type:"montana",lat:43.064,lng:-6.195},{name:"Dega\xf1a (Monta\xf1a)",slug:"dega\xf1a",type:"montana",lat:42.935,lng:-6.57},{name:"Villablino",slug:"villablino",type:"montana",lat:42.939,lng:-6.316},{name:"Villar de Vildas",slug:"villar_de_vildas",type:"montana",lat:43.082,lng:-6.335},{name:"Potes",slug:"potes",type:"montana",lat:43.153,lng:-4.624},{name:"Posada de Valde\xf3n",slug:"posada_de_valde\xf3n",type:"montana",lat:43.155,lng:-4.918},{name:"Sotres",slug:"sotres",type:"montana",lat:43.232,lng:-4.753},{name:"Oseja de Sajambre",slug:"oseja_de_sajambre",type:"montana",lat:43.136,lng:-5.038},{name:"Soto de Sajambre",slug:"soto_de_sajambre",type:"montana",lat:43.172,lng:-5.032},{name:"Puerto de Leitariegos",slug:"puerto_de_leitariegos",type:"montana",lat:42.9936,lng:-6.3742},{name:"Valgrande Pajares",slug:"valgrande_pajares",type:"montana",lat:42.9917,lng:-5.7877},{name:"Le\xf3n",slug:"le\xf3n",type:"montana",lat:42.7687,lng:-5.5671}],l=50,i={id:"asturias",kind:"official-community",label:"Asturias"},o=new Set(["asturias","galicia","cantabria","pais-vasco"]),r=new Set(["03","06","12","16"]),s=new Intl.Collator("es",{sensitivity:"base",usage:"sort"});function u(e,a){return s.compare(e.name,a.name)||e.slug.localeCompare(a.slug,"es")}let c=function(){let e=new Set,a=[];for(let n of t){let t=n.slug.normalize("NFC");e.has(t)||(e.add(t),a.push({name:n.name.normalize("NFC"),slug:t,aliases:[t],
1categories:"montana"===n.type?["mountain"]:[]}))}return a}(),m={catalogVersion:"frontend-static-fallback-v1",checksum:"frontend-static-fallback-v1",count:c.length,locations:c};function g(e){return e.normalize("NFD").replace(/\p{Diacritic}/gu,"").replace(/[_-]+/g," ").replace(/\s+/g," ").toLocaleLowerCase("es").trim()}function d(e,a,n={allowLegacyDerivation:!0}){return e.filter(e=>(function(e,a,{allowLegacyDerivation:n}={allowLegacyDerivation:!0}){return"cantabrico"===a.id?e.scope?o.has(e.scope):e.official?r.has(e.official.autonomousCommunity.code):n&&!e.categories.includes("mountain"):"curated"===a.kind?e.categories.includes("mountain"):e.scope?e.scope===a.id:!!n&&("galicia"===a.id?e.official?.autonomousCommunity.code==="12":"asturias"===a.id&&e.official?"03"===e.official.autonomousCommunity.code:"asturias"===a.id&&!e.categories.includes("mountain"))})(e,a,n))}function p(e=i,a=!0){let n=new Set;return d(t.filter(({popular:e,slug:a})=>{let t=a.normalize("NFC");return!(!0!==e||n.has(t))&&(n.add(t),!0)}).map(({name:e,slug:a,type:n})=>({name:e.normalize("NFC"),slug:a.normalize("NFC"),aliases:[a.normalize("NFC")],categories:"montana"===n?["mountain"]:[]})).sort(u),e,{allowLegacyDerivation:a})}function y(e,a){let n=g(a);return n?e.map(e=>{let a=g(e.name),t=g(e.slug),l=e.aliases.map(g),i=null;return a===n?i=0:a.startsWith(n)?i=1:a.includes(n)?i=2:(t.includes(n)||l.some(e=>e.includes(n)))&&(i=3),null===i?null:{location:e,rank:i}}).filter(e=>null!==e).sort((e,a)=>e.rank-a.rank||u(e.location,a.location)).map(({location:e})=>e):[...e].sort(u)}function _(e){return e.categories.includes("mountain")}function f(e,a){let n=new Set(a.map(({slug:e})=>e.normalize("NFC")));return e.filter(({slug:e})=>!n.has(e.normalize("NFC")))}function b(e,a,n=l){return Math.min(Math.max(0,a),Math.max(0,e)+Math.max(1,n))}function v(e,a){let n=e.map(({name:e,slug:a,scope:n,coordinates:t})=>({name:e,slug:a,scope:n,type:"municipio",lat:t.lat,lng:t.lng})),t=new Float64Array(2*n.length);return n.forEach((e,a)=>{t[2*a]=e.lat,t[2*a+1]=e.lng}),{checksum:a,coordinates:t,locations:n}}function h(e){let a=new Set(e.locations.map(({slug:e})=>e)),n=new Set,l=t.filter(e=>!n.has(e.slug)&&!!a.has(e.slug)&&"number"==typeof e.lat&&"number"==typeof e.lng&&(n.add(e.slug),!0)),i=new Float64Array(2*l.length);return l.forEach((e,a)=>{i[2*a]=e.lat,i[2*a+1]=e.lng}),{checksum:e.checksum,coordinates:i,locations:l}}function w(e){return Math.PI/180*e}function C(e,a,n){let t=null,l=1/0;for(let n=0;n<e.locations.length;n+=1){let i=function(e,a){let n=w(a.lat-e.lat),t=w(a.lng-e.lng),l=Math.sin(n/2)**2+Math.cos(w(e.lat))*Math.cos(w(a.lat))*Math.sin(t/2)**2;return 12742*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}(a,{lat:e.coordinates[2*n],lng:e.coordinates[2*n+1]});i<l&&(l=i,t=e.locations[n])}return l<=n?t:null}},50109:(e,a,n)=>{n.d(a,{GeolocationProvider:()=>p,m:()=>y});var t=n(95155),l=n(12115),i=n(71549);let o=/^[a-f0-9]{64}$/;function r(e,a){return Object.keys(e).length===a.length&&a.every(a=>Object.hasOwn(e,a))}function s(e,a,n){return"number"==typeof e&&Number.isFinite(e)&&e>=a&&e<=n}let u=null;async function c(e){let a,n=new AbortController,t=new Promise((e,t)=>{a=setTimeout(()=>{t(Error("location_geolocation_index_timeout")),n.abort()},1e4)});try{return await Promise.race([m(e,n.signal),t])}finally{clearTimeout(a)}}async function m(e,a){let n=await e("/api/locations/geolocation-index",{cache:"no-cache",headers:{accept:"application/json"},signal:a});if(!n.ok)throw Error(`location_geolocation_index_${n.status}`);var t=await n.json();if("object"!=typeof t||null===t||!r(t,["catalogVersion","checksum","count","locations"])||"string"!=typeof t.catalogVersion||""===t.catalogVersion.trim()||"string"!=typeof t.checksum||!o.test(t.checksum)||"number"!=typeof t.count||!Number.isInteger(t.count)||t.count<1||!Array.isArray(t.locations)||t.locations.length!==t.count)throw Error("invalid_location_geolocation_index");let l=new Set,u=t.locations.map(e=>{if("object"!=typeof e||null===e||!r(e,["name","slug","scope","coordinates"])||"string"!=typeof e.name||""===e.name.trim()||"string"!=typeof e.slug||""===e.slug.trim()||!(0,i.jl)(e.scope)||"object"!=typeof e.coordinates||null===e.coordinates||!r(e.coordinates,["lat","lng"]))throw Error("invalid_location_geolocation_index");let a=e.coordinates;if(!s(a.lat,-90,90)||!s(a.lng,-180,180))throw Error("invalid_location_geolocation_index");let n=e.slug.normalize("NFC");if(l.has(n))throw Error("invalid_location_geolocation_index");return l.add(n),{name:e.name.normalize("NFC"),slug:n,scope:e.scope,coordinates:{lat:a.lat,lng:a.lng}}});return{catalogVersion:t.catalogVersion,checksum:t.checksum,count:t.count,locations:u}}var g=n(15589);let d=(0,l.createContext)(void 0);function p({children:e}){let[a,n]=(0,l.useState)(null),[i,o]=(0,l.useState)(null),[r,s]=(0,l.useState)(null),[m,y]=(0,l.useState)(!1),_=(0,l.useRef)((0,g.vv)(g.vU)),f=(0,l.useRef)(!1),b=(0,l.useRef)(!0),v=(0,l.useRef)(0),h=(0,l.useRef)(null),w=(0,l.useCallback)(e=>{f.current||_.current.checksum===e.checksum||(_.current=(0,g.vv)(e))},[]),C=(0,l.useCallback)(async()=>{let e=v.current+1;if(v.current=e,h.current?.(),!navigator.geolocation)return s("La geolocalizaci\xf3n no es soportada por tu navegador."),o(null),n(null),y(!1),null;y(!0),s(null),o(null),n(null);let a=!1;try{let t=await new Promise((e,a)=>{let n=!1,t=e=>{n||(n=!0,clearTimeout(l),h.current=null,e())},l=setTimeout(()=>t(()=>a({code:3})),15e3);h.current=()=>t(()=>a({code:0}));try{navigator.geolocation.getCurrentPosition(a=>{t(()=>e({lat:a.coords.latitude,lng:a.coords.longitude}))},e=>t(()=>a(e)),{enableHighAccuracy:!1,timeout:1e4,maximumAge:6e4})}catch(e){t(()=>a(e))}});if(!b.current||v.current!==e)return null;a=!0;let l=await function(e=fetch){return u??=c(e).then(e=>(u=null,e),e=>{throw u=null,e})}();if(!b.current||v.current!==e)return null;_.current=(0,g.TQ)(l.locations,l.checksum),f.current=!0;let i=(0,g.AY)(_.current,t,30);return n(t),o(i),s(i?null:"No hay un pron\xf3stico cercano disponible"),i}catch(t){if(b.current&&v.current===e){let e="object"==typeof t&&null!==t&&"code"in t?t.code:null;s(a?"No se pudieron cargar las localidades cercanas. Vuelve a intentarlo.":1===e?"Permiso de ubicaci\xf3n denegado. Act\xedvalo en los ajustes del navegador y vuelve a intentarlo.":3===e?"La ubicaci\xf3n ha tardado demasiado. Comprueba el permiso y vuelve a intentarlo.":"No se pudo obtener tu ubicaci\xf3n. Comprueba que est\xe9 activada y vuelve a intentarlo."),o(null),n(null)}return null}finally{b.current&&v.current===e&&y(!1)}},[]);return(0,l.useEffect)(()=>(b.current=!0,C(),()=>{b.current=!1,v.current+=1,h.current?.()}),[C]),(0,t.jsx)(d.Provider,{value:{userLocation:a,nearestLocation:i,error:r,loading:m,requestLocation:C,updateLocationCatalog:w},children:e})}function y(){let e=(0,l.useContext)(d);if(void 0===e)throw Error("useGeolocation must be used within a GeolocationProvider");return e}},71549:(e,a,n)=>{n.d(a,{jl:()=>d,uO:()=>y,vL:()=>p});let t=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,l=/^[a-f0-9]{64}$/,i=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,o=/^[A-Za-z_]+(?:\/[A-Za-z0-9_+-]+)+$/;function r(){throw Error("invalid_forecast_regions_response")}function s(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function u(e,a){let n=Object.keys(e).sort(),t=[...a].sort();(n.length!==t.length||n.some((e,a)=>e!==t[a]))&&r()}function c(e,a=120){"string"!=typeof e&&r();let n=e.trim().normalize("NFC");return(!n||n.length>a)&&r(),n}function m(e){return d(e)||r(),e}function g(e){var a,n;let t,l,i;s(e)||r(),u(e,["id","label","order","kind","timezone","summary","map"]);let g=m(e.id),d=e.kind;"official-community"!==d&&"curated"!==d&&r(),(!Number.isSafeInteger(e.order)||0>Number(e.order))&&r();let p=c(e.timezone,64);
1return o.test(p)||r(),Object.freeze({id:g,label:c(e.label,80),order:Number(e.order),kind:d,timezone:p,summary:(a=e.summary,s(a)||r(),u(a,["group","basisType","basisSingular","basisPlural"]),(t=m(a.group))!==g&&r(),Object.freeze({group:t,basisType:m(a.basisType),basisSingular:c(a.basisSingular,48),basisPlural:c(a.basisPlural,48)})),map:(n=e.map,s(n)||r(),u(n,["id","title","defaultLocation"]),(l=m(n.id))!==g&&r(),("string"!=typeof(i=n.defaultLocation)||i.length>128||!/^[a-z0-9]+(?:[-_][a-z0-9]+)*$/.test(i))&&r(),Object.freeze({id:l,title:c(n.title),defaultLocation:i}))})}function d(e){return"string"==typeof e&&e.length<=64&&t.test(e)}function p(e){s(e)||r(),u(e,["runId","checksum","regions"]),"string"==typeof e.runId&&i.test(e.runId)&&"string"==typeof e.checksum&&l.test(e.checksum)&&Array.isArray(e.regions)&&0!==e.regions.length||r();let a=e.regions.map(g).sort((e,a)=>e.order===a.order?e.id.localeCompare(a.id):e.order-a.order),n=new Set,t=new Set;for(let e of a)(n.has(e.id)||t.has(e.order))&&r(),n.add(e.id),t.add(e.order);return a[0]?.id!=="asturias"&&r(),Object.freeze({runId:e.runId,checksum:e.checksum,regions:Object.freeze(a)})}let y=p({runId:"legacy-schema-v3",checksum:"185589bd610de8cf750f790503fccec23b6991249c33fe908a0b00b68ae5e0e0",regions:[{id:"asturias",label:"Asturias",order:0,kind:"official-community",timezone:"Europe/Madrid",summary:{group:"asturias",basisType:"concejo",basisSingular:"concejo",basisPlural:"concejos"},map:{id:"asturias",title:"Mapa de Asturias",defaultLocation:"oviedo"}},{id:"cordillera",label:"Monta\xf1a Asturias",order:10,kind:"curated",timezone:"Europe/Madrid",summary:{group:"cordillera",basisType:"location",basisSingular:"localidad",basisPlural:"localidades"},map:{id:"cordillera",title:"Mapa de la Cordillera",defaultLocation:"lena"}},{id:"galicia",label:"Galicia",order:20,kind:"official-community",timezone:"Europe/Madrid",summary:{group:"galicia",basisType:"concello",basisSingular:"concello",basisPlural:"concellos"},map:{id:"galicia",title:"Mapa de Galicia",defaultLocation:"santiago-de-compostela-15078000101"}}]})},74635:(e,a,n)=>{n.d(a,{S:()=>i});var t=n(88314),l=n(71549);let i={getForecastRegions:async()=>{let e=await fetch("/api/weather/regions");if(!e.ok)throw Error(`Error ${e.status}: ${e.statusText}`);return(0,l.vL)(await e.json())},getForecast:async(e,a="asturmet")=>{try{let n=await fetch(`/api/weather?city=${encodeURIComponent(e)}${(0,t.Iq)(a,"&")}`);if(!n.ok)throw Error(`Error ${n.status}: ${n.statusText}`);return await n.json()}catch(e){throw console.error("MeteoService Error:",e),e}},getForecastMap:async(e,a="asturmet")=>{try{let n=await fetch(`/api/weather/maps/${encodeURIComponent(e)}${(0,t.Iq)(a)}`);if(!n.ok)throw Error(`Error ${n.status}: ${n.statusText}`);return await n.json()}catch(a){throw console.error(`MeteoService Map Error (${e}):`,a),a}},getForecastSummary:async(e,a,n="asturmet")=>{let t=new URL(`/api/weather/summaries/${encodeURIComponent(e)}`,window.location.origin);t.searchParams.set("date",a),"asturmet"!==n&&t.searchParams.set("model",n);let l=await fetch(`${t.pathname}${t.search}`);if(404===l.status)return null;if(!l.ok)throw Error(`Error ${l.status}: ${l.statusText}`);return l.json()},getManualPrediction:async e=>{try{let a=await fetch(`/api/weather/manual?date=${e}`);if(!a.ok)return{found:!1};return await a.json()}catch(e){return console.error("MeteoService Manual Prediction Error:",e),{found:!1}}}}},88314:(e,a,n)=>{n.d(a,{Iq:()=>l,tP:()=>t});let t=["asturmet","ecmwf","gfs"];function l(e,a="?"){return"asturmet"===e?"":`${a}model=${e}`}},89999:(e,a,n)=>{n.d(a,{B:()=>m,ForecastScopeProvider:()=>c});var t=n(95155),l=n(12115),i=n(50109),o=n(71549),r=n(11571),s=n(74635);let u=(0,l.createContext)(null);function c({children:e}){let[a,n]=(0,l.useState)(o.uO.regions),[m,g]=(0,l.useState)(null),[d,p]=(0,l.useState)(!0),[y,_]=(0,l.useState)(!1),{nearestLocation:f}=(0,i.m)(),b=(0,r.ad)(a,m,f?.scope??null),v=b.id;(0,l.useEffect)(()=>{let e=!0;return s.S.getForecastRegions().then(a=>{e&&(n(a.regions),_(a.runId!==o.uO.runId),g(e=>e&&a.regions.some(({id:a})=>a===e)?e:null))}).catch(()=>{}).finally(()=>{e&&p(!1)}),()=>{e=!1}},[]);let h=(0,l.useCallback)(e=>{a.some(({id:a})=>a===e)&&g(e)},[a]),w=(0,l.useCallback)(e=>a.find(({id:a})=>a===e)??null,[a]),C=(0,l.useMemo)(()=>({scope:v,region:b,regions:a,loading:d,hasActiveRegistry:y,setScope:h,getRegion:w}),[v,b,a,d,y,h,w]);return(0,t.jsx)(u.Provider,{value:C,children:e})}function m(){let e=(0,l.useContext)(u);if(!e)throw Error("useForecastScope must be used within ForecastScopeProvider");return 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.