@minmaps-dev/mm-web-sdk 1.0.0-rc.6 → 1.0.0-rc.8
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.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +1 -1
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("maplibre-gl");function t(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(o){if("default"!==o){var i=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,i.get?i:{enumerable:!0,get:function(){return e[o]}})}}),t.default=e,Object.freeze(t)}var o=t(require("@turf/turf"));const i={ensureGeoJson(e,t){e.getSource(t)||e.addSource(t,{type:"geojson",data:{type:"FeatureCollection",features:[]}})},setData(e,t,o){const i=e.getSource(t);i?.setData?.(o)}},n="indoor-data",r="poi-data",s="unit-walls",a="route-data",l=["boundary-fill","boundary-outline","units-fill","units-wall-extrusion","units-wall-custom-extrusion","corridors-fill","corridors-outline","building-extrusion"],u=()=>{};function c(e){const t=Boolean(e?.enabled),o=function(e){const t=String(e||"").trim();return t?`[${t}]`:""}(e?.prefix||"MinuteMapsSDK");return t?{debug:(...e)=>console.debug(o,...e),log:(...e)=>console.log(o,...e),warn:(...e)=>console.warn(o,...e),error:(...e)=>console.error(o,...e)}:{debug:u,log:u,warn:u,error:u}}c({enabled:!0,prefix:"MinuteMapsSDK"});const d={applyFloor(e,t,o=1){d.updateWalls(e,t,o),d.updateIndoor(e,t,o)},updateIndoor(e,t,r=1){const s=function(e,t){if(!e)return{type:"FeatureCollection",features:[]};if(!Number.isFinite(t)||t<=0)return e;const i=(e.features||[]).map(e=>{const i=e?.properties?.featureType;if(!i||!p.has(i))return e;const n=e?.geometry?.type;if("Polygon"!==n&&"MultiPolygon"!==n)return e;try{const i=o.buffer(e,-t,{units:"feet"});return i?.geometry?{...e,geometry:i.geometry}:e}catch{return e}});return{...e,features:i}}(t.geojson,r);i.setData(e,n,s);try{const e=t?.geojson?.features||[],o={};for(const t of e){const e=t?.properties?.featureType,i=null==e?"(missing)":String(e);o[i]=(o[i]||0)+1}Object.entries(o).sort((e,t)=>t[1]-e[1]).slice(0,15)}catch{}},updateWalls(e,t,n=1){const r=function(e,t=1){const i=(e.features||[]).filter(e=>"Units"===e.properties?.featureType).map(e=>{try{const i=o.buffer(e,-t,{units:"feet"});if(!i)return null;const n={...e.properties,featureType:"UnitWalls"};if(null==n.custom_height){const e=n.customProperties?.custom_height??n.custom_height??n.height??n.wall_height,t="number"==typeof e?e:Number(e);Number.isFinite(t)&&(n.custom_height=t)}return{type:"Feature",geometry:{type:"Polygon",coordinates:[e.geometry.coordinates[0],i.geometry.coordinates[0]]},properties:n}}catch{return null}}).filter(Boolean);return{type:"FeatureCollection",features:i}}(t.geojson,n);i.setData(e,s,r)},boundsFromGeoJson(e){try{const[t,i,n,r]=o.bbox(e),s=Math.min(t,n),a=Math.max(t,n),l=Math.min(i,r);return[[s,l],[a,Math.max(i,r)]]}catch{return null}},selectDefaultFloor:e=>Array.isArray(e)&&0!==e.length&&(e.find(e=>e.isDefault)||e[0])||null,selectInitialFloor(e,t){if(!Array.isArray(e)||0===e.length)return null;if(null!=t){const o=e.find(e=>e.id===t);if(o)return o}return d.selectDefaultFloor(e)},async activateFloor(e,t,o){if(!e)throw new Error("activateFloor requires an initialized map");if(t?.geojson&&d.applyFloor(e,t,o.wallFeet),await o.updatePOIs(t),!t?.geojson)return void(e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom));const i=d.boundsFromGeoJson(t.geojson);if(!i)return;const n=!o.didFit;let r=n;if(!r){const[[t,o],[n,s]]=i,a=e.getBounds();r=a.getWest()>n||a.getEast()<t||a.getSouth()>s||a.getNorth()<o}r?(e.fitBounds(i,{padding:o.boundsPadding,animate:!n,duration:700,bearing:e.getBearing(),pitch:e.getPitch()}),e.once("moveend",()=>{e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom)}),o.setDidFit(!0),o.log?.("camera :: fitToFloor",{floorId:t.id,animated:!n})):(e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom),o.log?.("camera :: fit skipped (floor overlaps viewport)",{floorId:t.id}))}},p=new Set(["Restrooms","Back-of-house","Obstacles","Escalators","Stairs","Elevators"]);class f{floors=[];currentFloor=null;didFit=!1;getMap;getConfig;updatePoiSource;logFn;constructor(e){this.getMap=e.getMap,this.getConfig=e.getConfig,this.updatePoiSource=e.updatePoiSource,this.logFn=e.log}log(...e){this.logFn&&this.logFn(...e)}setFloors(e){this.floors=e}getFloors(){return[...this.floors]}getCurrentFloor(){return this.currentFloor}setDidFit(e){this.didFit=e}getDefaultFloor(){return d.selectDefaultFloor(this.floors)}getInitialFloor(){const e=this.getConfig();return d.selectInitialFloor(this.floors,e.options?.initialFloor)}async setCurrentFloor(e){const t=this.getMap();if(!t)throw new Error("Map is not initialized");this.currentFloor=e,this.log("floor :: setCurrentFloor",{id:e.id,name:e.name,geojsonFeatures:e.geojson?.features?.length??0});const o=this.getConfig(),i=o.options?.wallThickness??1,n=o.options?.boundsPadding??50,r=o.options?.minIndoorZoom??16.5;await d.activateFloor(t,e,{wallFeet:i,updatePOIs:e=>this.updatePoiSource(e),didFit:this.didFit,setDidFit:e=>{this.didFit=e},boundsPadding:n,minIndoorZoom:r,log:(e,t)=>this.log(e,t)})}}const g=c({enabled:!0,prefix:"MinuteMapsSDK"}),h=new Map,y={async getSpriteKeys(e){const t=function(e){if(!e)return;if("string"==typeof e)return e;if(Array.isArray(e)){const t=e[0];if(t&&"string"==typeof t.url)return t.url}if("object"==typeof e&&null!==e){const t=e?.url;if("string"==typeof t)return t}return}(e?.getStyle?.()?.sprite);if(!t||"function"!=typeof fetch)return new Set;const o=t.endsWith(".json")?t:`${t}.json`;if(h.has(o))return h.get(o);try{const e=await fetch(o);if(!e.ok)throw new Error(`Failed to load sprite JSON (${e.status})`);const t=await e.json(),i=new Set(Object.keys(t||{}));return h.set(o,i),i}catch(e){g.warn("sprite fetch failed",o,e);const t=new Set;return h.set(o,t),t}}};const m="units-outline-2d",w=["units-wall-extrusion","units-wall-custom-extrusion"];class b{getMap;is3dEnabled=!0;isUnits2dEnabled=!1;isFlatMode=!1;cachedExtrusionIds=null;extrusionOriginalVisibility=null;unitsExtrusionOriginalVisibility=null;unitsOutlineOriginalVisibility=null;constructor(e){this.getMap=e}onStyleData(){if(this.map){if(this.cachedExtrusionIds=null,!this.is3dEnabled){const e=this.listExtrusionLayerIds();this.setLayersVisibility(e,"none")}this.isUnits2dEnabled&&this.applyUnits2dVisibility(!0)}}set3dEnabled(e){const t=this.map;if(!t)return;const o=this.listExtrusionLayerIds();if(this.cachedExtrusionIds=o,!this.extrusionOriginalVisibility){const e={};o.forEach(o=>{try{const i=t.getLayoutProperty(o,"visibility")||"visible";e[o]=i}catch{e[o]="visible"}}),this.extrusionOriginalVisibility=e}if(e){const e=this.extrusionOriginalVisibility||{};o.forEach(o=>{const i=e[o]??"visible";try{t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i)}catch{}})}else this.setLayersVisibility(o,"none");this.is3dEnabled=e,t.triggerRepaint()}toggle3d(){this.set3dEnabled(!this.is3dEnabled)}getIs3dEnabled(){return this.is3dEnabled}setUnits2dEnabled(e){const t=this.map;t&&(this.applyUnits2dVisibility(e),this.isUnits2dEnabled=e,t.triggerRepaint())}toggleUnits2d(){this.setUnits2dEnabled(!this.isUnits2dEnabled)}getIsUnits2dEnabled(){return this.isUnits2dEnabled}setFlatMode(e){this.map&&(e?(this.set3dEnabled(!1),this.setUnits2dEnabled(!0)):(this.setUnits2dEnabled(!1),this.set3dEnabled(!0)),this.isFlatMode=e)}toggleFlatMode(){this.setFlatMode(!this.isFlatMode)}getIsFlatMode(){return this.isFlatMode}applyUnits2dVisibility(e){const t=this.map;if(t){if(!this.unitsExtrusionOriginalVisibility){const e={};w.forEach(o=>{try{const i=t.getLayoutProperty(o,"visibility")||"visible";e[o]=i}catch{e[o]="visible"}}),this.unitsExtrusionOriginalVisibility=e}if(null==this.unitsOutlineOriginalVisibility)try{const e=t.getLayoutProperty(m,"visibility");this.unitsOutlineOriginalVisibility=e??"none"}catch{this.unitsOutlineOriginalVisibility="none"}if(t.getLayer(m)){const o=e?"visible":this.unitsOutlineOriginalVisibility??"none";try{t.setLayoutProperty(m,"visibility",o)}catch{}}if(e)w.forEach(e=>{if(t.getLayer(e))try{t.setLayoutProperty(e,"visibility","none")}catch{}});else{const e=this.unitsExtrusionOriginalVisibility||{};w.forEach(o=>{const i=e[o]??"visible";if(t.getLayer(o))try{t.setLayoutProperty(o,"visibility",i)}catch{}})}}}listExtrusionLayerIds(){const e=this.map;if(!e)return[];try{const t=e.getStyle(),o=t?.layers||[],i=o.filter(e=>"fill-extrusion"===e?.type).map(e=>e.id),n=Array.isArray(l)?l:[],r=[];return n.forEach(e=>{const t=o.find(t=>t.id===e);t&&"fill-extrusion"===t.type&&r.push(e)}),[...new Set([...i,...r])]}catch{return this.cachedExtrusionIds||[]}}setLayersVisibility(e,t){const o=this.map;o&&e.forEach(e=>{try{o.getLayer(e)&&o.setLayoutProperty(e,"visibility",t)}catch{}})}get map(){return this.getMap()}}function F(e){if(!e)return null;const t=e.getCenter(),o=(e,t=6)=>function(e,t=6){const o=Number(e.toFixed(t));return Object.is(o,-0)?0:o}(e,t);return{center:[o(t.lng),o(t.lat)],zoom:o(e.getZoom(),4),pitch:o(e.getPitch(),2),bearing:o(e.getBearing(),2)}}const x={async updatePOIs(e,t,o){const[n,s]=await Promise.all([o.getAmenities(t.id),o.getDestinations(t.id)]),a=x.buildPOIs(t,n,s,o.spriteKeys);i.setData(e,r,x.toFeatureCollection(a))},buildPOIs(e,t=[],o=[],i){const n=e?.id;if(!n)return[];const r=[];let s=!1;for(const o of t||[]){if(!o.waypoints)continue;const t=C(o),a=A(o.svg,i)||void 0,l="you-are-here";for(const i of o.waypoints||[]){if(i.mapId!==n||!v(i.coordinates))continue;const[u,c]=i.coordinates,d=t&&!s,p=d?l:a,f=i.id??i._?.id;r.push({id:o.id,type:"amenity",name:d?"You are here":o.name||"Amenity",coordinates:[u,c],iconId:p,floorId:e.id,amenityType:o.type,keywords:o.keywords||[],showLabel:!0,isYouAreHere:d,waypointId:f,waypoint:i}),d&&(s=!0)}}for(const t of o||[])if(t.waypoints)for(const o of t.waypoints||[]){if(o.mapId!==n||!v(o.coordinates))continue;const[i,s]=o.coordinates,a=o.id??o._?.id;r.push({id:t.id,type:"destination",name:t.name||"Destination",coordinates:[i,s],floorId:e.id,showLabel:!0,waypointId:a,waypoint:o})}return r},toFeatureCollection:e=>({type:"FeatureCollection",features:e.map(e=>({type:"Feature",geometry:{type:"Point",coordinates:e.coordinates},properties:{id:e.id,name:e.name,poiType:e.type,iconId:e.iconId,floorId:e.floorId,keywords:e.keywords,amenityType:e.amenityType,showLabel:!1!==e.showLabel,isYouAreHere:!0===e.isYouAreHere}}))})};function I(e){return e.find(e=>e.isYouAreHere)||null}function v(e){return Array.isArray(e)&&e.length>=2}function A(e,t){if(!e||!t)return null;const o=/<svg[^>]*\bid\s*=\s*["']([^"']+)["']/i.exec(e),i=o?.[1];return i&&t.has(i)?i:null}function C(e){const t=e=>(e??"").toLowerCase(),o=t(e.name),i=(e.keywords||[]).map(e=>t(e)),n=e.extensors||{},r=t(n.type),s="kiosk"===o||o.includes("kiosk"),a=i.some(e=>e.includes("kiosk"));return s||a||"assistance"===r}class S{deps;routeAnimationFrame=null;routeAnimationStart=null;routeAnimationDurationMs=1200;routeActive=!1;constructor(e){this.deps=e}buildWayfindFeatureCollection(e){if(!e)return this.deps.warn?.("wayfind :: no result"),null;const t=[],o=e=>{if(!e)return;const o=e.coordinates||e.xyz||e._?.coordinates;if(Array.isArray(o)&&o.length>=2){const e=Number(o[0]),i=Number(o[1]);Number.isFinite(e)&&Number.isFinite(i)&&t.push([e,i])}};return Array.isArray(e)?e.length>0&&Array.isArray(e[0]?.points)?e[0].points.forEach(o):e.forEach(o):Array.isArray(e.points)?e.points.forEach(o):Array.isArray(e.path)?e.path.forEach(o):Array.isArray(e.paths?.[0]?.points)&&e.paths[0].points.forEach(o),t.length<2?(this.deps.warn?.("wayfind :: not enough coordinates to draw a route",{resultShape:{isArray:Array.isArray(e),hasPoints:Array.isArray(e.points),hasPath:Array.isArray(e.path),hasPaths0Points:Array.isArray(e.paths?.[0]?.points)},extractedCount:t.length}),null):(this.deps.log?.("wayfind :: extracted coordinates for route",{count:t.length,first:t[0],last:t[t.length-1]}),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:t},properties:{}}]})}async wayfindBetweenWaypoints(e,t,o){const n=this.deps.getMap();if(!this.deps.getVenue()||!n)return this.deps.warn?.("wayfindBetweenWaypoints :: venue or map not ready"),null;let r=null;try{r=await this.deps.computeRoute(e,t)}catch(e){return this.deps.warn?.("wayfind :: computeRoute failed",e),null}this.deps.log?.("wayfind :: result",r);const s=this.buildWayfindFeatureCollection(r);if(!s)return r;i.setData(n,a,s),this.deps.log?.("wayfind :: route source updated",{featureCount:s.features.length}),this.startRouteAnimation();const l=o?.centerMode??"route",u=o?.zoom??19;if("none"!==l){const e=s.features[0]?.geometry;if(e&&"LineString"===e.type&&Array.isArray(e.coordinates)){const t=e.coordinates;if("destination"===l){const e=t[t.length-1];n.flyTo({center:e,zoom:u,pitch:45,bearing:0,animate:!0,duration:900})}else if("route"===l){const e=t.map(e=>e[0]),o=t.map(e=>e[1]),i=Math.min(...e),r=Math.max(...e),s=[[i,Math.min(...o)],[r,Math.max(...o)]];n.fitBounds(s,{padding:this.deps.getBoundsPadding(),animate:!0})}}}return r}async navigateFromKioskToDestination(e){const t=this.deps.getMap(),o=this.deps.getVenue();if(!t||!o)return null;const i=this.deps.getYouAreHerePOI();if(!i||!i.waypoint)return this.deps.warn?.("navigateFromKioskToDestination :: no you-are-here waypoint available",i),null;const n=e.waypoint||e.waypoints?.[0];if(!n)return this.deps.warn?.("navigateFromKioskToDestination :: destination has no waypoint",e),null;this.deps.log?.("navigateFromKioskToDestination :: from kiosk to destination",{kioskWaypoint:i.waypoint,destWaypoint:n});const r=this.deps.getYouAreHereCoordinates()??i.waypoint?.coordinates,s=n.coordinates||n.xyz||n._?.coordinates,a=Array.isArray(s)&&s.length>=2?[Number(s[0]),Number(s[1])]:null;return r&&a?this.showRouteContext(r,a):this.deps.warn?.("navigateFromKioskToDestination :: could not derive endpoint coordinates",{fromCoords:r,rawDest:s}),this.wayfindBetweenWaypoints(i.waypoint,n,{centerMode:"route"})}clearRoute(){const e=this.deps.getMap();if(!e)return;this.stopRouteAnimation();i.setData(e,a,{type:"FeatureCollection",features:[]}),this.deps.log?.("wayfind :: route cleared")}setPoiLayersVisible(e){const t=this.deps.getMap();if(!t)return;const o=e?"visible":"none";["poi-accessibility-icons","poi-destination-circles","poi-destination-labels","poi-entrance-exit-icons","poi-parking-icons","poi-other-amenity-icons"].forEach(e=>{t.getLayer(e)&&t.setLayoutProperty(e,"visibility",o)})}updateRouteEndpoints(e,t){const o=this.deps.getMap();if(!o)return;const i=o.getSource("route-endpoints");if(!i)return;const n={type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:e},properties:{role:"source"}},{type:"Feature",geometry:{type:"Point",coordinates:t},properties:{role:"destination"}}]};i.setData(n)}clearRouteEndpoints(){const e=this.deps.getMap();if(!e)return;const t=e.getSource("route-endpoints");if(!t)return;t.setData({type:"FeatureCollection",features:[]})}showRouteContext(e,t){this.updateRouteEndpoints(e,t)}hideRouteContext(){this.setPoiLayersVisible(!0),this.clearRouteEndpoints()}startRouteAnimation(){if(!this.deps.getMap())return;if("undefined"==typeof window)return;null!=this.routeAnimationFrame&&(cancelAnimationFrame(this.routeAnimationFrame),this.routeAnimationFrame=null),this.routeAnimationStart=performance.now(),this.routeActive=!0;const e=this.deps.debug,t=o=>{const i=this.deps.getMap();if(!i||!this.routeActive||null==this.routeAnimationStart)return;const n=o-this.routeAnimationStart,r=Math.min(1,n/this.routeAnimationDurationMs),s=Math.max(.001,r);e&&this.deps.log?.("route animation frame",{t:r,clamped:s});const a=Math.max(0,s-.01),l=Math.min(1,s+.01),u=["interpolate",["linear"],["line-progress"],0,"rgba(0,122,255,1.0)",a,"rgba(0,122,255,1.0)",l,"rgba(0,122,255,0.0)",1,"rgba(0,122,255,0.0)"],c=["interpolate",["linear"],["line-progress"],0,"rgba(255,255,255,0.7)",a,"rgba(255,255,255,0.7)",l,"rgba(255,255,255,0.0)",1,"rgba(255,255,255,0.0)"];i.getLayer("route-line")&&i.setPaintProperty("route-line","line-gradient",u),i.getLayer("route-halo")&&i.setPaintProperty("route-halo","line-gradient",c),this.routeAnimationFrame=r<1?requestAnimationFrame(t):null};this.routeAnimationFrame=requestAnimationFrame(t)}stopRouteAnimation(){this.routeActive=!1,null!=this.routeAnimationFrame&&"undefined"!=typeof window&&cancelAnimationFrame(this.routeAnimationFrame),this.routeAnimationFrame=null,this.routeAnimationStart=null;const e=this.deps.getMap();e&&(e.getLayer("route-line")&&(e.setPaintProperty("route-line","line-gradient",void 0),e.setPaintProperty("route-line","line-color","#007aff")),e.getLayer("route-halo")&&(e.setPaintProperty("route-halo","line-gradient",void 0),e.setPaintProperty("route-halo","line-color","#ffffff")))}}class E{getVenue;getFloors;getFloorById;logFn;constructor(e){this.getVenue=e.getVenue,this.getFloors=e.getFloors,this.getFloorById=e.getFloorById,this.logFn=e.log}get venue(){return this.getVenue()}log(...e){this.logFn&&this.logFn(...e)}loadForFloor(e){if(!e||!this.venue)return[];try{const t=this.venue.amenities?.getByMap(e.id)||[];return Array.isArray(t)?t.map(t=>{const o=t;return o.floorId=e.id,o}):[]}catch{return[]}}getAll(){return this.getFloors().flatMap(e=>this.loadForFloor(e))}getByFloorId(e){const t=this.getFloorById(e);return t?this.loadForFloor(t):[]}getAllKiosks(){return this.getAll().filter(e=>C(e))}getKioskForFloor(e){const t=this.getFloorById(e);if(!t)return null;return this.loadForFloor(t).find(e=>C(e))??null}logKioskForFloor(e){const t=this.getFloorById(e);if(!t)return;const o=this.getKioskForFloor(e);o?this.log("amenity :: kiosk found",{floorId:t.id,id:o.id,name:o.name,keywords:o.keywords,waypoints:o.waypoints,raw:o}):this.log("amenity :: kiosk not found on floor",{floorId:t.id})}}c({enabled:!0,prefix:"MinuteMapsSDK"});class M{mode;proxyBaseUrl;direct;fetchImpl;tokenCache=null;constructor(e){const t="undefined"!=typeof window?window:globalThis,o=e.fetchImpl??t.fetch;if("function"!=typeof o)throw new Error("Fetch API is not available in this environment");this.fetchImpl=o.bind(t),this.mode=e.mode,this.proxyBaseUrl=("proxy"===e.mode?e.proxyBaseUrl:void 0)||"/api/jacs","direct"===e.mode?this.direct={host:this.normalizeHost(e.host),clientId:e.clientId,username:e.username,password:e.password}:this.direct=null}async getPolygonLayers(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/polygon-layer`,o=await this.getJson(t);return this.extractArray(o)}async getFloorMapTemplate3d(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor/${encodeURIComponent(String(e.floorId))}/map-template/3d`,o=await this.getJson(t);return this.extractArray(o)}async getFloors(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor`,o=await this.getJson(t);return this.extractArray(o)}async getVenueAll(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/all`,o=await this.getJson(t),i=o?.data||o?.result||o;if(!i||"object"!=typeof i)throw new Error("JACS venue/all response was not a JSON object");return i}async getVenue(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}`,o=await this.getJson(t),i=o?.venue||o?.data||o;if(!i||"object"!=typeof i)throw new Error("JACS venue response was not a JSON object");return i}async getFloorMapGeojson(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor/${encodeURIComponent(String(e.floorId))}/map/geojson`,o=await this.getJson(t),i=o?.geojson||o?.data||o;if(!i||"FeatureCollection"!==i.type||!Array.isArray(i.features))throw new Error("JACS floor geojson did not look like a GeoJSON FeatureCollection");return i}async getBuildingFull(e){const t=new URLSearchParams;t.set("mapProfile",String(e.mapProfile??"public")),t.set("geojson",String(e.geojson??!0));const o=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/full?${t.toString()}`,i=await this.getJson(o),n=i?.data||i?.result||i;if(!n||"object"!=typeof n)throw new Error("JACS building full response was not a JSON object");return n}async getDestinations(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/destination`,o=await this.getJson(t);return this.extractArray(o)}async getAmenities(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/amenity`,o=await this.getJson(t);return this.extractArray(o)}async getBuildings(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building`,o=await this.getJson(t);return this.extractArray(o)}async getStylesheet3d(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/stylesheet/3d`,o=await this.getJson(t),i=o?.style||o?.data||o;if(!i||"object"!=typeof i)throw new Error("JACS stylesheet response was not a JSON object");return i}invalidateToken(){this.tokenCache=null}async getJson(e){if("proxy"===this.mode){const t=this.proxyBaseUrl.replace(/\/+$/,""),o=e.startsWith("/")?e:`/${e}`,i=await this.fetchImpl(`${t}${o}`,{method:"GET",headers:{Accept:"application/json"}});if(!i.ok){const e=await this.safeReadText(i);throw new Error(`JACS proxy GET failed (${i.status} ${i.statusText}) :: ${e}`)}return await i.json()}const t=this.direct;if(!t)throw new Error("JacsProvider is not configured for direct mode");const o=await this.getJwtToken(),i=this.joinUrl(t.host,e),n=await this.fetchImpl(i,{method:"GET",headers:{Authorization:`Bearer ${o}`,Accept:"application/json"}});if(!n.ok){const e=await this.safeReadText(n);throw new Error(`JACS GET failed (${n.status} ${n.statusText}) :: ${e}`)}return await n.json()}extractArray(e){return(Array.isArray(e)?e:null)||(Array.isArray(e?.data)?e.data:null)||(Array.isArray(e?.items)?e.items:null)||(Array.isArray(e?.results)?e.results:null)||[]}async getJwtToken(){const e=this.direct;if(!e)throw new Error("getJwtToken should not be called in proxy mode");const t=Date.now(),o=this.tokenCache;if(o?.token&&t<o.expiresAtMs-3e4)return o.token;const i=this.joinUrl(e.host,"/auth/token"),n=new URLSearchParams;n.set("grant_type","password"),n.set("client_id",e.clientId),n.set("username",e.username),n.set("password",e.password);const r=await this.fetchImpl(i,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:n.toString()});if(!r.ok){const e=await this.safeReadText(r);throw new Error(`JACS auth failed (${r.status} ${r.statusText}) :: ${e}`)}const s=await r.json(),a=s?.access_token||s?.token||s?.jwt||s?.accessToken;if(!a)throw new Error("JACS auth response did not contain a token");const l=s?.expires_in??s?.expiresIn??s?.expires??s?.ttl,u="number"==typeof l?l:Number(l),c=Number.isFinite(u)&&u>0?u:600;return this.tokenCache={token:a,expiresAtMs:Date.now()+1e3*c},a}normalizeHost(e){return String(e||"").replace(/\/+$/,"")}joinUrl(e,t){const o=this.normalizeHost(e),i=String(t||"");return i?`${o}${i.startsWith("/")?"":"/"}${i}`:o}async safeReadText(e){try{return await e.text()}catch{return""}}}const k=c({enabled:!0,prefix:"MinuteMapsSDK jacs"});class z{config;jacs;floors=[];buildingId=null;destinationsByMapId=new Map;amenitiesByMapId=new Map;venueLike=null;async init(e){this.config=e;const t=e.jacs;if(!t?.mode)throw new Error("config.jacs.mode is required");if("proxy"!==t.mode){if(!t.host)throw new Error("config.jacs.host is required (direct mode)");if(!t.auth?.clientId)throw new Error("config.jacs.auth.clientId is required (direct mode)");if(!t.auth?.username)throw new Error("config.jacs.auth.username is required (direct mode)");if(!t.auth?.password)throw new Error("config.jacs.auth.password is required (direct mode)");this.jacs=new M({mode:"direct",host:t.host,clientId:t.auth.clientId,username:t.auth.username,password:t.auth.password})}else this.jacs=new M({mode:"proxy",proxyBaseUrl:t.proxyBaseUrl||"/api/jacs"})}async loadVenue(){const e=this.config.jmap.customerId,t=this.config.jmap.venueId;if(null==e)throw new Error("config.jmap.customerId is required");if(null==t)throw new Error("config.jmap.venueId is required");const o=await this.jacs.getVenueAll({customerId:e,venueId:t}),i=Array.isArray(o?.buildings)?o.buildings:[],n=i[0],r=n?.id??n?.buildingId;if(!n||!r)throw new Error("No buildings found for this venue in /all response");this.buildingId=r;const s=Array.isArray(o?.waypoints)?o.waypoints:[],a=Array.isArray(o?.destinations)?o.destinations:[],l=Array.isArray(o?.amenities)?o.amenities:[],u=new Map;for(const e of s){const t=e?.mapId;if(null==t)continue;const o=u.get(t)??[];o.push(e),u.set(t,o)}const c=Array.isArray(n?.floors)?n.floors:[],d=n?.defaultFloorId,p=c.map(e=>{const t=e.map?.id??e.mapId;return{id:e.id,name:e.name??e.shortName??String(e.id),sequence:e.level??e.preference,isDefault:e.id===d,geojson:void 0,mapTemplate3d:[],_waypoints:null!=t?u.get(t)??[]:[]}});this.floors=p,this.amenitiesByMapId.clear();for(const e of l)for(const t of e?.waypoints??[]){const o=t?.mapId;if(null==o)continue;const i=this.amenitiesByMapId.get(o)??[];i.push(e),this.amenitiesByMapId.set(o,i)}this.destinationsByMapId.clear();for(const e of a)for(const t of e?.waypoints??[]){const o=t?.mapId;if(null==o)continue;const i=this.destinationsByMapId.get(o)??[];i.push(e),this.destinationsByMapId.set(o,i)}const f=o?.venue??{};return this.venueLike={...f,floors:p,polygonLayers:[],destinations:{items:[...a],getByMap:({id:e})=>this.destinationsByMapId.get(e)??[]},amenities:{items:[...l],getByMap:({id:e})=>this.amenitiesByMapId.get(e)??[]},buildings:{items:[...i],getAllFloors:()=>this.floors},styleSheet:null},this.venueLike}async ensureFloorGeojson(e){if(e.geojson)return;const t=this.config.jmap.customerId,o=this.config.jmap.venueId;try{const i=await this.jacs.getFloorMapGeojson({customerId:t,venueId:o,buildingId:this.buildingId,floorId:e.id});e.geojson=function(e){return(e?.type?e:e?.data)??null}(i)}catch(t){k.warn("floor geojson fetch failed",{floorId:e.id,e:t})}}async preloadRemainingFloors(){const e=this.floors.filter(e=>!e.geojson);0!==e.length&&(await Promise.all(e.map(e=>this.ensureFloorGeojson(e))),k.debug("preloaded geojson for remaining floors",{count:e.length}))}async getFloors(){return this.floors}async getAmenities(e){return this.amenitiesByMapId.get(e)??[]}async getDestinations(e){return this.destinationsByMapId.get(e)??[]}}class B{handlers=new Map;on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t)}off(e,t){t?this.handlers.get(e)?.delete(t):this.handlers.delete(e)}emit(e,t){this.handlers.get(e)?.forEach(e=>{try{e(t)}catch{}})}}var j={version:8,name:"Hospital Indoor Mapping - Hybrid Style Healthcare Compliant",metadata:{description:"Accessibility-focused hospital navigation with proper healthcare standards",author:"Hospital Mapping Team",version:"7.1.0"},sprite:"http://localhost:4000/sprites/sprite",glyphs:"https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",sources:{"osm-tiles":{type:"raster",tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256,attribution:"© OpenStreetMap contributors"},"indoor-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"poi-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"accessibility-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"unit-walls":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"route-data":{type:"geojson",data:{type:"FeatureCollection",features:[]},lineMetrics:!0},"route-endpoints":{type:"geojson",data:{type:"FeatureCollection",features:[]}}},layers:[{id:"background",type:"background",paint:{"background-color":"#F5F5F5"}},{id:"osm",type:"raster",source:"osm-tiles",minzoom:0,paint:{"raster-opacity":["interpolate",["linear"],["zoom"],14,.8,16,.6,18,.4]}},{id:"pattern-water",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Water"],paint:{"fill-color":"#5DADE2","fill-opacity":.6}},{id:"pattern-grass",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Grass"],paint:{"fill-color":"#7CB342","fill-opacity":.5}},{id:"pattern-trees",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Trees"],paint:{"fill-color":"#4CAF50","fill-opacity":.4}},{id:"pattern-pavement",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Pavement"],paint:{"fill-color":"#E0E0E0","fill-opacity":.6}},{id:"pattern-outdoor-terrace",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-OutdoorTerrace"],paint:{"fill-color":"#8D6E63","fill-opacity":.3}},{id:"parking-lots",type:"fill",source:"indoor-data",filter:["==",["get","featureType"],"Parking-Lots"],paint:{"fill-color":"#BDBDBD","fill-opacity":.6}},{id:"parking-lots-outline",type:"line",source:"indoor-data",filter:["==",["get","featureType"],"Parking-Lots"],paint:{"line-color":"#757575","line-width":1,"line-dasharray":[3,2]}},{id:"boundary-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"fill-color":"#FAF3E2","fill-opacity":1}},{id:"building-roof-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"fill-color":"#162e51","fill-opacity":1}},{id:"corridors-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],paint:{"fill-color":"#F0E6D1"}},{id:"accessible-routes",type:"line",source:"accessibility-data",minzoom:16.5,filter:["==",["get","accessible"],!0],paint:{"line-color":"#2E7D32","line-width":["interpolate",["linear"],["zoom"],15,2,18,3,20,4],"line-dasharray":[.5,1],"line-opacity":.7}},{id:"units-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Units"],paint:{"fill-color":["case",["has","category"],["match",["get","category"],"healthcare","#7C3AED","emergency","#DC2626","diagnostic","#0EA5E9","surgical","#7C3AED","retail","#FF6B6B","fnb","#FFA500","admin","#A29BFE","amenities","#48C9B0","staff","#74B9FF","security","#1A7A96","waiting","#E1BEE7","#8ecae6"],"#8ecae6"],"fill-opacity":["interpolate",["linear"],["zoom"],15,.85,17,.92,19,.95]}},{id:"units-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Units"],layout:{visibility:"none","line-join":"round","line-cap":"round"},paint:{"line-color":"#162e51","line-opacity":.9,"line-width":["interpolate",["linear"],["zoom"],16,.8,18,1.4,20,2.2]}},{id:"backofhouse-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"fill-color":"#D6D6CC","fill-opacity":.7}},{id:"backofhouse-pattern",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"line-color":"#90A4AE","line-width":.5,"line-opacity":.4}},{id:"backofhouse-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#7B8D93","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"restrooms-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],paint:{"fill-color":"#5B8468","fill-opacity":1}},{id:"restrooms-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#3F5D4A","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"obstacles-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],paint:{"fill-color":"#E8E9ED","fill-opacity":.85}},{id:"obstacles-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#B0B1B5","line-width":["interpolate",["linear"],["zoom"],16,.5,18,.9,20,1.2],"line-opacity":.9}},{id:"escalators-stairs-elevators",type:"fill",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],paint:{"fill-color":"#6A8799","fill-opacity":1}},{id:"escalators-stairs-elevators-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#455A64","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"exits-doors",type:"fill",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Exits","Doors","Exit","Door"]]],paint:{"fill-color":"#4CAF50","fill-opacity":.6}},{id:"kiosks-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Kiosks"],paint:{"fill-color":"#9C27B0","fill-opacity":.7}},{id:"pattern-lounge",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Lounge"],paint:{"fill-color":"#CE93D8","fill-opacity":.5}},{id:"pattern-indoor-foodcourt",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-IndoorFoodcourt"],paint:{"fill-color":"#FFCC80","fill-opacity":.6}},{id:"corridors-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],paint:{"line-color":"#BCAAA4","line-width":["interpolate",["linear"],["zoom"],15,.5,18,1,20,1.5]}},{id:"boundary-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"line-color":"#263238","line-width":["interpolate",["linear"],["zoom"],12,2,15,2.5,18,3,20,3.5],"line-opacity":["interpolate",["linear"],["zoom"],12,.7,17,.85,18,1]}},{id:"building-roof-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#face00","line-width":["interpolate",["linear"],["zoom"],15,1.6,18,2.4,20,3.2],"line-opacity":.95}},{id:"interior-parking-lots",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"fill-color":"#757575","fill-opacity":.8}},{id:"interior-parking-lots-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"line-color":"#616161","line-width":1.5}},{id:"building-extrusion",type:"fill-extrusion",source:"indoor-data",filter:["==",["get","featureType"],"Boundary"],maxzoom:16.5,paint:{"fill-extrusion-color":"#162e51","fill-extrusion-height":15,"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"units-wall-extrusion",type:"fill-extrusion",source:"unit-walls",minzoom:16.5,filter:["all",["==",["get","featureType"],"UnitWalls"],["!",["has","custom_height"]]],paint:{"fill-extrusion-color":["case",["has","category"],["match",["get","category"],"healthcare","#5B2DB8","emergency","#B91C1C","diagnostic","#0C7FAB","surgical","#5B2DB8","retail","#CC5555","fnb","#CC8400","admin","#7B73CC","amenities","#3A9B88","staff","#5C96CC","security","#135C75","waiting","#B894C2","#eeeeee"],"#eeeeee"],"fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!1,"fill-extrusion-opacity":.9}},{id:"units-wall-custom-extrusion",type:"fill-extrusion",source:"unit-walls",minzoom:16.5,filter:["has","custom_height"],paint:{"fill-extrusion-color":["case",["has","category"],["match",["get","category"],"healthcare","#5B2DB8","emergency","#B91C1C","diagnostic","#0C7FAB","surgical","#5B2DB8","retail","#CC5555","fnb","#CC8400","admin","#7B73CC","amenities","#3A9B88","staff","#5C96CC","security","#135C75","waiting","#B894C2","#FDFAF2"],"#FDFAF2"],"fill-extrusion-height":["to-number",["get","custom_height"]],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!1,"fill-extrusion-opacity":.95}},{id:"corridors-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],layout:{visibility:"none"},paint:{"fill-extrusion-color":"#FFF8E1","fill-extrusion-height":["step",["zoom"],0,18,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":["step",["zoom"],0,18,.85]}},{id:"backofhouse-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"fill-extrusion-color":"#D6D6CC","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"restrooms-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],paint:{"fill-extrusion-color":"#5B8468","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":.9}},{id:"obstacles-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],paint:{"fill-extrusion-color":"#E8E9ED","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,.8,17.5,1.5,18.2,2],"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"escalators-stairs-elevators-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],paint:{"fill-extrusion-color":"#6A8799","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!0,"fill-extrusion-opacity":.9}},{id:"interior-parking-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"fill-extrusion-color":"#757575","fill-extrusion-height":["interpolate",["linear"],["zoom"],15,0,16,2,17,3,18,4],"fill-extrusion-base":0,"fill-extrusion-opacity":.85}},{id:"route-line",type:"line",source:"route-data",minzoom:16.5,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#007aff","line-width":["interpolate",["linear"],["zoom"],16.5,3,18,5,20,7],"line-opacity":.9}},{id:"route-halo",type:"line",source:"route-data",minzoom:16.5,paint:{"line-color":"white","line-width":["interpolate",["linear"],["zoom"],16.5,5,18,7,20,9],"line-opacity":.7}},{id:"route-endpoint-source",type:"circle",source:"route-endpoints",minzoom:16.5,filter:["==",["get","role"],"source"],paint:{"circle-radius":6,"circle-color":"#ffffff","circle-stroke-width":3,"circle-stroke-color":"#007aff","circle-opacity":1}},{id:"route-endpoint-destination",type:"circle",source:"route-endpoints",minzoom:16.5,filter:["==",["get","role"],"destination"],paint:{"circle-radius":7,"circle-color":"#007aff","circle-stroke-width":3,"circle-stroke-color":"#ffffff","circle-opacity":1}},{id:"poi-accessibility-icons",type:"symbol",source:"poi-data",filter:["==",["get","accessible"],!0],minzoom:16.5,layout:{"icon-image":"wheelchair-accessible","icon-size":["interpolate",["linear"],["zoom"],15,.4,17,.6,19,.8],"icon-allow-overlap":!1,"icon-padding":4}},{id:"poi-destination-circles",type:"circle",source:"poi-data",filter:["==",["get","poiType"],"destination"],minzoom:16.5,paint:{"circle-radius":["interpolate",["linear"],["zoom"],15,3,17,4,19,5,20,6],"circle-color":"#162e51","circle-stroke-width":2,"circle-stroke-color":"#FFFFFF","circle-opacity":.9}},{id:"poi-destination-labels",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"destination"],["==",["get","showLabel"],!0]],minzoom:18.5,layout:{"text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],18.5,12,20,14],"text-offset":[0,.8],"text-anchor":"top","text-font":["Noto Sans Bold"],"text-max-width":12,"text-allow-overlap":!1,"text-rotation-alignment":"viewport"},paint:{"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1}},{id:"poi-entrance-exit-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["any",["!=",["index-of","entrance",["get","keywords"]],-1],["!=",["index-of","exit",["get","keywords"]],-1],["!=",["index-of","door",["get","keywords"]],-1]]],minzoom:15,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],16.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-parking-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["any",["!=",["index-of","parking",["get","keywords"]],-1],["!=",["index-of","park",["get","keywords"]],-1]]],minzoom:14,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],16.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-other-amenity-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["==",["index-of","entrance",["get","keywords"]],-1],["==",["index-of","exit",["get","keywords"]],-1],["==",["index-of","door",["get","keywords"]],-1],["==",["index-of","parking",["get","keywords"]],-1],["==",["index-of","park",["get","keywords"]],-1]],minzoom:17.5,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],17.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],17.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-you-are-here",type:"symbol",source:"poi-data",filter:["==",["get","isYouAreHere"],!0],minzoom:16.5,layout:{"icon-image":["coalesce",["get","iconId"],"you-are-here"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.8,18,1,20,1.2],"icon-allow-overlap":!0,"icon-ignore-placement":!0,"icon-anchor":"bottom","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],17.5,11,19.5,13],"text-offset":[0,1.2],"text-anchor":"top","text-font":["Noto Sans Bold"],"text-optional":!0},paint:{"text-color":"#ffffff","text-halo-color":"#000000","text-halo-width":1.5,"text-halo-blur":.8}}]};function P(e,t,o={}){e.sources||={},e.sources[t]||(e.sources[t]={type:"geojson",data:{type:"FeatureCollection",features:[]},...o})}function T(e){let t=structuredClone(e.style);if(t.sprite=e.customSprite||t.sprite||e.defaultSpriteUrl,P(t,n),P(t,s),P(t,r),P(t,a,{lineMetrics:!0}),P(t,"route-endpoints"),e.floorLayers)for(const o of Object.keys(e.floorLayers))P(t,`amenity_${o}`),P(t,`destination_${o}`),P(t,`pathTypes_${o}`);return t}const D="https://demotiles.maplibre.org/styles/osm-bright-gl-style/sprite";class L{config;map=null;data=new z;wayfindingProvider={wayfindBetweenWaypoints:async()=>{throw new Error("Wayfinding is not yet implemented in the SDK")}};events=new B;floorsApi;venue=null;spriteKeys=null;debug;logger;defaultCamera=null;viewModes;amenityManager;wayfinding;constructor(e){this.config=e,this.debug=Boolean(e.debug??e.options?.debug),this.logger=c({enabled:this.debug,prefix:"MinuteMapsSDK"}),this.viewModes=new b(()=>this.map),this.floorsApi=new f({getMap:()=>this.map,getConfig:()=>this.config,updatePoiSource:async e=>{const t=this.map;if(!t)return;const o=this.getAllPOIs(e),n=x.toFeatureCollection(o);i.setData(t,r,n)},log:(...e)=>this.logger.debug(...e)}),this.amenityManager=new E({getVenue:()=>this.venue,getFloors:()=>this.floorsApi.getFloors(),getFloorById:e=>this.floorsApi.getFloors().find(t=>t.id===e)??null,log:(...e)=>this.logger.debug(...e)}),this.wayfinding=new S({getMap:()=>this.map,getVenue:()=>this.venue,getYouAreHerePOI:e=>this.getYouAreHerePOI(e),getYouAreHereCoordinates:e=>this.getYouAreHereCoordinates(e),getBoundsPadding:()=>this.getBoundsPadding(),computeRoute:async(e,t)=>{const o=this.config.jmap.customerId,i=this.config.jmap.venueId;if(null==o)throw new Error("config.jmap.customerId is required");if(null==i)throw new Error("config.jmap.venueId is required");return this.wayfindingProvider.wayfindBetweenWaypoints({customerId:o,venueId:i,from:e,to:t})},log:(...e)=>this.logger.debug(...e),warn:(...e)=>this.logger.warn(...e),debug:this.debug})}async init(){const{venueId:t,customerId:o}=this.config?.jmap;if(null==t||null==o)throw new Error("config.jmap.customerId and config.jmap.venueId are required");if(!this.config.container)throw new Error("config.container is required (HTMLElement or element id)");this.logger.debug("init :: starting (JACS)",{venueId:t,customerId:o});try{await this.data.init(this.config),this.logger.debug("providers :: JACS ready"),this.venue=await this.data.loadVenue(),this.logger.debug("JACS :: venue loaded",this.venue.id),this.floorsApi.setFloors(this.venue.floors),this.logger.debug("JACS :: floors loaded",{count:this.venue.floors.length});const t=T({style:j,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:D});this.ensureFloorLayersFromStyle(t),this.map=function(t,o){const i="string"==typeof t?document.getElementById(t):t;if(!i)throw new Error("Map container not found");return new e.Map({container:i,style:o,center:[0,0],zoom:16,pitch:45,bearing:0})}(this.config.container,t),await new Promise(e=>this.map.once("load",()=>e())),this.map.on("error",e=>{const t=e?.error?.message||e?.message||e;this.logger.error("map :: error",{msg:t,sourceId:e?.sourceId,tile:e?.tile})}),this.map.on("styledata",()=>{try{this.viewModes.onStyleData()}catch{}}),this.map.on("move",()=>{if(!this.map)return;const e=F(this.map);e&&this.events.emit("cameraChange",{camera:e})}),this.ensureCoreSources(),this.spriteKeys=await y.getSpriteKeys(this.map);const o=this.floorsApi.getInitialFloor();Boolean(o?.geojson?.features?.length)||this.applyInitialViewFromVenue(),o&&await this.setCurrentFloor(o),this.defaultCamera=F(this.map),this.events.emit("ready",{venue:this.venue}),this.events.emit("floorsLoaded",{})}catch(e){throw this.logger.error("init :: failed (JACS)",e),this.events.emit("error",{error:e}),e}}on(e,t){this.events.on(e,t)}off(e,t){this.events.off(e,t)}addControl(e,t){this.map?.addControl(e,t)}setView(e){!function(e,t){if(!e)return;const{center:o,zoom:i,pitch:n,bearing:r,animate:s,duration:a}=t;if(s){const t=e.getCenter(),s=o||[t.lng,t.lat],l=i??e.getZoom(),u=n??e.getPitch(),c=r??e.getBearing(),d="number"==typeof a?a:900;return void e.flyTo({center:s,zoom:l,pitch:u,bearing:c,duration:d,essential:!0})}o&&e.setCenter(o),void 0!==i&&e.setZoom(i),void 0!==n&&e.setPitch(n),void 0!==r&&e.setBearing(r)}(this.map,e)}get amenities(){return this.amenityManager}resetView(e){!function(e,t,o){if(!e||!t)return;const{center:i,zoom:n,pitch:r,bearing:s}=t,a=Boolean(o?.animate),l="number"==typeof o?.duration?o.duration:800;a?e.easeTo({center:i,zoom:n,pitch:r,bearing:s,duration:l}):e.jumpTo({center:i,zoom:n,pitch:r,bearing:s})}(this.map,this.defaultCamera,e)}set3dEnabled(e){this.viewModes.set3dEnabled(e)}toggle3d(){this.viewModes.toggle3d()}getIs3dEnabled(){return this.viewModes.getIs3dEnabled()}setUnits2dEnabled(e){this.viewModes.setUnits2dEnabled(e)}toggleUnits2d(){this.viewModes.toggleUnits2d()}getIsUnits2dEnabled(){return this.viewModes.getIsUnits2dEnabled()}setFlatMode(e){this.viewModes.setFlatMode(e)}toggleFlatMode(){this.viewModes.toggleFlatMode()}getIsFlatMode(){return this.viewModes.getIsFlatMode()}getFloors(){return this.floorsApi.getFloors()}getCurrentFloor(){return this.floorsApi.getCurrentFloor()}getDefaultFloor(){return this.floorsApi.getDefaultFloor()}getDestinations(e){const t=e||this.getCurrentFloor();return function(e,t){if(!e||!t)return[];try{const o=e.destinations?.getByMap?.({id:t.id})||[];return Array.isArray(o)?o:[]}catch{return[]}}(this.venue,t)}getPolygonLayers(){return this.venue?.polygonLayers??[]}getFloorMapTemplate3d(e){return this.venue?.mapTemplates3d?.[String(e)]??[]}getAllPOIs(e){const t=e||this.getCurrentFloor();if(!t)return[];return function(e,t,o,i){return x.buildPOIs(e,t,o,i)}(t,this.amenityManager.getByFloorId(t.id),this.getDestinations(t),this.spriteKeys)}getYouAreHerePOI(e){return I(this.getAllPOIs(e))}getYouAreHereCoordinates(e){return function(e){const t=I(e);return t?.coordinates??null}(this.getAllPOIs(e))}searchPOIs(e,t){return function(e,t){const o=t.trim().toLowerCase();return o?e.filter(e=>{const t=e.name?.toLowerCase().includes(o),i=(e.keywords||[]).some(e=>e.toLowerCase().includes(o));return t||i}):[]}(this.getAllPOIs(t),e)}async wayfindBetweenWaypoints(e,t,o){return this.wayfinding.wayfindBetweenWaypoints(e,t,o)}async navigateFromKioskToDestination(e){return this.wayfinding.navigateFromKioskToDestination(e)}clearRoute(){this.wayfinding.clearRoute()}getCameraPosition(){return F(this.map)}getMap(){return this.map}destroy(){this.map?.remove(),this.map=null,this.floorsApi.setFloors([]),this.defaultCamera=null,this.viewModes=new b(()=>this.map)}async setCurrentFloor(e){await this.data.ensureFloorGeojson(e),await this.floorsApi.setCurrentFloor(e),this.setFloorLayerVisibility(e.id),this.events.emit("floorChanged",{floor:e})}isReady(){return!!this.map}setFloorLayerVisibility(e){const t=this.map;if(!t)return;const o=this.venue?.styleSheet?.floorLayers;if(o)for(const[i,n]of Object.entries(o)){const o=String(i)===String(e);for(const e of n)t.getLayer(e.id)&&t.setLayoutProperty(e.id,"visibility",o?"visible":"none")}}getBoundsPadding(){return this.config.options?.boundsPadding??50}getVenueBounds(){const e=this.venue?.coordinates;if(!e)return null;const{bottomLng:t,bottomLat:o,topLng:i,topLat:n}=e;if(null==t||null==o||null==i||null==n)return null;const r=Math.min(t,i),s=Math.max(t,i);return[[r,Math.min(o,n)],[s,Math.max(o,n)]]}applyInitialViewFromVenue(){const e=this.map;if(!e)return;const t=this.getVenueBounds();if(t)try{e.resize(),e.fitBounds(t,{padding:this.getBoundsPadding(),animate:!1,duration:0,maxZoom:21})}catch(e){this.logger.warn("applyInitialViewFromVenue :: fitBounds failed",e)}}async loadAndPatchVenueStyle(){const e=this.venue?.styleSheet?.styleUrl,t=this.venue?.styleSheet?.floorLayers,o=j;if("sdkTemplate"===this.config.options?.styleMode)return this.logger.debug("style :: styleMode=sdkTemplate, ignoring venue styleUrl"),T({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:D});if(!e)return this.logger.warn("style :: venue.styleSheet.styleUrl missing, using baseStyle"),T({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:D});try{const o=await fetch(e);if(!o.ok)throw new Error(`HTTP ${o.status} ${o.statusText}`);return T({style:await o.json(),floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:D})}catch(e){return this.logger.warn("style :: failed to fetch venue styleUrl, using baseStyle",e),T({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:D})}}ensureFloorLayersFromStyle(e){const t=this.venue?.styleSheet?.floorLayers;if(t&&Object.keys(t).length)return;const o={};for(const t of e.layers||[]){const e=t.id||"",i=/_(\d+)$/.exec(e);if(!i)continue;const n=i[1];o[n]||=[],o[n].push({id:e})}this.venue||={},this.venue.styleSheet||={},this.venue.styleSheet.floorLayers=o}ensureCoreSources(){const e=this.map;if(!e)return;const t={type:"FeatureCollection",features:[]};i.ensureGeoJson(e,n),i.ensureGeoJson(e,s),i.ensureGeoJson(e,r),e.getSource(a)||e.addSource(a,{type:"geojson",data:t,lineMetrics:!0}),e.getSource("route-endpoints")||e.addSource("route-endpoints",{type:"geojson",data:t})}}exports.MinuteMaps=L,exports.createMinuteMapsSDK=function(e){return new L(e)};
|
|
1
|
+
"use strict";var e=require("maplibre-gl");function t(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(o){if("default"!==o){var i=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,i.get?i:{enumerable:!0,get:function(){return e[o]}})}}),t.default=e,Object.freeze(t)}var o=t(require("@turf/turf"));const i={ensureGeoJson(e,t){e.getSource(t)||e.addSource(t,{type:"geojson",data:{type:"FeatureCollection",features:[]}})},setData(e,t,o){const i=e.getSource(t);i?.setData?.(o)}},n="indoor-data",r="poi-data",s="unit-walls",a="route-data",l=["boundary-fill","boundary-outline","units-fill","units-wall-extrusion","units-wall-custom-extrusion","corridors-fill","corridors-outline","building-extrusion"],u=()=>{};function c(e){const t=Boolean(e?.enabled),o=function(e){const t=String(e||"").trim();return t?`[${t}]`:""}(e?.prefix||"MinuteMapsSDK");return t?{debug:(...e)=>console.debug(o,...e),log:(...e)=>console.log(o,...e),warn:(...e)=>console.warn(o,...e),error:(...e)=>console.error(o,...e)}:{debug:u,log:u,warn:u,error:u}}c({enabled:!0,prefix:"MinuteMapsSDK"});const d={applyFloor(e,t,o=1){d.updateWalls(e,t,o),d.updateIndoor(e,t,o)},updateIndoor(e,t,r=1){const s=function(e,t){if(!e)return{type:"FeatureCollection",features:[]};if(!Number.isFinite(t)||t<=0)return e;const i=(e.features||[]).map(e=>{const i=e?.properties?.featureType;if(!i||!p.has(i))return e;const n=e?.geometry?.type;if("Polygon"!==n&&"MultiPolygon"!==n)return e;try{const i=o.buffer(e,-t,{units:"feet"});return i?.geometry?{...e,geometry:i.geometry}:e}catch{return e}});return{...e,features:i}}(t.geojson,r);i.setData(e,n,s);try{const e=t?.geojson?.features||[],o={};for(const t of e){const e=t?.properties?.featureType,i=null==e?"(missing)":String(e);o[i]=(o[i]||0)+1}Object.entries(o).sort((e,t)=>t[1]-e[1]).slice(0,15)}catch{}},updateWalls(e,t,n=1){const r=function(e,t=1){const i=(e.features||[]).filter(e=>"Units"===e.properties?.featureType).map(e=>{try{const i=o.buffer(e,-t,{units:"feet"});if(!i)return null;const n={...e.properties,featureType:"UnitWalls"};if(null==n.custom_height){const e=n.customProperties?.custom_height??n.custom_height??n.height??n.wall_height,t="number"==typeof e?e:Number(e);Number.isFinite(t)&&(n.custom_height=t)}return{type:"Feature",geometry:{type:"Polygon",coordinates:[e.geometry.coordinates[0],i.geometry.coordinates[0]]},properties:n}}catch{return null}}).filter(Boolean);return{type:"FeatureCollection",features:i}}(t.geojson,n);i.setData(e,s,r)},boundsFromGeoJson(e){try{const[t,i,n,r]=o.bbox(e),s=Math.min(t,n),a=Math.max(t,n),l=Math.min(i,r);return[[s,l],[a,Math.max(i,r)]]}catch{return null}},selectDefaultFloor:e=>Array.isArray(e)&&0!==e.length&&(e.find(e=>e.isDefault)||e[0])||null,selectInitialFloor(e,t){if(!Array.isArray(e)||0===e.length)return null;if(null!=t){const o=e.find(e=>e.id===t);if(o)return o}return d.selectDefaultFloor(e)},async activateFloor(e,t,o){if(!e)throw new Error("activateFloor requires an initialized map");if(t?.geojson&&d.applyFloor(e,t,o.wallFeet),await o.updatePOIs(t),!t?.geojson)return void(e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom));const i=d.boundsFromGeoJson(t.geojson);if(!i)return;const n=!o.didFit;let r=n;if(!r){const[[t,o],[n,s]]=i,a=e.getBounds();r=a.getWest()>n||a.getEast()<t||a.getSouth()>s||a.getNorth()<o}r?(e.fitBounds(i,{padding:o.boundsPadding,animate:!n,duration:700,bearing:e.getBearing(),pitch:e.getPitch()}),e.once("moveend",()=>{e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom)}),o.setDidFit(!0),o.log?.("camera :: fitToFloor",{floorId:t.id,animated:!n})):(e.getZoom()<o.minIndoorZoom&&e.setZoom(o.minIndoorZoom),o.log?.("camera :: fit skipped (floor overlaps viewport)",{floorId:t.id}))}},p=new Set(["Restrooms","Back-of-house","Obstacles","Escalators","Stairs","Elevators"]);class f{floors=[];currentFloor=null;didFit=!1;getMap;getConfig;updatePoiSource;logFn;constructor(e){this.getMap=e.getMap,this.getConfig=e.getConfig,this.updatePoiSource=e.updatePoiSource,this.logFn=e.log}log(...e){this.logFn&&this.logFn(...e)}setFloors(e){this.floors=e}getFloors(){return[...this.floors]}getCurrentFloor(){return this.currentFloor}setDidFit(e){this.didFit=e}getDefaultFloor(){return d.selectDefaultFloor(this.floors)}getInitialFloor(){const e=this.getConfig();return d.selectInitialFloor(this.floors,e.options?.initialFloor)}async setCurrentFloor(e){const t=this.getMap();if(!t)throw new Error("Map is not initialized");this.currentFloor=e,this.log("floor :: setCurrentFloor",{id:e.id,name:e.name,geojsonFeatures:e.geojson?.features?.length??0});const o=this.getConfig(),i=o.options?.wallThickness??1,n=o.options?.boundsPadding??50,r=o.options?.minIndoorZoom??16.5;await d.activateFloor(t,e,{wallFeet:i,updatePOIs:e=>this.updatePoiSource(e),didFit:this.didFit,setDidFit:e=>{this.didFit=e},boundsPadding:n,minIndoorZoom:r,log:(e,t)=>this.log(e,t)})}}const g=c({enabled:!0,prefix:"MinuteMapsSDK"}),h=new Map,y={async getSpriteKeys(e){const t=function(e){if(!e)return;if("string"==typeof e)return e;if(Array.isArray(e)){const t=e[0];if(t&&"string"==typeof t.url)return t.url}if("object"==typeof e&&null!==e){const t=e?.url;if("string"==typeof t)return t}return}(e?.getStyle?.()?.sprite);if(!t||"function"!=typeof fetch)return new Set;const o=t.endsWith(".json")?t:`${t}.json`;if(h.has(o))return h.get(o);try{const e=await fetch(o);if(!e.ok)throw new Error(`Failed to load sprite JSON (${e.status})`);const t=await e.json(),i=new Set(Object.keys(t||{}));return h.set(o,i),i}catch(e){g.warn("sprite fetch failed",o,e);const t=new Set;return h.set(o,t),t}}};const m="units-outline-2d",w=["units-wall-extrusion","units-wall-custom-extrusion"];class b{getMap;is3dEnabled=!0;isUnits2dEnabled=!1;isFlatMode=!1;cachedExtrusionIds=null;extrusionOriginalVisibility=null;unitsExtrusionOriginalVisibility=null;unitsOutlineOriginalVisibility=null;constructor(e){this.getMap=e}onStyleData(){if(this.map){if(this.cachedExtrusionIds=null,!this.is3dEnabled){const e=this.listExtrusionLayerIds();this.setLayersVisibility(e,"none")}this.isUnits2dEnabled&&this.applyUnits2dVisibility(!0)}}set3dEnabled(e){const t=this.map;if(!t)return;const o=this.listExtrusionLayerIds();if(this.cachedExtrusionIds=o,!this.extrusionOriginalVisibility){const e={};o.forEach(o=>{try{const i=t.getLayoutProperty(o,"visibility")||"visible";e[o]=i}catch{e[o]="visible"}}),this.extrusionOriginalVisibility=e}if(e){const e=this.extrusionOriginalVisibility||{};o.forEach(o=>{const i=e[o]??"visible";try{t.getLayer(o)&&t.setLayoutProperty(o,"visibility",i)}catch{}})}else this.setLayersVisibility(o,"none");this.is3dEnabled=e,t.triggerRepaint()}toggle3d(){this.set3dEnabled(!this.is3dEnabled)}getIs3dEnabled(){return this.is3dEnabled}setUnits2dEnabled(e){const t=this.map;t&&(this.applyUnits2dVisibility(e),this.isUnits2dEnabled=e,t.triggerRepaint())}toggleUnits2d(){this.setUnits2dEnabled(!this.isUnits2dEnabled)}getIsUnits2dEnabled(){return this.isUnits2dEnabled}setFlatMode(e){this.map&&(e?(this.set3dEnabled(!1),this.setUnits2dEnabled(!0)):(this.setUnits2dEnabled(!1),this.set3dEnabled(!0)),this.isFlatMode=e)}toggleFlatMode(){this.setFlatMode(!this.isFlatMode)}getIsFlatMode(){return this.isFlatMode}applyUnits2dVisibility(e){const t=this.map;if(t){if(!this.unitsExtrusionOriginalVisibility){const e={};w.forEach(o=>{try{const i=t.getLayoutProperty(o,"visibility")||"visible";e[o]=i}catch{e[o]="visible"}}),this.unitsExtrusionOriginalVisibility=e}if(null==this.unitsOutlineOriginalVisibility)try{const e=t.getLayoutProperty(m,"visibility");this.unitsOutlineOriginalVisibility=e??"none"}catch{this.unitsOutlineOriginalVisibility="none"}if(t.getLayer(m)){const o=e?"visible":this.unitsOutlineOriginalVisibility??"none";try{t.setLayoutProperty(m,"visibility",o)}catch{}}if(e)w.forEach(e=>{if(t.getLayer(e))try{t.setLayoutProperty(e,"visibility","none")}catch{}});else{const e=this.unitsExtrusionOriginalVisibility||{};w.forEach(o=>{const i=e[o]??"visible";if(t.getLayer(o))try{t.setLayoutProperty(o,"visibility",i)}catch{}})}}}listExtrusionLayerIds(){const e=this.map;if(!e)return[];try{const t=e.getStyle(),o=t?.layers||[],i=o.filter(e=>"fill-extrusion"===e?.type).map(e=>e.id),n=Array.isArray(l)?l:[],r=[];return n.forEach(e=>{const t=o.find(t=>t.id===e);t&&"fill-extrusion"===t.type&&r.push(e)}),[...new Set([...i,...r])]}catch{return this.cachedExtrusionIds||[]}}setLayersVisibility(e,t){const o=this.map;o&&e.forEach(e=>{try{o.getLayer(e)&&o.setLayoutProperty(e,"visibility",t)}catch{}})}get map(){return this.getMap()}}function F(e){if(!e)return null;const t=e.getCenter(),o=(e,t=6)=>function(e,t=6){const o=Number(e.toFixed(t));return Object.is(o,-0)?0:o}(e,t);return{center:[o(t.lng),o(t.lat)],zoom:o(e.getZoom(),4),pitch:o(e.getPitch(),2),bearing:o(e.getBearing(),2)}}const x={async updatePOIs(e,t,o){const[n,s]=await Promise.all([o.getAmenities(t.id),o.getDestinations(t.id)]),a=x.buildPOIs(t,n,s,o.spriteKeys);i.setData(e,r,x.toFeatureCollection(a))},buildPOIs(e,t=[],o=[],i){if(!e?.id)return[];const n=e.mapId??e.id,r=[];let s=!1;for(const o of t||[]){if(!o.waypoints)continue;const t=C(o),a=A(o.svg,i)||void 0,l="you-are-here";for(const i of o.waypoints||[]){if(i.mapId!==n||!v(i.coordinates))continue;const[u,c]=i.coordinates,d=t&&!s,p=d?l:a,f=i.id??i._?.id;r.push({id:o.id,type:"amenity",name:d?"You are here":o.name||"Amenity",coordinates:[u,c],iconId:p,floorId:e.id,amenityType:o.type,keywords:o.keywords||[],showLabel:!0,isYouAreHere:d,waypointId:f,waypoint:i}),d&&(s=!0)}}for(const t of o||[])if(t.waypoints)for(const o of t.waypoints||[]){if(o.mapId!==n||!v(o.coordinates))continue;const[i,s]=o.coordinates,a=o.id??o._?.id;r.push({id:t.id,type:"destination",name:t.name||"Destination",coordinates:[i,s],floorId:e.id,showLabel:!0,waypointId:a,waypoint:o})}return r},toFeatureCollection:e=>({type:"FeatureCollection",features:e.map(e=>({type:"Feature",geometry:{type:"Point",coordinates:e.coordinates},properties:{id:e.id,name:e.name,poiType:e.type,iconId:e.iconId,floorId:e.floorId,keywords:e.keywords,amenityType:e.amenityType,showLabel:!1!==e.showLabel,isYouAreHere:!0===e.isYouAreHere}}))})};function I(e){return e.find(e=>e.isYouAreHere)||null}function v(e){return Array.isArray(e)&&e.length>=2}function A(e,t){if(!e||!t)return null;const o=/<svg[^>]*\bid\s*=\s*["']([^"']+)["']/i.exec(e),i=o?.[1];return i&&t.has(i)?i:null}function C(e){const t=e=>(e??"").toLowerCase(),o=t(e.name),i=(e.keywords||[]).map(e=>t(e)),n=e.extensors||{},r=t(n.type),s="kiosk"===o||o.includes("kiosk"),a=i.some(e=>e.includes("kiosk"));return s||a||"assistance"===r}class S{deps;routeAnimationFrame=null;routeAnimationStart=null;routeAnimationDurationMs=1200;routeActive=!1;constructor(e){this.deps=e}buildWayfindFeatureCollection(e){if(!e)return this.deps.warn?.("wayfind :: no result"),null;const t=[],o=e=>{if(!e)return;const o=e.coordinates||e.xyz||e._?.coordinates;if(Array.isArray(o)&&o.length>=2){const e=Number(o[0]),i=Number(o[1]);Number.isFinite(e)&&Number.isFinite(i)&&t.push([e,i])}};return Array.isArray(e)?e.length>0&&Array.isArray(e[0]?.points)?e[0].points.forEach(o):e.forEach(o):Array.isArray(e.points)?e.points.forEach(o):Array.isArray(e.path)?e.path.forEach(o):Array.isArray(e.paths?.[0]?.points)&&e.paths[0].points.forEach(o),t.length<2?(this.deps.warn?.("wayfind :: not enough coordinates to draw a route",{resultShape:{isArray:Array.isArray(e),hasPoints:Array.isArray(e.points),hasPath:Array.isArray(e.path),hasPaths0Points:Array.isArray(e.paths?.[0]?.points)},extractedCount:t.length}),null):(this.deps.log?.("wayfind :: extracted coordinates for route",{count:t.length,first:t[0],last:t[t.length-1]}),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:t},properties:{}}]})}async wayfindBetweenWaypoints(e,t,o){const n=this.deps.getMap();if(!this.deps.getVenue()||!n)return this.deps.warn?.("wayfindBetweenWaypoints :: venue or map not ready"),null;let r=null;try{r=await this.deps.computeRoute(e,t)}catch(e){return this.deps.warn?.("wayfind :: computeRoute failed",e),null}this.deps.log?.("wayfind :: result",r);const s=this.buildWayfindFeatureCollection(r);if(!s)return r;i.setData(n,a,s),this.deps.log?.("wayfind :: route source updated",{featureCount:s.features.length}),this.startRouteAnimation();const l=o?.centerMode??"route",u=o?.zoom??19;if("none"!==l){const e=s.features[0]?.geometry;if(e&&"LineString"===e.type&&Array.isArray(e.coordinates)){const t=e.coordinates;if("destination"===l){const e=t[t.length-1];n.flyTo({center:e,zoom:u,pitch:45,bearing:0,animate:!0,duration:900})}else if("route"===l){const e=t.map(e=>e[0]),o=t.map(e=>e[1]),i=Math.min(...e),r=Math.max(...e),s=[[i,Math.min(...o)],[r,Math.max(...o)]];n.fitBounds(s,{padding:this.deps.getBoundsPadding(),animate:!0})}}}return r}async navigateFromKioskToDestination(e){const t=this.deps.getMap(),o=this.deps.getVenue();if(!t||!o)return null;const i=this.deps.getYouAreHerePOI();if(!i||!i.waypoint)return this.deps.warn?.("navigateFromKioskToDestination :: no you-are-here waypoint available",i),null;const n=e.waypoint||e.waypoints?.[0];if(!n)return this.deps.warn?.("navigateFromKioskToDestination :: destination has no waypoint",e),null;this.deps.log?.("navigateFromKioskToDestination :: from kiosk to destination",{kioskWaypoint:i.waypoint,destWaypoint:n});const r=this.deps.getYouAreHereCoordinates()??i.waypoint?.coordinates,s=n.coordinates||n.xyz||n._?.coordinates,a=Array.isArray(s)&&s.length>=2?[Number(s[0]),Number(s[1])]:null;return r&&a?this.showRouteContext(r,a):this.deps.warn?.("navigateFromKioskToDestination :: could not derive endpoint coordinates",{fromCoords:r,rawDest:s}),this.wayfindBetweenWaypoints(i.waypoint,n,{centerMode:"route"})}clearRoute(){const e=this.deps.getMap();if(!e)return;this.stopRouteAnimation();i.setData(e,a,{type:"FeatureCollection",features:[]}),this.deps.log?.("wayfind :: route cleared")}setPoiLayersVisible(e){const t=this.deps.getMap();if(!t)return;const o=e?"visible":"none";["poi-accessibility-icons","poi-destination-circles","poi-destination-labels","poi-entrance-exit-icons","poi-parking-icons","poi-other-amenity-icons"].forEach(e=>{t.getLayer(e)&&t.setLayoutProperty(e,"visibility",o)})}updateRouteEndpoints(e,t){const o=this.deps.getMap();if(!o)return;const i=o.getSource("route-endpoints");if(!i)return;const n={type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:e},properties:{role:"source"}},{type:"Feature",geometry:{type:"Point",coordinates:t},properties:{role:"destination"}}]};i.setData(n)}clearRouteEndpoints(){const e=this.deps.getMap();if(!e)return;const t=e.getSource("route-endpoints");if(!t)return;t.setData({type:"FeatureCollection",features:[]})}showRouteContext(e,t){this.updateRouteEndpoints(e,t)}hideRouteContext(){this.setPoiLayersVisible(!0),this.clearRouteEndpoints()}startRouteAnimation(){if(!this.deps.getMap())return;if("undefined"==typeof window)return;null!=this.routeAnimationFrame&&(cancelAnimationFrame(this.routeAnimationFrame),this.routeAnimationFrame=null),this.routeAnimationStart=performance.now(),this.routeActive=!0;const e=this.deps.debug,t=o=>{const i=this.deps.getMap();if(!i||!this.routeActive||null==this.routeAnimationStart)return;const n=o-this.routeAnimationStart,r=Math.min(1,n/this.routeAnimationDurationMs),s=Math.max(.001,r);e&&this.deps.log?.("route animation frame",{t:r,clamped:s});const a=Math.max(0,s-.01),l=Math.min(1,s+.01),u=["interpolate",["linear"],["line-progress"],0,"rgba(0,122,255,1.0)",a,"rgba(0,122,255,1.0)",l,"rgba(0,122,255,0.0)",1,"rgba(0,122,255,0.0)"],c=["interpolate",["linear"],["line-progress"],0,"rgba(255,255,255,0.7)",a,"rgba(255,255,255,0.7)",l,"rgba(255,255,255,0.0)",1,"rgba(255,255,255,0.0)"];i.getLayer("route-line")&&i.setPaintProperty("route-line","line-gradient",u),i.getLayer("route-halo")&&i.setPaintProperty("route-halo","line-gradient",c),this.routeAnimationFrame=r<1?requestAnimationFrame(t):null};this.routeAnimationFrame=requestAnimationFrame(t)}stopRouteAnimation(){this.routeActive=!1,null!=this.routeAnimationFrame&&"undefined"!=typeof window&&cancelAnimationFrame(this.routeAnimationFrame),this.routeAnimationFrame=null,this.routeAnimationStart=null;const e=this.deps.getMap();e&&(e.getLayer("route-line")&&(e.setPaintProperty("route-line","line-gradient",void 0),e.setPaintProperty("route-line","line-color","#007aff")),e.getLayer("route-halo")&&(e.setPaintProperty("route-halo","line-gradient",void 0),e.setPaintProperty("route-halo","line-color","#ffffff")))}}class E{getVenue;getFloors;getFloorById;logFn;constructor(e){this.getVenue=e.getVenue,this.getFloors=e.getFloors,this.getFloorById=e.getFloorById,this.logFn=e.log}get venue(){return this.getVenue()}log(...e){this.logFn&&this.logFn(...e)}loadForFloor(e){if(!e||!this.venue)return[];try{const t=this.venue.amenities?.getByMap(e.id)||[];return Array.isArray(t)?t.map(t=>{const o=t;return o.floorId=e.id,o}):[]}catch{return[]}}getAll(){return this.getFloors().flatMap(e=>this.loadForFloor(e))}getByFloorId(e){const t=this.getFloorById(e);return t?this.loadForFloor(t):[]}getAllKiosks(){return this.getAll().filter(e=>C(e))}getKioskForFloor(e){const t=this.getFloorById(e);if(!t)return null;return this.loadForFloor(t).find(e=>C(e))??null}logKioskForFloor(e){const t=this.getFloorById(e);if(!t)return;const o=this.getKioskForFloor(e);o?this.log("amenity :: kiosk found",{floorId:t.id,id:o.id,name:o.name,keywords:o.keywords,waypoints:o.waypoints,raw:o}):this.log("amenity :: kiosk not found on floor",{floorId:t.id})}}c({enabled:!0,prefix:"MinuteMapsSDK"});class M{mode;proxyBaseUrl;direct;fetchImpl;tokenCache=null;constructor(e){const t="undefined"!=typeof window?window:globalThis,o=e.fetchImpl??t.fetch;if("function"!=typeof o)throw new Error("Fetch API is not available in this environment");this.fetchImpl=o.bind(t),this.mode=e.mode,this.proxyBaseUrl=("proxy"===e.mode?e.proxyBaseUrl:void 0)||"/api/jacs","direct"===e.mode?this.direct={host:this.normalizeHost(e.host),clientId:e.clientId,username:e.username,password:e.password}:this.direct=null}async getPolygonLayers(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/polygon-layer`,o=await this.getJson(t);return this.extractArray(o)}async getFloorMapTemplate3d(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor/${encodeURIComponent(String(e.floorId))}/map-template/3d`,o=await this.getJson(t);return this.extractArray(o)}async getFloors(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor`,o=await this.getJson(t);return this.extractArray(o)}async getVenueAll(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/all`,o=await this.getJson(t),i=o?.data||o?.result||o;if(!i||"object"!=typeof i)throw new Error("JACS venue/all response was not a JSON object");return i}async getVenue(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}`,o=await this.getJson(t),i=o?.venue||o?.data||o;if(!i||"object"!=typeof i)throw new Error("JACS venue response was not a JSON object");return i}async getFloorMapGeojson(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/floor/${encodeURIComponent(String(e.floorId))}/map/geojson`,o=await this.getJson(t),i=o?.geojson||o?.data||o;if(!i||"FeatureCollection"!==i.type||!Array.isArray(i.features))throw new Error("JACS floor geojson did not look like a GeoJSON FeatureCollection");return i}async getBuildingFull(e){const t=new URLSearchParams;t.set("mapProfile",String(e.mapProfile??"public")),t.set("geojson",String(e.geojson??!0));const o=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/full?${t.toString()}`,i=await this.getJson(o),n=i?.data||i?.result||i;if(!n||"object"!=typeof n)throw new Error("JACS building full response was not a JSON object");return n}async getDestinations(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/destination`,o=await this.getJson(t);return this.extractArray(o)}async getAmenities(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/amenity`,o=await this.getJson(t);return this.extractArray(o)}async getBuildings(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building`,o=await this.getJson(t);return this.extractArray(o)}async getStylesheet3d(e){const t=`/customer/${encodeURIComponent(String(e.customerId))}/venue/${encodeURIComponent(String(e.venueId))}/building/${encodeURIComponent(String(e.buildingId))}/stylesheet/3d`,o=await this.getJson(t),i=o?.style||o?.data||o;if(!i||"object"!=typeof i)throw new Error("JACS stylesheet response was not a JSON object");return i}invalidateToken(){this.tokenCache=null}async getJson(e){if("proxy"===this.mode){const t=this.proxyBaseUrl.replace(/\/+$/,""),o=e.startsWith("/")?e:`/${e}`,i=await this.fetchImpl(`${t}${o}`,{method:"GET",headers:{Accept:"application/json"}});if(!i.ok){const e=await this.safeReadText(i);throw new Error(`JACS proxy GET failed (${i.status} ${i.statusText}) :: ${e}`)}return await i.json()}const t=this.direct;if(!t)throw new Error("JacsProvider is not configured for direct mode");const o=await this.getJwtToken(),i=this.joinUrl(t.host,e),n=await this.fetchImpl(i,{method:"GET",headers:{Authorization:`Bearer ${o}`,Accept:"application/json"}});if(!n.ok){const e=await this.safeReadText(n);throw new Error(`JACS GET failed (${n.status} ${n.statusText}) :: ${e}`)}return await n.json()}extractArray(e){return(Array.isArray(e)?e:null)||(Array.isArray(e?.data)?e.data:null)||(Array.isArray(e?.items)?e.items:null)||(Array.isArray(e?.results)?e.results:null)||[]}async getJwtToken(){const e=this.direct;if(!e)throw new Error("getJwtToken should not be called in proxy mode");const t=Date.now(),o=this.tokenCache;if(o?.token&&t<o.expiresAtMs-3e4)return o.token;const i=this.joinUrl(e.host,"/auth/token"),n=new URLSearchParams;n.set("grant_type","password"),n.set("client_id",e.clientId),n.set("username",e.username),n.set("password",e.password);const r=await this.fetchImpl(i,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:n.toString()});if(!r.ok){const e=await this.safeReadText(r);throw new Error(`JACS auth failed (${r.status} ${r.statusText}) :: ${e}`)}const s=await r.json(),a=s?.access_token||s?.token||s?.jwt||s?.accessToken;if(!a)throw new Error("JACS auth response did not contain a token");const l=s?.expires_in??s?.expiresIn??s?.expires??s?.ttl,u="number"==typeof l?l:Number(l),c=Number.isFinite(u)&&u>0?u:600;return this.tokenCache={token:a,expiresAtMs:Date.now()+1e3*c},a}normalizeHost(e){return String(e||"").replace(/\/+$/,"")}joinUrl(e,t){const o=this.normalizeHost(e),i=String(t||"");return i?`${o}${i.startsWith("/")?"":"/"}${i}`:o}async safeReadText(e){try{return await e.text()}catch{return""}}}const k=c({enabled:!0,prefix:"MinuteMapsSDK jacs"});function B(e){return null!=e&&"object"==typeof e?e.id:e}class z{config;jacs;floors=[];buildingId=null;destinationsByMapId=new Map;amenitiesByMapId=new Map;venueLike=null;async init(e){this.config=e;const t=e.jacs;if(!t?.mode)throw new Error("config.jacs.mode is required");if("proxy"!==t.mode){if(!t.host)throw new Error("config.jacs.host is required (direct mode)");if(!t.auth?.clientId)throw new Error("config.jacs.auth.clientId is required (direct mode)");if(!t.auth?.username)throw new Error("config.jacs.auth.username is required (direct mode)");if(!t.auth?.password)throw new Error("config.jacs.auth.password is required (direct mode)");this.jacs=new M({mode:"direct",host:t.host,clientId:t.auth.clientId,username:t.auth.username,password:t.auth.password})}else this.jacs=new M({mode:"proxy",proxyBaseUrl:t.proxyBaseUrl||"/api/jacs"})}async loadVenue(){const e=this.config.jmap.customerId,t=this.config.jmap.venueId;if(null==e)throw new Error("config.jmap.customerId is required");if(null==t)throw new Error("config.jmap.venueId is required");const o=await this.jacs.getVenueAll({customerId:e,venueId:t}),i=Array.isArray(o?.buildings)?o.buildings:[],n=i[0],r=n?.id??n?.buildingId;if(!n||!r)throw new Error("No buildings found for this venue in /all response");this.buildingId=r;const s=Array.isArray(o?.waypoints)?o.waypoints:[],a=Array.isArray(o?.destinations)?o.destinations:[],l=Array.isArray(o?.amenities)?o.amenities:[],u=new Map;for(const e of s){const t=e?.mapId;if(null==t)continue;const o=u.get(t)??[];o.push(e),u.set(t,o)}const c=Array.isArray(n?.floors)?n.floors:[],d=n?.defaultFloorId,p=c.map(e=>{const t=e.map?.id??e.mapId;return{id:e.id,mapId:t,name:e.name??e.shortName??String(e.id),sequence:e.level??e.preference,isDefault:e.id===d,geojson:void 0,mapTemplate3d:[],_waypoints:null!=t?u.get(t)??[]:[]}});this.floors=p;const f=new Map;for(const e of p)null!=e.mapId&&f.set(e.mapId,e.id);const g=new Map;for(const e of s){const t=e?.id;null!=t&&(Array.isArray(e.coordinates)||null==e.x||null==e.y||(e.coordinates=[Number(e.x),Number(e.y)]),g.set(t,e))}const h=e=>Array.isArray(e)?e.map(e=>e&&"object"==typeof e?e:g.get(e)).filter(Boolean):[];for(const e of l)e.waypoints=h(e?.waypoints);for(const e of a)e.waypoints=h(e?.waypoints);this.amenitiesByMapId.clear();for(const e of l)for(const t of e?.waypoints??[]){const o=t?.mapId;if(null==o)continue;const i=f.get(o)??o,n=this.amenitiesByMapId.get(i)??[];n.push(e),this.amenitiesByMapId.set(i,n)}this.destinationsByMapId.clear();for(const e of a)for(const t of e?.waypoints??[]){const o=t?.mapId;if(null==o)continue;const i=f.get(o)??o,n=this.destinationsByMapId.get(i)??[];n.push(e),this.destinationsByMapId.set(i,n)}const y=o?.venue??{};return this.venueLike={...y,floors:p,polygonLayers:[],destinations:{items:[...a],getByMap:e=>this.destinationsByMapId.get(B(e))??[]},amenities:{items:[...l],getByMap:e=>this.amenitiesByMapId.get(B(e))??[]},buildings:{items:[...i],getAllFloors:()=>this.floors},styleSheet:null},this.venueLike}async ensureFloorGeojson(e){if(e.geojson)return;const t=this.config.jmap.customerId,o=this.config.jmap.venueId;try{const i=await this.jacs.getFloorMapGeojson({customerId:t,venueId:o,buildingId:this.buildingId,floorId:e.id});e.geojson=function(e){return(e?.type?e:e?.data)??null}(i)}catch(t){k.warn("floor geojson fetch failed",{floorId:e.id,e:t})}}async preloadRemainingFloors(){const e=this.floors.filter(e=>!e.geojson);0!==e.length&&(await Promise.all(e.map(e=>this.ensureFloorGeojson(e))),k.debug("preloaded geojson for remaining floors",{count:e.length}))}async getFloors(){return this.floors}async getAmenities(e){return this.amenitiesByMapId.get(e)??[]}async getDestinations(e){return this.destinationsByMapId.get(e)??[]}}class j{handlers=new Map;on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t)}off(e,t){t?this.handlers.get(e)?.delete(t):this.handlers.delete(e)}emit(e,t){this.handlers.get(e)?.forEach(e=>{try{e(t)}catch{}})}}var P={version:8,name:"Hospital Indoor Mapping - Hybrid Style Healthcare Compliant",metadata:{description:"Accessibility-focused hospital navigation with proper healthcare standards",author:"Hospital Mapping Team",version:"7.1.0"},sprite:"http://localhost:4000/sprites/sprite",glyphs:"https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",sources:{"osm-tiles":{type:"raster",tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256,attribution:"© OpenStreetMap contributors"},"indoor-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"poi-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"accessibility-data":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"unit-walls":{type:"geojson",data:{type:"FeatureCollection",features:[]}},"route-data":{type:"geojson",data:{type:"FeatureCollection",features:[]},lineMetrics:!0},"route-endpoints":{type:"geojson",data:{type:"FeatureCollection",features:[]}}},layers:[{id:"background",type:"background",paint:{"background-color":"#F5F5F5"}},{id:"osm",type:"raster",source:"osm-tiles",minzoom:0,paint:{"raster-opacity":["interpolate",["linear"],["zoom"],14,.8,16,.6,18,.4]}},{id:"pattern-water",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Water"],paint:{"fill-color":"#5DADE2","fill-opacity":.6}},{id:"pattern-grass",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Grass"],paint:{"fill-color":"#7CB342","fill-opacity":.5}},{id:"pattern-trees",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Trees"],paint:{"fill-color":"#4CAF50","fill-opacity":.4}},{id:"pattern-pavement",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Pavement"],paint:{"fill-color":"#E0E0E0","fill-opacity":.6}},{id:"pattern-outdoor-terrace",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-OutdoorTerrace"],paint:{"fill-color":"#8D6E63","fill-opacity":.3}},{id:"parking-lots",type:"fill",source:"indoor-data",filter:["==",["get","featureType"],"Parking-Lots"],paint:{"fill-color":"#BDBDBD","fill-opacity":.6}},{id:"parking-lots-outline",type:"line",source:"indoor-data",filter:["==",["get","featureType"],"Parking-Lots"],paint:{"line-color":"#757575","line-width":1,"line-dasharray":[3,2]}},{id:"boundary-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"fill-color":"#FAF3E2","fill-opacity":1}},{id:"building-roof-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"fill-color":"#162e51","fill-opacity":1}},{id:"corridors-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],paint:{"fill-color":"#F0E6D1"}},{id:"accessible-routes",type:"line",source:"accessibility-data",minzoom:16.5,filter:["==",["get","accessible"],!0],paint:{"line-color":"#2E7D32","line-width":["interpolate",["linear"],["zoom"],15,2,18,3,20,4],"line-dasharray":[.5,1],"line-opacity":.7}},{id:"units-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Units"],paint:{"fill-color":["case",["has","category"],["match",["get","category"],"healthcare","#7C3AED","emergency","#DC2626","diagnostic","#0EA5E9","surgical","#7C3AED","retail","#FF6B6B","fnb","#FFA500","admin","#A29BFE","amenities","#48C9B0","staff","#74B9FF","security","#1A7A96","waiting","#E1BEE7","#8ecae6"],"#8ecae6"],"fill-opacity":["interpolate",["linear"],["zoom"],15,.85,17,.92,19,.95]}},{id:"units-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Units"],layout:{visibility:"none","line-join":"round","line-cap":"round"},paint:{"line-color":"#162e51","line-opacity":.9,"line-width":["interpolate",["linear"],["zoom"],16,.8,18,1.4,20,2.2]}},{id:"backofhouse-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"fill-color":"#D6D6CC","fill-opacity":.7}},{id:"backofhouse-pattern",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"line-color":"#90A4AE","line-width":.5,"line-opacity":.4}},{id:"backofhouse-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#7B8D93","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"restrooms-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],paint:{"fill-color":"#5B8468","fill-opacity":1}},{id:"restrooms-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#3F5D4A","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"obstacles-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],paint:{"fill-color":"#E8E9ED","fill-opacity":.85}},{id:"obstacles-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#B0B1B5","line-width":["interpolate",["linear"],["zoom"],16,.5,18,.9,20,1.2],"line-opacity":.9}},{id:"escalators-stairs-elevators",type:"fill",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],paint:{"fill-color":"#6A8799","fill-opacity":1}},{id:"escalators-stairs-elevators-outline-2d",type:"line",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#455A64","line-width":["interpolate",["linear"],["zoom"],16,.6,18,1,20,1.4],"line-opacity":.9}},{id:"exits-doors",type:"fill",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Exits","Doors","Exit","Door"]]],paint:{"fill-color":"#4CAF50","fill-opacity":.6}},{id:"kiosks-fill",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Kiosks"],paint:{"fill-color":"#9C27B0","fill-opacity":.7}},{id:"pattern-lounge",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-Lounge"],paint:{"fill-color":"#CE93D8","fill-opacity":.5}},{id:"pattern-indoor-foodcourt",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Pattern-IndoorFoodcourt"],paint:{"fill-color":"#FFCC80","fill-opacity":.6}},{id:"corridors-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],paint:{"line-color":"#BCAAA4","line-width":["interpolate",["linear"],["zoom"],15,.5,18,1,20,1.5]}},{id:"boundary-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],paint:{"line-color":"#263238","line-width":["interpolate",["linear"],["zoom"],12,2,15,2.5,18,3,20,3.5],"line-opacity":["interpolate",["linear"],["zoom"],12,.7,17,.85,18,1]}},{id:"building-roof-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Boundary"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":"#face00","line-width":["interpolate",["linear"],["zoom"],15,1.6,18,2.4,20,3.2],"line-opacity":.95}},{id:"interior-parking-lots",type:"fill",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"fill-color":"#757575","fill-opacity":.8}},{id:"interior-parking-lots-outline",type:"line",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"line-color":"#616161","line-width":1.5}},{id:"building-extrusion",type:"fill-extrusion",source:"indoor-data",filter:["==",["get","featureType"],"Boundary"],maxzoom:16.5,paint:{"fill-extrusion-color":"#162e51","fill-extrusion-height":15,"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"units-wall-extrusion",type:"fill-extrusion",source:"unit-walls",minzoom:16.5,filter:["all",["==",["get","featureType"],"UnitWalls"],["!",["has","custom_height"]]],paint:{"fill-extrusion-color":["case",["has","category"],["match",["get","category"],"healthcare","#5B2DB8","emergency","#B91C1C","diagnostic","#0C7FAB","surgical","#5B2DB8","retail","#CC5555","fnb","#CC8400","admin","#7B73CC","amenities","#3A9B88","staff","#5C96CC","security","#135C75","waiting","#B894C2","#eeeeee"],"#eeeeee"],"fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!1,"fill-extrusion-opacity":.9}},{id:"units-wall-custom-extrusion",type:"fill-extrusion",source:"unit-walls",minzoom:16.5,filter:["has","custom_height"],paint:{"fill-extrusion-color":["case",["has","category"],["match",["get","category"],"healthcare","#5B2DB8","emergency","#B91C1C","diagnostic","#0C7FAB","surgical","#5B2DB8","retail","#CC5555","fnb","#CC8400","admin","#7B73CC","amenities","#3A9B88","staff","#5C96CC","security","#135C75","waiting","#B894C2","#FDFAF2"],"#FDFAF2"],"fill-extrusion-height":["to-number",["get","custom_height"]],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!1,"fill-extrusion-opacity":.95}},{id:"corridors-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["any",["==",["get","featureType"],"Corridors"],["==",["get","featureType"],"Corridor"]],layout:{visibility:"none"},paint:{"fill-extrusion-color":"#FFF8E1","fill-extrusion-height":["step",["zoom"],0,18,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":["step",["zoom"],0,18,.85]}},{id:"backofhouse-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Back-of-house"],paint:{"fill-extrusion-color":"#D6D6CC","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"restrooms-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Restrooms"],paint:{"fill-extrusion-color":"#5B8468","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-opacity":.9}},{id:"obstacles-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Obstacles"],paint:{"fill-extrusion-color":"#E8E9ED","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,.8,17.5,1.5,18.2,2],"fill-extrusion-base":0,"fill-extrusion-opacity":1}},{id:"escalators-stairs-elevators-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["in",["get","featureType"],["literal",["Escalators","Stairs","Elevators"]]],paint:{"fill-extrusion-color":"#6A8799","fill-extrusion-height":["interpolate",["linear"],["zoom"],15.5,0,16.5,2,17.5,3,18.2,3.2],"fill-extrusion-base":0,"fill-extrusion-vertical-gradient":!0,"fill-extrusion-opacity":.9}},{id:"interior-parking-extrusion",type:"fill-extrusion",source:"indoor-data",minzoom:16.5,filter:["==",["get","featureType"],"Interior-ParkingLots"],paint:{"fill-extrusion-color":"#757575","fill-extrusion-height":["interpolate",["linear"],["zoom"],15,0,16,2,17,3,18,4],"fill-extrusion-base":0,"fill-extrusion-opacity":.85}},{id:"route-line",type:"line",source:"route-data",minzoom:16.5,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#007aff","line-width":["interpolate",["linear"],["zoom"],16.5,3,18,5,20,7],"line-opacity":.9}},{id:"route-halo",type:"line",source:"route-data",minzoom:16.5,paint:{"line-color":"white","line-width":["interpolate",["linear"],["zoom"],16.5,5,18,7,20,9],"line-opacity":.7}},{id:"route-endpoint-source",type:"circle",source:"route-endpoints",minzoom:16.5,filter:["==",["get","role"],"source"],paint:{"circle-radius":6,"circle-color":"#ffffff","circle-stroke-width":3,"circle-stroke-color":"#007aff","circle-opacity":1}},{id:"route-endpoint-destination",type:"circle",source:"route-endpoints",minzoom:16.5,filter:["==",["get","role"],"destination"],paint:{"circle-radius":7,"circle-color":"#007aff","circle-stroke-width":3,"circle-stroke-color":"#ffffff","circle-opacity":1}},{id:"poi-accessibility-icons",type:"symbol",source:"poi-data",filter:["==",["get","accessible"],!0],minzoom:16.5,layout:{"icon-image":"wheelchair-accessible","icon-size":["interpolate",["linear"],["zoom"],15,.4,17,.6,19,.8],"icon-allow-overlap":!1,"icon-padding":4}},{id:"poi-destination-circles",type:"circle",source:"poi-data",filter:["==",["get","poiType"],"destination"],minzoom:16.5,paint:{"circle-radius":["interpolate",["linear"],["zoom"],15,3,17,4,19,5,20,6],"circle-color":"#162e51","circle-stroke-width":2,"circle-stroke-color":"#FFFFFF","circle-opacity":.9}},{id:"poi-destination-labels",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"destination"],["==",["get","showLabel"],!0]],minzoom:18.5,layout:{"text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],18.5,12,20,14],"text-offset":[0,.8],"text-anchor":"top","text-font":["Noto Sans Bold"],"text-max-width":12,"text-allow-overlap":!1,"text-rotation-alignment":"viewport"},paint:{"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1}},{id:"poi-entrance-exit-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["any",["!=",["index-of","entrance",["get","keywords"]],-1],["!=",["index-of","exit",["get","keywords"]],-1],["!=",["index-of","door",["get","keywords"]],-1]]],minzoom:15,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],16.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-parking-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["any",["!=",["index-of","parking",["get","keywords"]],-1],["!=",["index-of","park",["get","keywords"]],-1]]],minzoom:14,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],16.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-other-amenity-icons",type:"symbol",source:"poi-data",filter:["all",["==",["get","poiType"],"amenity"],["==",["index-of","entrance",["get","keywords"]],-1],["==",["index-of","exit",["get","keywords"]],-1],["==",["index-of","door",["get","keywords"]],-1],["==",["index-of","parking",["get","keywords"]],-1],["==",["index-of","park",["get","keywords"]],-1]],minzoom:17.5,layout:{"icon-image":["get","iconId"],"icon-size":["interpolate",["linear"],["zoom"],17.5,.5,18,.6,20,.8],"icon-allow-overlap":!0,"icon-padding":2,"icon-optional":!1,"icon-rotation-alignment":"viewport","icon-pitch-alignment":"viewport","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],17.5,0,18.5,0,19,12,20,13],"text-offset":[0,1.3],"text-anchor":"top","text-optional":!0,"text-padding":4,"text-font":["Noto Sans Bold"],"text-rotation-alignment":"viewport"},paint:{"icon-halo-color":"#FFFFFF","icon-halo-width":1.5,"icon-halo-blur":.5,"text-color":"#242930","text-halo-color":"#FFFFFF","text-halo-width":1.5,"text-halo-blur":1,"icon-translate":[0,-20],"icon-translate-anchor":"viewport"}},{id:"poi-you-are-here",type:"symbol",source:"poi-data",filter:["==",["get","isYouAreHere"],!0],minzoom:16.5,layout:{"icon-image":["coalesce",["get","iconId"],"you-are-here"],"icon-size":["interpolate",["linear"],["zoom"],16.5,.8,18,1,20,1.2],"icon-allow-overlap":!0,"icon-ignore-placement":!0,"icon-anchor":"bottom","text-field":["get","name"],"text-size":["interpolate",["linear"],["zoom"],17.5,11,19.5,13],"text-offset":[0,1.2],"text-anchor":"top","text-font":["Noto Sans Bold"],"text-optional":!0},paint:{"text-color":"#ffffff","text-halo-color":"#000000","text-halo-width":1.5,"text-halo-blur":.8}}]};function T(e,t,o={}){e.sources||={},e.sources[t]||(e.sources[t]={type:"geojson",data:{type:"FeatureCollection",features:[]},...o})}function D(e){let t=structuredClone(e.style);if(t.sprite=e.customSprite||t.sprite||e.defaultSpriteUrl,T(t,n),T(t,s),T(t,r),T(t,a,{lineMetrics:!0}),T(t,"route-endpoints"),e.floorLayers)for(const o of Object.keys(e.floorLayers))T(t,`amenity_${o}`),T(t,`destination_${o}`),T(t,`pathTypes_${o}`);return t}const L="https://demotiles.maplibre.org/styles/osm-bright-gl-style/sprite";class U{config;map=null;data=new z;wayfindingProvider={wayfindBetweenWaypoints:async()=>{throw new Error("Wayfinding is not yet implemented in the SDK")}};events=new j;floorsApi;venue=null;spriteKeys=null;debug;logger;defaultCamera=null;viewModes;amenityManager;wayfinding;constructor(e){this.config=e,this.debug=Boolean(e.debug??e.options?.debug),this.logger=c({enabled:this.debug,prefix:"MinuteMapsSDK"}),this.viewModes=new b(()=>this.map),this.floorsApi=new f({getMap:()=>this.map,getConfig:()=>this.config,updatePoiSource:async e=>{const t=this.map;if(!t)return;const o=this.getAllPOIs(e),n=x.toFeatureCollection(o);i.setData(t,r,n)},log:(...e)=>this.logger.debug(...e)}),this.amenityManager=new E({getVenue:()=>this.venue,getFloors:()=>this.floorsApi.getFloors(),getFloorById:e=>this.floorsApi.getFloors().find(t=>t.id===e)??null,log:(...e)=>this.logger.debug(...e)}),this.wayfinding=new S({getMap:()=>this.map,getVenue:()=>this.venue,getYouAreHerePOI:e=>this.getYouAreHerePOI(e),getYouAreHereCoordinates:e=>this.getYouAreHereCoordinates(e),getBoundsPadding:()=>this.getBoundsPadding(),computeRoute:async(e,t)=>{const o=this.config.jmap.customerId,i=this.config.jmap.venueId;if(null==o)throw new Error("config.jmap.customerId is required");if(null==i)throw new Error("config.jmap.venueId is required");return this.wayfindingProvider.wayfindBetweenWaypoints({customerId:o,venueId:i,from:e,to:t})},log:(...e)=>this.logger.debug(...e),warn:(...e)=>this.logger.warn(...e),debug:this.debug})}async init(){const{venueId:t,customerId:o}=this.config?.jmap;if(null==t||null==o)throw new Error("config.jmap.customerId and config.jmap.venueId are required");if(!this.config.container)throw new Error("config.container is required (HTMLElement or element id)");this.logger.debug("init :: starting (JACS)",{venueId:t,customerId:o});try{await this.data.init(this.config),this.logger.debug("providers :: JACS ready"),this.venue=await this.data.loadVenue(),this.logger.debug("JACS :: venue loaded",this.venue.id),this.floorsApi.setFloors(this.venue.floors),this.logger.debug("JACS :: floors loaded",{count:this.venue.floors.length});const t=D({style:P,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:L});this.ensureFloorLayersFromStyle(t),this.map=function(t,o){const i="string"==typeof t?document.getElementById(t):t;if(!i)throw new Error("Map container not found");return new e.Map({container:i,style:o,center:[0,0],zoom:16,pitch:45,bearing:0})}(this.config.container,t),await new Promise(e=>this.map.once("load",()=>e())),this.map.on("error",e=>{const t=e?.error?.message||e?.message||e;this.logger.error("map :: error",{msg:t,sourceId:e?.sourceId,tile:e?.tile})}),this.map.on("styledata",()=>{try{this.viewModes.onStyleData()}catch{}}),this.map.on("move",()=>{if(!this.map)return;const e=F(this.map);e&&this.events.emit("cameraChange",{camera:e})}),this.ensureCoreSources(),this.spriteKeys=await y.getSpriteKeys(this.map);const o=this.floorsApi.getInitialFloor();Boolean(o?.geojson?.features?.length)||this.applyInitialViewFromVenue(),o&&await this.setCurrentFloor(o),this.defaultCamera=F(this.map),this.events.emit("ready",{venue:this.venue}),this.events.emit("floorsLoaded",{})}catch(e){throw this.logger.error("init :: failed (JACS)",e),this.events.emit("error",{error:e}),e}}on(e,t){this.events.on(e,t)}off(e,t){this.events.off(e,t)}addControl(e,t){this.map?.addControl(e,t)}setView(e){!function(e,t){if(!e)return;const{center:o,zoom:i,pitch:n,bearing:r,animate:s,duration:a}=t;if(s){const t=e.getCenter(),s=o||[t.lng,t.lat],l=i??e.getZoom(),u=n??e.getPitch(),c=r??e.getBearing(),d="number"==typeof a?a:900;return void e.flyTo({center:s,zoom:l,pitch:u,bearing:c,duration:d,essential:!0})}o&&e.setCenter(o),void 0!==i&&e.setZoom(i),void 0!==n&&e.setPitch(n),void 0!==r&&e.setBearing(r)}(this.map,e)}get amenities(){return this.amenityManager}resetView(e){!function(e,t,o){if(!e||!t)return;const{center:i,zoom:n,pitch:r,bearing:s}=t,a=Boolean(o?.animate),l="number"==typeof o?.duration?o.duration:800;a?e.easeTo({center:i,zoom:n,pitch:r,bearing:s,duration:l}):e.jumpTo({center:i,zoom:n,pitch:r,bearing:s})}(this.map,this.defaultCamera,e)}set3dEnabled(e){this.viewModes.set3dEnabled(e)}toggle3d(){this.viewModes.toggle3d()}getIs3dEnabled(){return this.viewModes.getIs3dEnabled()}setUnits2dEnabled(e){this.viewModes.setUnits2dEnabled(e)}toggleUnits2d(){this.viewModes.toggleUnits2d()}getIsUnits2dEnabled(){return this.viewModes.getIsUnits2dEnabled()}setFlatMode(e){this.viewModes.setFlatMode(e)}toggleFlatMode(){this.viewModes.toggleFlatMode()}getIsFlatMode(){return this.viewModes.getIsFlatMode()}getFloors(){return this.floorsApi.getFloors()}getCurrentFloor(){return this.floorsApi.getCurrentFloor()}getDefaultFloor(){return this.floorsApi.getDefaultFloor()}getDestinations(e){const t=e||this.getCurrentFloor();return function(e,t){if(!e||!t)return[];try{const o=e.destinations?.getByMap?.({id:t.id})||[];return Array.isArray(o)?o:[]}catch{return[]}}(this.venue,t)}getPolygonLayers(){return this.venue?.polygonLayers??[]}getFloorMapTemplate3d(e){return this.venue?.mapTemplates3d?.[String(e)]??[]}getAllPOIs(e){const t=e||this.getCurrentFloor();if(!t)return[];return function(e,t,o,i){return x.buildPOIs(e,t,o,i)}(t,this.amenityManager.getByFloorId(t.id),this.getDestinations(t),this.spriteKeys)}getYouAreHerePOI(e){return I(this.getAllPOIs(e))}getYouAreHereCoordinates(e){return function(e){const t=I(e);return t?.coordinates??null}(this.getAllPOIs(e))}searchPOIs(e,t){return function(e,t){const o=t.trim().toLowerCase();return o?e.filter(e=>{const t=e.name?.toLowerCase().includes(o),i=(e.keywords||[]).some(e=>e.toLowerCase().includes(o));return t||i}):[]}(this.getAllPOIs(t),e)}async wayfindBetweenWaypoints(e,t,o){return this.wayfinding.wayfindBetweenWaypoints(e,t,o)}async navigateFromKioskToDestination(e){return this.wayfinding.navigateFromKioskToDestination(e)}clearRoute(){this.wayfinding.clearRoute()}getCameraPosition(){return F(this.map)}getMap(){return this.map}destroy(){this.map?.remove(),this.map=null,this.floorsApi.setFloors([]),this.defaultCamera=null,this.viewModes=new b(()=>this.map)}async setCurrentFloor(e){await this.data.ensureFloorGeojson(e),await this.floorsApi.setCurrentFloor(e),this.setFloorLayerVisibility(e.id),this.events.emit("floorChanged",{floor:e})}isReady(){return!!this.map}setFloorLayerVisibility(e){const t=this.map;if(!t)return;const o=this.venue?.styleSheet?.floorLayers;if(o)for(const[i,n]of Object.entries(o)){const o=String(i)===String(e);for(const e of n)t.getLayer(e.id)&&t.setLayoutProperty(e.id,"visibility",o?"visible":"none")}}getBoundsPadding(){return this.config.options?.boundsPadding??50}getVenueBounds(){const e=this.venue?.coordinates;if(!e)return null;const{bottomLng:t,bottomLat:o,topLng:i,topLat:n}=e;if(null==t||null==o||null==i||null==n)return null;const r=Math.min(t,i),s=Math.max(t,i);return[[r,Math.min(o,n)],[s,Math.max(o,n)]]}applyInitialViewFromVenue(){const e=this.map;if(!e)return;const t=this.getVenueBounds();if(t)try{e.resize(),e.fitBounds(t,{padding:this.getBoundsPadding(),animate:!1,duration:0,maxZoom:21})}catch(e){this.logger.warn("applyInitialViewFromVenue :: fitBounds failed",e)}}async loadAndPatchVenueStyle(){const e=this.venue?.styleSheet?.styleUrl,t=this.venue?.styleSheet?.floorLayers,o=P;if("sdkTemplate"===this.config.options?.styleMode)return this.logger.debug("style :: styleMode=sdkTemplate, ignoring venue styleUrl"),D({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:L});if(!e)return this.logger.warn("style :: venue.styleSheet.styleUrl missing, using baseStyle"),D({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:L});try{const o=await fetch(e);if(!o.ok)throw new Error(`HTTP ${o.status} ${o.statusText}`);return D({style:await o.json(),floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:L})}catch(e){return this.logger.warn("style :: failed to fetch venue styleUrl, using baseStyle",e),D({style:o,floorLayers:t,customSprite:this.config.options?.customSprite||null,defaultSpriteUrl:L})}}ensureFloorLayersFromStyle(e){const t=this.venue?.styleSheet?.floorLayers;if(t&&Object.keys(t).length)return;const o={};for(const t of e.layers||[]){const e=t.id||"",i=/_(\d+)$/.exec(e);if(!i)continue;const n=i[1];o[n]||=[],o[n].push({id:e})}this.venue||={},this.venue.styleSheet||={},this.venue.styleSheet.floorLayers=o}ensureCoreSources(){const e=this.map;if(!e)return;const t={type:"FeatureCollection",features:[]};i.ensureGeoJson(e,n),i.ensureGeoJson(e,s),i.ensureGeoJson(e,r),e.getSource(a)||e.addSource(a,{type:"geojson",data:t,lineMetrics:!0}),e.getSource("route-endpoints")||e.addSource("route-endpoints",{type:"geojson",data:t})}}exports.MinuteMaps=U,exports.createMinuteMapsSDK=function(e){return new U(e)};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/map/sources.ts","../src/constants.ts","../src/logger.ts","../src/map/floors.ts","../src/map/sprites.ts","../src/map/viewModes.ts","../src/map/camera.ts","../src/map/poi.ts","../src/map/wayfinding.ts","../src/map/amenities.ts","../src/data/jacsProvider.ts","../src/data/jacsDataProvider.ts","../src/events.ts","../src/sdk.ts","../src/map/scene.ts","../src/map/destinations.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Sources","ensureGeoJson","map","id","getSource","addSource","type","data","features","setData","fc","src","INDOOR_SOURCE_ID","POI_SOURCE_ID","WALLS_SOURCE_ID","ROUTE_SOURCE_ID","EXPECTED_INDOOR_LAYER_IDS","noop","createLogger","opts","enabled","Boolean","prefix","p","String","trim","fmtPrefix","debug","args","console","log","warn","error","FloorManager","applyFloor","floor","wallFeet","updateWalls","updateIndoor","adjusted","Number","isFinite","f","t","properties","featureType","EXTRUDED_INTERIOR_FEATURE_TYPES","has","geom","geometry","inset","turf","buffer","units","insetExtrudedInteriors","geojson","counts","key","Object","entries","sort","a","b","slice","walls","filter","unit","inner","props","custom_height","rawHeight","customProperties","height","wall_height","numericHeight","coordinates","buildWalls","boundsFromGeoJson","aLng","aLat","bLng","bLat","bbox","westLng","Math","min","eastLng","max","southLat","selectDefaultFloor","floors","Array","isArray","length","find","isDefault","selectInitialFloor","desired","match","activateFloor","Error","updatePOIs","getZoom","minIndoorZoom","setZoom","newBounds","isFirstActivation","didFit","shouldFit","newWest","newSouth","newEast","newNorth","view","getBounds","getWest","getEast","getSouth","getNorth","fitBounds","padding","boundsPadding","animate","duration","bearing","getBearing","pitch","getPitch","once","setDidFit","floorId","animated","Set","FloorsApi","currentFloor","getMap","getConfig","updatePoiSource","logFn","constructor","deps","this","setFloors","getFloors","getCurrentFloor","v","getDefaultFloor","getInitialFloor","cfg","options","initialFloor","setCurrentFloor","name","geojsonFeatures","wallThickness","message","payload","logger","spriteCache","Map","Sprites","getSpriteKeys","spriteUrl","sprite","first","url","resolveSpriteUrl","getStyle","fetch","jsonUrl","endsWith","get","res","ok","status","json","keys","set","empty","unitsOutline2dId","unitsWallExtrusionIds","ViewModeController","is3dEnabled","isUnits2dEnabled","isFlatMode","cachedExtrusionIds","extrusionOriginalVisibility","unitsExtrusionOriginalVisibility","unitsOutlineOriginalVisibility","onStyleData","ids","listExtrusionLayerIds","setLayersVisibility","applyUnits2dVisibility","set3dEnabled","vis","forEach","getLayoutProperty","original","getLayer","setLayoutProperty","triggerRepaint","toggle3d","getIs3dEnabled","setUnits2dEnabled","toggleUnits2d","getIsUnits2dEnabled","setFlatMode","toggleFlatMode","getIsFlatMode","outlineVis","style","layers","byType","l","expected","presentExpected","layer","push","layerIds","visibility","captureCameraState","center","getCenter","round","value","precision","rounded","toFixed","is","formatNumber","lng","lat","zoom","PoiManager","ctx","amenities","destinations","Promise","all","getAmenities","getDestinations","pois","buildPOIs","spriteKeys","toFeatureCollection","mapId","youAreHereAssigned","amenity","waypoints","isKiosk","isKioskAmenity","defaultIconId","getIconIdFromSvg","svg","undefined","youAreHereIconId","wp","hasCoordinates","isThisWaypointYouAreHere","iconId","waypointId","_","amenityType","keywords","showLabel","isYouAreHere","waypoint","destination","poi","poiType","getYouAreHerePOI","coords","m","exec","toLower","toLowerCase","k","extensors","extType","nameLooksLikeKiosk","includes","keywordsContainKiosk","some","WayfindingManager","routeAnimationFrame","routeAnimationStart","routeAnimationDurationMs","routeActive","buildWayfindFeatureCollection","result","pushPoint","raw","xyz","points","path","paths","resultShape","hasPoints","hasPath","hasPaths0Points","extractedCount","count","last","wayfindBetweenWaypoints","fromWaypoint","toWaypoint","getVenue","routeResult","computeRoute","err","featureCount","startRouteAnimation","mode","centerMode","line","dest","flyTo","lngs","c","lats","minLng","maxLng","bounds","getBoundsPadding","navigateFromKioskToDestination","venue","youAreHere","destWaypoint","kioskWaypoint","fromCoords","getYouAreHereCoordinates","rawDest","toCoords","showRouteContext","clearRoute","stopRouteAnimation","setPoiLayersVisible","visible","visibilityValue","updateRouteEndpoints","from","to","role","clearRouteEndpoints","hideRouteContext","window","cancelAnimationFrame","performance","now","step","mapInstance","elapsed","clamped","head","tail","lineGradient","haloGradient","setPaintProperty","requestAnimationFrame","AmenityManager","getFloorById","loadForFloor","getByMap","getAll","flatMap","getByFloorId","getAllKiosks","getKioskForFloor","logKioskForFloor","kiosk","JacsProvider","proxyBaseUrl","direct","fetchImpl","tokenCache","config","scope","globalThis","rawFetch","bind","host","normalizeHost","clientId","username","password","getPolygonLayers","encodeURIComponent","customerId","getJson","extractArray","getFloorMapTemplate3d","venueId","buildingId","getVenueAll","getFloorMapGeojson","getBuildingFull","query","URLSearchParams","mapProfile","toString","full","getBuildings","getStylesheet3d","invalidateToken","base","replace","startsWith","method","headers","Accept","body","safeReadText","statusText","token","getJwtToken","joinUrl","Authorization","items","results","Date","cached","expiresAtMs","tokenUrl","formBody","access_token","jwt","accessToken","expiresInSecRaw","expires_in","expiresIn","expires","ttl","expiresInSec","ttlSec","text","JacsDataProvider","jacs","destinationsByMapId","amenitiesByMapId","venueLike","init","j","auth","loadVenue","jmap","venueAll","buildings","firstBuilding","waypointsByMapId","list","rawFloors","defaultFloorId","sdkFloors","shortName","sequence","level","preference","mapTemplate3d","_waypoints","clear","d","polygonLayers","getAllFloors","styleSheet","ensureFloorGeojson","normalizeGeojsonPayload","e","preloadRemainingFloors","pending","EventBus","handlers","on","event","cb","add","off","delete","emit","fn","ensureGeojsonSource","extra","sources","patchVenueStyleForSdk","next","structuredClone","customSprite","defaultSpriteUrl","lineMetrics","floorLayers","MinuteMaps","wayfindingProvider","async","events","floorsApi","defaultCamera","viewModes","amenityManager","wayfinding","getAllPOIs","collection","container","finalStyle","baseStyle","ensureFloorLayersFromStyle","el","document","getElementById","maplibregl","createScene","msg","sourceId","tile","camera","ensureCoreSources","initial","applyInitialViewFromVenue","addControl","control","position","setView","currentCenter","targetCenter","targetZoom","targetPitch","targetBearing","effectiveDuration","essential","setCenter","setPitch","setBearing","setMapView","resetView","state","easeTo","jumpTo","resetMapView","target","getDestinationsForFloor","mapTemplates3d","buildAllPOIsForFloor","getYouAreHerePoiFromList","getYouAreHereCoordsFromList","searchPOIs","q","matchesName","matchesKeywords","searchPoisInList","getCameraPosition","destroy","remove","setFloorLayerVisibility","isReady","activeFloorId","isActive","getVenueBounds","bottomLng","bottomLat","topLng","topLat","resize","maxZoom","loadAndPatchVenueStyle","styleUrl","fallback","styleMode","existing","derived","floorKey","emptyFc"],"mappings":"0UAIO,MAAMA,EAAU,CACrB,aAAAC,CAAcC,EAAkBC,GACzBD,EAAIE,UAAUD,IACjBD,EAAIG,UAAUF,EAAI,CAChBG,KAAM,UACNC,KAAM,CAAED,KAAM,oBAAqBE,SAAU,KAGnD,EACA,OAAAC,CAAQP,EAAkBC,EAAYO,GACpC,MAAMC,EAAWT,EAAIE,UAAUD,GAC/BQ,GAAKF,UAAUC,EACjB,GCdWE,EAAmB,cACnBC,EAAgB,WAChBC,EAAkB,aAClBC,EAAkB,aAElBC,EAA4B,CACvC,gBACA,mBACA,aACA,uBACA,8BACA,iBACA,oBACA,sBCNIC,EAAO,OAOP,SAAUC,EAAaC,GAC3B,MAAMC,EAAUC,QAAQF,GAAMC,SACxBE,EAPR,SAAmBA,GACjB,MAAMC,EAAIC,OAAOF,GAAU,IAAIG,OAC/B,OAAOF,EAAI,IAAIA,KAAO,EACxB,CAIiBG,CAAUP,GAAMG,QAAU,iBAEzC,OAAKF,EASE,CACLO,MAAO,IAAIC,IAASC,QAAQF,MAAML,KAAWM,GAC7CE,IAAK,IAAIF,IAASC,QAAQC,IAAIR,KAAWM,GACzCG,KAAM,IAAIH,IAASC,QAAQE,KAAKT,KAAWM,GAC3CI,MAAO,IAAIJ,IAASC,QAAQG,MAAMV,KAAWM,IAZtC,CACLD,MAAOV,EACPa,IAAKb,EACLc,KAAMd,EACNe,MAAOf,EAUb,CC3BeC,EAAa,CAAEE,SAAS,EAAME,OAAQ,kBAC9C,MAAMW,EAAe,CAC1B,UAAAC,CAAWhC,EAAkBiC,EAAYC,EAAW,GAClDH,EAAaI,YAAYnC,EAAKiC,EAAOC,GACrCH,EAAaK,aAAapC,EAAKiC,EAAOC,EACxC,EACA,YAAAE,CAAapC,EAAkBiC,EAAYC,EAAW,GACpD,MAAMG,EA6HV,SACE7B,EACA0B,GAEA,IAAK1B,EAAI,MAAO,CAAEJ,KAAM,oBAAqBE,SAAU,IACvD,IAAKgC,OAAOC,SAASL,IAAaA,GAAY,EAAG,OAAO1B,EAExD,MAAMF,GAAYE,EAAGF,UAAY,IAAIN,IAAKwC,IACxC,MAAMC,EAAID,GAAGE,YAAYC,YACzB,IAAKF,IAAMG,EAAgCC,IAAIJ,GAAI,OAAOD,EAC1D,MAAMM,EAAON,GAAGO,UAAU3C,KAC1B,GAAa,YAAT0C,GAA+B,iBAATA,EAAyB,OAAON,EAE1D,IACE,MAAMQ,EAAQC,EAAKC,OAAOV,GAAWN,EAAU,CAAEiB,MAAO,SACxD,OAAKH,GAAOD,SACL,IAAKP,EAAGO,SAAUC,EAAMD,UADFP,CAE/B,CAAE,MACA,OAAOA,CACT,IAGF,MAAO,IAAKhC,EAAIF,WAClB,CApJqB8C,CAAuBnB,EAAMoB,QAASnB,GACvDpC,EAAQS,QAAQP,EAAKU,EAAkB2B,GAEvC,IACE,MAAM/B,EAAW2B,GAAOoB,SAAS/C,UAAY,GACvCgD,EAAiC,CAAA,EACvC,IAAK,MAAMd,KAAKlC,EAAU,CACxB,MAAMmC,EAAID,GAAGE,YAAYC,YACnBY,EAAW,MAALd,EAAY,YAAcnB,OAAOmB,GAC7Ca,EAAOC,IAAQD,EAAOC,IAAQ,GAAK,CACrC,CACYC,OAAOC,QAAQH,GAAQI,KAAK,CAACC,EAAGC,IAAMA,EAAE,GAAKD,EAAE,IAAIE,MAAM,EAAG,GAC1E,CAAE,MAAO,CACX,EACA,WAAA1B,CAAYnC,EAAkBiC,EAAYC,EAAW,GACnD,MAAM4B,EAuIV,SAAoBtD,EAA+B0B,EAAW,GAC5D,MACM5B,GADgBE,EAAGF,UAAY,IAAIyD,OAAQvB,GAAyC,UAA9BA,EAAEE,YAAYC,aAC5C3C,IAAKgE,IACjC,IACE,MAAMC,EAAQhB,EAAKC,OAAOc,GAAc9B,EAAU,CAAEiB,MAAO,SAC3D,IAAKc,EAAO,OAAO,KAEnB,MAAMC,EAAa,IAAKF,EAAKtB,WAAYC,YAAa,aACtD,GAA2B,MAAvBuB,EAAMC,cAAuB,CAC/B,MAAMC,EACJF,EAAMG,kBAAkBF,eACxBD,EAAMC,eACND,EAAMI,QACNJ,EAAMK,YACFC,EAAqC,iBAAdJ,EAAyBA,EAAY9B,OAAO8B,GACrE9B,OAAOC,SAASiC,KAAgBN,EAAMC,cAAgBK,EAC5D,CAEA,MAAO,CACLpE,KAAM,UACN2C,SAAU,CACR3C,KAAM,UACNqE,YAAa,CAACT,EAAKjB,SAAS0B,YAAY,GAAIR,EAAMlB,SAAS0B,YAAY,KAEzE/B,WAAYwB,EAEhB,CAAE,MACA,OAAO,IACT,IACCH,OAAO5C,SACV,MAAO,CAAEf,KAAM,oBAAqBE,WACtC,CAtKkBoE,CAAWzC,EAAMoB,QAASnB,GACxCpC,EAAQS,QAAQP,EAAKY,EAAiBkD,EACxC,EACA,iBAAAa,CAAkBnE,GAChB,IACE,MAAOoE,EAAMC,EAAMC,EAAMC,GAAQ9B,EAAK+B,KAAKxE,GAErCyE,EAAUC,KAAKC,IAAIP,EAAME,GACzBM,EAAUF,KAAKG,IAAIT,EAAME,GACzBQ,EAAWJ,KAAKC,IAAIN,EAAME,GAGhC,MAAO,CACL,CAACE,EAASK,GACV,CAACF,EAJcF,KAAKG,IAAIR,EAAME,IAMlC,CAAE,MACA,OAAO,IACT,CACF,EACAQ,mBAAmBC,GACZC,MAAMC,QAAQF,IAA6B,IAAlBA,EAAOG,SAC9BH,EAAOI,KAAKpD,GAAKA,EAAEqD,YAAcL,EAAO,KADW,KAG5D,kBAAAM,CAAmBN,EAAiBO,GAClC,IAAKN,MAAMC,QAAQF,IAA6B,IAAlBA,EAAOG,OAAc,OAAO,KAC1D,GAAII,QAA2C,CAC7C,MAAMC,EAAQR,EAAOI,KAAKpD,GAAKA,EAAEvC,KAAO8F,GACxC,GAAIC,EAAO,OAAOA,CACpB,CACA,OAAOjE,EAAawD,mBAAmBC,EACzC,EACA,mBAAMS,CAAcjG,EAAkBiC,EAAchB,GAClD,IAAKjB,EAAK,MAAM,IAAIkG,MAAM,6CAQ1B,GANIjE,GAAOoB,SACTtB,EAAaC,WAAWhC,EAAKiC,EAAOhB,EAAKiB,gBAGrCjB,EAAKkF,WAAWlE,IAEjBA,GAAOoB,QAEV,YADIrD,EAAIoG,UAAYnF,EAAKoF,eAAerG,EAAIsG,QAAQrF,EAAKoF,gBAI3D,MAAME,EAAYxE,EAAa4C,kBAAkB1C,EAAMoB,SACvD,IAAKkD,EAAW,OAEhB,MAAMC,GAAqBvF,EAAKwF,OAChC,IAAIC,EAAYF,EAChB,IAAKE,EAAW,CAKd,OAAQC,EAASC,IAAYC,EAASC,IAAaP,EAC7CQ,EAAO/G,EAAIgH,YAMjBN,EAJEK,EAAKE,UAAYJ,GACjBE,EAAKG,UAAYP,GACjBI,EAAKI,WAAaL,GAClBC,EAAKK,WAAaR,CAEtB,CAEIF,GAGF1G,EAAIqH,UAAUd,EAAkB,CAC9Be,QAASrG,EAAKsG,cACdC,SAAUhB,EACViB,SAAU,IACVC,QAAS1H,EAAI2H,aACbC,MAAO5H,EAAI6H,aAEb7H,EAAI8H,KAAK,UAAW,KACd9H,EAAIoG,UAAYnF,EAAKoF,eAAerG,EAAIsG,QAAQrF,EAAKoF,iBAE3DpF,EAAK8G,WAAU,GACf9G,EAAKW,MAAM,uBAAwB,CAAEoG,QAAS/F,EAAMhC,GAAIgI,UAAWzB,MAE/DxG,EAAIoG,UAAYnF,EAAKoF,eAAerG,EAAIsG,QAAQrF,EAAKoF,eACzDpF,EAAKW,MAAM,kDAAmD,CAAEoG,QAAS/F,EAAMhC,KAEnF,GAgBI2C,EAAkC,IAAIsF,IAAI,CAC9C,YACA,gBACA,YACA,aACA,SACA,oBAwEWC,EACH3C,OAAkB,GAClB4C,aAA6B,KAC7B3B,QAAS,EAET4B,OACAC,UACAC,gBACAC,MAER,WAAAC,CAAYC,GACVC,KAAKN,OAASK,EAAKL,OACnBM,KAAKL,UAAYI,EAAKJ,UACtBK,KAAKJ,gBAAkBG,EAAKH,gBAC5BI,KAAKH,MAAQE,EAAK9G,GACpB,CAEQ,GAAAA,IAAOF,GACTiH,KAAKH,OAAOG,KAAKH,SAAS9G,EAChC,CAEA,SAAAkH,CAAUpD,GACRmD,KAAKnD,OAASA,CAChB,CAEA,SAAAqD,GACE,MAAO,IAAIF,KAAKnD,OAClB,CAEA,eAAAsD,GACE,OAAOH,KAAKP,YACd,CAEA,SAAAL,CAAUgB,GACRJ,KAAKlC,OAASsC,CAChB,CAEA,eAAAC,GACE,OAAOjH,EAAawD,mBAAmBoD,KAAKnD,OAC9C,CAEA,eAAAyD,GACE,MAAMC,EAAMP,KAAKL,YACjB,OAAOvG,EAAa+D,mBAAmB6C,KAAKnD,OAAQ0D,EAAIC,SAASC,aACnE,CAEA,qBAAMC,CAAgBpH,GACpB,MAAMjC,EAAM2I,KAAKN,SACjB,IAAKrI,EAAK,MAAM,IAAIkG,MAAM,0BAC1ByC,KAAKP,aAAenG,EAEpB0G,KAAK/G,IAAI,2BAA4B,CACnC3B,GAAIgC,EAAMhC,GACVqJ,KAAMrH,EAAMqH,KACZC,gBAAiBtH,EAAMoB,SAAS/C,UAAUqF,QAAU,IAGtD,MAAMuD,EAAMP,KAAKL,YACXpG,EAAWgH,EAAIC,SAASK,eAAiB,EACzCjC,EAAgB2B,EAAIC,SAAS5B,eAAiB,GAC9ClB,EAAgB6C,EAAIC,SAAS9C,eAAiB,WAE9CtE,EAAakE,cAAcjG,EAAKiC,EAAO,CAC3CC,WACAiE,WAAY3D,GAAKmG,KAAKJ,gBAAgB/F,GACtCiE,OAAQkC,KAAKlC,OACbsB,UAAWgB,IAAOJ,KAAKlC,OAASsC,GAChCxB,gBACAlB,gBACAzE,IAAK,CAAC6H,EAASC,IAAYf,KAAK/G,IAAI6H,EAASC,IAEjD,ECnRF,MAAMC,EAAS3I,EAAa,CAAEE,SAAS,EAAME,OAAQ,kBAE/CwI,EAAc,IAAIC,IAEXC,EAAU,CACrB,mBAAMC,CAAc/J,GAClB,MAAMgK,EAwBV,SAA0BC,GACxB,IAAKA,EAAQ,OACb,GAAsB,iBAAXA,EAAqB,OAAOA,EACvC,GAAIxE,MAAMC,QAAQuE,GAAS,CACzB,MAAMC,EAAQD,EAAO,GACrB,GAAIC,GAA8B,iBAAdA,EAAMC,IAAkB,OAAOD,EAAMC,GAC3D,CACA,GAAsB,iBAAXF,GAAkC,OAAXA,EAAiB,CACjD,MAAME,EAAOF,GAAgBE,IAC7B,GAAmB,iBAARA,EAAkB,OAAOA,CACtC,CACA,MACF,CApCsBC,CAAiBpK,GAAKqK,cAAcJ,QACtD,IAAKD,GAA8B,mBAAVM,MAAsB,OAAO,IAAIpC,IAE1D,MAAMqC,EAAUP,EAAUQ,SAAS,SAAWR,EAAY,GAAGA,SAC7D,GAAIJ,EAAY/G,IAAI0H,GAClB,OAAOX,EAAYa,IAAIF,GAGzB,IACE,MAAMG,QAAYJ,MAAMC,GACxB,IAAKG,EAAIC,GAAI,MAAM,IAAIzE,MAAM,+BAA+BwE,EAAIE,WAChE,MAAMvK,QAAaqK,EAAIG,OACjBC,EAAO,IAAI5C,IAAI1E,OAAOsH,KAAKzK,GAAQ,CAAA,IAEzC,OADAuJ,EAAYmB,IAAIR,EAASO,GAClBA,CACT,CAAE,MAAOhJ,GACP6H,EAAO9H,KAAK,sBAAuB0I,EAASzI,GAC5C,MAAMkJ,EAAQ,IAAI9C,IAElB,OADA0B,EAAYmB,IAAIR,EAASS,GAClBA,CACT,CACF,GCzBF,MAAMC,EAAmB,mBACnBC,EAAwB,CAAC,uBAAwB,qCAE1CC,EACM9C,OACT+C,aAAc,EACdC,kBAAmB,EACnBC,YAAa,EAEbC,mBAAsC,KACtCC,4BAAiE,KACjEC,iCAAsE,KACtEC,+BAAoD,KAE5D,WAAAjD,CAAYJ,GACVM,KAAKN,OAASA,CAChB,CAEA,WAAAsD,GAEE,GADYhD,KAAK3I,IACjB,CAIA,GAFA2I,KAAK4C,mBAAqB,MAErB5C,KAAKyC,YAAa,CACrB,MAAMQ,EAAMjD,KAAKkD,wBACjBlD,KAAKmD,oBAAoBF,EAAK,OAChC,CAEIjD,KAAK0C,kBACP1C,KAAKoD,wBAAuB,EAVpB,CAYZ,CAEA,YAAAC,CAAa9K,GACX,MAAMlB,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,OAEV,MAAM4L,EAAMjD,KAAKkD,wBAGjB,GAFAlD,KAAK4C,mBAAqBK,GAErBjD,KAAK6C,4BAA6B,CACrC,MAAMS,EAAkC,CAAA,EACxCL,EAAIM,QAAQjM,IACV,IACE,MAAM8I,EAAK/I,EAAImM,kBAAkBlM,EAAI,eAAgC,UACrEgM,EAAIhM,GAAM8I,CACZ,CAAE,MACAkD,EAAIhM,GAAM,SACZ,IAEF0I,KAAK6C,4BAA8BS,CACrC,CAEA,GAAI/K,EAAS,CACX,MAAMkL,EAAWzD,KAAK6C,6BAA+B,CAAA,EACrDI,EAAIM,QAAQjM,IACV,MAAM8I,EAAIqD,EAASnM,IAAO,UAC1B,IACMD,EAAIqM,SAASpM,IAAKD,EAAIsM,kBAAkBrM,EAAI,aAAc8I,EAChE,CAAE,MAAO,GAEb,MACEJ,KAAKmD,oBAAoBF,EAAK,QAGhCjD,KAAKyC,YAAclK,EACnBlB,EAAIuM,gBACN,CAEA,QAAAC,GACE7D,KAAKqD,cAAcrD,KAAKyC,YAC1B,CAEA,cAAAqB,GACE,OAAO9D,KAAKyC,WACd,CAEA,iBAAAsB,CAAkBxL,GAChB,MAAMlB,EAAM2I,KAAK3I,IACZA,IACL2I,KAAKoD,uBAAuB7K,GAC5ByH,KAAK0C,iBAAmBnK,EACxBlB,EAAIuM,iBACN,CAEA,aAAAI,GACEhE,KAAK+D,mBAAmB/D,KAAK0C,iBAC/B,CAEA,mBAAAuB,GACE,OAAOjE,KAAK0C,gBACd,CAEA,WAAAwB,CAAY3L,GACLyH,KAAK3I,MACNkB,GACFyH,KAAKqD,cAAa,GAClBrD,KAAK+D,mBAAkB,KAEvB/D,KAAK+D,mBAAkB,GACvB/D,KAAKqD,cAAa,IAEpBrD,KAAK2C,WAAapK,EACpB,CAEA,cAAA4L,GACEnE,KAAKkE,aAAalE,KAAK2C,WACzB,CAEA,aAAAyB,GACE,OAAOpE,KAAK2C,UACd,CAEQ,sBAAAS,CAAuB7K,GAC7B,MAAMlB,EAAM2I,KAAK3I,IACjB,GAAKA,EAAL,CAEA,IAAK2I,KAAK8C,iCAAkC,CAC1C,MAAMQ,EAAkC,CAAA,EACxCf,EAAsBgB,QAAQjM,IAC5B,IACE,MAAM8I,EAAK/I,EAAImM,kBAAkBlM,EAAI,eAAgC,UACrEgM,EAAIhM,GAAM8I,CACZ,CAAE,MACAkD,EAAIhM,GAAM,SACZ,IAEF0I,KAAK8C,iCAAmCQ,CAC1C,CAEA,GAA2C,MAAvCtD,KAAK+C,+BACP,IACE,MAAM3C,EAAI/I,EAAImM,kBAAkBlB,EAAkB,cAClDtC,KAAK+C,+BAAiC3C,GAAK,MAC7C,CAAE,MACAJ,KAAK+C,+BAAiC,MACxC,CAGF,GAAI1L,EAAIqM,SAASpB,GAAmB,CAClC,MAAM+B,EAAa9L,EAAU,UAAayH,KAAK+C,gCAAkC,OACjF,IACE1L,EAAIsM,kBAAkBrB,EAAkB,aAAc+B,EACxD,CAAE,MAAO,CACX,CAEA,GAAI9L,EACFgK,EAAsBgB,QAAQjM,IAC5B,GAAID,EAAIqM,SAASpM,GACf,IACED,EAAIsM,kBAAkBrM,EAAI,aAAc,OAC1C,CAAE,MAAO,QAGR,CACL,MAAMmM,EAAWzD,KAAK8C,kCAAoC,CAAA,EAC1DP,EAAsBgB,QAAQjM,IAC5B,MAAM8I,EAAIqD,EAASnM,IAAO,UAC1B,GAAID,EAAIqM,SAASpM,GACf,IACED,EAAIsM,kBAAkBrM,EAAI,aAAc8I,EAC1C,CAAE,MAAO,GAGf,CAjDU,CAkDZ,CAEQ,qBAAA8C,GACN,MAAM7L,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,MAAO,GACjB,IACE,MAAMiN,EAAQjN,EAAIqK,WACZ6C,EAASD,GAAOC,QAAU,GAC1BC,EAASD,EAAOnJ,OAAOqJ,GAA0B,mBAApBA,GAAWhN,MAA2BJ,IAAIoN,GAAKA,EAAEnN,IAC9EoN,EAAW5H,MAAMC,QAAQ5E,GAC1BA,EACD,GACEwM,EAA4B,GAKlC,OAJAD,EAASnB,QAAQjM,IACf,MAAMsN,EAAQL,EAAOtH,KAAKwH,GAAKA,EAAEnN,KAAOA,GACpCsN,GAAiC,mBAAvBA,EAAcnN,MAA2BkN,EAAgBE,KAAKvN,KAEvE,IAAI,IAAIiI,IAAY,IAAIiF,KAAWG,IAC5C,CAAE,MACA,OAAO3E,KAAK4C,oBAAsB,EACpC,CACF,CAEQ,mBAAAO,CAAoB2B,EAAoBC,GAC9C,MAAM1N,EAAM2I,KAAK3I,IACZA,GACLyN,EAASvB,QAAQjM,IACf,IACMD,EAAIqM,SAASpM,IAAKD,EAAIsM,kBAAkBrM,EAAI,aAAcyN,EAChE,CAAE,MAAO,GAEb,CAEA,OAAY1N,GACV,OAAO2I,KAAKN,QACd,ECjJI,SAAUsF,EAAmB3N,GACjC,IAAKA,EAAK,OAAO,KACjB,MAAM4N,EAAS5N,EAAI6N,YACbC,EAAQ,CAACC,EAAeC,EAAY,IA8F5C,SAAsBD,EAAeC,EAAY,GAC/C,MAAMC,EAAU3L,OAAOyL,EAAMG,QAAQF,IACrC,OAAOxK,OAAO2K,GAAGF,GAAS,GAAM,EAAIA,CACtC,CAjGkDG,CAAaL,EAAOC,GAEpE,MAAO,CACLJ,OAAQ,CAACE,EAAMF,EAAOS,KAAMP,EAAMF,EAAOU,MACzCC,KAAMT,EAAM9N,EAAIoG,UAAW,GAC3BwB,MAAOkG,EAAM9N,EAAI6H,WAAY,GAC7BH,QAASoG,EAAM9N,EAAI2H,aAAc,GAErC,CC5DO,MAAM6G,EAAa,CACxB,gBAAMrI,CAAWnG,EAAkBiC,EAAcwM,GAC/C,MAAOC,EAAWC,SAAsBC,QAAQC,IAAI,CAClDJ,EAAIK,aAAa7M,EAAMhC,IACvBwO,EAAIM,gBAAgB9M,EAAMhC,MAGtB+O,EAAOR,EAAWS,UAAUhN,EAAOyM,EAAWC,EAAcF,EAAIS,YACtEpP,EAAQS,QAAQP,EAAKW,EAAe6N,EAAWW,oBAAoBH,GACrE,EAEA,SAAAC,CACEhN,EACAyM,EAAuB,GACvBC,EAA8B,GAC9BO,GAEA,MAAME,EAAQnN,GAAOhC,GACrB,IAAKmP,EAAO,MAAO,GAEnB,MAAMJ,EAAc,GAEpB,IAAIK,GAAqB,EAGzB,IAAK,MAAMC,KAAWZ,GAAa,GAAI,CACrC,IAAKY,EAAQC,UAAW,SAExB,MAAMC,EAAUC,EAAeH,GAEzBI,EAAgBC,EAAiBL,EAAQM,IAAKV,SAAeW,EAC7DC,EAAmB,eAEzB,IAAK,MAAMC,KAAMT,EAAQC,WAAa,GAAI,CACxC,GAAIQ,EAAGX,QAAUA,IAAUY,EAAeD,EAAGtL,aAAc,SAC3D,MAAO4J,EAAKC,GAAOyB,EAAGtL,YAEhBwL,EACJT,IAAYH,EAERa,EAASD,EACXH,EACAJ,EAEES,EACHJ,EAAW9P,IACX8P,EAAWK,GAAGnQ,GAEjB+O,EAAKxB,KAAK,CACRvN,GAAIqP,EAAQrP,GACZG,KAAM,UACNkJ,KAAM2G,EAA2B,eAAiBX,EAAQhG,MAAQ,UAClE7E,YAAa,CAAC4J,EAAKC,GACnB4B,SACAlI,QAAS/F,EAAMhC,GACfoQ,YAAaf,EAAQlP,KACrBkQ,SAAUhB,EAAQgB,UAAY,GAC9BC,WAAW,EACXC,aAAcP,EACdE,aACAM,SAAUV,IAGRE,IACFZ,GAAqB,EAEzB,CACF,CAGA,IAAK,MAAMqB,KAAe/B,GAAgB,GACxC,GAAK+B,EAAYnB,UAEjB,IAAK,MAAMQ,KAAMW,EAAYnB,WAAa,GAAI,CAC5C,GAAIQ,EAAGX,QAAUA,IAAUY,EAAeD,EAAGtL,aAAc,SAC3D,MAAO4J,EAAKC,GAAOyB,EAAGtL,YAEhB0L,EACHJ,EAAW9P,IACX8P,EAAWK,GAAGnQ,GAEjB+O,EAAKxB,KAAK,CACRvN,GAAIyQ,EAAYzQ,GAChBG,KAAM,cACNkJ,KAAMoH,EAAYpH,MAAQ,cAC1B7E,YAAa,CAAC4J,EAAKC,GACnBtG,QAAS/F,EAAMhC,GACfsQ,WAAW,EACXJ,aACAM,SAAUV,GAEd,CAGF,OAAOf,CACT,EAEAG,oBAAoBH,IAiBX,CAAE5O,KAAM,oBAAqBE,SAhBnB0O,EAAKhP,IAAI2Q,IAAG,CAC3BvQ,KAAM,UACN2C,SAAU,CAAE3C,KAAM,QAAkBqE,YAAakM,EAAIlM,aACrD/B,WAAY,CACVzC,GAAI0Q,EAAI1Q,GACRqJ,KAAMqH,EAAIrH,KACVsH,QAASD,EAAIvQ,KACb8P,OAAQS,EAAIT,OACZlI,QAAS2I,EAAI3I,QACbsI,SAAUK,EAAIL,SACdD,YAAaM,EAAIN,YACjBE,WAA6B,IAAlBI,EAAIJ,UACfC,cAAmC,IAArBG,EAAIH,oBAwBpB,SAAUK,EAAiB7B,GAE/B,OADcA,EAAKpJ,KAAKvE,GAAMA,EAAUmP,eACxB,IAClB,CAwBA,SAASR,EAAec,GACtB,OAAOrL,MAAMC,QAAQoL,IAAWA,EAAOnL,QAAU,CACnD,CAEA,SAASgK,EAAiBC,EAAcV,GACtC,IAAKU,IAAQV,EAAY,OAAO,KAChC,MAAM6B,EAAI,wCAAwCC,KAAKpB,GACjD3P,EAAK8Q,IAAI,GACf,OAAO9Q,GAAMiP,EAAWrM,IAAI5C,GAAMA,EAAK,IACzC,CAEM,SAAUwP,EAAeH,GAC7B,MAAM2B,EAAWlI,IAAuBA,GAAK,IAAImI,cAE3C5H,EAAO2H,EAAQ3B,EAAQhG,MACvBgH,GAAYhB,EAAQgB,UAAY,IAAItQ,IAAImR,GAAKF,EAAQE,IACrDC,EAAa9B,EAAQ8B,WAAa,GAClCC,EAAUJ,EAAQG,EAAUhR,MAE5BkR,EACK,UAAThI,GAAoBA,EAAKiI,SAAS,SAE9BC,EACJlB,EAASmB,KAAKN,GAAKA,EAAEI,SAAS,UAKhC,OAAOD,GAAsBE,GAFf,eAAZH,CAGJ,OCnLaK,EACMhJ,KACTiJ,oBAAqC,KACrCC,oBAAqC,KAC5BC,yBAA2B,KACpCC,aAAc,EAEtB,WAAArJ,CAAYC,GACVC,KAAKD,KAAOA,CACd,CAKQ,6BAAAqJ,CAA8BC,GACpC,IAAKA,EAEH,OADArJ,KAAKD,KAAK7G,OAAO,wBACV,KAGT,MAAMiP,EAA6B,GAE7BmB,EAAa5Q,IACjB,IAAKA,EAAG,OAER,MAAM6Q,EACJ7Q,EAAEoD,aACFpD,EAAE8Q,KACF9Q,EAAE+O,GAAG3L,YAEP,GAAIgB,MAAMC,QAAQwM,IAAQA,EAAIvM,QAAU,EAAG,CACzC,MAAM0I,EAAM/L,OAAO4P,EAAI,IACjB5D,EAAMhM,OAAO4P,EAAI,IACnB5P,OAAOC,SAAS8L,IAAQ/L,OAAOC,SAAS+L,IAC1CwC,EAAOtD,KAAK,CAACa,EAAKC,GAEtB,GAiBF,OAdI7I,MAAMC,QAAQsM,GACZA,EAAOrM,OAAS,GAAKF,MAAMC,QAAQsM,EAAO,IAAII,QAChDJ,EAAO,GAAGI,OAAOlG,QAAQ+F,GAEzBD,EAAO9F,QAAQ+F,GAERxM,MAAMC,QAASsM,EAAeI,QACrCJ,EAAeI,OAAOlG,QAAQ+F,GACvBxM,MAAMC,QAASsM,EAAeK,MACrCL,EAAeK,KAAKnG,QAAQ+F,GACrBxM,MAAMC,QAASsM,EAAeM,QAAQ,IAAIF,SACjDJ,EAAeM,MAAM,GAAGF,OAAOlG,QAAQ+F,GAGvCnB,EAAOnL,OAAS,GAClBgD,KAAKD,KAAK7G,OAAO,oDAAqD,CACpE0Q,YAAa,CACX7M,QAASD,MAAMC,QAAQsM,GACvBQ,UAAW/M,MAAMC,QAASsM,EAAeI,QACzCK,QAAShN,MAAMC,QAASsM,EAAeK,MACvCK,gBAAiBjN,MAAMC,QAASsM,EAAeM,QAAQ,IAAIF,SAE7DO,eAAgB7B,EAAOnL,SAElB,OAGTgD,KAAKD,KAAK9G,MAAM,6CAA8C,CAC5DgR,MAAO9B,EAAOnL,OACduE,MAAO4G,EAAO,GACd+B,KAAM/B,EAAOA,EAAOnL,OAAS,KAGxB,CACLvF,KAAM,oBACNE,SAAU,CACR,CACEF,KAAM,UACN2C,SAAU,CACR3C,KAAM,aACNqE,YAAaqM,GAEfpO,WAAY,CAAA,KAIpB,CAKA,6BAAMoQ,CACJC,EACAC,EACA7J,GAKA,MAAMnJ,EAAM2I,KAAKD,KAAKL,SAGtB,IAFcM,KAAKD,KAAKuK,aAETjT,EAEb,OADA2I,KAAKD,KAAK7G,OAAO,qDACV,KAGT,IAAIqR,EAAmB,KACvB,IACEA,QAAoBvK,KAAKD,KAAKyK,aAAaJ,EAAcC,EAC3D,CAAE,MAAOI,GAEP,OADAzK,KAAKD,KAAK7G,OAAO,iCAAkCuR,GAC5C,IACT,CAEAzK,KAAKD,KAAK9G,MAAM,oBAAqBsR,GAErC,MAAM1S,EAAKmI,KAAKoJ,8BAA8BmB,GAC9C,IAAK1S,EAAI,OAAO0S,EAEhBpT,EAAQS,QAAQP,EAAKa,EAAiBL,GACtCmI,KAAKD,KAAK9G,MAAM,kCAAmC,CACjDyR,aAAc7S,EAAGF,SAASqF,SAG5BgD,KAAK2K,sBAEL,MAAMC,EAAOpK,GAASqK,YAAc,QAC9BjF,EAAOpF,GAASoF,MAAQ,GAE9B,GAAa,SAATgF,EAAiB,CACnB,MAAME,EAAOjT,EAAGF,SAAS,IAAIyC,SAC7B,GAAI0Q,GAAsB,eAAdA,EAAKrT,MAAyBqF,MAAMC,QAAQ+N,EAAKhP,aAAc,CACzE,MAAMqM,EAAS2C,EAAKhP,YACpB,GAAa,gBAAT8O,EAAwB,CAC1B,MAAMG,EAAO5C,EAAOA,EAAOnL,OAAS,GACpC3F,EAAI2T,MAAM,CACR/F,OAAQ8F,EACRnF,OACA3G,MAAO,GACPF,QAAS,EACTF,SAAS,EACTC,SAAU,KAEd,MAAO,GAAa,UAAT8L,EAAkB,CAC3B,MAAMK,EAAO9C,EAAO9Q,IAAI6T,GAAKA,EAAE,IACzBC,EAAOhD,EAAO9Q,IAAI6T,GAAKA,EAAE,IACzBE,EAAS7O,KAAKC,OAAOyO,GACrBI,EAAS9O,KAAKG,OAAOuO,GAIrBK,EAA+C,CACnD,CAACF,EAJY7O,KAAKC,OAAO2O,IAKzB,CAACE,EAJY9O,KAAKG,OAAOyO,KAO3B9T,EAAIqH,UAAU4M,EAAe,CAC3B3M,QAASqB,KAAKD,KAAKwL,mBACnB1M,SAAS,GAEb,CACF,CACF,CAEA,OAAO0L,CACT,CAKA,oCAAMiB,CAA+BzD,GACnC,MAAM1Q,EAAM2I,KAAKD,KAAKL,SAChB+L,EAAQzL,KAAKD,KAAKuK,WACxB,IAAKjT,IAAQoU,EAAO,OAAO,KAE3B,MAAMC,EAAa1L,KAAKD,KAAKmI,mBAC7B,IAAKwD,IAAgBA,EAAmB5D,SAKtC,OAJA9H,KAAKD,KAAK7G,OACR,uEACAwS,GAEK,KAGT,MAAMC,EACH5D,EAAoBD,UACpBC,EAAoBnB,YAAY,GAEnC,IAAK+E,EAKH,OAJA3L,KAAKD,KAAK7G,OACR,gEACA6O,GAEK,KAGT/H,KAAKD,KAAK9G,MACR,8DACA,CACE2S,cAAgBF,EAAmB5D,SACnC6D,iBAIJ,MAAME,EACJ7L,KAAKD,KAAK+L,4BACRJ,EAAmB5D,UAAUhM,YAE3BiQ,EACJJ,EAAa7P,aACb6P,EAAanC,KACbmC,EAAalE,GAAG3L,YAEZkQ,EAAWlP,MAAMC,QAAQgP,IAAYA,EAAQ/O,QAAU,EACzD,CAACrD,OAAOoS,EAAQ,IAAKpS,OAAOoS,EAAQ,KACpC,KAWJ,OATIF,GAAcG,EAChBhM,KAAKiM,iBAAiBJ,EAAYG,GAElChM,KAAKD,KAAK7G,OACR,0EACA,CAAE2S,aAAYE,YAIX/L,KAAKmK,wBACTuB,EAAmB5D,SACpB6D,EACA,CAAEd,WAAY,SAElB,CAEA,UAAAqB,GACE,MAAM7U,EAAM2I,KAAKD,KAAKL,SACtB,IAAKrI,EAAK,OAEV2I,KAAKmM,qBAOLhV,EAAQS,QAAQP,EAAKa,EALsB,CACzCT,KAAM,oBACNE,SAAU,KAIZqI,KAAKD,KAAK9G,MAAM,2BAIlB,CAMQ,mBAAAmT,CAAoBC,GAC1B,MAAMhV,EAAM2I,KAAKD,KAAKL,SACtB,IAAKrI,EAAK,OAEV,MAUMiV,EAAkBD,EAAU,UAAY,OAVvB,CACrB,0BACA,0BACA,yBACA,0BACA,oBACA,2BAMa9I,QAAQjM,IACjBD,EAAIqM,SAASpM,IACfD,EAAIsM,kBAAkBrM,EAAI,aAAcgV,IAG9C,CAEQ,oBAAAC,CAAqBC,EAAwBC,GACnD,MAAMpV,EAAM2I,KAAKD,KAAKL,SACtB,IAAKrI,EAAK,OAEV,MAAMS,EAAMT,EAAIE,UAAU,mBAC1B,IAAKO,EAAK,OAEV,MAAMD,EAAgC,CACpCJ,KAAM,oBACNE,SAAU,CACR,CACEF,KAAM,UACN2C,SAAU,CAAE3C,KAAM,QAASqE,YAAa0Q,GACxCzS,WAAY,CAAE2S,KAAM,WAEtB,CACEjV,KAAM,UACN2C,SAAU,CAAE3C,KAAM,QAASqE,YAAa2Q,GACxC1S,WAAY,CAAE2S,KAAM,kBAK1B5U,EAAIF,QAAQC,EACd,CAEQ,mBAAA8U,GACN,MAAMtV,EAAM2I,KAAKD,KAAKL,SACtB,IAAKrI,EAAK,OAEV,MAAMS,EAAMT,EAAIE,UAAU,mBAC1B,IAAKO,EAAK,OAOVA,EAAIF,QALqC,CACvCH,KAAM,oBACNE,SAAU,IAId,CAEQ,gBAAAsU,CAAiBO,EAAwBC,GAG/CzM,KAAKuM,qBAAqBC,EAAMC,EAClC,CAEQ,gBAAAG,GACN5M,KAAKoM,qBAAoB,GACzBpM,KAAK2M,qBACP,CAMQ,mBAAAhC,GAEN,IADY3K,KAAKD,KAAKL,SACZ,OACV,GAAsB,oBAAXmN,OAAwB,OAEH,MAA5B7M,KAAKgJ,sBACP8D,qBAAqB9M,KAAKgJ,qBAC1BhJ,KAAKgJ,oBAAsB,MAG7BhJ,KAAKiJ,oBAAsB8D,YAAYC,MACvChN,KAAKmJ,aAAc,EAEnB,MAAMrQ,EAAQkH,KAAKD,KAAKjH,MAElBmU,EAAQD,IACZ,MAAME,EAAclN,KAAKD,KAAKL,SAC9B,IAAKwN,IAAgBlN,KAAKmJ,aAA2C,MAA5BnJ,KAAKiJ,oBAA6B,OAE3E,MAAMkE,EAAUH,EAAMhN,KAAKiJ,oBACrBnP,EAAIyC,KAAKC,IAAI,EAAG2Q,EAAUnN,KAAKkJ,0BAC/BkE,EAAU7Q,KAAKG,IAAI,KAAO5C,GAE5BhB,GACFkH,KAAKD,KAAK9G,MAAM,wBAAyB,CAAEa,IAAGsT,YAGhD,MAAMC,EAAO9Q,KAAKG,IAAI,EAAG0Q,EAAU,KAC7BE,EAAO/Q,KAAKC,IAAI,EAAG4Q,EAAU,KAE7BG,EAAoB,CACxB,cAAe,CAAC,UAAW,CAAC,iBAC5B,EAAG,sBACHF,EAAM,sBACNC,EAAM,sBACN,EAAG,uBAGCE,EAAoB,CACxB,cAAe,CAAC,UAAW,CAAC,iBAC5B,EAAG,wBACHH,EAAM,wBACNC,EAAM,wBACN,EAAG,yBAGDJ,EAAYxJ,SAAS,eACvBwJ,EAAYO,iBAAiB,aAAc,gBAAiBF,GAE1DL,EAAYxJ,SAAS,eACvBwJ,EAAYO,iBAAiB,aAAc,gBAAiBD,GAI5DxN,KAAKgJ,oBADHlP,EAAI,EACqB4T,sBAAsBT,GAEtB,MAI/BjN,KAAKgJ,oBAAsB0E,sBAAsBT,EACnD,CAEQ,kBAAAd,GACNnM,KAAKmJ,aAAc,EACa,MAA5BnJ,KAAKgJ,qBAAiD,oBAAX6D,QAC7CC,qBAAqB9M,KAAKgJ,qBAE5BhJ,KAAKgJ,oBAAsB,KAC3BhJ,KAAKiJ,oBAAsB,KAE3B,MAAM5R,EAAM2I,KAAKD,KAAKL,SACjBrI,IAEDA,EAAIqM,SAAS,gBACfrM,EAAIoW,iBAAiB,aAAc,qBAAiBvG,GACpD7P,EAAIoW,iBAAiB,aAAc,aAAc,YAE/CpW,EAAIqM,SAAS,gBACfrM,EAAIoW,iBAAiB,aAAc,qBAAiBvG,GACpD7P,EAAIoW,iBAAiB,aAAc,aAAc,YAErD,QC1aWE,EACHrD,SACApK,UACA0N,aACA/N,MAER,WAAAC,CAAYC,GACVC,KAAKsK,SAAWvK,EAAKuK,SACrBtK,KAAKE,UAAYH,EAAKG,UACtBF,KAAK4N,aAAe7N,EAAK6N,aACzB5N,KAAKH,MAAQE,EAAK9G,GACpB,CAEA,SAAYwS,GACV,OAAOzL,KAAKsK,UACd,CAEQ,GAAArR,IAAOF,GACTiH,KAAKH,OAAOG,KAAKH,SAAS9G,EAChC,CAEQ,YAAA8U,CAAavU,GACnB,IAAKA,IAAU0G,KAAKyL,MAAO,MAAO,GAElC,IACE,MAAM1F,EAAY/F,KAAKyL,MAAM1F,WAAW+H,SAASxU,EAAMhC,KAAO,GAC9D,OAAKwF,MAAMC,QAAQgJ,GAEZA,EAAU1O,IAAI2D,IACnB,MAAM2L,EAAU3L,EAEhB,OADE2L,EAAgBtH,QAAU/F,EAAMhC,GAC3BqP,IAL6B,EAOxC,CAAE,MACA,MAAO,EACT,CACF,CAMA,MAAAoH,GAEE,OADe/N,KAAKE,YACN8N,QAAQ1U,GAAS0G,KAAK6N,aAAavU,GACnD,CAEA,YAAA2U,CAAa5O,GACX,MAAM/F,EAAQ0G,KAAK4N,aAAavO,GAChC,OAAK/F,EACE0G,KAAK6N,aAAavU,GADN,EAErB,CAEA,YAAA4U,GACE,OAAOlO,KAAK+N,SAAS3S,OAAOJ,GAAK8L,EAAe9L,GAClD,CAEA,gBAAAmT,CAAiB9O,GACf,MAAM/F,EAAQ0G,KAAK4N,aAAavO,GAChC,IAAK/F,EAAO,OAAO,KAInB,OAFkB0G,KAAK6N,aAAavU,GACZ2D,KAAKjC,GAAK8L,EAAe9L,KACjC,IAClB,CAEA,gBAAAoT,CAAiB/O,GACf,MAAM/F,EAAQ0G,KAAK4N,aAAavO,GAChC,IAAK/F,EAAO,OAEZ,MAAM+U,EAAQrO,KAAKmO,iBAAiB9O,GAE/BgP,EAOLrO,KAAK/G,IAAI,yBAA0B,CACjCoG,QAAS/F,EAAMhC,GACfA,GAAI+W,EAAM/W,GACVqJ,KAAM0N,EAAM1N,KACZgH,SAAW0G,EAAc1G,SACzBf,UAAYyH,EAAczH,UAC1B2C,IAAK8E,IAZLrO,KAAK/G,IAAI,sCAAuC,CAC9CoG,QAAS/F,EAAMhC,IAarB,EClGUe,EAAa,CAAEE,SAAS,EAAME,OAAQ,wBAsIrC6V,EACH1D,KACA2D,aACAC,OAEAC,UACAC,WAAgC,KAExC,WAAA5O,CAAY6O,GACV,MAAMC,EAA+B,oBAAX/B,OAAyBA,OAASgC,WACtDC,EAAgBH,EAAOF,WAAaG,EAAMjN,MAChD,GAAwB,mBAAbmN,EACT,MAAM,IAAIvR,MAAM,kDAElByC,KAAKyO,UAAYK,EAASC,KAAKH,GAE/B5O,KAAK4K,KAAO+D,EAAO/D,KACnB5K,KAAKuO,cAAgC,UAAhBI,EAAO/D,KAAmB+D,EAAOJ,kBAAerH,IAAc,YAE/D,WAAhByH,EAAO/D,KACT5K,KAAKwO,OAAS,CACZQ,KAAMhP,KAAKiP,cAAcN,EAAOK,MAChCE,SAAUP,EAAOO,SACjBC,SAAUR,EAAOQ,SACjBC,SAAUT,EAAOS,UAGnBpP,KAAKwO,OAAS,IAElB,CAEA,sBAAMa,CAAiBtW,GACrB,MAAM2Q,EAAO,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,6BACnDrN,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAEA,2BAAMwN,CAAsB3W,GAC1B,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,sBAC5BL,mBAAmB3W,OAAOI,EAAK6W,sBAClCN,mBAAmB3W,OAAOI,EAAKsG,4BAGrC6C,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAEA,eAAMhC,CAAUnH,GACd,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,sBAC5BL,mBAAmB3W,OAAOI,EAAK6W,qBAGxC1N,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAaA,iBAAM2N,CAAY9W,GAChB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,gBAGrCzN,QAAalC,KAAKwP,QAAa9F,GAE/BhS,EACHwK,GAAMxK,MACNwK,GAAMmH,QACNnH,EAEH,IAAKxK,GAAwB,iBAATA,EAClB,MAAM,IAAI6F,MAAM,iDAGlB,OAAO7F,CACT,CAEA,cAAM4S,CAASvR,GACb,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,YAErCzN,QAAalC,KAAKwP,QAAa9F,GAE/B+B,EACHvJ,GAAMuJ,OACNvJ,GAAMxK,MACNwK,EAEH,IAAKuJ,GAA0B,iBAAVA,EACnB,MAAM,IAAIlO,MAAM,6CAGlB,OAAOkO,CACT,CAEA,wBAAMqE,CAAmB/W,GACvB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,sBAC5BL,mBAAmB3W,OAAOI,EAAK6W,sBAClCN,mBAAmB3W,OAAOI,EAAKsG,wBAErC6C,QAAalC,KAAKwP,QAAa9F,GAE/B7R,EACHqK,GAAMxH,SACNwH,GAAMxK,MACNwK,EAEH,IAAKrK,GAAkB,sBAAZA,EAAGJ,OAAiCqF,MAAMC,QAASlF,EAAWF,UACvE,MAAM,IAAI4F,MAAM,oEAGlB,OAAO1F,CACT,CAEA,qBAAMkY,CAAgBhX,GACpB,MAAMiX,EAAQ,IAAIC,gBAClBD,EAAM5N,IAAI,aAAczJ,OAAOI,EAAKmX,YAAc,WAClDF,EAAM5N,IAAI,UAAWzJ,OAAOI,EAAK2B,UAAW,IAE5C,MAAMgP,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,sBAC5BL,mBAAmB3W,OAAOI,EAAK6W,qBACnCI,EAAMG,aAEXjO,QAAalC,KAAKwP,QAAa9F,GAE/B0G,EACHlO,GAAMxK,MACNwK,GAAMmH,QACNnH,EAEH,IAAKkO,GAAwB,iBAATA,EAClB,MAAM,IAAI7S,MAAM,qDAGlB,OAAO6S,CACT,CAEA,qBAAMhK,CAAgBrN,GACpB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,wBAGrCzN,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAEA,kBAAMiE,CAAapN,GACjB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,oBAGrCzN,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAEA,kBAAMmO,CAAatX,GACjB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,qBAGrCzN,QAAalC,KAAKwP,QAAa9F,GACrC,OAAO1J,KAAKyP,aAAavN,EAC3B,CAEA,qBAAMoO,CAAgBvX,GACpB,MAAM2Q,EACJ,aAAa4F,mBAAmB3W,OAAOI,EAAKwW,sBAClCD,mBAAmB3W,OAAOI,EAAK4W,sBAC5BL,mBAAmB3W,OAAOI,EAAK6W,6BAGxC1N,QAAalC,KAAKwP,QAAa9F,GAE/BpF,EACHpC,GAAMoC,OACNpC,GAAMxK,MACNwK,EAEH,IAAKoC,GAA0B,iBAAVA,EACnB,MAAM,IAAI/G,MAAM,kDAGlB,OAAO+G,CACT,CAEA,eAAAiM,GACEvQ,KAAK0O,WAAa,IACpB,CAEA,aAAMc,CAAW9F,GACf,GAAkB,UAAd1J,KAAK4K,KAAkB,CACzB,MAAM4F,EAAOxQ,KAAKuO,aAAakC,QAAQ,OAAQ,IACzC/X,EAAIgR,EAAKgH,WAAW,KAAOhH,EAAO,IAAIA,IACtC3H,QAAY/B,KAAKyO,UAAU,GAAG+B,IAAO9X,IAAK,CAC9CiY,OAAQ,MACRC,QAAS,CAAEC,OAAQ,sBAGrB,IAAK9O,EAAIC,GAAI,CACX,MAAM8O,QAAa9Q,KAAK+Q,aAAahP,GACrC,MAAM,IAAIxE,MAAM,0BAA0BwE,EAAIE,UAAUF,EAAIiP,kBAAkBF,IAChF,CAEA,aAAc/O,EAAIG,MACpB,CAEA,MAAMsM,EAASxO,KAAKwO,OACpB,IAAKA,EAAQ,MAAM,IAAIjR,MAAM,kDAE7B,MAAM0T,QAAcjR,KAAKkR,cACnB1P,EAAMxB,KAAKmR,QAAQ3C,EAAOQ,KAAMtF,GAEhC3H,QAAY/B,KAAKyO,UAAUjN,EAAK,CACpCmP,OAAQ,MACRC,QAAS,CACPQ,cAAe,UAAUH,IACzBJ,OAAQ,sBAIZ,IAAK9O,EAAIC,GAAI,CACX,MAAM8O,QAAa9Q,KAAK+Q,aAAahP,GACrC,MAAM,IAAIxE,MAAM,oBAAoBwE,EAAIE,UAAUF,EAAIiP,kBAAkBF,IAC1E,CAEA,aAAc/O,EAAIG,MACpB,CAEQ,YAAAuN,CAAavN,GACnB,OACGpF,MAAMC,QAAQmF,GAAQA,EAAO,QAC7BpF,MAAMC,QAAQmF,GAAMxK,MAAQwK,EAAKxK,KAAO,QACxCoF,MAAMC,QAAQmF,GAAMmP,OAASnP,EAAKmP,MAAQ,QAC1CvU,MAAMC,QAAQmF,GAAMoP,SAAWpP,EAAKoP,QAAU,OAC/C,EAEJ,CAEQ,iBAAMJ,GACZ,MAAM1C,EAASxO,KAAKwO,OACpB,IAAKA,EAAQ,MAAM,IAAIjR,MAAM,kDAE7B,MAAMyP,EAAMuE,KAAKvE,MACXwE,EAASxR,KAAK0O,WAGpB,GAAI8C,GAAQP,OAASjE,EAAMwE,EAAOC,YAFX,IAGrB,OAAOD,EAAOP,MAGhB,MAAMS,EAAW1R,KAAKmR,QAAQ3C,EAAOQ,KAAM,eAErC2C,EAAW,IAAI1B,gBACrB0B,EAASvP,IAAI,aAAc,YAC3BuP,EAASvP,IAAI,YAAaoM,EAAOU,UACjCyC,EAASvP,IAAI,WAAYoM,EAAOW,UAChCwC,EAASvP,IAAI,WAAYoM,EAAOY,UAEhC,MAAMrN,QAAY/B,KAAKyO,UAAUiD,EAAU,CACzCf,OAAQ,OACRC,QAAS,CACP,eAAgB,oCAChBC,OAAQ,oBAEVC,KAAMa,EAASxB,aAGjB,IAAKpO,EAAIC,GAAI,CACX,MAAM8O,QAAa9Q,KAAK+Q,aAAahP,GACrC,MAAM,IAAIxE,MAAM,qBAAqBwE,EAAIE,UAAUF,EAAIiP,kBAAkBF,IAC3E,CAEA,MAAM5O,QAAaH,EAAIG,OAEjB+O,EACH/O,GAAM0P,cACN1P,GAAM+O,OACN/O,GAAM2P,KACN3P,GAAM4P,YAET,IAAKb,EAAO,MAAM,IAAI1T,MAAM,8CAE5B,MAAMwU,EACJ7P,GAAM8P,YAAc9P,GAAM+P,WAAa/P,GAAMgQ,SAAWhQ,GAAMiQ,IAE1DC,EACuB,iBAApBL,EAA+BA,EAAkBpY,OAAOoY,GAE3DM,EAAS1Y,OAAOC,SAASwY,IAAiBA,EAAe,EAAIA,EAAe,IAGlF,OADApS,KAAK0O,WAAa,CAAEuC,QAAOQ,YAAaF,KAAKvE,MAAiB,IAATqF,GAC9CpB,CACT,CAEQ,aAAAhC,CAAcD,GACpB,OAAOrW,OAAOqW,GAAQ,IAAIyB,QAAQ,OAAQ,GAC5C,CAEQ,OAAAU,CAAQX,EAAc9G,GAC5B,MAAMzO,EAAI+E,KAAKiP,cAAcuB,GACvB9X,EAAIC,OAAO+Q,GAAQ,IACzB,OAAKhR,EACE,GAAGuC,IAAIvC,EAAEgY,WAAW,KAAO,GAAK,MAAMhY,IAD9BuC,CAEjB,CAEQ,kBAAM8V,CAAahP,GACzB,IACE,aAAaA,EAAIuQ,MACnB,CAAE,MACA,MAAO,EACT,CACF,EC5cF,MAAMtR,EAAS3I,EAAa,CAAEE,SAAS,EAAME,OAAQ,6BAexC8Z,EACH5D,OACA6D,KAEA3V,OAAkB,GAClB+S,WAAqC,KACrC6C,oBAA2D,IAAIvR,IAC/DwR,iBAAoD,IAAIxR,IACxDyR,UAAiB,KAEzB,UAAMC,CAAKjE,GACT3O,KAAK2O,OAASA,EACd,MAAMkE,EAAIlE,EAAO6D,KAEjB,IAAKK,GAAGjI,KAAM,MAAM,IAAIrN,MAAM,gCAE9B,GAAe,UAAXsV,EAAEjI,KAAN,CAQA,IAAKiI,EAAE7D,KAAM,MAAM,IAAIzR,MAAM,8CAC7B,IAAKsV,EAAEC,MAAM5D,SAAU,MAAM,IAAI3R,MAAM,uDACvC,IAAKsV,EAAEC,MAAM3D,SAAU,MAAM,IAAI5R,MAAM,uDACvC,IAAKsV,EAAEC,MAAM1D,SAAU,MAAM,IAAI7R,MAAM,uDAEvCyC,KAAKwS,KAAO,IAAIlE,EAAa,CAC3B1D,KAAM,SACNoE,KAAM6D,EAAE7D,KACRE,SAAU2D,EAAEC,KAAK5D,SACjBC,SAAU0D,EAAEC,KAAK3D,SACjBC,SAAUyD,EAAEC,KAAK1D,UAZnB,MALEpP,KAAKwS,KAAO,IAAIlE,EAAa,CAC3B1D,KAAM,QACN2D,aAAcsE,EAAEtE,cAAgB,aAiBtC,CAEA,eAAMwE,GACJ,MAAMxD,EAAavP,KAAK2O,OAAOqE,KAAKzD,WAC9BI,EAAU3P,KAAK2O,OAAOqE,KAAKrD,QAEjC,GAAkB,MAAdJ,EAAoB,MAAM,IAAIhS,MAAM,sCACxC,GAAe,MAAXoS,EAAiB,MAAM,IAAIpS,MAAM,mCASrC,MAAM0V,QAAiBjT,KAAKwS,KAAK3C,YAAY,CAAEN,aAAYI,YAErDuD,EAAmBpW,MAAMC,QAAQkW,GAAUC,WAAaD,EAASC,UAAY,GAC7EC,EAAgBD,EAAU,GAC1BtD,EAAauD,GAAe7b,IAAM6b,GAAevD,WAEvD,IAAKuD,IAAkBvD,EACrB,MAAM,IAAIrS,MAAM,sDAGlByC,KAAK4P,WAAaA,EAElB,MAAMhJ,EAAmB9J,MAAMC,QAAQkW,GAAUrM,WAAaqM,EAASrM,UAAY,GAC7EZ,EAAsBlJ,MAAMC,QAAQkW,GAAUjN,cAAgBiN,EAASjN,aAAe,GACtFD,EAAmBjJ,MAAMC,QAAQkW,GAAUlN,WAAakN,EAASlN,UAAY,GAG7EqN,EAAmB,IAAIlS,IAC7B,IAAK,MAAMkG,KAAMR,EAAW,CAC1B,MAAMH,EAAQW,GAAIX,MAClB,GAAa,MAATA,EAAe,SACnB,MAAM4M,EAAOD,EAAiBtR,IAAI2E,IAAU,GAC5C4M,EAAKxO,KAAKuC,GACVgM,EAAiBhR,IAAIqE,EAAO4M,EAC9B,CAEA,MAAMC,EAAmBxW,MAAMC,QAAQoW,GAAetW,QAAUsW,EAActW,OAAS,GACjF0W,EAAiBJ,GAAeI,eAEhCC,EAAYF,EAAUjc,IAAKwC,IAC/B,MAAM4M,EAAQ5M,EAAExC,KAAKC,IAAMuC,EAAE4M,MAC7B,MAAO,CACLnP,GAAIuC,EAAEvC,GACNqJ,KAAM9G,EAAE8G,MAAQ9G,EAAE4Z,WAAa9a,OAAOkB,EAAEvC,IACxCoc,SAAU7Z,EAAE8Z,OAAS9Z,EAAE+Z,WACvB1W,UAAWrD,EAAEvC,KAAOic,EAEpB7Y,aAASwM,EACT2M,cAAe,GACfC,WAAqB,MAATrN,EAAiB2M,EAAiBtR,IAAI2E,IAAU,GAAM,MAItEzG,KAAKnD,OAAS2W,EAGdxT,KAAK0S,iBAAiBqB,QACtB,IAAK,MAAM/Y,KAAK+K,EACd,IAAK,MAAMqB,KAAMpM,GAAG4L,WAAa,GAAI,CACnC,MAAMH,EAAQW,GAAIX,MAClB,GAAa,MAATA,EAAe,SACnB,MAAM4M,EAAOrT,KAAK0S,iBAAiB5Q,IAAI2E,IAAU,GACjD4M,EAAKxO,KAAK7J,GACVgF,KAAK0S,iBAAiBtQ,IAAIqE,EAAO4M,EACnC,CAGFrT,KAAKyS,oBAAoBsB,QACzB,IAAK,MAAMC,KAAKhO,EACd,IAAK,MAAMoB,KAAM4M,GAAGpN,WAAa,GAAI,CACnC,MAAMH,EAAQW,GAAIX,MAClB,GAAa,MAATA,EAAe,SACnB,MAAM4M,EAAOrT,KAAKyS,oBAAoB3Q,IAAI2E,IAAU,GACpD4M,EAAKxO,KAAKmP,GACVhU,KAAKyS,oBAAoBrQ,IAAIqE,EAAO4M,EACtC,CAIF,MAKM5H,EAAQwH,GAAUxH,OAAS,CAAA,EAqBjC,OAnBAzL,KAAK2S,UAAY,IACZlH,EACH5O,OAAQ2W,EACRS,cAR2B,GAS3BjO,aAAc,CACZqL,MAAO,IAAIrL,GACX8H,SAAU,EAAGxW,QAAkC0I,KAAKyS,oBAAoB3Q,IAAIxK,IAAO,IAErFyO,UAAW,CACTsL,MAAO,IAAItL,GACX+H,SAAU,EAAGxW,QAAkC0I,KAAK0S,iBAAiB5Q,IAAIxK,IAAO,IAElF4b,UAAW,CACT7B,MAAO,IAAI6B,GACXgB,aAAc,IAAMlU,KAAKnD,QAE3BsX,WAvBiB,MA0BZnU,KAAK2S,SACd,CAGA,wBAAMyB,CAAmB9a,GACvB,GAAIA,EAAMoB,QAAS,OAEnB,MAAM6U,EAAavP,KAAK2O,OAAOqE,KAAKzD,WAC9BI,EAAU3P,KAAK2O,OAAOqE,KAAKrD,QAEjC,IACE,MAAM5N,QAAiB/B,KAAKwS,KAAK1C,mBAAmB,CAClDP,aACAI,UACAC,WAAY5P,KAAK4P,WACjBvQ,QAAS/F,EAAMhC,KAEfgC,EAAcoB,QA1KtB,SAAiCqH,GAG/B,OADeA,GAAatK,KAAOsK,EAAOA,GAAarK,OACvC,IAClB,CAsKgC2c,CAAwBtS,EACpD,CAAE,MAAOuS,GACPtT,EAAO9H,KAAK,6BAA8B,CAAEmG,QAAS/F,EAAMhC,GAAIgd,KACjE,CACF,CAGA,4BAAMC,GACJ,MAAMC,EAAUxU,KAAKnD,OAAOzB,OAAOvB,IAAMA,EAAEa,SACpB,IAAnB8Z,EAAQxX,eAENiJ,QAAQC,IAAIsO,EAAQnd,IAAIwC,GAAKmG,KAAKoU,mBAAmBva,KAC3DmH,EAAOlI,MAAM,yCAA0C,CAAEmR,MAAOuK,EAAQxX,SAC1E,CAEA,eAAMkD,GACJ,OAAOF,KAAKnD,MACd,CAEA,kBAAMsJ,CAAaM,GACjB,OAAOzG,KAAK0S,iBAAiB5Q,IAAI2E,IAAU,EAC7C,CAEA,qBAAML,CAAgBK,GACpB,OAAOzG,KAAKyS,oBAAoB3Q,IAAI2E,IAAU,EAChD,QCtNWgO,EACHC,SAAW,IAAIxT,IAEvB,EAAAyT,CAAGC,EAAeC,GACX7U,KAAK0U,SAASxa,IAAI0a,IAAQ5U,KAAK0U,SAAStS,IAAIwS,EAAO,IAAIrV,KAC5DS,KAAK0U,SAAS5S,IAAI8S,GAAQE,IAAID,EAChC,CAEA,GAAAE,CAAIH,EAAeC,GACZA,EACL7U,KAAK0U,SAAS5S,IAAI8S,IAAQI,OAAOH,GADtB7U,KAAK0U,SAASM,OAAOJ,EAElC,CAEA,IAAAK,CAAKL,EAAe7T,GAClBf,KAAK0U,SAAS5S,IAAI8S,IAAQrR,QAAQ2R,IAChC,IAAMA,EAAGnU,EAAS,CAAE,MAAO,GAE/B,qzhBCoCF,SAASoU,EACP7Q,EACAhN,EACA8d,EAA6B,CAAA,GAE7B9Q,EAAM+Q,UAAY,CAAA,EACb/Q,EAAM+Q,QAAgB/d,KAEzBgN,EAAM+Q,QAAgB/d,GAAM,CAC5BG,KAAM,UACNC,KAbK,CAAED,KAAM,oBAAqBE,SAAU,OAczCyd,GAEP,CAEA,SAASE,EAAsBvc,GAM7B,IAAIwc,EAAOC,gBAAgBzc,EAAKuL,OAahC,GAVAiR,EAAKjU,OAASvI,EAAK0c,cAAgBF,EAAKjU,QAAUvI,EAAK2c,iBAGvDP,EAAoBI,EAAMxd,GAC1Bod,EAAoBI,EAAMtd,GAC1Bkd,EAAoBI,EAAMvd,GAC1Bmd,EAAoBI,EAAMrd,EAAiB,CAAEyd,aAAa,IAC1DR,EAAoBI,EAAM,mBAGtBxc,EAAK6c,YACP,IAAK,MAAMvW,KAAWxE,OAAOsH,KAAKpJ,EAAK6c,aACrCT,EAAoBI,EAAM,WAAWlW,KACrC8V,EAAoBI,EAAM,eAAelW,KACzC8V,EAAoBI,EAAM,aAAalW,KAI3C,OAAOkW,CACT,CAEA,MAAMG,EAAmB,yEAEZG,EAwBSlH,OAvBZtX,IAA0B,KAG1BK,KAAO,IAAI6a,EAEXuD,mBAA2E,CACjF3L,wBAAyB4L,UACvB,MAAM,IAAIxY,MAAM,kDAIZyY,OAAS,IAAIvB,EACbwB,UACAxK,MAAa,KACblF,WAAiC,KACxBzN,MACAkI,OACTkV,cAAoC,KACpCC,UAEAC,eACAC,WAER,WAAAvW,CAAoB6O,GAAA3O,KAAA2O,OAAAA,EAClB3O,KAAKlH,MAAQN,QAASmW,EAAe7V,OAAS6V,EAAOnO,SAAS1H,OAC9DkH,KAAKgB,OAAS3I,EAAa,CAAEE,QAASyH,KAAKlH,MAAOL,OAAQ,kBAC1DuH,KAAKmW,UAAY,IAAI3T,EAAmB,IAAMxC,KAAK3I,KAEnD2I,KAAKiW,UAAY,IAAIzW,EAAU,CAC7BE,OAAQ,IAAMM,KAAK3I,IACnBsI,UAAW,IAAMK,KAAK2O,OACtB/O,gBAAiBmW,MAAMzc,IACrB,MAAMjC,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,OAEV,MAAMgP,EAAOrG,KAAKsW,WAAWhd,GACvBid,EAAa1Q,EAAWW,oBAAoBH,GAClDlP,EAAQS,QAAQP,EAAKW,EAAeue,IAEtCtd,IAAK,IAAIF,IAAoBiH,KAAKgB,OAAOlI,SAASC,KAGpDiH,KAAKoW,eAAiB,IAAIzI,EAAe,CACvCrD,SAAU,IAAMtK,KAAKyL,MACrBvL,UAAW,IAAMF,KAAKiW,UAAU/V,YAChC0N,aAAetW,GACb0I,KAAKiW,UAAU/V,YAAYjD,KAAKpD,GAAKA,EAAEvC,KAAOA,IAAO,KACvD2B,IAAK,IAAIF,IAAoBiH,KAAKgB,OAAOlI,SAASC,KAIpDiH,KAAKqW,WAAa,IAAItN,EAAkB,CACtCrJ,OAAQ,IAAMM,KAAK3I,IACnBiT,SAAU,IAAMtK,KAAKyL,MACrBvD,iBAAmB5O,GAAkB0G,KAAKkI,iBAAiB5O,GAC3DwS,yBAA2BxS,GAAkB0G,KAAK8L,yBAAyBxS,GAC3EiS,iBAAkB,IAAMvL,KAAKuL,mBAC7Bf,aAAcuL,MAAOvJ,EAAMC,KACzB,MAAM8C,EAAavP,KAAK2O,OAAOqE,KAAKzD,WAC9BI,EAAU3P,KAAK2O,OAAOqE,KAAKrD,QAEjC,GAAkB,MAAdJ,EAAoB,MAAM,IAAIhS,MAAM,sCACxC,GAAe,MAAXoS,EAAiB,MAAM,IAAIpS,MAAM,mCAErC,OAAOyC,KAAK8V,mBAAmB3L,wBAAwB,CACrDoF,aACAI,UACAnD,OACAC,QAGJxT,IAAK,IAAIF,IAAoBiH,KAAKgB,OAAOlI,SAASC,GAClDG,KAAM,IAAIH,IAAoBiH,KAAKgB,OAAO9H,QAAQH,GAClDD,MAAOkH,KAAKlH,OAEhB,CAEA,UAAM8Z,GACJ,MAAMjD,QAAEA,EAAOJ,WAAEA,GAAevP,KAAK2O,QAAQqE,KAE7C,GAAe,MAAXrD,GAAiC,MAAdJ,EACrB,MAAM,IAAIhS,MAAM,+DAGlB,IAAKyC,KAAK2O,OAAO6H,UACf,MAAM,IAAIjZ,MAAM,4DAGlByC,KAAKgB,OAAOlI,MAAM,0BAA2B,CAAE6W,UAASJ,eAExD,UAEQvP,KAAKtI,KAAKkb,KAAK5S,KAAK2O,QAC1B3O,KAAKgB,OAAOlI,MAAM,2BAElBkH,KAAKyL,YAAczL,KAAKtI,KAAKqb,YAC7B/S,KAAKgB,OAAOlI,MAAM,uBAAwBkH,KAAKyL,MAAMnU,IAGrD0I,KAAKiW,UAAUhW,UAAUD,KAAKyL,MAAM5O,QACpCmD,KAAKgB,OAAOlI,MAAM,wBAAyB,CAAEmR,MAAOjK,KAAKyL,MAAM5O,OAAOG,SActE,MAAMyZ,EAAanB,EAAsB,CACvChR,MAAOoS,EACPjB,aAAczV,KAAK2O,OAAOnO,SAASiV,cAAgB,KACnDC,qBAGF1V,KAAK2W,2BAA2BF,GAChCzW,KAAK3I,IC3NL,SACJmf,EACAlS,GAEA,MAAMsS,EAA0B,iBAAdJ,EAAyBK,SAASC,eAAeN,GAAaA,EAChF,IAAKI,EAAI,MAAM,IAAIrZ,MAAM,2BAEzB,OAAO,IAAIwZ,EAAW7V,IAAI,CACxBsV,UAAWI,EACXtS,QACAW,OAAQ,CAAC,EAAG,GACZW,KAAM,GACN3G,MAAO,GACPF,QAAS,GAEb,CD4MiBiY,CAAYhX,KAAK2O,OAAO6H,UAAWC,SAGxC,IAAIxQ,QAAclE,GAAO/B,KAAK3I,IAAK8H,KAAK,OAAQ,IAAM4C,MAC5D/B,KAAK3I,IAAIsd,GAAG,QAAUL,IACpB,MAAM2C,EAAM3C,GAAGnb,OAAO2H,SAAWwT,GAAGxT,SAAWwT,EAC/CtU,KAAKgB,OAAO7H,MAAM,eAAgB,CAChC8d,MACAC,SAAU5C,GAAG4C,SACbC,KAAM7C,GAAG6C,SAKbnX,KAAK3I,IAAIsd,GAAG,YAAa,KACvB,IACE3U,KAAKmW,UAAUnT,aACjB,CAAE,MAAO,IAKXhD,KAAK3I,IAAIsd,GAAG,OAAQ,KAClB,IAAK3U,KAAK3I,IAAK,OACf,MAAM+f,EAASpS,EAAmBhF,KAAK3I,KACnC+f,GAAQpX,KAAKgW,OAAOf,KAAK,eAAgB,CAAEmC,aAIjDpX,KAAKqX,oBAGLrX,KAAKuG,iBAAmBpF,EAAQC,cAAcpB,KAAK3I,KAGnD,MAAMigB,EAAUtX,KAAKiW,UAAU3V,kBACP9H,QAAQ8e,GAAS5c,SAAS/C,UAAUqF,SAG1DgD,KAAKuX,4BAIHD,SACItX,KAAKU,gBAAgB4W,GAK7BtX,KAAKkW,cAAgBlR,EAAmBhF,KAAK3I,KAG7C2I,KAAKgW,OAAOf,KAAK,QAAS,CAAExJ,MAAOzL,KAAKyL,QAGxCzL,KAAKgW,OAAOf,KAAK,eAAgB,CAAA,EACnC,CAAE,MAAO9b,GAGP,MAFA6G,KAAKgB,OAAO7H,MAAM,wBAAyBA,GAC3C6G,KAAKgW,OAAOf,KAAK,QAAS,CAAE9b,UACtBA,CACR,CACF,CAEA,EAAAwb,CAAGC,EAAeC,GAChB7U,KAAKgW,OAAOrB,GAAGC,EAAOC,EACxB,CAEA,GAAAE,CAAIH,EAAeC,GACjB7U,KAAKgW,OAAOjB,IAAIH,EAAOC,EACzB,CAEA,UAAA2C,CAAWC,EAAmBC,GAC5B1X,KAAK3I,KAAKmgB,WAAWC,EAASC,EAChC,CAEA,OAAAC,CAAQnX,IPrSJ,SAAqBnJ,EAAyBmJ,GAClD,IAAKnJ,EAAK,OAEV,MAAM4N,OACJA,EAAMW,KACNA,EAAI3G,MACJA,EAAKF,QACLA,EAAOF,QACPA,EAAOC,SACPA,GACE0B,EAEJ,GAAI3B,EAAS,CACX,MAAM+Y,EAAgBvgB,EAAI6N,YACpB2S,EAAiC5S,GAEnC,CAAC2S,EAAclS,IAAKkS,EAAcjS,KAEhCmS,EAAalS,GAAQvO,EAAIoG,UACzBsa,EAAc9Y,GAAS5H,EAAI6H,WAC3B8Y,EAAgBjZ,GAAW1H,EAAI2H,aAC/BiZ,EAAwC,iBAAbnZ,EAAwBA,EAAW,IAWpE,YATAzH,EAAI2T,MAAM,CACR/F,OAAQ4S,EACRjS,KAAMkS,EACN7Y,MAAO8Y,EACPhZ,QAASiZ,EACTlZ,SAAUmZ,EACVC,WAAW,GAIf,CAEIjT,GAAQ5N,EAAI8gB,UAAUlT,QACbiC,IAATtB,GAAoBvO,EAAIsG,QAAQiI,QACtBsB,IAAVjI,GAAqB5H,EAAI+gB,SAASnZ,QACtBiI,IAAZnI,GAAuB1H,EAAIghB,WAAWtZ,EAC5C,CO+PIuZ,CAAWtY,KAAK3I,IAAKmJ,EACvB,CAEA,aAAIuF,GACF,OAAO/F,KAAKoW,cACd,CAEA,SAAAmC,CAAUjgB,aPnQVjB,EACAmhB,EACAlgB,GAEA,IAAKjB,IAAQmhB,EAAO,OACpB,MAAMvT,OAAEA,EAAMW,KAAEA,EAAI3G,MAAEA,EAAKF,QAAEA,GAAYyZ,EACnC3Z,EAAUrG,QAAQF,GAAMuG,SACxBC,EAAqC,iBAAnBxG,GAAMwG,SAAwBxG,EAAKwG,SAAW,IAElED,EACFxH,EAAIohB,OAAO,CAAExT,SAAQW,OAAM3G,QAAOF,UAASD,aAE3CzH,EAAIqhB,OAAO,CAAEzT,SAAQW,OAAM3G,QAAOF,WAEtC,COsPI4Z,CAAa3Y,KAAK3I,IAAK2I,KAAKkW,cAAe5d,EAC7C,CAEA,YAAA+K,CAAa9K,GAAoByH,KAAKmW,UAAU9S,aAAa9K,EAAS,CACtE,QAAAsL,GAAa7D,KAAKmW,UAAUtS,UAAW,CACvC,cAAAC,GAAmB,OAAO9D,KAAKmW,UAAUrS,gBAAiB,CAE1D,iBAAAC,CAAkBxL,GAAoByH,KAAKmW,UAAUpS,kBAAkBxL,EAAS,CAChF,aAAAyL,GAAkBhE,KAAKmW,UAAUnS,eAAgB,CACjD,mBAAAC,GAAwB,OAAOjE,KAAKmW,UAAUlS,qBAAsB,CAEpE,WAAAC,CAAY3L,GAAoByH,KAAKmW,UAAUjS,YAAY3L,EAAS,CACpE,cAAA4L,GAAmBnE,KAAKmW,UAAUhS,gBAAiB,CACnD,aAAAC,GAAkB,OAAOpE,KAAKmW,UAAU/R,eAAgB,CAExD,SAAAlE,GACE,OAAOF,KAAKiW,UAAU/V,WACxB,CAEA,eAAAC,GACE,OAAOH,KAAKiW,UAAU9V,iBACxB,CAEA,eAAAE,GACE,OAAOL,KAAKiW,UAAU5V,iBACxB,CAGA,eAAA+F,CAAgB9M,GACd,MAAMsf,EAAStf,GAAS0G,KAAKG,kBAC7B,OEzUE,SACJsL,EACAnS,GAEA,IAAKmS,IAAUnS,EAAO,MAAO,GAE7B,IACE,MAAM0M,EAAeyF,EAAMzF,cAAc8H,WAAW,CAAExW,GAAIgC,EAAMhC,MAAS,GACzE,OAAOwF,MAAMC,QAAQiJ,GAAgBA,EAAe,EACtD,CAAE,MACA,MAAO,EACT,CACF,CF6TW6S,CAAwB7Y,KAAKyL,MAAOmN,EAC7C,CAEA,gBAAAvJ,GACE,OAAOrP,KAAKyL,OAAOwI,eAAiB,EACtC,CAEA,qBAAAvE,CAAsBrQ,GACpB,OAAOW,KAAKyL,OAAOqN,iBAAiBngB,OAAO0G,KAAa,EAC1D,CAGA,UAAAiX,CAAWhd,GACT,MAAMsf,EAAStf,GAAS0G,KAAKG,kBAC7B,IAAKyY,EAAQ,MAAO,GAKpB,ON5NE,SACJtf,EACAyM,EACAC,EACAO,GAEA,OAAOV,EAAWS,UAAUhN,EAAOyM,EAAWC,EAAcO,EAC9D,CMqNWwS,CACLH,EAJwB5Y,KAAKoW,eAAenI,aAAa2K,EAAOthB,IACrC0I,KAAKoG,gBAAgBwS,GAMhD5Y,KAAKuG,WAET,CAEA,gBAAA2B,CAAiB5O,GAEf,OAAO0f,EADMhZ,KAAKsW,WAAWhd,GAE/B,CAEA,wBAAAwS,CAAyBxS,GAEvB,ONvNE,SAAmC+M,GACvC,MAAM2B,EAAME,EAAiB7B,GAC7B,OAAO2B,GAAKlM,aAAe,IAC7B,CMoNWmd,CADMjZ,KAAKsW,WAAWhd,GAE/B,CAEA,UAAA4f,CAAWlJ,EAAe1W,GAExB,ONpNE,SAAqB+M,EAAa2J,GACtC,MAAMmJ,EAAInJ,EAAMpX,OAAO2P,cACvB,OAAK4Q,EAEE9S,EAAKjL,OAAO4M,IACjB,MAAMoR,EAAcpR,EAAIrH,MAAM4H,cAAcK,SAASuQ,GAC/CE,GAAmBrR,EAAIL,UAAY,IAAImB,KAAKN,GAAKA,EAAED,cAAcK,SAASuQ,IAChF,OAAOC,GAAeC,IALT,EAOjB,CM2MWC,CADMtZ,KAAKsW,WAAWhd,GACC0W,EAChC,CAGA,6BAAM7F,CACJC,EACAC,EACA7J,GAKA,OAAOR,KAAKqW,WAAWlM,wBAAwBC,EAAcC,EAAY7J,EAC3E,CAEA,oCAAMgL,CAA+BzD,GACnC,OAAO/H,KAAKqW,WAAW7K,+BAA+BzD,EACxD,CAEA,UAAAmE,GACElM,KAAKqW,WAAWnK,YAClB,CAEA,iBAAAqN,GACE,OAAOvU,EAAmBhF,KAAK3I,IACjC,CAEA,MAAAqI,GACE,OAAOM,KAAK3I,GACd,CAEA,OAAAmiB,GACExZ,KAAK3I,KAAKoiB,SACVzZ,KAAK3I,IAAM,KACX2I,KAAKiW,UAAUhW,UAAU,IACzBD,KAAKkW,cAAgB,KACrBlW,KAAKmW,UAAY,IAAI3T,EAAmB,IAAMxC,KAAK3I,IACrD,CAEA,qBAAMqJ,CAAgBpH,SAEd0G,KAAKtI,KAAK0c,mBAAmB9a,SAE7B0G,KAAKiW,UAAUvV,gBAAgBpH,GACrC0G,KAAK0Z,wBAAwBpgB,EAAMhC,IAQnC0I,KAAKgW,OAAOf,KAAK,eAAgB,CAAE3b,SACrC,CAEA,OAAAqgB,GAAY,QAAS3Z,KAAK3I,GAAI,CAEtB,uBAAAqiB,CAAwBE,GAC9B,MAAMviB,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,OAEV,MAAMue,EAAc5V,KAAKyL,OAAO0I,YAAYyB,YAC5C,GAAKA,EAEL,IAAK,MAAOvW,EAASkF,KAAW1J,OAAOC,QAAQ8a,GAAc,CAC3D,MAAMiE,EAAWlhB,OAAO0G,KAAa1G,OAAOihB,GAC5C,IAAK,MAAMnV,KAAKF,EACTlN,EAAIqM,SAASe,EAAEnN,KACpBD,EAAIsM,kBAAkBc,EAAEnN,GAAI,aAAcuiB,EAAW,UAAY,OAErE,CACF,CAEQ,gBAAAtO,GACN,OAAOvL,KAAK2O,OAAOnO,SAAS5B,eAAiB,EAC/C,CAEQ,cAAAkb,GACN,MAAM5O,EAAIlL,KAAKyL,OAAO3P,YACtB,IAAKoP,EAAG,OAAO,KAEf,MAAM6O,UAAEA,EAASC,UAAEA,EAASC,OAAEA,EAAMC,OAAEA,GAAWhP,EACjD,GACe,MAAb6O,GAAkC,MAAbC,GACX,MAAVC,GAA4B,MAAVC,EAClB,OAAO,KAGT,MAAM5d,EAAUC,KAAKC,IAAIud,EAAWE,GAC9Bxd,EAAUF,KAAKG,IAAIqd,EAAWE,GAIpC,MAAO,CACL,CAAC3d,EAJcC,KAAKC,IAAIwd,EAAWE,IAKnC,CAACzd,EAJcF,KAAKG,IAAIsd,EAAWE,IAMvC,CAEQ,yBAAA3C,GACN,MAAMlgB,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,OACV,MAAMiU,EAAStL,KAAK8Z,iBACpB,GAAKxO,EAEL,IACEjU,EAAI8iB,SACJ9iB,EAAIqH,UAAU4M,EAAe,CAC3B3M,QAASqB,KAAKuL,mBACd1M,SAAS,EACTC,SAAU,EACVsb,QAAS,IAEb,CAAE,MAAO9F,GACPtU,KAAKgB,OAAO9H,KAAK,gDAAiDob,EACpE,CACF,CAGQ,4BAAM+F,GACZ,MAAMC,EAAWta,KAAKyL,OAAO0I,YAAYmG,SACnC1E,EAAc5V,KAAKyL,OAAO0I,YAAYyB,YACtC2E,EAAW7D,EACjB,GAAuC,gBAAnC1W,KAAK2O,OAAOnO,SAASga,UAEvB,OADAxa,KAAKgB,OAAOlI,MAAM,2DACXwc,EAAsB,CAC3BhR,MAAOiW,EACP3E,cACAH,aAAczV,KAAK2O,OAAOnO,SAASiV,cAAgB,KACnDC,qBAGJ,IAAK4E,EAEH,OADAta,KAAKgB,OAAO9H,KAAK,+DACVoc,EAAsB,CAC3BhR,MAAOiW,EACP3E,cACAH,aAAczV,KAAK2O,OAAOnO,SAASiV,cAAgB,KACnDC,qBAIJ,IACE,MAAM3T,QAAYJ,MAAM2Y,GACxB,IAAKvY,EAAIC,GAAI,MAAM,IAAIzE,MAAM,QAAQwE,EAAIE,UAAUF,EAAIiP,cAGvD,OAAOsE,EAAsB,CAC3BhR,YAHoBvC,EAAIG,OAIxB0T,cACAH,aAAczV,KAAK2O,OAAOnO,SAASiV,cAAgB,KACnDC,oBAEJ,CAAE,MAAOpB,GAEP,OADAtU,KAAKgB,OAAO9H,KAAK,2DAA4Dob,GACtEgB,EAAsB,CAC3BhR,MAAOiW,EACP3E,cACAH,aAAczV,KAAK2O,OAAOnO,SAASiV,cAAgB,KACnDC,oBAEJ,CACF,CAEQ,0BAAAiB,CAA2BrS,GACjC,MAAMmW,EAAWza,KAAKyL,OAAO0I,YAAYyB,YACzC,GAAI6E,GAAY5f,OAAOsH,KAAKsY,GAAUzd,OAAQ,OAE9C,MAAM0d,EAAiD,CAAA,EAEvD,IAAK,MAAM9V,KAASN,EAAMC,QAAU,GAAI,CACtC,MAAMjN,EAAKsN,EAAMtN,IAAM,GACjB8Q,EAAI,UAAUC,KAAK/Q,GACzB,IAAK8Q,EAAG,SAER,MAAMuS,EAAWvS,EAAE,GACnBsS,EAAQC,KAAc,GACtBD,EAAQC,GAAU9V,KAAK,CAAEvN,MAC3B,CAEA0I,KAAKyL,QAAU,CAAA,EACfzL,KAAKyL,MAAM0I,aAAe,CAAA,EAC1BnU,KAAKyL,MAAM0I,WAAWyB,YAAc8E,CACtC,CAEQ,iBAAArD,GACN,MAAMhgB,EAAM2I,KAAK3I,IACjB,IAAKA,EAAK,OAEV,MAAMujB,EAAqC,CAAEnjB,KAAM,oBAAqBE,SAAU,IAGlFR,EAAQC,cAAcC,EAAKU,GAC3BZ,EAAQC,cAAcC,EAAKY,GAG3Bd,EAAQC,cAAcC,EAAKW,GAGtBX,EAAIE,UAAUW,IACjBb,EAAIG,UAAUU,EAAiB,CAC7BT,KAAM,UACNC,KAAMkjB,EACNjF,aAAa,IAIZte,EAAIE,UAAU,oBACjBF,EAAIG,UAAU,kBAAmB,CAC/BC,KAAM,UACNC,KAAMkjB,GAGZ,mDAGI,SAA8BjM,GAClC,OAAO,IAAIkH,EAAWlH,EACxB"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/map/sources.ts","../src/constants.ts","../src/logger.ts","../src/map/floors.ts","../src/map/sprites.ts","../src/map/viewModes.ts","../src/map/camera.ts","../src/map/poi.ts","../src/map/wayfinding.ts","../src/map/amenities.ts","../src/data/jacsProvider.ts","../src/data/jacsDataProvider.ts","../src/events.ts","../src/sdk.ts","../src/map/scene.ts","../src/map/destinations.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Sources","ensureGeoJson","map","id","getSource","addSource","type","data","features","setData","fc","src","INDOOR_SOURCE_ID","POI_SOURCE_ID","WALLS_SOURCE_ID","ROUTE_SOURCE_ID","EXPECTED_INDOOR_LAYER_IDS","noop","createLogger","opts","enabled","Boolean","prefix","p","String","trim","fmtPrefix","debug","args","console","log","warn","error","FloorManager","applyFloor","floor","wallFeet","updateWalls","updateIndoor","adjusted","Number","isFinite","f","t","properties","featureType","EXTRUDED_INTERIOR_FEATURE_TYPES","has","geom","geometry","inset","turf","buffer","units","insetExtrudedInteriors","geojson","counts","key","Object","entries","sort","a","b","slice","walls","filter","unit","inner","props","custom_height","rawHeight","customProperties","height","wall_height","numericHeight","coordinates","buildWalls","boundsFromGeoJson","aLng","aLat","bLng","bLat","bbox","westLng","Math","min","eastLng","max","southLat","selectDefaultFloor","floors","Array","isArray","length","find","isDefault","selectInitialFloor","desired","match","activateFloor","Error","updatePOIs","getZoom","minIndoorZoom","setZoom","newBounds","isFirstActivation","didFit","shouldFit","newWest","newSouth","newEast","newNorth","view","getBounds","getWest","getEast","getSouth","getNorth","fitBounds","padding","boundsPadding","animate","duration","bearing","getBearing","pitch","getPitch","once","setDidFit","floorId","animated","Set","FloorsApi","currentFloor","getMap","getConfig","updatePoiSource","logFn","constructor","deps","this","setFloors","getFloors","getCurrentFloor","v","getDefaultFloor","getInitialFloor","cfg","options","initialFloor","setCurrentFloor","name","geojsonFeatures","wallThickness","message","payload","logger","spriteCache","Map","Sprites","getSpriteKeys","spriteUrl","sprite","first","url","resolveSpriteUrl","getStyle","fetch","jsonUrl","endsWith","get","res","ok","status","json","keys","set","empty","unitsOutline2dId","unitsWallExtrusionIds","ViewModeController","is3dEnabled","isUnits2dEnabled","isFlatMode","cachedExtrusionIds","extrusionOriginalVisibility","unitsExtrusionOriginalVisibility","unitsOutlineOriginalVisibility","onStyleData","ids","listExtrusionLayerIds","setLayersVisibility","applyUnits2dVisibility","set3dEnabled","vis","forEach","getLayoutProperty","original","getLayer","setLayoutProperty","triggerRepaint","toggle3d","getIs3dEnabled","setUnits2dEnabled","toggleUnits2d","getIsUnits2dEnabled","setFlatMode","toggleFlatMode","getIsFlatMode","outlineVis","style","layers","byType","l","expected","presentExpected","layer","push","layerIds","visibility","captureCameraState","center","getCenter","round","value","precision","rounded","toFixed","is","formatNumber","lng","lat","zoom","PoiManager","ctx","amenities","destinations","Promise","all","getAmenities","getDestinations","pois","buildPOIs","spriteKeys","toFeatureCollection","wpMapId","mapId","youAreHereAssigned","amenity","waypoints","isKiosk","isKioskAmenity","defaultIconId","getIconIdFromSvg","svg","undefined","youAreHereIconId","wp","hasCoordinates","isThisWaypointYouAreHere","iconId","waypointId","_","amenityType","keywords","showLabel","isYouAreHere","waypoint","destination","poi","poiType","getYouAreHerePOI","coords","m","exec","toLower","toLowerCase","k","extensors","extType","nameLooksLikeKiosk","includes","keywordsContainKiosk","some","WayfindingManager","routeAnimationFrame","routeAnimationStart","routeAnimationDurationMs","routeActive","buildWayfindFeatureCollection","result","pushPoint","raw","xyz","points","path","paths","resultShape","hasPoints","hasPath","hasPaths0Points","extractedCount","count","last","wayfindBetweenWaypoints","fromWaypoint","toWaypoint","getVenue","routeResult","computeRoute","err","featureCount","startRouteAnimation","mode","centerMode","line","dest","flyTo","lngs","c","lats","minLng","maxLng","bounds","getBoundsPadding","navigateFromKioskToDestination","venue","youAreHere","destWaypoint","kioskWaypoint","fromCoords","getYouAreHereCoordinates","rawDest","toCoords","showRouteContext","clearRoute","stopRouteAnimation","setPoiLayersVisible","visible","visibilityValue","updateRouteEndpoints","from","to","role","clearRouteEndpoints","hideRouteContext","window","cancelAnimationFrame","performance","now","step","mapInstance","elapsed","clamped","head","tail","lineGradient","haloGradient","setPaintProperty","requestAnimationFrame","AmenityManager","getFloorById","loadForFloor","getByMap","getAll","flatMap","getByFloorId","getAllKiosks","getKioskForFloor","logKioskForFloor","kiosk","JacsProvider","proxyBaseUrl","direct","fetchImpl","tokenCache","config","scope","globalThis","rawFetch","bind","host","normalizeHost","clientId","username","password","getPolygonLayers","encodeURIComponent","customerId","getJson","extractArray","getFloorMapTemplate3d","venueId","buildingId","getVenueAll","getFloorMapGeojson","getBuildingFull","query","URLSearchParams","mapProfile","toString","full","getBuildings","getStylesheet3d","invalidateToken","base","replace","startsWith","method","headers","Accept","body","safeReadText","statusText","token","getJwtToken","joinUrl","Authorization","items","results","Date","cached","expiresAtMs","tokenUrl","formBody","access_token","jwt","accessToken","expiresInSecRaw","expires_in","expiresIn","expires","ttl","expiresInSec","ttlSec","text","resolveByMapArg","arg","JacsDataProvider","jacs","destinationsByMapId","amenitiesByMapId","venueLike","init","j","auth","loadVenue","jmap","venueAll","buildings","firstBuilding","waypointsByMapId","list","rawFloors","defaultFloorId","sdkFloors","shortName","sequence","level","preference","mapTemplate3d","_waypoints","floorIdByMapId","waypointsById","x","y","hydrateWaypoints","refs","ref","d","clear","polygonLayers","getAllFloors","styleSheet","ensureFloorGeojson","normalizeGeojsonPayload","e","preloadRemainingFloors","pending","EventBus","handlers","on","event","cb","add","off","delete","emit","fn","ensureGeojsonSource","extra","sources","patchVenueStyleForSdk","next","structuredClone","customSprite","defaultSpriteUrl","lineMetrics","floorLayers","MinuteMaps","wayfindingProvider","async","events","floorsApi","defaultCamera","viewModes","amenityManager","wayfinding","getAllPOIs","collection","container","finalStyle","baseStyle","ensureFloorLayersFromStyle","el","document","getElementById","maplibregl","createScene","msg","sourceId","tile","camera","ensureCoreSources","initial","applyInitialViewFromVenue","addControl","control","position","setView","currentCenter","targetCenter","targetZoom","targetPitch","targetBearing","effectiveDuration","essential","setCenter","setPitch","setBearing","setMapView","resetView","state","easeTo","jumpTo","resetMapView","target","getDestinationsForFloor","mapTemplates3d","buildAllPOIsForFloor","getYouAreHerePoiFromList","getYouAreHereCoordsFromList","searchPOIs","q","matchesName","matchesKeywords","searchPoisInList","getCameraPosition","destroy","remove","setFloorLayerVisibility","isReady","activeFloorId","isActive","getVenueBounds","bottomLng","bottomLat","topLng","topLat","resize","maxZoom","loadAndPatchVenueStyle","styleUrl","fallback","styleMode","existing","derived","floorKey","emptyFc"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ import { IControl, ControlPosition, Map } from 'maplibre-gl';
|
|
|
6
6
|
interface Floor {
|
|
7
7
|
/** Unique floor identifier */
|
|
8
8
|
id: string | number;
|
|
9
|
+
/**
|
|
10
|
+
* Underlying map entity id. Separate from `id` (the floor entity id) — used
|
|
11
|
+
* by waypoints (`wp.mapId`) and floor-geojson endpoints. Optional because
|
|
12
|
+
* not all providers populate it.
|
|
13
|
+
*/
|
|
14
|
+
mapId?: string | number;
|
|
9
15
|
/** Display name of the floor */
|
|
10
16
|
name: string;
|
|
11
17
|
/** Floor sequence/order (e.g., -1 for basement, 0 for ground, 1 for first floor) */
|