1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70766,e=>{"use strict";var t=e.i(81658),r=e.i(75157);let o=(0,e.i(49073).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var l=e.i(90691),n=e.i(19455);e.s(["default",0,function({children:e,className:a}){let[s,i]=(0,l.useState)(!0),[c,d]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{let e=()=>{d(window.innerWidth<768)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,t.jsxs)(t.Fragment,{children:[c&&!s&&(0,t.jsx)(n.Button,{onClick:()=>i(!s),className:"fixed md:hidden bottom-10 z-50 right-4 px-3 py-2 bg-green-600 text-black hover:text-white rounded shadow-lg transition-opacity duration-300 opacity-100",children:"View details"}),(0,t.jsxs)("aside",{className:(0,r.cn)("fixed inset-x-0 bottom-0","h-[80vh] bg-white","transform transition-transform duration-300 ease-in-out","z-40 overflow-y-auto",s?"translate-y-0":"translate-y-full",a),children:[(0,t.jsx)(n.Button,{onClick:()=>i(!1),className:"absolute top-4 right-4 p-2 bg-black/30 text-black rounded",children:(0,t.jsx)(o,{className:"h-6 w-6"})}),(0,t.jsx)("div",{className:"p-4 pt-15 bg-[#05b15d]/45",children:e})]})]})}],70766)},13967,e=>{"use strict";var t=e.i(81658),r=e.i(80844);let o=(0,r.createServerReference)("40add1ad2701c65b43813281a13444bce715da0a17",r.callServer,void 0,r.findSourceMapURL,"fetchLocationData");var l=e.i(8844),n=e.i(15288),a=e.i(90691),s=e.i(20397),i=e.i(39039),c=e.i(77132),d=e.i(67177),u=e.i(77532),f=e.i(40505),m=e.i(19859),p=e.i(27069),h=e.i(91967),v="ScrollArea",[x,b]=(0,c.createContextScope)(v),[g,w]=x(v),j=a.forwardRef((e,r)=>{let{__scopeScrollArea:o,type:l="hover",dir:n,scrollHideDelay:i=600,...c}=e,[u,m]=a.useState(null),[p,h]=a.useState(null),[v,x]=a.useState(null),[b,w]=a.useState(null),[j,y]=a.useState(null),[N,C]=a.useState(0),[S,R]=a.useState(0),[E,P]=a.useState(!1),[T,L]=a.useState(!1),A=(0,d.useComposedRefs)(r,e=>m(e)),I=(0,f.useDirection)(n);return(0,t.jsx)(g,{scope:o,type:l,dir:I,scrollHideDelay:i,scrollArea:u,viewport:p,onViewportChange:h,content:v,onContentChange:x,scrollbarX:b,onScrollbarXChange:w,scrollbarXEnabled:E,onScrollbarXEnabledChange:P,scrollbarY:j,onScrollbarYChange:y,scrollbarYEnabled:T,onScrollbarYEnabledChange:L,onCornerWidthChange:C,onCornerHeightChange:R,children:(0,t.jsx)(s.Primitive.div,{dir:I,...c,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":N+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});j.displayName=v;var y="ScrollAreaViewport",N=a.forwardRef((e,r)=>{let{__scopeScrollArea:o,children:l,nonce:n,...i}=e,c=w(y,o),u=a.useRef(null),f=(0,d.useComposedRefs)(r,u,c.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),(0,t.jsx)(s.Primitive.div,{"data-radix-scroll-area-viewport":"",...i,ref:f,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});N.displayName=y;var C="ScrollAreaScrollbar",S=a.forwardRef((e,r)=>{let{forceMount:o,...l}=e,n=w(C,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=n,c="horizontal"===e.orientation;return a.useEffect(()=>(c?s(!0):i(!0),()=>{c?s(!1):i(!1)}),[c,s,i]),"hover"===n.type?(0,t.jsx)(R,{...l,ref:r,forceMount:o}):"scroll"===n.type?(0,t.jsx)(E,{...l,ref:r,forceMount:o}):"auto"===n.type?(0,t.jsx)(P,{...l,ref:r,forceMount:o}):"always"===n.type?(0,t.jsx)(T,{...l,ref:r}):null});S.displayName=C;var R=a.forwardRef((e,r)=>{let{forceMount:o,...l}=e,n=w(C,e.__scopeScrollArea),[s,c]=a.useState(!1);return a.useEffect(()=>{let e=n.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},o=()=>{t=window.setTimeout(()=>c(!1),n.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",o),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",o)}}},[n.scrollArea,n.scrollHideDelay]),(0,t.jsx)(i.Presence,{present:o||s,children:(0,t.jsx)(P,{"data-state":s?"visible":"hidden",...l,ref:r})})}),E=a.forwardRef((e,r)=>{var o;let{forceMount:l,...n}=e,s=w(C,e.__scopeScrollArea),c="horizontal"===e.orientation,d=Y(()=>f("SCROLL_END"),100),[u,f]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},a.useReducer((e,t)=>
1o[e][t]??e,"hidden"));return a.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>f("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,s.scrollHideDelay,f]),a.useEffect(()=>{let e=s.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],o=()=>{let o=e[t];r!==o&&(f("SCROLL"),d()),r=o};return e.addEventListener("scroll",o),()=>e.removeEventListener("scroll",o)}},[s.viewport,c,f,d]),(0,t.jsx)(i.Presence,{present:l||"hidden"!==u,children:(0,t.jsx)(T,{"data-state":"hidden"===u?"hidden":"visible",...n,ref:r,onPointerEnter:(0,h.composeEventHandlers)(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:(0,h.composeEventHandlers)(e.onPointerLeave,()=>f("POINTER_LEAVE"))})})}),P=a.forwardRef((e,r)=>{let o=w(C,e.__scopeScrollArea),{forceMount:l,...n}=e,[s,c]=a.useState(!1),d="horizontal"===e.orientation,u=Y(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return X(o.viewport,u),X(o.content,u),(0,t.jsx)(i.Presence,{present:l||s,children:(0,t.jsx)(T,{"data-state":s?"visible":"hidden",...n,ref:r})})}),T=a.forwardRef((e,r)=>{let{orientation:o="vertical",...l}=e,n=w(C,e.__scopeScrollArea),s=a.useRef(null),i=a.useRef(0),[c,d]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=K(c.viewport,c.content),f={...l,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function m(e,t){return function(e,t,r,o="ltr"){let l=$(r),n=t||l/2,a=r.scrollbar.paddingStart+n,s=r.scrollbar.size-r.scrollbar.paddingEnd-(l-n),i=r.content-r.viewport;return Q([a,s],"ltr"===o?[0,i]:[-1*i,0])(e)}(e,i.current,c,t)}return"horizontal"===o?(0,t.jsx)(L,{...f,ref:r,onThumbPositionChange:()=>{if(n.viewport&&s.current){let e=F(n.viewport.scrollLeft,c,n.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{n.viewport&&(n.viewport.scrollLeft=e)},onDragScroll:e=>{n.viewport&&(n.viewport.scrollLeft=m(e,n.dir))}}):"vertical"===o?(0,t.jsx)(A,{...f,ref:r,onThumbPositionChange:()=>{if(n.viewport&&s.current){let e=F(n.viewport.scrollTop,c);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{n.viewport&&(n.viewport.scrollTop=e)},onDragScroll:e=>{n.viewport&&(n.viewport.scrollTop=m(e))}}):null}),L=a.forwardRef((e,r)=>{let{sizes:o,onSizesChange:l,...n}=e,s=w(C,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),f=(0,d.useComposedRefs)(r,u,s.onScrollbarXChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"horizontal",...n,ref:f,sizes:o,style:{bottom:0,left:"rtl"===s.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===s.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":$(o)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(s.viewport){var o,l;let n=s.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),o=n,l=r,o>0&&o<l&&t.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&l({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:U(i.paddingLeft),paddingEnd:U(i.paddingRight)}})}})}),A=a.forwardRef((e,r)=>{let{sizes:o,onSizesChange:l,...n}=e,s=w(C,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),f=(0,d.useComposedRefs)(r,u,s.onScrollbarYChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"vertical",...n,ref:f,sizes:o,style:{top:0,right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":$(o)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(s.viewport){var o,l;let n=s.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),o=n,l=r,o>0&&o<l&&t.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&l({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:U(i.paddingTop),paddingEnd:U(i.paddingBottom)}})}})}),[I,z]=x(C),_=a.forwardRef((e,r)=>{let{__scopeScrollArea:o,sizes:l,hasThumb:n,onThumbChange:i,onThumbPointerUp:c,onThumbPointerDown:f,onThumbPositionChange:m,onDragScroll:p,onWheelScroll:v,onResize:x,...b}=e,g=w(C,o),[j,y]=a.useState(null),N=(0,d.useComposedRefs)(r,e=>y(e)),S=a.useRef(null),R=a.useRef(""),E=g.viewport,P=l.content-l.viewport,T=(0,u.useCallbackRef)(v),L=(0,u.useCallbackRef)(m),A=Y(x,10);function z(e){S.current&&p({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return a.useEffect(()=>{let e=e=>{let t=e.target;j?.contains(t)&&T(e,P)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[E,j,P,T]),a.useEffect(L,[l,L]),X(j,A),X(g.content,A),(0,t.jsx)(I,{scope:o,scrollbar:j,hasThumb:n,onThumbChange:(0,u.useCallbackRef)(i),onThumbPointerUp:(0,u.useCallbackRef)(c),onThumbPositionChange:L,onThumbPointerDown:(0,u.useCallbackRef)(f),children:(0,t.jsx)(s.Primitive.div,{...b,ref:N,style:{position:"absolute",...b.style},onPointerDown:(0,h.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=j.getBoundingClientRect(),R.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",g.viewport&&(g.viewport.style.scrollBehavior="auto"),z(e))}),onPointerMove:(0,h.composeEventHandlers)(e.onPointerMove,z),onPointerUp:(0,h.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=R.current,g.viewport&&(g.viewport.style.scrollBehavior=""),S.current=null})})})}),k="ScrollAreaThumb",D=a.forwardRef((e,r)=>{let{forceMount:o,...l}=e,n=z(k,e.__scopeScrollArea);return(0,t.jsx)(i.Presence,{present:o||n.hasThumb,children:(0,t.jsx)(O,{ref:r,...l})})}),O=a.forwardRef((e,r)=>{let{__scopeScrollArea:o,style:l,...n}=e,i=w(k,o),c=z(k,o),{onThumbPositionChange:u}=c,f=(0,d.useComposedRefs)(r,e=>c.onThumbChange(e)),m=a.useRef(void 0),p=Y(()=>{m.current&&(m.current(),m.current=void 0)},100);return a.useEffect(()=>{let e=i.viewport;if(e){let t=()=>{p(),m.current||(m.current=B(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[i.viewport,p,u]),(0,t.jsx)(s.Primitive.div,{"data-state":c.hasThumb?"visible":"hidden",...n,ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,h.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,o=e.clientY-t.top;c.onThumbPointerDown({x:r,y:o})}),onPointerUp:(0,h.composeEventHandlers)(e.onPointerUp,c.onThumbPointerUp)})});D.displayName=k;var H="ScrollAreaCorner",M=a.forwardRef((e,r)=>{let o=w(H,e.__scopeScrollArea),l=!!(o.scrollbarX&&o.scrollbarY);return"scroll"!==o.type&&l?(0,t.jsx)(W,{...e,ref:r}):null});M.displayName=H;var W=a.forwardRef((e,r)=>{let{__scopeScrollArea:o,...l}=e,n=w(H,o),[i,c]=a.useState(0),[d,u]=a.useState(0),f=!!(i&&d);return X(n.scrollbarX,()=>{let e=n.scrollbarX?.offsetHeight||0;
1n.onCornerHeightChange(e),u(e)}),X(n.scrollbarY,()=>{let e=n.scrollbarY?.offsetWidth||0;n.onCornerWidthChange(e),c(e)}),f?(0,t.jsx)(s.Primitive.div,{...l,ref:r,style:{width:i,height:d,position:"absolute",right:"ltr"===n.dir?0:void 0,left:"rtl"===n.dir?0:void 0,bottom:0,...e.style}}):null});function U(e){return e?parseInt(e,10):0}function K(e,t){let r=e/t;return isNaN(r)?0:r}function $(e){let t=K(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let o=$(t),l=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-l,a=t.content-t.viewport,s=(0,p.clamp)(e,"ltr"===r?[0,a]:[-1*a,0]);return Q([0,a],[0,n-o])(s)}function Q(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let o=(t[1]-t[0])/(e[1]-e[0]);return t[0]+o*(r-e[0])}}var B=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},o=0;return!function l(){let n={left:e.scrollLeft,top:e.scrollTop},a=r.left!==n.left,s=r.top!==n.top;(a||s)&&t(),r=n,o=window.requestAnimationFrame(l)}(),()=>window.cancelAnimationFrame(o)};function Y(e,t){let r=(0,u.useCallbackRef)(e),o=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(o.current),[]),a.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function X(e,t){let r=(0,u.useCallbackRef)(t);(0,m.useLayoutEffect)(()=>{let t=0;if(e){let o=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return o.observe(e),()=>{window.cancelAnimationFrame(t),o.unobserve(e)}}},[e,r])}var V=e.i(75157);function Z({className:e,children:r,...o}){return(0,t.jsxs)(j,{"data-slot":"scroll-area",className:(0,V.cn)("relative",e),...o,children:[(0,t.jsx)(N,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:r}),(0,t.jsx)(q,{}),(0,t.jsx)(M,{})]})}function q({className:e,orientation:r="vertical",...o}){return(0,t.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:r,className:(0,V.cn)("flex touch-none p-px transition-colors select-none","vertical"===r&&"h-full w-2.5 border-l border-l-transparent","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent",e),...o,children:(0,t.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}var G=e.i(32854),J="horizontal",ee=["horizontal","vertical"],et=a.forwardRef((e,r)=>{var o;let{decorative:l,orientation:n=J,...a}=e,s=(o=n,ee.includes(o))?n:J;return(0,t.jsx)(G.Primitive.div,{"data-orientation":s,...l?{role:"none"}:{"aria-orientation":"vertical"===s?s:void 0,role:"separator"},...a,ref:r})});et.displayName="Separator";let er=a.forwardRef(({className:e,orientation:r="horizontal",decorative:o=!0,...l},n)=>(0,t.jsx)(et,{ref:n,decorative:o,orientation:r,className:(0,V.cn)("shrink-0 bg-border","horizontal"===r?"h-[1px] w-full":"h-full w-[1px]",e),...l}));er.displayName=et.displayName;var eo=e.i(53401),el=e.i(91121),en=e.i(49073);let ea=(0,en.default)("droplets",[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]]),es=(0,en.default)("thermometer",[["path",{d:"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"17jzev"}]]);var ei=e.i(86508),ec=e.i(2159),ed=e.i(45194),eu=e.i(23872),ef=e.i(25441),em=e.i(34604);e.s(["default",0,function(){let e=(0,ei.useLocale)(),r=(0,ec.useTranslations)("Map"),{locationId:s,isMapUpdated:i,setIsMapUpdated:c}=(0,el.default)(),[d,u]=(0,a.useState)(),[f,m]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=async()=>{try{let e=await o(`${s}`);if(null===e){let e=await (0,l.fetchUniqueLocation)(`${s}`);u(e),m(!0);return}i||ef.toast.promise(Promise.resolve(e),{loading:`${r("loading")}`,success:`${r("success")}`,error:`${r("error")}`,position:"top-right"}),u(e),m(!1)}catch(e){ef.toast.error(`${r("error")} ${e.message}`)}};s&&(e(),c(!1))},[s,i,c]);let p=(0,a.useMemo)(()=>
1{if(d)return(0,V.calculateOverallAqi)(d)},[d]);return(0,t.jsxs)("div",{className:"w-full md:w-96 mx-auto md:border-l md:border-gray-200 bg-background p-4 md:p-6 flex flex-col h-full rounded md:rounded-none",children:[d?(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-2xl font-bold mb-2",children:r("location")}),(0,t.jsxs)("div",{className:"flex justify-between items-center gap-3 text-sm text-muted-foreground",children:[(0,t.jsxs)("p",{className:"relative flex items-center",children:[d?.locationName,f&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"absolute -top-1 -right-3 flex size-3 cursor-pointer",title:"The sensor seems to be offline.",children:[(0,t.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-red-400 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex size-3 rounded-full bg-red-500"})]}),(0,t.jsx)("span",{className:"absolute -top-[0.37rem] -right-[1.9rem] text-red-600 text-xs font-semibold",children:"off"})]})]}),(0,t.jsx)("time",{className:"text-xs text-right",children:(0,V.formatDateToLocaleString)(e,d?.timestamp)})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center",children:[(0,t.jsx)("span",{className:"font-medium",children:r("aqiIndex")}),(0,t.jsx)("span",{className:"text-xl font-bold",children:p?.Overall_AQI})]}),(0,t.jsx)(em.default,{value:Math.round(p?.Overall_AQI||0),label:(0,V.getAqiDescription)(p?.Overall_AQI||0).category,limits:[{value:50,color:eo.COLORS.green},{value:100,color:eo.COLORS.yellow},{value:150,color:eo.COLORS.orange},{value:200,color:eo.COLORS.red},{value:300,color:eo.COLORS.purple},{value:301,color:eo.COLORS.maroon}],min:0,max:500})]}),(0,t.jsxs)(Z,{className:"max-h-auto",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,t.jsxs)(n.Card,{children:[(0,t.jsx)(n.CardHeader,{className:"p-3",children:(0,t.jsxs)(n.CardTitle,{className:"flex items-center text-sm font-medium",children:[(0,t.jsx)(es,{className:"mr-2 h-4 w-4"}),r("temperature")]})}),(0,t.jsx)(n.CardContent,{className:"p-3 pt-0",children:(0,t.jsxs)("div",{className:"text-sm md:text-lg font-bold",children:[(0,V.formatTo2Places)(d?.atmp)," °C"]})})]}),(0,t.jsxs)(n.Card,{children:[(0,t.jsx)(n.CardHeader,{className:"p-3",children:(0,t.jsxs)(n.CardTitle,{className:"flex items-center text-sm font-medium",children:[(0,t.jsx)(ea,{className:"mr-2 h-4 w-4"}),r("humidity")]})}),(0,t.jsx)(n.CardContent,{className:"p-3 pt-0",children:(0,t.jsxs)("div",{className:"text-sm md:text-lg font-bold",children:[(0,V.formatTo2Places)(d?.rhum)," %"]})})]})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h3",{className:"font-semibold",children:r("pollutants")}),(0,t.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"PM01"}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.pm01)})," μg/m³"]})]}),(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"PM2.5"}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.pm02)})," μg/m³"]})]}),(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"PM10"}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.pm10)})," μg/m³"]})]}),(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"CO2"}),(0,t.jsx)("p",{children:(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.rco2)})})]}),(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"NOx"}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.noxIndex)})," ppb"]})]}),(0,t.jsxs)("div",{className:"flex justify-between",children:[(0,t.jsx)("span",{children:"TVOC"}),(0,t.jsx)("p",{children:(0,t.jsx)("span",{className:"font-semibold",children:(0,V.formatTo2Places)(d?.tvoc)})})]})]})]})]})]}):(0,t.jsx)("div",{className:"text-sm text-center font-medium animate-pulse text-green-700",children:r("nodata")}),(0,t.jsxs)("footer",{className:"mt-auto pt-5",children:[(0,t.jsx)(er,{className:"mt-4"}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h3",{className:"font-semibold mt-2",children:r("partners")}),(0,t.jsxs)("div",{className:"flex flex-col justify-center space-y-2",children:[(0,t.jsxs)("div",{className:"flex flex-col space-y-3 md:flex-row justify-center items-center space-x-2",children:[(0,t.jsx)(eu.default,{href:"https://wasaruwash.org/",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(ed.default,{src:"/logo-wasaru-new.jpeg",alt:"Wasauru Logo",width:100,height:50,className:"h-24 w-auto object-cover transition-transform duration-300 ease-in-out hover:scale-105",priority:!0})}),(0,t.jsx)(eu.default,{href:"https://epic.uchicago.edu/area-of-focus/clean-air-program/",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(ed.default,{src:"/logo-epic.png",alt:"EPIC Chicago Logo",width:100,height:50,className:"h-16 w-auto object-cover transition-transform duration-300 ease-in-out hover:scale-105",priority:!0})})]}),(0,t.jsx)("div",{className:"flex justify-center items-center space-x-2",children:(0,t.jsx)(eu.default,{href:"https://aerosol.ldeo.columbia.edu/",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(ed.default,{src:"/logo-westerveltgroup.png",alt:"Westervelt Group Logo",width:100,height:50,className:"h-12 w-auto p-1 object-fit md:object-cover transition-transform duration-300 ease-in-out hover:scale-105",priority:!0})})})]})]}),(0,t.jsxs)("div",{className:"mt-3 text-center text-xs text-muted-foreground",children:["© Copyright WASARU ",new Date().getFullYear()]})]})]})}],13967)},42642,e=>{"use strict";var t=e.i(81658),r=e.i(80844);let o=(0,r.createServerReference)("006114f1bdbbb74400d966a7855a4b131b912fcc43",r.callServer,void 0,r.findSourceMapURL,"fetchKinAQData"),l=[{label:"Map",source:"https://raw.githubusercontent.com/go2garret/maps/main/sr
1c/assets/json/openStreetMap.json"},{label:"Satellite",source:"https://raw.githubusercontent.com/go2garret/maps/main/src/assets/json/arcgis_hybrid.json"}],n=[{locationName:"KINAQ BelAir",locationId:155791,coordinates:[15.275384,-4.435699]},{locationName:"KINAQ Gare Centrale",locationId:155432,coordinates:[15.31421,-4.30353]},{locationName:"KINAQ Huilleries",locationId:155445,coordinates:[15.30345461202056,-4.3116352271371]},{locationName:"KINAQ Kalembelembe",locationId:155647,coordinates:[15.303139505375293,-4.32453608278304]},{locationName:"KINAQ Kimwenza",locationId:153688,coordinates:[15.273191482850512,-4.469586791919752]},{locationName:"Kitambo",locationId:161050,coordinates:[15.254485580805019,-4.332311322644807]},{locationName:"KINAQ Lemba",locationId:190717,coordinates:[15.31654,-4.40061]},{locationName:"KINAQ Limete",locationId:155951,coordinates:[15.3437,-4.36597]},{locationName:"KINAQ Masiala",locationId:154304,coordinates:[15.248748794122553,-4.370019400071179]},{locationName:"KINAQ UPN",locationId:154639,coordinates:[15.25848,-4.39785]},{locationName:"KINAQ Cité Verte",locationId:155431,coordinates:[15.25749,-4.44431]}];var a=e.i(75157),s=e.i(91121),i=e.i(12769),c=e.i(86508),d=e.i(34297),u=e.i(90691);let f=async(e,t,r,l,s)=>{let c={type:"FeatureCollection",features:(await o()).map(e=>{let t=n.find(t=>t.locationId===e.locationId);return{type:"Feature",geometry:{type:"Point",coordinates:t?.coordinates},properties:{locationId:e.locationId,locationName:e.locationName,pm2_5:e.pm02,t
1imestamp:e.timestamp,offline:e.offline}}})};e.getSource("locations")?e.getSource("locations").setData(c):(e.addSource("locations",{type:"geojson",data:c}),e.addLayer({id:"location-points",type:"circle",source:"locations",paint:{"circle-radius":8,"circle-stroke-width":2,"circle-stroke-color":["case",["==",["get","offline"],!0],"#FFF","darkgreen"],"circle-color":["step",["get","pm2_5"],(0,a.getPM25Color)(10),12,(0,a.getPM25Color)(35),35.4,(0,a.getPM25Color)(50),55.4,(0,a.getPM25Color)(100),150.4,(0,a.getPM25Color)(180),250.4,(0,a.getPM25Color)(300)]}}),e.on("click","location-points",e=>{let t=(e.features?.[0].geometry).coordinates,{locationId:o}=e.features?.[0].properties||{};l(o,t),r(o)}),e.on("mousemove","location-points",r=>{let o=(r.features?.[0].geometry).coordinates,{locationName:l,pm2_5:n,timestamp:c}=r.features?.[0].properties||{};t.current?.remove(),t.current=new i.default.Popup({closeButton:!1}).setLngLat(o).setHTML(`<strong>${l}</strong><br>PM2.5: ${n??"-"} μg/m\xb3<br>Last updated: ${(0,a.formatDateToLocaleString)(s,c)}`).addTo(e)}),e.on("mouseenter","location-points",()=>{e.getCanvas().style.cursor="pointer"}),e.on("mouseleave","location-points",()=>{e.getCanvas().style.cursor="",t.current?.remove()}))};e.s(["default",0,()=>{let e=(0,u.useRef)(null),r=(0,u.useRef)(null),o=(0,u.useRef)(null),n=(()=>{let[e,t]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{let e=()=>t(window.innerWidth<768);return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e})(),a=(0,c.useLocale)(),m=(0,d.useRouter)(),[p,h]=(0,u.useState)(l[0].source),{retrieveLocation:v,coordinates:x,locationId:b,setIsMapUpdated:g}=(0,s.default)(),w=((e,t)=>{let[r,o]=(0,u.useState)(null);return(0,u.useEffect)(()=>{if(!e)return;if(t)return void e.scrollZoom.enable();e.scrollZoom.disable();let r=t=>{t.ctrlKey?(o(null),e.scrollZoom.enable()):(o("Hold Ctrl to zoom"),e.scrollZoom.disable(),setTimeout(()=>o(null),1500))};return e.getCanvas().addEventListener("wheel",r,{passive:!1}),()=>{e.getCanvas().removeEventListener("wheel",r)}},[e,t]),r})(e.current,n);return(0,u.useEffect)(()=>{if(e.current||!o.current)return;let t=new i.default.Map({container:o.current,style:p,center:[20,0],zoom:1,maxBounds:[14.66241,-5.501214,17.093503,-3.307021],attributionControl:!1});t.addControl(new i.NavigationControl,"top-right"),t.addControl(new i.GeolocateControl({positionOptions:{enableHighAccuracy:!0}})),t.addControl(new i.ScaleControl({maxWidth:80,unit:"metric"})),t.addControl(new i.AttributionControl({compact:!0,customAttribution:'<a href="https://www.airgradient.com/" target="_blank">© AirGradient</a> | <a href="https://www.wasaru.org/" target="_blank">© WASARU</a>'})),e.current=t,t.on("load",()=>{f(t,r,()=>{},v,a)})},[]),(0,u.useEffect)(()=>{if(!e.current)return;let t=setInterval(async()=>{await f(e.current,r,()=>{},v,a),-1!==b&&x&&(v(b,x),g(!0)),m.refresh()},6e4);return()=>clearInterval(t)},[b,x]),(0,u.useEffect)(()=>{if(!e.current||!x||0===x.length)return;let t=setTimeout(()=>{e.current?.flyTo({center:x,zoom:12,essential:!0})},1500);return()=>clearTimeout(t)},[x]),(0,t.jsxs)("div",{className:"relative h-full w-full",children:[w&&(0,t.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-black/50 bg-opacity-50 text-white z-10 pointer-events-none",children:w}),(0,t.jsx)("div",{className:"absolute left-2 top-2 z-20 flex rounded-md shadow-xs",children:l.map((o,n)=>(0,t.jsx)("button",{onClick:()=>(t=>{if(!e.current)return;let o=l.find(e=>e.label===t);if(o&&o.source!==p){h(o.source);let t=e.current.getCenter(),l=e.current.getZoom();e.current.once("styledata",()=>{f(e.current,r,()=>{},v,a),e.current.setCenter(t),e.current.setZoom(l)}),e.current.setStyle(o.source)}})(o.label),className:`px-4 py-2 text-sm font-medium border border-gray-300 bg-white text-gray-700 hover:bg-gray-50 2 ${0===n?"rounded-l-md":""} 3 ${n===l.length-1?"rounded-r-md":"-ml-px"} 4 ${p===o.source?"bg-gray-300 font-bold outline-2 outline-blue-500 z-10":""}`,children:o.label},o.label))}),(0,t.jsx)("div",{ref:o,className:"h-full w-full"})]})}],42642)}]);
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.