UNPKG

urbi-exhibitions

Version:
2 lines (1 loc) 7.98 kB
"use strict";var w=Object.defineProperty;var D=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var l=(i,t,e)=>D(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../routeCaching-3pTPTO24.cjs");function P(i){const t=i.models[0];return{modelId:t.name,isDark:!!i.isDark,coordinates:i.coords,linkedIds:i.buildingIds,scale:i.scale,rotateX:i.rotateX*180,rotateY:i.rotateY*180,rotateZ:i.rotateZ*180,offsetX:i.moveX/100,offsetY:i.moveY/100,offsetZ:i.moveZ/100,modelUrl:t.path}}function A(i){return{rotateX:i.rotateX*180,rotateY:i.rotateY*180,rotateZ:i.rotateZ*180,offsetX:i.moveX/100,offsetY:i.moveY/100,offsetZ:i.moveZ/100}}var c=63710088e-1,O={centimeters:c*100,centimetres:c*100,degrees:360/(2*Math.PI),feet:c*3.28084,inches:c*39.37,kilometers:c/1e3,kilometres:c/1e3,meters:c,metres:c,miles:c/1609.344,millimeters:c*1e3,millimetres:c*1e3,nauticalmiles:c/1852,radians:1,yards:c*1.0936};function R(i,t,e={}){const o={type:"Feature"};return(e.id===0||e.id)&&(o.id=e.id),e.bbox&&(o.bbox=e.bbox),o.properties=t||{},o.geometry=i,o}function f(i,t,e={}){if(!i)throw new Error("coordinates is required");if(!Array.isArray(i))throw new Error("coordinates must be an Array");if(i.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!I(i[0])||!I(i[1]))throw new Error("coordinates must contain numbers");return R({type:"Point",coordinates:i},t,e)}function T(i,t="kilometers"){const e=O[t];if(!e)throw new Error(t+" units is invalid");return i*e}function C(i,t="kilometers"){const e=O[t];if(!e)throw new Error(t+" units is invalid");return i/e}function y(i){return i%(2*Math.PI)*180/Math.PI}function m(i){return i%360*Math.PI/180}function I(i){return!isNaN(i)&&i!==null&&!Array.isArray(i)}function M(i){if(!i)throw new Error("coord is required");if(!Array.isArray(i)){if(i.type==="Feature"&&i.geometry!==null&&i.geometry.type==="Point")return[...i.geometry.coordinates];if(i.type==="Point")return[...i.coordinates]}if(Array.isArray(i)&&i.length>=2&&!Array.isArray(i[0])&&!Array.isArray(i[1]))return[...i];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function v(i,t,e={}){if(e.final===!0)return S(i,t);const o=M(i),r=M(t),u=m(o[0]),n=m(r[0]),s=m(o[1]),a=m(r[1]),h=Math.sin(n-u)*Math.cos(a),g=Math.cos(s)*Math.sin(a)-Math.sin(s)*Math.cos(a)*Math.cos(n-u);return y(Math.atan2(h,g))}function S(i,t){let e=v(t,i);return e=(e+180)%360,e}var _=v;function z(i,t,e={}){var o=M(i),r=M(t),u=m(r[1]-o[1]),n=m(r[0]-o[0]),s=m(o[1]),a=m(r[1]),h=Math.pow(Math.sin(u/2),2)+Math.pow(Math.sin(n/2),2)*Math.cos(s)*Math.cos(a);return T(2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h)),e.units)}var F=z;function x(i,t,e,o={}){const r=M(i),u=m(r[0]),n=m(r[1]),s=m(e),a=C(t,o.units),h=Math.asin(Math.sin(n)*Math.cos(a)+Math.cos(n)*Math.sin(a)*Math.cos(s)),g=u+Math.atan2(Math.sin(s)*Math.sin(a)*Math.cos(n),Math.cos(a)-Math.sin(n)*Math.sin(h)),d=y(g),Z=y(h);return f([d,Z],o.properties)}function N(i,t){const e=z(i,t),o=v(i,t);return x(i,e/2,o)}var B=N;const X={zoomInOutTime:1e3,defaultRotationDuration:4e3,defaultZoom:18.5,defaultPitch:55,step:150},E=600,k=5e3,Y=120,L=60*60*1e3;class Q{constructor({zoom:t,maxZoom:e,minZoom:o,center:r,pitch:u,rotation:n,baseDuration:s,maxZoomDuration:a,buildingFlightOption:h}){l(this,"zoom");l(this,"maxZoom");l(this,"minZoom");l(this,"center");l(this,"pitch");l(this,"rotation");l(this,"baseDuration");l(this,"maxZoomDuration");l(this,"zoomAmplitude");l(this,"buildingFlightOption");l(this,"flightId");l(this,"activeFlightMap");this.zoom=t,this.maxZoom=e,this.minZoom=o,this.center=r,this.pitch=u,this.rotation=n,this.baseDuration=s||E,this.maxZoomDuration=a||k,this.zoomAmplitude=e-o,this.buildingFlightOption={...X,...h||{}},this.flightId=0,this.activeFlightMap={}}getInitialMapOptions(){return{zoom:this.zoom,maxZoom:this.maxZoom,minZoom:this.minZoom,center:this.center,pitch:this.pitch,rotation:this.rotation}}getFlightId(){return++this.flightId}waitIdle(t){return new Promise(e=>{t&&t.once("idle",e)})}sleep(t){return new Promise(e=>{setTimeout(e,t)})}abortFlights(){for(const t in this.activeFlightMap)this.activeFlightMap[t]=!1}async runFlight(t,e,o=!1){this.abortFlights();const r=this.getFlightId();this.activeFlightMap[r]=!0;for(let u=0;u<e.length;u++){if(!this.activeFlightMap[r])return;const n=e[u];o&&console.log(n,u);const s=n.duration||0;if(n.center){const a={duration:s};n.centerEasing&&(a.easing=n.centerEasing),t.setCenter(n.center,a)}if(n.styleZoom!==void 0){const a={duration:s,useHeightForAnimation:!0};n.styleZoomEasing&&(a.easing=n.styleZoomEasing),t.setStyleZoom(n.styleZoom,a)}else if(n.zoom!==void 0){const a={duration:s,useHeightForAnimation:!0};n.zoomEasing&&(a.easing=n.zoomEasing),t.setZoom(n.zoom,a)}if(n.pitch!==void 0){const a={duration:s};n.pitchEasing&&(a.easing=n.pitchEasing),t.setPitch((n.incremental?t.getPitch():0)+n.pitch,a)}if(n.rotation!==void 0){const a={duration:n.rotationDuration??s};n.rotationEasing&&(a.easing=n.rotationEasing),t.setRotation((n.incremental?t.getRotation():0)+n.rotation,{...a,normalize:n.rotationNormalize??!0})}typeof n.f=="function"&&n.f(),n.waitIdle?await this.waitIdle(t):await this.sleep(s)}}getBuildingBaseFlight({center:t,styleZoom:e,pitch:o,...r}){const u=r.rotationDuration??this.buildingFlightOption.defaultRotationDuration;return[{duration:this.buildingFlightOption.zoomInOutTime,center:t,styleZoom:e??this.buildingFlightOption.defaultZoom,pitch:o??this.buildingFlightOption.defaultPitch},{duration:u/2,rotationEasing:"easeInSine",rotation:-this.buildingFlightOption.step,incremental:!0},{duration:u/2,rotationEasing:"easeOutSine",rotation:-this.buildingFlightOption.step,incremental:!0}]}runBuildingFlight(t,e,o){const r=[...this.getBuildingBaseFlight(e),{duration:this.buildingFlightOption.zoomInOutTime,styleZoom:t.getStyleZoom(),pitch:t.getPitch(),rotation:t.getRotation()},{f:o}];return this.runFlight(t,r)}flyToOpts(t,e={},o){const r=[{duration:2e3,centerEasing:e.easing??"easeInOutQuad",zoomEasing:e.easing??"easeInOutQuad",styleZoomEasing:e.easing??"easeInOutQuad",rotationNormalize:!0,...e}];return o&&r.push({f:o}),this.runFlight(t,r)}getZoomParams({from:t=this.zoom,to:e=this.zoom}){const o=t-e;return{duration:this.maxZoomDuration*Math.abs(o)/this.zoomAmplitude,dir:o>0?"out":"in",easing:o>0?"easeInQuart":"easeOutQuart"}}getZoomPart({from:t=this.zoom,to:e=this.zoom}){const{duration:o,easing:r}=this.getZoomParams({from:t,to:e});return{duration:o,zoom:e,zoomEasing:r}}getMoveCenterOnMaxZoomPart(t){return t?{duration:2*E,center:t,centerEasing:"easeInOutQuad"}:{}}getMoveCenter(t,{to:e,...o}){if(!e)return{};const r=o.from??t.getCenter();return{duration:F(t.project(r),t.project(e))/5,center:e,centerEasing:"easeInOutQuad"}}getZoomToOpts({from:t=this.zoom,opts:e}){if(!e||!e.zoom)return{};const{duration:o,easing:r}=this.getZoomParams({from:t,to:e.zoom});return{duration:o<this.baseDuration?this.baseDuration:o,zoom:e.zoom,pitch:e.pitch,center:e.center,rotation:e.rotation,centerEasing:r}}resetMapRestrictions(t){t.setMaxZoom(this.maxZoom),t.setMinZoom(this.minZoom)}getLineFlight(t,{speed:e=Y,distanceLimit:o=1/0,restrictRotationDuration:r=!1,logResult:u=!1,cb:n}){const s=[];let a=0,h=0;for(let g=0;g<t.length-1;g++){const d=F(t[g],t[g+1]);if(d===0)continue;h+=d,a=_(f(t[g]),f(t[g+1]));const b=d/e*L;if(s.push({rotation:-a,rotationDuration:r&&b>500?500:void 0,rotationNormalize:!0,traveledDistance:h,duration:b,center:t[g+1],centerEasing:"linear",waitIdle:g===0}),n&&s.push({traveledDistance:h,f:function(){n(this.traveledDistance)}}),h>o)break}return u&&console.log(s),{flight:s,speed:e,distance:h}}getMidpoint(t,e){const o=f(t),r=f(e);return B(o,r).geometry.coordinates}}exports.clearRoutesCache=p.clearRoutesCache;exports.getRouteCache=p.getRouteCache;exports.getRouteStringKey=p.getRouteStringKey;exports.prefetchRoutes=p.prefetchRoutes;exports.routesCache=p.routesCache;exports.MapFlight=Q;exports.convertModelParams=A;exports.convertModelToCS=P;