"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3547],{23547:function(e,t,a){a.r(t),a.d(t,{GlobalMap:function(){return GlobalMap},LazyGlobalMap:function(){return S}});var s=a(57437),l=a(2265),r=a(40445),n=a(28811),i=a.n(n),o=a(54381),c=a(65050),u=a(84007),d=a(61396),m=a.n(d),x=a(24154),h=a(73051),b=a(39370),p=a(16691),g=a.n(p),j=a(54440),f=a.n(j),v=a(37005),y=a(39267);let usePrevNextButtons=e=>{let[t,a]=(0,l.useState)(!0),[s,r]=(0,l.useState)(!0),n=(0,l.useCallback)(t=>{t.stopPropagation(),null!=e&&e.scrollPrev()},[e]),i=(0,l.useCallback)(t=>{t.stopPropagation(),null!=e&&e.scrollNext()},[e]),o=(0,l.useCallback)(e=>{a(!e.canScrollPrev()),r(!e.canScrollNext())},[]);return(0,l.useEffect)(()=>{null!=e&&(o(e),e.on("reInit",o),e.on("select",o))},[e,o]),{prevBtnDisabled:t,nextBtnDisabled:s,onPrevButtonClick:n,onNextButtonClick:i}},PrevButton=e=>(0,s.jsx)(BaseButton,{...e,icon:v.W}),NextButton=e=>(0,s.jsx)(BaseButton,{...e,icon:y.T}),BaseButton=e=>{let{icon:t,children:a,disabled:l=!1,...r}=e;return(0,s.jsx)("button",{className:f()("h-full px-2",!l&&"hover:bg-base-300/60"),type:"button",disabled:null!=l&&l,...r,children:(0,s.jsx)(t,{weight:"bold",size:24,className:f()("text-base-100",l&&"opacity-20")})})},MiniCarousel=e=>{let{mediaList:t}=e,[a,l]=(0,b.Z)({dragFree:!0,align:"start"}),{prevBtnDisabled:r,nextBtnDisabled:n,onPrevButtonClick:i,onNextButtonClick:o}=usePrevNextButtons(l);if(0===t.length)return null;let c=1===t.length;return(0,s.jsxs)("section",{className:"overflow-hidden relative",ref:a,children:[(0,s.jsx)("div",{className:"flex h-40 gap-x-1",children:t.map(e=>(0,s.jsx)(Slide,{media:e,isSingle:c},e.mediaUrl))}),!c&&(0,s.jsxs)("div",{className:"absolute top-0 left-0 w-full h-full flex justify-between",children:[(0,s.jsx)(PrevButton,{disabled:r,onClick:i}),(0,s.jsx)(NextButton,{disabled:n,onClick:o})]})]})},Slide=e=>{let{media:t,isSingle:a}=e,{mediaUrl:l,width:r,height:n}=t;return(0,s.jsx)("div",{className:f()("grow-0 shrink-0  min-w-0 h-40 bg-base-200",a?"basis-full":"basis-5/6"),children:(0,s.jsx)(g(),{src:l,alt:"media",width:r,height:n,sizes:"10vw"})})},CragDrawerContent=e=>{let{id:t,areaName:a,climbs:l,content:{description:r},media:n}=e,i=(0,x.pu)(t,a),o="/editArea/".concat(t,"/general");return(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)(BaseDrawerContent,{media:(0,s.jsx)(MiniCarousel,{mediaList:n}),heading:(0,s.jsx)(m(),{href:i,children:a}),subheading:(0,s.jsx)(Subheading,{id:t,totalClimbs:l.length}),cta:(0,s.jsx)(m(),{className:"btn btn-primary btn-outline btn-sm no-animation",href:o,children:"Edit area"}),share:(0,s.jsx)("button",{className:"btn btn-primary btn-sm no-animation",children:"Share"}),children:[(0,s.jsx)("section",{className:"text-sm",children:null==r||""===r.trim()?(0,s.jsxs)("p",{className:"text-secondary",children:["No description available. ",(0,s.jsx)("a",{className:"text-accent hover:underline",href:o,children:"[Add]"})]}):(0,s.jsx)("p",{children:r})}),(0,s.jsx)("hr",{}),(0,s.jsx)(MicroClimbList,{climbs:l})]})})},Subheading=e=>{let{id:t,totalClimbs:a}=e;return(0,s.jsxs)("div",{className:"flex items-center gap-4 tracking-tight text-xs",children:[(0,s.jsx)(h.WG,{type:"crag",size:16}),(0,s.jsxs)("span",{className:"uppercase flex items-center gap-1",children:[(0,s.jsx)(h.WG,{type:"climb",size:16,withLabel:!1}),Intl.NumberFormat().format(a)," climbs"]})]})},MicroClimbList=e=>{let{climbs:t}=e;return(0,s.jsxs)("section",{children:[(0,s.jsx)("h3",{className:"text-base font-semibold text-secondary",children:"Climbs"}),(0,s.jsx)("ol",{children:t.map(e=>{let t="/climb/".concat(e.id);return(0,s.jsx)("li",{className:"text-xs",children:(0,s.jsx)("a",{href:t,className:"hover:underline",children:e.name})},e.id)})})]})},CragHoverCardContent=e=>{let{id:t,areaName:a,climbs:l}=e;return(0,s.jsxs)("div",{className:"flex flex-col gap-y-1 text-xs",children:[(0,s.jsx)("a",{href:(0,x.pu)(t,a),className:"text-base font-medium tracking-tight hover:underline",onClick:e=>e.stopPropagation(),children:a}),(0,s.jsx)(Subheading,{id:t,totalClimbs:l.length})]})},AreaDrawerContent=e=>{let{id:t,areaName:a,subareas:l,totalClimbs:r,media:n}=e,i="/editArea/".concat(t,"/general");return(0,s.jsx)(BaseDrawerContent,{media:(0,s.jsx)(MiniCarousel,{mediaList:n}),heading:(0,s.jsx)(m(),{href:(0,x.pu)(t,a),children:a}),subheading:(0,s.jsx)(AreaContent_Subheading,{subareas:l,totalClimbs:r}),cta:(0,s.jsx)(m(),{className:"btn btn-primary btn-outline btn-sm no-animation",href:i,children:"Edit area"}),children:(0,s.jsx)(SubAreas,{subareas:l})})},SubAreas=e=>{let{subareas:t}=e;return(0,s.jsx)("ol",{className:"",children:t.map((e,t)=>{let{id:a,areaName:l,totalClimbs:r}=e;return(0,s.jsxs)("li",{className:"py-1 flex items-center gap-1",children:[(0,s.jsxs)("span",{className:"shrink-0 text-sm text-secondary text-right w-8",children:[t+1,"."]}),(0,s.jsxs)(m(),{href:(0,x.pu)(a,l),className:"grow flex justify-between overflow-hidden gap-4",children:[(0,s.jsx)("div",{className:"hover:underline truncate",children:l}),(0,s.jsxs)("div",{className:"flex items-center text-secondary gap-1 w-12 shrink-0",children:[(0,s.jsx)(h.WG,{type:"climb",size:16,withLabel:!1}),r]})]})]},a)})})},AreaHoverCardContent=e=>{let{id:t,areaName:a,subareas:l,media:r,totalClimbs:n}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("a",{href:(0,x.pu)(t,a),className:"text-lg font-semibold tracking-tight hover:underline",onClick:e=>e.stopPropagation(),children:a}),(0,s.jsx)(AreaContent_Subheading,{subareas:l,totalClimbs:n})]})},AreaContent_Subheading=e=>{let{subareas:t,totalClimbs:a}=e;return(0,s.jsxs)("div",{className:"flex items-center gap-4 tracking-tight text-xs",children:[(0,s.jsx)("span",{className:"bg-area-cue/80 text-base-100 p-1",children:(0,s.jsx)(h.WG,{type:"area",size:16})}),(0,s.jsxs)("span",{className:"uppercase flex items-center gap-1",children:[(0,s.jsx)(h.WG,{type:"area",size:16,withLabel:!1}),t.length," ",(0,s.jsx)("span",{className:"hidden md:inline",children:"Sub-areas"})]}),(0,s.jsxs)("span",{className:"uppercase flex items-center gap-1",children:[(0,s.jsx)(h.WG,{type:"climb",size:16,withLabel:!1}),Intl.NumberFormat().format(a)," climbs"]})]})},Drawer=e=>{let{feature:t,onClose:a}=e;if(null==t)return null;let l=null;switch(t.type){case"crag-markers":case"crag-name-labels":l=(0,s.jsx)(CragDrawerContent,{...t.data});break;case"area-boundaries":l=(0,s.jsx)(AreaDrawerContent,{...t.data});break;default:return null}return(0,s.jsxs)(c.fC,{open:null!=t,children:[(0,s.jsx)(c.ee,{className:"absolute top-0 left-0 z-50"}),(0,s.jsx)(c.VY,{align:"start",className:"hover:outline-none z-50",children:l})]})},BaseDrawerContent=e=>{let{media:t,heading:a,subheading:l,cta:r,children:n,share:i}=e;return(0,s.jsxs)(u.Z,{className:"max-h-screen lg:w-[420px] rounded-none",children:[(0,s.jsx)("div",{children:t}),(0,s.jsxs)("div",{className:"flex flex-col gap-4 pb-6",children:[(0,s.jsxs)("section",{className:"flex flex-col gap-y-2",children:[(0,s.jsx)("div",{className:"text-2xl font-semibold leading-snug tracking-tight hover:underline",children:a}),l]}),(0,s.jsxs)("div",{className:"flex gap-2 w-full justify-between",children:[r,i]}),(0,s.jsx)("hr",{}),n]})]})},HoverCard=e=>{let t;let{type:a,data:l,point:r,geometry:n,mapInstance:i,onClick:o}=e,d=null;switch(a){case"crag-markers":case"crag-name-labels":t=i.project(n.coordinates),d=(0,s.jsx)(CragHoverCardContent,{...l});break;case"area-boundaries":t=r,d=(0,s.jsx)(AreaHoverCardContent,{...l});break;default:return null}let{media:m}=l;return(0,s.jsxs)(c.fC,{defaultOpen:!0,children:[(0,s.jsx)(c.ee,{style:{position:"absolute",left:t.x,top:t.y}}),(0,s.jsx)(c.VY,{align:"center",side:"top",sideOffset:2,sticky:"always",collisionPadding:24,className:"z-50 focus:outline-none cursor-pointer",onClick:t=>{t.stopPropagation(),o(e)},children:(0,s.jsx)(u.Z,{image:(0,s.jsx)(MiniCarousel,{mediaList:m}),className:"hidden md:block",children:d})})]})};var N=a(8159);let OBCustomLayers=e=>{let{layersState:t}=e,{areaBoundaries:a,crags:l}=t;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(N.Hw,{id:"areas",type:"vector",tiles:["https://maptiles.openbeta.io/areas/{z}/{x}/{y}.pbf"],promoteId:"id",maxzoom:8,attribution:"\xa9 OpenBeta contributors",children:[(0,s.jsx)(N.mh,{id:"area-boundaries",type:"line","source-layer":"areas",paint:{"line-color":["case",["boolean",["feature-state","hover"],!1],"#ec407a","#004F6E"],"line-width":{stops:[[6,2],[6.1,4]]},"line-blur":4,"line-opacity":.8},layout:{visibility:a?"visible":"none"}}),(0,s.jsx)(N.mh,{id:"area-background",type:"fill","source-layer":"areas",paint:{"fill-color":"#6366f1","fill-opacity":["case",["boolean",["feature-state","selected"],!1],.2,0]},layout:{visibility:a?"visible":"none"}})]}),(0,s.jsx)(N.Hw,{id:"crags",type:"vector",tiles:["https://maptiles.openbeta.io/crags/{z}/{x}/{y}.pbf"],promoteId:"id",maxzoom:11,attribution:"\xa9 OpenBeta contributors",children:(0,s.jsx)(N.mh,{id:"crag-name-labels",type:"symbol","source-layer":"crags",layout:{"icon-anchor":"center","text-field":["get","name"],"text-size":{stops:[[8,10],[12,12]]},"text-font":["Segoe UI","Roboto","Ubuntu","Helvetica Neue","Oxygen","Cantarell","sans-serif"],"text-variable-anchor":["bottom","top","left","right"],"text-radial-offset":["interpolate",["linear"],["zoom"],16,.5],"text-optional":!0,"symbol-sort-key":["match",["string",["get","media"]],["[]"],1,0],"icon-image":"circle-dot","icon-size":["interpolate",["linear"],["zoom"],6,.5,18,1],visibility:l?"visible":"none"},paint:{"icon-color":["match",["string",["get","media"]],["[]"],"#0c4a6e","#881337"],"text-halo-blur":1,"text-halo-width":2,"text-color":["match",["string",["get","media"]],["[]"],"#0c4a6e","#881337"],"text-halo-color":"#f3f4f6"}})})]})},tileToFeature=(e,t,a,s,l)=>{switch(e){case"crag-markers":case"crag-name-labels":return{type:e,point:t,geometry:a,data:transformCragTileProps(s),mapInstance:l};case"area-boundaries":return{type:e,point:t,geometry:a,data:transformCragGroupTileProps(s),mapInstance:l};default:return null}},transformCragTileProps=e=>{let{name:t,ancestors:a,pathTokens:s,climbs:l,media:r,content:n}=e;return{...e,areaName:t,ancestors:JSON.parse(a),pathTokens:JSON.parse(s),climbs:JSON.parse(l),media:JSON.parse(r),content:JSON.parse(n)}},transformCragGroupTileProps=e=>{var t;let{children:a,media:s,ancestors:l,pathTokens:r}=e;return{...e,ancestors:JSON.parse(l),pathTokens:JSON.parse(r),content:JSON.parse(null!==(t=null==e?void 0:e.content)&&void 0!==t?t:{}),subareas:JSON.parse(a),media:JSON.parse(s),aggregate:JSON.parse(e.aggregate)}};var C=a(2411);let MapToolbar=e=>{let{onChange:t,layerState:a}=e,{areaBoundaries:l,crags:r}=a;return(0,s.jsx)("div",{className:"absolute top-20 md:top-6 left-0 w-screen flex flex-col items-center justify-center",children:(0,s.jsxs)("ul",{className:"p-2.5 flex items-center gap-4 bg-base-200 rounded-box shadow-md border",children:[(0,s.jsx)(Checkbox,{value:r,label:"Crags/Boulders",onChange:()=>t({...a,crags:!r})}),(0,s.jsx)(Checkbox,{value:l,label:"Boundaries",onChange:()=>t({...a,areaBoundaries:!l})})]})})},Checkbox=e=>{let{value:t,onChange:a,label:l}=e;return(0,s.jsx)("li",{children:(0,s.jsx)("div",{className:"form-control",children:(0,s.jsxs)("label",{className:"cursor-pointer label gap-2",children:[(0,s.jsx)("input",{type:"checkbox",checked:t,className:"checkbox",onChange:a}),(0,s.jsx)("span",{className:"label-text",children:l})]})})})};var w=a(49151);let SelectedFeature=e=>{let{feature:t}=e;switch(t.type){case"crag-markers":case"crag-name-labels":return(0,s.jsx)(SelectedPoint,{geometry:t.geometry});default:return null}},SelectedPoint=e=>{let{geometry:t}=e,{coordinates:a}=t;return(0,s.jsx)(N.Jx,{longitude:a[0],latitude:a[1],children:(0,s.jsx)("div",{className:"absolute bottom-0 -translate-x-1/2",children:(0,s.jsx)(w.$,{size:48,weight:"fill",className:"text-accent"})})})},GlobalMap=e=>{let{showFullscreenControl:t=!0,initialCenter:a,initialZoom:n,initialViewState:i,onCameraMovement:c,children:u,handleOnClick:d,initialAreaId:m}=e,[x,h]=(0,l.useState)(null),[b,p]=(0,l.useState)(null),[g,j]=(0,l.useState)(null),[f,v]=(0,l.useState)("default"),[y,N]=(0,l.useState)(o.M.light.style),[w,S]=(0,l.useState)(!1),[k,B]=(0,l.useState)({areaBoundaries:!1,organizations:!1,heatmap:!1,crags:!0}),setActiveFeatureVisual=(e,t)=>{null!=e&&null!=g&&g.setFeatureState({source:"areas",sourceLayer:"areas",id:e.data.id},t)},z=(0,l.useCallback)(e=>{null!=g&&null!=e.viewState&&null!=c&&c({center:{lat:e.viewState.latitude,lng:e.viewState.longitude},zoom:e.viewState.zoom})},[g,c]),F=(0,l.useCallback)(e=>{null!=e.target&&(j(e.target),null!=a&&null!=n?e.target.jumpTo({center:a,zoom:null!=n?n:6}):null!=i&&e.target.fitBounds(i.bounds,i.fitBoundsOptions))},[a,n,i]),A=(0,l.useCallback)((e,t)=>{let a=e.querySourceFeatures("crags",{sourceLayer:"crags",filter:["==",["get","id"],t]});return a[0]},[]);return(0,l.useEffect)(()=>{if(null!=g&&(w||g.on("sourcedata",e=>{"crags"===e.sourceId&&e.isSourceLoaded&&S(!0)}),w&&void 0!==m)){let e=A(g,m);null!=e&&h(t=>{setActiveFeatureVisual(t,{selected:!1,hover:!1});let a=tileToFeature("crag-name-labels",{x:0,y:0},e.geometry,e.properties,g);return setActiveFeatureVisual(a,{selected:!0,hover:!1}),a})}},[g,w,m,A]),(0,s.jsx)("div",{className:"relative w-full h-full",children:(0,s.jsxs)(r.D5,{id:"global-map",onLoad:F,onDragStart:()=>v("move"),onMove:z,onDragEnd:()=>v("default"),onMouseEnter:e=>{var t,a,s;let l=null!==(a=null===(t=e.features)||void 0===t?void 0:t.findIndex(e=>"crag-markers"===e.layer.id||"crag-name-labels"===e.layer.id||"area-boundaries"===e.layer.id||"area-background"===e.layer.id))&&void 0!==a?a:-1;if(-1!==l){v("pointer");let t=null===(s=e.features)||void 0===s?void 0:s[l];if(null!=t&&null!=g){let{layer:a,geometry:s,properties:l}=t;p(t=>{setActiveFeatureVisual(t,{hover:!1});let r=tileToFeature(a.id,e.point,s,l,g);return setActiveFeatureVisual(r,{hover:!0}),r})}}else p(null),v("default")},onMouseLeave:()=>{p(e=>(setActiveFeatureVisual(e,{hover:!1}),null)),v("default")},onClick:e=>{var t;if(null==g)return;let a=null==e?void 0:null===(t=e.features)||void 0===t?void 0:t[0];if(null==a)h(null);else{let{layer:t,geometry:s,properties:l}=a;null==d||d(e),h(a=>{setActiveFeatureVisual(a,{selected:!1,hover:!1});let r=tileToFeature(t.id,e.point,s,l,g);return setActiveFeatureVisual(r,{selected:!0,hover:!1}),r})}},mapStyle:y,cursor:f,cooperativeGestures:t,interactiveLayerIds:["crag-markers","crag-name-labels","area-boundaries","organizations"],children:[(0,s.jsx)(MapToolbar,{layerState:k,onChange:B}),(0,s.jsx)(C.Z,{emit:e=>{let t=o.M[e];N(t.style)}}),(0,s.jsx)(r.jf,{unit:"imperial",style:{marginBottom:10},position:"bottom-left"}),(0,s.jsx)(r.jf,{unit:"metric",style:{marginBottom:0},position:"bottom-left"}),(0,s.jsx)(OBCustomLayers,{layersState:k}),t&&(0,s.jsx)(r.ot,{}),(0,s.jsx)(r.Pv,{showCompass:!1,position:"bottom-right"}),(0,s.jsx)(r.$j,{position:"bottom-right",positionOptions:{enableHighAccuracy:!0},trackUserLocation:!0}),null!=x&&(0,s.jsx)(SelectedFeature,{feature:x}),(0,s.jsx)(Drawer,{feature:x}),null!=b&&(0,s.jsx)(HoverCard,{...b,onClick:e=>{h(t=>(p(null),setActiveFeatureVisual(t,{selected:!1,hover:!1}),"area-boundaries"===e.type&&setActiveFeatureVisual(e,{selected:!0,hover:!1}),e))}}),u]})})},S=i()(async()=>await Promise.resolve().then(a.bind(a,23547)).then(e=>e.GlobalMap),{loadableGenerated:{webpack:()=>[23547]},ssr:!1})}}]);