@mappedin/dynamic-focus 6.10.0-beta.0 → 6.12.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ var zt=Object.defineProperty,bo=Object.defineProperties;var Fo=Object.getOwnPropertyDescriptors;var Ht=Object.getOwnPropertySymbols;var yo=Object.prototype.hasOwnProperty,So=Object.prototype.propertyIsEnumerable;var Wt=r=>{throw TypeError(r)};var Ot=(r,t,e)=>t in r?zt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,_=(r,t)=>{for(var e in t||(t={}))yo.call(t,e)&&Ot(r,e,t[e]);if(Ht)for(var e of Ht(t))So.call(t,e)&&Ot(r,e,t[e]);return r},rt=(r,t)=>bo(r,Fo(t)),a=(r,t)=>zt(r,"name",{value:t,configurable:!0});var g=(r,t,e)=>Ot(r,typeof t!="symbol"?t+"":t,e),Tt=(r,t,e)=>t.has(r)||Wt("Cannot "+e);var o=(r,t,e)=>(Tt(r,t,"read from private field"),e?e.call(r):t.get(r)),c=(r,t,e)=>t.has(r)?Wt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),d=(r,t,e,i)=>(Tt(r,t,"write to private field"),i?i.call(r,e):t.set(r,e),e),v=(r,t,e)=>(Tt(r,t,"access private method"),e);var S={env:{NODE_ENV:"production",npm_package_version:"6.12.0-beta.0"}};import{Floor as Zo,getMultiFloorState as Go}from"@mappedin/mappedin-js";function Kt(r,t){if(r==null||t==null)return r===t;if(r.length!==t.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}a(Kt,"arraysEqual");var Vt=class Vt{constructor(){g(this,"_subscribers",{});g(this,"_abortController",new AbortController);g(this,"_cleanupFunctions",[])}get signal(){return this._abortController.signal}publish(t,e){!this._subscribers||!this._subscribers[t]||this.signal.aborted||this._subscribers[t].forEach(function(i){typeof i=="function"&&i(e)})}onAbort(t){this.signal.addEventListener("abort",()=>t(),{once:!0})}on(t,e,i){let s=i==null?void 0:i.signal;if(s!=null&&s.aborted||this._abortController&&this._abortController.signal.aborted)return()=>{};this._subscribers||(this._subscribers={}),this._subscribers[t]=this._subscribers[t]||[],this._subscribers[t].push(e);let n=a(()=>this.off(t,e),"cleanup");return s&&s.addEventListener("abort",n,{once:!0}),this._cleanupFunctions.push(n),n}off(t,e){if(!this._subscribers||this._subscribers[t]==null||this.signal.aborted)return;let i=this._subscribers[t].indexOf(e);i!==-1&&this._subscribers[t].splice(i,1)}destroy(){if(!this.signal.aborted){for(let t of this._cleanupFunctions)t();this._cleanupFunctions=[],this._subscribers={},this._abortController.abort()}}};a(Vt,"PubSub");var St=Vt;import{Facade as vo,Floor as wo,FloorStack as ko}from"@mappedin/mappedin-js";var k,nt,L,w,E,B,H,z,xt=class xt{constructor(t,e){g(this,"__type","building");c(this,k);c(this,nt,new Map);c(this,L,new Map);c(this,w,[]);c(this,E);c(this,B);g(this,"defaultFloor");g(this,"activeFloor");g(this,"excluded",!1);g(this,"floorsAltitudesMap",new Map);g(this,"aboveGroundFloors",[]);c(this,H);c(this,z);var s;d(this,k,t),d(this,nt,new Map(t.floors.map(n=>[n.id,n]))),d(this,L,new Map(t.floors.map(n=>[n.elevation,n]))),d(this,w,Array.from(o(this,L).values()).sort((n,h)=>n.elevation-h.elevation)),this.defaultFloor=t.defaultFloor,this.activeFloor=this.defaultFloor,d(this,E,e),this.aboveGroundFloors=o(this,w).filter(n=>n.elevation>=0);let i=(s=t.facade)==null?void 0:s.spaces.map(n=>o(this,E).getState(n)).sort((n,h)=>n.altitude-h.altitude);if(i&&i.length===this.aboveGroundFloors.length)for(let n in this.aboveGroundFloors){let h=this.aboveGroundFloors[n],u=i[n];this.floorsAltitudesMap.set(h.elevation,{altitude:u.altitude,effectiveHeight:u.height})}}get id(){return o(this,k).id}get name(){return o(this,k).name}get floors(){return o(this,k).floors}get floorStack(){return o(this,k)}get facade(){return o(this,k).facade}get isCurrentFloorStack(){return this.id===o(this,E).currentFloorStack.id}get isIndoor(){let t=o(this,E).getState(this.facade);return this.isCurrentFloorStack||(t==null?void 0:t.visible)===!1&&(t==null?void 0:t.opacity)===0}get canSetFloor(){return this.isIndoor||!this.excluded}get maxElevation(){return o(this,H)==null&&d(this,H,Math.max(...o(this,L).keys())),o(this,H)}get minElevation(){return o(this,z)==null&&d(this,z,Math.min(...o(this,L).keys())),o(this,z)}has(t){return wo.is(t)?o(this,nt).has(t.id):ko.is(t)?t.id===o(this,k).id:vo.is(t)?t.id===this.facade.id:!1}getFloorByElevation(t){return o(this,L).get(t)}getNearestFloorByElevation(t){let e=this.getFloorByElevation(t);if(e)return e;if(t>=0){if(t>this.maxElevation)return o(this,w)[o(this,w).length-1];for(let i=o(this,w).length-1;i>=0;i--){let s=o(this,w)[i];if(s.elevation<=t)return s}}else{if(t<this.minElevation)return o(this,w)[0];for(let i of o(this,w))if(i.elevation>=t)return i}}getHighestFloor(){return o(this,w)[o(this,w).length-1]}cancelAnimation(){o(this,B)&&(o(this,B).animation.cancel(),d(this,B,void 0))}async animateFacade(t,e={duration:150}){var h;let i=((h=o(this,B))==null?void 0:h.state)||o(this,E).getState(this.facade);if(!i||!t||(i==null?void 0:i.opacity)===t.opacity&&(i==null?void 0:i.visible)===t.visible)return{result:"completed"};this.cancelAnimation();let{opacity:s,visible:n}=t;if(o(this,E).updateState(this.facade,{visible:!0}),s!==void 0){d(this,B,{animation:o(this,E).animateState(this.facade,{opacity:s},{duration:e.duration}),state:t});let u=await o(this,B).animation;if(d(this,B,void 0),u.result==="cancelled")return u}return n===!1&&o(this,E).updateState(this.facade,{visible:n}),{result:"completed"}}destroy(){this.cancelAnimation(),o(this,k).floors.forEach(t=>{o(this,E).updateState(t,{visible:t.id===o(this,E).currentFloor.id})}),this.has(o(this,E).currentFloor)||o(this,E).updateState(this.facade,{visible:!0,opacity:1})}};k=new WeakMap,nt=new WeakMap,L=new WeakMap,w=new WeakMap,E=new WeakMap,B=new WeakMap,H=new WeakMap,z=new WeakMap,a(xt,"Building");var Et=xt;function Qt(r,t,e){return r>=t?"in-range":r<=e?"out-of-range":"transition"}a(Qt,"getZoomState");function vt(r,t,e){if(r.__type==="outdoors"&&"floor"in r)return r.floor;let i=r;if(i.excluded)return i.activeFloor;switch(t){case"lock-elevation":return i.getFloorByElevation(e);case"nearest-elevation":return i.getNearestFloorByElevation(e);default:break}return i.isIndoor?i.activeFloor:i.defaultFloor}a(vt,"getFloorToShow");function Io(r,t,e){return t?{facade:r,state:{type:"facade",visible:!1,opacity:0}}:e?{facade:r,state:{type:"facade",visible:!0,opacity:.2}}:{facade:r,state:{type:"facade",visible:!0,opacity:1}}}a(Io,"getFacadeState");function Ao(r,t,e){return{outdoorOpacity:"initial",floorStates:r.floors.map(i=>{let n=i.id===t.id&&e;return{floor:i,state:{type:"floor",visible:n,geometry:{visible:n},labels:{enabled:n},markers:{enabled:n},footprint:{visible:!1},occlusion:{enabled:!1}}}})}}a(Ao,"getSingleBuildingState");function Xt(r,t){if(!t.includes("lock-elevation"))return"initial";for(let e of r)if(typeof e.outdoorOpacity=="number"&&e.outdoorOpacity>=0&&e.outdoorOpacity<=1)return e.outdoorOpacity;return"initial"}a(Xt,"getOutdoorOpacity");function Jt(r,t,e){var i;switch(e){case"in-range":return(i=r[0])!=null&&i.canSetFloor?r[0]:void 0;case"out-of-range":return t;case"transition":default:return}}a(Jt,"getSetFloorTargetFromZoomState");function to(r){let{buildings:t,inViewSet:e,currentFloor:i,zoomState:s,mode:n,elevation:h,floorIdsInNavigation:u,floorStackIdsInNavigation:p,multiFloorView:m,getMultiFloorState:P,dynamicBuildingInteriors:bt,isolateBelowGroundView:ot,currentElevation:et,forceInteriorsVisible:R}=r,V=new Map,At=ot&&et<0;for(let b of t){let it=e.has(b.id),Ft=At&&b.minElevation>=0,yt=Ft?!1:it,Bt=Ft?!1:Dt({building:b,currentFloor:i,inRange:s==="in-range",inFocus:it,mode:n,elevation:h,inNavigation:p.includes(b.id),dynamicBuildingInteriors:bt,forceInteriorsVisible:R}),Mt=i.floorStack.id===b.id?b.activeFloor:vt(b,n,h),mo=m!=null&&m.enabled?P(b.floors,Mt||b.activeFloor,m==null?void 0:m.floorGap,u,b.floorsAltitudesMap,{color:m==null?void 0:m.footprintColor,spacesOpenToBelowEnabled:m==null?void 0:m.spacesOpenToBelowEnabled,__EXPERIMENTAL_darkenSpacesExposedToAbove:m==null?void 0:m.__EXPERIMENTAL_darkenSpacesExposedToAbove,opacity:m==null?void 0:m.footprintOpacity,outline:m==null?void 0:m.footprintOutline}):Ao(b.floorStack,Mt||b.activeFloor,Bt),po=ot&&et<0&&s==="in-range",go=Io(b.facade,Bt,po);V.set(b.id,{building:b,showIndoor:Bt,floorStackState:mo,facadeState:go,inFocus:yt,floorToShow:Mt})}return V}a(to,"getBuildingStates");function oo(r,t){return r.excluded?"none":t?"indoor":"outdoor"}a(oo,"getBuildingAnimationType");function Dt(r){let{building:t,currentFloor:e,inRange:i,inFocus:s,mode:n,elevation:h,inNavigation:u,dynamicBuildingInteriors:p,forceInteriorsVisible:m}=r;if(t.id===e.floorStack.id)return!0;if(t.excluded)return!1;if(m===!0||u===!0)return!0;if(!p)return e.floorStack.type!=="Outdoor";if(!i||!s)return!1;switch(n){case"lock-elevation":return t.getFloorByElevation(h)!=null;default:break}return!0}a(Dt,"shouldShowIndoor");function eo(r,t,e){return r!==t&&!e}a(eo,"shouldDeferSetFloor");var io=["default-floor","lock-elevation","nearest-elevation"];import{Floor as Mo,FloorStack as Oo}from"@mappedin/mappedin-js";var _t="[MappedinJS]";function Lt(r="",{prefix:t=_t}={}){let e="".concat(t).concat(r?"-".concat(r):""),i=a((s,n)=>{if(typeof window<"u"&&window.rnDebug){let h=n.map(u=>u instanceof Error&&u.stack?"".concat(u.message,"\n").concat(u.stack):u);window.rnDebug("".concat(r," ").concat(s,": ").concat(h.join(" ")))}},"rnDebug");return{logState:S.env.NODE_ENV==="test"?3:0,log(...s){this.logState<=0&&(console.log(e,...s),i("log",s))},warn(...s){this.logState<=1&&(console.warn(e,...s),i("warn",s))},error(...s){this.logState<=2&&(console.error(e,...s),i("error",s))},assert(...s){console.assert(...s)},time(s){console.time(s)},timeEnd(s){console.timeEnd(s)},setLevel(s){0<=s&&s<=3&&(this.logState=s)}}}a(Lt,"createLogger");var Bo=Lt();var W=Bo;function ro(r,t,e,i){return(r<t||r>e)&&W.warn(i),Math.min(e,Math.max(t,r))}a(ro,"clampWithWarning");function Nt(r,t){return!Mo.is(r)||(r==null?void 0:r.floorStack)==null||!Oo.is(t)?!1:r.floorStack.id!==t.id?(W.warn("Floor (".concat(r.id,") does not belong to floor stack (").concat(t.id,").")),!1):!0}a(Nt,"validateFloorForStack");function Ct(r,t,e,i){return ro(r,t,e,"".concat(i," must be between ").concat(t," and ").concat(e,"."))}a(Ct,"validateZoomThreshold");var K=Lt("",{prefix:"[DynamicFocus]"});var M,Q,st,Zt,Gt=class Gt{constructor(t,e){c(this,st);g(this,"__type","outdoors");c(this,M);c(this,Q);d(this,M,t),d(this,Q,e)}get id(){return o(this,M).id}get floorStack(){return o(this,M)}get floor(){return o(this,M).defaultFloor}matchesFloorStack(t){return t===o(this,M)||t===o(this,M).id}show(){v(this,st,Zt).call(this,!0)}hide(){v(this,st,Zt).call(this,!1)}destroy(){this.matchesFloorStack(o(this,Q).currentFloorStack)||this.hide()}};M=new WeakMap,Q=new WeakMap,st=new WeakSet,Zt=a(function(t){for(let e of o(this,M).floors)o(this,Q).updateState(e,{visible:t})},"#setVisible"),a(Gt,"Outdoors");var wt=Gt;function no(r,t){var h;let e=r.getByType("floor-stack"),i=e.find(u=>{var p;return((p=u.type)==null?void 0:p.toLowerCase())==="outdoor"}),s=(h=r.getByType("enterprise-venue"))==null?void 0:h.defaultFloor;if(s){let u=r.getById("floor",s);if(u)return u.floorStack}if(i)return i;let n=e.find(u=>u.facade==null&&!t.has(u.id));return n||(K.warn("No good candidate for the outdoor floor stack was found. Using the first floor stack."),e[0])}a(no,"getOutdoorFloorStack");var so={indoorZoomThreshold:18,outdoorZoomThreshold:17,setFloorOnFocus:!0,autoFocus:!1,indoorAnimationOptions:{duration:150},outdoorAnimationOptions:{duration:150},autoAdjustFacadeHeights:!1,mode:"default-floor",preloadFloors:!0,dynamicBuildingInteriors:!0,dynamicLayers:[],isolateBelowGroundView:!1,forceInteriorsVisible:!1,showLabelsAndMarkersOnAllVisibleFloors:!1},we=.2,ke=.4;function To(r,t){return"".concat(t," ").concat(r)}a(To,"formatMessage");var Pt=class Pt extends Error{constructor(t,e=_t){super(To(t,e)),this.name="MappedinError"}};a(Pt,"MappedinError");var kt=Pt;var Vo=a(r=>r,"linearEase"),xo=a(r=>r*r,"quadEaseIn"),Do=a(r=>1-Math.cos(r*Math.PI/2),"easeIn"),_o=a(r=>1-(1-r)*(1-r),"quadEaseOut"),Lo=a(r=>1-Math.pow(1-r,3),"cubicEaseOut"),No={linear:Vo,"ease-in":xo,"ease-out":_o,"ease-in-out":Do,"ease-out-cubic":Lo};function Co(r,t){let e=0;if(t.length<2)return e;let s=t[0]<t[1]?(n,h)=>n>h:(n,h)=>n<h;for(;e<t.length-1&&s(r,t[e+1]);)e++;return e>t.length-2?Math.max(0,t.length-2):e}a(Co,"getInterpolationBreakpoint");function ao(r,t,e,i="ease-in"){if(t.length!==e.length)throw new kt("Input and output ranges must have the same number of values.");r=Math.max(t[0],Math.min(r,t[t.length-1]));let s=Co(r,t),n=(r-t[s])/(t[s+1]-t[s]),h=typeof i=="function"?i(n):No[i](n);return e[s]+h*(e[s+1]-e[s])}a(ao,"interpolateMulti");var O,at,lt,x,ut,Ut=class Ut{constructor(t,e,i){g(this,"layers");g(this,"visible");c(this,O);c(this,at,[]);c(this,lt,!1);c(this,x,new Map);g(this,"interpolationFn");c(this,ut,1);this.layers=t,this.visible=e,d(this,O,i)}processLayerGroup(t,e,i){if(!o(this,lt)&&(this.layers.forEach(s=>{let n=t[s];n&&o(this,at).push(...n)}),d(this,lt,!0),this.visible)){let s=[e,i],n=[1,0];this.interpolationFn=h=>ao(h,s,n)}}setOpacity(t){var e,i,s;d(this,ut,t);for(let n of o(this,at))if(n.startsWith("img_")){let h=o(this,O).Image3D.getById(n);if(h){let u=o(this,O).getState(h.image);o(this,x).has(n)||o(this,x).set(n,(e=u==null?void 0:u.opacity)!=null?e:1);let p=Math.min(o(this,x).get(n),t);o(this,O).updateState(h.image,{opacity:p})}}else{let h=(i=o(this,O).getMapData())==null?void 0:i.getById("space",n);if(!h)continue;let u=o(this,O).getState(h);o(this,x).has(n)||o(this,x).set(n,(s=u==null?void 0:u.opacity)!=null?s:1);let p=Math.min(o(this,x).get(n),t);o(this,O).updateState(h,{opacity:p,visible:p>0})}}get opacity(){return o(this,ut)}};O=new WeakMap,at=new WeakMap,lt=new WeakMap,x=new WeakMap,ut=new WeakMap,a(Ut,"LayerGroup");var It=Ut;function Rt(r,t){r.forEach(e=>{if(e.interpolationFn!=null){let i=e.interpolationFn(t);i!=null&&(e.setOpacity(i),e.visible=i===1)}})}a(Rt,"runLayerGroupInterpolations");var I,l,N,f,U,j,y,D,$,Y,A,X,ct,dt,ht,T,C,J,Z,G,F,jt,uo,co,$t,ft,mt,pt,gt,tt,Yt,ho,fo,q,qt=class qt{constructor(t){c(this,F);c(this,I);c(this,l);c(this,N);c(this,f,so);c(this,U,[]);c(this,j,new Set);c(this,y,new Map);c(this,D);c(this,$,!1);c(this,Y,!1);c(this,A,0);c(this,X,0);c(this,ct,[]);c(this,dt,{});c(this,ht,{});c(this,T,"transition");c(this,C,"outdoor");c(this,J,[]);c(this,Z,!1);c(this,G,[]);g(this,"sceneUpdateQueue",Promise.resolve());g(this,"on",a((t,e)=>{o(this,I).on(t,e)},"on"));g(this,"off",a((t,e)=>{o(this,I).off(t,e)},"off"));c(this,ft,a(t=>{if(!this.isEnabled)return;let{facades:e}=t;if(Kt(e,this.focusedFacades)&&o(this,C)==="transition"&&!o(this,Y))return;d(this,Y,!1),d(this,U,[]),o(this,j).clear();let i=o(this,f).isolateBelowGroundView&&o(this,A)<0;if(e.length>0)for(let s of e){let n=o(this,y).get(s.floorStack.id);if(n){if(i&&n.minElevation>=0)continue;o(this,j).add(n.id),o(this,U).push(n)}}o(this,f).autoFocus&&this.focus()},"#handleFacadesInViewChange"));c(this,mt,a(async t=>{var s,n,h,u;if(!this.isEnabled)return;let{floor:e}=t,i=o(this,y).get(e.floorStack.id);if(i&&(i.activeFloor=e),(i==null?void 0:i.excluded)===!1&&!o(this,D).matchesFloorStack(e.floorStack)&&d(this,A,e.elevation),o(this,l).manualFloorVisibility===!0){t.reason!=="dynamic-focus"&&(await o(this,q).call(this,e),o(this,I).publish("focus",{facades:this.focusedFacades}));let p=(n=(s=i==null?void 0:i.floorsAltitudesMap.get(e.elevation))==null?void 0:s.altitude)!=null?n:0;o(this,l).options.multiFloorView!=null&&((h=o(this,l).options.multiFloorView)!=null&&h.enabled)&&((u=o(this,l).options.multiFloorView)!=null&&u.updateCameraElevationOnFloorChange)&&o(this,l).Camera.elevation!==p&&o(this,l).Camera.animateElevation(p,{duration:750,easing:"ease-in-out"})}},"#handleFloorChangeStart"));c(this,pt,a(()=>{d(this,$,!0)},"#handleUserInteractionStart"));c(this,gt,a(()=>{d(this,$,!1)},"#handleUserInteractionEnd"));c(this,tt,a(t=>{if(!this.isEnabled)return;let{zoomLevel:e}=t,i=Qt(e,o(this,f).indoorZoomThreshold,o(this,f).outdoorZoomThreshold);o(this,T)!==i&&(d(this,T,i),i==="in-range"?this.setIndoor():i==="out-of-range"&&this.setOutdoor()),Rt(o(this,G),e)},"#handleCameraChange"));c(this,q,a(async t=>{var u,p,m;if(o(this,l).manualFloorVisibility!==!0||!this.isEnabled)return;let e=t||o(this,l).currentFloor,i=o(this,l).options.multiFloorView,s=((p=(u=o(this,l).Navigation)==null?void 0:u.floors)==null?void 0:p.map(P=>P.id))||[],n=((m=o(this,l).Navigation)==null?void 0:m.floorStacks.map(P=>P.id))||[],h=new Promise(async P=>{var et;await this.sceneUpdateQueue;let bt=to({buildings:Array.from(o(this,y).values()),inViewSet:o(this,j),currentFloor:e,zoomState:o(this,T),mode:o(this,f).mode,elevation:o(this,A),floorIdsInNavigation:s,floorStackIdsInNavigation:n,multiFloorView:i,getMultiFloorState:(et=o(this,f).customMultiFloorVisibilityState)!=null?et:Go,dynamicBuildingInteriors:o(this,f).dynamicBuildingInteriors,isolateBelowGroundView:o(this,f).isolateBelowGroundView,currentElevation:o(this,A),forceInteriorsVisible:o(this,f).forceInteriorsVisible}),ot=[];await Promise.all(Array.from(bt.values()).map(async R=>{let{building:V,showIndoor:At,floorStackState:b,facadeState:it,inFocus:Ft}=R;ot.push(b);let yt=oo(V,At);if(yt==="indoor")return v(this,F,ho).call(this,V,b,it,Ft);if(yt==="outdoor")return v(this,F,fo).call(this,V,b,it,n)})),o(this,l).Outdoor.setOpacity(Xt(ot,o(this,f).mode)),d(this,J,o(this,U).filter(R=>{var V;return((V=bt.get(R.id))==null?void 0:V.showIndoor)===!0}).map(R=>R.facade)),o(this,I).publish("focus",{facades:o(this,J)}),P()});return this.sceneUpdateQueue=h,h},"#applyBuildingStates"));d(this,I,new St),d(this,l,t),K.setLevel(W.logState),d(this,N,o(this,l).getMapData()),d(this,A,o(this,l).currentFloor.elevation),d(this,X,o(this,l).Camera.elevation);for(let e of o(this,N).getByType("facade"))o(this,y).set(e.floorStack.id,new Et(e.floorStack,o(this,l)));v(this,F,co).call(this),d(this,D,new wt(no(o(this,N),o(this,y)),o(this,l))),o(this,l).on("floor-change-start",o(this,mt)),o(this,l).on("camera-change",o(this,tt)),o(this,l).on("facades-in-view-change",o(this,ft)),o(this,l).on("user-interaction-start",o(this,pt)),o(this,l).on("user-interaction-end",o(this,gt))}enable(t){if(o(this,Z)){K.warn("enable() called on an already enabled Dynamic Focus instance.");return}d(this,Z,!0),o(this,l).manualFloorVisibility=!0,o(this,D).show(),this.updateState(_(_({},o(this,f)),t)),v(this,F,uo).call(this),o(this,tt).call(this,{zoomLevel:o(this,l).Camera.zoomLevel,center:o(this,l).Camera.center,bearing:o(this,l).Camera.bearing,pitch:o(this,l).Camera.pitch}),o(this,l).Camera.updateFacadesInView()}disable(){if(!o(this,Z)){K.warn("disable() called on an already disabled Dynamic Focus instance.");return}d(this,Z,!1),o(this,l).manualFloorVisibility=!1}get isEnabled(){return o(this,Z)}get isIndoor(){return o(this,C)==="indoor"}get isOutdoor(){return o(this,C)==="outdoor"}get outdoorsFloorStack(){return o(this,D).floorStack}get layers(){return o(this,ct)}get layersBySpaceId(){return o(this,dt)}setIndoor(){d(this,C,"indoor"),d(this,T,"in-range"),v(this,F,jt).call(this)}setOutdoor(){d(this,C,"outdoor"),d(this,T,"out-of-range"),v(this,F,jt).call(this)}get focusedFacades(){return[...o(this,J)]}getState(){return _({},o(this,f))}updateState(t){var i,s;let e=!1;t.indoorZoomThreshold!=null&&(t.indoorZoomThreshold=Ct(t.indoorZoomThreshold,(i=t==null?void 0:t.outdoorZoomThreshold)!=null?i:o(this,f).outdoorZoomThreshold,o(this,l).Camera.maxZoomLevel,"indoorZoomThreshold"),e=!0),t.outdoorZoomThreshold!=null&&(t.outdoorZoomThreshold=Ct(t.outdoorZoomThreshold,o(this,l).Camera.minZoomLevel,(s=t==null?void 0:t.indoorZoomThreshold)!=null?s:o(this,f).indoorZoomThreshold,"outdoorZoomThreshold"),e=!0),t.mode!=null&&(t.mode=io.includes(t.mode)?t.mode:"default-floor"),t.autoAdjustFacadeHeights!=null&&(o(this,f).autoAdjustFacadeHeights=t.autoAdjustFacadeHeights),t.dynamicBuildingInteriors!=null&&t.dynamicBuildingInteriors!==o(this,f).dynamicBuildingInteriors&&(e=!0),t.isolateBelowGroundView!=null&&t.isolateBelowGroundView!==o(this,f).isolateBelowGroundView&&(e=!0),t.forceInteriorsVisible!=null&&t.forceInteriorsVisible!==o(this,f).forceInteriorsVisible&&(e=!0),t.showLabelsAndMarkersOnAllVisibleFloors!=null&&t.showLabelsAndMarkersOnAllVisibleFloors!==o(this,f).showLabelsAndMarkersOnAllVisibleFloors&&(e=!0),d(this,f,Object.assign({},o(this,f),Object.fromEntries(Object.entries(t).filter(([,n])=>n!=null)))),t.mode!=null&&t.preloadFloors&&v(this,F,$t).call(this,t.mode),e&&o(this,q).call(this)}destroy(){this.disable(),o(this,l).off("facades-in-view-change",o(this,ft)),o(this,l).off("floor-change-start",o(this,mt)),o(this,l).off("camera-change",o(this,tt)),o(this,l).off("user-interaction-start",o(this,pt)),o(this,l).off("user-interaction-end",o(this,gt)),o(this,y).forEach(t=>t.destroy()),o(this,D).destroy(),o(this,I).destroy(),d(this,G,[])}async focus(t=o(this,f).setFloorOnFocus){if(t)if(eo(o(this,X),o(this,l).Camera.elevation,o(this,$)))d(this,X,o(this,l).Camera.elevation),d(this,Y,!0);else{let e=Jt(o(this,U),o(this,D),o(this,T)),i=e?vt(e,o(this,f).mode,o(this,A)):void 0;i&&i.id!==o(this,l).currentFloor.id&&o(this,l).setFloor(i,{context:"dynamic-focus"})}await o(this,q).call(this),o(this,I).publish("focus",{facades:this.focusedFacades})}preloadFloors(){v(this,F,$t).call(this,o(this,f).mode)}setDefaultFloorForStack(t,e){if(!Nt(e,t))return;let i=o(this,y).get(t.id);i&&(i.defaultFloor=e)}resetDefaultFloorForStack(t){let e=o(this,y).get(t.id);e&&(e.defaultFloor=t.defaultFloor)}getDefaultFloorForStack(t){var e;return((e=o(this,y).get(t.id))==null?void 0:e.defaultFloor)||t.defaultFloor||t.floors[0]}setCurrentFloorForStack(t,e){if(!Nt(e,t))return;let i=o(this,y).get(t.id);i&&(i.activeFloor=e,o(this,q).call(this))}exclude(t){let e=Array.isArray(t)?t:[t];for(let i of e){let s=o(this,y).get(i.id);s&&(s.excluded=!0)}}include(t){let e=Array.isArray(t)?t:[t];for(let i of e){let s=o(this,y).get(i.id);s&&(s.excluded=!1)}}getCurrentFloorForStack(t){var e;return((e=o(this,y).get(t.id))==null?void 0:e.activeFloor)||this.getDefaultFloorForStack(t)}};I=new WeakMap,l=new WeakMap,N=new WeakMap,f=new WeakMap,U=new WeakMap,j=new WeakMap,y=new WeakMap,D=new WeakMap,$=new WeakMap,Y=new WeakMap,A=new WeakMap,X=new WeakMap,ct=new WeakMap,dt=new WeakMap,ht=new WeakMap,T=new WeakMap,C=new WeakMap,J=new WeakMap,Z=new WeakMap,G=new WeakMap,F=new WeakSet,jt=a(function(){o(this,f).autoFocus&&(o(this,$)?this.focus():d(this,Y,!0)),o(this,I).publish("state-change")},"#handleViewStateChange"),uo=a(function(){d(this,G,[]);for(let t of o(this,f).dynamicLayers){let e=new It([t],!0,o(this,l));e.processLayerGroup(o(this,ht),o(this,f).outdoorZoomThreshold,o(this,f).indoorZoomThreshold),o(this,G).push(e)}Rt(o(this,G),o(this,l).Camera.zoomLevel)},"#initializeLayerGroups"),co=a(function(){var s,n,h;let t=(h=(n=(s=o(this,N).internal.mvf)==null?void 0:s.enterprise)==null?void 0:n.layers)!=null?h:[],e={},i={};t.forEach(u=>{e[u.name]||(e[u.name]=[]),e[u.name].push(...u.spaces.map(({spaceId:p})=>p));for(let{spaceId:p}of u.spaces)i[p]==null&&(i[p]=[]),i[p].push(u.name)}),d(this,ct,t.map(({name:u})=>u)),d(this,dt,i),d(this,ht,e)},"#setupLayers"),$t=a(function(t){o(this,l).preloadFloors(o(this,N).getByType("facade").map(e=>vt(o(this,y).get(e.floorStack.id),t,o(this,A))).filter(e=>e!=null&&Zo.is(e)))},"#preloadFloors"),ft=new WeakMap,mt=new WeakMap,pt=new WeakMap,gt=new WeakMap,tt=new WeakMap,Yt=a(function(t,e,i,s=!1){t.forEach(n=>{if(n.floor)if(e){let u=i!==void 0&&!s?rt(_({},n.state),{labels:rt(_({},n.state.labels),{enabled:n.state.labels.enabled&&i}),markers:rt(_({},n.state.markers),{enabled:n.state.markers.enabled&&i}),occlusion:rt(_({},n.state.occlusion),{enabled:n.state.occlusion.enabled&&i})}):n.state;o(this,l).updateState(n.floor,u)}else o(this,l).updateState(n.floor,{visible:!1})})},"#updateFloorVisibility"),ho=a(async function(t,e,i,s){return v(this,F,Yt).call(this,e.floorStates,!0,s,o(this,f).showLabelsAndMarkersOnAllVisibleFloors),t.animateFacade(i.state,o(this,f).indoorAnimationOptions)},"#animateIndoorSequence"),fo=a(async function(t,e,i,s){let n=await t.animateFacade(i.state,o(this,f).outdoorAnimationOptions);return n.result==="completed"&&v(this,F,Yt).call(this,e.floorStates,Dt({building:t,currentFloor:o(this,l).currentFloor,inRange:o(this,T)==="in-range",inFocus:o(this,j).has(t.id),mode:o(this,f).mode,elevation:o(this,A),inNavigation:s.includes(t.floorStack.id),dynamicBuildingInteriors:o(this,f).dynamicBuildingInteriors,forceInteriorsVisible:o(this,f).forceInteriorsVisible}),void 0,o(this,f).showLabelsAndMarkersOnAllVisibleFloors),n},"#animateOutdoorSequence"),q=new WeakMap,a(qt,"DynamicFocus");var lo=qt;export{a,we as b,ke as c,lo as d};
@@ -4,7 +4,13 @@ import { Facade, Floor, FloorStack, MapView, VisibilityState as BuildingFloorSta
4
4
  type MultiFloorVisibilityState = (floors: Floor[], currentFloor: Floor, floorGap: number, floorIdsInNavigation: Floor['id'][], floorsVisualHeightMap?: Map<number, {
5
5
  altitude: number;
6
6
  effectiveHeight: number;
7
- }>) => BuildingFloorStackState;
7
+ }>, footprintConfig?: {
8
+ color?: string;
9
+ opacity?: number;
10
+ outline?: boolean;
11
+ spacesOpenToBelowEnabled?: boolean;
12
+ __EXPERIMENTAL_darkenSpacesExposedToAbove?: boolean;
13
+ }) => BuildingFloorStackState;
8
14
  type DynamicFocusAnimationOptions = {
9
15
  /**
10
16
  * The duration of the animation in milliseconds.
@@ -95,6 +101,21 @@ type DynamicFocusState = {
95
101
  * @experimental
96
102
  */
97
103
  dynamicLayers: string[];
104
+ /**
105
+ * Forces building interiors to remain visible at all times.
106
+ * When enabled, all indoor floors are displayed regardless of camera position, zoom level, or focus state.
107
+ * This flag overrides the dynamic visibility logic controlled by `dynamicBuildingInteriors`.
108
+ * @experimental
109
+ * @internal
110
+ * @default false
111
+ */
112
+ forceInteriorsVisible: boolean;
113
+ /**
114
+ * When enabled, shows labels and markers on all floors at the current elevation
115
+ * across all map groups, regardless of whether the building is in focus.
116
+ * @default false
117
+ */
118
+ showLabelsAndMarkersOnAllVisibleFloors: boolean;
98
119
  };
99
120
  /**
100
121
  * Events emitted by the Dynamic Focus controller.
package/lib/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{a as d,b as u,c as y,d as F}from"./chunk-I4YW7HLG.js";var p=d((t,o)=>{var l,i,s,a;let n={initialVisibility:(l=o.initialVisibility)!=null?l:"outdoor-first",layersBySpaceId:(i=o.layersBySpaceId)!=null?i:{},focusLayers:(s=o.focusLayers)!=null?s:[],defaultFloor:(a=o.defaultFloor)!=null?a:t.currentFloor},e=O(t,n),c=e+y,r=e+u;return n.initialVisibility==="indoor-first"&&(c=e-u,r=e-y),{indoorZoomThreshold:c,outdoorZoomThreshold:r}},"calculateZoomThresholds");function O(t,o){var l;let n=t.getMapData().getByType("space"),e=o.focusLayers.length?n.filter(i=>{var a,f,m;let s=(a=o.layersBySpaceId[i.id])==null?void 0:a[0];return typeof s=="string"&&i.floor.id===((f=o.defaultFloor)==null?void 0:f.id)&&((m=o.focusLayers)==null?void 0:m.indexOf(s))!==-1}):void 0,c=(l=t.Camera.getFocusOnTransform(o.defaultFloor,{}).zoomLevel)!=null?l:0,r=e!=null&&e.length?t.Camera.getFocusOnTransform(e,{}).zoomLevel:void 0;return r!=null?r:c}d(O,"getDefaultZoomLevel");export{F as DynamicFocus,p as calculateZoomThresholds};
1
+ import{a as d,b as u,c as y,d as F}from"./chunk-YL4YTIGO.js";var p=d((t,o)=>{var l,i,s,a;let n={initialVisibility:(l=o.initialVisibility)!=null?l:"outdoor-first",layersBySpaceId:(i=o.layersBySpaceId)!=null?i:{},focusLayers:(s=o.focusLayers)!=null?s:[],defaultFloor:(a=o.defaultFloor)!=null?a:t.currentFloor},e=O(t,n),c=e+y,r=e+u;return n.initialVisibility==="indoor-first"&&(c=e-u,r=e-y),{indoorZoomThreshold:c,outdoorZoomThreshold:r}},"calculateZoomThresholds");function O(t,o){var l;let n=t.getMapData().getByType("space"),e=o.focusLayers.length?n.filter(i=>{var a,f,m;let s=(a=o.layersBySpaceId[i.id])==null?void 0:a[0];return typeof s=="string"&&i.floor.id===((f=o.defaultFloor)==null?void 0:f.id)&&((m=o.focusLayers)==null?void 0:m.indexOf(s))!==-1}):void 0,c=(l=t.Camera.getFocusOnTransform(o.defaultFloor,{}).zoomLevel)!=null?l:0,r=e!=null&&e.length?t.Camera.getFocusOnTransform(e,{}).zoomLevel:void 0;return r!=null?r:c}d(O,"getDefaultZoomLevel");export{F as DynamicFocus,p as calculateZoomThresholds};
@@ -4,7 +4,13 @@ import { Facade, Floor, FloorStack, MapView, VisibilityState as BuildingFloorSta
4
4
  type MultiFloorVisibilityState = (floors: Floor[], currentFloor: Floor, floorGap: number, floorIdsInNavigation: Floor['id'][], floorsVisualHeightMap?: Map<number, {
5
5
  altitude: number;
6
6
  effectiveHeight: number;
7
- }>) => BuildingFloorStackState;
7
+ }>, footprintConfig?: {
8
+ color?: string;
9
+ opacity?: number;
10
+ outline?: boolean;
11
+ spacesOpenToBelowEnabled?: boolean;
12
+ __EXPERIMENTAL_darkenSpacesExposedToAbove?: boolean;
13
+ }) => BuildingFloorStackState;
8
14
  type DynamicFocusAnimationOptions = {
9
15
  /**
10
16
  * The duration of the animation in milliseconds.
@@ -95,6 +101,21 @@ type DynamicFocusState = {
95
101
  * @experimental
96
102
  */
97
103
  dynamicLayers: string[];
104
+ /**
105
+ * Forces building interiors to remain visible at all times.
106
+ * When enabled, all indoor floors are displayed regardless of camera position, zoom level, or focus state.
107
+ * This flag overrides the dynamic visibility logic controlled by `dynamicBuildingInteriors`.
108
+ * @experimental
109
+ * @internal
110
+ * @default false
111
+ */
112
+ forceInteriorsVisible: boolean;
113
+ /**
114
+ * When enabled, shows labels and markers on all floors at the current elevation
115
+ * across all map groups, regardless of whether the building is in focus.
116
+ * @default false
117
+ */
118
+ showLabelsAndMarkersOnAllVisibleFloors: boolean;
98
119
  };
99
120
  /**
100
121
  * Events emitted by the Dynamic Focus controller.
@@ -1 +1 @@
1
- import{a as t,d as a}from"../chunk-I4YW7HLG.js";import{useCallback as y,useState as p,useMemo as F}from"react";import{useMap as l,useMapViewExtension as D}from"@mappedin/react-sdk";function d(){let[,n]=p({});return y(()=>n({}),[])}t(d,"useForceUpdate");function i(){let{mapView:n}=l(),r=d(),{register:o}=D("dynamic-focus",{onRegister:t(()=>{let e=new a(n);return e.on("state-change",r),e},"onRegister"),onDeregister:t(e=>{e.off("state-change",r),e.destroy()},"onDeregister")}),s=o();if(!s)throw new Error("DynamicFocus is not initialized");return F(()=>{let e=new WeakMap;return new Proxy(s,{get(u,m){let c=u[m];return typeof c=="function"?(e.has(c)||e.set(c,c.bind(u)),e.get(c)):c}})},[s])}t(i,"useDynamicFocus");import{useCallback as w,useEffect as E,useRef as k}from"react";function x(n,r){let o=i(),s=k(r);s.current=r;let e=w(u=>{s.current(u)},[]);E(()=>{if(o!=null)return o.on(n,e),()=>{o!=null&&o.off(n,e)}},[o,n,e])}t(x,"useDynamicFocusEvent");export{i as useDynamicFocus,x as useDynamicFocusEvent};
1
+ import{a as t,d as a}from"../chunk-YL4YTIGO.js";import{useCallback as y,useState as p,useMemo as F}from"react";import{useMap as l,useMapViewExtension as D}from"@mappedin/react-sdk";function d(){let[,n]=p({});return y(()=>n({}),[])}t(d,"useForceUpdate");function i(){let{mapView:n}=l(),r=d(),{register:o}=D("dynamic-focus",{onRegister:t(()=>{let e=new a(n);return e.on("state-change",r),e},"onRegister"),onDeregister:t(e=>{e.off("state-change",r),e.destroy()},"onDeregister")}),s=o();if(!s)throw new Error("DynamicFocus is not initialized");return F(()=>{let e=new WeakMap;return new Proxy(s,{get(u,m){let c=u[m];return typeof c=="function"?(e.has(c)||e.set(c,c.bind(u)),e.get(c)):c}})},[s])}t(i,"useDynamicFocus");import{useCallback as w,useEffect as E,useRef as k}from"react";function x(n,r){let o=i(),s=k(r);s.current=r;let e=w(u=>{s.current(u)},[]);E(()=>{if(o!=null)return o.on(n,e),()=>{o!=null&&o.off(n,e)}},[o,n,e])}t(x,"useDynamicFocusEvent");export{i as useDynamicFocus,x as useDynamicFocusEvent};
@@ -1,5 +1,5 @@
1
- var C=Object.defineProperty,l=(e,i)=>C(e,"name",{value:i,configurable:!0});import{useState as W,useCallback as h,useContext as _,useRef as T}from"react";import{MappedinContext as D}from"@mappedin/react-native-sdk";import{useCallback as L,useContext as V}from"react";var A="[MappedinJS]";function g(e="",{prefix:i=A}={}){const o=`${i}${e?`-${e}`:""}`,r=l((t,c)=>{if(typeof window<"u"&&window.rnDebug){const f=c.map(s=>s instanceof Error&&s.stack?`${s.message}
2
- ${s.stack}`:s);window.rnDebug(`${e} ${t}: ${f.join(" ")}`)}},"rnDebug");return{logState:0,log(...t){this.logState<=0&&(console.log(o,...t),r("log",t))},warn(...t){this.logState<=1&&(console.warn(o,...t),r("warn",t))},error(...t){this.logState<=2&&(console.error(o,...t),r("error",t))},assert(...t){console.assert(...t)},time(t){console.time(t)},timeEnd(t){console.timeEnd(t)},setLevel(t){0<=t&&t<=3&&(this.logState=t)}}}l(g,"createLogger");var z=g(),w=g("",{prefix:"[DynamicFocus]"});import{MappedinContext as Z,useEventCallback as $,createEventSetupScript as N,createEventCleanupScript as R}from"@mappedin/react-native-sdk";function v(e,i){return i.map(o=>o&&o.id&&e.getById("facade",o.id)||o)}l(v,"hydrateFacades");import{useRegisterExtension as j}from"@mappedin/react-native-sdk";var G=`
1
+ var C=Object.defineProperty,l=(e,i)=>C(e,"name",{value:i,configurable:!0});import{useState as V,useCallback as c,useContext as T,useRef as _}from"react";import{MappedinContext as L}from"@mappedin/react-native-sdk";import{useCallback as A,useContext as W}from"react";var D="[MappedinJS]";function g(e="",{prefix:i=D}={}){const o=`${i}${e?`-${e}`:""}`,r=l((t,h)=>{if(typeof window<"u"&&window.rnDebug){const f=h.map(a=>a instanceof Error&&a.stack?`${a.message}
2
+ ${a.stack}`:a);window.rnDebug(`${e} ${t}: ${f.join(" ")}`)}},"rnDebug");return{logState:0,log(...t){this.logState<=0&&(console.log(o,...t),r("log",t))},warn(...t){this.logState<=1&&(console.warn(o,...t),r("warn",t))},error(...t){this.logState<=2&&(console.error(o,...t),r("error",t))},assert(...t){console.assert(...t)},time(t){console.time(t)},timeEnd(t){console.timeEnd(t)},setLevel(t){0<=t&&t<=3&&(this.logState=t)}}}l(g,"createLogger");var z=g(),F=g("",{prefix:"[DynamicFocus]"});import{MappedinContext as Z,useEventCallback as N,createEventSetupScript as $,createEventCleanupScript as R}from"@mappedin/react-native-sdk";function v(e,i){return i.map(o=>o&&o.id&&e.getById("facade",o.id)||o)}l(v,"hydrateFacades");import{useRegisterExtension as j}from"@mappedin/react-native-sdk";var G=`
3
3
  // Define require function that uses bridge.modules for external dependencies
4
4
  globalThis.require = globalThis.require || ((id) => {
5
5
  if (window.bridge?.modules?.[id]) {
@@ -8,8 +8,8 @@ ${s.stack}`:s);window.rnDebug(`${e} ${t}: ${f.join(" ")}`)}},"rnDebug");return{l
8
8
  throw new Error('Module not found: ' + id);
9
9
  });
10
10
 
11
- "use strict";var DynamicFocus=(()=>{var ot=Object.defineProperty;var yo=Object.getOwnPropertyDescriptor;var bo=Object.getOwnPropertyNames;var So=Object.prototype.hasOwnProperty;var Wt=n=>{throw TypeError(n)};var Eo=(n,t,e)=>t in n?ot(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var a=(n,t)=>ot(n,"name",{value:t,configurable:!0}),pt=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var vo=(n,t)=>{for(var e in t)ot(n,e,{get:t[e],enumerable:!0})},wo=(n,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of bo(t))!So.call(n,r)&&r!==e&&ot(n,r,{get:()=>t[r],enumerable:!(i=yo(t,r))||i.enumerable});return n};var To=n=>wo(ot({},"__esModule",{value:!0}),n);var f=(n,t,e)=>Eo(n,typeof t!="symbol"?t+"":t,e),It=(n,t,e)=>t.has(n)||Wt("Cannot "+e);var o=(n,t,e)=>(It(n,t,"read from private field"),e?e.call(n):t.get(n)),u=(n,t,e)=>t.has(n)?Wt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,e),c=(n,t,e,i)=>(It(n,t,"write to private field"),i?i.call(n,e):t.set(n,e),e),b=(n,t,e)=>(It(n,t,"access private method"),e);var No={};vo(No,{DynamicFocus:()=>wt,calculateZoomThresholds:()=>mo});var Tt=pt("@mappedin/mappedin-js");function Kt(n,t){if(n==null||t==null)return n===t;if(n.length!==t.length)return!1;for(let e=0;e<n.length;e++)if(n[e]!==t[e])return!1;return!0}a(Kt,"arraysEqual");var Mt=class Mt{constructor(){f(this,"_subscribers",{});f(this,"_abortController",new AbortController);f(this,"_cleanupFunctions",[])}get signal(){return this._abortController.signal}publish(t,e){!this._subscribers||!this._subscribers[t]||this.signal.aborted||this._subscribers[t].forEach(function(i){typeof i=="function"&&i(e)})}onAbort(t){this.signal.addEventListener("abort",()=>t(),{once:!0})}on(t,e,i){let r=i?.signal;if(r?.aborted||this._abortController&&this._abortController.signal.aborted)return()=>{};this._subscribers||(this._subscribers={}),this._subscribers[t]=this._subscribers[t]||[],this._subscribers[t].push(e);let s=a(()=>this.off(t,e),"cleanup");return r&&r.addEventListener("abort",s,{once:!0}),this._cleanupFunctions.push(s),s}off(t,e){if(!this._subscribers||this._subscribers[t]==null||this.signal.aborted)return;let i=this._subscribers[t].indexOf(e);i!==-1&&this._subscribers[t].splice(i,1)}destroy(){if(!this.signal.aborted){for(let t of this._cleanupFunctions)t();this._cleanupFunctions=[],this._subscribers={},this._abortController.abort()}}};a(Mt,"PubSub");var gt=Mt;var Y=pt("@mappedin/mappedin-js");var E,et,V,S,y,T,j,$,Vt=class Vt{constructor(t,e){f(this,"__type","building");u(this,E);u(this,et,new Map);u(this,V,new Map);u(this,S,[]);u(this,y);u(this,T);f(this,"defaultFloor");f(this,"activeFloor");f(this,"excluded",!1);f(this,"floorsAltitudesMap",new Map);f(this,"aboveGroundFloors",[]);u(this,j);u(this,$);c(this,E,t),c(this,et,new Map(t.floors.map(r=>[r.id,r]))),c(this,V,new Map(t.floors.map(r=>[r.elevation,r]))),c(this,S,Array.from(o(this,V).values()).sort((r,s)=>r.elevation-s.elevation)),this.defaultFloor=t.defaultFloor,this.activeFloor=this.defaultFloor,c(this,y,e),this.aboveGroundFloors=o(this,S).filter(r=>r.elevation>=0);let i=t.facade?.spaces.map(r=>o(this,y).getState(r)).sort((r,s)=>r.altitude-s.altitude);if(i&&i.length===this.aboveGroundFloors.length)for(let r in this.aboveGroundFloors){let s=this.aboveGroundFloors[r],d=i[r];this.floorsAltitudesMap.set(s.elevation,{altitude:d.altitude,effectiveHeight:d.height})}}get id(){return o(this,E).id}get name(){return o(this,E).name}get floors(){return o(this,E).floors}get floorStack(){return o(this,E)}get facade(){return o(this,E).facade}get isCurrentFloorStack(){return this.id===o(this,y).currentFloorStack.id}get isIndoor(){let t=o(this,y).getState(this.facade);return this.isCurrentFloorStack||t?.visible===!1&&t?.opacity===0}get canSetFloor(){return this.isIndoor||!this.excluded}get maxElevation(){return o(this,j)==null&&c(this,j,Math.max(...o(this,V).keys())),o(this,j)}get minElevation(){return o(this,$)==null&&c(this,$,Math.min(...o(this,V).keys())),o(this,$)}has(t){return Y.Floor.is(t)?o(this,et).has(t.id):Y.FloorStack.is(t)?t.id===o(this,E).id:Y.Facade.is(t)?t.id===this.facade.id:!1}getFloorByElevation(t){return o(this,V).get(t)}getNearestFloorByElevation(t){let e=this.getFloorByElevation(t);if(e)return e;if(t>=0){if(t>this.maxElevation)return o(this,S)[o(this,S).length-1];for(let i=o(this,S).length-1;i>=0;i--){let r=o(this,S)[i];if(r.elevation<=t)return r}}else{if(t<this.minElevation)return o(this,S)[0];for(let i of o(this,S))if(i.elevation>=t)return i}}getHighestFloor(){return o(this,S)[o(this,S).length-1]}cancelAnimation(){o(this,T)&&(o(this,T).animation.cancel(),c(this,T,void 0))}async animateFacade(t,e={duration:150}){let i=o(this,T)?.state||o(this,y).getState(this.facade);if(!i||!t||i?.opacity===t.opacity&&i?.visible===t.visible)return{result:"completed"};this.cancelAnimation();let{opacity:r,visible:s}=t;if(o(this,y).updateState(this.facade,{visible:!0}),r!==void 0){c(this,T,{animation:o(this,y).animateState(this.facade,{opacity:r},{duration:e.duration}),state:t});let d=await o(this,T).animation;if(c(this,T,void 0),d.result==="cancelled")return d}return s===!1&&o(this,y).updateState(this.facade,{visible:s}),{result:"completed"}}destroy(){this.cancelAnimation(),o(this,E).floors.forEach(t=>{o(this,y).updateState(t,{visible:t.id===o(this,y).currentFloor.id})}),this.has(o(this,y).currentFloor)||o(this,y).updateState(this.facade,{visible:!0,opacity:1})}};E=new WeakMap,et=new WeakMap,V=new WeakMap,S=new WeakMap,y=new WeakMap,T=new WeakMap,j=new WeakMap,$=new WeakMap,a(Vt,"Building");var Ft=Vt;function Qt(n,t,e){return n>=t?"in-range":n<=e?"out-of-range":"transition"}a(Qt,"getZoomState");function yt(n,t,e){if(n.__type==="outdoors"&&"floor"in n)return n.floor;let i=n;if(i.excluded)return i.activeFloor;switch(t){case"lock-elevation":return i.getFloorByElevation(e);case"nearest-elevation":return i.getNearestFloorByElevation(e);default:break}return i.isIndoor?i.activeFloor:i.defaultFloor}a(yt,"getFloorToShow");function Bo(n,t,e){return t?{facade:n,state:{type:"facade",visible:!1,opacity:0}}:e?{facade:n,state:{type:"facade",visible:!0,opacity:.2}}:{facade:n,state:{type:"facade",visible:!0,opacity:1}}}a(Bo,"getFacadeState");function Oo(n,t,e){return{outdoorOpacity:"initial",floorStates:n.floors.map(i=>{let r=i.id===t.id&&e;return{floor:i,state:{type:"floor",visible:r,geometry:{visible:r},labels:{enabled:r},markers:{enabled:r},footprint:{visible:!1},occlusion:{enabled:!1}}}})}}a(Oo,"getSingleBuildingState");function Jt(n,t){if(!t.includes("lock-elevation"))return"initial";for(let e of n)if(typeof e.outdoorOpacity=="number"&&e.outdoorOpacity>=0&&e.outdoorOpacity<=1)return e.outdoorOpacity;return"initial"}a(Jt,"getOutdoorOpacity");function Xt(n,t,e){switch(e){case"in-range":return n[0]?.canSetFloor?n[0]:void 0;case"out-of-range":return t;case"transition":default:return}}a(Xt,"getSetFloorTargetFromZoomState");function to(n){let{buildings:t,inViewSet:e,currentFloor:i,zoomState:r,mode:s,elevation:d,floorIdsInNavigation:m,floorStackIdsInNavigation:P,multiFloorView:J,getMultiFloorState:_,dynamicBuildingInteriors:X,isolateBelowGroundView:mt,currentElevation:U}=n,tt=new Map,Bt=mt&&U<0;for(let g of t){let zt=e.has(g.id),Ht=Bt&&g.minElevation>=0,po=Ht?!1:zt,Ot=Ht?!1:xt({building:g,currentFloor:i,inRange:r==="in-range",inFocus:zt,mode:s,elevation:d,inNavigation:P.includes(g.id),dynamicBuildingInteriors:X}),kt=i.floorStack.id===g.id?g.activeFloor:yt(g,s,d),go=J.enabled?_(g.floors,kt||g.activeFloor,J?.floorGap,m,g.floorsAltitudesMap):Oo(g.floorStack,kt||g.activeFloor,Ot),Fo=Bo(g.facade,Ot,mt&&U<0);tt.set(g.id,{building:g,showIndoor:Ot,floorStackState:go,facadeState:Fo,inFocus:po,floorToShow:kt})}return tt}a(to,"getBuildingStates");function oo(n,t){return n.excluded?"none":t?"indoor":"outdoor"}a(oo,"getBuildingAnimationType");function xt(n){let{building:t,currentFloor:e,inRange:i,inFocus:r,mode:s,elevation:d,inNavigation:m,dynamicBuildingInteriors:P}=n;if(t.id===e.floorStack.id)return!0;if(t.excluded)return!1;if(m===!0)return!0;if(!P)return e.floorStack.type!=="Outdoor";if(!i||!r)return!1;switch(s){case"lock-elevation":return t.getFloorByElevation(d)!=null;default:break}return!0}a(xt,"shouldShowIndoor");function eo(n,t,e){return n!==t&&!e}a(eo,"shouldDeferSetFloor");var io=["default-floor","lock-elevation","nearest-elevation"];var bt=pt("@mappedin/mappedin-js");var Dt="[MappedinJS]";function At(n="",{prefix:t=Dt}={}){let e=\`\${t}\${n?\`-\${n}\`:""}\`,i=a((r,s)=>{if(typeof window<"u"&&window.rnDebug){let d=s.map(m=>m instanceof Error&&m.stack?\`\${m.message}
12
- \${m.stack}\`:m);window.rnDebug(\`\${n} \${r}: \${d.join(" ")}\`)}},"rnDebug");return{logState:0,log(...r){this.logState<=0&&(console.log(e,...r),i("log",r))},warn(...r){this.logState<=1&&(console.warn(e,...r),i("warn",r))},error(...r){this.logState<=2&&(console.error(e,...r),i("error",r))},assert(...r){console.assert(...r)},time(r){console.time(r)},timeEnd(r){console.timeEnd(r)},setLevel(r){0<=r&&r<=3&&(this.logState=r)}}}a(At,"createLogger");var ko=At();var q=ko;function ro(n,t,e,i){return(n<t||n>e)&&q.warn(i),Math.min(e,Math.max(t,n))}a(ro,"clampWithWarning");function Lt(n,t){return!bt.Floor.is(n)||n?.floorStack==null||!bt.FloorStack.is(t)?!1:n.floorStack.id!==t.id?(q.warn(\`Floor (\${n.id}) does not belong to floor stack (\${t.id}).\`),!1):!0}a(Lt,"validateFloorForStack");function _t(n,t,e,i){return ro(n,t,e,\`\${i} must be between \${t} and \${e}.\`)}a(_t,"validateZoomThreshold");var z=At("",{prefix:"[DynamicFocus]"});var B,H,it,Nt,Ct=class Ct{constructor(t,e){u(this,it);f(this,"__type","outdoors");u(this,B);u(this,H);c(this,B,t),c(this,H,e)}get id(){return o(this,B).id}get floorStack(){return o(this,B)}get floor(){return o(this,B).defaultFloor}matchesFloorStack(t){return t===o(this,B)||t===o(this,B).id}show(){b(this,it,Nt).call(this,!0)}hide(){b(this,it,Nt).call(this,!1)}destroy(){this.matchesFloorStack(o(this,H).currentFloorStack)||this.hide()}};B=new WeakMap,H=new WeakMap,it=new WeakSet,Nt=a(function(t){for(let e of o(this,B).floors)o(this,H).updateState(e,{visible:t})},"#setVisible"),a(Ct,"Outdoors");var St=Ct;function no(n,t){let e=n.getByType("floor-stack"),i=e.find(d=>d.type?.toLowerCase()==="outdoor"),r=n.getByType("enterprise-venue")?.defaultFloor;if(r){let d=n.getById("floor",r);if(d)return d.floorStack}if(i)return i;let s=e.find(d=>d.facade==null&&!t.has(d.id));return s||(z.warn("No good candidate for the outdoor floor stack was found. Using the first floor stack."),e[0])}a(no,"getOutdoorFloorStack");var ao=pt("@mappedin/mappedin-js"),so={indoorZoomThreshold:18,outdoorZoomThreshold:17,setFloorOnFocus:!0,autoFocus:!1,indoorAnimationOptions:{duration:150},outdoorAnimationOptions:{duration:150},autoAdjustFacadeHeights:!1,mode:"default-floor",preloadFloors:!0,customMultiFloorVisibilityState:ao.getMultiFloorState,dynamicBuildingInteriors:!0,dynamicLayers:[],isolateBelowGroundView:!1},Zt=.2,Gt=.4;function Io(n,t){return\`\${t} \${n}\`}a(Io,"formatMessage");var Rt=class Rt extends Error{constructor(t,e=Dt){super(Io(t,e)),this.name="MappedinError"}};a(Rt,"MappedinError");var Et=Rt;var Mo=a(n=>n,"linearEase"),Vo=a(n=>n*n,"quadEaseIn"),xo=a(n=>1-Math.cos(n*Math.PI/2),"easeIn"),Do=a(n=>1-(1-n)*(1-n),"quadEaseOut"),Ao={linear:Mo,"ease-in":Vo,"ease-out":Do,"ease-in-out":xo};function Lo(n,t){let e=0;if(t.length<2)return e;let r=t[0]<t[1]?(s,d)=>s>d:(s,d)=>s<d;for(;e<t.length-1&&r(n,t[e+1]);)e++;return e>t.length-2?Math.max(0,t.length-2):e}a(Lo,"getInterpolationBreakpoint");function lo(n,t,e,i="ease-in"){if(t.length!==e.length)throw new Et("Input and output ranges must have the same number of values.");n=Math.max(t[0],Math.min(n,t[t.length-1]));let r=Lo(n,t),s=(n-t[r])/(t[r+1]-t[r]),d=typeof i=="function"?i(s):Ao[i](s);return e[r]+d*(e[r+1]-e[r])}a(lo,"interpolateMulti");var O,rt,nt,I,at,Ut=class Ut{constructor(t,e,i){f(this,"layers");f(this,"visible");u(this,O);u(this,rt,[]);u(this,nt,!1);u(this,I,new Map);f(this,"interpolationFn");u(this,at,1);this.layers=t,this.visible=e,c(this,O,i)}processLayerGroup(t,e,i){if(!o(this,nt)&&(this.layers.forEach(r=>{let s=t[r];s&&o(this,rt).push(...s)}),c(this,nt,!0),this.visible)){let r=[e,i],s=[1,0];this.interpolationFn=d=>lo(d,r,s)}}setOpacity(t){c(this,at,t);for(let e of o(this,rt))if(e.startsWith("img_")){let i=o(this,O).Image3D.getById(e);if(i){let r=o(this,O).getState(i.image);o(this,I).has(e)||o(this,I).set(e,r?.opacity??1);let s=Math.min(o(this,I).get(e),t);o(this,O).updateState(i.image,{opacity:s})}}else{let i=o(this,O).getMapData()?.getById("space",e);if(!i)continue;let r=o(this,O).getState(i);o(this,I).has(e)||o(this,I).set(e,r?.opacity??1);let s=Math.min(o(this,I).get(e),t);o(this,O).updateState(i,{opacity:s,visible:s>0})}}get opacity(){return o(this,at)}};O=new WeakMap,rt=new WeakMap,nt=new WeakMap,I=new WeakMap,at=new WeakMap,a(Ut,"LayerGroup");var vt=Ut;function Pt(n,t){n.forEach(e=>{if(e.interpolationFn!=null){let i=e.interpolationFn(t);i!=null&&(e.setOpacity(i),e.visible=i===1)}})}a(Pt,"runLayerGroupInterpolations");var v,l,x,h,N,C,F,M,Z,G,w,W,st,lt,ut,k,D,K,A,L,p,jt,uo,co,$t,ct,dt,ht,ft,Q,Yt,ho,fo,R,qt=class qt{constructor(t){u(this,p);u(this,v);u(this,l);u(this,x);u(this,h,so);u(this,N,[]);u(this,C,new Set);u(this,F,new Map);u(this,M);u(this,Z,!1);u(this,G,!1);u(this,w,0);u(this,W,0);u(this,st,[]);u(this,lt,{});u(this,ut,{});u(this,k,"transition");u(this,D,"outdoor");u(this,K,[]);u(this,A,!1);u(this,L,[]);f(this,"sceneUpdateQueue",Promise.resolve());f(this,"on",a((t,e)=>{o(this,v).on(t,e)},"on"));f(this,"off",a((t,e)=>{o(this,v).off(t,e)},"off"));u(this,ct,a(t=>{if(!this.isEnabled)return;let{facades:e}=t;if(Kt(e,this.focusedFacades)&&o(this,D)==="transition"&&!o(this,G))return;c(this,G,!1),c(this,N,[]),o(this,C).clear();let i=o(this,h).isolateBelowGroundView&&o(this,w)<0;if(e.length>0)for(let r of e){let s=o(this,F).get(r.floorStack.id);if(s){if(i&&s.minElevation>=0)continue;o(this,C).add(s.id),o(this,N).push(s)}}o(this,h).autoFocus&&this.focus()},"#handleFacadesInViewChange"));u(this,dt,a(async t=>{if(!this.isEnabled)return;let{floor:e}=t,i=o(this,F).get(e.floorStack.id);if(i&&(i.activeFloor=e),i?.excluded===!1&&!o(this,M).matchesFloorStack(e.floorStack)&&c(this,w,e.elevation),o(this,l).manualFloorVisibility===!0){t.reason!=="dynamic-focus"&&(await o(this,R).call(this,e),o(this,v).publish("focus",{facades:this.focusedFacades}));let r=i?.floorsAltitudesMap.get(e.elevation)?.altitude??0;o(this,l).options.multiFloorView!=null&&o(this,l).options.multiFloorView?.enabled&&o(this,l).options.multiFloorView?.updateCameraElevationOnFloorChange&&o(this,l).Camera.elevation!==r&&o(this,l).Camera.animateElevation(r,{duration:750,easing:"ease-in-out"})}},"#handleFloorChangeStart"));u(this,ht,a(()=>{c(this,Z,!0)},"#handleUserInteractionStart"));u(this,ft,a(()=>{c(this,Z,!1)},"#handleUserInteractionEnd"));u(this,Q,a(t=>{if(!this.isEnabled)return;let{zoomLevel:e}=t,i=Qt(e,o(this,h).indoorZoomThreshold,o(this,h).outdoorZoomThreshold);o(this,k)!==i&&(c(this,k,i),i==="in-range"?this.setIndoor():i==="out-of-range"&&this.setOutdoor()),Pt(o(this,L),e)},"#handleCameraChange"));u(this,R,a(async t=>{if(o(this,l).manualFloorVisibility!==!0||!this.isEnabled)return;let e=t||o(this,l).currentFloor,i=o(this,l).options.multiFloorView,r=o(this,l).Navigation?.floors?.map(m=>m.id)||[],s=o(this,l).Navigation?.floorStacks.map(m=>m.id)||[],d=new Promise(async m=>{await this.sceneUpdateQueue;let P=to({buildings:Array.from(o(this,F).values()),inViewSet:o(this,C),currentFloor:e,zoomState:o(this,k),mode:o(this,h).mode,elevation:o(this,w),floorIdsInNavigation:r,floorStackIdsInNavigation:s,multiFloorView:i,getMultiFloorState:o(this,h).customMultiFloorVisibilityState??Tt.getMultiFloorState,dynamicBuildingInteriors:o(this,h).dynamicBuildingInteriors,isolateBelowGroundView:o(this,h).isolateBelowGroundView,currentElevation:o(this,w)}),J=[];await Promise.all(Array.from(P.values()).map(async _=>{let{building:X,showIndoor:mt,floorStackState:U,facadeState:tt,inFocus:Bt}=_;J.push(U);let g=oo(X,mt);if(g==="indoor")return b(this,p,ho).call(this,X,U,tt,Bt);if(g==="outdoor")return b(this,p,fo).call(this,X,U,tt,s)})),o(this,l).Outdoor.setOpacity(Jt(J,o(this,h).mode)),c(this,K,o(this,N).filter(_=>P.get(_.id)?.showIndoor===!0).map(_=>_.facade)),o(this,v).publish("focus",{facades:o(this,K)}),m()});return this.sceneUpdateQueue=d,d},"#applyBuildingStates"));c(this,v,new gt),c(this,l,t),z.setLevel(q.logState),c(this,x,o(this,l).getMapData()),c(this,w,o(this,l).currentFloor.elevation),c(this,W,o(this,l).Camera.elevation);for(let e of o(this,x).getByType("facade"))o(this,F).set(e.floorStack.id,new Ft(e.floorStack,o(this,l)));b(this,p,co).call(this),c(this,M,new St(no(o(this,x),o(this,F)),o(this,l))),o(this,l).on("floor-change-start",o(this,dt)),o(this,l).on("camera-change",o(this,Q)),o(this,l).on("facades-in-view-change",o(this,ct)),o(this,l).on("user-interaction-start",o(this,ht)),o(this,l).on("user-interaction-end",o(this,ft))}enable(t){if(o(this,A)){z.warn("enable() called on an already enabled Dynamic Focus instance.");return}c(this,A,!0),o(this,l).manualFloorVisibility=!0,o(this,M).show(),this.updateState({...o(this,h),...t}),b(this,p,uo).call(this),o(this,Q).call(this,{zoomLevel:o(this,l).Camera.zoomLevel,center:o(this,l).Camera.center,bearing:o(this,l).Camera.bearing,pitch:o(this,l).Camera.pitch}),o(this,l).Camera.updateFacadesInView()}disable(){if(!o(this,A)){z.warn("disable() called on an already disabled Dynamic Focus instance.");return}c(this,A,!1),o(this,l).manualFloorVisibility=!1}get isEnabled(){return o(this,A)}get isIndoor(){return o(this,D)==="indoor"}get isOutdoor(){return o(this,D)==="outdoor"}get outdoorsFloorStack(){return o(this,M).floorStack}get layers(){return o(this,st)}get layersBySpaceId(){return o(this,lt)}setIndoor(){c(this,D,"indoor"),c(this,k,"in-range"),b(this,p,jt).call(this)}setOutdoor(){c(this,D,"outdoor"),c(this,k,"out-of-range"),b(this,p,jt).call(this)}get focusedFacades(){return[...o(this,K)]}getState(){return{...o(this,h)}}updateState(t){let e=!1;t.indoorZoomThreshold!=null&&(t.indoorZoomThreshold=_t(t.indoorZoomThreshold,t?.outdoorZoomThreshold??o(this,h).outdoorZoomThreshold,o(this,l).Camera.maxZoomLevel,"indoorZoomThreshold"),e=!0),t.outdoorZoomThreshold!=null&&(t.outdoorZoomThreshold=_t(t.outdoorZoomThreshold,o(this,l).Camera.minZoomLevel,t?.indoorZoomThreshold??o(this,h).indoorZoomThreshold,"outdoorZoomThreshold"),e=!0),t.mode!=null&&(t.mode=io.includes(t.mode)?t.mode:"default-floor"),t.autoAdjustFacadeHeights!=null&&(o(this,h).autoAdjustFacadeHeights=t.autoAdjustFacadeHeights),t.dynamicBuildingInteriors!=null&&t.dynamicBuildingInteriors!==o(this,h).dynamicBuildingInteriors&&(e=!0),t.isolateBelowGroundView!=null&&t.isolateBelowGroundView!==o(this,h).isolateBelowGroundView&&(e=!0),c(this,h,Object.assign({},o(this,h),Object.fromEntries(Object.entries(t).filter(([,i])=>i!=null)))),t.mode!=null&&t.preloadFloors&&b(this,p,$t).call(this,t.mode),e&&o(this,R).call(this)}destroy(){this.disable(),o(this,l).off("facades-in-view-change",o(this,ct)),o(this,l).off("floor-change-start",o(this,dt)),o(this,l).off("camera-change",o(this,Q)),o(this,l).off("user-interaction-start",o(this,ht)),o(this,l).off("user-interaction-end",o(this,ft)),o(this,F).forEach(t=>t.destroy()),o(this,M).destroy(),o(this,v).destroy(),c(this,L,[])}async focus(t=o(this,h).setFloorOnFocus){if(t)if(eo(o(this,W),o(this,l).Camera.elevation,o(this,Z)))c(this,W,o(this,l).Camera.elevation),c(this,G,!0);else{let e=Xt(o(this,N),o(this,M),o(this,k)),i=e?yt(e,o(this,h).mode,o(this,w)):void 0;i&&i.id!==o(this,l).currentFloor.id&&o(this,l).setFloor(i,{context:"dynamic-focus"})}await o(this,R).call(this),o(this,v).publish("focus",{facades:this.focusedFacades})}preloadFloors(){b(this,p,$t).call(this,o(this,h).mode)}setDefaultFloorForStack(t,e){if(!Lt(e,t))return;let i=o(this,F).get(t.id);i&&(i.defaultFloor=e)}resetDefaultFloorForStack(t){let e=o(this,F).get(t.id);e&&(e.defaultFloor=t.defaultFloor)}getDefaultFloorForStack(t){return o(this,F).get(t.id)?.defaultFloor||t.defaultFloor||t.floors[0]}setCurrentFloorForStack(t,e){if(!Lt(e,t))return;let i=o(this,F).get(t.id);i&&(i.activeFloor=e,o(this,R).call(this))}exclude(t){let e=Array.isArray(t)?t:[t];for(let i of e){let r=o(this,F).get(i.id);r&&(r.excluded=!0)}}include(t){let e=Array.isArray(t)?t:[t];for(let i of e){let r=o(this,F).get(i.id);r&&(r.excluded=!1)}}getCurrentFloorForStack(t){return o(this,F).get(t.id)?.activeFloor||this.getDefaultFloorForStack(t)}};v=new WeakMap,l=new WeakMap,x=new WeakMap,h=new WeakMap,N=new WeakMap,C=new WeakMap,F=new WeakMap,M=new WeakMap,Z=new WeakMap,G=new WeakMap,w=new WeakMap,W=new WeakMap,st=new WeakMap,lt=new WeakMap,ut=new WeakMap,k=new WeakMap,D=new WeakMap,K=new WeakMap,A=new WeakMap,L=new WeakMap,p=new WeakSet,jt=a(function(){o(this,h).autoFocus&&(o(this,Z)?this.focus():c(this,G,!0)),o(this,v).publish("state-change")},"#handleViewStateChange"),uo=a(function(){c(this,L,[]);for(let t of o(this,h).dynamicLayers){let e=new vt([t],!0,o(this,l));e.processLayerGroup(o(this,ut),o(this,h).outdoorZoomThreshold,o(this,h).indoorZoomThreshold),o(this,L).push(e)}Pt(o(this,L),o(this,l).Camera.zoomLevel)},"#initializeLayerGroups"),co=a(function(){let t=o(this,x).internal.mvf?.enterprise?.layers??[],e={},i={};t.forEach(r=>{e[r.name]||(e[r.name]=[]),e[r.name].push(...r.spaces.map(({spaceId:s})=>s));for(let{spaceId:s}of r.spaces)i[s]==null&&(i[s]=[]),i[s].push(r.name)}),c(this,st,t.map(({name:r})=>r)),c(this,lt,i),c(this,ut,e)},"#setupLayers"),$t=a(function(t){o(this,l).preloadFloors(o(this,x).getByType("facade").map(e=>yt(o(this,F).get(e.floorStack.id),t,o(this,w))).filter(e=>e!=null&&Tt.Floor.is(e)))},"#preloadFloors"),ct=new WeakMap,dt=new WeakMap,ht=new WeakMap,ft=new WeakMap,Q=new WeakMap,Yt=a(function(t,e,i){t.forEach(r=>{if(r.floor)if(e){let s=i!==void 0?{...r.state,labels:{...r.state.labels,enabled:r.state.labels.enabled&&i},markers:{...r.state.markers,enabled:r.state.markers.enabled&&i},occlusion:{...r.state.occlusion,enabled:r.state.occlusion.enabled&&i}}:r.state;o(this,l).updateState(r.floor,s)}else o(this,l).updateState(r.floor,{visible:!1})})},"#updateFloorVisibility"),ho=a(async function(t,e,i,r){return b(this,p,Yt).call(this,e.floorStates,!0,r),t.animateFacade(i.state,o(this,h).indoorAnimationOptions)},"#animateIndoorSequence"),fo=a(async function(t,e,i,r){let s=await t.animateFacade(i.state,o(this,h).outdoorAnimationOptions);return s.result==="completed"&&b(this,p,Yt).call(this,e.floorStates,xt({building:t,currentFloor:o(this,l).currentFloor,inRange:o(this,k)==="in-range",inFocus:o(this,C).has(t.id),mode:o(this,h).mode,elevation:o(this,w),inNavigation:r.includes(t.floorStack.id),dynamicBuildingInteriors:o(this,h).dynamicBuildingInteriors})),s},"#animateOutdoorSequence"),R=new WeakMap,a(qt,"DynamicFocus");var wt=qt;var mo=a((n,t)=>{let e={initialVisibility:t.initialVisibility??"outdoor-first",layersBySpaceId:t.layersBySpaceId??{},focusLayers:t.focusLayers??[],defaultFloor:t.defaultFloor??n.currentFloor},i=_o(n,e),r=i+Gt,s=i+Zt;return e.initialVisibility==="indoor-first"&&(r=i-Zt,s=i-Gt),{indoorZoomThreshold:r,outdoorZoomThreshold:s}},"calculateZoomThresholds");function _o(n,t){let e=n.getMapData().getByType("space"),i=t.focusLayers.length?e.filter(d=>{let m=t.layersBySpaceId[d.id]?.[0];return typeof m=="string"&&d.floor.id===t.defaultFloor?.id&&t.focusLayers?.indexOf(m)!==-1}):void 0,r=n.Camera.getFocusOnTransform(t.defaultFloor,{}).zoomLevel??0;return(i?.length?n.Camera.getFocusOnTransform(i,{}).zoomLevel:void 0)??r}a(_o,"getDefaultZoomLevel");return To(No);})();
11
+ "use strict";var DynamicFocus=(()=>{var tt=Object.defineProperty;var yo=Object.getOwnPropertyDescriptor;var So=Object.getOwnPropertyNames;var Eo=Object.prototype.hasOwnProperty;var Kt=r=>{throw TypeError(r)};var vo=(r,t,e)=>t in r?tt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var a=(r,t)=>tt(r,"name",{value:t,configurable:!0}),kt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var wo=(r,t)=>{for(var e in t)tt(r,e,{get:t[e],enumerable:!0})},Vo=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of So(t))!Eo.call(r,n)&&n!==e&&tt(r,n,{get:()=>t[n],enumerable:!(i=yo(t,n))||i.enumerable});return r};var Oo=r=>Vo(tt({},"__esModule",{value:!0}),r);var m=(r,t,e)=>vo(r,typeof t!="symbol"?t+"":t,e),Bt=(r,t,e)=>t.has(r)||Kt("Cannot "+e);var o=(r,t,e)=>(Bt(r,t,"read from private field"),e?e.call(r):t.get(r)),u=(r,t,e)=>t.has(r)?Kt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),c=(r,t,e,i)=>(Bt(r,t,"write to private field"),i?i.call(r,e):t.set(r,e),e),y=(r,t,e)=>(Bt(r,t,"access private method"),e);var Zo={};wo(Zo,{DynamicFocus:()=>Vt,calculateZoomThresholds:()=>mo});var Ot=kt("@mappedin/mappedin-js");function Qt(r,t){if(r==null||t==null)return r===t;if(r.length!==t.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}a(Qt,"arraysEqual");var Mt=class Mt{constructor(){m(this,"_subscribers",{});m(this,"_abortController",new AbortController);m(this,"_cleanupFunctions",[])}get signal(){return this._abortController.signal}publish(t,e){!this._subscribers||!this._subscribers[t]||this.signal.aborted||this._subscribers[t].forEach(function(i){typeof i=="function"&&i(e)})}onAbort(t){this.signal.addEventListener("abort",()=>t(),{once:!0})}on(t,e,i){let n=i?.signal;if(n?.aborted||this._abortController&&this._abortController.signal.aborted)return()=>{};this._subscribers||(this._subscribers={}),this._subscribers[t]=this._subscribers[t]||[],this._subscribers[t].push(e);let s=a(()=>this.off(t,e),"cleanup");return n&&n.addEventListener("abort",s,{once:!0}),this._cleanupFunctions.push(s),s}off(t,e){if(!this._subscribers||this._subscribers[t]==null||this.signal.aborted)return;let i=this._subscribers[t].indexOf(e);i!==-1&&this._subscribers[t].splice(i,1)}destroy(){if(!this.signal.aborted){for(let t of this._cleanupFunctions)t();this._cleanupFunctions=[],this._subscribers={},this._abortController.abort()}}};a(Mt,"PubSub");var Ft=Mt;var q=kt("@mappedin/mappedin-js");var v,ot,A,S,b,O,$,Y,At=class At{constructor(t,e){m(this,"__type","building");u(this,v);u(this,ot,new Map);u(this,A,new Map);u(this,S,[]);u(this,b);u(this,O);m(this,"defaultFloor");m(this,"activeFloor");m(this,"excluded",!1);m(this,"floorsAltitudesMap",new Map);m(this,"aboveGroundFloors",[]);u(this,$);u(this,Y);c(this,v,t),c(this,ot,new Map(t.floors.map(n=>[n.id,n]))),c(this,A,new Map(t.floors.map(n=>[n.elevation,n]))),c(this,S,Array.from(o(this,A).values()).sort((n,s)=>n.elevation-s.elevation)),this.defaultFloor=t.defaultFloor,this.activeFloor=this.defaultFloor,c(this,b,e),this.aboveGroundFloors=o(this,S).filter(n=>n.elevation>=0);let i=t.facade?.spaces.map(n=>o(this,b).getState(n)).sort((n,s)=>n.altitude-s.altitude);if(i&&i.length===this.aboveGroundFloors.length)for(let n in this.aboveGroundFloors){let s=this.aboveGroundFloors[n],h=i[n];this.floorsAltitudesMap.set(s.elevation,{altitude:h.altitude,effectiveHeight:h.height})}}get id(){return o(this,v).id}get name(){return o(this,v).name}get floors(){return o(this,v).floors}get floorStack(){return o(this,v)}get facade(){return o(this,v).facade}get isCurrentFloorStack(){return this.id===o(this,b).currentFloorStack.id}get isIndoor(){let t=o(this,b).getState(this.facade);return this.isCurrentFloorStack||t?.visible===!1&&t?.opacity===0}get canSetFloor(){return this.isIndoor||!this.excluded}get maxElevation(){return o(this,$)==null&&c(this,$,Math.max(...o(this,A).keys())),o(this,$)}get minElevation(){return o(this,Y)==null&&c(this,Y,Math.min(...o(this,A).keys())),o(this,Y)}has(t){return q.Floor.is(t)?o(this,ot).has(t.id):q.FloorStack.is(t)?t.id===o(this,v).id:q.Facade.is(t)?t.id===this.facade.id:!1}getFloorByElevation(t){return o(this,A).get(t)}getNearestFloorByElevation(t){let e=this.getFloorByElevation(t);if(e)return e;if(t>=0){if(t>this.maxElevation)return o(this,S)[o(this,S).length-1];for(let i=o(this,S).length-1;i>=0;i--){let n=o(this,S)[i];if(n.elevation<=t)return n}}else{if(t<this.minElevation)return o(this,S)[0];for(let i of o(this,S))if(i.elevation>=t)return i}}getHighestFloor(){return o(this,S)[o(this,S).length-1]}cancelAnimation(){o(this,O)&&(o(this,O).animation.cancel(),c(this,O,void 0))}async animateFacade(t,e={duration:150}){let i=o(this,O)?.state||o(this,b).getState(this.facade);if(!i||!t||i?.opacity===t.opacity&&i?.visible===t.visible)return{result:"completed"};this.cancelAnimation();let{opacity:n,visible:s}=t;if(o(this,b).updateState(this.facade,{visible:!0}),n!==void 0){c(this,O,{animation:o(this,b).animateState(this.facade,{opacity:n},{duration:e.duration}),state:t});let h=await o(this,O).animation;if(c(this,O,void 0),h.result==="cancelled")return h}return s===!1&&o(this,b).updateState(this.facade,{visible:s}),{result:"completed"}}destroy(){this.cancelAnimation(),o(this,v).floors.forEach(t=>{o(this,b).updateState(t,{visible:t.id===o(this,b).currentFloor.id})}),this.has(o(this,b).currentFloor)||o(this,b).updateState(this.facade,{visible:!0,opacity:1})}};v=new WeakMap,ot=new WeakMap,A=new WeakMap,S=new WeakMap,b=new WeakMap,O=new WeakMap,$=new WeakMap,Y=new WeakMap,a(At,"Building");var bt=At;function Xt(r,t,e){return r>=t?"in-range":r<=e?"out-of-range":"transition"}a(Xt,"getZoomState");function yt(r,t,e){if(r.__type==="outdoors"&&"floor"in r)return r.floor;let i=r;if(i.excluded)return i.activeFloor;switch(t){case"lock-elevation":return i.getFloorByElevation(e);case"nearest-elevation":return i.getNearestFloorByElevation(e);default:break}return i.isIndoor?i.activeFloor:i.defaultFloor}a(yt,"getFloorToShow");function To(r,t,e){return t?{facade:r,state:{type:"facade",visible:!1,opacity:0}}:e?{facade:r,state:{type:"facade",visible:!0,opacity:.2}}:{facade:r,state:{type:"facade",visible:!0,opacity:1}}}a(To,"getFacadeState");function Io(r,t,e){return{outdoorOpacity:"initial",floorStates:r.floors.map(i=>{let s=i.id===t.id&&e;return{floor:i,state:{type:"floor",visible:s,geometry:{visible:s},labels:{enabled:s},markers:{enabled:s},footprint:{visible:!1},occlusion:{enabled:!1}}}})}}a(Io,"getSingleBuildingState");function Jt(r,t){if(!t.includes("lock-elevation"))return"initial";for(let e of r)if(typeof e.outdoorOpacity=="number"&&e.outdoorOpacity>=0&&e.outdoorOpacity<=1)return e.outdoorOpacity;return"initial"}a(Jt,"getOutdoorOpacity");function to(r,t,e){switch(e){case"in-range":return r[0]?.canSetFloor?r[0]:void 0;case"out-of-range":return t;case"transition":default:return}}a(to,"getSetFloorTargetFromZoomState");function oo(r){let{buildings:t,inViewSet:e,currentFloor:i,zoomState:n,mode:s,elevation:h,floorIdsInNavigation:f,floorStackIdsInNavigation:U,multiFloorView:E,getMultiFloorState:N,dynamicBuildingInteriors:J,isolateBelowGroundView:ft,currentElevation:j,forceInteriorsVisible:mt}=r,pt=new Map,gt=ft&&j<0;for(let F of t){let Ht=e.has(F.id),Wt=gt&&F.minElevation>=0,po=Wt?!1:Ht,Tt=Wt?!1:xt({building:F,currentFloor:i,inRange:n==="in-range",inFocus:Ht,mode:s,elevation:h,inNavigation:U.includes(F.id),dynamicBuildingInteriors:J,forceInteriorsVisible:mt}),It=i.floorStack.id===F.id?F.activeFloor:yt(F,s,h),go=E?.enabled?N(F.floors,It||F.activeFloor,E?.floorGap,f,F.floorsAltitudesMap,{color:E?.footprintColor,spacesOpenToBelowEnabled:E?.spacesOpenToBelowEnabled,__EXPERIMENTAL_darkenSpacesExposedToAbove:E?.__EXPERIMENTAL_darkenSpacesExposedToAbove,opacity:E?.footprintOpacity,outline:E?.footprintOutline}):Io(F.floorStack,It||F.activeFloor,Tt),Fo=ft&&j<0&&n==="in-range",bo=To(F.facade,Tt,Fo);pt.set(F.id,{building:F,showIndoor:Tt,floorStackState:go,facadeState:bo,inFocus:po,floorToShow:It})}return pt}a(oo,"getBuildingStates");function eo(r,t){return r.excluded?"none":t?"indoor":"outdoor"}a(eo,"getBuildingAnimationType");function xt(r){let{building:t,currentFloor:e,inRange:i,inFocus:n,mode:s,elevation:h,inNavigation:f,dynamicBuildingInteriors:U,forceInteriorsVisible:E}=r;if(t.id===e.floorStack.id)return!0;if(t.excluded)return!1;if(E===!0||f===!0)return!0;if(!U)return e.floorStack.type!=="Outdoor";if(!i||!n)return!1;switch(s){case"lock-elevation":return t.getFloorByElevation(h)!=null;default:break}return!0}a(xt,"shouldShowIndoor");function io(r,t,e){return r!==t&&!e}a(io,"shouldDeferSetFloor");var ro=["default-floor","lock-elevation","nearest-elevation"];var St=kt("@mappedin/mappedin-js");var Dt="[MappedinJS]";function Lt(r="",{prefix:t=Dt}={}){let e=\`\${t}\${r?\`-\${r}\`:""}\`,i=a((n,s)=>{if(typeof window<"u"&&window.rnDebug){let h=s.map(f=>f instanceof Error&&f.stack?\`\${f.message}
12
+ \${f.stack}\`:f);window.rnDebug(\`\${r} \${n}: \${h.join(" ")}\`)}},"rnDebug");return{logState:0,log(...n){this.logState<=0&&(console.log(e,...n),i("log",n))},warn(...n){this.logState<=1&&(console.warn(e,...n),i("warn",n))},error(...n){this.logState<=2&&(console.error(e,...n),i("error",n))},assert(...n){console.assert(...n)},time(n){console.time(n)},timeEnd(n){console.timeEnd(n)},setLevel(n){0<=n&&n<=3&&(this.logState=n)}}}a(Lt,"createLogger");var ko=Lt();var z=ko;function no(r,t,e,i){return(r<t||r>e)&&z.warn(i),Math.min(e,Math.max(t,r))}a(no,"clampWithWarning");function _t(r,t){return!St.Floor.is(r)||r?.floorStack==null||!St.FloorStack.is(t)?!1:r.floorStack.id!==t.id?(z.warn(\`Floor (\${r.id}) does not belong to floor stack (\${t.id}).\`),!1):!0}a(_t,"validateFloorForStack");function Nt(r,t,e,i){return no(r,t,e,\`\${i} must be between \${t} and \${e}.\`)}a(Nt,"validateZoomThreshold");var H=Lt("",{prefix:"[DynamicFocus]"});var T,W,et,Ct,Zt=class Zt{constructor(t,e){u(this,et);m(this,"__type","outdoors");u(this,T);u(this,W);c(this,T,t),c(this,W,e)}get id(){return o(this,T).id}get floorStack(){return o(this,T)}get floor(){return o(this,T).defaultFloor}matchesFloorStack(t){return t===o(this,T)||t===o(this,T).id}show(){y(this,et,Ct).call(this,!0)}hide(){y(this,et,Ct).call(this,!1)}destroy(){this.matchesFloorStack(o(this,W).currentFloorStack)||this.hide()}};T=new WeakMap,W=new WeakMap,et=new WeakSet,Ct=a(function(t){for(let e of o(this,T).floors)o(this,W).updateState(e,{visible:t})},"#setVisible"),a(Zt,"Outdoors");var Et=Zt;function so(r,t){let e=r.getByType("floor-stack"),i=e.find(h=>h.type?.toLowerCase()==="outdoor"),n=r.getByType("enterprise-venue")?.defaultFloor;if(n){let h=r.getById("floor",n);if(h)return h.floorStack}if(i)return i;let s=e.find(h=>h.facade==null&&!t.has(h.id));return s||(H.warn("No good candidate for the outdoor floor stack was found. Using the first floor stack."),e[0])}a(so,"getOutdoorFloorStack");var ao={indoorZoomThreshold:18,outdoorZoomThreshold:17,setFloorOnFocus:!0,autoFocus:!1,indoorAnimationOptions:{duration:150},outdoorAnimationOptions:{duration:150},autoAdjustFacadeHeights:!1,mode:"default-floor",preloadFloors:!0,dynamicBuildingInteriors:!0,dynamicLayers:[],isolateBelowGroundView:!1,forceInteriorsVisible:!1,showLabelsAndMarkersOnAllVisibleFloors:!1},Gt=.2,Rt=.4;function Bo(r,t){return\`\${t} \${r}\`}a(Bo,"formatMessage");var Pt=class Pt extends Error{constructor(t,e=Dt){super(Bo(t,e)),this.name="MappedinError"}};a(Pt,"MappedinError");var vt=Pt;var Mo=a(r=>r,"linearEase"),Ao=a(r=>r*r,"quadEaseIn"),xo=a(r=>1-Math.cos(r*Math.PI/2),"easeIn"),Do=a(r=>1-(1-r)*(1-r),"quadEaseOut"),Lo=a(r=>1-Math.pow(1-r,3),"cubicEaseOut"),_o={linear:Mo,"ease-in":Ao,"ease-out":Do,"ease-in-out":xo,"ease-out-cubic":Lo};function No(r,t){let e=0;if(t.length<2)return e;let n=t[0]<t[1]?(s,h)=>s>h:(s,h)=>s<h;for(;e<t.length-1&&n(r,t[e+1]);)e++;return e>t.length-2?Math.max(0,t.length-2):e}a(No,"getInterpolationBreakpoint");function lo(r,t,e,i="ease-in"){if(t.length!==e.length)throw new vt("Input and output ranges must have the same number of values.");r=Math.max(t[0],Math.min(r,t[t.length-1]));let n=No(r,t),s=(r-t[n])/(t[n+1]-t[n]),h=typeof i=="function"?i(s):_o[i](s);return e[n]+h*(e[n+1]-e[n])}a(lo,"interpolateMulti");var I,it,rt,B,nt,jt=class jt{constructor(t,e,i){m(this,"layers");m(this,"visible");u(this,I);u(this,it,[]);u(this,rt,!1);u(this,B,new Map);m(this,"interpolationFn");u(this,nt,1);this.layers=t,this.visible=e,c(this,I,i)}processLayerGroup(t,e,i){if(!o(this,rt)&&(this.layers.forEach(n=>{let s=t[n];s&&o(this,it).push(...s)}),c(this,rt,!0),this.visible)){let n=[e,i],s=[1,0];this.interpolationFn=h=>lo(h,n,s)}}setOpacity(t){c(this,nt,t);for(let e of o(this,it))if(e.startsWith("img_")){let i=o(this,I).Image3D.getById(e);if(i){let n=o(this,I).getState(i.image);o(this,B).has(e)||o(this,B).set(e,n?.opacity??1);let s=Math.min(o(this,B).get(e),t);o(this,I).updateState(i.image,{opacity:s})}}else{let i=o(this,I).getMapData()?.getById("space",e);if(!i)continue;let n=o(this,I).getState(i);o(this,B).has(e)||o(this,B).set(e,n?.opacity??1);let s=Math.min(o(this,B).get(e),t);o(this,I).updateState(i,{opacity:s,visible:s>0})}}get opacity(){return o(this,nt)}};I=new WeakMap,it=new WeakMap,rt=new WeakMap,B=new WeakMap,nt=new WeakMap,a(jt,"LayerGroup");var wt=jt;function Ut(r,t){r.forEach(e=>{if(e.interpolationFn!=null){let i=e.interpolationFn(t);i!=null&&(e.setOpacity(i),e.visible=i===1)}})}a(Ut,"runLayerGroupInterpolations");var w,l,x,d,C,Z,g,M,G,R,V,K,st,at,lt,k,D,Q,L,_,p,$t,uo,co,Yt,ut,ct,dt,ht,X,qt,ho,fo,P,zt=class zt{constructor(t){u(this,p);u(this,w);u(this,l);u(this,x);u(this,d,ao);u(this,C,[]);u(this,Z,new Set);u(this,g,new Map);u(this,M);u(this,G,!1);u(this,R,!1);u(this,V,0);u(this,K,0);u(this,st,[]);u(this,at,{});u(this,lt,{});u(this,k,"transition");u(this,D,"outdoor");u(this,Q,[]);u(this,L,!1);u(this,_,[]);m(this,"sceneUpdateQueue",Promise.resolve());m(this,"on",a((t,e)=>{o(this,w).on(t,e)},"on"));m(this,"off",a((t,e)=>{o(this,w).off(t,e)},"off"));u(this,ut,a(t=>{if(!this.isEnabled)return;let{facades:e}=t;if(Qt(e,this.focusedFacades)&&o(this,D)==="transition"&&!o(this,R))return;c(this,R,!1),c(this,C,[]),o(this,Z).clear();let i=o(this,d).isolateBelowGroundView&&o(this,V)<0;if(e.length>0)for(let n of e){let s=o(this,g).get(n.floorStack.id);if(s){if(i&&s.minElevation>=0)continue;o(this,Z).add(s.id),o(this,C).push(s)}}o(this,d).autoFocus&&this.focus()},"#handleFacadesInViewChange"));u(this,ct,a(async t=>{if(!this.isEnabled)return;let{floor:e}=t,i=o(this,g).get(e.floorStack.id);if(i&&(i.activeFloor=e),i?.excluded===!1&&!o(this,M).matchesFloorStack(e.floorStack)&&c(this,V,e.elevation),o(this,l).manualFloorVisibility===!0){t.reason!=="dynamic-focus"&&(await o(this,P).call(this,e),o(this,w).publish("focus",{facades:this.focusedFacades}));let n=i?.floorsAltitudesMap.get(e.elevation)?.altitude??0;o(this,l).options.multiFloorView!=null&&o(this,l).options.multiFloorView?.enabled&&o(this,l).options.multiFloorView?.updateCameraElevationOnFloorChange&&o(this,l).Camera.elevation!==n&&o(this,l).Camera.animateElevation(n,{duration:750,easing:"ease-in-out"})}},"#handleFloorChangeStart"));u(this,dt,a(()=>{c(this,G,!0)},"#handleUserInteractionStart"));u(this,ht,a(()=>{c(this,G,!1)},"#handleUserInteractionEnd"));u(this,X,a(t=>{if(!this.isEnabled)return;let{zoomLevel:e}=t,i=Xt(e,o(this,d).indoorZoomThreshold,o(this,d).outdoorZoomThreshold);o(this,k)!==i&&(c(this,k,i),i==="in-range"?this.setIndoor():i==="out-of-range"&&this.setOutdoor()),Ut(o(this,_),e)},"#handleCameraChange"));u(this,P,a(async t=>{if(o(this,l).manualFloorVisibility!==!0||!this.isEnabled)return;let e=t||o(this,l).currentFloor,i=o(this,l).options.multiFloorView,n=o(this,l).Navigation?.floors?.map(f=>f.id)||[],s=o(this,l).Navigation?.floorStacks.map(f=>f.id)||[],h=new Promise(async f=>{await this.sceneUpdateQueue;let U=oo({buildings:Array.from(o(this,g).values()),inViewSet:o(this,Z),currentFloor:e,zoomState:o(this,k),mode:o(this,d).mode,elevation:o(this,V),floorIdsInNavigation:n,floorStackIdsInNavigation:s,multiFloorView:i,getMultiFloorState:o(this,d).customMultiFloorVisibilityState??Ot.getMultiFloorState,dynamicBuildingInteriors:o(this,d).dynamicBuildingInteriors,isolateBelowGroundView:o(this,d).isolateBelowGroundView,currentElevation:o(this,V),forceInteriorsVisible:o(this,d).forceInteriorsVisible}),E=[];await Promise.all(Array.from(U.values()).map(async N=>{let{building:J,showIndoor:ft,floorStackState:j,facadeState:mt,inFocus:pt}=N;E.push(j);let gt=eo(J,ft);if(gt==="indoor")return y(this,p,ho).call(this,J,j,mt,pt);if(gt==="outdoor")return y(this,p,fo).call(this,J,j,mt,s)})),o(this,l).Outdoor.setOpacity(Jt(E,o(this,d).mode)),c(this,Q,o(this,C).filter(N=>U.get(N.id)?.showIndoor===!0).map(N=>N.facade)),o(this,w).publish("focus",{facades:o(this,Q)}),f()});return this.sceneUpdateQueue=h,h},"#applyBuildingStates"));c(this,w,new Ft),c(this,l,t),H.setLevel(z.logState),c(this,x,o(this,l).getMapData()),c(this,V,o(this,l).currentFloor.elevation),c(this,K,o(this,l).Camera.elevation);for(let e of o(this,x).getByType("facade"))o(this,g).set(e.floorStack.id,new bt(e.floorStack,o(this,l)));y(this,p,co).call(this),c(this,M,new Et(so(o(this,x),o(this,g)),o(this,l))),o(this,l).on("floor-change-start",o(this,ct)),o(this,l).on("camera-change",o(this,X)),o(this,l).on("facades-in-view-change",o(this,ut)),o(this,l).on("user-interaction-start",o(this,dt)),o(this,l).on("user-interaction-end",o(this,ht))}enable(t){if(o(this,L)){H.warn("enable() called on an already enabled Dynamic Focus instance.");return}c(this,L,!0),o(this,l).manualFloorVisibility=!0,o(this,M).show(),this.updateState({...o(this,d),...t}),y(this,p,uo).call(this),o(this,X).call(this,{zoomLevel:o(this,l).Camera.zoomLevel,center:o(this,l).Camera.center,bearing:o(this,l).Camera.bearing,pitch:o(this,l).Camera.pitch}),o(this,l).Camera.updateFacadesInView()}disable(){if(!o(this,L)){H.warn("disable() called on an already disabled Dynamic Focus instance.");return}c(this,L,!1),o(this,l).manualFloorVisibility=!1}get isEnabled(){return o(this,L)}get isIndoor(){return o(this,D)==="indoor"}get isOutdoor(){return o(this,D)==="outdoor"}get outdoorsFloorStack(){return o(this,M).floorStack}get layers(){return o(this,st)}get layersBySpaceId(){return o(this,at)}setIndoor(){c(this,D,"indoor"),c(this,k,"in-range"),y(this,p,$t).call(this)}setOutdoor(){c(this,D,"outdoor"),c(this,k,"out-of-range"),y(this,p,$t).call(this)}get focusedFacades(){return[...o(this,Q)]}getState(){return{...o(this,d)}}updateState(t){let e=!1;t.indoorZoomThreshold!=null&&(t.indoorZoomThreshold=Nt(t.indoorZoomThreshold,t?.outdoorZoomThreshold??o(this,d).outdoorZoomThreshold,o(this,l).Camera.maxZoomLevel,"indoorZoomThreshold"),e=!0),t.outdoorZoomThreshold!=null&&(t.outdoorZoomThreshold=Nt(t.outdoorZoomThreshold,o(this,l).Camera.minZoomLevel,t?.indoorZoomThreshold??o(this,d).indoorZoomThreshold,"outdoorZoomThreshold"),e=!0),t.mode!=null&&(t.mode=ro.includes(t.mode)?t.mode:"default-floor"),t.autoAdjustFacadeHeights!=null&&(o(this,d).autoAdjustFacadeHeights=t.autoAdjustFacadeHeights),t.dynamicBuildingInteriors!=null&&t.dynamicBuildingInteriors!==o(this,d).dynamicBuildingInteriors&&(e=!0),t.isolateBelowGroundView!=null&&t.isolateBelowGroundView!==o(this,d).isolateBelowGroundView&&(e=!0),t.forceInteriorsVisible!=null&&t.forceInteriorsVisible!==o(this,d).forceInteriorsVisible&&(e=!0),t.showLabelsAndMarkersOnAllVisibleFloors!=null&&t.showLabelsAndMarkersOnAllVisibleFloors!==o(this,d).showLabelsAndMarkersOnAllVisibleFloors&&(e=!0),c(this,d,Object.assign({},o(this,d),Object.fromEntries(Object.entries(t).filter(([,i])=>i!=null)))),t.mode!=null&&t.preloadFloors&&y(this,p,Yt).call(this,t.mode),e&&o(this,P).call(this)}destroy(){this.disable(),o(this,l).off("facades-in-view-change",o(this,ut)),o(this,l).off("floor-change-start",o(this,ct)),o(this,l).off("camera-change",o(this,X)),o(this,l).off("user-interaction-start",o(this,dt)),o(this,l).off("user-interaction-end",o(this,ht)),o(this,g).forEach(t=>t.destroy()),o(this,M).destroy(),o(this,w).destroy(),c(this,_,[])}async focus(t=o(this,d).setFloorOnFocus){if(t)if(io(o(this,K),o(this,l).Camera.elevation,o(this,G)))c(this,K,o(this,l).Camera.elevation),c(this,R,!0);else{let e=to(o(this,C),o(this,M),o(this,k)),i=e?yt(e,o(this,d).mode,o(this,V)):void 0;i&&i.id!==o(this,l).currentFloor.id&&o(this,l).setFloor(i,{context:"dynamic-focus"})}await o(this,P).call(this),o(this,w).publish("focus",{facades:this.focusedFacades})}preloadFloors(){y(this,p,Yt).call(this,o(this,d).mode)}setDefaultFloorForStack(t,e){if(!_t(e,t))return;let i=o(this,g).get(t.id);i&&(i.defaultFloor=e)}resetDefaultFloorForStack(t){let e=o(this,g).get(t.id);e&&(e.defaultFloor=t.defaultFloor)}getDefaultFloorForStack(t){return o(this,g).get(t.id)?.defaultFloor||t.defaultFloor||t.floors[0]}setCurrentFloorForStack(t,e){if(!_t(e,t))return;let i=o(this,g).get(t.id);i&&(i.activeFloor=e,o(this,P).call(this))}exclude(t){let e=Array.isArray(t)?t:[t];for(let i of e){let n=o(this,g).get(i.id);n&&(n.excluded=!0)}}include(t){let e=Array.isArray(t)?t:[t];for(let i of e){let n=o(this,g).get(i.id);n&&(n.excluded=!1)}}getCurrentFloorForStack(t){return o(this,g).get(t.id)?.activeFloor||this.getDefaultFloorForStack(t)}};w=new WeakMap,l=new WeakMap,x=new WeakMap,d=new WeakMap,C=new WeakMap,Z=new WeakMap,g=new WeakMap,M=new WeakMap,G=new WeakMap,R=new WeakMap,V=new WeakMap,K=new WeakMap,st=new WeakMap,at=new WeakMap,lt=new WeakMap,k=new WeakMap,D=new WeakMap,Q=new WeakMap,L=new WeakMap,_=new WeakMap,p=new WeakSet,$t=a(function(){o(this,d).autoFocus&&(o(this,G)?this.focus():c(this,R,!0)),o(this,w).publish("state-change")},"#handleViewStateChange"),uo=a(function(){c(this,_,[]);for(let t of o(this,d).dynamicLayers){let e=new wt([t],!0,o(this,l));e.processLayerGroup(o(this,lt),o(this,d).outdoorZoomThreshold,o(this,d).indoorZoomThreshold),o(this,_).push(e)}Ut(o(this,_),o(this,l).Camera.zoomLevel)},"#initializeLayerGroups"),co=a(function(){let t=o(this,x).internal.mvf?.enterprise?.layers??[],e={},i={};t.forEach(n=>{e[n.name]||(e[n.name]=[]),e[n.name].push(...n.spaces.map(({spaceId:s})=>s));for(let{spaceId:s}of n.spaces)i[s]==null&&(i[s]=[]),i[s].push(n.name)}),c(this,st,t.map(({name:n})=>n)),c(this,at,i),c(this,lt,e)},"#setupLayers"),Yt=a(function(t){o(this,l).preloadFloors(o(this,x).getByType("facade").map(e=>yt(o(this,g).get(e.floorStack.id),t,o(this,V))).filter(e=>e!=null&&Ot.Floor.is(e)))},"#preloadFloors"),ut=new WeakMap,ct=new WeakMap,dt=new WeakMap,ht=new WeakMap,X=new WeakMap,qt=a(function(t,e,i,n=!1){t.forEach(s=>{if(s.floor)if(e){let f=i!==void 0&&!n?{...s.state,labels:{...s.state.labels,enabled:s.state.labels.enabled&&i},markers:{...s.state.markers,enabled:s.state.markers.enabled&&i},occlusion:{...s.state.occlusion,enabled:s.state.occlusion.enabled&&i}}:s.state;o(this,l).updateState(s.floor,f)}else o(this,l).updateState(s.floor,{visible:!1})})},"#updateFloorVisibility"),ho=a(async function(t,e,i,n){return y(this,p,qt).call(this,e.floorStates,!0,n,o(this,d).showLabelsAndMarkersOnAllVisibleFloors),t.animateFacade(i.state,o(this,d).indoorAnimationOptions)},"#animateIndoorSequence"),fo=a(async function(t,e,i,n){let s=await t.animateFacade(i.state,o(this,d).outdoorAnimationOptions);return s.result==="completed"&&y(this,p,qt).call(this,e.floorStates,xt({building:t,currentFloor:o(this,l).currentFloor,inRange:o(this,k)==="in-range",inFocus:o(this,Z).has(t.id),mode:o(this,d).mode,elevation:o(this,V),inNavigation:n.includes(t.floorStack.id),dynamicBuildingInteriors:o(this,d).dynamicBuildingInteriors,forceInteriorsVisible:o(this,d).forceInteriorsVisible}),void 0,o(this,d).showLabelsAndMarkersOnAllVisibleFloors),s},"#animateOutdoorSequence"),P=new WeakMap,a(zt,"DynamicFocus");var Vt=zt;var mo=a((r,t)=>{let e={initialVisibility:t.initialVisibility??"outdoor-first",layersBySpaceId:t.layersBySpaceId??{},focusLayers:t.focusLayers??[],defaultFloor:t.defaultFloor??r.currentFloor},i=Co(r,e),n=i+Rt,s=i+Gt;return e.initialVisibility==="indoor-first"&&(n=i-Gt,s=i-Rt),{indoorZoomThreshold:n,outdoorZoomThreshold:s}},"calculateZoomThresholds");function Co(r,t){let e=r.getMapData().getByType("space"),i=t.focusLayers.length?e.filter(h=>{let f=t.layersBySpaceId[h.id]?.[0];return typeof f=="string"&&h.floor.id===t.defaultFloor?.id&&t.focusLayers?.indexOf(f)!==-1}):void 0,n=r.Camera.getFocusOnTransform(t.defaultFloor,{}).zoomLevel??0;return(i?.length?r.Camera.getFocusOnTransform(i,{}).zoomLevel:void 0)??n}a(Co,"getDefaultZoomLevel");return Oo(Zo);})();
13
13
 
14
14
 
15
15
  // Register the extension
@@ -22,4 +22,4 @@ if (window.bridge && window.bridge.extensions) {
22
22
  }
23
23
  } else {
24
24
  if (window.rnDebug) window.rnDebug('Bridge or extensions not available for registration');
25
- }`;function S(){return G}l(S,"getRegistrationScript");function m(){j({extensionName:"dynamic-focus",getRegistrationScript:S,logger:w})}l(m,"useDynamicFocusRegistration");function y(e,i){if(typeof e!="string"||e.length===0)throw new Error("Event parameter must be a non-empty string");if(typeof i!="function")throw new Error("Callback parameter must be a function");const o=V(Z),{extensions:r,mapData:t}=o;if(!t)throw new Error("Map data is not available");m();const f=(r?.["dynamic-focus"]?.registrationState||"unregistered")==="registered",s=L(d=>{try{let u=d;e==="focus"&&d.facades&&(u={...d,facades:v(t,d.facades)}),i(u)}catch(u){w.error(`Error in dynamic focus event callback for ${String(e)}:`,u)}},[e,t,i]);$({eventKey:`dynamic-focus:${String(e)}`,callback:s,setupScript:l(()=>N({extensionName:"dynamic-focus",eventName:String(e)}),"setupScript"),cleanupScript:l(()=>R({extensionName:"dynamic-focus",eventName:String(e)}),"cleanupScript"),shouldInject:f})}l(y,"useDynamicFocusEvent");function k(){const e=_(D),{bridge:i,extensions:o,updateExtensionState:r}=e;m();const t=o["dynamic-focus"],c=t?.registrationState||"unregistered",f=c==="registered",s=t?.isEnabled||!1,[d,u]=W(t?.focusedFacades||[]),b=T(o);b.current=o,y("focus",h(n=>{const p=n.facades;u(p),r("dynamic-focus",F=>({...F,registrationState:c,focusedFacades:p}))},[c,r]));const a=h(async(n,p=[])=>{if(!i?.isReady)throw new Error("Bridge is not ready. Ensure the WebView is loaded.");return await i.instruct({type:"extension",payload:{name:"dynamic-focus",method:n,args:p}})},[i]),M=h(async n=>{b.current?.["dynamic-focus"]?.isEnabled||(await a("enable",[n]),r("dynamic-focus",O=>({...O,isEnabled:!0})))},[a,r]),E=h(async n=>await a("updateState",[n]),[a]),I=h(async()=>await a("getState"),[a]),x=h(async n=>await a("focus",[n]),[a]),B=h(async()=>{await a("disable"),u([]),r("dynamic-focus",{registrationState:"unregistered",isEnabled:!1,focusedFacades:[]})},[a,u,r]);return{isReady:f,isEnabled:s,focusedFacades:d,updateState:E,getState:I,focus:x,disable:B,enable:M}}l(k,"useDynamicFocus");export{k as useDynamicFocus,y as useDynamicFocusEvent};
25
+ }`;function S(){return G}l(S,"getRegistrationScript");function m(){j({extensionName:"dynamic-focus",getRegistrationScript:S,logger:F})}l(m,"useDynamicFocusRegistration");function b(e,i){if(typeof e!="string"||e.length===0)throw new Error("Event parameter must be a non-empty string");if(typeof i!="function")throw new Error("Callback parameter must be a function");const o=W(Z),{extensions:r,mapData:t}=o;if(!t)throw new Error("Map data is not available");m();const f=(r?.["dynamic-focus"]?.registrationState||"unregistered")==="registered",a=A(d=>{try{let u=d;e==="focus"&&d.facades&&(u={...d,facades:v(t,d.facades)}),i(u)}catch(u){F.error(`Error in dynamic focus event callback for ${String(e)}:`,u)}},[e,t,i]);N({eventKey:`dynamic-focus:${String(e)}`,callback:a,setupScript:l(()=>$({extensionName:"dynamic-focus",eventName:String(e)}),"setupScript"),cleanupScript:l(()=>R({extensionName:"dynamic-focus",eventName:String(e)}),"cleanupScript"),shouldInject:f})}l(b,"useDynamicFocusEvent");function k(){const e=T(L),{bridge:i,extensions:o,updateExtensionState:r}=e;m();const t=o["dynamic-focus"],h=t?.registrationState||"unregistered",f=h==="registered",a=t?.isEnabled||!1,[d,u]=V(t?.focusedFacades||[]),y=_(o);y.current=o,b("focus",c(n=>{const p=n.facades;u(p),r("dynamic-focus",w=>({...w,registrationState:h,focusedFacades:p}))},[h,r]));const s=c(async(n,p=[])=>{if(!i?.isReady)throw new Error("Bridge is not ready. Ensure the WebView is loaded.");return await i.instruct({type:"extension",payload:{name:"dynamic-focus",method:n,args:p}})},[i]),E=c(async n=>{y.current?.["dynamic-focus"]?.isEnabled||(await s("enable",[n]),r("dynamic-focus",B=>({...B,isEnabled:!0})))},[s,r]),M=c(async n=>await s("updateState",[n]),[s]),I=c(async()=>await s("getState"),[s]),x=c(async n=>await s("focus",[n]),[s]),O=c(async()=>{await s("disable"),u([]),r("dynamic-focus",{registrationState:"unregistered",isEnabled:!1,focusedFacades:[]})},[s,u,r]);return{isReady:f,isEnabled:a,focusedFacades:d,updateState:M,getState:I,focus:x,disable:O,enable:E}}l(k,"useDynamicFocus");export{k as useDynamicFocus,b as useDynamicFocusEvent};
package/lib/rn/types.d.ts CHANGED
@@ -3,7 +3,13 @@ import { Building } from './building';
3
3
  export type MultiFloorVisibilityState = (floors: Floor[], currentFloor: Floor, floorGap: number, floorIdsInNavigation: Floor['id'][], floorsVisualHeightMap?: Map<number, {
4
4
  altitude: number;
5
5
  effectiveHeight: number;
6
- }>) => BuildingFloorStackState;
6
+ }>, footprintConfig?: {
7
+ color?: string;
8
+ opacity?: number;
9
+ outline?: boolean;
10
+ spacesOpenToBelowEnabled?: boolean;
11
+ __EXPERIMENTAL_darkenSpacesExposedToAbove?: boolean;
12
+ }) => BuildingFloorStackState;
7
13
  export type DynamicFocusAnimationOptions = {
8
14
  /**
9
15
  * The duration of the animation in milliseconds.
@@ -94,6 +100,21 @@ export type DynamicFocusState = {
94
100
  * @experimental
95
101
  */
96
102
  dynamicLayers: string[];
103
+ /**
104
+ * Forces building interiors to remain visible at all times.
105
+ * When enabled, all indoor floors are displayed regardless of camera position, zoom level, or focus state.
106
+ * This flag overrides the dynamic visibility logic controlled by `dynamicBuildingInteriors`.
107
+ * @experimental
108
+ * @internal
109
+ * @default false
110
+ */
111
+ forceInteriorsVisible: boolean;
112
+ /**
113
+ * When enabled, shows labels and markers on all floors at the current elevation
114
+ * across all map groups, regardless of whether the building is in focus.
115
+ * @default false
116
+ */
117
+ showLabelsAndMarkersOnAllVisibleFloors: boolean;
97
118
  };
98
119
  /**
99
120
  * Internal events emitted for updating React state.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mappedin/dynamic-focus",
3
- "version": "6.10.0-beta.0",
3
+ "version": "6.12.0-beta.0",
4
4
  "homepage": "https://developer.mappedin.com/",
5
5
  "private": false,
6
6
  "main": "lib/esm/index.js",
@@ -37,9 +37,9 @@
37
37
  "license": "SEE LICENSE IN LICENSE.txt",
38
38
  "peerDependencies": {
39
39
  "react": ">=16.8.0",
40
- "@mappedin/react-native-sdk": "^6.10.0",
41
- "@mappedin/react-sdk": "^6.10.0",
42
- "@mappedin/mappedin-js": "^6.10.0"
40
+ "@mappedin/mappedin-js": "^6.12.0",
41
+ "@mappedin/react-native-sdk": "^6.12.0",
42
+ "@mappedin/react-sdk": "^6.12.0"
43
43
  },
44
44
  "peerDependenciesMeta": {
45
45
  "@mappedin/react-sdk": {
@@ -1 +0,0 @@
1
- var Ht=Object.defineProperty,po=Object.defineProperties;var go=Object.getOwnPropertyDescriptors;var qt=Object.getOwnPropertySymbols;var Fo=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable;var zt=r=>{throw TypeError(r)};var Vt=(r,t,e)=>t in r?Ht(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,_=(r,t)=>{for(var e in t||(t={}))Fo.call(t,e)&&Vt(r,e,t[e]);if(qt)for(var e of qt(t))yo.call(t,e)&&Vt(r,e,t[e]);return r},at=(r,t)=>po(r,go(t)),s=(r,t)=>Ht(r,"name",{value:t,configurable:!0});var p=(r,t,e)=>Vt(r,typeof t!="symbol"?t+"":t,e),Mt=(r,t,e)=>t.has(r)||zt("Cannot "+e);var o=(r,t,e)=>(Mt(r,t,"read from private field"),e?e.call(r):t.get(r)),d=(r,t,e)=>t.has(r)?zt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),c=(r,t,e,i)=>(Mt(r,t,"write to private field"),i?i.call(r,e):t.set(r,e),e),E=(r,t,e)=>(Mt(r,t,"access private method"),e);var b={env:{NODE_ENV:"production",npm_package_version:"6.10.0-beta.0"}};import{Floor as Lo,getMultiFloorState as Co}from"@mappedin/mappedin-js";function Wt(r,t){if(r==null||t==null)return r===t;if(r.length!==t.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}s(Wt,"arraysEqual");var xt=class xt{constructor(){p(this,"_subscribers",{});p(this,"_abortController",new AbortController);p(this,"_cleanupFunctions",[])}get signal(){return this._abortController.signal}publish(t,e){!this._subscribers||!this._subscribers[t]||this.signal.aborted||this._subscribers[t].forEach(function(i){typeof i=="function"&&i(e)})}onAbort(t){this.signal.addEventListener("abort",()=>t(),{once:!0})}on(t,e,i){let n=i==null?void 0:i.signal;if(n!=null&&n.aborted||this._abortController&&this._abortController.signal.aborted)return()=>{};this._subscribers||(this._subscribers={}),this._subscribers[t]=this._subscribers[t]||[],this._subscribers[t].push(e);let a=s(()=>this.off(t,e),"cleanup");return n&&n.addEventListener("abort",a,{once:!0}),this._cleanupFunctions.push(a),a}off(t,e){if(!this._subscribers||this._subscribers[t]==null||this.signal.aborted)return;let i=this._subscribers[t].indexOf(e);i!==-1&&this._subscribers[t].splice(i,1)}destroy(){if(!this.signal.aborted){for(let t of this._cleanupFunctions)t();this._cleanupFunctions=[],this._subscribers={},this._abortController.abort()}}};s(xt,"PubSub");var St=xt;import{Facade as So,Floor as Eo,FloorStack as vo}from"@mappedin/mappedin-js";var w,st,N,v,S,I,W,K,Ot=class Ot{constructor(t,e){p(this,"__type","building");d(this,w);d(this,st,new Map);d(this,N,new Map);d(this,v,[]);d(this,S);d(this,I);p(this,"defaultFloor");p(this,"activeFloor");p(this,"excluded",!1);p(this,"floorsAltitudesMap",new Map);p(this,"aboveGroundFloors",[]);d(this,W);d(this,K);var n;c(this,w,t),c(this,st,new Map(t.floors.map(a=>[a.id,a]))),c(this,N,new Map(t.floors.map(a=>[a.elevation,a]))),c(this,v,Array.from(o(this,N).values()).sort((a,h)=>a.elevation-h.elevation)),this.defaultFloor=t.defaultFloor,this.activeFloor=this.defaultFloor,c(this,S,e),this.aboveGroundFloors=o(this,v).filter(a=>a.elevation>=0);let i=(n=t.facade)==null?void 0:n.spaces.map(a=>o(this,S).getState(a)).sort((a,h)=>a.altitude-h.altitude);if(i&&i.length===this.aboveGroundFloors.length)for(let a in this.aboveGroundFloors){let h=this.aboveGroundFloors[a],u=i[a];this.floorsAltitudesMap.set(h.elevation,{altitude:u.altitude,effectiveHeight:u.height})}}get id(){return o(this,w).id}get name(){return o(this,w).name}get floors(){return o(this,w).floors}get floorStack(){return o(this,w)}get facade(){return o(this,w).facade}get isCurrentFloorStack(){return this.id===o(this,S).currentFloorStack.id}get isIndoor(){let t=o(this,S).getState(this.facade);return this.isCurrentFloorStack||(t==null?void 0:t.visible)===!1&&(t==null?void 0:t.opacity)===0}get canSetFloor(){return this.isIndoor||!this.excluded}get maxElevation(){return o(this,W)==null&&c(this,W,Math.max(...o(this,N).keys())),o(this,W)}get minElevation(){return o(this,K)==null&&c(this,K,Math.min(...o(this,N).keys())),o(this,K)}has(t){return Eo.is(t)?o(this,st).has(t.id):vo.is(t)?t.id===o(this,w).id:So.is(t)?t.id===this.facade.id:!1}getFloorByElevation(t){return o(this,N).get(t)}getNearestFloorByElevation(t){let e=this.getFloorByElevation(t);if(e)return e;if(t>=0){if(t>this.maxElevation)return o(this,v)[o(this,v).length-1];for(let i=o(this,v).length-1;i>=0;i--){let n=o(this,v)[i];if(n.elevation<=t)return n}}else{if(t<this.minElevation)return o(this,v)[0];for(let i of o(this,v))if(i.elevation>=t)return i}}getHighestFloor(){return o(this,v)[o(this,v).length-1]}cancelAnimation(){o(this,I)&&(o(this,I).animation.cancel(),c(this,I,void 0))}async animateFacade(t,e={duration:150}){var h;let i=((h=o(this,I))==null?void 0:h.state)||o(this,S).getState(this.facade);if(!i||!t||(i==null?void 0:i.opacity)===t.opacity&&(i==null?void 0:i.visible)===t.visible)return{result:"completed"};this.cancelAnimation();let{opacity:n,visible:a}=t;if(o(this,S).updateState(this.facade,{visible:!0}),n!==void 0){c(this,I,{animation:o(this,S).animateState(this.facade,{opacity:n},{duration:e.duration}),state:t});let u=await o(this,I).animation;if(c(this,I,void 0),u.result==="cancelled")return u}return a===!1&&o(this,S).updateState(this.facade,{visible:a}),{result:"completed"}}destroy(){this.cancelAnimation(),o(this,w).floors.forEach(t=>{o(this,S).updateState(t,{visible:t.id===o(this,S).currentFloor.id})}),this.has(o(this,S).currentFloor)||o(this,S).updateState(this.facade,{visible:!0,opacity:1})}};w=new WeakMap,st=new WeakMap,N=new WeakMap,v=new WeakMap,S=new WeakMap,I=new WeakMap,W=new WeakMap,K=new WeakMap,s(Ot,"Building");var Et=Ot;function Kt(r,t,e){return r>=t?"in-range":r<=e?"out-of-range":"transition"}s(Kt,"getZoomState");function vt(r,t,e){if(r.__type==="outdoors"&&"floor"in r)return r.floor;let i=r;if(i.excluded)return i.activeFloor;switch(t){case"lock-elevation":return i.getFloorByElevation(e);case"nearest-elevation":return i.getNearestFloorByElevation(e);default:break}return i.isIndoor?i.activeFloor:i.defaultFloor}s(vt,"getFloorToShow");function wo(r,t,e){return t?{facade:r,state:{type:"facade",visible:!1,opacity:0}}:e?{facade:r,state:{type:"facade",visible:!0,opacity:.2}}:{facade:r,state:{type:"facade",visible:!0,opacity:1}}}s(wo,"getFacadeState");function ko(r,t,e){return{outdoorOpacity:"initial",floorStates:r.floors.map(i=>{let n=i.id===t.id&&e;return{floor:i,state:{type:"floor",visible:n,geometry:{visible:n},labels:{enabled:n},markers:{enabled:n},footprint:{visible:!1},occlusion:{enabled:!1}}}})}}s(ko,"getSingleBuildingState");function Qt(r,t){if(!t.includes("lock-elevation"))return"initial";for(let e of r)if(typeof e.outdoorOpacity=="number"&&e.outdoorOpacity>=0&&e.outdoorOpacity<=1)return e.outdoorOpacity;return"initial"}s(Qt,"getOutdoorOpacity");function Jt(r,t,e){var i;switch(e){case"in-range":return(i=r[0])!=null&&i.canSetFloor?r[0]:void 0;case"out-of-range":return t;case"transition":default:return}}s(Jt,"getSetFloorTargetFromZoomState");function Xt(r){let{buildings:t,inViewSet:e,currentFloor:i,zoomState:n,mode:a,elevation:h,floorIdsInNavigation:u,floorStackIdsInNavigation:f,multiFloorView:P,getMultiFloorState:R,dynamicBuildingInteriors:bt,isolateBelowGroundView:it,currentElevation:rt}=r,A=new Map,D=it&&rt<0;for(let F of t){let H=e.has(F.id),nt=D&&F.minElevation>=0,It=nt?!1:H,z=nt?!1:At({building:F,currentFloor:i,inRange:n==="in-range",inFocus:H,mode:a,elevation:h,inNavigation:f.includes(F.id),dynamicBuildingInteriors:bt}),Tt=i.floorStack.id===F.id?F.activeFloor:vt(F,a,h),mo=P.enabled?R(F.floors,Tt||F.activeFloor,P==null?void 0:P.floorGap,u,F.floorsAltitudesMap):ko(F.floorStack,Tt||F.activeFloor,z),fo=wo(F.facade,z,it&&rt<0);A.set(F.id,{building:F,showIndoor:z,floorStackState:mo,facadeState:fo,inFocus:It,floorToShow:Tt})}return A}s(Xt,"getBuildingStates");function to(r,t){return r.excluded?"none":t?"indoor":"outdoor"}s(to,"getBuildingAnimationType");function At(r){let{building:t,currentFloor:e,inRange:i,inFocus:n,mode:a,elevation:h,inNavigation:u,dynamicBuildingInteriors:f}=r;if(t.id===e.floorStack.id)return!0;if(t.excluded)return!1;if(u===!0)return!0;if(!f)return e.floorStack.type!=="Outdoor";if(!i||!n)return!1;switch(a){case"lock-elevation":return t.getFloorByElevation(h)!=null;default:break}return!0}s(At,"shouldShowIndoor");function oo(r,t,e){return r!==t&&!e}s(oo,"shouldDeferSetFloor");var eo=["default-floor","lock-elevation","nearest-elevation"];import{Floor as Io,FloorStack as To}from"@mappedin/mappedin-js";var Dt="[MappedinJS]";function _t(r="",{prefix:t=Dt}={}){let e="".concat(t).concat(r?"-".concat(r):""),i=s((n,a)=>{if(typeof window<"u"&&window.rnDebug){let h=a.map(u=>u instanceof Error&&u.stack?"".concat(u.message,"\n").concat(u.stack):u);window.rnDebug("".concat(r," ").concat(n,": ").concat(h.join(" ")))}},"rnDebug");return{logState:b.env.NODE_ENV==="test"?3:0,log(...n){this.logState<=0&&(console.log(e,...n),i("log",n))},warn(...n){this.logState<=1&&(console.warn(e,...n),i("warn",n))},error(...n){this.logState<=2&&(console.error(e,...n),i("error",n))},assert(...n){console.assert(...n)},time(n){console.time(n)},timeEnd(n){console.timeEnd(n)},setLevel(n){0<=n&&n<=3&&(this.logState=n)}}}s(_t,"createLogger");var Bo=_t();var Q=Bo;function io(r,t,e,i){return(r<t||r>e)&&Q.warn(i),Math.min(e,Math.max(t,r))}s(io,"clampWithWarning");function Nt(r,t){return!Io.is(r)||(r==null?void 0:r.floorStack)==null||!To.is(t)?!1:r.floorStack.id!==t.id?(Q.warn("Floor (".concat(r.id,") does not belong to floor stack (").concat(t.id,").")),!1):!0}s(Nt,"validateFloorForStack");function Lt(r,t,e,i){return io(r,t,e,"".concat(i," must be between ").concat(t," and ").concat(e,"."))}s(Lt,"validateZoomThreshold");var J=_t("",{prefix:"[DynamicFocus]"});var T,X,lt,Ct,Zt=class Zt{constructor(t,e){d(this,lt);p(this,"__type","outdoors");d(this,T);d(this,X);c(this,T,t),c(this,X,e)}get id(){return o(this,T).id}get floorStack(){return o(this,T)}get floor(){return o(this,T).defaultFloor}matchesFloorStack(t){return t===o(this,T)||t===o(this,T).id}show(){E(this,lt,Ct).call(this,!0)}hide(){E(this,lt,Ct).call(this,!1)}destroy(){this.matchesFloorStack(o(this,X).currentFloorStack)||this.hide()}};T=new WeakMap,X=new WeakMap,lt=new WeakSet,Ct=s(function(t){for(let e of o(this,T).floors)o(this,X).updateState(e,{visible:t})},"#setVisible"),s(Zt,"Outdoors");var wt=Zt;function ro(r,t){var h;let e=r.getByType("floor-stack"),i=e.find(u=>{var f;return((f=u.type)==null?void 0:f.toLowerCase())==="outdoor"}),n=(h=r.getByType("enterprise-venue"))==null?void 0:h.defaultFloor;if(n){let u=r.getById("floor",n);if(u)return u.floorStack}if(i)return i;let a=e.find(u=>u.facade==null&&!t.has(u.id));return a||(J.warn("No good candidate for the outdoor floor stack was found. Using the first floor stack."),e[0])}s(ro,"getOutdoorFloorStack");import{getMultiFloorState as Vo}from"@mappedin/mappedin-js";var no={indoorZoomThreshold:18,outdoorZoomThreshold:17,setFloorOnFocus:!0,autoFocus:!1,indoorAnimationOptions:{duration:150},outdoorAnimationOptions:{duration:150},autoAdjustFacadeHeights:!1,mode:"default-floor",preloadFloors:!0,customMultiFloorVisibilityState:Vo,dynamicBuildingInteriors:!0,dynamicLayers:[],isolateBelowGroundView:!1},ve=.2,we=.4;function Mo(r,t){return"".concat(t," ").concat(r)}s(Mo,"formatMessage");var Gt=class Gt extends Error{constructor(t,e=Dt){super(Mo(t,e)),this.name="MappedinError"}};s(Gt,"MappedinError");var kt=Gt;var xo=s(r=>r,"linearEase"),Oo=s(r=>r*r,"quadEaseIn"),Ao=s(r=>1-Math.cos(r*Math.PI/2),"easeIn"),Do=s(r=>1-(1-r)*(1-r),"quadEaseOut"),_o={linear:xo,"ease-in":Oo,"ease-out":Do,"ease-in-out":Ao};function No(r,t){let e=0;if(t.length<2)return e;let n=t[0]<t[1]?(a,h)=>a>h:(a,h)=>a<h;for(;e<t.length-1&&n(r,t[e+1]);)e++;return e>t.length-2?Math.max(0,t.length-2):e}s(No,"getInterpolationBreakpoint");function ao(r,t,e,i="ease-in"){if(t.length!==e.length)throw new kt("Input and output ranges must have the same number of values.");r=Math.max(t[0],Math.min(r,t[t.length-1]));let n=No(r,t),a=(r-t[n])/(t[n+1]-t[n]),h=typeof i=="function"?i(a):_o[i](a);return e[n]+h*(e[n+1]-e[n])}s(ao,"interpolateMulti");var V,ut,dt,x,ct,Rt=class Rt{constructor(t,e,i){p(this,"layers");p(this,"visible");d(this,V);d(this,ut,[]);d(this,dt,!1);d(this,x,new Map);p(this,"interpolationFn");d(this,ct,1);this.layers=t,this.visible=e,c(this,V,i)}processLayerGroup(t,e,i){if(!o(this,dt)&&(this.layers.forEach(n=>{let a=t[n];a&&o(this,ut).push(...a)}),c(this,dt,!0),this.visible)){let n=[e,i],a=[1,0];this.interpolationFn=h=>ao(h,n,a)}}setOpacity(t){var e,i,n;c(this,ct,t);for(let a of o(this,ut))if(a.startsWith("img_")){let h=o(this,V).Image3D.getById(a);if(h){let u=o(this,V).getState(h.image);o(this,x).has(a)||o(this,x).set(a,(e=u==null?void 0:u.opacity)!=null?e:1);let f=Math.min(o(this,x).get(a),t);o(this,V).updateState(h.image,{opacity:f})}}else{let h=(i=o(this,V).getMapData())==null?void 0:i.getById("space",a);if(!h)continue;let u=o(this,V).getState(h);o(this,x).has(a)||o(this,x).set(a,(n=u==null?void 0:u.opacity)!=null?n:1);let f=Math.min(o(this,x).get(a),t);o(this,V).updateState(h,{opacity:f,visible:f>0})}}get opacity(){return o(this,ct)}};V=new WeakMap,ut=new WeakMap,dt=new WeakMap,x=new WeakMap,ct=new WeakMap,s(Rt,"LayerGroup");var Bt=Rt;function Pt(r,t){r.forEach(e=>{if(e.interpolationFn!=null){let i=e.interpolationFn(t);i!=null&&(e.setOpacity(i),e.visible=i===1)}})}s(Pt,"runLayerGroupInterpolations");var k,l,L,m,j,U,y,O,$,Y,B,tt,ht,mt,ft,M,C,ot,Z,G,g,jt,lo,uo,Ut,pt,gt,Ft,yt,et,$t,co,ho,q,Yt=class Yt{constructor(t){d(this,g);d(this,k);d(this,l);d(this,L);d(this,m,no);d(this,j,[]);d(this,U,new Set);d(this,y,new Map);d(this,O);d(this,$,!1);d(this,Y,!1);d(this,B,0);d(this,tt,0);d(this,ht,[]);d(this,mt,{});d(this,ft,{});d(this,M,"transition");d(this,C,"outdoor");d(this,ot,[]);d(this,Z,!1);d(this,G,[]);p(this,"sceneUpdateQueue",Promise.resolve());p(this,"on",s((t,e)=>{o(this,k).on(t,e)},"on"));p(this,"off",s((t,e)=>{o(this,k).off(t,e)},"off"));d(this,pt,s(t=>{if(!this.isEnabled)return;let{facades:e}=t;if(Wt(e,this.focusedFacades)&&o(this,C)==="transition"&&!o(this,Y))return;c(this,Y,!1),c(this,j,[]),o(this,U).clear();let i=o(this,m).isolateBelowGroundView&&o(this,B)<0;if(e.length>0)for(let n of e){let a=o(this,y).get(n.floorStack.id);if(a){if(i&&a.minElevation>=0)continue;o(this,U).add(a.id),o(this,j).push(a)}}o(this,m).autoFocus&&this.focus()},"#handleFacadesInViewChange"));d(this,gt,s(async t=>{var n,a,h,u;if(!this.isEnabled)return;let{floor:e}=t,i=o(this,y).get(e.floorStack.id);if(i&&(i.activeFloor=e),(i==null?void 0:i.excluded)===!1&&!o(this,O).matchesFloorStack(e.floorStack)&&c(this,B,e.elevation),o(this,l).manualFloorVisibility===!0){t.reason!=="dynamic-focus"&&(await o(this,q).call(this,e),o(this,k).publish("focus",{facades:this.focusedFacades}));let f=(a=(n=i==null?void 0:i.floorsAltitudesMap.get(e.elevation))==null?void 0:n.altitude)!=null?a:0;o(this,l).options.multiFloorView!=null&&((h=o(this,l).options.multiFloorView)!=null&&h.enabled)&&((u=o(this,l).options.multiFloorView)!=null&&u.updateCameraElevationOnFloorChange)&&o(this,l).Camera.elevation!==f&&o(this,l).Camera.animateElevation(f,{duration:750,easing:"ease-in-out"})}},"#handleFloorChangeStart"));d(this,Ft,s(()=>{c(this,$,!0)},"#handleUserInteractionStart"));d(this,yt,s(()=>{c(this,$,!1)},"#handleUserInteractionEnd"));d(this,et,s(t=>{if(!this.isEnabled)return;let{zoomLevel:e}=t,i=Kt(e,o(this,m).indoorZoomThreshold,o(this,m).outdoorZoomThreshold);o(this,M)!==i&&(c(this,M,i),i==="in-range"?this.setIndoor():i==="out-of-range"&&this.setOutdoor()),Pt(o(this,G),e)},"#handleCameraChange"));d(this,q,s(async t=>{var u,f,P;if(o(this,l).manualFloorVisibility!==!0||!this.isEnabled)return;let e=t||o(this,l).currentFloor,i=o(this,l).options.multiFloorView,n=((f=(u=o(this,l).Navigation)==null?void 0:u.floors)==null?void 0:f.map(R=>R.id))||[],a=((P=o(this,l).Navigation)==null?void 0:P.floorStacks.map(R=>R.id))||[],h=new Promise(async R=>{var rt;await this.sceneUpdateQueue;let bt=Xt({buildings:Array.from(o(this,y).values()),inViewSet:o(this,U),currentFloor:e,zoomState:o(this,M),mode:o(this,m).mode,elevation:o(this,B),floorIdsInNavigation:n,floorStackIdsInNavigation:a,multiFloorView:i,getMultiFloorState:(rt=o(this,m).customMultiFloorVisibilityState)!=null?rt:Co,dynamicBuildingInteriors:o(this,m).dynamicBuildingInteriors,isolateBelowGroundView:o(this,m).isolateBelowGroundView,currentElevation:o(this,B)}),it=[];await Promise.all(Array.from(bt.values()).map(async A=>{let{building:D,showIndoor:F,floorStackState:H,facadeState:nt,inFocus:It}=A;it.push(H);let z=to(D,F);if(z==="indoor")return E(this,g,co).call(this,D,H,nt,It);if(z==="outdoor")return E(this,g,ho).call(this,D,H,nt,a)})),o(this,l).Outdoor.setOpacity(Qt(it,o(this,m).mode)),c(this,ot,o(this,j).filter(A=>{var D;return((D=bt.get(A.id))==null?void 0:D.showIndoor)===!0}).map(A=>A.facade)),o(this,k).publish("focus",{facades:o(this,ot)}),R()});return this.sceneUpdateQueue=h,h},"#applyBuildingStates"));c(this,k,new St),c(this,l,t),J.setLevel(Q.logState),c(this,L,o(this,l).getMapData()),c(this,B,o(this,l).currentFloor.elevation),c(this,tt,o(this,l).Camera.elevation);for(let e of o(this,L).getByType("facade"))o(this,y).set(e.floorStack.id,new Et(e.floorStack,o(this,l)));E(this,g,uo).call(this),c(this,O,new wt(ro(o(this,L),o(this,y)),o(this,l))),o(this,l).on("floor-change-start",o(this,gt)),o(this,l).on("camera-change",o(this,et)),o(this,l).on("facades-in-view-change",o(this,pt)),o(this,l).on("user-interaction-start",o(this,Ft)),o(this,l).on("user-interaction-end",o(this,yt))}enable(t){if(o(this,Z)){J.warn("enable() called on an already enabled Dynamic Focus instance.");return}c(this,Z,!0),o(this,l).manualFloorVisibility=!0,o(this,O).show(),this.updateState(_(_({},o(this,m)),t)),E(this,g,lo).call(this),o(this,et).call(this,{zoomLevel:o(this,l).Camera.zoomLevel,center:o(this,l).Camera.center,bearing:o(this,l).Camera.bearing,pitch:o(this,l).Camera.pitch}),o(this,l).Camera.updateFacadesInView()}disable(){if(!o(this,Z)){J.warn("disable() called on an already disabled Dynamic Focus instance.");return}c(this,Z,!1),o(this,l).manualFloorVisibility=!1}get isEnabled(){return o(this,Z)}get isIndoor(){return o(this,C)==="indoor"}get isOutdoor(){return o(this,C)==="outdoor"}get outdoorsFloorStack(){return o(this,O).floorStack}get layers(){return o(this,ht)}get layersBySpaceId(){return o(this,mt)}setIndoor(){c(this,C,"indoor"),c(this,M,"in-range"),E(this,g,jt).call(this)}setOutdoor(){c(this,C,"outdoor"),c(this,M,"out-of-range"),E(this,g,jt).call(this)}get focusedFacades(){return[...o(this,ot)]}getState(){return _({},o(this,m))}updateState(t){var i,n;let e=!1;t.indoorZoomThreshold!=null&&(t.indoorZoomThreshold=Lt(t.indoorZoomThreshold,(i=t==null?void 0:t.outdoorZoomThreshold)!=null?i:o(this,m).outdoorZoomThreshold,o(this,l).Camera.maxZoomLevel,"indoorZoomThreshold"),e=!0),t.outdoorZoomThreshold!=null&&(t.outdoorZoomThreshold=Lt(t.outdoorZoomThreshold,o(this,l).Camera.minZoomLevel,(n=t==null?void 0:t.indoorZoomThreshold)!=null?n:o(this,m).indoorZoomThreshold,"outdoorZoomThreshold"),e=!0),t.mode!=null&&(t.mode=eo.includes(t.mode)?t.mode:"default-floor"),t.autoAdjustFacadeHeights!=null&&(o(this,m).autoAdjustFacadeHeights=t.autoAdjustFacadeHeights),t.dynamicBuildingInteriors!=null&&t.dynamicBuildingInteriors!==o(this,m).dynamicBuildingInteriors&&(e=!0),t.isolateBelowGroundView!=null&&t.isolateBelowGroundView!==o(this,m).isolateBelowGroundView&&(e=!0),c(this,m,Object.assign({},o(this,m),Object.fromEntries(Object.entries(t).filter(([,a])=>a!=null)))),t.mode!=null&&t.preloadFloors&&E(this,g,Ut).call(this,t.mode),e&&o(this,q).call(this)}destroy(){this.disable(),o(this,l).off("facades-in-view-change",o(this,pt)),o(this,l).off("floor-change-start",o(this,gt)),o(this,l).off("camera-change",o(this,et)),o(this,l).off("user-interaction-start",o(this,Ft)),o(this,l).off("user-interaction-end",o(this,yt)),o(this,y).forEach(t=>t.destroy()),o(this,O).destroy(),o(this,k).destroy(),c(this,G,[])}async focus(t=o(this,m).setFloorOnFocus){if(t)if(oo(o(this,tt),o(this,l).Camera.elevation,o(this,$)))c(this,tt,o(this,l).Camera.elevation),c(this,Y,!0);else{let e=Jt(o(this,j),o(this,O),o(this,M)),i=e?vt(e,o(this,m).mode,o(this,B)):void 0;i&&i.id!==o(this,l).currentFloor.id&&o(this,l).setFloor(i,{context:"dynamic-focus"})}await o(this,q).call(this),o(this,k).publish("focus",{facades:this.focusedFacades})}preloadFloors(){E(this,g,Ut).call(this,o(this,m).mode)}setDefaultFloorForStack(t,e){if(!Nt(e,t))return;let i=o(this,y).get(t.id);i&&(i.defaultFloor=e)}resetDefaultFloorForStack(t){let e=o(this,y).get(t.id);e&&(e.defaultFloor=t.defaultFloor)}getDefaultFloorForStack(t){var e;return((e=o(this,y).get(t.id))==null?void 0:e.defaultFloor)||t.defaultFloor||t.floors[0]}setCurrentFloorForStack(t,e){if(!Nt(e,t))return;let i=o(this,y).get(t.id);i&&(i.activeFloor=e,o(this,q).call(this))}exclude(t){let e=Array.isArray(t)?t:[t];for(let i of e){let n=o(this,y).get(i.id);n&&(n.excluded=!0)}}include(t){let e=Array.isArray(t)?t:[t];for(let i of e){let n=o(this,y).get(i.id);n&&(n.excluded=!1)}}getCurrentFloorForStack(t){var e;return((e=o(this,y).get(t.id))==null?void 0:e.activeFloor)||this.getDefaultFloorForStack(t)}};k=new WeakMap,l=new WeakMap,L=new WeakMap,m=new WeakMap,j=new WeakMap,U=new WeakMap,y=new WeakMap,O=new WeakMap,$=new WeakMap,Y=new WeakMap,B=new WeakMap,tt=new WeakMap,ht=new WeakMap,mt=new WeakMap,ft=new WeakMap,M=new WeakMap,C=new WeakMap,ot=new WeakMap,Z=new WeakMap,G=new WeakMap,g=new WeakSet,jt=s(function(){o(this,m).autoFocus&&(o(this,$)?this.focus():c(this,Y,!0)),o(this,k).publish("state-change")},"#handleViewStateChange"),lo=s(function(){c(this,G,[]);for(let t of o(this,m).dynamicLayers){let e=new Bt([t],!0,o(this,l));e.processLayerGroup(o(this,ft),o(this,m).outdoorZoomThreshold,o(this,m).indoorZoomThreshold),o(this,G).push(e)}Pt(o(this,G),o(this,l).Camera.zoomLevel)},"#initializeLayerGroups"),uo=s(function(){var n,a,h;let t=(h=(a=(n=o(this,L).internal.mvf)==null?void 0:n.enterprise)==null?void 0:a.layers)!=null?h:[],e={},i={};t.forEach(u=>{e[u.name]||(e[u.name]=[]),e[u.name].push(...u.spaces.map(({spaceId:f})=>f));for(let{spaceId:f}of u.spaces)i[f]==null&&(i[f]=[]),i[f].push(u.name)}),c(this,ht,t.map(({name:u})=>u)),c(this,mt,i),c(this,ft,e)},"#setupLayers"),Ut=s(function(t){o(this,l).preloadFloors(o(this,L).getByType("facade").map(e=>vt(o(this,y).get(e.floorStack.id),t,o(this,B))).filter(e=>e!=null&&Lo.is(e)))},"#preloadFloors"),pt=new WeakMap,gt=new WeakMap,Ft=new WeakMap,yt=new WeakMap,et=new WeakMap,$t=s(function(t,e,i){t.forEach(n=>{if(n.floor)if(e){let a=i!==void 0?at(_({},n.state),{labels:at(_({},n.state.labels),{enabled:n.state.labels.enabled&&i}),markers:at(_({},n.state.markers),{enabled:n.state.markers.enabled&&i}),occlusion:at(_({},n.state.occlusion),{enabled:n.state.occlusion.enabled&&i})}):n.state;o(this,l).updateState(n.floor,a)}else o(this,l).updateState(n.floor,{visible:!1})})},"#updateFloorVisibility"),co=s(async function(t,e,i,n){return E(this,g,$t).call(this,e.floorStates,!0,n),t.animateFacade(i.state,o(this,m).indoorAnimationOptions)},"#animateIndoorSequence"),ho=s(async function(t,e,i,n){let a=await t.animateFacade(i.state,o(this,m).outdoorAnimationOptions);return a.result==="completed"&&E(this,g,$t).call(this,e.floorStates,At({building:t,currentFloor:o(this,l).currentFloor,inRange:o(this,M)==="in-range",inFocus:o(this,U).has(t.id),mode:o(this,m).mode,elevation:o(this,B),inNavigation:n.includes(t.floorStack.id),dynamicBuildingInteriors:o(this,m).dynamicBuildingInteriors})),a},"#animateOutdoorSequence"),q=new WeakMap,s(Yt,"DynamicFocus");var so=Yt;export{s as a,ve as b,we as c,so as d};