The rename moved the catalog's per-volume list from maps to worlds, and navigation kept asking for the old name -- undefined, forEach, and the shell died at boot before the first world opened. The picker now reads the list the catalog actually serves, and the loader wears the name of what it loads.
- commit
- c51defac90b9bf749665def565d3d7eba9091a48
- parent
- 4be93cd3818bd5c6077a5cc554f51c1026ff7bcb
- author
- Dami <dami.etoile@gmail.com>
| M | assets/ | 2 | +- |
| M | frontend/ | 2 | +- |
| M | frontend/ | 24 | ++++++++++++------------ |
@@ -5287,4 +5287,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
52875287 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function N5e(i,e){return M5e(i)||P5e(i,e)||ule(i,e)||L5e()}function l1(i){return C5e(i)||I5e(i)||ule(i)||D5e()}function F5e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function B5e(i){var e=F5e(i,"string");return typeof e=="symbol"?e:e+""}function ule(i,e){if(i){if(typeof i=="string")return QV(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?QV(i,e):void 0}}var hle=function(e){e instanceof Array?e.forEach(hle):(e.map&&e.map.dispose(),e.dispose())},fle=function(e){e.geometry&&e.geometry.dispose(),e.material&&hle(e.material),e.texture&&e.texture.dispose(),e.children&&e.children.forEach(fle)},O5e=function(e){for(;e.children.length;){var t=e.children[0];e.remove(t),fle(t)}},Vr=window.THREE?window.THREE:{WebGLRenderer:CM,Scene:e0,PerspectiveCamera:Xr,Raycaster:j2,SRGBColorSpace:Nr,TextureLoader:_l,Vector2:Oe,Vector3:re,Box3:Oa,Color:zt,Mesh:Hn,SphereGeometry:ka,MeshBasicMaterial:hs,BackSide:mi,Timer:HA},JV=Zr({props:{width:{default:window.innerWidth,onChange:function(e,t,n){isNaN(e)&&(t.width=n)}},height:{default:window.innerHeight,onChange:function(e,t,n){isNaN(e)&&(t.height=n)}},viewOffset:{default:[0,0]},backgroundColor:{default:"#000011"},backgroundImageUrl:{},onBackgroundImageLoaded:{},showNavInfo:{default:!0},skyRadius:{default:5e4},objects:{default:[]},lights:{default:[]},enablePointerInteraction:{default:!0,onChange:function(e,t){t.hoverObj=null,t.tooltip&&t.tooltip.content(null)},triggerUpdate:!1},pointerRaycasterThrottleMs:{default:50,triggerUpdate:!1},lineHoverPrecision:{default:1,triggerUpdate:!1},pointsHoverPrecision:{default:1,triggerUpdate:!1},hoverOrderComparator:{triggerUpdate:!1},hoverFilter:{default:function(){return!0},triggerUpdate:!1},tooltipContent:{triggerUpdate:!1},hoverDuringDrag:{default:!1,triggerUpdate:!1},clickAfterDrag:{default:!1,triggerUpdate:!1},onHover:{default:function(){},triggerUpdate:!1},onClick:{default:function(){},triggerUpdate:!1},onRightClick:{triggerUpdate:!1}},methods:{tick:function(e){if(e.initialised){e.controls.enabled&&e.controls.update&&e.controls.update(Math.min(1,e.timer.update().getDelta())),e.postProcessingComposer?e.postProcessingComposer.render():e.renderer.render(e.scene,e.camera),e.extraRenderers.forEach(function(o){return o.render(e.scene,e.camera)});var t=+new Date;if(e.enablePointerInteraction&&t-e.lastRaycasterCheck>=e.pointerRaycasterThrottleMs){e.lastRaycasterCheck=t;var n=null;if(e.hoverDuringDrag||!e.isPointerDragging){var r=this.intersectingObjects(e.pointerPos.x,e.pointerPos.y);e.hoverOrderComparator&&r.sort(function(o,a){return e.hoverOrderComparator(o.object,a.object)});var s=r.find(function(o){return e.hoverFilter(o.object)})||null;n=s?s.object:null,e.intersection=s||null}n!==e.hoverObj&&(e.onHover(n,e.hoverObj,e.intersection),e.tooltip.content(n&&st(e.tooltipContent)(n,e.intersection)||null),e.hoverObj=n)}e.tweenGroup.update()}return this},getPointerPos:function(e){var t=e.pointerPos,n=t.x,r=t.y;return{x:n,y:r}},cameraPosition:function(e,t,n,r){var s=e.camera;if(t&&e.initialised){var o,a,l=t,c=n||{x:0,y:0,z:0};if((o=e.povPosTween)===null||o===void 0||o.end(),(a=e.povTgtTween)===null||a===void 0||a.end(),!r)d(l),A(c);else{var u=Object.assign({},s.position),f=y();e.tweenGroup.add(e.povPosTween=new co(u).to(l,r).easing(Kr.Quadratic.Out).onUpdate(d).onComplete(function(){e.povPosTween=void 0,e.tweenGroup.remove(this)}).start()),e.tweenGroup.add(e.povTgtTween=new co(f).to(c,r/3).easing(Kr.Quadratic.Out).onUpdate(A).onComplete(function(){e.povTgtTween=void 0,e.tweenGroup.remove(this)}).start())}return this}return Object.assign({},s.position,{lookAt:y()});function d(w){var S=w.x,T=w.y,R=w.z;S!==void 0&&(s.position.x=S),T!==void 0&&(s.position.y=T),R!==void 0&&(s.position.z=R)}function A(w){var S=new Vr.Vector3(w.x,w.y,w.z);e.controls.enabled&&e.controls.target?e.controls.target=S:s.lookAt(S)}function y(){return Object.assign(new Vr.Vector3(0,0,-1e3).applyQuaternion(s.quaternion).add(s.position))}},zoomToFit:function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,r=arguments.length,s=new Array(r>3?r-3:0),o=3;o<r;o++)s[o-3]=arguments[o];return this.fitToBbox(this.getBbox.apply(this,s),t,n)},fitToBbox:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:10,s=e.camera;if(t){var o=new Vr.Vector3(0,0,0),a=Math.max.apply(Math,l1(Object.entries(t).map(function(A){var y=N5e(A,2),w=y[0],S=y[1];return Math.max.apply(Math,l1(S.map(function(T){return Math.abs(o[w]-T)})))})))*2,l=(1-r*2/e.height)*s.fov,c=a/Math.atan(l*Math.PI/180),u=c/s.aspect,f=Math.max(c,u);if(f>0){var d=o.clone().sub(s.position).normalize().multiplyScalar(-f);this.cameraPosition(d,o,n)}}return this},getBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0},n=new Vr.Box3(new Vr.Vector3(0,0,0),new Vr.Vector3(0,0,0)),r=e.objects.filter(t);return r.length?(r.forEach(function(s){return n.expandByObject(s)}),Object.assign.apply(Object,l1(["x","y","z"].map(function(s){return R5e({},s,[n.min[s],n.max[s]])})))):null},getScreenCoords:function(e,t,n,r){var s=new Vr.Vector3(t,n,r);return s.project(this.camera()),{x:(s.x+1)*e.width/2,y:-(s.y-1)*e.height/2}},getSceneCoords:function(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=new Vr.Vector2(t/e.width*2-1,-(n/e.height)*2+1),o=new Vr.Raycaster;return o.setFromCamera(s,e.camera),Object.assign({},o.ray.at(r,new Vr.Vector3))},intersectingObjects:function(e,t,n){var r=new Vr.Vector2(t/e.width*2-1,-(n/e.height)*2+1),s=new Vr.Raycaster;return s.params.Line.threshold=e.lineHoverPrecision,s.params.Points.threshold=e.pointsHoverPrecision,s.setFromCamera(r,e.camera),s.intersectObjects(e.objects,!0)},renderer:function(e){return e.renderer},scene:function(e){return e.scene},camera:function(e){return e.camera},postProcessingComposer:function(e){return e.postProcessingComposer},controls:function(e){return e.controls},tbControls:function(e){return e.controls},_destructor:function(e){var t,n,r;O5e(e.scene),(t=e.controls)===null||t===void 0||t.dispose(),(n=e.renderer)===null||n===void 0||n.dispose(),(r=e.postProcessingComposer)===null||r===void 0||r.dispose()}},stateInit:function(){return{scene:new Vr.Scene,camera:new Vr.PerspectiveCamera,timer:new Vr.Timer,tweenGroup:new og,lastRaycasterCheck:0}},init:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.controlType,s=r===void 0?"trackball":r,o=n.useWebGPU,a=o===void 0?!1:o,l=n.rendererConfig,c=l===void 0?{}:l,u=n.extraRenderers,f=u===void 0?[]:u,d=n.waitForLoadComplete,A=d===void 0?!0:d;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.className="scene-container",t.container.style.position="relative",t.container.appendChild(t.navInfo=document.createElement("div")),t.navInfo.className="scene-nav-info",t.navInfo.textContent={orbit:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",trackball:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",fly:"WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw"}[s]||"",t.navInfo.style.display=t.showNavInfo?null:"none",t.tooltip=new cle(t.container),t.pointerPos=new Vr.Vector2,t.pointerPos.x=-2,t.pointerPos.y=-2,["pointermove","pointerdown"].forEach(function(y){return t.container.addEventListener(y,function(w){if(y==="pointerdown"&&(t.isPointerPressed=!0),!t.isPointerDragging&&w.type==="pointermove"&&(w.pressure>0||t.isPointerPressed)&&(w.pointerType==="mouse"||w.movementX===void 0||[w.movementX,w.movementY].some(function(R){return Math.abs(R)>1}))&&(t.isPointerDragging=!0),t.enablePointerInteraction){var S=T(t.container);t.pointerPos.x=w.pageX-S.left,t.pointerPos.y=w.pageY-S.top}function T(R){var P=R.getBoundingClientRect(),I=window.pageXOffset||document.documentElement.scrollLeft,F=window.pageYOffset||document.documentElement.scrollTop;return{top:P.top+F,left:P.left+I}}},{passive:!0})}),t.container.addEventListener("pointerup",function(y){t.isPointerPressed&&(t.isPointerPressed=!1,!(t.isPointerDragging&&(t.isPointerDragging=!1,!t.clickAfterDrag))&&requestAnimationFrame(function(){y.button===0&&t.onClick(t.hoverObj||null,y,t.intersection),y.button===2&&t.onRightClick&&t.onRightClick(t.hoverObj||null,y,t.intersection)}))},{passive:!0,capture:!0}),t.container.addEventListener("contextmenu",function(y){t.onRightClick&&y.preventDefault()}),t.renderer=new(a?lx:Vr.WebGLRenderer)(Object.assign({antialias:!0,alpha:!0},c)),t.renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),t.container.appendChild(t.renderer.domElement),t.extraRenderers=f,t.extraRenderers.forEach(function(y){y.domElement.style.position="absolute",y.domElement.style.top="0px",y.domElement.style.pointerEvents="none",t.container.appendChild(y.domElement)}),t.postProcessingComposer=new ZI(t.renderer),t.postProcessingComposer.addPass(new KI(t.scene,t.camera)),t.controls=new{trackball:qI,orbit:WI,fly:jI}[s](t.camera,t.renderer.domElement),s==="fly"&&(t.controls.movementSpeed=300,t.controls.rollSpeed=Math.PI/6,t.controls.dragToLook=!0),(s==="trackball"||s==="orbit")&&(t.controls.minDistance=.1,t.controls.maxDistance=t.skyRadius,t.controls.addEventListener("start",function(){t.controlsEngaged=!0}),t.controls.addEventListener("change",function(){t.controlsEngaged&&(t.controlsDragging=!0)}),t.controls.addEventListener("end",function(){t.controlsEngaged=!1,t.controlsDragging=!1})),[t.renderer,t.postProcessingComposer].concat(l1(t.extraRenderers)).forEach(function(y){return y.setSize(t.width,t.height)}),t.camera.aspect=t.width/t.height,t.camera.updateProjectionMatrix(),t.camera.position.z=1e3,t.scene.add(t.skysphere=new Vr.Mesh),t.skysphere.visible=!1,t.loadComplete=t.scene.visible=!A,window.scene=t.scene},update:function(e,t){if(e.width&&e.height&&(t.hasOwnProperty("width")||t.hasOwnProperty("height"))){var n,r=e.width,s=e.height;e.container.style.width="".concat(r,"px"),e.container.style.height="".concat(s,"px"),[e.renderer,e.postProcessingComposer].concat(l1(e.extraRenderers)).forEach(function(A){return A.setSize(r,s)}),e.camera.aspect=r/s;var o=e.viewOffset.slice(0,2);o.some(function(A){return A})&&(n=e.camera).setViewOffset.apply(n,[r,s].concat(l1(o),[r,s])),e.camera.updateProjectionMatrix()}if(t.hasOwnProperty("viewOffset")){var a,l=e.width,c=e.height,u=e.viewOffset.slice(0,2);u.some(function(A){return A})?(a=e.camera).setViewOffset.apply(a,[l,c].concat(l1(u),[l,c])):e.camera.clearViewOffset()}if(t.hasOwnProperty("skyRadius")&&e.skyRadius&&(e.controls.hasOwnProperty("maxDistance")&&t.skyRadius&&(e.controls.maxDistance=Math.min(e.controls.maxDistance,e.skyRadius)),e.camera.far=e.skyRadius*2.5,e.camera.updateProjectionMatrix(),e.skysphere.geometry=new Vr.SphereGeometry(e.skyRadius)),t.hasOwnProperty("backgroundColor")){var f=Mm(e.backgroundColor).alpha;f===void 0&&(f=1),e.renderer.setClearColor(new Vr.Color(tae(1,e.backgroundColor)),f)}t.hasOwnProperty("backgroundImageUrl")&&(e.backgroundImageUrl?new Vr.TextureLoader().load(e.backgroundImageUrl,function(A){A.colorSpace=Vr.SRGBColorSpace,e.skysphere.material=new Vr.MeshBasicMaterial({map:A,side:Vr.BackSide}),e.skysphere.visible=!0,e.onBackgroundImageLoaded&&setTimeout(e.onBackgroundImageLoaded),!e.loadComplete&&d()}):(e.skysphere.visible=!1,e.skysphere.material.map=null,!e.loadComplete&&d())),t.hasOwnProperty("showNavInfo")&&(e.navInfo.style.display=e.showNavInfo?null:"none"),t.hasOwnProperty("lights")&&((t.lights||[]).forEach(function(A){return e.scene.remove(A)}),e.lights.forEach(function(A){return e.scene.add(A)})),t.hasOwnProperty("objects")&&((t.objects||[]).forEach(function(A){return e.scene.remove(A)}),e.objects.forEach(function(A){return e.scene.add(A)}));function d(){e.loadComplete=e.scene.visible=!0}}});function U5e(i,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=i:r.appendChild(document.createTextNode(i))}}var k5e=`.scene-container .clickable {52885288 cursor: pointer;52895289 }`;U5e(k5e);function eG(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t<e;t++)n[t]=i[t];return n}function z5e(i){if(Array.isArray(i))return eG(i)}function NS(i,e,t){return(e=j5e(e))in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function V5e(i){if(typeof Symbol<"u"&&i[Symbol.iterator]!=null||i["@@iterator"]!=null)return Array.from(i)}function G5e(){throw new TypeError(`Invalid attempt to spread non-iterable instance.5290-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dle(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,n)}return t}function c1(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?dle(Object(t),!0).forEach(function(n){NS(i,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):dle(Object(t)).forEach(function(n){Object.defineProperty(i,n,Object.getOwnPropertyDescriptor(t,n))})}return i}function q5e(i,e){if(i==null)return{};var t,n,r=H5e(i,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);for(n=0;n<s.length;n++)t=s[n],e.indexOf(t)===-1&&{}.propertyIsEnumerable.call(i,t)&&(r[t]=i[t])}return r}function H5e(i,e){if(i==null)return{};var t={};for(var n in i)if({}.hasOwnProperty.call(i,n)){if(e.indexOf(n)!==-1)continue;t[n]=i[n]}return t}function vP(i){return z5e(i)||V5e(i)||X5e(i)||G5e()}function W5e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function j5e(i){var e=W5e(i,"string");return typeof e=="symbol"?e:e+""}function X5e(i,e){if(i){if(typeof i=="string")return eG(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?eG(i,e):void 0}}function ple(i,e){var t=new e;return t._destructor&&t._destructor(),{linkProp:function(r){return{default:t[r](),onChange:function(o,a){a[i][r](o)},triggerUpdate:!1}},linkMethod:function(r){return function(s){for(var o=s[i],a=arguments.length,l=new Array(a>1?a-1:0),c=1;c<a;c++)l[c-1]=arguments[c];var u=o[r].apply(o,l);return u===o?this:u}}}}var $5e=["rendererConfig","waitForGlobeReady"],DS=c1(c1({},window.THREE?window.THREE:{AmbientLight:qA,DirectionalLight:GA,Vector2:Oe,REVISION:"185"}),{},{CSS2DRenderer:LM}),mle=ple("globe",yV),Y5e=Object.assign.apply(Object,vP(["globeImageUrl","bumpImageUrl","globeTileEngineUrl","globeTileEngineMaxLevel","globeCurvatureResolution","showGlobe","showGraticules","showAtmosphere","atmosphereColor","atmosphereAltitude","onGlobeReady","pointsData","pointLat","pointLng","pointColor","pointAltitude","pointRadius","pointResolution","pointsMerge","pointsTransitionDuration","arcsData","arcStartLat","arcStartLng","arcStartAltitude","arcEndLat","arcEndLng","arcEndAltitude","arcColor","arcAltitude","arcAltitudeAutoScale","arcStroke","arcCurveResolution","arcCircularResolution","arcDashLength","arcDashGap","arcDashInitialGap","arcDashAnimateTime","arcsTransitionDuration","polygonsData","polygonGeoJsonGeometry","polygonCapColor","polygonCapMaterial","polygonSideColor","polygonSideMaterial","polygonStrokeColor","polygonAltitude","polygonCapCurvatureResolution","polygonsTransitionDuration","pathsData","pathPoints","pathPointLat","pathPointLng","pathPointAlt","pathResolution","pathColor","pathStroke","pathDashLength","pathDashGap","pathDashInitialGap","pathDashAnimateTime","pathTransitionDuration","heatmapsData","heatmapPoints","heatmapPointLat","heatmapPointLng","heatmapPointWeight","heatmapBandwidth","heatmapColorFn","heatmapColorSaturation","heatmapBaseAltitude","heatmapTopAltitude","heatmapsTransitionDuration","hexBinPointsData","hexBinPointLat","hexBinPointLng","hexBinPointWeight","hexBinResolution","hexMargin","hexTopCurvatureResolution","hexTopColor","hexSideColor","hexAltitude","hexBinMerge","hexTransitionDuration","hexPolygonsData","hexPolygonGeoJsonGeometry","hexPolygonColor","hexPolygonAltitude","hexPolygonResolution","hexPolygonMargin","hexPolygonUseDots","hexPolygonCurvatureResolution","hexPolygonDotResolution","hexPolygonsTransitionDuration","tilesData","tileLat","tileLng","tileAltitude","tileWidth","tileHeight","tileUseGlobeProjection","tileMaterial","tileCurvatureResolution","tilesTransitionDuration","particlesData","particlesList","particleLat","particleLng","particleAltitude","particlesSize","particlesSizeAttenuation","particlesColor","particlesTexture","ringsData","ringLat","ringLng","ringAltitude","ringColor","ringResolution","ringMaxRadius","ringPropagationSpeed","ringRepeatPeriod","labelsData","labelLat","labelLng","labelAltitude","labelRotation","labelText","labelSize","labelTypeFace","labelColor","labelResolution","labelIncludeDot","labelDotRadius","labelDotOrientation","labelsTransitionDuration","htmlElementsData","htmlLat","htmlLng","htmlAltitude","htmlElement","htmlElementVisibilityModifier","htmlTransitionDuration","objectsData","objectLat","objectLng","objectAltitude","objectRotation","objectFacesSurface","objectThreeObject","customLayerData","customThreeObject","customThreeObjectUpdate"].map(function(i){return NS({},i,mle.linkProp(i))}))),Z5e=Object.assign.apply(Object,vP(["globeMaterial","globeTileEngineClearCache","getGlobeRadius","getCoords","toGeoCoords"].map(function(i){return NS({},i,mle.linkMethod(i))}))),Ale=ple("renderObjs",JV),K5e=Object.assign.apply(Object,vP(["width","height","backgroundColor","backgroundImageUrl","enablePointerInteraction"].map(function(i){return NS({},i,Ale.linkProp(i))}))),Q5e=Object.assign.apply(Object,vP(["lights","postProcessingComposer"].map(function(i){return NS({},i,Ale.linkMethod(i))}))),gle=Zr({props:c1(c1({onZoom:{triggerUpdate:!1},onGlobeClick:{triggerUpdate:!1},onGlobeRightClick:{triggerUpdate:!1},pointLabel:{default:"name",triggerUpdate:!1},onPointClick:{triggerUpdate:!1},onPointRightClick:{triggerUpdate:!1},onPointHover:{triggerUpdate:!1},arcLabel:{default:"name",triggerUpdate:!1},onArcClick:{triggerUpdate:!1},onArcRightClick:{triggerUpdate:!1},onArcHover:{triggerUpdate:!1},polygonLabel:{default:"name",triggerUpdate:!1},onPolygonClick:{triggerUpdate:!1},onPolygonRightClick:{triggerUpdate:!1},onPolygonHover:{triggerUpdate:!1},pathLabel:{default:"name",triggerUpdate:!1},onPathClick:{triggerUpdate:!1},onPathRightClick:{triggerUpdate:!1},onPathHover:{triggerUpdate:!1},onHeatmapClick:{triggerUpdate:!1},onHeatmapRightClick:{triggerUpdate:!1},onHeatmapHover:{triggerUpdate:!1},hexLabel:{triggerUpdate:!1},onHexClick:{triggerUpdate:!1},onHexRightClick:{triggerUpdate:!1},onHexHover:{triggerUpdate:!1},hexPolygonLabel:{triggerUpdate:!1},onHexPolygonClick:{triggerUpdate:!1},onHexPolygonRightClick:{triggerUpdate:!1},onHexPolygonHover:{triggerUpdate:!1},tileLabel:{default:"name",triggerUpdate:!1},onTileClick:{triggerUpdate:!1},onTileRightClick:{triggerUpdate:!1},onTileHover:{triggerUpdate:!1},particleLabel:{default:"name",triggerUpdate:!1},onParticleClick:{triggerUpdate:!1},onParticleRightClick:{triggerUpdate:!1},onParticleHover:{triggerUpdate:!1},labelLabel:{triggerUpdate:!1},onLabelClick:{triggerUpdate:!1},onLabelRightClick:{triggerUpdate:!1},onLabelHover:{triggerUpdate:!1},objectLabel:{default:"name",triggerUpdate:!1},onObjectClick:{triggerUpdate:!1},onObjectRightClick:{triggerUpdate:!1},onObjectHover:{triggerUpdate:!1},customLayerLabel:{default:"name",triggerUpdate:!1},onCustomLayerClick:{triggerUpdate:!1},onCustomLayerRightClick:{triggerUpdate:!1},onCustomLayerHover:{triggerUpdate:!1},pointerEventsFilter:{default:function(){return!0},triggerUpdate:!1},lineHoverPrecision:{default:.2,triggerUpdate:!1,onChange:function(e,t){t.renderObjs.lineHoverPrecision(e),t.renderObjs.pointsHoverPrecision(e)}},showPointerCursor:{default:!0,triggerUpdate:!1},globeOffset:{default:[0,0],triggerUpdate:!1,onChange:function(e,t){return Array.isArray(e)&&e.length===2&&t.renderObjs.viewOffset(e.map(function(n){return-n}))}}},Y5e),K5e),methods:c1(c1({pauseAnimation:function(e){var t;return e.animationFrameRequestId!==null&&(cancelAnimationFrame(e.animationFrameRequestId),e.animationFrameRequestId=null),(t=e.globe)===null||t===void 0||t.pauseAnimation(),this},resumeAnimation:function(e){var t;return e.animationFrameRequestId===null&&this._animationCycle(),(t=e.globe)===null||t===void 0||t.resumeAnimation(),this},_animationCycle:function(e){e.renderObjs.tick(),e.tweenGroup.update(),e.animationFrameRequestId=requestAnimationFrame(this._animationCycle)},pointOfView:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=a();if(t.lat===void 0&&t.lng===void 0&&t.altitude===void 0)return r;var s,o=Object.assign({},r,t);if(["lat","lng","altitude"].forEach(function(c){return o[c]=+o[c]}),(s=e.povTween)===null||s===void 0||s.end(),!n)l(o);else{for(;r.lng-o.lng>180;)r.lng-=360;for(;r.lng-o.lng<-180;)r.lng+=360;e.tweenGroup.add(e.povTween=new co(r).to(o,n).easing(Kr.Cubic.InOut).onUpdate(l).onComplete(function(){e.povTween=void 0,e.tweenGroup.remove(this)}).start())}return this;function a(){return e.globe.toGeoCoords(e.renderObjs.cameraPosition())}function l(c){var u=c.lat,f=c.lng,d=c.altitude;e.renderObjs.cameraPosition(e.globe.getCoords(u,f,d)),e.globe.setPointOfView(e.renderObjs.camera())}},getScreenCoords:function(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];var o=(t=e.globe).getCoords.apply(t,r);return e.renderObjs.getScreenCoords(o.x,o.y,o.z)},toGlobeCoords:function(e,t,n){var r=e.renderObjs.intersectingObjects(t,n).find(function(l){return(l.object.__globeObjType||l.object.parent.__globeObjType)==="globe"});if(!r)return null;var s=e.globe.toGeoCoords(r.point),o=s.lat,a=s.lng;return{lat:o,lng:a}},scene:function(e){return e.renderObjs.scene()},camera:function(e){return e.renderObjs.camera()},renderer:function(e){return e.renderObjs.renderer()},controls:function(e){return e.renderObjs.controls()},_destructor:function(e){this.pauseAnimation(),this.pointsData([]),this.arcsData([]),this.polygonsData([]),this.pathsData([]),this.heatmapsData([]),this.hexBinPointsData([]),this.hexPolygonsData([]),this.tilesData([]),this.particlesData([]),this.labelsData([]),this.htmlElementsData([]),this.objectsData([]),this.customLayerData([]),e.globe._destructor(),e.renderObjs._destructor()}},Z5e),Q5e),stateInit:function(e){var t=e.rendererConfig,n=e.waitForGlobeReady,r=n===void 0?!0:n,s=q5e(e,$5e),o=new yV(c1({waitForGlobeReady:r},s));return{globe:o,renderObjs:JV({controlType:"orbit",rendererConfig:t,waitForLoadComplete:r,extraRenderers:[new DS.CSS2DRenderer]}).skyRadius(o.getGlobeRadius()*500).showNavInfo(!1).objects([o]).lights([new DS.AmbientLight(13421772,Math.PI),new DS.DirectionalLight(16777215,.6*Math.PI)]),tweenGroup:new og}},init:function(e,t){var n=this;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.style.position="relative";var r=document.createElement("div");t.container.appendChild(r),t.renderObjs(r),t.globe.rendererSize(t.renderObjs.renderer().getSize(new DS.Vector2)),this.pointOfView({altitude:2.5});var s=t.globe.getGlobeRadius(),o=t.renderObjs.controls();t.renderObjs.camera().near=.05,o.minDistance=s+Math.max(.001,t.renderObjs.camera().near*1.1),o.maxDistance=s*100,o.enablePan=!1,o.enableDamping=!0,o.dampingFactor=.1,o.rotateSpeed=.3,o.zoomSpeed=.3,o.zoomToCursor=!0,o.addEventListener("change",function(){o.target.setScalar(0);var c=n.pointOfView();o.rotateSpeed=c.altitude*.3,o.zoomSpeed=Math.sqrt(c.altitude)*.5,t.globe.setPointOfView(t.renderObjs.camera()),t.onZoom&&t.onZoom(c)});var a=function(u){for(var f=u;f&&!f.hasOwnProperty("__globeObjType");)f=f.parent;return f},l={point:function(u){return u},arc:function(u){return u},polygon:function(u){return u.data},path:function(u){return u},heatmap:function(u){return u},hexbin:function(u){return u},hexPolygon:function(u){return u},tile:function(u){return u},particles:function(u,f){return!f||!f.hasOwnProperty("index")||u.length<=f.index?u:u[f.index]},label:function(u){return u},object:function(u){return u},custom:function(u){return u}};DS.REVISION<155&&(t.renderObjs.renderer().useLegacyLights=!1),t.renderObjs.hoverFilter(function(c){var u=a(c);if(!u)return!1;var f=u.__globeObjType;if(f!=="globe"&&!l.hasOwnProperty(f))return!1;var d=l.hasOwnProperty(f)&&u.__data?l[f](u.__data):null;return["points","hexBinPoints"].some(function(A){return A===f})&&Array.isArray(d)?!1:t.pointerEventsFilter(u,d)}).tooltipContent(function(c,u){var f={point:t.pointLabel,arc:t.arcLabel,polygon:t.polygonLabel,path:t.pathLabel,hexbin:t.hexLabel,hexPolygon:t.hexPolygonLabel,tile:t.tileLabel,particles:t.particleLabel,label:t.labelLabel,object:t.objectLabel,custom:t.customLayerLabel},d=a(c),A=d&&d.__globeObjType;return d&&A&&f.hasOwnProperty(A)&&l.hasOwnProperty(A)&&st(f[A])(l[A](d.__data,u))||""}).onHover(function(c,u,f){var d={point:t.onPointHover,arc:t.onArcHover,polygon:t.onPolygonHover,path:t.onPathHover,heatmap:t.onHeatmapHover,hexbin:t.onHexHover,hexPolygon:t.onHexPolygonHover,tile:t.onTileHover,particles:t.onParticleHover,label:t.onLabelHover,object:t.onObjectHover,custom:t.onCustomLayerHover},A={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},y=a(c);if(y&&!d.hasOwnProperty(y.__globeObjType)&&(y=null),y!==t.hoverObj){var w,S=t.hoverObj?t.hoverObj.__globeObjType:null,T=t.hoverData,R=y?y.__globeObjType:null,P=(w=y)!==null&&w!==void 0&&w.__data?l[R](y.__data,f):null;S&&S!==R&&d[S]&&d[S](null,T||null),R&&d[R]&&d[R](P,S===R?T:null),t.renderObjs.renderer().domElement.classList[R&&A[R]&&st(t.showPointerCursor)(R,P)?"add":"remove"]("clickable"),t.hoverObj=y,t.hoverData=P}}).onClick(function(c,u,f){if(c){var d={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}).onRightClick(function(c,u,f){if(c){var d={globe:t.onGlobeRightClick,point:t.onPointRightClick,arc:t.onArcRightClick,polygon:t.onPolygonRightClick,path:t.onPathRightClick,heatmap:t.onHeatmapRightClick,hexbin:t.onHexRightClick,hexPolygon:t.onHexPolygonRightClick,tile:t.onTileRightClick,particles:t.onParticleRightClick,label:t.onLabelRightClick,object:t.onObjectRightClick,custom:t.onCustomLayerRightClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}),this._animationCycle()}});var xle=4,wx=100,OS=wx+.2,Jd=8,J5e=96,yle=.045,ble=.08;function Sx(i,e,t){let n=(90-i)*Math.PI/180,r=(90-e)*Math.PI/180;return[t*Math.sin(n)*Math.cos(r),t*Math.cos(n),t*Math.sin(n)*Math.sin(r)]}var Yn=null,xP="",Ds={group:null,tiles:new Map,key:"",lens:""},Eo={group:null,cell:null,fitKey:""},tu={group:null,key:""},e6e=180,nG=null,Tx=new Map,wP=new Map,vle=new Map;function wle(){let i=bT(U.world)==="sphere"&&oh(U.world)!==null;_e.globeToggle.hidden=!i,Sle(),!i&&Yn&&(FS(),Ds.group=null,Eo.group=null,Eo.cell=null,tu.group=null,tu.key="",Yn._destructor(),Yn=null,xP="",nG=null,_e.globe.replaceChildren())}function SP(){U.globeActive?Sle():Mle()}var BS=2.5,yP=2,Ex=.08,TP=4;function t6e(i){let e=Number.isFinite(i)?i:yP;return ls(BS/2**(e-yP),Ex,TP)}function rG(i){let e=Number.isFinite(i)?Math.max(i,Ex/2):BS,t=(U.lens?.maxZoom??yP)+2;return ls(yP+Math.log2(BS/e),0,t)}function sG(i){if(!Yn||!U.globeActive)return;let e=Yn.pointOfView(),t=ls((Number.isFinite(e.altitude)?e.altitude:BS)/2**i,Ex,TP);Yn.pointOfView({altitude:t},180)}function Sle(){let i=oh(U.world),e=U.engine?.getView();if(Yn&&U.globeActive&&i&&e){let t=Yn.pointOfView(),[n,r]=i.toWorld(t.lat,t.lng);Number.isFinite(n)&&Number.isFinite(r)&&(e.cancelAnimations(),e.setCenter([n,-r]),e.setZoom(rG(t.altitude)))}U.globeActive=!1,_e.globe.hidden=!0,_e.globeToggle.setAttribute("aria-pressed","false"),_e.viewport.hidden=!1,FS(),U.overviewKey="",document.dispatchEvent(new Event("atlas:globe-camera"))}function Tle(){if(!Yn||!U.globeActive)return null;let i=Yn.pointOfView();return{lat:i.lat,lng:i.lng}}function Ele(i,e,t){if(!Yn)return;let n=Yn.pointOfView().altitude;Yn.pointOfView({lat:i,lng:e,altitude:n},t?180:0)}async function Mle(){let i=oh(U.world);if(!i)return;if(U.globeActive=!0,_e.viewport.hidden=!0,_e.globe.hidden=!1,_e.globeToggle.setAttribute("aria-pressed","true"),U.overviewKey="",!Yn){Yn=gle({animateIn:!1})(_e.globe).backgroundColor("#0b0e12").showAtmosphere(!0).atmosphereColor("#8a6f5b").atmosphereAltitude(.12).objectLat(o=>o.lat).objectLng(o=>o.lng).objectAltitude(o=>o.pin===U.selectedPin?.03:.014).objectThreeObject(o=>d6e(o.pin)).objectLabel(o=>o.pin.location.title).onObjectClick(o=>xy(o.pin)).onObjectHover(o=>{_e.globe.style.cursor=o?"pointer":""}).onZoom(()=>{document.dispatchEvent(new Event("atlas:globe-camera")),_le(),_P(),p6e(),aG()}),document.addEventListener("atlas:selection",f6e),document.addEventListener("atlas:filters",tG),document.addEventListener("atlas:grid",()=>{bP(),tG(),_P()}),document.addEventListener("atlas:labels",_P),Yn.onGlobeClick(({lat:o,lng:a})=>{if(!U.gridEnabled)return;let l=oh(U.world);if(!l)return;let[c,u]=l.toWorld(o,a),f=Ss().descendTarget(U.gridCell,[c,-u]);f&&oA(f)});let s=Yn.controls();s.minDistance=wx*(1+Ex),s.maxDistance=wx*(1+TP),Ds.group=new Fr,Yn.scene().add(Ds.group),Eo.group=new Fr,Yn.scene().add(Eo.group),tu.group=new Fr,Yn.scene().add(tu.group),window.__atlasGlobe={detail:Ds,grid:Eo,labels:tu,sprites:Tx}}lG();let e=U.engine?.getView(),t=e?.getCenter();if(t&&Number.isFinite(t[0])&&Number.isFinite(t[1])){let[s,o]=i.toLatLng(t[0],-t[1]);Yn.pointOfView({lat:s,lng:o,altitude:t6e(e.getZoom())})}else Yn.pointOfView({lat:10,lng:0,altitude:BS});let n=U.lens||U.world.lenses[0],r=`${U.volume.stamp}:${U.world.slug}:${n.tiles}`;if(xP!==r){xP=r;let s=await A6e(n);s&&xP===r&&Yn.globeImageUrl(s)}nG!==U.pins&&(nG=U.pins,Tx.clear(),wP.clear(),Yn.objectsData(m6e(i))),tG(),Ple(),_le(),bP(),_P(),document.dispatchEvent(new Event("atlas:globe-camera"))}function bP(){if(!Yn||!Eo.group)return;for(let t of[...Eo.group.children])Eo.group.remove(t),t.geometry?.dispose(),t.material?.map?.dispose(),t.material?.dispose();let i=U.globeActive?oh(U.world):null;if(!i||!U.gridEnabled){Eo.cell=null;return}let e=Ss();for(let t of AE()){let n=Cle(t.ring,i),r=oG(n),s=mE(t,{subgridVisible:U.subgridVisible,labelled:r6e(t,r)});if(s){if(s.fill){let o=Rle(e.center(t.hash),i);Eo.group.add(s6e(n,o,s.fill))}Eo.group.add(l6e(n,s.line)),s.label&&Eo.group.add(c6e(s.label,r))}}Eo.cell!==null&&Eo.cell!==U.gridCell&&u6e(i),Eo.cell=U.gridCell,aG()}function Cle(i,e){return i.map(([t,n])=>e.toLatLng(t,-n))}function Rle(i,e){return e.toLatLng(i[0],-i[1])}function n6e(i){let e=[];for(let t=0;t<i.length-1;t++){let[n,r]=i[t],[s,o]=i[t+1],a=Math.max(Math.abs(s-n),Math.abs(o-r)),l=ls(Math.ceil(a/2),1,48);for(let c=0;c<l;c++){let u=c/l;e.push([n+(s-n)*u,r+(o-r)*u])}}return e}function oG(i){let e=-1/0,t=1/0,n=1/0,r=-1/0;for(let[s,o]of i)e=Math.max(e,s),t=Math.min(t,s),n=Math.min(n,o),r=Math.max(r,o);return{north:e,south:t,west:n,east:r}}function i6e(i){let e=Yn.pointOfView(),t=Math.max(e.altitude,Ex/2),n=50*Math.PI/180,r=2*t*wx*Math.tan(n/2)/Math.max(1,_e.globe.clientHeight||1),s=wx*Math.PI/180/r;return{width:Math.abs(i.east-i.west)*s,height:Math.abs(i.north-i.south)*s}}function r6e(i,e){let n=i.role==="neighbor"?Vi.neighborLabelSizePx:Vi.labelSizePx,r=`900 ${n}px ${Vi.labelFont}`,s=i6e(e);return VN(i.hash,r)+9<=s.width&&n+6<=s.height}function s6e(i,e,t){let n=OS+.12,r=n6e(i),s=oG(i),o=Math.max(s.east-s.west,s.north-s.south),a=ls(Math.ceil(o/6),2,24),l=Sx(e[0],e[1],n),c=r.map(([T,R])=>Sx(T,R,n)),u=[...l],f=[];for(let T=1;T<=a;T++){let R=T/a;for(let P of c){let I=l[0]+(P[0]-l[0])*R,F=l[1]+(P[1]-l[1])*R,D=l[2]+(P[2]-l[2])*R,L=n/(Math.hypot(I,F,D)||1);u.push(I*L,F*L,D*L)}}let d=r.length,A=(T,R)=>1+(T-1)*d+R%d;for(let T=0;T<d;T++)f.push(0,A(1,T),A(1,T+1));for(let T=1;T<a;T++)for(let R=0;R<d;R++)f.push(A(T,R),A(T+1,R),A(T,R+1)),f.push(A(T,R+1),A(T+1,R),A(T+1,R+1));let y=new Xn;y.setAttribute("position",new Ln(u,3)),y.setIndex(f);let w=new hs({color:t.color,transparent:!0,opacity:t.opacity,depthWrite:!1,side:2}),S=new Hn(y,w);return S.renderOrder=1,S}function _P(){if(!Yn||!tu.group)return;let i=U.globeActive&&U.labelsHeld,e=i?Yn.pointOfView():null,t=i?`${Math.round(e.lat)}:${Math.round(e.lng)}:${e.altitude.toFixed(2)}:${U.gridSystem}:${U.gridCell}`:"";if(t===tu.key)return;tu.key=t;for(let r of[...tu.group.children])tu.group.remove(r),r.material?.map?.dispose(),r.material?.dispose();if(!i)return;let n=[];for(let[r,s]of Tx){if(!s.visible)continue;let o=wP.get(r);if(!o)continue;let a=o6e(e,o);a>85||n.push({pin:r,stood:o,distance:a})}n.sort((r,s)=>r.distance-s.distance);for(let{pin:r,stood:s}of n.slice(0,e6e))tu.group.add(a6e(r,s));aG()}function aG(){if(!Yn)return;let i=Yn.camera().position,e=i.length()||1,t=wx/e;for(let n of[Eo.group,tu.group])if(n)for(let r of n.children){if(!r.isSprite)continue;let s=r.position,o=s.length()||1,a=(s.x*i.x+s.y*i.y+s.z*i.z)/(o*e);r.visible=a>t}}function o6e(i,e){let t=Math.PI/180,n=Math.sin(i.lat*t)*Math.sin(e.lat*t)+Math.cos(i.lat*t)*Math.cos(e.lat*t)*Math.cos((i.lng-e.lng)*t);return Math.acos(ls(n,-1,1))*180/Math.PI}function a6e(i,e){let t=i.location.title,n=document.createElement("canvas"),r=n.getContext("2d"),s="600 26px Inter, system-ui, sans-serif";r.font=s;let o=Math.ceil(r.measureText(t).width)+24;n.width=o,n.height=40,r.font=s,r.textAlign="center",r.textBaseline="middle",r.fillStyle="rgba(10, 13, 17, 0.78)",r.fillRect(0,0,o,40),r.fillStyle="#e6ebf0",r.fillText(t,o/2,21);let a=new Ch({depthTest:!1,depthWrite:!1,sizeAttenuation:!1,transparent:!0});new _l().load(n.toDataURL("image/png"),u=>{a.map=u,a.needsUpdate=!0});let l=new DA(a);l.position.set(...Sx(e.lat,e.lng,OS+.4)),l.renderOrder=4;let c=.028;return l.scale.set(c*o/40,c,1),l.center.set(.5,0),l}function l6e(i,e){let t=[];for(let o=0;o<i.length-1;o++){let[a,l]=i[o],[c,u]=i[o+1],f=Math.max(Math.abs(c-a),Math.abs(u-l)),d=ls(Math.ceil(f/2),4,48);for(let A=0;A<d;A++){let y=A/d;t.push(...Sx(a+(c-a)*y,l+(u-l)*y,OS+.25))}}t.push(...t.slice(0,3));let n=new xm;n.setPositions(t);let r=new Cf({color:e.color,transparent:!0,opacity:e.opacity,linewidth:e.widthPx,depthWrite:!1});r.resolution.set(_e.globe.clientWidth||1,_e.globe.clientHeight||1);let s=new mx(n,r);return s.computeLineDistances(),s.renderOrder=2,s}function c6e(i,e){let n=i.sizePx*2,r=`500 ${n}px ${Vi.labelFont}`,s=`900 ${n}px ${Vi.labelFont}`,o=document.createElement("canvas"),a=o.getContext("2d");a.font=r;let l=i.prefix?a.measureText(i.prefix).width:0;a.font=s;let c=a.measureText(i.final).width,u=10;o.width=Math.ceil(l+c+u*2),o.height=n+u*1.4,a.fillStyle=i.chip,a.fillRect(0,0,o.width,o.height),a.textBaseline="middle";let f=o.height/2+2;i.prefix&&(a.font=r,a.fillStyle=i.color,a.globalAlpha=Vi.prefixAlpha*i.textAlpha,a.fillText(i.prefix,u,f)),a.font=s,a.globalAlpha=i.textAlpha,a.fillStyle=i.color,a.fillText(i.final,u+l,f),a.globalAlpha=1;let d=new Ch({depthTest:!1,depthWrite:!1,transparent:!0,sizeAttenuation:!1});new _l().load(o.toDataURL("image/png"),R=>{d.map=R,d.needsUpdate=!0});let A=new DA(d),y=Math.abs(e.north-e.south)*.02,w=Math.abs(e.east-e.west)*.02;A.position.set(...Sx(e.south+y,e.east-w,OS+.35));let S=Math.max(1,_e.globe.clientHeight||1),T=o.height/2/S;return A.scale.set(T*o.width/o.height,T,1),A.center.set(1,0),A.renderOrder=3,A}function u6e(i){let t=AE().find(l=>l.role==="scope"||l.role==="leaf");if(!t)return;let[n,r]=Rle(Ss().center(t.hash),i),s=oG(Cle(t.ring,i)),o=Math.max(s.east-s.west,s.north-s.south),a=ls(o/45,Ex,TP);Yn.pointOfView({lat:n,lng:r,altitude:a},400)}function _le(){if(!Yn||!Ds.group)return;let i=U.globeActive?U.lens||U.world.lenses[0]:null;if(!i){FS();return}Ds.lens!==i.tiles&&(FS(),Ds.lens=i.tiles);let e=Yn.pointOfView(),t=Math.min(Math.round(rG(e.altitude))+1,i.maxZoom);if(t<=xle||!i.formats[t]){FS(),Ds.key="";return}let n=2**t,r=n/2,s=360/n,o=Math.acos(1/(1+e.altitude))*180/Math.PI+s,a=Math.floor(((e.lng+180)%360+360)%360/s),l=Math.floor((90-e.lat)/s),c=Math.ceil(o/s);for(;(2*c+1)**2>J5e&&c>1;)c--;let u=new Set;for(let d=-c;d<=c;d++){let A=l+d;if(!(A<0||A>=r))for(let y=-c;y<=c;y++){let w=((a+y)%n+n)%n;u.add(`${t}/${w}/${A}`)}}let f=`${i.tiles}:${[...u].sort().join(",")}`;if(f!==Ds.key){Ds.key=f;for(let[d,A]of Ds.tiles)u.has(d)||(Ds.group.remove(A),Ile(A),Ds.tiles.delete(d));for(let d of u){if(Ds.tiles.has(d))continue;let[A,y,w]=d.split("/").map(Number),S=h6e(i,A,y,w);Ds.tiles.set(d,S),Ds.group.add(S)}}}function h6e(i,e,t,n){let r=360/2**e,s=-180+t*r,o=90-n*r,a=[],l=[],c=[];for(let w=0;w<=Jd;w++){let S=o-w/Jd*r;for(let T=0;T<=Jd;T++){let R=s+T/Jd*r;a.push(...Sx(S,R,OS)),l.push(T/Jd,1-w/Jd)}}let u=Jd+1;for(let w=0;w<Jd;w++)for(let S=0;S<Jd;S++){let T=w*u+S;c.push(T,T+u,T+1),c.push(T+1,T+u,T+u+1)}let f=new Xn;f.setAttribute("position",new Ln(a,3)),f.setAttribute("uv",new Ln(l,2)),f.setIndex(c);let d=new hs,A=new Hn(f,d);A.visible=!1;let y=`${U.volume.base}/tiles/${i.tiles}/${e}/${t}/${n}.${i.formats[e]}`;return new _l().load(y,w=>{w.colorSpace=Nr,d.map=w,d.needsUpdate=!0,A.visible=!0}),A}function FS(){if(Ds.group){for(let i of Ds.tiles.values())Ds.group.remove(i),Ile(i);Ds.tiles.clear(),Ds.key=""}}function Ile(i){i.geometry.dispose(),i.material.map?.dispose(),i.material.dispose()}function Ple(){if(Yn){for(let[i,e]of Tx){let t=i===U.selectedPin;e.material=Dle(i.category,t);let n=t?ble:yle;e.scale.set(n,n,1)}Yn.objectAltitude(i=>i.pin===U.selectedPin?.03:.014)}}function f6e(){if(!Yn||!U.globeActive)return;Ple();let i=wP.get(U.selectedPin);if(i){let e=Yn.pointOfView().altitude;Yn.pointOfView({lat:i.lat,lng:i.lng,altitude:e},600)}}function Lle(i){return!(i.filteredHidden||U.hiddenCategories.has(i.category.id)||U.gridEnabled&&U.gridCell&&!Ip(i))}function tG(){if(!(!Yn||!U.globeActive))for(let[i,e]of Tx)e.visible=Lle(i)}function d6e(i){let e=new DA(Dle(i.category,i===U.selectedPin)),t=i===U.selectedPin?ble:yle;return e.scale.set(t,t,1),e.visible=Lle(i),Tx.set(i,e),e}function Dle(i,e){let t=`${By(i)}:${e?"ringed":"plain"}`,n=vle.get(t);if(n)return n;n=new Ch({depthWrite:!1,sizeAttenuation:!1}),vle.set(t,n);let r=U.markerIcons.get(By(i)),s=o=>{let a=document.createElement("canvas");a.width=80,a.height=80;let l=a.getContext("2d");o?l.drawImage(o,8,8,64,64):(l.font="900 26px Inter, system-ui, sans-serif",l.textAlign="center",l.textBaseline="middle",l.lineWidth=6,l.strokeStyle=rA(),l.strokeText(gu(i.title),40,41),l.fillStyle=sA(i),l.fillText(gu(i.title),40,41)),e&&(l.beginPath(),l.arc(40,40,36,0,Math.PI*2),l.lineWidth=5,l.strokeStyle="#ffffff",l.stroke()),new _l().load(a.toDataURL("image/png"),c=>{n.map=c,n.needsUpdate=!0})};if(r){let o=new Image;o.onload=()=>s(o),o.onerror=()=>s(null),o.src=r}else s(null);return n}function Nle(){U.globeActive&&Mle()}function lG(){!Yn||_e.globe.hidden||(Yn.width(_e.globe.clientWidth).height(_e.globe.clientHeight),bP())}function p6e(){if(!Yn||!U.globeActive||!U.gridEnabled)return;let i=Yn.pointOfView(),e=`${U.gridSystem}:${U.gridCell}:${Math.round(rG(i.altitude)*2)}`;e!==Eo.fitKey&&(Eo.fitKey=e,bP())}function m6e(i){let e=[];for(let t of U.pins){let[n,r]=nv(t.location.lat,t.location.lng),[s,o]=i.toLatLng(n,-r);e.push({lat:s,lng:o,pin:t}),wP.set(t,{lat:s,lng:o})}return e}async function A6e(i){let e=Math.min(xle,i.maxZoom),t=i.formats[e];if(!t)return null;let n=2**e,r=n/2,s=document.createElement("canvas");s.width=n*256,s.height=r*256;let o=s.getContext("2d"),a=[];for(let l=0;l<r;l++)for(let c=0;c<n;c++){let u=`${U.volume.base}/tiles/${i.tiles}/${e}/${c}/${l}.${t}`;a.push(g6e(u).then(f=>{f&&o.drawImage(f,c*256,l*256,256,256)}))}return await Promise.all(a),s.toDataURL("image/jpeg",.92)}function g6e(i){return new Promise(e=>{let t=new Image;t.onload=()=>e(t),t.onerror=()=>e(null),t.src=i})}function Fle(){let i=U.lens,e=_e.overviewCanvas,t=e.getContext("2d"),n=Bf(),r=U.volume.tileGrid.size,s=U.volume.tileGrid.tileSize,o=n[2]-n[0],a=n[3]-n[1],l=0;for(;l<i.fullZoom&&Math.max(o,a)/r*s*2**l<168;)l++;let c=s*2**l/r;e.width=Math.max(1,Math.round(o*c)),e.height=Math.max(1,Math.round(a*c)),t.clearRect(0,0,e.width,e.height),i.background&&(t.fillStyle=i.background,t.fillRect(0,0,e.width,e.height));let u=++U.overviewRun,f=i.formats[l],d=Math.floor(n[0]/r*2**l),A=Math.ceil(n[2]/r*2**l),y=Math.floor(-n[3]/r*2**l),w=Math.ceil(-n[1]/r*2**l);for(let S=y;S<w;S++)for(let T=d;T<A;T++){if(!f||!MP(i,l,T,S))continue;let R=new Image;R.onload=()=>{U.overviewRun===u&&t.drawImage(R,T*s-n[0]*c,S*s+n[3]*c,s,s)},R.src=`${U.volume.base}/tiles/${encodeURIComponent(i.tiles)}/${l}/${T}/${S}.${f}`}Mx()}function Mx(){let i=Tle();if(i){let w=oh(U.world);if(!w||!U.lens)return;let S=Bf(),[T,R]=w.toWorld(i.lat,i.lng),P=_e.overviewCanvas,I=ls((T-S[0])/(S[2]-S[0]),0,1),F=ls((R+S[3])/(S[3]-S[1]),0,1);U.overviewKey="",_e.overviewShelf.hidden=!1;let D=_e.overviewViewport.style,L=22;D.left=`${I*P.width-L/2}px`,D.top=`${F*P.height-L/2}px`,D.width=`${L}px`,D.height=`${L}px`;return}let e=U.engine?.getView();if(!e||!U.lens)return;let t=Bf(),n=e.calculateExtent(U.engine.getSize()),r=t[2]-t[0],s=t[3]-t[1],o=(e.getResolution()||0)*4,a=n[0]<=t[0]+o&&n[1]<=t[1]+o&&n[2]>=t[2]-o&&n[3]>=t[3]-o,l=a?"hidden":n.map(Math.round).join(",");if(l===U.overviewKey||(U.overviewKey=l,_e.overviewShelf.hidden=a,a))return;let c=_e.overviewCanvas,u=ls((n[0]-t[0])/r,0,1),f=ls((n[2]-t[0])/r,0,1),d=ls((t[3]-n[3])/s,0,1),A=ls((t[3]-n[1])/s,0,1),y=_e.overviewViewport.style;y.left=`${u*c.width}px`,y.top=`${d*c.height}px`,y.width=`${Math.max(8,(f-u)*c.width)}px`,y.height=`${Math.max(8,(A-d)*c.height)}px`}function EP(i,e=!0){U.overviewDocked=i,i&&U.overviewPointer!==null&&(U.overviewPointer=null,Cx()),_e.overviewShelf.classList.toggle("is-docked",i),_e.overviewDock.setAttribute("aria-expanded",String(!i));let t=i?"Bring the overview back":"Put the overview away";_e.overviewDock.setAttribute("aria-label",t),_e.overviewDock.title=t,e&&mu()}function cG(i,e){let t=_e.overviewCanvas.getBoundingClientRect(),n=Bf(),r=(a,l,c)=>ls((a-l)/(c-l),0,1);if(U.globeActive){let a=oh(U.world);if(!a)return;let l=n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),c=-n[3]+r(i.clientY,t.top,t.bottom)*(n[3]-n[1]),[u,f]=a.toLatLng(l,c);Ele(u,f,e);return}let s=U.engine?.getView();if(!s||!U.lens)return;let o=[n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),n[3]-r(i.clientY,t.top,t.bottom)*(n[3]-n[1])];if(e){s.animate({center:o,duration:180});return}s.cancelAnimations(),s.setCenter(o)}function dc(i){return new Q$({updateWhileAnimating:!0,...i})}function Ble(){let i=U.volume.tileGrid.size,e=[0,-i,i,0];U.projection=new _p({code:"ATLAS:PIXELS",units:"pixels",extent:e}),U.sources={grid:new hd({wrapX:!1}),gridContext:new hd({wrapX:!1}),zoneScrim:new hd({wrapX:!1}),zones:new hd({wrapX:!1}),zoneTitles:new hd({wrapX:!1}),text:new hd({wrapX:!1}),pins:new hd({wrapX:!1}),priority:new hd({wrapX:!1})},U.layers={raster:new i6({zIndex:0}),rasterDetail:new i6({zIndex:1}),grid:dc({source:U.sources.grid,style:zN,renderOrder:Ic,renderBuffer:40,zIndex:5}),zoneScrim:dc({source:U.sources.zoneScrim,style:cX,zIndex:6}),zones:dc({source:U.sources.zones,style:uX,renderBuffer:32,zIndex:10}),zoneTitles:dc({source:U.sources.zoneTitles,style:hX,renderOrder:Ic,renderBuffer:160,zIndex:20}),zoneTitleDetail:dc({source:U.sources.zoneTitles,style:fX,renderOrder:Ic,renderBuffer:160,zIndex:44}),text:dc({source:U.sources.text,style:iX,renderOrder:Ic,renderBuffer:220,zIndex:30}),textDetail:dc({source:U.sources.text,style:rX,renderOrder:Ic,renderBuffer:220,zIndex:45}),zoneText:dc({source:U.sources.text,style:sX,renderOrder:Ic,renderBuffer:220,zIndex:41}),pins:dc({source:U.sources.pins,style:eX,renderOrder:Ic,renderBuffer:48,zIndex:40}),zonePins:dc({source:U.sources.pins,style:tX,renderOrder:Ic,renderBuffer:48,zIndex:42}),pinLabels:dc({source:U.sources.pins,style:nX,renderOrder:Ic,renderBuffer:180,zIndex:45}),gridContext:dc({source:U.sources.gridContext,style:zN,renderOrder:Ic,renderBuffer:40,zIndex:48}),priority:dc({source:U.sources.priority,style:oX,renderOrder:Ic,renderBuffer:220,zIndex:50})},U.engine=new S$({target:_e.viewport,layers:Object.values(U.layers),controls:DE({attribution:!1,rotate:!1,zoom:!1}),interactions:kE({onFocusOnly:!1}),view:RP(5)}),U.engine.on("movestart",()=>{U.engine.getViewport().classList.add("is-dragging")}),U.engine.on("moveend",()=>{U.engine.getViewport().classList.remove("is-dragging"),U.overviewPointer===null&&Cx()}),U.engine.on("postrender",Mx),_e.viewport.addEventListener("wheel",()=>{document.activeElement!==_e.viewport&&_e.viewport.focus({preventScroll:!0})},{capture:!0,passive:!0}),U.engine.on("singleclick",t=>{if(U.gridEnabled){let r=U.engine.forEachFeatureAtPixel(t.pixel,s=>{let o=s.get("gridCell");return o&&o.role!=="leaf"&&o.role!=="scope"?o:null},{hitTolerance:1,layerFilter:s=>s===U.layers.grid||s===U.layers.gridContext});if(r){oA(r.hash);return}}let n=U.engine.forEachFeatureAtPixel(t.pixel,(r,s)=>CP(s)&&r.get("pin")||null,{hitTolerance:5,layerFilter:CP});n&&xy(n)}),U.engine.on("pointermove",t=>{if(t.dragging){iv(null);return}let n=U.engine.forEachFeatureAtPixel(t.pixel,(o,a)=>CP(a)&&o.get("pin")||null,{hitTolerance:4,layerFilter:CP}),r=n&&sh(n.category)==="text"?null:n;iv(r||null);let s=U.gridEnabled&&U.engine.hasFeatureAtPixel(t.pixel,{layerFilter:o=>o===U.layers.grid||o===U.layers.gridContext});U.engine.getTargetElement().style.cursor=n||s?"pointer":""}),U.engine.getViewport().addEventListener("pointerleave",()=>iv(null))}function CP(i){return i===U.layers.pins||i===U.layers.zonePins||i===U.layers.pinLabels||i===U.layers.priority||i===U.layers.text||i===U.layers.textDetail||i===U.layers.zoneText}function RP(i,e=null){let t=U.volume.tileGrid.size,n=e||[0,-t,t,0];return new Gl({projection:U.projection,center:[(n[0]+n[2])/2,(n[1]+n[3])/2],resolutions:uG(i),minZoom:0,maxZoom:i,extent:n,constrainResolution:!1,smoothResolutionConstraint:!1,showFullExtent:!0,zoom:0})}function uG(i){let e=U.volume.tileGrid.size/U.volume.tileGrid.tileSize;return Array.from({length:i+1},(t,n)=>e/2**n)}async function id(i,e){U.volume=U.catalog.volumes.find(r=>r.slug===i)||U.catalog.volumes[0],U.engine||Ble(),!e&&!U.restore&&(U.restore=Y1(U.volume.slug)),_e.volume.value=U.volume.slug,Um(_e.world,U.volume.maps,"title"),_e.world.disabled=U.volume.maps.length===1,_e.world.title=_e.world.disabled?"This volume has one world":"Choose a world";let t=U.restore?.volume===U.volume.slug?U.restore:null,n=e&&U.volume.maps.find(r=>r.slug===e)||t&&U.volume.maps.find(r=>r.slug===t.map);await hG((n||U.volume.maps[0]).slug)}async function hG(i){let e=U.volume.maps.find(s=>s.slug===i)||U.volume.maps[0],t=++U.worldRun;_e.loading.hidden=!1;let n;try{n=await MX(e)}catch{U.worldRun===t&&(_e.loading.hidden=!0,hA());return}if(U.worldRun!==t)return;U.settling=!0,U.world=n,document.documentElement.style.setProperty("--icon-outset-color",rA()),_e.world.value=U.world.slug,Um(_e.lens,U.world.lenses,"name"),_e.lensField.hidden=U.world.lenses.length<2,U.styleCache.clear(),iv(null),U.gridCell="",U.gridSystem="geohash",U.hiddenCategories.clear(),U.collapsedSections.clear(),U.collapsedSections.add("zones");for(let s of U.world.groups)for(let o of s.categories)o.visible||U.hiddenCategories.add(o.id);let r=U.restore?.map===U.world.slug?U.restore:null;r&&(U.hiddenCategories=new Set(r.hidden),U.collapsedSections=new Set(r.collapsed)),EP(!!U.restore?.overviewDocked,!1),lE(U.restore?!!U.restore.dockFolded:!0,!1),U.dockDismissed=!!U.restore?.dockDismissed,U.search="",_e.search.value="",_e.dock.hidden=!1,_u(),wX(),GN(),yX(),fG(r?ls(r.lens,0,U.world.lenses.length-1):0,!0),wle(),U.restore=null,_e.sidebar.classList.remove("is-open"),_e.mobileLegend.setAttribute("aria-expanded","false"),cj(),U.settling=!1,mu()}function fG(i,e=!1){let t=U.lens;U.lens=U.world.lenses[i]||U.world.lenses[0];let n=U.lens,r=e?null:x6e(t,n),s=dh(n);if(_e.lens.value=String(U.world.lenses.indexOf(U.lens)),e)U.engine.setView(RP(s,Bf()));else{let w=U.engine.getView(),S=RP(s,Bf());S.setCenter(w.getCenter()),S.setZoom(w.getZoom()||0),U.engine.setView(S)}let o=++U.tileRun,a=0;U.tileStats={requested:0,loaded:0,errors:0,peakPending:0},_e.loading.hidden=!1;let l=w=>{w.on("tileloadstart",()=>{U.tileRun===o&&(a++,U.tileStats.requested++,U.tileStats.peakPending=Math.max(U.tileStats.peakPending,a))});let S=T=>{U.tileRun===o&&(a=Math.max(0,a-1),T?U.tileStats.errors++:U.tileStats.loaded++,a===0&&U.tileStats.loaded>0&&(_e.loading.hidden=!0))};return w.on("tileloadend",()=>S(!1)),w.on("tileloaderror",()=>S(!0)),w},c=(w,S)=>l(new aj({projection:U.projection,tileGrid:new gy({extent:[0,-U.volume.tileGrid.size,U.volume.tileGrid.size,0],origin:[0,0],resolutions:uG(w),tileSize:U.volume.tileGrid.tileSize}),cacheSize:64,interpolate:n.interpolate,transition:0,wrapX:!1,tileUrlFunction:([T,R,P])=>{let I=n.formats[T];if(!(!I||R<0||P<0||!S(T,R,P)))return`${U.volume.base}/tiles/${encodeURIComponent(n.tiles)}/${T}/${R}/${P}.${I}`}})),u=n.fullZoom??n.maxZoom,f=c(u,(w,S,T)=>MP(n,w,S,T)),d=U.layers.raster.getSource();U.layers.raster.setSource(f),U.layers.raster.setExtent(Bf()),U.layers.raster.setBackground(n.background||void 0),d?.clear();let A=U.layers.rasterDetail.getSource();n.maxZoom>u?(U.layers.rasterDetail.setSource(c(n.maxZoom,(w,S,T)=>w>u&&MP(n,w,S,T))),U.layers.rasterDetail.setExtent(Bf()),U.layers.rasterDetail.setVisible(!0)):U.layers.rasterDetail.setVisible(!1),A?.clear(),My(),U.gridEnabled&&(xu(),U.layers.pins.changed(),U.layers.text.changed(),U.layers.priority.changed()),U.overviewKey="",Fle();let y=e&&U.restore?.map===U.world.slug?U.restore:null;if(U.renderedShard!==(n.shard||0)&&(GN(),Cc()),y?.center&&Number.isFinite(y.zoom)){let w=U.engine.getView();w.setCenter(y.center),w.setZoom(y.zoom),U.fitZoom=y.zoom,uA()}else e?requestAnimationFrame(y6e):(r&&U.engine.getView().animate({center:r,duration:200}),uA());mu()}function MP(i,e,t,n){let r=i.coverage?.[e];if(!r)return!0;let s=t-r.x,o=n-r.y;if(s<0||o<0||s>=r.w||o>=r.h)return!1;let a=_6e(i,e,r),l=o*r.w+s;return(a[l>>3]&1<<(l&7))!==0}function _6e(i,e,t){if(!t.decoded){let n=atob(t.bits),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);t.decoded=r}return t.decoded}function dh(i){return i.maxZoom+2}function Cx(){uA(),mu()}function x6e(i,e){if(!i||!e||!i.shard||!e.shard||i.shard===e.shard||!i.bounds||!e.bounds)return null;let n=U.engine?.getView()?.getCenter();if(!n)return null;let r=(n[0]-i.bounds.x)/i.bounds.width,s=(-n[1]-i.bounds.y)/i.bounds.height;return[e.bounds.x+ls(r,0,1)*e.bounds.width,-(e.bounds.y+ls(s,0,1)*e.bounds.height)]}function Ole(){let e=document.querySelector(".app-shell").classList.toggle("sidebar-collapsed");_e.mobileLegend.setAttribute("aria-expanded",String(!e)),requestAnimationFrame(()=>U.engine?.updateSize())}function Bf(){let i=U.volume.tileGrid.size,e=U.lens?.bounds||{x:0,y:0,width:i,height:i};return[e.x,-(e.y+e.height),e.x+e.width,-e.y]}function y6e(){if(!U.engine||!U.lens)return;let i=U.engine.getView();i.fit(Bf(),{size:U.engine.getSize(),padding:[36,36,36,36],maxZoom:U.lens.maxZoom,duration:0}),U.fitZoom=i.getZoom()||0,uA()}function US(i){let e=U.engine.getView(),t=e.getZoom()||0;e.animate({zoom:ls(t+i,U.lens.minZoom,dh(U.lens)),duration:140})}function uA(){let i=U.engine?.getView().getZoom();if(_e.viewport.dataset.zoom=Number.isFinite(i)?i.toFixed(3):"",!U.engine||!U.pins.length){_e.visibleCount.textContent="0 locations visible";return}let e=U.engine.getView().calculateExtent(U.engine.getSize()),t=0;for(let n of U.pins){if(Pc(n))continue;let[r,s]=n.coordinate;r>=e[0]&&r<=e[2]&&s>=e[1]&&s<=e[3]&&t++}_e.visibleCount.textContent=`${vu(U.eligibleLocations)} enabled \xB7 ${vu(t)} in view`}function Ule(){_e.volume.addEventListener("change",()=>{id(_e.volume.value)}),_e.world.addEventListener("change",()=>{hG(_e.world.value)}),_e.addBundles.addEventListener("click",()=>{$N()}),_e.emptyOpen.addEventListener("click",()=>{$N()}),_e.lens.addEventListener("change",()=>{fG(Number(_e.lens.value)),Nle()}),_e.globeToggle.addEventListener("click",()=>SP()),_e.legend.addEventListener("change",n=>{let r=n.target;if(r.dataset.sectionToggle){TX(r.dataset.sectionToggle);return}if(!r.dataset.category)return;let s=Number(r.dataset.category);r.checked?U.hiddenCategories.delete(s):U.hiddenCategories.add(s),Cc(),Cp()});let i=null,e=()=>{for(let s of _e.layers.querySelectorAll(".is-hovered"))s.classList.remove("is-hovered");if(!i)return;let r=document.elementFromPoint(i.x,i.y)?.closest(".category-row, .layer-header");r&&_e.layers.contains(r)&&r.classList.add("is-hovered")};_e.layers.addEventListener("pointermove",n=>{i={x:n.clientX,y:n.clientY},e()},{passive:!0}),_e.layers.addEventListener("pointerleave",()=>{i=null,e()}),_e.layers.addEventListener("scroll",e,{passive:!0}),_e.layers.addEventListener("click",n=>{let r=n.target.closest("[data-only-category], [data-only-section]");if(r){n.preventDefault(),n.stopPropagation(),EX(r.dataset.onlyCategory?{category:Number(r.dataset.onlyCategory)}:{section:r.dataset.onlySection});return}let s=n.target.closest("[data-section]");if(!s)return;let o=s.dataset.section;U.collapsedSections.has(o)?U.collapsedSections.delete(o):U.collapsedSections.add(o),IE()}),_e.soloChip.addEventListener("click",()=>Uy(!0)),nn("#expand-all").addEventListener("click",()=>jN(!1)),nn("#collapse-all").addEventListener("click",()=>jN(!0)),nn("#show-all").addEventListener("click",()=>Uy(!0)),nn("#hide-all").addEventListener("click",()=>Uy(!1)),_e.zoneToggle.addEventListener("change",()=>{CE(_e.zoneToggle.checked)}),_e.zoneIndex.addEventListener("click",n=>{let r=n.target.closest("[data-zone]");r&&vX(Number(r.dataset.zone))}),_e.zoneIndex.addEventListener("contextmenu",n=>{let r=n.target.closest("[data-zone]");r&&(n.preventDefault(),_X(Number(r.dataset.zone)))}),_e.search.addEventListener("input",()=>{U.search=_e.search.value.trim().toLocaleLowerCase(),Cc(),U.search&&aE()}),_e.dockFold.addEventListener("click",()=>{JD(!U.dockFolded)}),_e.searchResults.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&eN(s)}),_e.detailLinks.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&eN(s)}),nn("#close-detail").addEventListener("click",_u),nn("#zoom-in").addEventListener("click",()=>U.globeActive?sG(1):US(1)),nn("#zoom-out").addEventListener("click",()=>U.globeActive?sG(-1):US(-1)),_e.gridBack.addEventListener("click",mN),_e.gridSystem.addEventListener("click",AN),_e.gridInput.addEventListener("input",()=>{let n=Ss(),r=n.normalizeInput(_e.gridInput.value);_e.gridInput.value=r,n.parseInput(r)!==null&&oA(r)}),_e.subgridToggle.addEventListener("click",()=>{Ey(!U.subgridVisible),_e.viewport.focus({preventScroll:!0})}),_e.gridInput.addEventListener("keydown",n=>{if(n.key===" "){n.preventDefault(),Ey(!U.subgridVisible);return}if(n.key==="`"){n.preventDefault(),_e.globeToggle.hidden||SP();return}n.key==="Escape"&&(n.preventDefault(),n.stopPropagation(),_e.viewport.focus({preventScroll:!0}))}),_e.viewport.addEventListener("keydown",n=>{if(!oE(n.target)){if(n.key==="+"||n.key==="=")US(1);else if(n.key==="-")US(-1);else if(n.key==="Escape")_u();else return;n.preventDefault()}}),window.addEventListener("contextmenu",n=>{oE(n.target)||n.preventDefault()}),window.addEventListener("keydown",n=>{if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="r"){n.preventDefault(),location.reload();return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="g"){n.preventDefault(),AN();return}if(!oE(n.target)){if(n.key==="`"&&!n.metaKey&&!n.ctrlKey&&!n.altKey){_e.globeToggle.hidden||(n.preventDefault(),SP());return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="k"){n.preventDefault(),_e.search.focus(),_e.search.select();return}if((n.metaKey||n.ctrlKey)&&n.altKey&&n.code==="KeyB"){n.preventDefault(),_e.dock.hidden||JD(!U.dockFolded);return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="b"){n.preventDefault(),Ole();return}Lj(n)||n.key.toLocaleLowerCase()==="z"&&(n.preventDefault(),n.repeat||RE(!0))}}),window.addEventListener("keyup",n=>{n.key.toLocaleLowerCase()==="z"&&RE(!1)}),window.addEventListener("blur",()=>RE(!1)),window.addEventListener("hashchange",()=>{let n=Z1();n.volume===U.volume?.slug&&n.world===U.world?.slug||(U.restore=null,id(n.volume||U.catalog.volumes[0].slug,n.world))}),window.addEventListener("resize",()=>{U.engine?.updateSize(),Mx(),lG()}),document.addEventListener("atlas:globe-camera",()=>Mx()),_e.overview.addEventListener("pointerdown",n=>{U.overviewDocked||n.pointerType==="mouse"&&n.button!==0||(n.preventDefault(),_e.overview.setPointerCapture(n.pointerId),U.overviewPointer=n.pointerId,cG(n,!0))}),_e.overview.addEventListener("pointermove",n=>{U.overviewPointer===n.pointerId&&(n.preventDefault(),cG(n,!1))});let t=n=>{U.overviewPointer===n.pointerId&&(U.overviewPointer=null,Cx())};_e.overview.addEventListener("pointerup",t),_e.overview.addEventListener("pointercancel",t),_e.overviewDock.addEventListener("click",()=>{EP(!U.overviewDocked),_e.viewport.focus({preventScroll:!0})}),_e.mobileLegend.addEventListener("click",()=>{let n=_e.sidebar.classList.toggle("is-open");_e.mobileLegend.setAttribute("aria-expanded",String(n))})}function kle(){let i=()=>({volume:U.volume?.title,world:U.world?.title,lens:U.lens?.name,zoom:U.engine?.getView().getZoom(),center:U.engine?.getView().getCenter(),resolution:U.engine?.getView().getResolution(),nativeMaxZoom:U.lens?.maxZoom,maxZoom:U.lens?dh(U.lens):null,interpolate:U.lens?.interpolate,tileStats:{...U.tileStats},pins:U.pins.length,eligibleLocations:U.eligibleLocations,domNodes:document.querySelectorAll("*").length,canvases:document.querySelectorAll("canvas").length,rasterCacheSize:64,labelsHeld:U.labelsHeld,hoveredPin:U.hoveredPin?.location.title||null,selectedPin:U.selectedPin?.location.title||null,fitZoom:U.fitZoom,filters:{hiddenCategories:[...U.hiddenCategories].sort(),collapsedSections:[...U.collapsedSections].sort()},ui:{sidebarCollapsed:document.querySelector(".app-shell")?.classList.contains("sidebar-collapsed")??!1,detailOpen:!_e.detail.hidden,detailTitle:_e.detail.hidden?null:_e.detailTitle.textContent||null,searchQuery:U.search,searchResultsVisible:!_e.searchResults.hidden,soloChip:_e.soloChip.hidden?null:_e.soloChip.textContent,visibleCountText:_e.visibleCount.textContent,overviewDocked:U.overviewDocked,dockFolded:U.dockFolded,dockDismissed:U.dockDismissed,subgridVisible:U.subgridVisible},zones:{visible:U.zonesVisible,count:U.zoneRecords.size,focused:U.zoneRecords.get(U.focusedZoneID)?.zone.title||null,highlighted:[...U.highlightedZones].map(e=>U.zoneRecords.get(e)?.zone.title).filter(Boolean),focusedPins:U.pins.filter(e=>!e.filteredHidden&&e.insideHighlightedZone).length},grid:{enabled:U.gridEnabled,system:U.gridSystem,prefix:U.gridCell,maximumDepth:Fj(),extent:U.gridEnabled?gN():null,cells:[...U.sources.grid.getFeatures(),...U.sources.gridContext.getFeatures()].map(e=>e.get("gridCell")),priorityPins:U.gridCell?U.pins.filter(e=>!e.filteredHidden&&Ip(e)).length:0}});window.__atlasDebug={snapshot:i,setLayerVisible:(e,t)=>U.layers[e]?.setVisible(t),refreshCatalog:hA},window.render_game_to_text=()=>JSON.stringify({coordinateSystem:"ATLAS:PIXELS; origin top-left; x increases right; y decreases downward",...i()}),window.advanceTime=()=>U.engine?.renderSync()}async function zle(){Ule();try{let i=await fetch("/data/catalog.json");if(!i.ok)throw new Error(`catalog request returned ${i.status}`);if(U.catalog=await i.json(),Um(_e.volume,U.catalog.volumes,"title"),XN(),window.runtime?.EventsOn?.("atlas:catalog-changed",()=>{hA()}),U.catalog.volumes.length){let e=Z1(),t=Y1(),n=t&&(!e.volume||e.volume===t.volume&&e.world===t.world);U.restore=n?t:null,await id(e.volume||t?.volume||U.catalog.volumes[0].slug,e.world||t?.world),U.restore=null}else _e.loading.hidden=!0;kle(),requestAnimationFrame(()=>_e.viewport.focus({preventScroll:!0}))}catch(i){_e.loading.hidden=!0,_e.fatalMessage.textContent=i instanceof Error?i.message:String(i),_e.fatal.hidden=!1}}zle();})();5290+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dle(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,n)}return t}function c1(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?dle(Object(t),!0).forEach(function(n){NS(i,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):dle(Object(t)).forEach(function(n){Object.defineProperty(i,n,Object.getOwnPropertyDescriptor(t,n))})}return i}function q5e(i,e){if(i==null)return{};var t,n,r=H5e(i,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);for(n=0;n<s.length;n++)t=s[n],e.indexOf(t)===-1&&{}.propertyIsEnumerable.call(i,t)&&(r[t]=i[t])}return r}function H5e(i,e){if(i==null)return{};var t={};for(var n in i)if({}.hasOwnProperty.call(i,n)){if(e.indexOf(n)!==-1)continue;t[n]=i[n]}return t}function vP(i){return z5e(i)||V5e(i)||X5e(i)||G5e()}function W5e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function j5e(i){var e=W5e(i,"string");return typeof e=="symbol"?e:e+""}function X5e(i,e){if(i){if(typeof i=="string")return eG(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?eG(i,e):void 0}}function ple(i,e){var t=new e;return t._destructor&&t._destructor(),{linkProp:function(r){return{default:t[r](),onChange:function(o,a){a[i][r](o)},triggerUpdate:!1}},linkMethod:function(r){return function(s){for(var o=s[i],a=arguments.length,l=new Array(a>1?a-1:0),c=1;c<a;c++)l[c-1]=arguments[c];var u=o[r].apply(o,l);return u===o?this:u}}}}var $5e=["rendererConfig","waitForGlobeReady"],DS=c1(c1({},window.THREE?window.THREE:{AmbientLight:qA,DirectionalLight:GA,Vector2:Oe,REVISION:"185"}),{},{CSS2DRenderer:LM}),mle=ple("globe",yV),Y5e=Object.assign.apply(Object,vP(["globeImageUrl","bumpImageUrl","globeTileEngineUrl","globeTileEngineMaxLevel","globeCurvatureResolution","showGlobe","showGraticules","showAtmosphere","atmosphereColor","atmosphereAltitude","onGlobeReady","pointsData","pointLat","pointLng","pointColor","pointAltitude","pointRadius","pointResolution","pointsMerge","pointsTransitionDuration","arcsData","arcStartLat","arcStartLng","arcStartAltitude","arcEndLat","arcEndLng","arcEndAltitude","arcColor","arcAltitude","arcAltitudeAutoScale","arcStroke","arcCurveResolution","arcCircularResolution","arcDashLength","arcDashGap","arcDashInitialGap","arcDashAnimateTime","arcsTransitionDuration","polygonsData","polygonGeoJsonGeometry","polygonCapColor","polygonCapMaterial","polygonSideColor","polygonSideMaterial","polygonStrokeColor","polygonAltitude","polygonCapCurvatureResolution","polygonsTransitionDuration","pathsData","pathPoints","pathPointLat","pathPointLng","pathPointAlt","pathResolution","pathColor","pathStroke","pathDashLength","pathDashGap","pathDashInitialGap","pathDashAnimateTime","pathTransitionDuration","heatmapsData","heatmapPoints","heatmapPointLat","heatmapPointLng","heatmapPointWeight","heatmapBandwidth","heatmapColorFn","heatmapColorSaturation","heatmapBaseAltitude","heatmapTopAltitude","heatmapsTransitionDuration","hexBinPointsData","hexBinPointLat","hexBinPointLng","hexBinPointWeight","hexBinResolution","hexMargin","hexTopCurvatureResolution","hexTopColor","hexSideColor","hexAltitude","hexBinMerge","hexTransitionDuration","hexPolygonsData","hexPolygonGeoJsonGeometry","hexPolygonColor","hexPolygonAltitude","hexPolygonResolution","hexPolygonMargin","hexPolygonUseDots","hexPolygonCurvatureResolution","hexPolygonDotResolution","hexPolygonsTransitionDuration","tilesData","tileLat","tileLng","tileAltitude","tileWidth","tileHeight","tileUseGlobeProjection","tileMaterial","tileCurvatureResolution","tilesTransitionDuration","particlesData","particlesList","particleLat","particleLng","particleAltitude","particlesSize","particlesSizeAttenuation","particlesColor","particlesTexture","ringsData","ringLat","ringLng","ringAltitude","ringColor","ringResolution","ringMaxRadius","ringPropagationSpeed","ringRepeatPeriod","labelsData","labelLat","labelLng","labelAltitude","labelRotation","labelText","labelSize","labelTypeFace","labelColor","labelResolution","labelIncludeDot","labelDotRadius","labelDotOrientation","labelsTransitionDuration","htmlElementsData","htmlLat","htmlLng","htmlAltitude","htmlElement","htmlElementVisibilityModifier","htmlTransitionDuration","objectsData","objectLat","objectLng","objectAltitude","objectRotation","objectFacesSurface","objectThreeObject","customLayerData","customThreeObject","customThreeObjectUpdate"].map(function(i){return NS({},i,mle.linkProp(i))}))),Z5e=Object.assign.apply(Object,vP(["globeMaterial","globeTileEngineClearCache","getGlobeRadius","getCoords","toGeoCoords"].map(function(i){return NS({},i,mle.linkMethod(i))}))),Ale=ple("renderObjs",JV),K5e=Object.assign.apply(Object,vP(["width","height","backgroundColor","backgroundImageUrl","enablePointerInteraction"].map(function(i){return NS({},i,Ale.linkProp(i))}))),Q5e=Object.assign.apply(Object,vP(["lights","postProcessingComposer"].map(function(i){return NS({},i,Ale.linkMethod(i))}))),gle=Zr({props:c1(c1({onZoom:{triggerUpdate:!1},onGlobeClick:{triggerUpdate:!1},onGlobeRightClick:{triggerUpdate:!1},pointLabel:{default:"name",triggerUpdate:!1},onPointClick:{triggerUpdate:!1},onPointRightClick:{triggerUpdate:!1},onPointHover:{triggerUpdate:!1},arcLabel:{default:"name",triggerUpdate:!1},onArcClick:{triggerUpdate:!1},onArcRightClick:{triggerUpdate:!1},onArcHover:{triggerUpdate:!1},polygonLabel:{default:"name",triggerUpdate:!1},onPolygonClick:{triggerUpdate:!1},onPolygonRightClick:{triggerUpdate:!1},onPolygonHover:{triggerUpdate:!1},pathLabel:{default:"name",triggerUpdate:!1},onPathClick:{triggerUpdate:!1},onPathRightClick:{triggerUpdate:!1},onPathHover:{triggerUpdate:!1},onHeatmapClick:{triggerUpdate:!1},onHeatmapRightClick:{triggerUpdate:!1},onHeatmapHover:{triggerUpdate:!1},hexLabel:{triggerUpdate:!1},onHexClick:{triggerUpdate:!1},onHexRightClick:{triggerUpdate:!1},onHexHover:{triggerUpdate:!1},hexPolygonLabel:{triggerUpdate:!1},onHexPolygonClick:{triggerUpdate:!1},onHexPolygonRightClick:{triggerUpdate:!1},onHexPolygonHover:{triggerUpdate:!1},tileLabel:{default:"name",triggerUpdate:!1},onTileClick:{triggerUpdate:!1},onTileRightClick:{triggerUpdate:!1},onTileHover:{triggerUpdate:!1},particleLabel:{default:"name",triggerUpdate:!1},onParticleClick:{triggerUpdate:!1},onParticleRightClick:{triggerUpdate:!1},onParticleHover:{triggerUpdate:!1},labelLabel:{triggerUpdate:!1},onLabelClick:{triggerUpdate:!1},onLabelRightClick:{triggerUpdate:!1},onLabelHover:{triggerUpdate:!1},objectLabel:{default:"name",triggerUpdate:!1},onObjectClick:{triggerUpdate:!1},onObjectRightClick:{triggerUpdate:!1},onObjectHover:{triggerUpdate:!1},customLayerLabel:{default:"name",triggerUpdate:!1},onCustomLayerClick:{triggerUpdate:!1},onCustomLayerRightClick:{triggerUpdate:!1},onCustomLayerHover:{triggerUpdate:!1},pointerEventsFilter:{default:function(){return!0},triggerUpdate:!1},lineHoverPrecision:{default:.2,triggerUpdate:!1,onChange:function(e,t){t.renderObjs.lineHoverPrecision(e),t.renderObjs.pointsHoverPrecision(e)}},showPointerCursor:{default:!0,triggerUpdate:!1},globeOffset:{default:[0,0],triggerUpdate:!1,onChange:function(e,t){return Array.isArray(e)&&e.length===2&&t.renderObjs.viewOffset(e.map(function(n){return-n}))}}},Y5e),K5e),methods:c1(c1({pauseAnimation:function(e){var t;return e.animationFrameRequestId!==null&&(cancelAnimationFrame(e.animationFrameRequestId),e.animationFrameRequestId=null),(t=e.globe)===null||t===void 0||t.pauseAnimation(),this},resumeAnimation:function(e){var t;return e.animationFrameRequestId===null&&this._animationCycle(),(t=e.globe)===null||t===void 0||t.resumeAnimation(),this},_animationCycle:function(e){e.renderObjs.tick(),e.tweenGroup.update(),e.animationFrameRequestId=requestAnimationFrame(this._animationCycle)},pointOfView:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=a();if(t.lat===void 0&&t.lng===void 0&&t.altitude===void 0)return r;var s,o=Object.assign({},r,t);if(["lat","lng","altitude"].forEach(function(c){return o[c]=+o[c]}),(s=e.povTween)===null||s===void 0||s.end(),!n)l(o);else{for(;r.lng-o.lng>180;)r.lng-=360;for(;r.lng-o.lng<-180;)r.lng+=360;e.tweenGroup.add(e.povTween=new co(r).to(o,n).easing(Kr.Cubic.InOut).onUpdate(l).onComplete(function(){e.povTween=void 0,e.tweenGroup.remove(this)}).start())}return this;function a(){return e.globe.toGeoCoords(e.renderObjs.cameraPosition())}function l(c){var u=c.lat,f=c.lng,d=c.altitude;e.renderObjs.cameraPosition(e.globe.getCoords(u,f,d)),e.globe.setPointOfView(e.renderObjs.camera())}},getScreenCoords:function(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];var o=(t=e.globe).getCoords.apply(t,r);return e.renderObjs.getScreenCoords(o.x,o.y,o.z)},toGlobeCoords:function(e,t,n){var r=e.renderObjs.intersectingObjects(t,n).find(function(l){return(l.object.__globeObjType||l.object.parent.__globeObjType)==="globe"});if(!r)return null;var s=e.globe.toGeoCoords(r.point),o=s.lat,a=s.lng;return{lat:o,lng:a}},scene:function(e){return e.renderObjs.scene()},camera:function(e){return e.renderObjs.camera()},renderer:function(e){return e.renderObjs.renderer()},controls:function(e){return e.renderObjs.controls()},_destructor:function(e){this.pauseAnimation(),this.pointsData([]),this.arcsData([]),this.polygonsData([]),this.pathsData([]),this.heatmapsData([]),this.hexBinPointsData([]),this.hexPolygonsData([]),this.tilesData([]),this.particlesData([]),this.labelsData([]),this.htmlElementsData([]),this.objectsData([]),this.customLayerData([]),e.globe._destructor(),e.renderObjs._destructor()}},Z5e),Q5e),stateInit:function(e){var t=e.rendererConfig,n=e.waitForGlobeReady,r=n===void 0?!0:n,s=q5e(e,$5e),o=new yV(c1({waitForGlobeReady:r},s));return{globe:o,renderObjs:JV({controlType:"orbit",rendererConfig:t,waitForLoadComplete:r,extraRenderers:[new DS.CSS2DRenderer]}).skyRadius(o.getGlobeRadius()*500).showNavInfo(!1).objects([o]).lights([new DS.AmbientLight(13421772,Math.PI),new DS.DirectionalLight(16777215,.6*Math.PI)]),tweenGroup:new og}},init:function(e,t){var n=this;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.style.position="relative";var r=document.createElement("div");t.container.appendChild(r),t.renderObjs(r),t.globe.rendererSize(t.renderObjs.renderer().getSize(new DS.Vector2)),this.pointOfView({altitude:2.5});var s=t.globe.getGlobeRadius(),o=t.renderObjs.controls();t.renderObjs.camera().near=.05,o.minDistance=s+Math.max(.001,t.renderObjs.camera().near*1.1),o.maxDistance=s*100,o.enablePan=!1,o.enableDamping=!0,o.dampingFactor=.1,o.rotateSpeed=.3,o.zoomSpeed=.3,o.zoomToCursor=!0,o.addEventListener("change",function(){o.target.setScalar(0);var c=n.pointOfView();o.rotateSpeed=c.altitude*.3,o.zoomSpeed=Math.sqrt(c.altitude)*.5,t.globe.setPointOfView(t.renderObjs.camera()),t.onZoom&&t.onZoom(c)});var a=function(u){for(var f=u;f&&!f.hasOwnProperty("__globeObjType");)f=f.parent;return f},l={point:function(u){return u},arc:function(u){return u},polygon:function(u){return u.data},path:function(u){return u},heatmap:function(u){return u},hexbin:function(u){return u},hexPolygon:function(u){return u},tile:function(u){return u},particles:function(u,f){return!f||!f.hasOwnProperty("index")||u.length<=f.index?u:u[f.index]},label:function(u){return u},object:function(u){return u},custom:function(u){return u}};DS.REVISION<155&&(t.renderObjs.renderer().useLegacyLights=!1),t.renderObjs.hoverFilter(function(c){var u=a(c);if(!u)return!1;var f=u.__globeObjType;if(f!=="globe"&&!l.hasOwnProperty(f))return!1;var d=l.hasOwnProperty(f)&&u.__data?l[f](u.__data):null;return["points","hexBinPoints"].some(function(A){return A===f})&&Array.isArray(d)?!1:t.pointerEventsFilter(u,d)}).tooltipContent(function(c,u){var f={point:t.pointLabel,arc:t.arcLabel,polygon:t.polygonLabel,path:t.pathLabel,hexbin:t.hexLabel,hexPolygon:t.hexPolygonLabel,tile:t.tileLabel,particles:t.particleLabel,label:t.labelLabel,object:t.objectLabel,custom:t.customLayerLabel},d=a(c),A=d&&d.__globeObjType;return d&&A&&f.hasOwnProperty(A)&&l.hasOwnProperty(A)&&st(f[A])(l[A](d.__data,u))||""}).onHover(function(c,u,f){var d={point:t.onPointHover,arc:t.onArcHover,polygon:t.onPolygonHover,path:t.onPathHover,heatmap:t.onHeatmapHover,hexbin:t.onHexHover,hexPolygon:t.onHexPolygonHover,tile:t.onTileHover,particles:t.onParticleHover,label:t.onLabelHover,object:t.onObjectHover,custom:t.onCustomLayerHover},A={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},y=a(c);if(y&&!d.hasOwnProperty(y.__globeObjType)&&(y=null),y!==t.hoverObj){var w,S=t.hoverObj?t.hoverObj.__globeObjType:null,T=t.hoverData,R=y?y.__globeObjType:null,P=(w=y)!==null&&w!==void 0&&w.__data?l[R](y.__data,f):null;S&&S!==R&&d[S]&&d[S](null,T||null),R&&d[R]&&d[R](P,S===R?T:null),t.renderObjs.renderer().domElement.classList[R&&A[R]&&st(t.showPointerCursor)(R,P)?"add":"remove"]("clickable"),t.hoverObj=y,t.hoverData=P}}).onClick(function(c,u,f){if(c){var d={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}).onRightClick(function(c,u,f){if(c){var d={globe:t.onGlobeRightClick,point:t.onPointRightClick,arc:t.onArcRightClick,polygon:t.onPolygonRightClick,path:t.onPathRightClick,heatmap:t.onHeatmapRightClick,hexbin:t.onHexRightClick,hexPolygon:t.onHexPolygonRightClick,tile:t.onTileRightClick,particles:t.onParticleRightClick,label:t.onLabelRightClick,object:t.onObjectRightClick,custom:t.onCustomLayerRightClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}),this._animationCycle()}});var xle=4,wx=100,OS=wx+.2,Jd=8,J5e=96,yle=.045,ble=.08;function Sx(i,e,t){let n=(90-i)*Math.PI/180,r=(90-e)*Math.PI/180;return[t*Math.sin(n)*Math.cos(r),t*Math.cos(n),t*Math.sin(n)*Math.sin(r)]}var Yn=null,xP="",Ds={group:null,tiles:new Map,key:"",lens:""},Eo={group:null,cell:null,fitKey:""},tu={group:null,key:""},e6e=180,nG=null,Tx=new Map,wP=new Map,vle=new Map;function wle(){let i=bT(U.world)==="sphere"&&oh(U.world)!==null;_e.globeToggle.hidden=!i,Sle(),!i&&Yn&&(FS(),Ds.group=null,Eo.group=null,Eo.cell=null,tu.group=null,tu.key="",Yn._destructor(),Yn=null,xP="",nG=null,_e.globe.replaceChildren())}function SP(){U.globeActive?Sle():Mle()}var BS=2.5,yP=2,Ex=.08,TP=4;function t6e(i){let e=Number.isFinite(i)?i:yP;return ls(BS/2**(e-yP),Ex,TP)}function rG(i){let e=Number.isFinite(i)?Math.max(i,Ex/2):BS,t=(U.lens?.maxZoom??yP)+2;return ls(yP+Math.log2(BS/e),0,t)}function sG(i){if(!Yn||!U.globeActive)return;let e=Yn.pointOfView(),t=ls((Number.isFinite(e.altitude)?e.altitude:BS)/2**i,Ex,TP);Yn.pointOfView({altitude:t},180)}function Sle(){let i=oh(U.world),e=U.engine?.getView();if(Yn&&U.globeActive&&i&&e){let t=Yn.pointOfView(),[n,r]=i.toWorld(t.lat,t.lng);Number.isFinite(n)&&Number.isFinite(r)&&(e.cancelAnimations(),e.setCenter([n,-r]),e.setZoom(rG(t.altitude)))}U.globeActive=!1,_e.globe.hidden=!0,_e.globeToggle.setAttribute("aria-pressed","false"),_e.viewport.hidden=!1,FS(),U.overviewKey="",document.dispatchEvent(new Event("atlas:globe-camera"))}function Tle(){if(!Yn||!U.globeActive)return null;let i=Yn.pointOfView();return{lat:i.lat,lng:i.lng}}function Ele(i,e,t){if(!Yn)return;let n=Yn.pointOfView().altitude;Yn.pointOfView({lat:i,lng:e,altitude:n},t?180:0)}async function Mle(){let i=oh(U.world);if(!i)return;if(U.globeActive=!0,_e.viewport.hidden=!0,_e.globe.hidden=!1,_e.globeToggle.setAttribute("aria-pressed","true"),U.overviewKey="",!Yn){Yn=gle({animateIn:!1})(_e.globe).backgroundColor("#0b0e12").showAtmosphere(!0).atmosphereColor("#8a6f5b").atmosphereAltitude(.12).objectLat(o=>o.lat).objectLng(o=>o.lng).objectAltitude(o=>o.pin===U.selectedPin?.03:.014).objectThreeObject(o=>d6e(o.pin)).objectLabel(o=>o.pin.location.title).onObjectClick(o=>xy(o.pin)).onObjectHover(o=>{_e.globe.style.cursor=o?"pointer":""}).onZoom(()=>{document.dispatchEvent(new Event("atlas:globe-camera")),_le(),_P(),p6e(),aG()}),document.addEventListener("atlas:selection",f6e),document.addEventListener("atlas:filters",tG),document.addEventListener("atlas:grid",()=>{bP(),tG(),_P()}),document.addEventListener("atlas:labels",_P),Yn.onGlobeClick(({lat:o,lng:a})=>{if(!U.gridEnabled)return;let l=oh(U.world);if(!l)return;let[c,u]=l.toWorld(o,a),f=Ss().descendTarget(U.gridCell,[c,-u]);f&&oA(f)});let s=Yn.controls();s.minDistance=wx*(1+Ex),s.maxDistance=wx*(1+TP),Ds.group=new Fr,Yn.scene().add(Ds.group),Eo.group=new Fr,Yn.scene().add(Eo.group),tu.group=new Fr,Yn.scene().add(tu.group),window.__atlasGlobe={detail:Ds,grid:Eo,labels:tu,sprites:Tx}}lG();let e=U.engine?.getView(),t=e?.getCenter();if(t&&Number.isFinite(t[0])&&Number.isFinite(t[1])){let[s,o]=i.toLatLng(t[0],-t[1]);Yn.pointOfView({lat:s,lng:o,altitude:t6e(e.getZoom())})}else Yn.pointOfView({lat:10,lng:0,altitude:BS});let n=U.lens||U.world.lenses[0],r=`${U.volume.stamp}:${U.world.slug}:${n.tiles}`;if(xP!==r){xP=r;let s=await A6e(n);s&&xP===r&&Yn.globeImageUrl(s)}nG!==U.pins&&(nG=U.pins,Tx.clear(),wP.clear(),Yn.objectsData(m6e(i))),tG(),Ple(),_le(),bP(),_P(),document.dispatchEvent(new Event("atlas:globe-camera"))}function bP(){if(!Yn||!Eo.group)return;for(let t of[...Eo.group.children])Eo.group.remove(t),t.geometry?.dispose(),t.material?.map?.dispose(),t.material?.dispose();let i=U.globeActive?oh(U.world):null;if(!i||!U.gridEnabled){Eo.cell=null;return}let e=Ss();for(let t of AE()){let n=Cle(t.ring,i),r=oG(n),s=mE(t,{subgridVisible:U.subgridVisible,labelled:r6e(t,r)});if(s){if(s.fill){let o=Rle(e.center(t.hash),i);Eo.group.add(s6e(n,o,s.fill))}Eo.group.add(l6e(n,s.line)),s.label&&Eo.group.add(c6e(s.label,r))}}Eo.cell!==null&&Eo.cell!==U.gridCell&&u6e(i),Eo.cell=U.gridCell,aG()}function Cle(i,e){return i.map(([t,n])=>e.toLatLng(t,-n))}function Rle(i,e){return e.toLatLng(i[0],-i[1])}function n6e(i){let e=[];for(let t=0;t<i.length-1;t++){let[n,r]=i[t],[s,o]=i[t+1],a=Math.max(Math.abs(s-n),Math.abs(o-r)),l=ls(Math.ceil(a/2),1,48);for(let c=0;c<l;c++){let u=c/l;e.push([n+(s-n)*u,r+(o-r)*u])}}return e}function oG(i){let e=-1/0,t=1/0,n=1/0,r=-1/0;for(let[s,o]of i)e=Math.max(e,s),t=Math.min(t,s),n=Math.min(n,o),r=Math.max(r,o);return{north:e,south:t,west:n,east:r}}function i6e(i){let e=Yn.pointOfView(),t=Math.max(e.altitude,Ex/2),n=50*Math.PI/180,r=2*t*wx*Math.tan(n/2)/Math.max(1,_e.globe.clientHeight||1),s=wx*Math.PI/180/r;return{width:Math.abs(i.east-i.west)*s,height:Math.abs(i.north-i.south)*s}}function r6e(i,e){let n=i.role==="neighbor"?Vi.neighborLabelSizePx:Vi.labelSizePx,r=`900 ${n}px ${Vi.labelFont}`,s=i6e(e);return VN(i.hash,r)+9<=s.width&&n+6<=s.height}function s6e(i,e,t){let n=OS+.12,r=n6e(i),s=oG(i),o=Math.max(s.east-s.west,s.north-s.south),a=ls(Math.ceil(o/6),2,24),l=Sx(e[0],e[1],n),c=r.map(([T,R])=>Sx(T,R,n)),u=[...l],f=[];for(let T=1;T<=a;T++){let R=T/a;for(let P of c){let I=l[0]+(P[0]-l[0])*R,F=l[1]+(P[1]-l[1])*R,D=l[2]+(P[2]-l[2])*R,L=n/(Math.hypot(I,F,D)||1);u.push(I*L,F*L,D*L)}}let d=r.length,A=(T,R)=>1+(T-1)*d+R%d;for(let T=0;T<d;T++)f.push(0,A(1,T),A(1,T+1));for(let T=1;T<a;T++)for(let R=0;R<d;R++)f.push(A(T,R),A(T+1,R),A(T,R+1)),f.push(A(T,R+1),A(T+1,R),A(T+1,R+1));let y=new Xn;y.setAttribute("position",new Ln(u,3)),y.setIndex(f);let w=new hs({color:t.color,transparent:!0,opacity:t.opacity,depthWrite:!1,side:2}),S=new Hn(y,w);return S.renderOrder=1,S}function _P(){if(!Yn||!tu.group)return;let i=U.globeActive&&U.labelsHeld,e=i?Yn.pointOfView():null,t=i?`${Math.round(e.lat)}:${Math.round(e.lng)}:${e.altitude.toFixed(2)}:${U.gridSystem}:${U.gridCell}`:"";if(t===tu.key)return;tu.key=t;for(let r of[...tu.group.children])tu.group.remove(r),r.material?.map?.dispose(),r.material?.dispose();if(!i)return;let n=[];for(let[r,s]of Tx){if(!s.visible)continue;let o=wP.get(r);if(!o)continue;let a=o6e(e,o);a>85||n.push({pin:r,stood:o,distance:a})}n.sort((r,s)=>r.distance-s.distance);for(let{pin:r,stood:s}of n.slice(0,e6e))tu.group.add(a6e(r,s));aG()}function aG(){if(!Yn)return;let i=Yn.camera().position,e=i.length()||1,t=wx/e;for(let n of[Eo.group,tu.group])if(n)for(let r of n.children){if(!r.isSprite)continue;let s=r.position,o=s.length()||1,a=(s.x*i.x+s.y*i.y+s.z*i.z)/(o*e);r.visible=a>t}}function o6e(i,e){let t=Math.PI/180,n=Math.sin(i.lat*t)*Math.sin(e.lat*t)+Math.cos(i.lat*t)*Math.cos(e.lat*t)*Math.cos((i.lng-e.lng)*t);return Math.acos(ls(n,-1,1))*180/Math.PI}function a6e(i,e){let t=i.location.title,n=document.createElement("canvas"),r=n.getContext("2d"),s="600 26px Inter, system-ui, sans-serif";r.font=s;let o=Math.ceil(r.measureText(t).width)+24;n.width=o,n.height=40,r.font=s,r.textAlign="center",r.textBaseline="middle",r.fillStyle="rgba(10, 13, 17, 0.78)",r.fillRect(0,0,o,40),r.fillStyle="#e6ebf0",r.fillText(t,o/2,21);let a=new Ch({depthTest:!1,depthWrite:!1,sizeAttenuation:!1,transparent:!0});new _l().load(n.toDataURL("image/png"),u=>{a.map=u,a.needsUpdate=!0});let l=new DA(a);l.position.set(...Sx(e.lat,e.lng,OS+.4)),l.renderOrder=4;let c=.028;return l.scale.set(c*o/40,c,1),l.center.set(.5,0),l}function l6e(i,e){let t=[];for(let o=0;o<i.length-1;o++){let[a,l]=i[o],[c,u]=i[o+1],f=Math.max(Math.abs(c-a),Math.abs(u-l)),d=ls(Math.ceil(f/2),4,48);for(let A=0;A<d;A++){let y=A/d;t.push(...Sx(a+(c-a)*y,l+(u-l)*y,OS+.25))}}t.push(...t.slice(0,3));let n=new xm;n.setPositions(t);let r=new Cf({color:e.color,transparent:!0,opacity:e.opacity,linewidth:e.widthPx,depthWrite:!1});r.resolution.set(_e.globe.clientWidth||1,_e.globe.clientHeight||1);let s=new mx(n,r);return s.computeLineDistances(),s.renderOrder=2,s}function c6e(i,e){let n=i.sizePx*2,r=`500 ${n}px ${Vi.labelFont}`,s=`900 ${n}px ${Vi.labelFont}`,o=document.createElement("canvas"),a=o.getContext("2d");a.font=r;let l=i.prefix?a.measureText(i.prefix).width:0;a.font=s;let c=a.measureText(i.final).width,u=10;o.width=Math.ceil(l+c+u*2),o.height=n+u*1.4,a.fillStyle=i.chip,a.fillRect(0,0,o.width,o.height),a.textBaseline="middle";let f=o.height/2+2;i.prefix&&(a.font=r,a.fillStyle=i.color,a.globalAlpha=Vi.prefixAlpha*i.textAlpha,a.fillText(i.prefix,u,f)),a.font=s,a.globalAlpha=i.textAlpha,a.fillStyle=i.color,a.fillText(i.final,u+l,f),a.globalAlpha=1;let d=new Ch({depthTest:!1,depthWrite:!1,transparent:!0,sizeAttenuation:!1});new _l().load(o.toDataURL("image/png"),R=>{d.map=R,d.needsUpdate=!0});let A=new DA(d),y=Math.abs(e.north-e.south)*.02,w=Math.abs(e.east-e.west)*.02;A.position.set(...Sx(e.south+y,e.east-w,OS+.35));let S=Math.max(1,_e.globe.clientHeight||1),T=o.height/2/S;return A.scale.set(T*o.width/o.height,T,1),A.center.set(1,0),A.renderOrder=3,A}function u6e(i){let t=AE().find(l=>l.role==="scope"||l.role==="leaf");if(!t)return;let[n,r]=Rle(Ss().center(t.hash),i),s=oG(Cle(t.ring,i)),o=Math.max(s.east-s.west,s.north-s.south),a=ls(o/45,Ex,TP);Yn.pointOfView({lat:n,lng:r,altitude:a},400)}function _le(){if(!Yn||!Ds.group)return;let i=U.globeActive?U.lens||U.world.lenses[0]:null;if(!i){FS();return}Ds.lens!==i.tiles&&(FS(),Ds.lens=i.tiles);let e=Yn.pointOfView(),t=Math.min(Math.round(rG(e.altitude))+1,i.maxZoom);if(t<=xle||!i.formats[t]){FS(),Ds.key="";return}let n=2**t,r=n/2,s=360/n,o=Math.acos(1/(1+e.altitude))*180/Math.PI+s,a=Math.floor(((e.lng+180)%360+360)%360/s),l=Math.floor((90-e.lat)/s),c=Math.ceil(o/s);for(;(2*c+1)**2>J5e&&c>1;)c--;let u=new Set;for(let d=-c;d<=c;d++){let A=l+d;if(!(A<0||A>=r))for(let y=-c;y<=c;y++){let w=((a+y)%n+n)%n;u.add(`${t}/${w}/${A}`)}}let f=`${i.tiles}:${[...u].sort().join(",")}`;if(f!==Ds.key){Ds.key=f;for(let[d,A]of Ds.tiles)u.has(d)||(Ds.group.remove(A),Ile(A),Ds.tiles.delete(d));for(let d of u){if(Ds.tiles.has(d))continue;let[A,y,w]=d.split("/").map(Number),S=h6e(i,A,y,w);Ds.tiles.set(d,S),Ds.group.add(S)}}}function h6e(i,e,t,n){let r=360/2**e,s=-180+t*r,o=90-n*r,a=[],l=[],c=[];for(let w=0;w<=Jd;w++){let S=o-w/Jd*r;for(let T=0;T<=Jd;T++){let R=s+T/Jd*r;a.push(...Sx(S,R,OS)),l.push(T/Jd,1-w/Jd)}}let u=Jd+1;for(let w=0;w<Jd;w++)for(let S=0;S<Jd;S++){let T=w*u+S;c.push(T,T+u,T+1),c.push(T+1,T+u,T+u+1)}let f=new Xn;f.setAttribute("position",new Ln(a,3)),f.setAttribute("uv",new Ln(l,2)),f.setIndex(c);let d=new hs,A=new Hn(f,d);A.visible=!1;let y=`${U.volume.base}/tiles/${i.tiles}/${e}/${t}/${n}.${i.formats[e]}`;return new _l().load(y,w=>{w.colorSpace=Nr,d.map=w,d.needsUpdate=!0,A.visible=!0}),A}function FS(){if(Ds.group){for(let i of Ds.tiles.values())Ds.group.remove(i),Ile(i);Ds.tiles.clear(),Ds.key=""}}function Ile(i){i.geometry.dispose(),i.material.map?.dispose(),i.material.dispose()}function Ple(){if(Yn){for(let[i,e]of Tx){let t=i===U.selectedPin;e.material=Dle(i.category,t);let n=t?ble:yle;e.scale.set(n,n,1)}Yn.objectAltitude(i=>i.pin===U.selectedPin?.03:.014)}}function f6e(){if(!Yn||!U.globeActive)return;Ple();let i=wP.get(U.selectedPin);if(i){let e=Yn.pointOfView().altitude;Yn.pointOfView({lat:i.lat,lng:i.lng,altitude:e},600)}}function Lle(i){return!(i.filteredHidden||U.hiddenCategories.has(i.category.id)||U.gridEnabled&&U.gridCell&&!Ip(i))}function tG(){if(!(!Yn||!U.globeActive))for(let[i,e]of Tx)e.visible=Lle(i)}function d6e(i){let e=new DA(Dle(i.category,i===U.selectedPin)),t=i===U.selectedPin?ble:yle;return e.scale.set(t,t,1),e.visible=Lle(i),Tx.set(i,e),e}function Dle(i,e){let t=`${By(i)}:${e?"ringed":"plain"}`,n=vle.get(t);if(n)return n;n=new Ch({depthWrite:!1,sizeAttenuation:!1}),vle.set(t,n);let r=U.markerIcons.get(By(i)),s=o=>{let a=document.createElement("canvas");a.width=80,a.height=80;let l=a.getContext("2d");o?l.drawImage(o,8,8,64,64):(l.font="900 26px Inter, system-ui, sans-serif",l.textAlign="center",l.textBaseline="middle",l.lineWidth=6,l.strokeStyle=rA(),l.strokeText(gu(i.title),40,41),l.fillStyle=sA(i),l.fillText(gu(i.title),40,41)),e&&(l.beginPath(),l.arc(40,40,36,0,Math.PI*2),l.lineWidth=5,l.strokeStyle="#ffffff",l.stroke()),new _l().load(a.toDataURL("image/png"),c=>{n.map=c,n.needsUpdate=!0})};if(r){let o=new Image;o.onload=()=>s(o),o.onerror=()=>s(null),o.src=r}else s(null);return n}function Nle(){U.globeActive&&Mle()}function lG(){!Yn||_e.globe.hidden||(Yn.width(_e.globe.clientWidth).height(_e.globe.clientHeight),bP())}function p6e(){if(!Yn||!U.globeActive||!U.gridEnabled)return;let i=Yn.pointOfView(),e=`${U.gridSystem}:${U.gridCell}:${Math.round(rG(i.altitude)*2)}`;e!==Eo.fitKey&&(Eo.fitKey=e,bP())}function m6e(i){let e=[];for(let t of U.pins){let[n,r]=nv(t.location.lat,t.location.lng),[s,o]=i.toLatLng(n,-r);e.push({lat:s,lng:o,pin:t}),wP.set(t,{lat:s,lng:o})}return e}async function A6e(i){let e=Math.min(xle,i.maxZoom),t=i.formats[e];if(!t)return null;let n=2**e,r=n/2,s=document.createElement("canvas");s.width=n*256,s.height=r*256;let o=s.getContext("2d"),a=[];for(let l=0;l<r;l++)for(let c=0;c<n;c++){let u=`${U.volume.base}/tiles/${i.tiles}/${e}/${c}/${l}.${t}`;a.push(g6e(u).then(f=>{f&&o.drawImage(f,c*256,l*256,256,256)}))}return await Promise.all(a),s.toDataURL("image/jpeg",.92)}function g6e(i){return new Promise(e=>{let t=new Image;t.onload=()=>e(t),t.onerror=()=>e(null),t.src=i})}function Fle(){let i=U.lens,e=_e.overviewCanvas,t=e.getContext("2d"),n=Bf(),r=U.volume.tileGrid.size,s=U.volume.tileGrid.tileSize,o=n[2]-n[0],a=n[3]-n[1],l=0;for(;l<i.fullZoom&&Math.max(o,a)/r*s*2**l<168;)l++;let c=s*2**l/r;e.width=Math.max(1,Math.round(o*c)),e.height=Math.max(1,Math.round(a*c)),t.clearRect(0,0,e.width,e.height),i.background&&(t.fillStyle=i.background,t.fillRect(0,0,e.width,e.height));let u=++U.overviewRun,f=i.formats[l],d=Math.floor(n[0]/r*2**l),A=Math.ceil(n[2]/r*2**l),y=Math.floor(-n[3]/r*2**l),w=Math.ceil(-n[1]/r*2**l);for(let S=y;S<w;S++)for(let T=d;T<A;T++){if(!f||!MP(i,l,T,S))continue;let R=new Image;R.onload=()=>{U.overviewRun===u&&t.drawImage(R,T*s-n[0]*c,S*s+n[3]*c,s,s)},R.src=`${U.volume.base}/tiles/${encodeURIComponent(i.tiles)}/${l}/${T}/${S}.${f}`}Mx()}function Mx(){let i=Tle();if(i){let w=oh(U.world);if(!w||!U.lens)return;let S=Bf(),[T,R]=w.toWorld(i.lat,i.lng),P=_e.overviewCanvas,I=ls((T-S[0])/(S[2]-S[0]),0,1),F=ls((R+S[3])/(S[3]-S[1]),0,1);U.overviewKey="",_e.overviewShelf.hidden=!1;let D=_e.overviewViewport.style,L=22;D.left=`${I*P.width-L/2}px`,D.top=`${F*P.height-L/2}px`,D.width=`${L}px`,D.height=`${L}px`;return}let e=U.engine?.getView();if(!e||!U.lens)return;let t=Bf(),n=e.calculateExtent(U.engine.getSize()),r=t[2]-t[0],s=t[3]-t[1],o=(e.getResolution()||0)*4,a=n[0]<=t[0]+o&&n[1]<=t[1]+o&&n[2]>=t[2]-o&&n[3]>=t[3]-o,l=a?"hidden":n.map(Math.round).join(",");if(l===U.overviewKey||(U.overviewKey=l,_e.overviewShelf.hidden=a,a))return;let c=_e.overviewCanvas,u=ls((n[0]-t[0])/r,0,1),f=ls((n[2]-t[0])/r,0,1),d=ls((t[3]-n[3])/s,0,1),A=ls((t[3]-n[1])/s,0,1),y=_e.overviewViewport.style;y.left=`${u*c.width}px`,y.top=`${d*c.height}px`,y.width=`${Math.max(8,(f-u)*c.width)}px`,y.height=`${Math.max(8,(A-d)*c.height)}px`}function EP(i,e=!0){U.overviewDocked=i,i&&U.overviewPointer!==null&&(U.overviewPointer=null,Cx()),_e.overviewShelf.classList.toggle("is-docked",i),_e.overviewDock.setAttribute("aria-expanded",String(!i));let t=i?"Bring the overview back":"Put the overview away";_e.overviewDock.setAttribute("aria-label",t),_e.overviewDock.title=t,e&&mu()}function cG(i,e){let t=_e.overviewCanvas.getBoundingClientRect(),n=Bf(),r=(a,l,c)=>ls((a-l)/(c-l),0,1);if(U.globeActive){let a=oh(U.world);if(!a)return;let l=n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),c=-n[3]+r(i.clientY,t.top,t.bottom)*(n[3]-n[1]),[u,f]=a.toLatLng(l,c);Ele(u,f,e);return}let s=U.engine?.getView();if(!s||!U.lens)return;let o=[n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),n[3]-r(i.clientY,t.top,t.bottom)*(n[3]-n[1])];if(e){s.animate({center:o,duration:180});return}s.cancelAnimations(),s.setCenter(o)}function dc(i){return new Q$({updateWhileAnimating:!0,...i})}function Ble(){let i=U.volume.tileGrid.size,e=[0,-i,i,0];U.projection=new _p({code:"ATLAS:PIXELS",units:"pixels",extent:e}),U.sources={grid:new hd({wrapX:!1}),gridContext:new hd({wrapX:!1}),zoneScrim:new hd({wrapX:!1}),zones:new hd({wrapX:!1}),zoneTitles:new hd({wrapX:!1}),text:new hd({wrapX:!1}),pins:new hd({wrapX:!1}),priority:new hd({wrapX:!1})},U.layers={raster:new i6({zIndex:0}),rasterDetail:new i6({zIndex:1}),grid:dc({source:U.sources.grid,style:zN,renderOrder:Ic,renderBuffer:40,zIndex:5}),zoneScrim:dc({source:U.sources.zoneScrim,style:cX,zIndex:6}),zones:dc({source:U.sources.zones,style:uX,renderBuffer:32,zIndex:10}),zoneTitles:dc({source:U.sources.zoneTitles,style:hX,renderOrder:Ic,renderBuffer:160,zIndex:20}),zoneTitleDetail:dc({source:U.sources.zoneTitles,style:fX,renderOrder:Ic,renderBuffer:160,zIndex:44}),text:dc({source:U.sources.text,style:iX,renderOrder:Ic,renderBuffer:220,zIndex:30}),textDetail:dc({source:U.sources.text,style:rX,renderOrder:Ic,renderBuffer:220,zIndex:45}),zoneText:dc({source:U.sources.text,style:sX,renderOrder:Ic,renderBuffer:220,zIndex:41}),pins:dc({source:U.sources.pins,style:eX,renderOrder:Ic,renderBuffer:48,zIndex:40}),zonePins:dc({source:U.sources.pins,style:tX,renderOrder:Ic,renderBuffer:48,zIndex:42}),pinLabels:dc({source:U.sources.pins,style:nX,renderOrder:Ic,renderBuffer:180,zIndex:45}),gridContext:dc({source:U.sources.gridContext,style:zN,renderOrder:Ic,renderBuffer:40,zIndex:48}),priority:dc({source:U.sources.priority,style:oX,renderOrder:Ic,renderBuffer:220,zIndex:50})},U.engine=new S$({target:_e.viewport,layers:Object.values(U.layers),controls:DE({attribution:!1,rotate:!1,zoom:!1}),interactions:kE({onFocusOnly:!1}),view:RP(5)}),U.engine.on("movestart",()=>{U.engine.getViewport().classList.add("is-dragging")}),U.engine.on("moveend",()=>{U.engine.getViewport().classList.remove("is-dragging"),U.overviewPointer===null&&Cx()}),U.engine.on("postrender",Mx),_e.viewport.addEventListener("wheel",()=>{document.activeElement!==_e.viewport&&_e.viewport.focus({preventScroll:!0})},{capture:!0,passive:!0}),U.engine.on("singleclick",t=>{if(U.gridEnabled){let r=U.engine.forEachFeatureAtPixel(t.pixel,s=>{let o=s.get("gridCell");return o&&o.role!=="leaf"&&o.role!=="scope"?o:null},{hitTolerance:1,layerFilter:s=>s===U.layers.grid||s===U.layers.gridContext});if(r){oA(r.hash);return}}let n=U.engine.forEachFeatureAtPixel(t.pixel,(r,s)=>CP(s)&&r.get("pin")||null,{hitTolerance:5,layerFilter:CP});n&&xy(n)}),U.engine.on("pointermove",t=>{if(t.dragging){iv(null);return}let n=U.engine.forEachFeatureAtPixel(t.pixel,(o,a)=>CP(a)&&o.get("pin")||null,{hitTolerance:4,layerFilter:CP}),r=n&&sh(n.category)==="text"?null:n;iv(r||null);let s=U.gridEnabled&&U.engine.hasFeatureAtPixel(t.pixel,{layerFilter:o=>o===U.layers.grid||o===U.layers.gridContext});U.engine.getTargetElement().style.cursor=n||s?"pointer":""}),U.engine.getViewport().addEventListener("pointerleave",()=>iv(null))}function CP(i){return i===U.layers.pins||i===U.layers.zonePins||i===U.layers.pinLabels||i===U.layers.priority||i===U.layers.text||i===U.layers.textDetail||i===U.layers.zoneText}function RP(i,e=null){let t=U.volume.tileGrid.size,n=e||[0,-t,t,0];return new Gl({projection:U.projection,center:[(n[0]+n[2])/2,(n[1]+n[3])/2],resolutions:uG(i),minZoom:0,maxZoom:i,extent:n,constrainResolution:!1,smoothResolutionConstraint:!1,showFullExtent:!0,zoom:0})}function uG(i){let e=U.volume.tileGrid.size/U.volume.tileGrid.tileSize;return Array.from({length:i+1},(t,n)=>e/2**n)}async function id(i,e){U.volume=U.catalog.volumes.find(r=>r.slug===i)||U.catalog.volumes[0],U.engine||Ble(),!e&&!U.restore&&(U.restore=Y1(U.volume.slug)),_e.volume.value=U.volume.slug,Um(_e.world,U.volume.worlds,"title"),_e.world.disabled=U.volume.worlds.length===1,_e.world.title=_e.world.disabled?"This volume has one world":"Choose a world";let t=U.restore?.volume===U.volume.slug?U.restore:null,n=e&&U.volume.worlds.find(r=>r.slug===e)||t&&U.volume.worlds.find(r=>r.slug===t.world);await hG((n||U.volume.worlds[0]).slug)}async function hG(i){let e=U.volume.worlds.find(s=>s.slug===i)||U.volume.worlds[0],t=++U.worldRun;_e.loading.hidden=!1;let n;try{n=await MX(e)}catch{U.worldRun===t&&(_e.loading.hidden=!0,hA());return}if(U.worldRun!==t)return;U.settling=!0,U.world=n,document.documentElement.style.setProperty("--icon-outset-color",rA()),_e.world.value=U.world.slug,Um(_e.lens,U.world.lenses,"name"),_e.lensField.hidden=U.world.lenses.length<2,U.styleCache.clear(),iv(null),U.gridCell="",U.gridSystem="geohash",U.hiddenCategories.clear(),U.collapsedSections.clear(),U.collapsedSections.add("zones");for(let s of U.world.groups)for(let o of s.categories)o.visible||U.hiddenCategories.add(o.id);let r=U.restore?.map===U.world.slug?U.restore:null;r&&(U.hiddenCategories=new Set(r.hidden),U.collapsedSections=new Set(r.collapsed)),EP(!!U.restore?.overviewDocked,!1),lE(U.restore?!!U.restore.dockFolded:!0,!1),U.dockDismissed=!!U.restore?.dockDismissed,U.search="",_e.search.value="",_e.dock.hidden=!1,_u(),wX(),GN(),yX(),fG(r?ls(r.lens,0,U.world.lenses.length-1):0,!0),wle(),U.restore=null,_e.sidebar.classList.remove("is-open"),_e.mobileLegend.setAttribute("aria-expanded","false"),cj(),U.settling=!1,mu()}function fG(i,e=!1){let t=U.lens;U.lens=U.world.lenses[i]||U.world.lenses[0];let n=U.lens,r=e?null:x6e(t,n),s=dh(n);if(_e.lens.value=String(U.world.lenses.indexOf(U.lens)),e)U.engine.setView(RP(s,Bf()));else{let w=U.engine.getView(),S=RP(s,Bf());S.setCenter(w.getCenter()),S.setZoom(w.getZoom()||0),U.engine.setView(S)}let o=++U.tileRun,a=0;U.tileStats={requested:0,loaded:0,errors:0,peakPending:0},_e.loading.hidden=!1;let l=w=>{w.on("tileloadstart",()=>{U.tileRun===o&&(a++,U.tileStats.requested++,U.tileStats.peakPending=Math.max(U.tileStats.peakPending,a))});let S=T=>{U.tileRun===o&&(a=Math.max(0,a-1),T?U.tileStats.errors++:U.tileStats.loaded++,a===0&&U.tileStats.loaded>0&&(_e.loading.hidden=!0))};return w.on("tileloadend",()=>S(!1)),w.on("tileloaderror",()=>S(!0)),w},c=(w,S)=>l(new aj({projection:U.projection,tileGrid:new gy({extent:[0,-U.volume.tileGrid.size,U.volume.tileGrid.size,0],origin:[0,0],resolutions:uG(w),tileSize:U.volume.tileGrid.tileSize}),cacheSize:64,interpolate:n.interpolate,transition:0,wrapX:!1,tileUrlFunction:([T,R,P])=>{let I=n.formats[T];if(!(!I||R<0||P<0||!S(T,R,P)))return`${U.volume.base}/tiles/${encodeURIComponent(n.tiles)}/${T}/${R}/${P}.${I}`}})),u=n.fullZoom??n.maxZoom,f=c(u,(w,S,T)=>MP(n,w,S,T)),d=U.layers.raster.getSource();U.layers.raster.setSource(f),U.layers.raster.setExtent(Bf()),U.layers.raster.setBackground(n.background||void 0),d?.clear();let A=U.layers.rasterDetail.getSource();n.maxZoom>u?(U.layers.rasterDetail.setSource(c(n.maxZoom,(w,S,T)=>w>u&&MP(n,w,S,T))),U.layers.rasterDetail.setExtent(Bf()),U.layers.rasterDetail.setVisible(!0)):U.layers.rasterDetail.setVisible(!1),A?.clear(),My(),U.gridEnabled&&(xu(),U.layers.pins.changed(),U.layers.text.changed(),U.layers.priority.changed()),U.overviewKey="",Fle();let y=e&&U.restore?.map===U.world.slug?U.restore:null;if(U.renderedShard!==(n.shard||0)&&(GN(),Cc()),y?.center&&Number.isFinite(y.zoom)){let w=U.engine.getView();w.setCenter(y.center),w.setZoom(y.zoom),U.fitZoom=y.zoom,uA()}else e?requestAnimationFrame(y6e):(r&&U.engine.getView().animate({center:r,duration:200}),uA());mu()}function MP(i,e,t,n){let r=i.coverage?.[e];if(!r)return!0;let s=t-r.x,o=n-r.y;if(s<0||o<0||s>=r.w||o>=r.h)return!1;let a=_6e(i,e,r),l=o*r.w+s;return(a[l>>3]&1<<(l&7))!==0}function _6e(i,e,t){if(!t.decoded){let n=atob(t.bits),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);t.decoded=r}return t.decoded}function dh(i){return i.maxZoom+2}function Cx(){uA(),mu()}function x6e(i,e){if(!i||!e||!i.shard||!e.shard||i.shard===e.shard||!i.bounds||!e.bounds)return null;let n=U.engine?.getView()?.getCenter();if(!n)return null;let r=(n[0]-i.bounds.x)/i.bounds.width,s=(-n[1]-i.bounds.y)/i.bounds.height;return[e.bounds.x+ls(r,0,1)*e.bounds.width,-(e.bounds.y+ls(s,0,1)*e.bounds.height)]}function Ole(){let e=document.querySelector(".app-shell").classList.toggle("sidebar-collapsed");_e.mobileLegend.setAttribute("aria-expanded",String(!e)),requestAnimationFrame(()=>U.engine?.updateSize())}function Bf(){let i=U.volume.tileGrid.size,e=U.lens?.bounds||{x:0,y:0,width:i,height:i};return[e.x,-(e.y+e.height),e.x+e.width,-e.y]}function y6e(){if(!U.engine||!U.lens)return;let i=U.engine.getView();i.fit(Bf(),{size:U.engine.getSize(),padding:[36,36,36,36],maxZoom:U.lens.maxZoom,duration:0}),U.fitZoom=i.getZoom()||0,uA()}function US(i){let e=U.engine.getView(),t=e.getZoom()||0;e.animate({zoom:ls(t+i,U.lens.minZoom,dh(U.lens)),duration:140})}function uA(){let i=U.engine?.getView().getZoom();if(_e.viewport.dataset.zoom=Number.isFinite(i)?i.toFixed(3):"",!U.engine||!U.pins.length){_e.visibleCount.textContent="0 locations visible";return}let e=U.engine.getView().calculateExtent(U.engine.getSize()),t=0;for(let n of U.pins){if(Pc(n))continue;let[r,s]=n.coordinate;r>=e[0]&&r<=e[2]&&s>=e[1]&&s<=e[3]&&t++}_e.visibleCount.textContent=`${vu(U.eligibleLocations)} enabled \xB7 ${vu(t)} in view`}function Ule(){_e.volume.addEventListener("change",()=>{id(_e.volume.value)}),_e.world.addEventListener("change",()=>{hG(_e.world.value)}),_e.addBundles.addEventListener("click",()=>{$N()}),_e.emptyOpen.addEventListener("click",()=>{$N()}),_e.lens.addEventListener("change",()=>{fG(Number(_e.lens.value)),Nle()}),_e.globeToggle.addEventListener("click",()=>SP()),_e.legend.addEventListener("change",n=>{let r=n.target;if(r.dataset.sectionToggle){TX(r.dataset.sectionToggle);return}if(!r.dataset.category)return;let s=Number(r.dataset.category);r.checked?U.hiddenCategories.delete(s):U.hiddenCategories.add(s),Cc(),Cp()});let i=null,e=()=>{for(let s of _e.layers.querySelectorAll(".is-hovered"))s.classList.remove("is-hovered");if(!i)return;let r=document.elementFromPoint(i.x,i.y)?.closest(".category-row, .layer-header");r&&_e.layers.contains(r)&&r.classList.add("is-hovered")};_e.layers.addEventListener("pointermove",n=>{i={x:n.clientX,y:n.clientY},e()},{passive:!0}),_e.layers.addEventListener("pointerleave",()=>{i=null,e()}),_e.layers.addEventListener("scroll",e,{passive:!0}),_e.layers.addEventListener("click",n=>{let r=n.target.closest("[data-only-category], [data-only-section]");if(r){n.preventDefault(),n.stopPropagation(),EX(r.dataset.onlyCategory?{category:Number(r.dataset.onlyCategory)}:{section:r.dataset.onlySection});return}let s=n.target.closest("[data-section]");if(!s)return;let o=s.dataset.section;U.collapsedSections.has(o)?U.collapsedSections.delete(o):U.collapsedSections.add(o),IE()}),_e.soloChip.addEventListener("click",()=>Uy(!0)),nn("#expand-all").addEventListener("click",()=>jN(!1)),nn("#collapse-all").addEventListener("click",()=>jN(!0)),nn("#show-all").addEventListener("click",()=>Uy(!0)),nn("#hide-all").addEventListener("click",()=>Uy(!1)),_e.zoneToggle.addEventListener("change",()=>{CE(_e.zoneToggle.checked)}),_e.zoneIndex.addEventListener("click",n=>{let r=n.target.closest("[data-zone]");r&&vX(Number(r.dataset.zone))}),_e.zoneIndex.addEventListener("contextmenu",n=>{let r=n.target.closest("[data-zone]");r&&(n.preventDefault(),_X(Number(r.dataset.zone)))}),_e.search.addEventListener("input",()=>{U.search=_e.search.value.trim().toLocaleLowerCase(),Cc(),U.search&&aE()}),_e.dockFold.addEventListener("click",()=>{JD(!U.dockFolded)}),_e.searchResults.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&eN(s)}),_e.detailLinks.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&eN(s)}),nn("#close-detail").addEventListener("click",_u),nn("#zoom-in").addEventListener("click",()=>U.globeActive?sG(1):US(1)),nn("#zoom-out").addEventListener("click",()=>U.globeActive?sG(-1):US(-1)),_e.gridBack.addEventListener("click",mN),_e.gridSystem.addEventListener("click",AN),_e.gridInput.addEventListener("input",()=>{let n=Ss(),r=n.normalizeInput(_e.gridInput.value);_e.gridInput.value=r,n.parseInput(r)!==null&&oA(r)}),_e.subgridToggle.addEventListener("click",()=>{Ey(!U.subgridVisible),_e.viewport.focus({preventScroll:!0})}),_e.gridInput.addEventListener("keydown",n=>{if(n.key===" "){n.preventDefault(),Ey(!U.subgridVisible);return}if(n.key==="`"){n.preventDefault(),_e.globeToggle.hidden||SP();return}n.key==="Escape"&&(n.preventDefault(),n.stopPropagation(),_e.viewport.focus({preventScroll:!0}))}),_e.viewport.addEventListener("keydown",n=>{if(!oE(n.target)){if(n.key==="+"||n.key==="=")US(1);else if(n.key==="-")US(-1);else if(n.key==="Escape")_u();else return;n.preventDefault()}}),window.addEventListener("contextmenu",n=>{oE(n.target)||n.preventDefault()}),window.addEventListener("keydown",n=>{if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="r"){n.preventDefault(),location.reload();return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="g"){n.preventDefault(),AN();return}if(!oE(n.target)){if(n.key==="`"&&!n.metaKey&&!n.ctrlKey&&!n.altKey){_e.globeToggle.hidden||(n.preventDefault(),SP());return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="k"){n.preventDefault(),_e.search.focus(),_e.search.select();return}if((n.metaKey||n.ctrlKey)&&n.altKey&&n.code==="KeyB"){n.preventDefault(),_e.dock.hidden||JD(!U.dockFolded);return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="b"){n.preventDefault(),Ole();return}Lj(n)||n.key.toLocaleLowerCase()==="z"&&(n.preventDefault(),n.repeat||RE(!0))}}),window.addEventListener("keyup",n=>{n.key.toLocaleLowerCase()==="z"&&RE(!1)}),window.addEventListener("blur",()=>RE(!1)),window.addEventListener("hashchange",()=>{let n=Z1();n.volume===U.volume?.slug&&n.world===U.world?.slug||(U.restore=null,id(n.volume||U.catalog.volumes[0].slug,n.world))}),window.addEventListener("resize",()=>{U.engine?.updateSize(),Mx(),lG()}),document.addEventListener("atlas:globe-camera",()=>Mx()),_e.overview.addEventListener("pointerdown",n=>{U.overviewDocked||n.pointerType==="mouse"&&n.button!==0||(n.preventDefault(),_e.overview.setPointerCapture(n.pointerId),U.overviewPointer=n.pointerId,cG(n,!0))}),_e.overview.addEventListener("pointermove",n=>{U.overviewPointer===n.pointerId&&(n.preventDefault(),cG(n,!1))});let t=n=>{U.overviewPointer===n.pointerId&&(U.overviewPointer=null,Cx())};_e.overview.addEventListener("pointerup",t),_e.overview.addEventListener("pointercancel",t),_e.overviewDock.addEventListener("click",()=>{EP(!U.overviewDocked),_e.viewport.focus({preventScroll:!0})}),_e.mobileLegend.addEventListener("click",()=>{let n=_e.sidebar.classList.toggle("is-open");_e.mobileLegend.setAttribute("aria-expanded",String(n))})}function kle(){let i=()=>({volume:U.volume?.title,world:U.world?.title,lens:U.lens?.name,zoom:U.engine?.getView().getZoom(),center:U.engine?.getView().getCenter(),resolution:U.engine?.getView().getResolution(),nativeMaxZoom:U.lens?.maxZoom,maxZoom:U.lens?dh(U.lens):null,interpolate:U.lens?.interpolate,tileStats:{...U.tileStats},pins:U.pins.length,eligibleLocations:U.eligibleLocations,domNodes:document.querySelectorAll("*").length,canvases:document.querySelectorAll("canvas").length,rasterCacheSize:64,labelsHeld:U.labelsHeld,hoveredPin:U.hoveredPin?.location.title||null,selectedPin:U.selectedPin?.location.title||null,fitZoom:U.fitZoom,filters:{hiddenCategories:[...U.hiddenCategories].sort(),collapsedSections:[...U.collapsedSections].sort()},ui:{sidebarCollapsed:document.querySelector(".app-shell")?.classList.contains("sidebar-collapsed")??!1,detailOpen:!_e.detail.hidden,detailTitle:_e.detail.hidden?null:_e.detailTitle.textContent||null,searchQuery:U.search,searchResultsVisible:!_e.searchResults.hidden,soloChip:_e.soloChip.hidden?null:_e.soloChip.textContent,visibleCountText:_e.visibleCount.textContent,overviewDocked:U.overviewDocked,dockFolded:U.dockFolded,dockDismissed:U.dockDismissed,subgridVisible:U.subgridVisible},zones:{visible:U.zonesVisible,count:U.zoneRecords.size,focused:U.zoneRecords.get(U.focusedZoneID)?.zone.title||null,highlighted:[...U.highlightedZones].map(e=>U.zoneRecords.get(e)?.zone.title).filter(Boolean),focusedPins:U.pins.filter(e=>!e.filteredHidden&&e.insideHighlightedZone).length},grid:{enabled:U.gridEnabled,system:U.gridSystem,prefix:U.gridCell,maximumDepth:Fj(),extent:U.gridEnabled?gN():null,cells:[...U.sources.grid.getFeatures(),...U.sources.gridContext.getFeatures()].map(e=>e.get("gridCell")),priorityPins:U.gridCell?U.pins.filter(e=>!e.filteredHidden&&Ip(e)).length:0}});window.__atlasDebug={snapshot:i,setLayerVisible:(e,t)=>U.layers[e]?.setVisible(t),refreshCatalog:hA},window.render_game_to_text=()=>JSON.stringify({coordinateSystem:"ATLAS:PIXELS; origin top-left; x increases right; y decreases downward",...i()}),window.advanceTime=()=>U.engine?.renderSync()}async function zle(){Ule();try{let i=await fetch("/data/catalog.json");if(!i.ok)throw new Error(`catalog request returned ${i.status}`);if(U.catalog=await i.json(),Um(_e.volume,U.catalog.volumes,"title"),XN(),window.runtime?.EventsOn?.("atlas:catalog-changed",()=>{hA()}),U.catalog.volumes.length){let e=Z1(),t=Y1(),n=t&&(!e.volume||e.volume===t.volume&&e.world===t.world);U.restore=n?t:null,await id(e.volume||t?.volume||U.catalog.volumes[0].slug,e.world||t?.world),U.restore=null}else _e.loading.hidden=!0;kle(),requestAnimationFrame(()=>_e.viewport.focus({preventScroll:!0}))}catch(i){_e.loading.hidden=!0,_e.fatalMessage.textContent=i instanceof Error?i.message:String(i),_e.fatal.hidden=!1}}zle();})();@@ -4,7 +4,7 @@ import { legendSections } from "./legend.js";
44 // A map arrives in two pieces: its layers, categories and regions as JSON, and55 // its locations packed as parallel arrays. Nothing here is fetched until the66 // map is opened, so the catalog can grow without the wait growing with it.7-export async function loadMap(entry) {7+export async function loadWorld(entry) {88 const [detailResponse, packedResponse] = await Promise.all([99 fetch(`${state.volume.base}/worlds/${entry.slug}.json`),1010 fetch(`${state.volume.base}/worlds/${entry.slug}.bin`),@@ -4,7 +4,7 @@ import TileGrid from "ol/tilegrid/TileGrid.js";
44 import { state } from "./state.js";55 import { elements, populateSelect } from "./dom.js";66 import { overzoomLevels } from "./constants.js";7-import { loadMap } from "./catalog.js";7+import { loadWorld } from "./catalog.js";88 import { refreshCatalog } from "./library.js";99 import { readSession, saveSession, writeRoute } from "./session.js";1010 import { createView, initializeMap, resolutions } from "./engine.js";@@ -25,36 +25,36 @@ import { closeDetail } from "./detail.js";
2525 import { iconOutsetColor } from "./theme.js";2626 import { clamp, formatNumber } from "./util.js";2727 28-export async function selectVolume(slug, mapSlug) {28+export async function selectVolume(slug, worldSlug) {2929 state.volume = state.catalog.volumes.find((volume) => volume.slug === slug) || state.catalog.volumes[0];3030 // The engine exists once there is a volume to size its world square from: every volume3131 // carries its own tile grid now that each arrives in its own bundle.3232 if (!state.engine) initializeMap();3333 // Only an explicitly named world overrides what this volume remembers.34- if (!mapSlug && !state.restore) state.restore = readSession(state.volume.slug);34+ if (!worldSlug && !state.restore) state.restore = readSession(state.volume.slug);3535 elements.volume.value = state.volume.slug;36- populateSelect(elements.world, state.volume.maps, "title");37- elements.world.disabled = state.volume.maps.length === 1;36+ populateSelect(elements.world, state.volume.worlds, "title");37+ elements.world.disabled = state.volume.worlds.length === 1;3838 elements.world.title = elements.world.disabled ? "This volume has one world" : "Choose a world";3939 // Returning to a volume returns to where it was left, so wandering off to4040 // another volume and back does not cost the reader their place.4141 const remembered = state.restore?.volume === state.volume.slug ? state.restore : null;42- const wanted = (mapSlug && state.volume.maps.find((item) => item.slug === mapSlug)) ||43- (remembered && state.volume.maps.find((item) => item.slug === remembered.map));44- await selectWorld((wanted || state.volume.maps[0]).slug);42+ const wanted = (worldSlug && state.volume.worlds.find((item) => item.slug === worldSlug)) ||43+ (remembered && state.volume.worlds.find((item) => item.slug === remembered.world));44+ await selectWorld((wanted || state.volume.worlds[0]).slug);4545 }4646 4747 export async function selectWorld(slug) {48- const entry = state.volume.maps.find((map) => map.slug === slug) || state.volume.maps[0];49- // A map opened while another is still arriving must not be overtaken by it.48+ const entry = state.volume.worlds.find((world) => world.slug === slug) || state.volume.worlds[0];49+ // A world opened while another is still arriving must not be overtaken by it.5050 const run = ++state.worldRun;5151 elements.loading.hidden = false;5252 let loaded;5353 try {54- loaded = await loadMap(entry);54+ loaded = await loadWorld(entry);5555 } catch {5656 // The bundle moved underneath the catalog: refetching the catalog brings57- // the new build's URLs, and the refresh re-selects this map through them.57+ // the new build's URLs, and the refresh re-selects this world through them.5858 if (state.worldRun === run) {5959 elements.loading.hidden = true;6060 void refreshCatalog();