@mapcreator/sdk 3.1.0 → 3.1.1

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/Video.d.ts CHANGED
@@ -32,13 +32,6 @@ export declare class Video {
32
32
  frames(asBlob: false): AsyncGenerator<ImageData, void, void>;
33
33
  frames(asBlob: boolean): AsyncGenerator<Blob | ImageData, void, void>;
34
34
  preload(): Promise<void>;
35
- /**
36
- * Waits for the next 'render' or a meaningful 'dataabort' event, whichever
37
- * comes first. 'dataabort' events for tiles that aren't in the 'loading'
38
- * state (e.g. errored tiles being evicted) are ignored — they don't indicate
39
- * lost in-flight work.
40
- */
41
- private waitForRenderOrAbort;
42
35
  private captureFrame;
43
36
  private playFrame;
44
37
  private setFrame;
@@ -5875,33 +5875,37 @@ var Vi = class {
5875
5875
  }
5876
5876
  async preload() {
5877
5877
  this.playbackContext !== void 0 && this.pause();
5878
- let e = this.mcMap.map, t = Math.ceil(this.duration * this.frameRate / 1e3);
5878
+ let e = this.mcMap.map, t = Math.ceil(this.duration * this.frameRate / 1e3), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set();
5879
+ for (let t of Object.values(e.style.tileManagers)) {
5880
+ let e = t.getSource();
5881
+ if (e.type === "vector" || e.type === "raster" || e.type === "raster-dem" || e.type === "geojson") {
5882
+ let r = t.usedForTerrain ? t.tileSize : e.tileSize, i = !t.usedForTerrain && (e.roundZoom ?? !1);
5883
+ n.set(`${r}/${i}`, {
5884
+ tileSize: r,
5885
+ roundZoom: i
5886
+ });
5887
+ }
5888
+ }
5879
5889
  this.preloadOverlay = new xi(this.mcMap.map), e._fadeDuration = 0;
5880
5890
  try {
5881
- let n;
5882
- for (let r = 0; r < t; r++) {
5883
- this.preloadOverlay?.setProgress(r / t);
5884
- let i = this.cameraCurve.sample(r * 1e3 / this.frameRate);
5885
- yi(n, i) || (this.setCamera(i), await this.waitForRenderOrAbort() === "render" ? n = i : (n !== void 0 && this.setCamera(n), e.triggerRepaint(), await e.once("idle"), r--));
5891
+ let i, a = /* @__PURE__ */ new Set();
5892
+ for (let o = 0; o < t; o++) {
5893
+ this.preloadOverlay?.setProgress(o / t);
5894
+ let s = this.cameraCurve.sample(o * 1e3 / this.frameRate);
5895
+ if (yi(i, s)) continue;
5896
+ this.setCamera(s);
5897
+ let c = new Set([...n].flatMap(([t, n]) => e.coveringTiles(n).map((e) => `${t}/${e.key}`)));
5898
+ if (i !== void 0 && [...a].some((e) => !r.has(e) && !c.has(e))) {
5899
+ this.setCamera(i), await e.once("idle");
5900
+ for (let e of a) r.add(e);
5901
+ }
5902
+ i = s, a = c;
5886
5903
  }
5887
- e.areTilesLoaded() || await e.once("idle");
5904
+ i !== void 0 && (this.setCamera(i), await e.once("idle"));
5888
5905
  } finally {
5889
5906
  this.setFrame(this.playhead), e._fadeDuration = 300, this.preloadOverlay?.remove(), this.preloadOverlay = void 0;
5890
5907
  }
5891
5908
  }
5892
- waitForRenderOrAbort() {
5893
- let e = this.mcMap.map;
5894
- return new Promise((t) => {
5895
- let n = () => {
5896
- e.off("render", r), e.off("dataabort", i);
5897
- }, r = () => {
5898
- n(), t("render");
5899
- }, i = (e) => {
5900
- e.tile?.state === "loading" && (n(), t("abort"));
5901
- };
5902
- e.on("render", r), e.on("dataabort", i);
5903
- });
5904
- }
5905
5909
  async captureFrame(e, t, n, r, i, a, o, s, c) {
5906
5910
  return this.setFrame(e), await this.mcMap.map.once("idle"), i.fillStyle = this.backgroundColor, i.fillRect(0, 0, a, o), i.drawImage(n, 0, 0), await He(i, this.svgCache, s, c), t ? r.convertToBlob() : i.getImageData(0, 0, a, o);
5907
5911
  }
@@ -542,4 +542,4 @@ import{AttributionControl as e,Event as t,Evented as n,LngLatBounds as r,Map as
542
542
  ${ma}
543
543
  </button>
544
544
  </div>
545
- `,Ld=class{callbacks;duration;container;mapContainer;playButton;restartButton;fullscreenButton;slider;sliderFill;playheadLabel;playhead=0;isPlaying=!1;constructor(e,t,n){this.duration=t,this.callbacks=n,this.mapContainer=e.getContainer(),this.container=document.createElement(`div`),this.container.className=`video-controls`,this.container.innerHTML=Id(t),this.playButton=this.container.querySelector(`.video-button.play`),this.restartButton=this.container.querySelector(`.video-button.restart`),this.fullscreenButton=this.container.querySelector(`.video-button.fullscreen`),this.slider=this.container.querySelector(`.video-slider`),this.sliderFill=this.container.querySelector(`.video-slider-line-left`),this.playheadLabel=this.container.querySelector(`.video-playhead`),this.playButton.addEventListener(`click`,()=>this.callbacks.playPause()),this.restartButton.addEventListener(`click`,()=>this.callbacks.restart()),this.fullscreenButton.addEventListener(`click`,()=>ya(this.mapContainer)),this.slider.addEventListener(`input`,()=>{this.duration>0&&this.callbacks.seek(Number(this.slider.value))}),this.mapContainer.appendChild(this.container),this.update()}setPlayhead(e){this.playhead=e,this.update()}setPlaying(e){this.isPlaying=e,this.update()}update(){let{duration:e,playhead:t}=this;this.playButton.classList.toggle(`playing`,this.isPlaying),this.restartButton.classList.toggle(`disabled`,t===0),this.slider.value=String(t),this.sliderFill.style.width=`${te(0,e,t)*100}%`,this.playheadLabel.textContent=cd(t)}},Rd=class extends t{time;constructor(e,t){super(e),this.time=t}},zd={linear:Dd,easeOutCubic:Od,easeOutBack:Ad,easeOutBounce:jd,easeOutElastic:kd};function Bd(e){return e.entryType===`fade`||e.exitType===`fade`||e.entryType===`instant`||e.exitType===`instant`}function Vd(e){return e.entryType===`grow`||e.exitType===`grow`}function Hd(e,t,n){let{entry:r,entryDuration:i,exit:a,exitDuration:o}=e,{entryType:s,entryEasing:c,exitType:l,exitEasing:u}=e;return n<r&&(s===t||s===`instant`&&t===`fade`)||n>a&&(l===t||l===`instant`&&t===`fade`)?0:i>0&&n<r+i&&s===t?zd[c](n-r,0,1,i):o>0&&n>a-o&&l===t?zd[u](n-(a-o),1,-1,o):1}function Ud(e){return e.target.type===`model`}function Wd(e){return e.target.type===`layer`||e.target.type===`overlay`}var Gd=class{mcMap;cameraCurve;registryAnimations;layerAnimations;registry;svgs;svgCache;duration;frameRate;loop;mapstyle;overlays;layerInfo;backgroundColor;playhead;playbackContext;controls;preloadOverlay;constructor(e,t,n,r,i,o,s,c){this.mcMap=e,this.playhead=0,this.playbackContext=void 0;let l=(t.video?.keyframes??[]).map(e=>{let{x:t,y:n}=a.fromLngLat(e.center);return{...e,x:t,y:n,fov:e.fov??36.87,elevation:e.elevation??0}}),u=t.video?.animations??[];this.layerAnimations=u.filter(Wd);let d=u.filter(Ud);this.registryAnimations=[...d.filter(e=>e.target.modelId===void 0),...d.filter(e=>e.target.modelId!==void 0)],this.duration=sd(l),this.frameRate=ld(t.export?.frameRate??60),this.cameraCurve=new Md(l),this.registry=new Fu(t),this.svgs=n,this.svgCache=r,this.mapstyle=i,this.overlays=o,this.layerInfo=s,this.backgroundColor=c;let f=t.export?.format===`web_video`;this.loop=f&&(t.web?.loop??!1),f&&t.web?.controls&&(this.controls=new Ld(e.map,this.duration,{playPause:()=>this.playbackContext===void 0?this.play():this.pause(),restart:()=>{this.seekTo(0),this.play()},seek:e=>{this.pause(),this.seekTo(e)}}));let p=this.mcMap.map;p.setCenterClampedToGround(!1),p.setRasterAlignment(!1),p.style?.stylesheet&&(p.style.stylesheet.transition={duration:0,delay:0}),this.setFrame(0),f&&this.launch(t)}async launch(e){e.web?.preload&&await this.preload(),e.web?.autoplay&&setTimeout(()=>this.play())}play(){this.playbackContext===void 0&&this.duration>0&&(this.playhead>=this.duration&&(this.playhead=0),this.playbackContext={startTime:Date.now(),startPlayhead:this.playhead},this.mcMap.fire(new Rd(`playstart`,this.playhead)),this.controls?.setPlaying(!0),this.playFrame())}pause(){this.playbackContext!==void 0&&(this.playbackContext=void 0,this.mcMap.fire(new Rd(`playend`,this.playhead)),this.controls?.setPlaying(!1))}seekTo(e){this.duration>0&&(e=ne(e,0,this.duration),this.setFrame(e),this.playbackContext!==void 0&&(this.playbackContext={startTime:Date.now(),startPlayhead:e}))}remove(){this.playbackContext=void 0}async*frames(e){let t=this.mcMap.map,n=Math.ceil(this.duration*this.frameRate/1e3);t._fadeDuration=0;let r=t.getCanvas(),{width:i,height:a}=r,o=new OffscreenCanvas(i,a),s=o.getContext(`2d`,{willReadFrequently:!0}),c=t.getContainer(),l=c.getBoundingClientRect();for(let t=0;t<n;t++)yield this.captureFrame(t*1e3/this.frameRate,e,r,o,s,i,a,c,l);t._fadeDuration=300,this.playhead=0}async preload(){this.playbackContext!==void 0&&this.pause();let e=this.mcMap.map,t=Math.ceil(this.duration*this.frameRate/1e3);this.preloadOverlay=new fd(this.mcMap.map),e._fadeDuration=0;try{let n;for(let r=0;r<t;r++){this.preloadOverlay?.setProgress(r/t);let i=this.cameraCurve.sample(r*1e3/this.frameRate);ud(n,i)||(this.setCamera(i),await this.waitForRenderOrAbort()===`render`?n=i:(n!==void 0&&this.setCamera(n),e.triggerRepaint(),await e.once(`idle`),r--))}e.areTilesLoaded()||await e.once(`idle`)}finally{this.setFrame(this.playhead),e._fadeDuration=300,this.preloadOverlay?.remove(),this.preloadOverlay=void 0}}waitForRenderOrAbort(){let e=this.mcMap.map;return new Promise(t=>{let n=()=>{e.off(`render`,r),e.off(`dataabort`,i)},r=()=>{n(),t(`render`)},i=e=>{e.tile?.state===`loading`&&(n(),t(`abort`))};e.on(`render`,r),e.on(`dataabort`,i)})}async captureFrame(e,t,n,r,i,a,o,s,c){return this.setFrame(e),await this.mcMap.map.once(`idle`),i.fillStyle=this.backgroundColor,i.fillRect(0,0,a,o),i.drawImage(n,0,0),await je(i,this.svgCache,s,c),t?r.convertToBlob():i.getImageData(0,0,a,o)}playFrame(){if(this.playbackContext!==void 0){let e=this.playbackContext.startPlayhead+(Date.now()-this.playbackContext.startTime);e>this.duration?this.loop?(this.seekTo(0),requestAnimationFrame(()=>this.playFrame())):(this.setFrame(this.duration),this.playbackContext=void 0,this.mcMap.fire(new Rd(`playend`,this.playhead)),this.controls?.setPlaying(!1)):(this.setFrame(e),requestAnimationFrame(()=>this.playFrame()))}}setFrame(e){this.playhead=e;let t=this.cameraCurve.sample(e);this.setCamera(t),this.applyAnimations(e),this.mcMap.fire(new Rd(`play`,e)),this.controls?.setPlayhead(e)}setCamera(e){let t=this.mcMap.map,n=t.getCenter(),r=t.getZoom(),i=t.getBearing(),a=t.getPitch(),o=t.getCenterElevation(),s=t.getVerticalFieldOfView();e.center.lat!==n.lat||e.center.lng!==n.lng||e.zoom!==r||e.bearing!==i||e.pitch!==a||e.elevation!==o||e.fov!==s?(t.setVerticalFieldOfView(e.fov),t.jumpTo(e)):t.triggerRepaint()}applyAnimations(e){let t=this.mcMap.map,{svgs:n,svgCache:r,registryAnimations:i}=this;for(let n of i){let{target:r}=n;if(!Bd(n))continue;let{modelType:i,groupId:a,modelId:o}=r,s=Hd(n,`fade`,e);if(i===`area`){let e=this.registry.models.area[a]??{},n=o===void 0?Object.values(e):e[o]?[e[o]]:[];for(let e of n)t.setFeatureState({source:wi(e),sourceLayer:e.sourceLayerId,id:e.featureId},{[`opacity-${a}`]:s})}else if(i===`polygon`||i===`circle`||i===`line`||i===`marker`||i===`dot`){let e=this.registry.models[i][a]??{},n=o===void 0?Object.keys(e):[o];for(let e of n)t.setFeatureState({source:a,id:E(e)},{opacity:s})}}for(let i of Object.values(this.registry.groups.circle)){let{groupAnimation:a,modelAnimations:o}=this.getGroupAnimations(`circle`,i.id,`scale`),s=a===void 0?1:Hd(a,`grow`,e);(a!==void 0||o.size>0)&&t.getSource(i.id).setData({type:`FeatureCollection`,features:i.models.filter(e=>e.visible??!0).map(t=>{let a=o.get(t.id);return pu(i,t,a===void 0?s:Hd(a,`grow`,e),n,r)})})}for(let n of Object.values(this.registry.groups.line)){let{groupAnimation:i,modelAnimations:a}=this.getGroupAnimations(`line`,n.id,`scale`),o=i===void 0?1:Hd(i,`grow`,e);(i!==void 0||a.size>0)&&t.getSource(n.id).setData({type:`FeatureCollection`,features:n.models.filter(e=>e.visible??!0).map(i=>{let s=a.get(i.id);return Uu(t,n,i,s===void 0?o:Hd(s,`grow`,e),r)})})}for(let i of Object.values(this.registry.groups.marker)){let{groupAnimation:a,modelAnimations:o}=this.getGroupAnimations(`marker`,i.id,`scale`),s=a===void 0?1:Hd(a,`grow`,e);(a!==void 0||o.size>0)&&t.getSource(i.id).setData({type:`FeatureCollection`,features:i.models.filter(e=>e.visible??!0).map(a=>{let c=o.get(a.id);return _u(t,i,a,c===void 0?s:Hd(c,`grow`,e),n,r)})})}let a=this.cameraCurve.sampleAutoHideOpacity(e);for(let t of this.mapstyle.layers){let n=this.getLayerOpacity(t,e,void 0);n===void 0?t.type===`symbol`&&this.setLayerOpacity(t,a):this.setLayerOpacity(t,n)}for(let[t,n]of this.overlays)for(let r of n.layers){let n=this.getLayerOpacity(r,e,t);n===void 0?this.resetLayerOpacity(r):this.setLayerOpacity(r,n)}}getGroupAnimations(e,t,n){let r,i=new Map;for(let a of this.registryAnimations){let{target:o}=a;o.modelType===e&&o.groupId===t&&(n===`opacity`&&Bd(a)||n===`scale`&&Vd(a))&&(o.modelId===void 0?r=a:i.set(o.modelId,a))}return{groupAnimation:r,modelAnimations:i}}getLayerOpacity(e,t,n){let r,i,a=1/0;n!==void 0&&(r=this.layerAnimations.find(e=>e.target.type===`overlay`&&e.target.id===n));for(let t of this.layerAnimations){let{target:n}=t;n.type===`layer`&&n.ids.includes(e.id)&&n.ids.length<a&&(i=t,a=n.ids.length)}let o=this.layerInfo[e.id]?.opacity??Zl[e.type].defaultValue;return i===void 0?r===void 0?void 0:Hd(r,`fade`,t)*o:Hd(i,`fade`,t)*o}setLayerOpacity(e,t){let n=this.mcMap.map,r=Zl[e.type];for(let i of r.props)n.setPaintProperty(e.id,i,t)}resetLayerOpacity(e){let t=this.mcMap.map,n=Zl[e.type],r=this.layerInfo[e.id]?.opacity;for(let i of n.props)t.setPaintProperty(e.id,i,r??e.paint?.[i]??n.defaultValue)}},Kd=class extends n{map;format;mapstyle;svgCache;backgroundColor;vapiUrl;accessToken;image;video;constructor(e,t,n,r,i,a,o,s,c,l,u,d){super(),this.map=e,this.format=t,this.mapstyle=o,this.svgCache=a,this.backgroundColor=l,this.vapiUrl=u,this.accessToken=d,this.image=new nd(this,t,a,l),n===`video`&&(r.video?.keyframes??[]).length>0&&(this.video=new Gd(this,r,i,a,o,s,c,l))}play(){this.video?.play()}pause(){this.video?.pause()}seekTo(e){this.video?.seekTo(e)}async*frames(e=!1){this.video===void 0?yield this.image.frame(e):yield*this.video.frames(e)}preload(){return this.video?.preload()??Promise.resolve()}geoTiffMetadata(e){return ed(this.map,e)}svgExportOptions(e,t,n){return{map:this.map,api:e,signal:n,options:{svgElements:Ae(this.map.getContainer()),fillPatterns:this.svgCache.getFillPatterns(2*window.devicePixelRatio),backgroundColor:this.backgroundColor,detailLevel:this.map.getDetailLevel(),forPDF:this.format===`pdf`,geoRef:this.format===`svg`&&!!t}}}pdfExportOptions(e){return Yu(this.mapstyle,this.svgCache.fonts,{vapiUrl:this.vapiUrl,accessToken:this.accessToken,apiUrl:e.href,bearerToken:e.token})}remove(){let e=this.map.getContainer();ru(this.map),this.video?.remove(),this.map.remove(),e.innerHTML=``,e.style.backgroundColor=``,e.classList.remove(`mc-map`),e.classList.remove(`mc-mode-web`)}};async function qd(t){let{accessToken:n,env:r=`production`}=t,a=r===`bleeding`?`https://vapi.bleeding.mc-cdn.io`:r===`beta`?`https://vapi.beta.mc-cdn.io`:`https://vapi.mc-cdn.io`,o=r===`bleeding`?`https://cdn.bleeding.mapcreator.io`:r===`beta`?`https://cdn.beta.mapcreator.io`:`https://cdn.mapcreator.io`,s=typeof t.job==`string`?await Jd(t.job,o,n):t.job,c=s.export?.format??`png`,l=eu[c]??`static`;await Yd();let u={container:t.container,attributionControl:!1,style:null,maxBounds:[-1/0,-90,1/0,90],maxPitch:85,maxZoom:22,locale:{"CooperativeGesturesHandler.WindowsHelpText":Oa(`windowsHelpText`),"CooperativeGesturesHandler.MacHelpText":Oa(`macHelpText`),"CooperativeGesturesHandler.MobileHelpText":Oa(`mobileHelpText`)},maxCanvasSize:F(),canvasContextAttributes:{preserveDrawingBuffer:t.preserveDrawingBuffer??!1}};l===`video`&&(u.maxTileCacheSize=1/0,u.maxTileCacheZoomLevels=1/0,u.refreshExpiredTiles=!1);let d=new i(u),f=d.getContainer();f.classList.add(`mc-map`),l===`interactive`&&f.classList.add(`mc-mode-web`);let p=l===`interactive`?new Lu(d,t.youTubePlaceholder??!1):void 0,{map:{language:m,hideBasemap:h,detailLevel:g=0,projection:v=`mercator`,terrain:b=!1,terrainExaggeration:S=1},registry:C={},web:w,positionOffsets:T}=s,{models:E={},slots:D={},svgs:O={}}=C,k=new Ue(d,await ge(r,a,n),a,n);d.resize();let A=l===`video`?s.video?.keyframes[0]:void 0,j=A?.pitch??s.map.pitch??0,M=A?.bearing??s.map.rotation??0,N=A?.zoom??s.map.zoom,P=A?.center===void 0?s.map.center:{lng:A.center[0],lat:A.center[1]};d.setPitch(j),d.setBearing(M);let ee=R(s,f,l,c),I,te;l===`interactive`?(te=N-g+Math.log2(ee),I=1):(te=N-g,I=ee,d.on(`resize`,()=>{let e=R(s,f,l,c);e!==d.getScale()&&d.setScale(e)})),d.setScale(I),d.setZoom(te),d.setCenter(P),d.setDetailLevel(g),d.setMinZoom(g),d.addControl(new e({compact:!1})),await iu(s,T??Yl,d,k,{center:P,zoom:te,pitch:j,rotation:M},o,l),p?.setJobObject(s);let ne=l!==`interactive`||(w?.restrictMapMovement??!1);ne&&(d.boxZoom.disable(),d.doubleClickZoom.disable(),d.dragPan.disable(),d.dragRotate.disable(),d.keyboard.disable(),d.scrollZoom.disable(),d.touchPitch.disable(),d.touchZoomRotate.disable(),d.getCanvasContainer().style.cursor=`default`),p?.setParams(w?.popupPosition??`bottomLeft`,x(m,y.TWO),ne,P);let re=s.meta?.mapstyleSet,L=re===void 0?{version:8,sources:{},layers:[]}:await fetch(`${a}/styles/${re}.json?access_token=${n}`).then(e=>e.json());lu(L),d.setStyle(null),d.setStyle(L),await d.once(`style.load`),ue(d,l),d.on(`moveend`,()=>ue(d,l)),d.on(`resize`,()=>ue(d,l)),d.on(`attributionchange`,()=>ue(d,l)),_(m,d);let z=s.map.overlays??[],ie=s.meta?.layers??[];z.length!==ie.length&&(z=[],ie=[]);let ae=await vu(z,ie,d,a,n,L.metadata?.styleOverride),oe=z.reduce((e,t,n)=>e.set(t,ae[n]),new Map);tf(d,k,E,D,O,a,n,l),_(m,d),p?.setPublication(L.metadata?.publication),p?.setpopupElements(),p?.setHighlightManager(),d.setProjection({type:v===`globe`?`globe`:`mercator`});let se=Xd(d,v);Zd(d,se),b&&Qd(d,a,n,S);let ce=$d(s.map.layerInfo,L,ae);ef(d,ce,!h);let le=new Kd(d,c,l,s,O,k,L,oe,ce,se,a,n);return await k.settledImages(),le}function Jd(e,t,n){return fetch(`${t}/jobs/${e}.json?access_token=${n}`).then(e=>e.json())}function Yd(){return new Promise(e=>{let t=()=>{window.innerWidth>0&&window.innerHeight>0&&(window.removeEventListener(`resize`,t),e())};window.addEventListener(`resize`,t),t()})}function Xd(e,t){let n=e.getStyle().metadata??{},r=n[`mc:background-color`]??`#f8f8f8`,i=n[`mc:background-color-globe`]??`#000000`;return t===`globe`?i:r}function Zd(e,t){e.getContainer().style.backgroundColor=t,e.setSky(e.getStyle().sky??Jl),e.setLight({position:[1.15,210,45]})}function Qd(e,t,n,r){e.addSource(`mc-dem`,{type:`raster-dem`,tiles:[`${t}/dataset/jaxa_terrainrgb/{z}/{x}/{y}?access_token=${n}`],attribution:`<a href="https://earth.jaxa.jp/en/data/policy" target="_blank">© AW3D30 (JAXA)</a>`,minzoom:0,maxzoom:12}),e.setTerrain({source:`mc-dem`,exaggeration:r})}function $d(e,t,n){let r=e?.reduce((e,t)=>(e[t.id]={visibility:t.visibility,...t.opacity!==void 0&&{opacity:t.opacity}},e),{})??{},i={};for(let e of t.layers)i[e.id]=r[e.id]??{visibility:(e.layout?.visibility??`visible`)===`visible`};for(let e of n)for(let t of e.layers)i[t.id]=r[t.id]??{visibility:!1};return i}function ef(e,t,n){for(let r in t){let i=e.getLayer(r);if(i!==void 0){let a=t[r];if(e.setLayoutProperty(r,`visibility`,a.visibility&&n?`visible`:`none`),a.opacity!==void 0){let t=Zl[i.type];for(let n of t.props)e.setPaintProperty(r,n,a.opacity)}}}}function tf(e,t,n,r,i,a,o,s){let{beforeNone:c=[],beforeNames:l=[],beforeBoundaries:u=[],beforeWaters:d=[]}=r;c.forEach(r=>{nf(e,t,n,r,i,`mc-before-none`,a,o,s)}),l.forEach(r=>{nf(e,t,n,r,i,`mc-before-names`,a,o,s)}),u.forEach(r=>{nf(e,t,n,r,i,`mc-before-boundaries`,a,o,s)}),d.forEach(r=>{nf(e,t,n,r,i,`mc-before-waters`,a,o,s)})}function nf(e,t,n,r,i,a,o,s,c){if(r.type===`marker`){let o=n.marker?.find(e=>e.id===r.groupId);o&&hu(e,o,a,i,t,c)}else if(r.type===`polygon`){let o=n.polygon?.find(e=>e.id===r.groupId);o&&uu(e,o,a,i,t)}else if(r.type===`circle`){let o=n.circle?.find(e=>e.id===r.groupId);o&&fu(e,o,a,i,t)}else if(r.type===`line`){let i=n.line?.find(e=>e.id===r.groupId);i&&Hu(e,i,a,t,c)}else if(r.type===`dot`){let t=n.dot?.find(e=>e.id===r.groupId);t&&Ku(e,t,a)}else if(r.type===`area`){let c=n.area?.find(e=>e.id===r.groupId);c&&Gu(e,c,a,i,t,o,s)}}export{qd as initMap};
545
+ `,Ld=class{callbacks;duration;container;mapContainer;playButton;restartButton;fullscreenButton;slider;sliderFill;playheadLabel;playhead=0;isPlaying=!1;constructor(e,t,n){this.duration=t,this.callbacks=n,this.mapContainer=e.getContainer(),this.container=document.createElement(`div`),this.container.className=`video-controls`,this.container.innerHTML=Id(t),this.playButton=this.container.querySelector(`.video-button.play`),this.restartButton=this.container.querySelector(`.video-button.restart`),this.fullscreenButton=this.container.querySelector(`.video-button.fullscreen`),this.slider=this.container.querySelector(`.video-slider`),this.sliderFill=this.container.querySelector(`.video-slider-line-left`),this.playheadLabel=this.container.querySelector(`.video-playhead`),this.playButton.addEventListener(`click`,()=>this.callbacks.playPause()),this.restartButton.addEventListener(`click`,()=>this.callbacks.restart()),this.fullscreenButton.addEventListener(`click`,()=>ya(this.mapContainer)),this.slider.addEventListener(`input`,()=>{this.duration>0&&this.callbacks.seek(Number(this.slider.value))}),this.mapContainer.appendChild(this.container),this.update()}setPlayhead(e){this.playhead=e,this.update()}setPlaying(e){this.isPlaying=e,this.update()}update(){let{duration:e,playhead:t}=this;this.playButton.classList.toggle(`playing`,this.isPlaying),this.restartButton.classList.toggle(`disabled`,t===0),this.slider.value=String(t),this.sliderFill.style.width=`${te(0,e,t)*100}%`,this.playheadLabel.textContent=cd(t)}},Rd=class extends t{time;constructor(e,t){super(e),this.time=t}},zd={linear:Dd,easeOutCubic:Od,easeOutBack:Ad,easeOutBounce:jd,easeOutElastic:kd};function Bd(e){return e.entryType===`fade`||e.exitType===`fade`||e.entryType===`instant`||e.exitType===`instant`}function Vd(e){return e.entryType===`grow`||e.exitType===`grow`}function Hd(e,t,n){let{entry:r,entryDuration:i,exit:a,exitDuration:o}=e,{entryType:s,entryEasing:c,exitType:l,exitEasing:u}=e;return n<r&&(s===t||s===`instant`&&t===`fade`)||n>a&&(l===t||l===`instant`&&t===`fade`)?0:i>0&&n<r+i&&s===t?zd[c](n-r,0,1,i):o>0&&n>a-o&&l===t?zd[u](n-(a-o),1,-1,o):1}function Ud(e){return e.target.type===`model`}function Wd(e){return e.target.type===`layer`||e.target.type===`overlay`}var Gd=class{mcMap;cameraCurve;registryAnimations;layerAnimations;registry;svgs;svgCache;duration;frameRate;loop;mapstyle;overlays;layerInfo;backgroundColor;playhead;playbackContext;controls;preloadOverlay;constructor(e,t,n,r,i,o,s,c){this.mcMap=e,this.playhead=0,this.playbackContext=void 0;let l=(t.video?.keyframes??[]).map(e=>{let{x:t,y:n}=a.fromLngLat(e.center);return{...e,x:t,y:n,fov:e.fov??36.87,elevation:e.elevation??0}}),u=t.video?.animations??[];this.layerAnimations=u.filter(Wd);let d=u.filter(Ud);this.registryAnimations=[...d.filter(e=>e.target.modelId===void 0),...d.filter(e=>e.target.modelId!==void 0)],this.duration=sd(l),this.frameRate=ld(t.export?.frameRate??60),this.cameraCurve=new Md(l),this.registry=new Fu(t),this.svgs=n,this.svgCache=r,this.mapstyle=i,this.overlays=o,this.layerInfo=s,this.backgroundColor=c;let f=t.export?.format===`web_video`;this.loop=f&&(t.web?.loop??!1),f&&t.web?.controls&&(this.controls=new Ld(e.map,this.duration,{playPause:()=>this.playbackContext===void 0?this.play():this.pause(),restart:()=>{this.seekTo(0),this.play()},seek:e=>{this.pause(),this.seekTo(e)}}));let p=this.mcMap.map;p.setCenterClampedToGround(!1),p.setRasterAlignment(!1),p.style?.stylesheet&&(p.style.stylesheet.transition={duration:0,delay:0}),this.setFrame(0),f&&this.launch(t)}async launch(e){e.web?.preload&&await this.preload(),e.web?.autoplay&&setTimeout(()=>this.play())}play(){this.playbackContext===void 0&&this.duration>0&&(this.playhead>=this.duration&&(this.playhead=0),this.playbackContext={startTime:Date.now(),startPlayhead:this.playhead},this.mcMap.fire(new Rd(`playstart`,this.playhead)),this.controls?.setPlaying(!0),this.playFrame())}pause(){this.playbackContext!==void 0&&(this.playbackContext=void 0,this.mcMap.fire(new Rd(`playend`,this.playhead)),this.controls?.setPlaying(!1))}seekTo(e){this.duration>0&&(e=ne(e,0,this.duration),this.setFrame(e),this.playbackContext!==void 0&&(this.playbackContext={startTime:Date.now(),startPlayhead:e}))}remove(){this.playbackContext=void 0}async*frames(e){let t=this.mcMap.map,n=Math.ceil(this.duration*this.frameRate/1e3);t._fadeDuration=0;let r=t.getCanvas(),{width:i,height:a}=r,o=new OffscreenCanvas(i,a),s=o.getContext(`2d`,{willReadFrequently:!0}),c=t.getContainer(),l=c.getBoundingClientRect();for(let t=0;t<n;t++)yield this.captureFrame(t*1e3/this.frameRate,e,r,o,s,i,a,c,l);t._fadeDuration=300,this.playhead=0}async preload(){this.playbackContext!==void 0&&this.pause();let e=this.mcMap.map,t=Math.ceil(this.duration*this.frameRate/1e3),n=new Map,r=new Set;for(let t of Object.values(e.style.tileManagers)){let e=t.getSource();if(e.type===`vector`||e.type===`raster`||e.type===`raster-dem`||e.type===`geojson`){let r=t.usedForTerrain?t.tileSize:e.tileSize,i=!t.usedForTerrain&&(e.roundZoom??!1);n.set(`${r}/${i}`,{tileSize:r,roundZoom:i})}}this.preloadOverlay=new fd(this.mcMap.map),e._fadeDuration=0;try{let i,a=new Set;for(let o=0;o<t;o++){this.preloadOverlay?.setProgress(o/t);let s=this.cameraCurve.sample(o*1e3/this.frameRate);if(ud(i,s))continue;this.setCamera(s);let c=new Set([...n].flatMap(([t,n])=>e.coveringTiles(n).map(e=>`${t}/${e.key}`)));if(i!==void 0&&[...a].some(e=>!r.has(e)&&!c.has(e))){this.setCamera(i),await e.once(`idle`);for(let e of a)r.add(e)}i=s,a=c}i!==void 0&&(this.setCamera(i),await e.once(`idle`))}finally{this.setFrame(this.playhead),e._fadeDuration=300,this.preloadOverlay?.remove(),this.preloadOverlay=void 0}}async captureFrame(e,t,n,r,i,a,o,s,c){return this.setFrame(e),await this.mcMap.map.once(`idle`),i.fillStyle=this.backgroundColor,i.fillRect(0,0,a,o),i.drawImage(n,0,0),await je(i,this.svgCache,s,c),t?r.convertToBlob():i.getImageData(0,0,a,o)}playFrame(){if(this.playbackContext!==void 0){let e=this.playbackContext.startPlayhead+(Date.now()-this.playbackContext.startTime);e>this.duration?this.loop?(this.seekTo(0),requestAnimationFrame(()=>this.playFrame())):(this.setFrame(this.duration),this.playbackContext=void 0,this.mcMap.fire(new Rd(`playend`,this.playhead)),this.controls?.setPlaying(!1)):(this.setFrame(e),requestAnimationFrame(()=>this.playFrame()))}}setFrame(e){this.playhead=e;let t=this.cameraCurve.sample(e);this.setCamera(t),this.applyAnimations(e),this.mcMap.fire(new Rd(`play`,e)),this.controls?.setPlayhead(e)}setCamera(e){let t=this.mcMap.map,n=t.getCenter(),r=t.getZoom(),i=t.getBearing(),a=t.getPitch(),o=t.getCenterElevation(),s=t.getVerticalFieldOfView();e.center.lat!==n.lat||e.center.lng!==n.lng||e.zoom!==r||e.bearing!==i||e.pitch!==a||e.elevation!==o||e.fov!==s?(t.setVerticalFieldOfView(e.fov),t.jumpTo(e)):t.triggerRepaint()}applyAnimations(e){let t=this.mcMap.map,{svgs:n,svgCache:r,registryAnimations:i}=this;for(let n of i){let{target:r}=n;if(!Bd(n))continue;let{modelType:i,groupId:a,modelId:o}=r,s=Hd(n,`fade`,e);if(i===`area`){let e=this.registry.models.area[a]??{},n=o===void 0?Object.values(e):e[o]?[e[o]]:[];for(let e of n)t.setFeatureState({source:wi(e),sourceLayer:e.sourceLayerId,id:e.featureId},{[`opacity-${a}`]:s})}else if(i===`polygon`||i===`circle`||i===`line`||i===`marker`||i===`dot`){let e=this.registry.models[i][a]??{},n=o===void 0?Object.keys(e):[o];for(let e of n)t.setFeatureState({source:a,id:E(e)},{opacity:s})}}for(let i of Object.values(this.registry.groups.circle)){let{groupAnimation:a,modelAnimations:o}=this.getGroupAnimations(`circle`,i.id,`scale`),s=a===void 0?1:Hd(a,`grow`,e);(a!==void 0||o.size>0)&&t.getSource(i.id).setData({type:`FeatureCollection`,features:i.models.filter(e=>e.visible??!0).map(t=>{let a=o.get(t.id);return pu(i,t,a===void 0?s:Hd(a,`grow`,e),n,r)})})}for(let n of Object.values(this.registry.groups.line)){let{groupAnimation:i,modelAnimations:a}=this.getGroupAnimations(`line`,n.id,`scale`),o=i===void 0?1:Hd(i,`grow`,e);(i!==void 0||a.size>0)&&t.getSource(n.id).setData({type:`FeatureCollection`,features:n.models.filter(e=>e.visible??!0).map(i=>{let s=a.get(i.id);return Uu(t,n,i,s===void 0?o:Hd(s,`grow`,e),r)})})}for(let i of Object.values(this.registry.groups.marker)){let{groupAnimation:a,modelAnimations:o}=this.getGroupAnimations(`marker`,i.id,`scale`),s=a===void 0?1:Hd(a,`grow`,e);(a!==void 0||o.size>0)&&t.getSource(i.id).setData({type:`FeatureCollection`,features:i.models.filter(e=>e.visible??!0).map(a=>{let c=o.get(a.id);return _u(t,i,a,c===void 0?s:Hd(c,`grow`,e),n,r)})})}let a=this.cameraCurve.sampleAutoHideOpacity(e);for(let t of this.mapstyle.layers){let n=this.getLayerOpacity(t,e,void 0);n===void 0?t.type===`symbol`&&this.setLayerOpacity(t,a):this.setLayerOpacity(t,n)}for(let[t,n]of this.overlays)for(let r of n.layers){let n=this.getLayerOpacity(r,e,t);n===void 0?this.resetLayerOpacity(r):this.setLayerOpacity(r,n)}}getGroupAnimations(e,t,n){let r,i=new Map;for(let a of this.registryAnimations){let{target:o}=a;o.modelType===e&&o.groupId===t&&(n===`opacity`&&Bd(a)||n===`scale`&&Vd(a))&&(o.modelId===void 0?r=a:i.set(o.modelId,a))}return{groupAnimation:r,modelAnimations:i}}getLayerOpacity(e,t,n){let r,i,a=1/0;n!==void 0&&(r=this.layerAnimations.find(e=>e.target.type===`overlay`&&e.target.id===n));for(let t of this.layerAnimations){let{target:n}=t;n.type===`layer`&&n.ids.includes(e.id)&&n.ids.length<a&&(i=t,a=n.ids.length)}let o=this.layerInfo[e.id]?.opacity??Zl[e.type].defaultValue;return i===void 0?r===void 0?void 0:Hd(r,`fade`,t)*o:Hd(i,`fade`,t)*o}setLayerOpacity(e,t){let n=this.mcMap.map,r=Zl[e.type];for(let i of r.props)n.setPaintProperty(e.id,i,t)}resetLayerOpacity(e){let t=this.mcMap.map,n=Zl[e.type],r=this.layerInfo[e.id]?.opacity;for(let i of n.props)t.setPaintProperty(e.id,i,r??e.paint?.[i]??n.defaultValue)}},Kd=class extends n{map;format;mapstyle;svgCache;backgroundColor;vapiUrl;accessToken;image;video;constructor(e,t,n,r,i,a,o,s,c,l,u,d){super(),this.map=e,this.format=t,this.mapstyle=o,this.svgCache=a,this.backgroundColor=l,this.vapiUrl=u,this.accessToken=d,this.image=new nd(this,t,a,l),n===`video`&&(r.video?.keyframes??[]).length>0&&(this.video=new Gd(this,r,i,a,o,s,c,l))}play(){this.video?.play()}pause(){this.video?.pause()}seekTo(e){this.video?.seekTo(e)}async*frames(e=!1){this.video===void 0?yield this.image.frame(e):yield*this.video.frames(e)}preload(){return this.video?.preload()??Promise.resolve()}geoTiffMetadata(e){return ed(this.map,e)}svgExportOptions(e,t,n){return{map:this.map,api:e,signal:n,options:{svgElements:Ae(this.map.getContainer()),fillPatterns:this.svgCache.getFillPatterns(2*window.devicePixelRatio),backgroundColor:this.backgroundColor,detailLevel:this.map.getDetailLevel(),forPDF:this.format===`pdf`,geoRef:this.format===`svg`&&!!t}}}pdfExportOptions(e){return Yu(this.mapstyle,this.svgCache.fonts,{vapiUrl:this.vapiUrl,accessToken:this.accessToken,apiUrl:e.href,bearerToken:e.token})}remove(){let e=this.map.getContainer();ru(this.map),this.video?.remove(),this.map.remove(),e.innerHTML=``,e.style.backgroundColor=``,e.classList.remove(`mc-map`),e.classList.remove(`mc-mode-web`)}};async function qd(t){let{accessToken:n,env:r=`production`}=t,a=r===`bleeding`?`https://vapi.bleeding.mc-cdn.io`:r===`beta`?`https://vapi.beta.mc-cdn.io`:`https://vapi.mc-cdn.io`,o=r===`bleeding`?`https://cdn.bleeding.mapcreator.io`:r===`beta`?`https://cdn.beta.mapcreator.io`:`https://cdn.mapcreator.io`,s=typeof t.job==`string`?await Jd(t.job,o,n):t.job,c=s.export?.format??`png`,l=eu[c]??`static`;await Yd();let u={container:t.container,attributionControl:!1,style:null,maxBounds:[-1/0,-90,1/0,90],maxPitch:85,maxZoom:22,locale:{"CooperativeGesturesHandler.WindowsHelpText":Oa(`windowsHelpText`),"CooperativeGesturesHandler.MacHelpText":Oa(`macHelpText`),"CooperativeGesturesHandler.MobileHelpText":Oa(`mobileHelpText`)},maxCanvasSize:F(),canvasContextAttributes:{preserveDrawingBuffer:t.preserveDrawingBuffer??!1}};l===`video`&&(u.maxTileCacheSize=1/0,u.maxTileCacheZoomLevels=1/0,u.refreshExpiredTiles=!1);let d=new i(u),f=d.getContainer();f.classList.add(`mc-map`),l===`interactive`&&f.classList.add(`mc-mode-web`);let p=l===`interactive`?new Lu(d,t.youTubePlaceholder??!1):void 0,{map:{language:m,hideBasemap:h,detailLevel:g=0,projection:v=`mercator`,terrain:b=!1,terrainExaggeration:S=1},registry:C={},web:w,positionOffsets:T}=s,{models:E={},slots:D={},svgs:O={}}=C,k=new Ue(d,await ge(r,a,n),a,n);d.resize();let A=l===`video`?s.video?.keyframes[0]:void 0,j=A?.pitch??s.map.pitch??0,M=A?.bearing??s.map.rotation??0,N=A?.zoom??s.map.zoom,P=A?.center===void 0?s.map.center:{lng:A.center[0],lat:A.center[1]};d.setPitch(j),d.setBearing(M);let ee=R(s,f,l,c),I,te;l===`interactive`?(te=N-g+Math.log2(ee),I=1):(te=N-g,I=ee,d.on(`resize`,()=>{let e=R(s,f,l,c);e!==d.getScale()&&d.setScale(e)})),d.setScale(I),d.setZoom(te),d.setCenter(P),d.setDetailLevel(g),d.setMinZoom(g),d.addControl(new e({compact:!1})),await iu(s,T??Yl,d,k,{center:P,zoom:te,pitch:j,rotation:M},o,l),p?.setJobObject(s);let ne=l!==`interactive`||(w?.restrictMapMovement??!1);ne&&(d.boxZoom.disable(),d.doubleClickZoom.disable(),d.dragPan.disable(),d.dragRotate.disable(),d.keyboard.disable(),d.scrollZoom.disable(),d.touchPitch.disable(),d.touchZoomRotate.disable(),d.getCanvasContainer().style.cursor=`default`),p?.setParams(w?.popupPosition??`bottomLeft`,x(m,y.TWO),ne,P);let re=s.meta?.mapstyleSet,L=re===void 0?{version:8,sources:{},layers:[]}:await fetch(`${a}/styles/${re}.json?access_token=${n}`).then(e=>e.json());lu(L),d.setStyle(null),d.setStyle(L),await d.once(`style.load`),ue(d,l),d.on(`moveend`,()=>ue(d,l)),d.on(`resize`,()=>ue(d,l)),d.on(`attributionchange`,()=>ue(d,l)),_(m,d);let z=s.map.overlays??[],ie=s.meta?.layers??[];z.length!==ie.length&&(z=[],ie=[]);let ae=await vu(z,ie,d,a,n,L.metadata?.styleOverride),oe=z.reduce((e,t,n)=>e.set(t,ae[n]),new Map);tf(d,k,E,D,O,a,n,l),_(m,d),p?.setPublication(L.metadata?.publication),p?.setpopupElements(),p?.setHighlightManager(),d.setProjection({type:v===`globe`?`globe`:`mercator`});let se=Xd(d,v);Zd(d,se),b&&Qd(d,a,n,S);let ce=$d(s.map.layerInfo,L,ae);ef(d,ce,!h);let le=new Kd(d,c,l,s,O,k,L,oe,ce,se,a,n);return await k.settledImages(),le}function Jd(e,t,n){return fetch(`${t}/jobs/${e}.json?access_token=${n}`).then(e=>e.json())}function Yd(){return new Promise(e=>{let t=()=>{window.innerWidth>0&&window.innerHeight>0&&(window.removeEventListener(`resize`,t),e())};window.addEventListener(`resize`,t),t()})}function Xd(e,t){let n=e.getStyle().metadata??{},r=n[`mc:background-color`]??`#f8f8f8`,i=n[`mc:background-color-globe`]??`#000000`;return t===`globe`?i:r}function Zd(e,t){e.getContainer().style.backgroundColor=t,e.setSky(e.getStyle().sky??Jl),e.setLight({position:[1.15,210,45]})}function Qd(e,t,n,r){e.addSource(`mc-dem`,{type:`raster-dem`,tiles:[`${t}/dataset/jaxa_terrainrgb/{z}/{x}/{y}?access_token=${n}`],attribution:`<a href="https://earth.jaxa.jp/en/data/policy" target="_blank">© AW3D30 (JAXA)</a>`,minzoom:0,maxzoom:12}),e.setTerrain({source:`mc-dem`,exaggeration:r})}function $d(e,t,n){let r=e?.reduce((e,t)=>(e[t.id]={visibility:t.visibility,...t.opacity!==void 0&&{opacity:t.opacity}},e),{})??{},i={};for(let e of t.layers)i[e.id]=r[e.id]??{visibility:(e.layout?.visibility??`visible`)===`visible`};for(let e of n)for(let t of e.layers)i[t.id]=r[t.id]??{visibility:!1};return i}function ef(e,t,n){for(let r in t){let i=e.getLayer(r);if(i!==void 0){let a=t[r];if(e.setLayoutProperty(r,`visibility`,a.visibility&&n?`visible`:`none`),a.opacity!==void 0){let t=Zl[i.type];for(let n of t.props)e.setPaintProperty(r,n,a.opacity)}}}}function tf(e,t,n,r,i,a,o,s){let{beforeNone:c=[],beforeNames:l=[],beforeBoundaries:u=[],beforeWaters:d=[]}=r;c.forEach(r=>{nf(e,t,n,r,i,`mc-before-none`,a,o,s)}),l.forEach(r=>{nf(e,t,n,r,i,`mc-before-names`,a,o,s)}),u.forEach(r=>{nf(e,t,n,r,i,`mc-before-boundaries`,a,o,s)}),d.forEach(r=>{nf(e,t,n,r,i,`mc-before-waters`,a,o,s)})}function nf(e,t,n,r,i,a,o,s,c){if(r.type===`marker`){let o=n.marker?.find(e=>e.id===r.groupId);o&&hu(e,o,a,i,t,c)}else if(r.type===`polygon`){let o=n.polygon?.find(e=>e.id===r.groupId);o&&uu(e,o,a,i,t)}else if(r.type===`circle`){let o=n.circle?.find(e=>e.id===r.groupId);o&&fu(e,o,a,i,t)}else if(r.type===`line`){let i=n.line?.find(e=>e.id===r.groupId);i&&Hu(e,i,a,t,c)}else if(r.type===`dot`){let t=n.dot?.find(e=>e.id===r.groupId);t&&Ku(e,t,a)}else if(r.type===`area`){let c=n.area?.find(e=>e.id===r.groupId);c&&Gu(e,c,a,i,t,o,s)}}export{qd as initMap};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapcreator/sdk",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "engines": {
5
5
  "node": "^24.0.0",
6
6
  "npm": "^11.0.0"